Super Mario World (SNES): Difference between revisions

From Data Crystal
Jump to navigation Jump to search
(→‎Level Format: fixed two obscure typos and made "Direct Map16 objects" easier to read.)
(→‎RATS Tags: Reads much better now!)
Line 50: Line 50:


==RATS Tags==
==RATS Tags==
RATS tags are some of the most important tags in an SMW ROM to a hacker.  These tags are a way of reserving sections of the SMW ROM for your own use, so that it will not be overwritten by Lunar Magic.  The format of the tag is quite simple, but seems complex from how it is explained elsewhere.
RATS tags are some of the most important tags to a SMW hacker.  These tags are a way of reserving sections of the SMW ROM for your own use, Lunar Magic's, or BLocktool's, so that it will not be overwritten by any SMW editing program that recognizes these tags.  The format of the tag is quite simple, but seems complex from how it is explained elsewhere.


First, you have the ASCII text string "STAR" to write in.  Then, you have a '''''16-bit''''' number of the amount of bytes you want to reserve.  Second, you have another 16-bit number that is the '''''reverse''''' of the first number. To get this number easily, just take the number 0xFFFF and subtract your first number from it. BE SURE TO BYTESWAP THESE NUMBERS! (Byteswapping is basically 0x1DAF = 0xAF1D) After that, you can place your data following the tag. Contrary to what was written here in the past, you do not need to add an extra byte with value 0xFF after your data. This has been confirmed by FuSoYa himself.
First, you have the ASCII text string "STAR" to write in.  You now need two numbers: a four-digit hexadecimal number(byteswapped) that represents the length of the protected code, and another four-digit hexadecimal number(byteswapped again) that is the INVERSE of the first number. (To calculate the inverse, take FFFF - [number A, not byteswapped]. The inverse of 10 bytes, or 0x0A, is FFF5.) Contrary to what was written here in the past, you do not need to add an extra byte with value 0xFF after your data. This has been confirmed by FuSoYa himself.


Be sure to avoid RATS tags within RATS tags as Lunar Magic may or may not notice this.
Be sure to avoid RATS tags within RATS tags as Lunar Magic may or may not notice this.
Line 58: Line 58:
A few tips are listed below:
A few tips are listed below:


*Again, byteswap the first two numbers before you add them to the RATS tag.
*Byteswapping example: 0x010B would be 0x0B01, and 0xABCD would be 0xCDAB.
*Need help with hexadecimal? Launch Calculator and switch to Scientific mode. Then, click either '''Dec''' for '''decimal to hex''' conversions, or '''Hex''' for '''hex to decimal''' conversions.
*Need help with hexadecimal? Launch Calculator and switch to Scientific mode. Then, click either '''Dec''' for '''decimal to hex''' conversions, or '''Hex''' for '''hex to decimal''' conversions.
*Calculator is your friend when you are doing math with hexadecimal.
*Calculator is your friend when you are doing math with hexadecimal.
*Your RATS tag should be '''''exactly''''' 8 bytes.
*Your RATS tag should be '''''exactly''''' 8 bytes.
*For example, if you want to protect 10 bytes (0x0A in hex) your RATS tag would be '''53 54 41 52 0A 00 F5 FF'''. Using Translhextion, that would show up as '''STAR..õÿ'''
*For example, if you want to protect 10 bytes (0x0A in hex) your RATS tag would be '''53 54 41 52 0A 00 F5 FF'''. Using Translhextion, that would show up as '''STAR..õÿ''' in text.


==Resources==
==Resources==

Revision as of 17:04, 26 June 2006

Super Mario World (U) [!]
Name SUPER MARIOWORLD
Company Nintendo
Header Yes
Bank LoROM
Interleaved No
SRAM 2 Kb
Type Normal + Batt
ROM 4 Megabit
Country U.S.A
Video NTSC
ROM Speed 200ns (SlowROM)
Revision 1.0
Checksum 0xA0DA
CRC32 B19ED489

Super Mario World was the first SNES game, and is quite possibly the most extensively hacked SNES game.

Utilities

Lunar Magic is the principal Super Mario World hacking utility. It is available here.

See also: List of Super Mario World utilities

Hacks

There are ostensibly many complete hacks of Super Mario World.

See also: List of Super Mario World hacks

Level Format

Super Mario World uses an object-based format to store its levels. These objects are grouped into 4 main categories:

  • Standard objects
  • Tileset specific Objects
  • Extended Objects
  • Direct MAP16 Objects

Standard objects
Standard objects are are items such as coins and pipes that use mainly the first page of 8x8 and 16x16 tiles.

Tileset Specific Objects
Tileset specific objects are objects lists chosen by level tileset, and mainly use graphics from the second 8x8 page, and both normal MAP16 pages. These objects, being tileset specific, are not available nearly as widely as other objects.

Extended Objects
These objects are objects that were so far out to left field, or just used so rarely, they were stored in their own definition.

Direct MAP16 objects
An ASM hack by FuSoYa added by Lunar Magic allows hackers to incorporate specific tiles in the MAP16 tables into a level. Normally, you would need a special object to do so, which is one reason for the disproportionate number of extended objects one tile high and one tile wide.

RATS Tags

RATS tags are some of the most important tags to a SMW hacker. These tags are a way of reserving sections of the SMW ROM for your own use, Lunar Magic's, or BLocktool's, so that it will not be overwritten by any SMW editing program that recognizes these tags. The format of the tag is quite simple, but seems complex from how it is explained elsewhere.

First, you have the ASCII text string "STAR" to write in. You now need two numbers: a four-digit hexadecimal number(byteswapped) that represents the length of the protected code, and another four-digit hexadecimal number(byteswapped again) that is the INVERSE of the first number. (To calculate the inverse, take FFFF - [number A, not byteswapped]. The inverse of 10 bytes, or 0x0A, is FFF5.) Contrary to what was written here in the past, you do not need to add an extra byte with value 0xFF after your data. This has been confirmed by FuSoYa himself.

Be sure to avoid RATS tags within RATS tags as Lunar Magic may or may not notice this.

A few tips are listed below:

  • Byteswapping example: 0x010B would be 0x0B01, and 0xABCD would be 0xCDAB.
  • Need help with hexadecimal? Launch Calculator and switch to Scientific mode. Then, click either Dec for decimal to hex conversions, or Hex for hex to decimal conversions.
  • Calculator is your friend when you are doing math with hexadecimal.
  • Your RATS tag should be exactly 8 bytes.
  • For example, if you want to protect 10 bytes (0x0A in hex) your RATS tag would be 53 54 41 52 0A 00 F5 FF. Using Translhextion, that would show up as STAR..õÿ in text.

Resources

There are many resources available to SMW hackers. They include;
Please add links to these as you can. Please also add more to this list.

  • BMF54123's HDMA System
  • d4s' HDMA system
  • DJ Bouche's SMB3 and SMB1 music patches
  • Sukasa's HDMA Minikit 1
  • MikeyK's screen-scrolling pipes
  • Glyph Pheonix's many little ASM hacks
  • BMF54123's LevelASM and LevelNames

Miscellaneous

See also: Super Mario World:Fun facts

External Links