For question 2, these are the instructions you're interested in: Code: move.l (a0,d0.w),(a1)+ move.l 4(a0,d0.w),(a1) ; copy palette data to RAM Each palette entry is two bytes in size. So, each instruction moves a longword (4 bytes), which means two colours. Combined, these instructions transfer four palette entries. Changing the last instruction to a 'move.w' will make it transfer only two bytes, so the total is reduced to three palette entries. But that's not all. Unless you want to pad out each 7/8th byte of Pal_GHZCyc, you need to change the code to treat it as a list of six bytes, rather than eight. Code: lsl.w #3,d0 This instruction multiplies the index by eight. This is what needs changing. There are two ways we can go about this: we could use a 'mulu.w' multiplication instruction, but that instruction is very inefficient, so it may be optimal to use the alternative, shifts, like the current code does. Unfortunately, using shifts to multiply by six is harder than by eight, but not by a lot. It just requires a few more instructions. Code: lsl.w #1,d0 ; multiply by 2 move.w d0,d1 ; save this lsl.w #1,d0 ; multiply by 2 again, making it x4 add.w d1,d0 ; add both values, making it x6 If we want our code to be even faster, we can use 'add.w' additions instead of actual shifts, since they're faster (at least, for shifts of 1 or 2). Code: add.w d0,d0 ; multiply by 2 move.w d0,d1 ; save this add.w d0,d0 ; multiply by 2 again, making it x4 add.w d1,d0 ; add both values, making it x6 As for question 3... Scrap Brain Zone act 3 is actually Labyrinth Zone act 4, and Final Zone is Scrap Brain Zone act 3, using assets from act 2. Yes, each zone is actually 4 acts long, the last one is usually just skipped. The part of Green Hill Zone from the ending is actually another zone, but a lot of zone-specific data, such as offset tables, lack entries for it, meaning the zone is only partially-implemented. To add to the title screen problem you mentioned, the title screen, despite obviously not being a level, uses some level code to make its background work. This creates a bizarre reliance on Green Hill Zone act 1, which the title screen pretends to be. For example, if you change where Sonic spawns in act 1, the title screen will corrupt, with the emblem flying off-screen. (Seeing the post before me, just now) If we're gonna talk about disassemblies, the Hivebrain disasm doesn't correct the Z80-based DAC driver if the Sega Chant is moved, leading to a garbled mess playing instead. This was fixed in the Git disasm. EDIT: Quote for new page. Also, Ninja'd.