Difference between revisions of "Use Dynamic Tilesets in Sonic 1"
From Sonic Retro
Scarred Sun (talk | contribs) m (Text replacement - "</asm>" to "</syntaxhighlight>") |
m (Text replacement - "\[\[Category:SCHG How-tos.*" to "") |
||
(2 intermediate revisions by 2 users not shown) | |||
Line 9: | Line 9: | ||
Open up your "Sonic 1.asm" file, and search for "Level:". You will see: | Open up your "Sonic 1.asm" file, and search for "Level:". You will see: | ||
− | <asm> | + | <syntaxhighlight lang="asm"> |
; --------------------------------------------------------------------------- | ; --------------------------------------------------------------------------- | ||
; Level | ; Level | ||
Line 44: | Line 44: | ||
Change it to: | Change it to: | ||
− | <asm>; --------------------------------------------------------------------------- | + | <syntaxhighlight lang="asm">; --------------------------------------------------------------------------- |
; Level | ; Level | ||
; --------------------------------------------------------------------------- | ; --------------------------------------------------------------------------- | ||
Line 88: | Line 88: | ||
Make a search for "Cred_ClrPallet:", you will see: | Make a search for "Cred_ClrPallet:", you will see: | ||
− | <asm>Cred_ClrPallet: | + | <syntaxhighlight lang="asm">Cred_ClrPallet: |
move.l d0,(a1)+ | move.l d0,(a1)+ | ||
dbf d1,Cred_ClrPallet; fill palette with black ($0000) | dbf d1,Cred_ClrPallet; fill palette with black ($0000) | ||
Line 110: | Line 110: | ||
Change it to: | Change it to: | ||
− | <asm>Cred_ClrPallet: | + | <syntaxhighlight lang="asm">Cred_ClrPallet: |
move.l d0,(a1)+ | move.l d0,(a1)+ | ||
dbf d1,Cred_ClrPallet; fill palette with black ($0000) | dbf d1,Cred_ClrPallet; fill palette with black ($0000) | ||
Line 143: | Line 143: | ||
Search for "MainLoadBlockLoad:", you will see: | Search for "MainLoadBlockLoad:", you will see: | ||
− | <asm>MainLoadBlockLoad:; XREF: Level; EndingSequence | + | <syntaxhighlight lang="asm">MainLoadBlockLoad:; XREF: Level; EndingSequence |
moveq #0,d0 | moveq #0,d0 | ||
move.b ($FFFFFE10).w,d0 | move.b ($FFFFFE10).w,d0 | ||
Line 168: | Line 168: | ||
Change to: | Change to: | ||
− | <asm>MainLoadBlockLoad:; XREF: Level; EndingSequence | + | <syntaxhighlight lang="asm">MainLoadBlockLoad:; XREF: Level; EndingSequence |
moveq #0,d0 | moveq #0,d0 | ||
move.b ($FFFFFE10).w,d0 | move.b ($FFFFFE10).w,d0 | ||
Line 204: | Line 204: | ||
Search for "MainLoadBlocks:", you will see: | Search for "MainLoadBlocks:", you will see: | ||
− | <asm>; --------------------------------------------------------------------------- | + | <syntaxhighlight lang="asm">; --------------------------------------------------------------------------- |
; Main level load blocks | ; Main level load blocks | ||
; --------------------------------------------------------------------------- | ; --------------------------------------------------------------------------- | ||
Line 212: | Line 212: | ||
Change to: | Change to: | ||
− | <asm>; --------------------------------------------------------------------------- | + | <syntaxhighlight lang="asm">; --------------------------------------------------------------------------- |
; Main level load blocks | ; Main level load blocks | ||
; --------------------------------------------------------------------------- | ; --------------------------------------------------------------------------- | ||
Line 226: | Line 226: | ||
Open Main level load blocks2.asm and Main level load blocks3.asm, you can see: | Open Main level load blocks2.asm and Main level load blocks3.asm, you can see: | ||
− | <asm>; --------------------------------------------------------------------------- | + | <syntaxhighlight lang="asm">; --------------------------------------------------------------------------- |
; Main level load blocks | ; Main level load blocks | ||
; | ; | ||
Line 267: | Line 267: | ||
In the file Main level load blocks2.asm, change it to: | In the file Main level load blocks2.asm, change it to: | ||
− | <asm>; --------------------------------------------------------------------------- | + | <syntaxhighlight lang="asm">; --------------------------------------------------------------------------- |
; Main level load blocks | ; Main level load blocks | ||
; | ; | ||
Line 308: | Line 308: | ||
And in file Main level load blocks3.asm, change to: | And in file Main level load blocks3.asm, change to: | ||
− | <asm>; --------------------------------------------------------------------------- | + | <syntaxhighlight lang="asm">; --------------------------------------------------------------------------- |
; Main level load blocks | ; Main level load blocks | ||
; | ; | ||
Line 346: | Line 346: | ||
dc.b 0, $86, $13, $13 | dc.b 0, $86, $13, $13 | ||
even</syntaxhighlight> | even</syntaxhighlight> | ||
+ | |||
+ | Keep in mind The level art is loaded with pattern load cues unless you followed [http://info.sonicretro.org/SCHG_How-to:Port_Sonic_2%27s_Level_Art_Loader_to_Sonic_1 this guide.] | ||
Search for "Blk16_GHZ:", you will see: | Search for "Blk16_GHZ:", you will see: | ||
− | <asm>; --------------------------------------------------------------------------- | + | <syntaxhighlight lang="asm">; --------------------------------------------------------------------------- |
; Compressed graphics - primary patterns and block mappings | ; Compressed graphics - primary patterns and block mappings | ||
; --------------------------------------------------------------------------- | ; --------------------------------------------------------------------------- | ||
Line 393: | Line 395: | ||
Change to: | Change to: | ||
− | <asm>; --------------------------------------------------------------------------- | + | <syntaxhighlight lang="asm">; --------------------------------------------------------------------------- |
; Compressed graphics - primary patterns and block mappings | ; Compressed graphics - primary patterns and block mappings | ||
; --------------------------------------------------------------------------- | ; --------------------------------------------------------------------------- | ||
Line 524: | Line 526: | ||
Search for "LoadPLC:", you will see: | Search for "LoadPLC:", you will see: | ||
− | <asm>LoadPLC: | + | <syntaxhighlight lang="asm">LoadPLC: |
movem.l a1-a2,-(sp) | movem.l a1-a2,-(sp) | ||
lea (ArtLoadCues).l,a1 | lea (ArtLoadCues).l,a1 | ||
Line 534: | Line 536: | ||
Change to: | Change to: | ||
− | <asm>LoadPLC: | + | <syntaxhighlight lang="asm">LoadPLC: |
movem.l a1-a2,-(sp) | movem.l a1-a2,-(sp) | ||
cmpi.b #2,($FFFFFE11).w; is level Act 3? | cmpi.b #2,($FFFFFE11).w; is level Act 3? | ||
Line 555: | Line 557: | ||
Search for "LoadPLC2:", you will see: | Search for "LoadPLC2:", you will see: | ||
− | <asm>LoadPLC2: | + | <syntaxhighlight lang="asm">LoadPLC2: |
movem.l a1-a2,-(sp) | movem.l a1-a2,-(sp) | ||
lea (ArtLoadCues).l,a1 | lea (ArtLoadCues).l,a1 | ||
Line 568: | Line 570: | ||
Change to: | Change to: | ||
− | <asm>LoadPLC2: | + | <syntaxhighlight lang="asm">LoadPLC2: |
movem.l a1-a2,-(sp) | movem.l a1-a2,-(sp) | ||
cmpi.b #2,($FFFFFE11).w; is level Act 3? | cmpi.b #2,($FFFFFE11).w; is level Act 3? | ||
Line 592: | Line 594: | ||
Search for ArtLoadCues:, you will see: | Search for ArtLoadCues:, you will see: | ||
− | <asm>; --------------------------------------------------------------------------- | + | <syntaxhighlight lang="asm">; --------------------------------------------------------------------------- |
; Pattern load cues | ; Pattern load cues | ||
; --------------------------------------------------------------------------- | ; --------------------------------------------------------------------------- | ||
Line 600: | Line 602: | ||
Change it to: | Change it to: | ||
− | <asm>; --------------------------------------------------------------------------- | + | <syntaxhighlight lang="asm">; --------------------------------------------------------------------------- |
; Pattern load cues | ; Pattern load cues | ||
; --------------------------------------------------------------------------- | ; --------------------------------------------------------------------------- | ||
Line 612: | Line 614: | ||
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: | 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>; --------------------------------------------------------------------------- | + | <syntaxhighlight lang="asm">; --------------------------------------------------------------------------- |
; Pattern load cues - index | ; Pattern load cues - index | ||
; --------------------------------------------------------------------------- | ; --------------------------------------------------------------------------- | ||
Line 1,130: | Line 1,132: | ||
Create new file named Pattern load cues3.asm, and paste it: | Create new file named Pattern load cues3.asm, and paste it: | ||
− | <asm>; --------------------------------------------------------------------------- | + | <syntaxhighlight lang="asm">; --------------------------------------------------------------------------- |
; Pattern load cues - index | ; Pattern load cues - index | ||
; --------------------------------------------------------------------------- | ; --------------------------------------------------------------------------- | ||
Line 1,650: | Line 1,652: | ||
{{S1Howtos}} | {{S1Howtos}} | ||
− | + | |Use Dynamic Tilesets in Sonic 1]] |
Latest revision as of 10:51, 25 August 2018
(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 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
Change it to:
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
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 palette
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 palette
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
Keep in mind The level art is loaded with pattern load cues unless you followed this guide.
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 $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
Save it into the "_inc" folder. Create new file named Pattern load cues3.asm, and paste it:
; ---------------------------------------------------------------------------
; 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
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.
|Use Dynamic Tilesets in Sonic 1]]