Actions

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 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

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.

SCHG How-To Guide: Sonic the Hedgehog (16-bit)
Fixing Bugs
Fix Demo Playback | Fix a Race Condition with Pattern Load Cues | Fix the SEGA Sound | Display the Press Start Button Text | Fix the Level Select Menu | Fix the Hidden Points Bug | Fix Accidental Deletion of Scattered Rings | Fix Ring Timers | Fix the Walk-Jump Bug | Correct Drowning Bugs | Fix the Death Boundary Bug | Fix the Camera Follow Bug | Fix Song Restoration Bugs | Fix the HUD Blinking | Fix the Level Select Graphics Bug
Changing Design Choices
Change Spike Behavior | Fix Special Stage Jumping Physics | Improve the Fade In\Fade Out Progression Routines | Fix Scattered Rings' Underwater Physics | Remove the Speed Cap | Port the REV01 Background Effects | Port Sonic 2's Level Art Loader | Retain Rings Between Acts | Add Sonic 2 (Simon Wai Prototype) Level Select | Improve ObjectMove Subroutines
Adding Features
Add Spin Dash ( Part 1 / Part 2 / Part 3 / Part 4 ) | Add Eggman Monitor
Sound Features
Expand Music Index From $94 to $9F | Extend Music Slots | Play Different Songs Per Act | Expand Music Index to Start at $00 | Port Sonic 2 Final Sound Driver | Port Sonic 3's Sound Driver
Extending the Game
Load Chunks From ROM | Add Extra Characters | Make an Alternative Title Screen | Use Dynamic Tilesets | Make GHZ Load Alternate Art | Add a New Zone | Set Up the Goggle Monitor | Add New Moves | Add a Dynamic Collision System | Dynamic Special Stage Walls System | Extend Sprite Mappings and Art Limit | Enigma Credits
Miscellaneous
Convert the Hivebrain 2005 Disassembly to ASM68K
Split Disassembly Guides
Set Up a Split Disassembly | Basic Level Editing | Basic Art Editing | Basic ASM Editing (Spin Dash)