SCHG How-to:Use Dynamic Tilesets in Sonic 1
From Sonic Retro
(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:
; --------------------------------------------------------------------------- ; 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
Change it to:
; --------------------------------------------------------------------------- ; 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
Make a search for "Cred_ClrPallet:", you will see:
Cred_ClrPallet: move.l d0,(a1)+ dbf d1,Cred_ClrPallet; fill pallet with black ($0000) moveq #3,d0 bsr.w PalLoad1; load Sonic's pallet 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
Change it to:
Cred_ClrPallet: move.l d0,(a1)+ dbf d1,Cred_ClrPallet; fill pallet with black ($0000) moveq #3,d0 bsr.w PalLoad1; load Sonic's pallet 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
Search for "MainLoadBlockLoad:", you will see:
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 pallet
Change to:
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 pallet
Search for "MainLoadBlocks:", you will see:
; --------------------------------------------------------------------------- ; Main level load blocks ; --------------------------------------------------------------------------- MainLoadBlocks: include "_inc\Main level load blocks.asm"
Change to:
; --------------------------------------------------------------------------- ; 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"
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:
; --------------------------------------------------------------------------- ; 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
In the file Main level load blocks2.asm, change it to:
; --------------------------------------------------------------------------- ; 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
And in file Main level load blocks3.asm, change to:
; --------------------------------------------------------------------------- ; 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
Search for "Blk16_GHZ:", you will see:
; --------------------------------------------------------------------------- ; 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
Change to:
; --------------------------------------------------------------------------- ; 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
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:
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
Change to:
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
Search for "LoadPLC2:", you will see:
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
Change to:
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
Search for ArtLoadCues:, you will see:
; --------------------------------------------------------------------------- ; Pattern load cues ; --------------------------------------------------------------------------- ArtLoadCues: include "_inc\Pattern load cues.asm"
Change it to:
; --------------------------------------------------------------------------- ; Pattern load cues ; --------------------------------------------------------------------------- ArtLoadCues: include "_inc\Pattern load cues.asm" ArtLoadCues2: include "_inc\Pattern load cues2.asm" ArtLoadCues3: include "_inc\Pattern load cues3.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:
; --------------------------------------------------------------------------- ; 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 $
