Actions

SCHG

Nem s3

From Sonic Retro

Revision as of 15:51, 4 September 2006 by Scarred Sun (talk | contribs)

Introduction

Here are my hacking notes on the Sonic 3 rom. If you use these notes I'd appreciate it if you would mention it with your hack or your utility, so that other people can find their way here. For hex editing I recommend you use a hex utility called Hex Workshop, and for emulators I recommend you get both Gens and Genecyst. Genecyst may be old and kinda crap, but it has a whole heap of debug outputs that really help when it comes to seeing exactly what it's doing and when.

First of all it's very important that you understand the basics. All data stored on a computer is in the form of 1's and 0's. On a CD for example, a laser hits the surface, and if the laser bounces back and hits the lens it's a 1, and if it doesn't it's a zero. Each 1 or 0 is called a bit, and a bit cannot have any other characters in it other that a 1 or a 0. Now the computer deals with bits in groups of 4. There are 16 possible combinations for a group of four 1's and 0's, so to make it simpler it deals with it as one value, rather than 4 (Eg. 0110 becomes 6). Now as there are 16 possible combinations for a group of 4 bits, this value to represent their values must have 16 values itself, so rather than a simple 0-9, this value is 0-F (0123456789ABCDEF). This value is called a hexadecimal value (hex value for short). Each hex value is dealt with in groups of 2, called a byte, each byte having 128 possible combinations. Now on a final output level the byte may be looked up on an ASCII table, which will convert that value into a recognisable character (Eg. a byte value of 73 becomes a lowercase s on an English ASCII table). You will practically never touch the ASCII version of the code in hacking though.

Now one important thing to realise is that as one character of hex has 16 values and a decimal (real) value only has 10, it may be necessary to convert the numbers between them from time to time. This is done with the use of a base converter (included in hex workshop). Let's say you wanted to give Sonic 50 rings. If you enter 50 as the value, you will in fact end up with 80, because that value you are entering is actually a hex value, but if you use the base converter to convert it first, you merely enter the value of 50 into the decimal box, and it will spit out a hex value of 32, which will in fact give you 50 rings in the game. Another useful utility that you will need is a hex calculator (also included in hex workshop). A hex calculator is the same as a normal calculator, but it deals with hex values rather than decimal values.

Another thing you need to know is that each level in Sonic 2 has a value assigned to it, but this value does not correspond with each level's final position in the game. Here is a list of the level values in Sonic 3:

00 Angel island zone
01 Hydrocity zone
02 Marble garden zone
03 Carnival Night zone
04 Flying Battery zone
05 Ice cap zone
06 launch base zone
07 Empty
08 Empty
09 Empty
0A Empty
0B Empty
0C Empty
0D Empty
0E Azure Lake
0F Balloon Park
10 Chrome Gadget
11 Desert Palace
12 Endless Mine
13 Bonus Stage
14 Empty
15 Empty
16 Empty
17 Empty

One other thing you need to know is the way that the Mega Drive stores all the art. All the art that is used in the game is stored in the form of 8x8 pixel blocks. These blocks do not actually store colours at all, they actually only have one hex value per pixel. That value specifies what point on the palette line the pixel will get its colour from. The palette has 4 lines, each with 16 colours on them. Now the colours on the palette can be changed at any point during play, and some palette colours may even automatically change colour each couple of frames to make it look like the colour is flashing.

Now these 8x8 blocks are not what make up the level directly. 4 8x8 blocks are grouped together to form a 16x16 block, and it is at this point that the palette line to use for that 16x16 block is specified. The 8x8 patterns can also have their x, y, or x and y values reversed when placing them in a 16x16 block. Also it's at the 16x16 level that the collision definitions are specified. Now finally we get to a 128x128 block, and these are the things that the actual level info loads. It is made up of 64 16x16 blocks, and each block inside them can use a different palette line. You cannot place anything except a sprite or a 128x128 block directly into a level.

Now that you know all the basics, here's my breakdown:

Address Listing

For the most part, there are no breaks in this list. If one address follows on directly from another on this list, it does so in the rom, with the exception of data that comes before 50000. All the compiled code that is used in the game is stored in this section, and that's a pain in the ass to sort through, so there will be many breaks there. The column on the left lists it's file location, the column in the middle contains it's name and description, and the column on the right will contain any special notes about it, such as compression format used if applicable, and number of blocks an art tile uses. The right column will also contain a link with the text further info, if that particular block requires it. That link will jump to a detailed explanation of that thing. Anything linked like that will also be listed in the contents at the top of the page. Any patterns that are not used anywhere in the game will be preceeded by this red dot File:Reddot.gif .

See SCHG:Nem s3/Address listing.

Offset indexes

An offset index is a handy way of keeping a block of data grouped together, and also replacing a whole heap of pointers. The way it works is there is a list of two byte vaues, and depending on the block of data the game wants to load, it will take one of those values and add it to the starting address of the offset index. The most common usage is for every act of every level value, there is an offset that acts as the pointer to the block of data to use for it. Lets look at an example:

5AF8C: 00F8 0112 012C 0140 0148 0150 0158 016C

This is the beginning of the offset index for the pattern load cue's. If the game was trying to access the second pattern load cue, it would take the pointer to the offset index which is 5AF8C, and it would jump to the second offset, which in this case is 0112. It would then add that value to the location of the offset index, and that gives the location of the data.

5AF8C + 0112 = 5B09E

So in this case the data is located at 5B09E in the rom. This type of system is used for many things in the rom such as pattern load cue's, sprite mappings, etc.

Pointer list

A pointer list is simply a block of pointers. Pointers are a 4 byte number that gives the location of data. This location is listed on the lefthand side of a hex editor. The most common use of a pointer list in the game is to specify a block of data to be used in conjunction with each level or act. Simply count across to the pointer you wish to modify. For example, if you want to change the pointer to the data for HCZ act 1, and it's done on an act by act basis, you'll want to modify the third pointer in the list, which would be 8 bytes along.

Main level load block

This pointer table is what is used to load up the block mappings and main level patterns for every level in the game. Here's a breakdown of the pointer table in the S3 rom:

5AB0C-5AF8B: Main level load blocks (Bpatterns/Epatterns/B16x16/E16x16/B128x128/E128x128)

5AB0C-5AB3B: Angel Island zone (00)
5AB0C-5AB23: Act 1
5AB0C: AIZ act 1 base tiles (1A566A) [0B]
5AB10: AIZ act 1 extended tiles (1A647C) [0B]
5AB14: AIZ act 1 base 16x16 block mappings (1A374A) [0A]
5AB18: AIZ act 1 extended 16x16 block mappings (1A394A) [0A]
5AB1C: AIZ act 1 128x128 block mappings (1ABC40) [00]
5AB20: AIZ act 1 128x128 block mappings (1ABC40) [00]


5AB24-5AB3B: Act 2
5AB24: AIZ act 2 base tiles (1B15D2) [0C]
5AB28: AIZ act 2 extended tiles (1B3784) [0C]
5AB2C: AIZ act 2 base 16x16 block mappings (1B0052) [0B]
5AB30: AIZ act 2 extended 16x16 block mappings (1B08F2) [0B]
5AB34: AIZ act 2 128x128 block mappings (1B51E8) [00]
5AB38: AIZ act 2 128x128 block mappings (1B51E8) [00]
5AB3C-5AB6B: Hydrocity zone (01)
5AB3C-5AB53: Act 1
5AB3C: HCZ base tiles (1B9668) [0E]
5AB40: HCZ act 1 extended tiles (1BAE7A) [0F]
5AB44: HCZ base 16x16 block mappings (1B91F8) [0C]
5AB48: HCZ act 1 extended 16x16 block mappings (1BA5EA) [0C]
5AB4C: HCZ base 128x128 block mappings (1BA2AA) [00]
5AB50: HCZ act 1 extended 128x128 block mappings (1BD0CC) [00]
5AB54-5AB6B: Act 2
5AB54: HCZ base tiles (1B9668) [10]
5AB58: HCZ act 2 extended tiles (1BFA6C) [11]
5AB5C: HCZ base 16x16 block mappings (1B91F8) [0D]
5AB60: HCZ act 2 extended 16x16 block mappings (1BF17C) [0D]
5AB64: HCZ base 128x128 block mappings (1BA2AA) [00]
5AB68: HCZ act 2 extended 128x128 block mappings (1C18EE) [00]
5AB6C-5AB9B: Marble Garden zone (02)
5AB6C-5AB83: Act 1
5AB6C: MGZ base tiles (1C3EBE) [12]
5AB70: MGZ act 1 extended tiles (1C8A70) [12]
5AB74: MGZ base 16x16 block mappings (1C356E) [0E]
5AB78: MGZ act 1 extended 16x16 block mappings (1C8760) [0E]
5AB7C: MGZ base 128x128 block mappings (1C6460) [00]
5AB80: MGZ act 1 extended 128x128 block mappings (1C9452) [00]
5AB84-5AB9B: Act 2
5AB84: MGZ base tiles (1C3EBE) [14]
5AB88: MGZ act 2 extended tiles (1CA132) [14]
5AB8C: MGZ base 16x16 block mappings (1C356E) [0F]
5AB90: MGZ act 2 extended 16x16 block mappings (1C9CD2) [0F]
5AB94: MGZ base 128x128 block mappings (1C6460) [00]
5AB98: MGZ act 2 extended 128x128 block mappings (1CB1C4) [00]
5AB9C-5ABCB: Carnival Night zone
5AB9C-5ABB3: Act 1
5AB9C: CNZ tiles (1CDC74) [16]
5ABA0: CNZ tiles (1CDC74) [17]
5ABA4: CNZ 16x16 block mappings (1CCC34) [10]
5ABA8: CNZ 16x16 block mappings (1CCC34) [10]
5ABAC: CNZ 128x128 block mappings (1D0E96) [00]
5ABB0: CNZ 128x128 block mappings (1D0E96) [00]
5ABB4-5ABCB: Act 2
5ABB4: CNZ tiles (1CDC74) [18]
5ABB8: CNZ tiles (1CDC74) [19]
5ABBC: CNZ 16x16 block mappings (1CCC34) [11]
5ABC0: CNZ 16x16 block mappings (1CCC34) [11]
5ABC4: CNZ 128x128 block mappings (1D0E96) [00]
5ABC8: CNZ 128x128 block mappings (1D0E96) [00]
5ABCC-5ABFB: Flying battery zone (04)

MEDIAWIKI WON'T ACCEPT THIS BLOCK?

5ABE4-5ABFB: Act 2
5ABE4: ICZ base 16x16 block mappings (1D3FB6) [1C]
5ABE8: ICZ base 16x16 block mappings (1D3FB6) [1C]
5ABEC: ICZ base 16x16 block mappings (1D3FB6) [13]
5ABF0: ICZ base 16x16 block mappings (1D3FB6) [13]
5ABF4: ICZ base 16x16 block mappings (1D3FB6) [00]
5ABF8: ICZ base 16x16 block mappings (1D3FB6) [00]
5ABFC-5AC2B: Ice Cap zone (05)
5ABFC-5AC13: Act 1
5ABFC: ICZ base tiles (1D4296) [1E]
5AC00: ICZ act 1 extended tiles (1D64C8) [1E]
5AC04: ICZ base 16x16 block mappings (1D3FB6) [14]
5AC08: ICZ act 1 extended 16x16 block mappings (1D5958) [14]
5AC0C: ICZ base 128x128 block mappings (1D56A8) [00]
5AC10: ICZ act 1 extended 128x128 block mappings (1D844A) [00]
5AC14-5AC2C: Act 2
5AC14: ICZ base tiles (1D4296) [20]
5AC18: ICZ act 2 extended tiles (1DAF0A) [20]
5AC1C: ICZ base 16x16 block mappings (1D3FB6) [15]
5AC20: ICZ act 2 extended 16x16 block mappings (1DA26A) [15]
5AC24: ICZ base 128x128 block mappings (1D56A8) [00]
5AC28: ICZ act 2 extended 128x128 block mappings (1DCFBC) [00]
5AC2C-5AC5B: Launch base zone (06)
5AC2C-5AC43: Act 1
5AC2C: LBZ base tiles (1DFABC) [22]
5AC30: LBZ act 1 extended tiles (1E120E) [22]
5AC34: LBZ base 16x16 block mappings (1DEA8C) [16]
5AC38: LBZ act 1 extended 16x16 block mappings (1DEFCC) [16]
5AC3C: LBZ act 1 128x128 block mappings (1E2FA0) [00]
5AC40: LBZ act 1 128x128 block mappings (1E2FA0) [00]
5AC44-5AC5B: Act 2
5AC44: LBZ base tiles (1DFABC) [24]
5AC48: LBZ act 2 extended tiles (1E77D0) [25]
5AC4C: LBZ base 16x16 block mappings (1DEA8C) [17]
5AC50: LBZ act 2 extended 16x16 block mappings (1E5F70) [17]
5AC54: LBZ act 2 128x128 block mappings (1EAF04) [00]
5AC58: LBZ act 2 128x128 block mappings (1EAF04) [00]
5AC5C-5AC8B: Empty (07)
5AC5C-5AC73: Act 1
5AC5C: AL 16x16 block mappings (1EE0C4) [26]
5AC60: AL 16x16 block mappings (1EE0C4) [26]
5AC64: AL 16x16 block mappings (1EE0C4) [18]
5AC68: AL 16x16 block mappings (1EE0C4) [18]
5AC6C: AL 16x16 block mappings (1EE0C4) [00]
5AC70: AL 16x16 block mappings (1EE0C4) [00]
5AC74-5AC8B: Act 2
5AC74: AL 16x16 block mappings (1EE0C4) [28]
5AC78: AL 16x16 block mappings (1EE0C4) [28]
5AC7C: AL 16x16 block mappings (1EE0C4) [19]
5AC80: AL 16x16 block mappings (1EE0C4) [19]
5AC84: AL 16x16 block mappings (1EE0C4) [00]
5AC88: AL 16x16 block mappings (1EE0C4) [00]
5AC8C-5ACBB: Empty (08)
5AC8C-5ACA3: Act 1
5AC8C: AIZ act 1 base tiles (1A566A) [0B]
5AC90: AIZ act 1 extended tiles (1A647C) [0B]
5AC94: AIZ act 1 extended 16x16 block mappings (1A394A) [0A]
5AC98: AIZ act 1 extended 16x16 block mappings (1A394A) [0A]
5AC9C: AIZ act 1 128x128 block mappings (1ABC40) [00]
5ACA0: AIZ act 1 128x128 block mappings (1ABC40) [00]
5ACA4-5ACBB: Act 2
5ACA4: AIZ act 1 base tiles (1A566A) [0C]
5ACA8: AIZ act 1 extended tiles (1A647C) [0C]
5ACAC: AIZ act 1 extended 16x16 block mappings (1A394A) [0B]
5ACB0: AIZ act 1 extended 16x16 block mappings (1A394A) [0B]
5ACB4: AIZ act 1 128x128 block mappings (1ABC40) [00]
5ACB8: AIZ act 1 128x128 block mappings (1ABC40) [00]
5ACBC-5ACEB: Empty (09)
5ACBC-5ACD3: Act 1
5ACBC: AL 16x16 block mappings (1EE0C4) [2E]
5ACC0: AL 16x16 block mappings (1EE0C4) [2E]
5ACC4: AL 16x16 block mappings (1EE0C4) [2E]
5ACC8: AL 16x16 block mappings (1EE0C4) [2E]
5ACCC: AL 16x16 block mappings (1EE0C4) [2E]
5ACD0: AL 16x16 block mappings (1EE0C4) [2E]
5ACD4-5ACEB: Act 2
5ACD4: AL 16x16 block mappings (1EE0C4) [2E]
5ACD8: AL 16x16 block mappings (1EE0C4) [2E]
5ACDC: AL 16x16 block mappings (1EE0C4) [2E]
5ACE0: AL 16x16 block mappings (1EE0C4) [2E]
5ACE4: AL 16x16 block mappings (1EE0C4) [2E]
5ACE8: AL 16x16 block mappings (1EE0C4) [2E]
5ACEC-5AD04: Empty (0A)
5ACEC-5AD03: Act 1
5ACEC: AIZ act 1 base tiles (1A566A) [0B]
5ACF0: AIZ act 1 extended tiles (1A647C) [0B]
5ACF4: AIZ act 1 extended 16x16 block mappings (1A394A) [0A]
5ACF8: AIZ act 1 extended 16x16 block mappings (1A394A) [0A]
5ACFC: AIZ act 1 128x128 block mappings (1ABC40) [00]
5AD00: AIZ act 1 128x128 block mappings (1ABC40) [00]
5AD04-5AD1B: Act 2
5AD04: AIZ act 1 base tiles (1A566A) [0C]
5AD08: AIZ act 1 extended tiles (1A647C) [0C]
5AD0C: AIZ act 1 extended 16x16 block mappings (1A394A) [0B]
5AD10: AIZ act 1 extended 16x16 block mappings (1A394A) [0B]
5AD14: AIZ act 1 128x128 block mappings (1ABC40) [00]
5AD18: AIZ act 1 128x128 block mappings (1ABC40) [00]
5AD1C-5AD4C: Empty (0B)
5AD1C-5AD33: Act 1
5AD1C: AIZ act 1 base tiles (1A566A) [0B]
5AD20: AIZ act 1 extended tiles (1A647C) [0B]
5AD24: AIZ act 1 extended 16x16 block mappings (1A394A) [0A]
5AD28: AIZ act 1 extended 16x16 block mappings (1A394A) [0A]
5AD2C: AIZ act 1 128x128 block mappings (1ABC40) [00]
5AD30: AIZ act 1 128x128 block mappings (1ABC40) [00]
5AD34-5AD4B: Act 2
5AD34: AIZ act 1 base tiles (1A566A) [0C]
5AD38: AIZ act 1 extended tiles (1A647C) [0C]
5AD3C: AIZ act 1 extended 16x16 block mappings (1A394A) [0B]
5AD40: AIZ act 1 extended 16x16 block mappings (1A394A) [0B]
5AD44: AIZ act 1 128x128 block mappings (1ABC40) [00]
5AD48: AIZ act 1 128x128 block mappings (1ABC40) [00]
5AD4C-5AD7B: Empty (0C)
5AD4C-5AD63: Act 1
5AD4C: AIZ act 1 base tiles (1A566A) [0B]
5AD50: AIZ act 1 extended tiles (1A647C) [0B]
5AD54: AIZ act 1 extended 16x16 block mappings (1A394A) [0A]
5AD58: AIZ act 1 extended 16x16 block mappings (1A394A) [0A]
5AD5C: AIZ act 1 128x128 block mappings (1ABC40) [00]
5AD60: AIZ act 1 128x128 block mappings (1ABC40) [00]
5AD64-5AD7C: Act 2
5AD64: AIZ act 1 base tiles (1A566A) [0C]
5AD68: AIZ act 1 extended tiles (1A647C) [0C]
5AD6C: AIZ act 1 extended 16x16 block mappings (1A394A) [0B]
5AD70: AIZ act 1 extended 16x16 block mappings (1A394A) [0B]
5AD74: AIZ act 1 128x128 block mappings (1ABC40) [00]
5AD78: AIZ act 1 128x128 block mappings (1ABC40) [00]
5AD7C-5AD93: Empty (0D)
5AD7C-5AD93: Act 1
5AD7C: AIZ act 1 base tiles (1A566A) [0B]
5AD80: Unknown patterns (1A944E) [0B]
5AD84: AIZ act 1 base 16x16 block mappings (1A374A) [2A]
5AD88: Unknown extended 16x16 block mappings (1A458A) [2A]
5AD8C: AIZ act 1 128x128 block mappings (1ABC40) [00]
5AD90: AIZ act 1 128x128 block mappings (1ABC40) [00]
5AD94-5ADAB: Act 2
5AD94: AIZ act 1 base tiles (1A566A) [0C]
5AD98: AIZ act 1 extended tiles (1A647C) [0C]
5AD9C: AIZ act 1 extended 16x16 block mappings (1A394A) [0B]
5ADA0: AIZ act 1 extended 16x16 block mappings (1A394A) [0B]
5ADA4: AIZ act 1 128x128 block mappings (1ABC40) [00]
5ADA8: AIZ act 1 128x128 block mappings (1ABC40) [00]
5ADAC-5ADDB: Azure lake (0E)
5ADAC-5ADC4: Act 1
5ADAC: AL tiles (1EEB84) [42]
5ADB0: AL tiles (1EEB84) [42]
5ADB4: AL 16x16 block mappings (1EE0C4) [26]
5ADB8: AL 16x16 block mappings (1EE0C4) [26]
5ADBC: AL 128x128 block mappings (1F1936) [00]
5ADC0: AL 128x128 block mappings (1F1936) [00]
5ADC4-5ADDC: Act 2
5ADC4: AL tiles (1EEB84) [42]
5ADC8: AL tiles (1EEB84) [42]
5ADCC: AL 16x16 block mappings (1EE0C4) [27]
5ADD0: AL 16x16 block mappings (1EE0C4) [27]
5ADD4: AL 128x128 block mappings (1F1936) [00]
5ADD8: AL 128x128 block mappings (1F1936) [00]
5ADDC-5AE0B: Ballon Park (0F)
5ADDC-5ADF3: Act 1
5ADDC: BP tiles (1F2896) [43]
5ADE0: BP tiles (1F2896) [43]
5ADE4: BP 16x16 block mappings (1F1FC6) [28]
5ADE8: BP 16x16 block mappings (1F1FC6) [28]
5ADEC: BP 128x128 block mappings (1F4878) [00]
5ADF0: BP 128x128 block mappings (1F4878) [00]
5ADF4-5AE0B: Act 2
5ADF4: BP tiles (1F2896) [43]
5ADF8: BP tiles (1F2896) [43]
5ADFC: BP 16x16 block mappings (1F1FC6) [29]
5AE00: BP 16x16 block mappings (1F1FC6) [29]
5AE04: BP 128x128 block mappings (1F4878) [00]
5AE08: BP 128x128 block mappings (1F4878) [00]
5AE0C-5AE3B: Chrome Gadget (10)
5AE0C-5AE23: Act 1
5AE0C: CG tiles (1F5948) [44]
5AE10: CG tiles (1F5948) [44]
5AE14: GC 16x16 block mappings (1F4F68) [34]
5AE18: GC 16x16 block mappings (1F4F68) [34]
5AE1C: GC 128x128 block mappings (1F743A) [00]
5AE20: GC 128x128 block mappings (1F743A) [00]
5AE24-5AE3B: Act 2
5AE24: CG tiles (1F5948) [44]
5AE28: CG tiles (1F5948) [44]
5AE2C: GC 16x16 block mappings (1F4F68) [34]
5AE30: GC 16x16 block mappings (1F4F68) [34]
5AE34: GC 128x128 block mappings (1F743A) [00]
5AE38: GC 128x128 block mappings (1F743A) [00]
5AE3C-5AE6B: Desert Palace (11)
5AE3C-5AE53: Act 1
5AE3C: DP tiles (1F81BA) [45]
5AE40: DP tiles (1F81BA) [45]
5AE44: DP 16x16 block mappings (1F7A6A) [35]
5AE48: DP 16x16 block mappings (1F7A6A) [35]
5AE4C: DP 128x128 block mappings (1FA75C) [00]
5AE50: DP 128x128 block mappings (1FA75C) [00]
5AE54-5AE6B: Act 2
5AE54: DP tiles (1F81BA) [45]
5AE58: DP tiles (1F81BA) [45]
5AE5C: DP 16x16 block mappings (1F7A6A) [35]
5AE60: DP 16x16 block mappings (1F7A6A) [35]
5AE64: DP 128x128 block mappings (1FA75C) [00]
5AE68: DP 128x128 block mappings (1FA75C) [00]
5AE6C-5AE9B: Endless Mine (12)
5AE6C-5AE83: Act 1
5AE6C: EM tiles (1FB6CC) [46]
5AE70: EM tiles (1FB6CC) [46]
5AE74: EM 16x16 block mappings (1FAC1C) [36]
5AE78: EM 16x16 block mappings (1FAC1C) [36]
5AE7C: EM 128x128 block mappings (1FE2FE) [00]
5AE80: EM 128x128 block mappings (1FE2FE) [00]
5AE84-5AE9B: Act 2
5AE84: EM tiles (1FB6CC) [46]
5AE88: EM tiles (1FB6CC) [46]
5AE8C: EM 16x16 block mappings (1FAC1C) [36]
5AE90: EM 16x16 block mappings (1FAC1C) [36]
5AE94: EM 128x128 block mappings (1FE2FE) [00]
5AE98: EM 128x128 block mappings (1FE2FE) [00]
5AE9C-5AECB: Bonus stage (13)
5AE9C-5AEB3: Act 1
5AE9C: Bonus stage 1 base tiles (1FEE2E) [47]
5AEA0: Bonus stage 1 base tiles (1FEE2E) [47]
5AEA4: Bonus stage 16x16 block mapings (1FEA0E) [33]
5AEA8: Bonus stage 16x16 block mapings (1FEA0E) [33]
5AEAC: Bonus stage 128x128 block mappings (1FFB80) [00]
5AEB0: Bonus stage 128x128 block mappings (1FFB80) [00]
5AEB4-5AECB: Act 2
5AEB4: Bonus stage 1 base tiles (1FEE2E) [47]
5AEB8: Bonus stage 1 base tiles (1FEE2E) [47]
5AEBC: Bonus stage 16x16 block mapings (1FEA0E) [33]
5AEC0: Bonus stage 16x16 block mapings (1FEA0E) [33]
5AEC4: Bonus stage 128x128 block mappings (1FFB80) [00]
5AEC8: Bonus stage 128x128 block mappings (1FFB80) [00]
5AECC-5AEFB: Empty (14)
5AECC-5AEE3: Act 1
5AECC: Nothing (1FFF20) [47]
5AED0: Nothing (1FFF20) [47]
5AED4: Nothing (1FFF20) [37]
5AED8: Nothing (1FFF20) [37]
5AEDC: Nothing (1FFF20) [00]
5AEE0: Nothing (1FFF20) [00]
5AEE4-5AEFB: Act 2
5AEE4: Nothing (1FFF20) [47]
5AEE8: Nothing (1FFF20) [47]
5AEEC: Nothing (1FFF20) [37]
5AEF0: Nothing (1FFF20) [37]
5AEF4: Nothing (1FFF20) [00]
5AEF8: Nothing (1FFF20) [00]
5AEFC-5AF2B: Empty (15)
5AEFC-5AF13: Act 1
5AEFC: Nothing (1FFF20) [47]
5AF00: Nothing (1FFF20) [47]
5AF04: Nothing (1FFF20) [38]
5AF08: Nothing (1FFF20) [38]
5AF0C: Nothing (1FFF20) [00]
5AF10: Nothing (1FFF20) [00]
5AF14-5AF2C: Act 2
5AF14: Nothing (1FFF20) [47]
5AF18: Nothing (1FFF20) [47]
5AF1C: Nothing (1FFF20) [38]
5AF20: Nothing (1FFF20) [38]
5AF24: Nothing (1FFF20) [00]
5AF28: Nothing (1FFF20) [00]
5AF2C-5AF5B: Empty (16)
5AF2C-5AF43: Act 1
5AF2C: AIZ act 1 base tiles (1A566A) [0B]
5AF30: AIZ act 1 extended tiles (1A647C) [0B]
5AF34: AIZ act 1 extended 16x16 block mappings (1A394A) [0A]
5AF38: AIZ act 1 extended 16x16 block mappings (1A394A) [0A]
5AF3C: AIZ act 1 128x128 block mappings (1ABC40) [00]
5AF40: AIZ act 1 128x128 block mappings (1ABC40) [00]
5AF44-5AF5B: Act 2
5AF44: AIZ act 1 base tiles (1A566A) [0C]
5AF48: AIZ act 1 extended tiles (1A647C) [0C]
5AF4C: AIZ act 1 extended 16x16 block mappings (1A394A) [0B]
5AF50: AIZ act 1 extended 16x16 block mappings (1A394A) [0B]
5AF54: AIZ act 1 128x128 block mappings (1ABC40) [00]
5AF58: AIZ act 1 128x128 block mappings (1ABC40) [00]
5AF5C-5AF73: Empty (17)
5AF5C-5AF73: Act 1
5AF5C: AIZ act 1 base tiles (1A566A) [0B]
5AF60: AIZ act 1 extended tiles (1A647C) [0B]
5AF64: AIZ act 1 extended 16x16 block mappings (1A394A) [0A]
5AF68: AIZ act 1 extended 16x16 block mappings (1A394A) [0A]
5AF6C: AIZ act 1 128x128 block mappings (1ABC40) [00]
5AF70: AIZ act 1 128x128 block mappings (1ABC40) [00]
5AF74-5AF8B: Act 2
5AF74: AIZ act 1 base tiles (1A566A) [0C]
5AF78: AIZ act 1 extended tiles (1A647C) [0C]
5AF7C: AIZ act 1 extended 16x16 block mappings (1A394A) [0B]
5AF80: AIZ act 1 extended 16x16 block mappings (1A394A) [0B]
5AF84: AIZ act 1 128x128 block mappings (1ABC40) [00]
5AF88: AIZ act 1 128x128 block mappings (1ABC40) [00]