Actions

SCHG How-to

Use Dynamic Tilesets in Sonic 1

From Sonic Retro

Revision as of 21:50, 8 January 2009 by Xkeeper (talk | contribs) (Text replace - 'pallet' to 'palette')

(Original guide by HPZMan)

You will need of Sonic 1 disassembly split+text by Hivebrain (ASM68K). A method not much hard to make dynamic tiles in Sonic 1 is creating lines to check the actual Act, these lines will "alternate" 16x16 mappings, 256x256 chunks and 8x8 level graphics for Act 1, 2 and 3. The 8x8 tiles are loaded by PLC (Pattern Load Cue), you will need create dynamic PLC too.


Open up your "Sonic 1.asm" file, and search for "Level:". You will see:

<asm>; ---------------------------------------------------------------------------

Level
---------------------------------------------------------------------------

Level: ; XREF: GameModeArray bset #7,($FFFFF600).w; add $80 to screen mode (for pre level sequence) tst.w ($FFFFFFF0).w bmi.s loc_37B6 move.b #$E0,d0 bsr.w PlaySound_Special; fade out music

loc_37B6: bsr.w ClearPLC bsr.w Pal_FadeFrom tst.w ($FFFFFFF0).w bmi.s Level_ClrRam move #$2700,sr move.l #$70000002,($C00004).l lea (Nem_TitleCard).l,a0; load title card patterns bsr.w NemDec move #$2300,sr moveq #0,d0 move.b ($FFFFFE10).w,d0 lsl.w #4,d0 lea (MainLoadBlocks).l,a2 lea (a2,d0.w),a2 moveq #0,d0 move.b (a2),d0 beq.s loc_37FC bsr.w LoadPLC; load level patterns</asm>

Change it to:

<asm>; ---------------------------------------------------------------------------

Level
---------------------------------------------------------------------------

Level: ; XREF: GameModeArray bset #7,($FFFFF600).w; add $80 to screen mode (for pre level sequence) tst.w ($FFFFFFF0).w bmi.s loc_37B6 move.b #$E0,d0 bsr.w PlaySound_Special; fade out music

loc_37B6: bsr.w ClearPLC bsr.w Pal_FadeFrom tst.w ($FFFFFFF0).w bmi.s Level_ClrRam move #$2700,sr move.l #$70000002,($C00004).l lea (Nem_TitleCard).l,a0; load title card patterns bsr.w NemDec move #$2300,sr moveq #0,d0 move.b ($FFFFFE10).w,d0 lsl.w #4,d0 cmpi.b #2,($FFFFFE11).w; is level Act 3? bne.s CheckAct2  ; if not, branch lea (MainLoadBlocks3).l,a2 jmp Level_3 CheckAct2: cmpi.b #1,($FFFFFE11).w; is level Act 2? bne.s Level_2  ; if not, branch lea (MainLoadBlocks2).l,a2 jmp Level_3 Level_2: lea (MainLoadBlocks).l,a2 Level_3: lea (a2,d0.w),a2 moveq #0,d0 move.b (a2),d0 beq.s loc_37FC bsr.w LoadPLC; load level patterns</asm>

Make a search for "Cred_ClrPallet:", you will see:

<asm>Cred_ClrPallet: move.l d0,(a1)+ dbf d1,Cred_ClrPallet; fill palette with black ($0000)

moveq #3,d0 bsr.w PalLoad1; load Sonic's palette move.b #$8A,($FFFFD080).w; load credits object jsr ObjectsLoad jsr BuildSprites bsr.w EndingDemoLoad moveq #0,d0 move.b ($FFFFFE10).w,d0 lsl.w #4,d0 lea (MainLoadBlocks).l,a2; load block mappings etc lea (a2,d0.w),a2 moveq #0,d0 move.b (a2),d0 beq.s loc_5862 bsr.w LoadPLC; load level patterns</asm>

Change it to:

<asm>Cred_ClrPallet: move.l d0,(a1)+ dbf d1,Cred_ClrPallet; fill palette with black ($0000)

moveq #3,d0 bsr.w PalLoad1; load Sonic's palette move.b #$8A,($FFFFD080).w; load credits object jsr ObjectsLoad jsr BuildSprites bsr.w EndingDemoLoad moveq #0,d0 move.b ($FFFFFE10).w,d0 lsl.w #4,d0 cmpi.b #2,($FFFFFE11).w; is level Act 3? bne.s Check_Act2  ; if not, branch lea (MainLoadBlocks3).l,a2; load block mappings etc jmp Cred_ClrPallet_3 Check_Act2: cmpi.b #1,($FFFFFE11).w; is level Act 2? bne.s Cred_ClrPallet_2  ; if not, branch lea (MainLoadBlocks2).l,a2; load block mappings etc jmp Cred_ClrPallet_3 Cred_ClrPallet_2: lea (MainLoadBlocks).l,a2; load block mappings etc Cred_ClrPallet_3: lea (a2,d0.w),a2 moveq #0,d0 move.b (a2),d0 beq.s loc_5862 bsr.w LoadPLC; load level patterns</asm>

Search for "MainLoadBlockLoad:", you will see:

<asm>MainLoadBlockLoad:; XREF: Level; EndingSequence moveq #0,d0 move.b ($FFFFFE10).w,d0 lsl.w #4,d0 lea (MainLoadBlocks).l,a2 lea (a2,d0.w),a2 move.l a2,-(sp) addq.l #4,a2 movea.l (a2)+,a0 lea ($FFFFB000).w,a1; RAM address for 16x16 mappings move.w #0,d0 bsr.w EniDec movea.l (a2)+,a0 lea ($FF0000).l,a1; RAM address for 256x256 mappings bsr.w KosDec bsr.w LevelLayoutLoad move.w (a2)+,d0 move.w (a2),d0 andi.w #$FF,d0 cmpi.w #$103,($FFFFFE10).w; is level SBZ3 (LZ4) ? bne.s MLB_ChkSBZPal; if not, branch moveq #$C,d0; use SB3 palette</asm>

Change to:

<asm>MainLoadBlockLoad:; XREF: Level; EndingSequence moveq #0,d0 move.b ($FFFFFE10).w,d0 lsl.w #4,d0 cmpi.b #2,($FFFFFE11).w; is level Act 3? bne.s Check_Act_2  ; if not, branch lea (MainLoadBlocks3).l,a2 jmp MainLoadBlockLoad3 Check_Act_2: cmpi.b #1,($FFFFFE11).w; is level Act 2? bne.s MainLoadBlockLoad2  ; if not, branch lea (MainLoadBlocks2).l,a2 jmp MainLoadBlockLoad3 MainLoadBlockLoad2: lea (MainLoadBlocks).l,a2 MainLoadBlockLoad3: lea (a2,d0.w),a2 move.l a2,-(sp) addq.l #4,a2 movea.l (a2)+,a0 lea ($FFFFB000).w,a1; RAM address for 16x16 mappings move.w #0,d0 bsr.w EniDec movea.l (a2)+,a0 lea ($FF0000).l,a1; RAM address for 256x256 mappings bsr.w KosDec bsr.w LevelLayoutLoad move.w (a2)+,d0 move.w (a2),d0 andi.w #$FF,d0 cmpi.w #$103,($FFFFFE10).w; is level SBZ3 (LZ4) ? bne.s MLB_ChkSBZPal; if not, branch moveq #$C,d0; use SB3 palette</asm>

Search for "MainLoadBlocks:", you will see:

<asm>; ---------------------------------------------------------------------------

Main level load blocks
---------------------------------------------------------------------------

MainLoadBlocks: include "_inc\Main level load blocks.asm"</asm>

Change to:

<asm>; ---------------------------------------------------------------------------

Main level load blocks
---------------------------------------------------------------------------

MainLoadBlocks: include "_inc\Main level load blocks.asm" MainLoadBlocks2: include "_inc\Main level load blocks2.asm" MainLoadBlocks3: include "_inc\Main level load blocks3.asm"</asm>


Open the folder called _inc, create 2 copies from the file 'Main level load blocks.asm', renaming the copies to 'Main level load blocks2.asm' and 'Main level load blocks3.asm'. Open Main level load blocks2.asm and Main level load blocks3.asm, you can see:

<asm>; ---------------------------------------------------------------------------

Main level load blocks
===FORMAT===
level patterns + (1st PLC num * 10^6)
16x16 mappings + (2nd PLC num * 10^6)
256x256 mappings
blank, music (unused), pal index (unused), pal index
---------------------------------------------------------------------------

dc.l Nem_GHZ_2nd+$4000000 dc.l Blk16_GHZ+$5000000 dc.l Blk256_GHZ dc.b 0, $81, 4, 4 dc.l Nem_LZ+$6000000 dc.l Blk16_LZ+$7000000 dc.l Blk256_LZ dc.b 0, $82, 5, 5 dc.l Nem_MZ+$8000000 dc.l Blk16_MZ+$9000000 dc.l Blk256_MZ dc.b 0, $83, 6, 6 dc.l Nem_SLZ+$A000000 dc.l Blk16_SLZ+$B000000 dc.l Blk256_SLZ dc.b 0, $84, 7, 7 dc.l Nem_SYZ+$C000000 dc.l Blk16_SYZ+$D000000 dc.l Blk256_SYZ dc.b 0, $85, 8, 8 dc.l Nem_SBZ+$E000000 dc.l Blk16_SBZ+$F000000 dc.l Blk256_SBZ dc.b 0, $86, 9, 9 dc.l Nem_GHZ_2nd; main load block for ending dc.l Blk16_GHZ dc.l Blk256_GHZ dc.b 0, $86, $13, $13 even</asm>

In the file Main level load blocks2.asm, change it to:

<asm>; ---------------------------------------------------------------------------

Main level load blocks
===FORMAT===
level patterns + (1st PLC num * 10^6)
16x16 mappings + (2nd PLC num * 10^6)
256x256 mappings
blank, music (unused), pal index (unused), pal index
---------------------------------------------------------------------------

dc.l Nem_GHZ2_2nd+$4000000 dc.l Blk16_GHZ2+$5000000 dc.l Blk256_GHZ2 dc.b 0, $81, 4, 4 dc.l Nem_LZ2+$6000000 dc.l Blk16_LZ2+$7000000 dc.l Blk256_LZ2 dc.b 0, $82, 5, 5 dc.l Nem_MZ2+$8000000 dc.l Blk16_MZ2+$9000000 dc.l Blk256_MZ2 dc.b 0, $83, 6, 6 dc.l Nem_SLZ2+$A000000 dc.l Blk16_SLZ2+$B000000 dc.l Blk256_SLZ2 dc.b 0, $84, 7, 7 dc.l Nem_SYZ2+$C000000 dc.l Blk16_SYZ2+$D000000 dc.l Blk256_SYZ2 dc.b 0, $85, 8, 8 dc.l Nem_SBZ2+$E000000 dc.l Blk16_SBZ2+$F000000 dc.l Blk256_SBZ2 dc.b 0, $86, 9, 9 dc.l Nem_GHZ2_2nd; main load block for ending dc.l Blk16_GHZ2 dc.l Blk256_GHZ2 dc.b 0, $86, $13, $13 even</asm>

And in file Main level load blocks3.asm, change to:

<asm>; ---------------------------------------------------------------------------

Main level load blocks
===FORMAT===
level patterns + (1st PLC num * 10^6)
16x16 mappings + (2nd PLC num * 10^6)
256x256 mappings
blank, music (unused), pal index (unused), pal index
---------------------------------------------------------------------------

dc.l Nem_GHZ3_2nd+$4000000 dc.l Blk16_GHZ3+$5000000 dc.l Blk256_GHZ3 dc.b 0, $81, 4, 4 dc.l Nem_LZ3+$6000000 dc.l Blk16_LZ3+$7000000 dc.l Blk256_LZ3 dc.b 0, $82, 5, 5 dc.l Nem_MZ3+$8000000 dc.l Blk16_MZ3+$9000000 dc.l Blk256_MZ3 dc.b 0, $83, 6, 6 dc.l Nem_SLZ3+$A000000 dc.l Blk16_SLZ3+$B000000 dc.l Blk256_SLZ3 dc.b 0, $84, 7, 7 dc.l Nem_SYZ3+$C000000 dc.l Blk16_SYZ3+$D000000 dc.l Blk256_SYZ3 dc.b 0, $85, 8, 8 dc.l Nem_SBZ3+$E000000 dc.l Blk16_SBZ3+$F000000 dc.l Blk256_SBZ3 dc.b 0, $86, 9, 9 dc.l Nem_GHZ3_2nd; main load block for ending dc.l Blk16_GHZ3 dc.l Blk256_GHZ3 dc.b 0, $86, $13, $13 even</asm>

Search for "Blk16_GHZ:", you will see:

<asm>; ---------------------------------------------------------------------------

Compressed graphics - primary patterns and block mappings
---------------------------------------------------------------------------

Blk16_GHZ: incbin map16\ghz.bin even Nem_GHZ_1st: incbin artnem\8x8ghz1.bin; GHZ primary patterns even Nem_GHZ_2nd: incbin artnem\8x8ghz2.bin; GHZ secondary patterns even Blk256_GHZ: incbin map256\ghz.bin even Blk16_LZ: incbin map16\lz.bin even Nem_LZ: incbin artnem\8x8lz.bin; LZ primary patterns even Blk256_LZ: incbin map256\lz.bin even Blk16_MZ: incbin map16\mz.bin even Nem_MZ: incbin artnem\8x8mz.bin; MZ primary patterns even Blk256_MZ: incbin map256\mz.bin even Blk16_SLZ: incbin map16\slz.bin even Nem_SLZ: incbin artnem\8x8slz.bin; SLZ primary patterns even Blk256_SLZ: incbin map256\slz.bin even Blk16_SYZ: incbin map16\syz.bin even Nem_SYZ: incbin artnem\8x8syz.bin; SYZ primary patterns even Blk256_SYZ: incbin map256\syz.bin even Blk16_SBZ: incbin map16\sbz.bin even Nem_SBZ: incbin artnem\8x8sbz.bin; SBZ primary patterns even Blk256_SBZ: incbin map256\sbz.bin even</asm>

Change to:

<asm>; ---------------------------------------------------------------------------

Compressed graphics - primary patterns and block mappings
---------------------------------------------------------------------------

Blk16_GHZ: incbin map16\ghz.bin even Nem_GHZ_1st: incbin artnem\8x8ghz1.bin; GHZ primary patterns even Nem_GHZ_2nd: incbin artnem\8x8ghz2.bin; GHZ secondary patterns even Blk256_GHZ: incbin map256\ghz.bin even Blk16_LZ: incbin map16\lz.bin even Nem_LZ: incbin artnem\8x8lz.bin; LZ primary patterns even Blk256_LZ: incbin map256\lz.bin even Blk16_MZ: incbin map16\mz.bin even Nem_MZ: incbin artnem\8x8mz.bin; MZ primary patterns even Blk256_MZ: incbin map256\mz.bin even Blk16_SLZ: incbin map16\slz.bin even Nem_SLZ: incbin artnem\8x8slz.bin; SLZ primary patterns even Blk256_SLZ: incbin map256\slz.bin even Blk16_SYZ: incbin map16\syz.bin even Nem_SYZ: incbin artnem\8x8syz.bin; SYZ primary patterns even Blk256_SYZ: incbin map256\syz.bin even Blk16_SBZ: incbin map16\sbz.bin even Nem_SBZ: incbin artnem\8x8sbz.bin; SBZ primary patterns even Blk256_SBZ: incbin map256\sbz.bin even

---------------------------------------------------------------------------
Act2
---------------------------------------------------------------------------

Blk16_GHZ2: incbin map16\ghz2.bin even Nem_GHZ2_1st: incbin artnem\8x8ghz12.bin; GHZ primary patterns even Nem_GHZ2_2nd: incbin artnem\8x8ghz22.bin; GHZ secondary patterns even Blk256_GHZ2: incbin map256\ghz2.bin even Blk16_LZ2: incbin map16\lz2.bin even Nem_LZ2: incbin artnem\8x8lz2.bin; LZ primary patterns even Blk256_LZ2: incbin map256\lz2.bin even Blk16_MZ2: incbin map16\mz2.bin even Nem_MZ2: incbin artnem\8x8mz2.bin; MZ primary patterns even Blk256_MZ2: incbin map256\mz2.bin even Blk16_SLZ2: incbin map16\slz2.bin even Nem_SLZ2: incbin artnem\8x8slz2.bin; SLZ primary patterns even Blk256_SLZ2: incbin map256\slz2.bin even Blk16_SYZ2: incbin map16\syz2.bin even Nem_SYZ2: incbin artnem\8x8syz2.bin; SYZ primary patterns even Blk256_SYZ2: incbin map256\syz2.bin even Blk16_SBZ2: incbin map16\sbz2.bin even Nem_SBZ2: incbin artnem\8x8sbz2.bin; SBZ primary patterns even Blk256_SBZ2: incbin map256\sbz2.bin even

---------------------------------------------------------------------------
Act3
---------------------------------------------------------------------------

Blk16_GHZ3: incbin map16\ghz3.bin even Nem_GHZ3_1st: incbin artnem\8x8ghz13.bin; GHZ primary patterns even Nem_GHZ3_2nd: incbin artnem\8x8ghz23.bin; GHZ secondary patterns even Blk256_GHZ3: incbin map256\ghz3.bin even Blk16_LZ3: incbin map16\lz3.bin even Nem_LZ3: incbin artnem\8x8lz3.bin; LZ primary patterns even Blk256_LZ3: incbin map256\lz3.bin even Blk16_MZ3: incbin map16\mz3.bin even Nem_MZ3: incbin artnem\8x8mz3.bin; MZ primary patterns even Blk256_MZ3: incbin map256\mz3.bin even Blk16_SLZ3: incbin map16\slz3.bin even Nem_SLZ3: incbin artnem\8x8slz3.bin; SLZ primary patterns even Blk256_SLZ3: incbin map256\slz3.bin even Blk16_SYZ3: incbin map16\syz3.bin even Nem_SYZ3: incbin artnem\8x8syz3.bin; SYZ primary patterns even Blk256_SYZ3: incbin map256\syz3.bin even Blk16_SBZ3: incbin map16\sbz3.bin even Nem_SBZ3: incbin artnem\8x8sbz3.bin; SBZ primary patterns even Blk256_SBZ3: incbin map256\sbz3.bin even</asm>

Create copies of this files, renaming to "2" and "3". Example: Creating 2 copies of the file 8x8ghz.bin and renaming the first copy to 8x8ghz11.bin, and the second one to 8x8ghz12.bin If you have this original files unchanged and don't want to rename, you can download it here: [1] Extract it into your disassembly main folder.

Search for "LoadPLC:", you will see:

<asm>LoadPLC: movem.l a1-a2,-(sp) lea (ArtLoadCues).l,a1 add.w d0,d0 move.w (a1,d0.w),d0 lea (a1,d0.w),a1 lea ($FFFFF680).w,a2</asm>

Change to:

<asm>LoadPLC: movem.l a1-a2,-(sp) cmpi.b #2,($FFFFFE11).w; is level Act 3? bne.s CheckAct_2  ; if not, branch lea (ArtLoadCues3).l,a1 jmp LoadPLC_3 CheckAct_2: cmpi.b #1,($FFFFFE11).w; is level Act 2? bne.s LoadPLC_2  ; if not, branch lea (ArtLoadCues2).l,a1 jmp LoadPLC_3 LoadPLC_2: lea (ArtLoadCues).l,a1 LoadPLC_3: add.w d0,d0 move.w (a1,d0.w),d0 lea (a1,d0.w),a1 lea ($FFFFF680).w,a2</asm>

Search for "LoadPLC2:", you will see:

<asm>LoadPLC2: movem.l a1-a2,-(sp) lea (ArtLoadCues).l,a1 add.w d0,d0 move.w (a1,d0.w),d0 lea (a1,d0.w),a1 bsr.s ClearPLC lea ($FFFFF680).w,a2 move.w (a1)+,d0 bmi.s loc_15D8</asm>

Change to:

<asm>LoadPLC2: movem.l a1-a2,-(sp) cmpi.b #2,($FFFFFE11).w; is level Act 3? bne.s Check_2_Act2  ; if not, branch lea (ArtLoadCues3).l,a1 jmp LoadPLC2_3 Check_2_Act2: cmpi.b #1,($FFFFFE11).w; is level Act 2? bne.s LoadPLC2_2  ; if not, branch lea (ArtLoadCues2).l,a1 jmp LoadPLC2_3 LoadPLC2_2: lea (ArtLoadCues).l,a1 LoadPLC2_3: add.w d0,d0 move.w (a1,d0.w),d0 lea (a1,d0.w),a1 bsr.s ClearPLC lea ($FFFFF680).w,a2 move.w (a1)+,d0 bmi.s loc_15D8</asm>

Search for ArtLoadCues:, you will see:

<asm>; ---------------------------------------------------------------------------

Pattern load cues
---------------------------------------------------------------------------

ArtLoadCues: include "_inc\Pattern load cues.asm"</asm>

Change it to:

<asm>; ---------------------------------------------------------------------------

Pattern load cues
---------------------------------------------------------------------------

ArtLoadCues: include "_inc\Pattern load cues.asm" ArtLoadCues2: include "_inc\Pattern load cues2.asm" ArtLoadCues3: include "_inc\Pattern load cues3.asm"</asm>

Done this proccedure, if you not changed file Pattern load cues.asm, create a new file named to Pattern load cues2.asm, and paste this data into it:

<asm>; ---------------------------------------------------------------------------

Pattern load cues - index
---------------------------------------------------------------------------

dc.w PLC_2Main-ArtLoadCues2, PLC_2Main2-ArtLoadCues2 dc.w PLC_2Explode-ArtLoadCues2, PLC_2GameOver-ArtLoadCues2 dc.w PLC_2GHZ-ArtLoadCues2, PLC_2GHZ2-ArtLoadCues2 dc.w PLC_2LZ-ArtLoadCues2, PLC_2LZ2-ArtLoadCues2 dc.w PLC_2MZ-ArtLoadCues2, PLC_2MZ2-ArtLoadCues2 dc.w PLC_2SLZ-ArtLoadCues2, PLC_2SLZ2-ArtLoadCues2 dc.w PLC_2SYZ-ArtLoadCues2, PLC_2SYZ2-ArtLoadCues2 dc.w PLC_2SBZ-ArtLoadCues2, PLC_2SBZ2-ArtLoadCues2 dc.w PLC_2TitleCard-ArtLoadCues2, PLC_2Boss-ArtLoadCues2 dc.w PLC_2Signpost-ArtLoadCues2, PLC_2Warp-ArtLoadCues2 dc.w PLC_2SpeStage-ArtLoadCues2, PLC_2GHZAnimals-ArtLoadCues2 dc.w PLC_2LZAnimals-ArtLoadCues2, PLC_2MZAnimals-ArtLoadCues2 dc.w PLC_2SLZAnimals-ArtLoadCues2, PLC_2SYZAnimals-ArtLoadCues2 dc.w PLC_2SBZAnimals-ArtLoadCues2, PLC_2SpeStResult-ArtLoadCues2 dc.w PLC_2Ending-ArtLoadCues2, PLC_2TryAgain-ArtLoadCues2 dc.w PLC_2EggmanSBZ2-ArtLoadCues2, PLC_2FZBoss-ArtLoadCues2

---------------------------------------------------------------------------
Pattern load cues - standard block 1
---------------------------------------------------------------------------

PLC_2Main: dc.w 4 dc.l Nem_Lamp; lamppost dc.w $F400 dc.l Nem_Hud; HUD dc.w $D940 dc.l Nem_Lives; lives counter dc.w $FA80 dc.l Nem_Ring; rings dc.w $F640 dc.l Nem_Points; points from enemy dc.w $F2E0

---------------------------------------------------------------------------
Pattern load cues - standard block 2
---------------------------------------------------------------------------

PLC_2Main2: dc.w 2 dc.l Nem_Monitors; monitors dc.w $D000 dc.l Nem_Shield; shield dc.w $A820 dc.l Nem_Stars; invincibility stars dc.w $AB80

---------------------------------------------------------------------------
Pattern load cues - explosion
---------------------------------------------------------------------------

PLC_2Explode: dc.w 0 dc.l Nem_Explode; explosion dc.w $B400

---------------------------------------------------------------------------
Pattern load cues - game/time over
---------------------------------------------------------------------------

PLC_2GameOver: dc.w 0 dc.l Nem_GameOver; game/time over dc.w $ABC0

---------------------------------------------------------------------------
Pattern load cues - Green Hill
---------------------------------------------------------------------------

PLC_2GHZ: dc.w $B dc.l Nem_GHZ2_1st; GHZ main patterns dc.w 0 dc.l Nem_GHZ2_2nd; GHZ secondary patterns dc.w $39A0 dc.l Nem_Stalk; flower stalk dc.w $6B00 dc.l Nem_PplRock; purple rock dc.w $7A00 dc.l Nem_Crabmeat; crabmeat enemy dc.w $8000 dc.l Nem_Buzz; buzz bomber enemy dc.w $8880 dc.l Nem_Chopper; chopper enemy dc.w $8F60 dc.l Nem_Newtron; newtron enemy dc.w $9360 dc.l Nem_Motobug; motobug enemy dc.w $9E00 dc.l Nem_Spikes; spikes dc.w $A360 dc.l Nem_HSpring; horizontal spring dc.w $A460 dc.l Nem_VSpring; vertical spring dc.w $A660 PLC_2GHZ2: dc.w 5 dc.l Nem_Swing; swinging platform dc.w $7000 dc.l Nem_Bridge; bridge dc.w $71C0 dc.l Nem_SpikePole; spiked pole dc.w $7300 dc.l Nem_Ball; giant ball dc.w $7540 dc.l Nem_GhzWall1; breakable wall dc.w $A1E0 dc.l Nem_GhzWall2; normal wall dc.w $6980

---------------------------------------------------------------------------
Pattern load cues - Labyrinth
---------------------------------------------------------------------------

PLC_2LZ: dc.w $B dc.l Nem_LZ2; LZ main patterns dc.w 0 dc.l Nem_LzBlock1; block dc.w $3C00 dc.l Nem_LzBlock2; blocks dc.w $3E00 dc.l Nem_Splash; waterfalls and splash dc.w $4B20 dc.l Nem_Water; water surface dc.w $6000 dc.l Nem_LzSpikeBall; spiked ball dc.w $6200 dc.l Nem_FlapDoor; flapping door dc.w $6500 dc.l Nem_Bubbles; bubbles and numbers dc.w $6900 dc.l Nem_LzBlock3; block dc.w $7780 dc.l Nem_LzDoor1; vertical door dc.w $7880 dc.l Nem_Harpoon; harpoon dc.w $7980 dc.l Nem_Burrobot; burrobot enemy dc.w $94C0 PLC_2LZ2: dc.w $C dc.l Nem_LzPole; pole that breaks dc.w $7BC0 dc.l Nem_LzDoor2; large horizontal door dc.w $7CC0 dc.l Nem_LzWheel; wheel dc.w $7EC0 dc.l Nem_Gargoyle; gargoyle head dc.w $5D20 dc.l Nem_LzSonic; Sonic holding his breath dc.w $8800 dc.l Nem_LzPlatfm; rising platform dc.w $89E0 dc.l Nem_Orbinaut; orbinaut enemy dc.w $8CE0 dc.l Nem_Jaws; jaws enemy dc.w $90C0 dc.l Nem_LzSwitch; switch dc.w $A1E0 dc.l Nem_Cork; cork block dc.w $A000 dc.l Nem_Spikes; spikes dc.w $A360 dc.l Nem_HSpring; horizontal spring dc.w $A460 dc.l Nem_VSpring; vertical spring dc.w $A660

---------------------------------------------------------------------------
Pattern load cues - Marble
---------------------------------------------------------------------------

PLC_2MZ: dc.w 9 dc.l Nem_MZ2; MZ main patterns dc.w 0 dc.l Nem_MzMetal; metal blocks dc.w $6000 dc.l Nem_MzFire; fireballs dc.w $68A0 dc.l Nem_Swing; swinging platform dc.w $7000 dc.l Nem_MzGlass; green glassy block dc.w $71C0 dc.l Nem_Lava; lava dc.w $7500 dc.l Nem_Buzz; buzz bomber enemy dc.w $8880 dc.l Nem_Yadrin; yadrin enemy dc.w $8F60 dc.l Nem_Basaran; basaran enemy dc.w $9700 dc.l Nem_Cater; caterkiller enemy dc.w $9FE0 PLC_2MZ2: dc.w 4 dc.l Nem_MzSwitch; switch dc.w $A260 dc.l Nem_Spikes; spikes dc.w $A360 dc.l Nem_HSpring; horizontal spring dc.w $A460 dc.l Nem_VSpring; vertical spring dc.w $A660 dc.l Nem_MzBlock; green stone block dc.w $5700

---------------------------------------------------------------------------
Pattern load cues - Star Light
---------------------------------------------------------------------------

PLC_2SLZ: dc.w 8 dc.l Nem_SLZ2; SLZ main patterns dc.w 0 dc.l Nem_Bomb; bomb enemy dc.w $8000 dc.l Nem_Orbinaut; orbinaut enemy dc.w $8520 dc.l Nem_MzFire; fireballs dc.w $9000 dc.l Nem_SlzBlock; block dc.w $9C00 dc.l Nem_SlzWall; breakable wall dc.w $A260 dc.l Nem_Spikes; spikes dc.w $A360 dc.l Nem_HSpring; horizontal spring dc.w $A460 dc.l Nem_VSpring; vertical spring dc.w $A660 PLC_2SLZ2: dc.w 5 dc.l Nem_Seesaw; seesaw dc.w $6E80 dc.l Nem_Fan; fan dc.w $7400 dc.l Nem_Pylon; foreground pylon dc.w $7980 dc.l Nem_SlzSwing; swinging platform dc.w $7B80 dc.l Nem_SlzCannon; fireball launcher dc.w $9B00 dc.l Nem_SlzSpike; spikeball dc.w $9E00

---------------------------------------------------------------------------
Pattern load cues - Spring Yard
---------------------------------------------------------------------------

PLC_2SYZ: dc.w 4 dc.l Nem_SYZ2; SYZ main patterns dc.w 0 dc.l Nem_Crabmeat; crabmeat enemy dc.w $8000 dc.l Nem_Buzz; buzz bomber enemy dc.w $8880 dc.l Nem_Yadrin; yadrin enemy dc.w $8F60 dc.l Nem_Roller; roller enemy dc.w $9700 PLC_2SYZ2: dc.w 7 dc.l Nem_Bumper; bumper dc.w $7000 dc.l Nem_SyzSpike1; large spikeball dc.w $72C0 dc.l Nem_SyzSpike2; small spikeball dc.w $7740 dc.l Nem_Cater; caterkiller enemy dc.w $9FE0 dc.l Nem_LzSwitch; switch dc.w $A1E0 dc.l Nem_Spikes; spikes dc.w $A360 dc.l Nem_HSpring; horizontal spring dc.w $A460 dc.l Nem_VSpring; vertical spring dc.w $A660

---------------------------------------------------------------------------
Pattern load cues - Scrap Brain
---------------------------------------------------------------------------

PLC_2SBZ: dc.w $B dc.l Nem_SBZ2; SBZ main patterns dc.w 0 dc.l Nem_Stomper; moving platform and stomper dc.w $5800 dc.l Nem_SbzDoor1; door dc.w $5D00 dc.l Nem_Girder; girder dc.w $5E00 dc.l Nem_BallHog; ball hog enemy dc.w $6040 dc.l Nem_SbzWheel1; spot on large wheel dc.w $6880 dc.l Nem_SbzWheel2; wheel that grabs Sonic dc.w $6900 dc.l Nem_SyzSpike1; large spikeball dc.w $7220 dc.l Nem_Cutter; pizza cutter dc.w $76A0 dc.l Nem_FlamePipe; flaming pipe dc.w $7B20 dc.l Nem_SbzFloor; collapsing floor dc.w $7EA0 dc.l Nem_SbzBlock; vanishing block dc.w $9860 PLC_2SBZ2: dc.w $C dc.l Nem_Cater; caterkiller enemy dc.w $5600 dc.l Nem_Bomb; bomb enemy dc.w $8000 dc.l Nem_Orbinaut; orbinaut enemy dc.w $8520 dc.l Nem_SlideFloor; floor that slides away dc.w $8C00 dc.l Nem_SbzDoor2; horizontal door dc.w $8DE0 dc.l Nem_Electric; electric orb dc.w $8FC0 dc.l Nem_TrapDoor; trapdoor dc.w $9240 dc.l Nem_SbzFloor; collapsing floor dc.w $7F20 dc.l Nem_SpinPform; small spinning platform dc.w $9BE0 dc.l Nem_LzSwitch; switch dc.w $A1E0 dc.l Nem_Spikes; spikes dc.w $A360 dc.l Nem_HSpring; horizontal spring dc.w $A460 dc.l Nem_VSpring; vertical spring dc.w $A660

---------------------------------------------------------------------------
Pattern load cues - title card
---------------------------------------------------------------------------

PLC_2TitleCard: dc.w 0 dc.l Nem_TitleCard dc.w $B000

---------------------------------------------------------------------------
Pattern load cues - act 3 boss
---------------------------------------------------------------------------

PLC_2Boss: dc.w 5 dc.l Nem_Eggman; Eggman main patterns dc.w $8000 dc.l Nem_Weapons; Eggman's weapons dc.w $8D80 dc.l Nem_Prison; prison capsule dc.w $93A0 dc.l Nem_Bomb; bomb enemy (gets overwritten) dc.w $A300 dc.l Nem_SlzSpike; spikeball (SLZ boss) dc.w $A300 dc.l Nem_Exhaust; exhaust flame dc.w $A540

---------------------------------------------------------------------------
Pattern load cues - act 1/2 signpost
---------------------------------------------------------------------------

PLC_2Signpost: dc.w 2 dc.l Nem_SignPost; signpost dc.w $D000 dc.l Nem_Bonus; hidden bonus points dc.w $96C0 dc.l Nem_BigFlash; giant ring flash effect dc.w $8C40

---------------------------------------------------------------------------
Pattern load cues - beta special stage warp effect
---------------------------------------------------------------------------

PLC_2Warp: dc.w 0 dc.l Nem_Warp dc.w $A820

---------------------------------------------------------------------------
Pattern load cues - special stage
---------------------------------------------------------------------------

PLC_2SpeStage: dc.w $10 dc.l Nem_SSBgCloud; bubble and cloud background dc.w 0 dc.l Nem_SSBgFish; bird and fish background dc.w $A20 dc.l Nem_SSWalls; walls dc.w $2840 dc.l Nem_Bumper; bumper dc.w $4760 dc.l Nem_SSGOAL; GOAL block dc.w $4A20 dc.l Nem_SSUpDown; UP and DOWN blocks dc.w $4C60 dc.l Nem_SSRBlock; R block dc.w $5E00 dc.l Nem_SS1UpBlock; 1UP block dc.w $6E00 dc.l Nem_SSEmStars; emerald collection stars dc.w $7E00 dc.l Nem_SSRedWhite; red and white block dc.w $8E00 dc.l Nem_SSGhost; ghost block dc.w $9E00 dc.l Nem_SSWBlock; W block dc.w $AE00 dc.l Nem_SSGlass; glass block dc.w $BE00 dc.l Nem_SSEmerald; emeralds dc.w $EE00 dc.l Nem_SSZone1; ZONE 1 block dc.w $F2E0 dc.l Nem_SSZone2; ZONE 2 block dc.w $F400 dc.l Nem_SSZone3; ZONE 3 block dc.w $F520 dc.l Nem_SSZone4; ZONE 4 block dc.w $F2E0 dc.l Nem_SSZone5; ZONE 5 block dc.w $F400 dc.l Nem_SSZone6; ZONE 6 block dc.w $F520

---------------------------------------------------------------------------
Pattern load cues - GHZ animals
---------------------------------------------------------------------------

PLC_2GHZAnimals: dc.w 1 dc.l Nem_Rabbit; rabbit dc.w $B000 dc.l Nem_Flicky; flicky dc.w $B240

---------------------------------------------------------------------------
Pattern load cues - LZ animals
---------------------------------------------------------------------------

PLC_2LZAnimals: dc.w 1 dc.l Nem_BlackBird; blackbird dc.w $B000 dc.l Nem_Seal; seal dc.w $B240

---------------------------------------------------------------------------
Pattern load cues - MZ animals
---------------------------------------------------------------------------

PLC_2MZAnimals: dc.w 1 dc.l Nem_Squirrel; squirrel dc.w $B000 dc.l Nem_Seal; seal dc.w $B240

---------------------------------------------------------------------------
Pattern load cues - SLZ animals
---------------------------------------------------------------------------

PLC_2SLZAnimals: dc.w 1 dc.l Nem_Pig; pig dc.w $B000 dc.l Nem_Flicky; flicky dc.w $B240

---------------------------------------------------------------------------
Pattern load cues - SYZ animals
---------------------------------------------------------------------------

PLC_2SYZAnimals: dc.w 1 dc.l Nem_Pig; pig dc.w $B000 dc.l Nem_Chicken; chicken dc.w $B240

---------------------------------------------------------------------------
Pattern load cues - SBZ animals
---------------------------------------------------------------------------

PLC_2SBZAnimals: dc.w 1 dc.l Nem_Rabbit; rabbit dc.w $B000 dc.l Nem_Chicken; chicken dc.w $B240

---------------------------------------------------------------------------
Pattern load cues - special stage results screen
---------------------------------------------------------------------------

PLC_2SpeStResult:dc.w 1 dc.l Nem_ResultEm; emeralds dc.w $A820 dc.l Nem_MiniSonic; mini Sonic dc.w $AA20

---------------------------------------------------------------------------
Pattern load cues - ending sequence
---------------------------------------------------------------------------

PLC_2Ending: dc.w $E dc.l Nem_GHZ_1st; GHZ main patterns dc.w 0 dc.l Nem_GHZ_2nd; GHZ secondary patterns dc.w $39A0 dc.l Nem_Stalk; flower stalk dc.w $6B00 dc.l Nem_EndFlower; flowers dc.w $7400 dc.l Nem_EndEm; emeralds dc.w $78A0 dc.l Nem_EndSonic; Sonic dc.w $7C20 dc.l Nem_EndEggman; Eggman's death (unused) dc.w $A480 dc.l Nem_Rabbit; rabbit dc.w $AA60 dc.l Nem_Chicken; chicken dc.w $ACA0 dc.l Nem_BlackBird; blackbird dc.w $AE60 dc.l Nem_Seal; seal dc.w $B0A0 dc.l Nem_Pig; pig dc.w $B260 dc.l Nem_Flicky; flicky dc.w $B4A0 dc.l Nem_Squirrel; squirrel dc.w $B660 dc.l Nem_EndStH; "SONIC THE HEDGEHOG" dc.w $B8A0

---------------------------------------------------------------------------
Pattern load cues - "TRY AGAIN" and "END" screens
---------------------------------------------------------------------------

PLC_2TryAgain: dc.w 2 dc.l Nem_EndEm; emeralds dc.w $78A0 dc.l Nem_TryAgain; Eggman dc.w $7C20 dc.l Nem_CreditText; credits alphabet dc.w $B400

---------------------------------------------------------------------------
Pattern load cues - Eggman on SBZ 2
---------------------------------------------------------------------------

PLC_2EggmanSBZ2: dc.w 2 dc.l Nem_SbzBlock; block dc.w $A300 dc.l Nem_Sbz2Eggman; Eggman dc.w $8000 dc.l Nem_LzSwitch; switch dc.w $9400

---------------------------------------------------------------------------
Pattern load cues - final boss
---------------------------------------------------------------------------

PLC_2FZBoss: dc.w 4 dc.l Nem_FzEggman; Eggman after boss dc.w $7400 dc.l Nem_FzBoss; FZ boss dc.w $6000 dc.l Nem_Eggman; Eggman main patterns dc.w $8000 dc.l Nem_Sbz2Eggman; Eggman without ship dc.w $8E00 dc.l Nem_Exhaust; exhaust flame dc.w $A540 even</asm>

Save it into the "_inc" folder. Create new file named Pattern load cues3.asm, and paste it:

<asm>; ---------------------------------------------------------------------------

Pattern load cues - index
---------------------------------------------------------------------------

dc.w PLC_3Main-ArtLoadCues3, PLC_3Main2-ArtLoadCues3 dc.w PLC_3Explode-ArtLoadCues3, PLC_3GameOver-ArtLoadCues3 dc.w PLC_3GHZ-ArtLoadCues3, PLC_3GHZ2-ArtLoadCues3 dc.w PLC_3LZ-ArtLoadCues3, PLC_3LZ2-ArtLoadCues3 dc.w PLC_3MZ-ArtLoadCues3, PLC_3MZ2-ArtLoadCues3 dc.w PLC_3SLZ-ArtLoadCues3, PLC_3SLZ2-ArtLoadCues3 dc.w PLC_3SYZ-ArtLoadCues3, PLC_3SYZ2-ArtLoadCues3 dc.w PLC_3SBZ-ArtLoadCues3, PLC_3SBZ2-ArtLoadCues3 dc.w PLC_3TitleCard-ArtLoadCues3, PLC_3Boss-ArtLoadCues3 dc.w PLC_3Signpost-ArtLoadCues3, PLC_3Warp-ArtLoadCues3 dc.w PLC_3SpeStage-ArtLoadCues3, PLC_3GHZAnimals-ArtLoadCues3 dc.w PLC_3LZAnimals-ArtLoadCues3, PLC_3MZAnimals-ArtLoadCues3 dc.w PLC_3SLZAnimals-ArtLoadCues3, PLC_3SYZAnimals-ArtLoadCues3 dc.w PLC_3SBZAnimals-ArtLoadCues3, PLC_3SpeStResult-ArtLoadCues3 dc.w PLC_3Ending-ArtLoadCues3, PLC_3TryAgain-ArtLoadCues3 dc.w PLC_3EggmanSBZ2-ArtLoadCues3, PLC_3FZBoss-ArtLoadCues3

---------------------------------------------------------------------------
Pattern load cues - standard block 1
---------------------------------------------------------------------------

PLC_3Main: dc.w 4 dc.l Nem_Lamp; lamppost dc.w $F400 dc.l Nem_Hud; HUD dc.w $D940 dc.l Nem_Lives; lives counter dc.w $FA80 dc.l Nem_Ring; rings dc.w $F640 dc.l Nem_Points; points from enemy dc.w $F2E0

---------------------------------------------------------------------------
Pattern load cues - standard block 2
---------------------------------------------------------------------------

PLC_3Main2: dc.w 2 dc.l Nem_Monitors; monitors dc.w $D000 dc.l Nem_Shield; shield dc.w $A820 dc.l Nem_Stars; invincibility stars dc.w $AB80

---------------------------------------------------------------------------
Pattern load cues - explosion
---------------------------------------------------------------------------

PLC_3Explode: dc.w 0 dc.l Nem_Explode; explosion dc.w $B400

---------------------------------------------------------------------------
Pattern load cues - game/time over
---------------------------------------------------------------------------

PLC_3GameOver: dc.w 0 dc.l Nem_GameOver; game/time over dc.w $ABC0

---------------------------------------------------------------------------
Pattern load cues - Green Hill
---------------------------------------------------------------------------

PLC_3GHZ: dc.w $B dc.l Nem_GHZ3_1st; GHZ main patterns dc.w 0 dc.l Nem_GHZ3_2nd; GHZ secondary patterns dc.w $39A0 dc.l Nem_Stalk; flower stalk dc.w $6B00 dc.l Nem_PplRock; purple rock dc.w $7A00 dc.l Nem_Crabmeat; crabmeat enemy dc.w $8000 dc.l Nem_Buzz; buzz bomber enemy dc.w $8880 dc.l Nem_Chopper; chopper enemy dc.w $8F60 dc.l Nem_Newtron; newtron enemy dc.w $9360 dc.l Nem_Motobug; motobug enemy dc.w $9E00 dc.l Nem_Spikes; spikes dc.w $A360 dc.l Nem_HSpring; horizontal spring dc.w $A460 dc.l Nem_VSpring; vertical spring dc.w $A660 PLC_3GHZ2: dc.w 5 dc.l Nem_Swing; swinging platform dc.w $7000 dc.l Nem_Bridge; bridge dc.w $71C0 dc.l Nem_SpikePole; spiked pole dc.w $7300 dc.l Nem_Ball; giant ball dc.w $7540 dc.l Nem_GhzWall1; breakable wall dc.w $A1E0 dc.l Nem_GhzWall2; normal wall dc.w $6980

---------------------------------------------------------------------------
Pattern load cues - Labyrinth
---------------------------------------------------------------------------

PLC_3LZ: dc.w $B dc.l Nem_LZ3; LZ main patterns dc.w 0 dc.l Nem_LzBlock1; block dc.w $3C00 dc.l Nem_LzBlock2; blocks dc.w $3E00 dc.l Nem_Splash; waterfalls and splash dc.w $4B20 dc.l Nem_Water; water surface dc.w $6000 dc.l Nem_LzSpikeBall; spiked ball dc.w $6200 dc.l Nem_FlapDoor; flapping door dc.w $6500 dc.l Nem_Bubbles; bubbles and numbers dc.w $6900 dc.l Nem_LzBlock3; block dc.w $7780 dc.l Nem_LzDoor1; vertical door dc.w $7880 dc.l Nem_Harpoon; harpoon dc.w $7980 dc.l Nem_Burrobot; burrobot enemy dc.w $94C0 PLC_3LZ2: dc.w $C dc.l Nem_LzPole; pole that breaks dc.w $7BC0 dc.l Nem_LzDoor2; large horizontal door dc.w $7CC0 dc.l Nem_LzWheel; wheel dc.w $7EC0 dc.l Nem_Gargoyle; gargoyle head dc.w $5D20 dc.l Nem_LzSonic; Sonic holding his breath dc.w $8800 dc.l Nem_LzPlatfm; rising platform dc.w $89E0 dc.l Nem_Orbinaut; orbinaut enemy dc.w $8CE0 dc.l Nem_Jaws; jaws enemy dc.w $90C0 dc.l Nem_LzSwitch; switch dc.w $A1E0 dc.l Nem_Cork; cork block dc.w $A000 dc.l Nem_Spikes; spikes dc.w $A360 dc.l Nem_HSpring; horizontal spring dc.w $A460 dc.l Nem_VSpring; vertical spring dc.w $A660

---------------------------------------------------------------------------
Pattern load cues - Marble
---------------------------------------------------------------------------

PLC_3MZ: dc.w 9 dc.l Nem_MZ3; MZ main patterns dc.w 0 dc.l Nem_MzMetal; metal blocks dc.w $6000 dc.l Nem_MzFire; fireballs dc.w $68A0 dc.l Nem_Swing; swinging platform dc.w $7000 dc.l Nem_MzGlass; green glassy block dc.w $71C0 dc.l Nem_Lava; lava dc.w $7500 dc.l Nem_Buzz; buzz bomber enemy dc.w $8880 dc.l Nem_Yadrin; yadrin enemy dc.w $8F60 dc.l Nem_Basaran; basaran enemy dc.w $9700 dc.l Nem_Cater; caterkiller enemy dc.w $9FE0 PLC_3MZ2: dc.w 4 dc.l Nem_MzSwitch; switch dc.w $A260 dc.l Nem_Spikes; spikes dc.w $A360 dc.l Nem_HSpring; horizontal spring dc.w $A460 dc.l Nem_VSpring; vertical spring dc.w $A660 dc.l Nem_MzBlock; green stone block dc.w $5700

---------------------------------------------------------------------------
Pattern load cues - Star Light
---------------------------------------------------------------------------

PLC_3SLZ: dc.w 8 dc.l Nem_SLZ3; SLZ main patterns dc.w 0 dc.l Nem_Bomb; bomb enemy dc.w $8000 dc.l Nem_Orbinaut; orbinaut enemy dc.w $8520 dc.l Nem_MzFire; fireballs dc.w $9000 dc.l Nem_SlzBlock; block dc.w $9C00 dc.l Nem_SlzWall; breakable wall dc.w $A260 dc.l Nem_Spikes; spikes dc.w $A360 dc.l Nem_HSpring; horizontal spring dc.w $A460 dc.l Nem_VSpring; vertical spring dc.w $A660 PLC_3SLZ2: dc.w 5 dc.l Nem_Seesaw; seesaw dc.w $6E80 dc.l Nem_Fan; fan dc.w $7400 dc.l Nem_Pylon; foreground pylon dc.w $7980 dc.l Nem_SlzSwing; swinging platform dc.w $7B80 dc.l Nem_SlzCannon; fireball launcher dc.w $9B00 dc.l Nem_SlzSpike; spikeball dc.w $9E00

---------------------------------------------------------------------------
Pattern load cues - Spring Yard
---------------------------------------------------------------------------

PLC_3SYZ: dc.w 4 dc.l Nem_SYZ3; SYZ main patterns dc.w 0 dc.l Nem_Crabmeat; crabmeat enemy dc.w $8000 dc.l Nem_Buzz; buzz bomber enemy dc.w $8880 dc.l Nem_Yadrin; yadrin enemy dc.w $8F60 dc.l Nem_Roller; roller enemy dc.w $9700 PLC_3SYZ2: dc.w 7 dc.l Nem_Bumper; bumper dc.w $7000 dc.l Nem_SyzSpike1; large spikeball dc.w $72C0 dc.l Nem_SyzSpike2; small spikeball dc.w $7740 dc.l Nem_Cater; caterkiller enemy dc.w $9FE0 dc.l Nem_LzSwitch; switch dc.w $A1E0 dc.l Nem_Spikes; spikes dc.w $A360 dc.l Nem_HSpring; horizontal spring dc.w $A460 dc.l Nem_VSpring; vertical spring dc.w $A660

---------------------------------------------------------------------------
Pattern load cues - Scrap Brain
---------------------------------------------------------------------------

PLC_3SBZ: dc.w $B dc.l Nem_SBZ3; SBZ main patterns dc.w 0 dc.l Nem_Stomper; moving platform and stomper dc.w $5800 dc.l Nem_SbzDoor1; door dc.w $5D00 dc.l Nem_Girder; girder dc.w $5E00 dc.l Nem_BallHog; ball hog enemy dc.w $6040 dc.l Nem_SbzWheel1; spot on large wheel dc.w $6880 dc.l Nem_SbzWheel2; wheel that grabs Sonic dc.w $6900 dc.l Nem_SyzSpike1; large spikeball dc.w $7220 dc.l Nem_Cutter; pizza cutter dc.w $76A0 dc.l Nem_FlamePipe; flaming pipe dc.w $7B20 dc.l Nem_SbzFloor; collapsing floor dc.w $7EA0 dc.l Nem_SbzBlock; vanishing block dc.w $9860 PLC_3SBZ2: dc.w $C dc.l Nem_Cater; caterkiller enemy dc.w $5600 dc.l Nem_Bomb; bomb enemy dc.w $8000 dc.l Nem_Orbinaut; orbinaut enemy dc.w $8520 dc.l Nem_SlideFloor; floor that slides away dc.w $8C00 dc.l Nem_SbzDoor2; horizontal door dc.w $8DE0 dc.l Nem_Electric; electric orb dc.w $8FC0 dc.l Nem_TrapDoor; trapdoor dc.w $9240 dc.l Nem_SbzFloor; collapsing floor dc.w $7F20 dc.l Nem_SpinPform; small spinning platform dc.w $9BE0 dc.l Nem_LzSwitch; switch dc.w $A1E0 dc.l Nem_Spikes; spikes dc.w $A360 dc.l Nem_HSpring; horizontal spring dc.w $A460 dc.l Nem_VSpring; vertical spring dc.w $A660

---------------------------------------------------------------------------
Pattern load cues - title card
---------------------------------------------------------------------------

PLC_3TitleCard: dc.w 0 dc.l Nem_TitleCard dc.w $B000

---------------------------------------------------------------------------
Pattern load cues - act 3 boss
---------------------------------------------------------------------------

PLC_3Boss: dc.w 5 dc.l Nem_Eggman; Eggman main patterns dc.w $8000 dc.l Nem_Weapons; Eggman's weapons dc.w $8D80 dc.l Nem_Prison; prison capsule dc.w $93A0 dc.l Nem_Bomb; bomb enemy (gets overwritten) dc.w $A300 dc.l Nem_SlzSpike; spikeball (SLZ boss) dc.w $A300 dc.l Nem_Exhaust; exhaust flame dc.w $A540

---------------------------------------------------------------------------
Pattern load cues - act 1/2 signpost
---------------------------------------------------------------------------

PLC_3Signpost: dc.w 2 dc.l Nem_SignPost; signpost dc.w $D000 dc.l Nem_Bonus; hidden bonus points dc.w $96C0 dc.l Nem_BigFlash; giant ring flash effect dc.w $8C40

---------------------------------------------------------------------------
Pattern load cues - beta special stage warp effect
---------------------------------------------------------------------------

PLC_3Warp: dc.w 0 dc.l Nem_Warp dc.w $A820

---------------------------------------------------------------------------
Pattern load cues - special stage
---------------------------------------------------------------------------

PLC_3SpeStage: dc.w $10 dc.l Nem_SSBgCloud; bubble and cloud background dc.w 0 dc.l Nem_SSBgFish; bird and fish background dc.w $A20 dc.l Nem_SSWalls; walls dc.w $2840 dc.l Nem_Bumper; bumper dc.w $4760 dc.l Nem_SSGOAL; GOAL block dc.w $4A20 dc.l Nem_SSUpDown; UP and DOWN blocks dc.w $4C60 dc.l Nem_SSRBlock; R block dc.w $5E00 dc.l Nem_SS1UpBlock; 1UP block dc.w $6E00 dc.l Nem_SSEmStars; emerald collection stars dc.w $7E00 dc.l Nem_SSRedWhite; red and white block dc.w $8E00 dc.l Nem_SSGhost; ghost block dc.w $9E00 dc.l Nem_SSWBlock; W block dc.w $AE00 dc.l Nem_SSGlass; glass block dc.w $BE00 dc.l Nem_SSEmerald; emeralds dc.w $EE00 dc.l Nem_SSZone1; ZONE 1 block dc.w $F2E0 dc.l Nem_SSZone2; ZONE 2 block dc.w $F400 dc.l Nem_SSZone3; ZONE 3 block dc.w $F520 dc.l Nem_SSZone4; ZONE 4 block dc.w $F2E0 dc.l Nem_SSZone5; ZONE 5 block dc.w $F400 dc.l Nem_SSZone6; ZONE 6 block dc.w $F520

---------------------------------------------------------------------------
Pattern load cues - GHZ animals
---------------------------------------------------------------------------

PLC_3GHZAnimals: dc.w 1 dc.l Nem_Rabbit; rabbit dc.w $B000 dc.l Nem_Flicky; flicky dc.w $B240

---------------------------------------------------------------------------
Pattern load cues - LZ animals
---------------------------------------------------------------------------

PLC_3LZAnimals: dc.w 1 dc.l Nem_BlackBird; blackbird dc.w $B000 dc.l Nem_Seal; seal dc.w $B240

---------------------------------------------------------------------------
Pattern load cues - MZ animals
---------------------------------------------------------------------------

PLC_3MZAnimals: dc.w 1 dc.l Nem_Squirrel; squirrel dc.w $B000 dc.l Nem_Seal; seal dc.w $B240

---------------------------------------------------------------------------
Pattern load cues - SLZ animals
---------------------------------------------------------------------------

PLC_3SLZAnimals: dc.w 1 dc.l Nem_Pig; pig dc.w $B000 dc.l Nem_Flicky; flicky dc.w $B240

---------------------------------------------------------------------------
Pattern load cues - SYZ animals
---------------------------------------------------------------------------

PLC_3SYZAnimals: dc.w 1 dc.l Nem_Pig; pig dc.w $B000 dc.l Nem_Chicken; chicken dc.w $B240

---------------------------------------------------------------------------
Pattern load cues - SBZ animals
---------------------------------------------------------------------------

PLC_3SBZAnimals: dc.w 1 dc.l Nem_Rabbit; rabbit dc.w $B000 dc.l Nem_Chicken; chicken dc.w $B240

---------------------------------------------------------------------------
Pattern load cues - special stage results screen
---------------------------------------------------------------------------

PLC_3SpeStResult:dc.w 1 dc.l Nem_ResultEm; emeralds dc.w $A820 dc.l Nem_MiniSonic; mini Sonic dc.w $AA20

---------------------------------------------------------------------------
Pattern load cues - ending sequence
---------------------------------------------------------------------------

PLC_3Ending: dc.w $E dc.l Nem_GHZ_1st; GHZ main patterns dc.w 0 dc.l Nem_GHZ_2nd; GHZ secondary patterns dc.w $39A0 dc.l Nem_Stalk; flower stalk dc.w $6B00 dc.l Nem_EndFlower; flowers dc.w $7400 dc.l Nem_EndEm; emeralds dc.w $78A0 dc.l Nem_EndSonic; Sonic dc.w $7C20 dc.l Nem_EndEggman; Eggman's death (unused) dc.w $A480 dc.l Nem_Rabbit; rabbit dc.w $AA60 dc.l Nem_Chicken; chicken dc.w $ACA0 dc.l Nem_BlackBird; blackbird dc.w $AE60 dc.l Nem_Seal; seal dc.w $B0A0 dc.l Nem_Pig; pig dc.w $B260 dc.l Nem_Flicky; flicky dc.w $B4A0 dc.l Nem_Squirrel; squirrel dc.w $B660 dc.l Nem_EndStH; "SONIC THE HEDGEHOG" dc.w $B8A0

---------------------------------------------------------------------------
Pattern load cues - "TRY AGAIN" and "END" screens
---------------------------------------------------------------------------

PLC_3TryAgain: dc.w 2 dc.l Nem_EndEm; emeralds dc.w $78A0 dc.l Nem_TryAgain; Eggman dc.w $7C20 dc.l Nem_CreditText; credits alphabet dc.w $B400

---------------------------------------------------------------------------
Pattern load cues - Eggman on SBZ 2
---------------------------------------------------------------------------

PLC_3EggmanSBZ2: dc.w 2 dc.l Nem_SbzBlock; block dc.w $A300 dc.l Nem_Sbz2Eggman; Eggman dc.w $8000 dc.l Nem_LzSwitch; switch dc.w $9400

---------------------------------------------------------------------------
Pattern load cues - final boss
---------------------------------------------------------------------------

PLC_3FZBoss: dc.w 4 dc.l Nem_FzEggman; Eggman after boss dc.w $7400 dc.l Nem_FzBoss; FZ boss dc.w $6000 dc.l Nem_Eggman; Eggman main patterns dc.w $8000 dc.l Nem_Sbz2Eggman; Eggman without ship dc.w $8E00 dc.l Nem_Exhaust; exhaust flame dc.w $A540 even</asm>

And save in "_inc" directory.

Now every act use your own tileset, example: Star Light Act1 uses 8x8 tiles data of file 8x8slz.bin, Act2 uses 8x8slz2.bin and Act3 8x8slz3.bin.