Sonic and Sega Retro Message Board: HPZMan - Viewing Profile - Sonic and Sega Retro Message Board

Jump to content

Hey there, Guest!  (Log In · Register) Help

Group:
Member: Members
Active Posts:
17 (0.01 per day)
Most Active In:
Engineering & Reverse Engineering (10 posts)
Joined:
14-May 08
Profile Views:
996
Last Active:
User is offline Feb 16 2011 04:43 PM
Currently:
Offline

My Information

Age:
Age Unknown
Birthday:
Birthday Unknown
Gender:
Not Telling Not Telling

Contact Information

E-mail:
Click here to e-mail me

Previous Fields

National Flag:
br

Latest Visitors

Topics I've Started

  1. How to expand music index to start at $00 instead of $80

    10 June 2009 - 02:30 AM

    Here's a easy way on how to use all slots from $00 to $FF on the Sonic 1 M68K Sound Driver.
    Some notes:
    After the changes, the addresses $FFFFFFFC and $FFFFFFFD will be used.
    Tecnically, it aren't new slots. Instead of this, it is a duplication from the slots $80 using a unique different index.

    Thanks to Eduardo Knuckles for test the guide.


    Step 1 - Slots $00 to $7F

    Make a search for "PlaySound:".
    You will see this:
    CODE
    PlaySound:
            move.b    d0,($FFFFF00A).w
            rts



    Change to this:
    CODE
    PlaySound:
            cmpi.b  #$7F,d0
            ble.s   ChkSounds00to7F
            jmp     NormalSoundRequest
    ChkSounds00to7F:
            cmpi.b  #$01,d0
            bge.s   LoadSlots00to7F
            jmp     NormalSoundRequest
    LoadSlots00to7F:
            add.b   #$80,d0; Add $80 to get slot to starts at $81            
            move.b  #$01,($FFFFFFFC).w; Move $01 to $FFFFFC to make sound driver to load the secound index
    NormalSoundRequest:
            move.b    d0,($FFFFF00A).w
            rts



    Make a search for "PlaySound_Special:"
    You can see this:
    CODE
    PlaySound_Special:
            move.b    d0,($FFFFF00B).w
            rts



    Change to this:
    CODE
    PlaySound_Special:
            cmpi.b  #$7F,d0
            ble.s   ChkSounds00to7F_Special
            jmp     NormalSoundRequest_Special
    ChkSounds00to7F_Special:

            cmpi.b  #$01,d0
            bge.s   LoadSlots00to7F_Special
            jmp     NormalSoundRequest_Special
    LoadSlots00to7F_Special:
            add.b   #$80,d0; Add $80 to get slot to starts at $81            
            move.b  #$01,($FFFFFFFC).w; Move $01 to $FFFFFC to make the sound driver to load the secound index
    NormalSoundRequest_Special:
            move.b    d0,($FFFFF00B).w
            rts



    Search for "loc_7202C:", you will see this:
    CODE
    loc_7202C:
            jsr    sub_725CA(pc)
            movea.l    (off_719A0).l,a4
            subi.b    #$81,d7
            move.b    (a4,d7.w),$29(a6)
            movea.l    (Go_MusicIndex).l,a4



    Change to this:
    CODE
    loc_7202C:
            jsr    sub_725CA(pc)
            movea.l    (off_719A0).l,a4
            subi.b    #$81,d7
            move.b    (a4,d7.w),$29(a6)
            movea.l    (Go_MusicIndex).l,a4
            cmpi.b  #$01,($FFFFFFFD).w
            bne.s   CheckSounds00to80
            movea.l    (Go_MusicIndexFF).l,a4
            jmp     NormalIndexLoad
    CheckSounds00to80:
            cmpi.b  #$01,($FFFFFFFC).w
            bne.s   NormalIndexLoad
            movea.l    (Go_MusicIndex00).l,a4        
    NormalIndexLoad:
            clr.w   ($FFFFFFFC).w



    Search for "Go_MusicIndex:", you can see this:
    CODE
    Go_MusicIndex:    dc.l MusicIndex; XREF: Sound_81to9F



    Below from the thing you found, add this:
    CODE
    Go_MusicIndex00:    dc.l MusicIndex00
    Go_MusicIndexFF:    dc.l MusicIndexFF



    Step 2 - Slots $E5 to $FF

    Search for "Sound_ChkValue:", you will see this:
    CODE
    Sound_ChkValue:; XREF: sub_71B4C
            moveq    #0,d7
            move.b    9(a6),d7
            beq.w    Sound_E4
            bpl.s    locret_71F8C
            move.b    #$80,9(a6); reset    music flag
            cmpi.b    #$9F,d7
            bls.w    Sound_81to9F; music    $81-$9F
            cmpi.b    #$A0,d7
            bcs.w    locret_71F8C
            cmpi.b    #$CF,d7
            bls.w    Sound_A0toCF; sound    $A0-$CF
            cmpi.b    #$D0,d7
            bcs.w    locret_71F8C
            cmpi.b    #$E0,d7
            bcs.w    Sound_D0toDF; sound    $D0-$DF
            cmpi.b    #$E4,d7
            bls.s    Sound_E0toE4; sound    $E0-$E4

    locret_71F8C:
            rts



    Change to this:
    CODE
    Sound_ChkValue:; XREF: sub_71B4C
            moveq    #0,d7
            move.b    9(a6),d7
            beq.w    Sound_E4
            bpl.s    locret_71F8C
            move.b    #$80,9(a6); reset    music flag
            cmpi.b  #$01,($FFFFFFFC).w
            bne.s   Load81to9F
            jmp     Sound_ChkValueFor00
    Load81to9F:
            cmpi.b    #$9F,d7
            bls.w    Sound_81to9F; music    $81-$9F
    ContinueSound_ChkValue:
            cmpi.b    #$A0,d7
            bcs.w    locret_71F8C
            cmpi.b    #$CF,d7
            bls.w    Sound_A0toCF; sound    $A0-$CF
            cmpi.b    #$D0,d7
            bcs.w    locret_71F8C
            cmpi.b    #$E0,d7
            bcs.w    Sound_D0toDF; sound    $D0-$DF
            cmpi.b    #$E4,d7
            bls.s    Sound_E0toE4; sound    $E0-$E4
            cmpi.b  #$FF,d7
            bls.w   Sound_E5toFF

    locret_71F8C:
            rts



    Search for "Sound_81to9F:" and above the thing you found, add this:
    CODE
    Sound_ChkValueFor00:
            cmpi.b  #$FF,d7; $FF = Last slot for musics in index $00 - $7F ($FF = $7F)
            bls.w   Sound_81to9F
            rts

    Sound_E5toFF:
            move.b  #$01,($FFFFFFFD).w
            sub.b   #$64,d7



    Step 3 - Inserting new songs



    Now you just need to create the pointers for the songs at the index, and includes them!
    To do it for the songs $01 to $7F, create in some place a index called "MusicIndex00:".
    The index have to work like this:
    CODE
    MusicIndex00:
            dc.l    Music01; Music for slot $01
            dc.l    Music02; Music for slot $02
    ......



    To the songs $E5 to $FF, create in some place a index called "MusicIndexFF". The index have to work like this:
    CODE
    MusicIndexFF:
            dc.l    MusicE5; Music for slot $E5
            dc.l    MusicE6; Music for slot $E6
    ......



    Step 4 - Making the Sound Test values to start at $00

    Search for "loc_3550:", you will see this:
    CODE
            addi.w    #$80,d0

    Remove or comment this line.


    Make a search for "LevelSelect:", below from this you can see:
    CODE
            addi.w    #$80,d0

    Remove or comment this line.


    Search for "LevSel_Right:", above it you will see this:
    CODE
            bcc.s    LevSel_Right
            moveq    #$4F,d0; if sound test    moves below 0, set to $4F

    Change or comment these lines.


    Search for "LevSel_Refresh2:", above it you will see this:
    CODE
            cmpi.w    #$50,d0
            bcs.s    LevSel_Refresh2
            moveq    #0,d0; if sound test    moves above $4F, set to    0

    Remove or comment these lines.


    Part 5 - Fixing possible problems with sound effects and songs


    Go to "SoundTypes:", you can see this:
    CODE
    SoundTypes:    dc.b $90, $90, $90, $90, $90, $90, $90,    $90, $90, $90, $90, $90, $90, $90, $90,    $90
            dc.b $90, $90, $90, $90, $90, $90, $90,    $90, $90, $90, $90, $90, $90, $90, $90,    $80
            dc.b $70, $70, $70, $70, $70, $70, $70,    $70, $70, $68, $70, $70, $70, $60, $70,    $70
            dc.b $60, $70, $60, $70, $70, $70, $70,    $70, $70, $70, $70, $70, $70, $70, $7F,    $60
            dc.b $70, $70, $70, $70, $70, $70, $70,    $70, $70, $70, $70, $70, $70, $70, $70,    $80
            dc.b $80, $80, $80, $80, $80, $80, $80,    $80, $80, $80, $80, $80, $80, $80, $80,    $90
            dc.b $90, $90, $90, $90



    Change to this:
    CODE
    SoundTypes:    dc.b $90, $90, $90, $90, $90, $90, $90,    $90, $90, $90, $90, $90, $90, $90, $90,    $90
                    dc.b $90, $90, $90, $90, $90, $90, $90,    $90, $90, $90, $90, $90, $90, $90, $90,    $90
                    dc.b $90, $90, $90, $90, $90, $90, $90,    $90, $90, $90, $90, $90, $90, $90, $90,    $90
                    dc.b $90, $90, $90, $90, $90, $90, $90,    $90, $90, $90, $90, $90, $90, $90, $90,    $90
                    dc.b $90, $90, $90, $90, $90, $90, $90,    $90, $90, $90, $90, $90, $90, $90, $90,    $90
                    dc.b $90, $90, $90, $90, $90, $90, $90,    $90, $90, $90, $90, $90, $90, $90, $90,    $90
                    dc.b $90, $90, $90, $90, $90, $90, $90,    $90, $90, $90, $90, $90, $90, $90, $90,    $90
                    dc.b $90, $90, $90, $90, $90, $90, $90,    $90, $90, $90, $90, $90, $90, $90, $90,    $90
                    dc.b $90, $90, $90, $90, $90, $90, $90,    $90, $90, $90, $90, $90, $90, $90, $90,    $90
                    dc.b $90, $90, $90, $90, $90, $90, $90,    $90, $90, $90, $90, $90, $90, $90, $90,    $90
                    dc.b $90, $90, $90, $90, $90, $90, $90,    $90, $90, $90, $90, $90, $90, $90, $90,    $90
                    dc.b $90, $90, $90, $90, $90, $90, $90,    $90, $90, $90, $90, $90, $90, $90, $90,    $90
                    dc.b $90, $90, $90, $90, $90, $90, $90,    $90, $90, $90, $90, $90, $90, $90, $90,    $90
                    dc.b $90, $90, $90, $90, $90, $90, $90,    $90, $90, $90, $90, $90, $90, $90, $90,    $90
                    dc.b $90, $90, $90, $90, $90, $90, $90,    $90, $90, $90, $90, $90, $90, $90, $90,    $90
                    dc.b $90, $90, $90, $90, $90, $90, $90,    $90, $90, $90, $90, $90, $90, $90, $90, $90



    It should fix possible problems on play songs/sound effects and will not interfere the original songs and sound effects.


    Optional - Putting the default Sonic 1 songs at the $0X slots index

    Go to the index for songs $8X, MusicIndex:.
    Copy the pointers from it, remove them and paste it at the begin from the $0X slot index MusicIndex00: .


    Done.
  2. Sonic 2 sample in DCT?

    27 February 2009 - 12:30 AM

    Like we know, some Sonic 3 DAC samples are obtained from Michael Jackson songs, but what about Sonic 2? Some samples may have been used in Dreams Come True's songs?
    I've hear some DCT songs and I noticed a scratch in the song "Mitsubachi' that may have been put into Sonic 2.
    This RAR file contains the scratch from Sonic 2 (84.wav), the scratch from the music (MitsubachiScratch.wav) and a edited version from the scratch (MitsubachiScratchEdit.wav):
    http://www.hotshare....2728723c82.html
    In the edition, I changed the speed, apllied equalization and I reversed the sound.
  3. Dynamic tileset (One per act) in Sonic 1

    30 July 2008 - 11:50 PM

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



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

    ; ---------------------------------------------------------------------------
    ; Level
    ; ---------------------------------------------------------------------------
    
    Level:		; XREF: GameModeArray
    		bset	#7,($FFFFF600).w; add $80 to screen mode (for pre level sequence)
    		tst.w	($FFFFFFF0).w
    		bmi.s	loc_37B6
    		move.b	#$E0,d0
    		bsr.w	PlaySound_Special; fade out music
    
    loc_37B6:
    		bsr.w	ClearPLC
    		bsr.w	Pal_FadeFrom
    		tst.w	($FFFFFFF0).w
    		bmi.s	Level_ClrRam
    		move	#$2700,sr
    		move.l	#$70000002,($C00004).l
    		lea	(Nem_TitleCard).l,a0; load title card patterns
    		bsr.w	NemDec
    		move	#$2300,sr
    		moveq	#0,d0
    		move.b	($FFFFFE10).w,d0
    		lsl.w	#4,d0
    		lea	(MainLoadBlocks).l,a2
    		lea	(a2,d0.w),a2
    		moveq	#0,d0
    		move.b	(a2),d0
    		beq.s	loc_37FC
    		bsr.w	LoadPLC; load level patterns
    


    Change it to:

    ; ---------------------------------------------------------------------------
    ; Level
    ; ---------------------------------------------------------------------------
    
    Level:		; XREF: GameModeArray
    		bset	#7,($FFFFF600).w; add $80 to screen mode (for pre level sequence)
    		tst.w	($FFFFFFF0).w
    		bmi.s	loc_37B6
    		move.b	#$E0,d0
    		bsr.w	PlaySound_Special; fade out music
    
    loc_37B6:
    		bsr.w	ClearPLC
    		bsr.w	Pal_FadeFrom
    		tst.w	($FFFFFFF0).w
    		bmi.s	Level_ClrRam
    		move	#$2700,sr
    		move.l	#$70000002,($C00004).l
    		lea	(Nem_TitleCard).l,a0; load title card patterns
    		bsr.w	NemDec
    		move	#$2300,sr
    		moveq	#0,d0
    		move.b	($FFFFFE10).w,d0
    		lsl.w	#4,d0
    		cmpi.b	#2,($FFFFFE11).w; is level Act 3?
    		bne.s	CheckAct2	 ; if not, branch
    		lea	(MainLoadBlocks3).l,a2
    				jmp	 Level_3
    CheckAct2:
    		cmpi.b	#1,($FFFFFE11).w; is level Act 2?
    		bne.s	Level_2	 ; if not, branch
    		lea	(MainLoadBlocks2).l,a2
    				jmp	 Level_3
    Level_2:
    		lea	(MainLoadBlocks).l,a2
    Level_3:
    		lea	(a2,d0.w),a2
    		moveq	#0,d0
    		move.b	(a2),d0
    		beq.s	loc_37FC
    		bsr.w	LoadPLC; load level patterns
    


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

    Cred_ClrPallet:
    		move.l	d0,(a1)+
    		dbf	d1,Cred_ClrPallet; fill pallet	with black ($0000)
    
    		moveq	#3,d0
    		bsr.w	PalLoad1; load Sonic's pallet
    		move.b	#$8A,($FFFFD080).w; load credits object
    		jsr	ObjectsLoad
    		jsr	BuildSprites
    		bsr.w	EndingDemoLoad
    		moveq	#0,d0
    		move.b	($FFFFFE10).w,d0
    		lsl.w	#4,d0
    		lea	(MainLoadBlocks).l,a2;	load block mappings etc
    		lea	(a2,d0.w),a2
    		moveq	#0,d0
    		move.b	(a2),d0
    		beq.s	loc_5862
    		bsr.w	LoadPLC; load level patterns
    


    Change it to:

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


    Search for "MainLoadBlockLoad:", you will see:

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


    Change to:

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


    Search for "MainLoadBlocks:", you will see:

    ; ---------------------------------------------------------------------------
    ; Main level load blocks
    ; ---------------------------------------------------------------------------
    MainLoadBlocks:
    	include "_inc\Main level load blocks.asm"
    


    Change to:

    ; ---------------------------------------------------------------------------
    ; Main level load blocks
    ; ---------------------------------------------------------------------------
    MainLoadBlocks:
    	include "_inc\Main level load blocks.asm"
    MainLoadBlocks2:
    	include "_inc\Main level load blocks2.asm"
    MainLoadBlocks3:
    	include "_inc\Main level load blocks3.asm"
    



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

    ; ---------------------------------------------------------------------------
    ; Main level load blocks
    ;
    ; ===FORMAT===
    ; level	patterns + (1st	PLC num	* 10^6)
    ; 16x16	mappings + (2nd	PLC num	* 10^6)
    ; 256x256 mappings
    ; blank, music (unused), pal index (unused), pal index
    ; ---------------------------------------------------------------------------
    	dc.l Nem_GHZ_2nd+$4000000
    	dc.l Blk16_GHZ+$5000000
    	dc.l Blk256_GHZ
    	dc.b 0,	$81, 4,	4
    	dc.l Nem_LZ+$6000000
    	dc.l Blk16_LZ+$7000000
    	dc.l Blk256_LZ
    	dc.b 0,	$82, 5,	5
    	dc.l Nem_MZ+$8000000
    	dc.l Blk16_MZ+$9000000
    	dc.l Blk256_MZ
    	dc.b 0,	$83, 6,	6
    	dc.l Nem_SLZ+$A000000
    	dc.l Blk16_SLZ+$B000000
    	dc.l Blk256_SLZ
    	dc.b 0,	$84, 7,	7
    	dc.l Nem_SYZ+$C000000
    	dc.l Blk16_SYZ+$D000000
    	dc.l Blk256_SYZ
    	dc.b 0,	$85, 8,	8
    	dc.l Nem_SBZ+$E000000
    	dc.l Blk16_SBZ+$F000000
    	dc.l Blk256_SBZ
    	dc.b 0,	$86, 9,	9
    	dc.l Nem_GHZ_2nd; main load block for ending
    	dc.l Blk16_GHZ
    	dc.l Blk256_GHZ
    	dc.b 0,	$86, $13, $13
    	even
    


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

    ; ---------------------------------------------------------------------------
    ; Main level load blocks
    ;
    ; ===FORMAT===
    ; level	patterns + (1st	PLC num	* 10^6)
    ; 16x16	mappings + (2nd	PLC num	* 10^6)
    ; 256x256 mappings
    ; blank, music (unused), pal index (unused), pal index
    ; ---------------------------------------------------------------------------
    	dc.l Nem_GHZ2_2nd+$4000000
    	dc.l Blk16_GHZ2+$5000000
    	dc.l Blk256_GHZ2
    	dc.b 0,	$81, 4,	4
    	dc.l Nem_LZ2+$6000000
    	dc.l Blk16_LZ2+$7000000
    	dc.l Blk256_LZ2
    	dc.b 0,	$82, 5,	5
    	dc.l Nem_MZ2+$8000000
    	dc.l Blk16_MZ2+$9000000
    	dc.l Blk256_MZ2
    	dc.b 0,	$83, 6,	6
    	dc.l Nem_SLZ2+$A000000
    	dc.l Blk16_SLZ2+$B000000
    	dc.l Blk256_SLZ2
    	dc.b 0,	$84, 7,	7
    	dc.l Nem_SYZ2+$C000000
    	dc.l Blk16_SYZ2+$D000000
    	dc.l Blk256_SYZ2
    	dc.b 0,	$85, 8,	8
    	dc.l Nem_SBZ2+$E000000
    	dc.l Blk16_SBZ2+$F000000
    	dc.l Blk256_SBZ2
    	dc.b 0,	$86, 9,	9
    	dc.l Nem_GHZ2_2nd; main load block for ending
    	dc.l Blk16_GHZ2
    	dc.l Blk256_GHZ2
    	dc.b 0,	$86, $13, $13
    	even
    


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

    ; ---------------------------------------------------------------------------
    ; Main level load blocks
    ;
    ; ===FORMAT===
    ; level	patterns + (1st	PLC num	* 10^6)
    ; 16x16	mappings + (2nd	PLC num	* 10^6)
    ; 256x256 mappings
    ; blank, music (unused), pal index (unused), pal index
    ; ---------------------------------------------------------------------------
    	dc.l Nem_GHZ3_2nd+$4000000
    	dc.l Blk16_GHZ3+$5000000
    	dc.l Blk256_GHZ3
    	dc.b 0,	$81, 4,	4
    	dc.l Nem_LZ3+$6000000
    	dc.l Blk16_LZ3+$7000000
    	dc.l Blk256_LZ3
    	dc.b 0,	$82, 5,	5
    	dc.l Nem_MZ3+$8000000
    	dc.l Blk16_MZ3+$9000000
    	dc.l Blk256_MZ3
    	dc.b 0,	$83, 6,	6
    	dc.l Nem_SLZ3+$A000000
    	dc.l Blk16_SLZ3+$B000000
    	dc.l Blk256_SLZ3
    	dc.b 0,	$84, 7,	7
    	dc.l Nem_SYZ3+$C000000
    	dc.l Blk16_SYZ3+$D000000
    	dc.l Blk256_SYZ3
    	dc.b 0,	$85, 8,	8
    	dc.l Nem_SBZ3+$E000000
    	dc.l Blk16_SBZ3+$F000000
    	dc.l Blk256_SBZ3
    	dc.b 0,	$86, 9,	9
    	dc.l Nem_GHZ3_2nd; main load block for ending
    	dc.l Blk16_GHZ3
    	dc.l Blk256_GHZ3
    	dc.b 0,	$86, $13, $13
    	even
    


    Search for "Blk16_GHZ:", you will see:

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


    Change to:

    ; ---------------------------------------------------------------------------
    ; Compressed graphics - primary patterns and block mappings
    ; ---------------------------------------------------------------------------
    Blk16_GHZ:	incbin	map16\ghz.bin
    		even
    Nem_GHZ_1st:	incbin	artnem\8x8ghz1.bin; GHZ primary patterns
    		even
    Nem_GHZ_2nd:	incbin	artnem\8x8ghz2.bin; GHZ secondary patterns
    		even
    Blk256_GHZ:	incbin	map256\ghz.bin
    		even
    Blk16_LZ:	incbin	map16\lz.bin
    		even
    Nem_LZ:		incbin	artnem\8x8lz.bin; LZ primary patterns
    		even
    Blk256_LZ:	incbin	map256\lz.bin
    		even
    Blk16_MZ:	incbin	map16\mz.bin
    		even
    Nem_MZ:		incbin	artnem\8x8mz.bin; MZ primary patterns
    		even
    Blk256_MZ:	incbin	map256\mz.bin
    		even
    Blk16_SLZ:	incbin	map16\slz.bin
    		even
    Nem_SLZ:	incbin	artnem\8x8slz.bin; SLZ primary patterns
    		even
    Blk256_SLZ:	incbin	map256\slz.bin
    		even
    Blk16_SYZ:	incbin	map16\syz.bin
    		even
    Nem_SYZ:	incbin	artnem\8x8syz.bin; SYZ primary patterns
    		even
    Blk256_SYZ:	incbin	map256\syz.bin
    		even
    Blk16_SBZ:	incbin	map16\sbz.bin
    		even
    Nem_SBZ:	incbin	artnem\8x8sbz.bin; SBZ primary patterns
    		even
    Blk256_SBZ:	incbin	map256\sbz.bin
    		even
    ; ---------------------------------------------------------------------------
    ; Act2
    ; ---------------------------------------------------------------------------
    Blk16_GHZ2:	incbin	map16\ghz2.bin
    		even
    Nem_GHZ2_1st:	incbin	artnem\8x8ghz12.bin; GHZ primary patterns
    		even
    Nem_GHZ2_2nd:	incbin	artnem\8x8ghz22.bin; GHZ secondary patterns
    		even
    Blk256_GHZ2:	incbin	map256\ghz2.bin
    		even
    Blk16_LZ2:	incbin	map16\lz2.bin
    		even
    Nem_LZ2:	incbin	artnem\8x8lz2.bin; LZ primary patterns
    		even
    Blk256_LZ2:	incbin	map256\lz2.bin
    		even
    Blk16_MZ2:	incbin	map16\mz2.bin
    		even
    Nem_MZ2:	incbin	artnem\8x8mz2.bin; MZ primary patterns
    		even
    Blk256_MZ2:	incbin	map256\mz2.bin
    		even
    Blk16_SLZ2:	incbin	map16\slz2.bin
    		even
    Nem_SLZ2:	incbin	artnem\8x8slz2.bin; SLZ primary patterns
    		even
    Blk256_SLZ2:	incbin	map256\slz2.bin
    		even
    Blk16_SYZ2:	incbin	map16\syz2.bin
    		even
    Nem_SYZ2:	incbin	artnem\8x8syz2.bin; SYZ primary patterns
    		even
    Blk256_SYZ2:	incbin	map256\syz2.bin
    		even
    Blk16_SBZ2:	incbin	map16\sbz2.bin
    		even
    Nem_SBZ2:	incbin	artnem\8x8sbz2.bin; SBZ primary patterns
    		even
    Blk256_SBZ2:	incbin	map256\sbz2.bin
    		even
    ; ---------------------------------------------------------------------------
    ; Act3
    ; ---------------------------------------------------------------------------
    Blk16_GHZ3:	incbin	map16\ghz3.bin
    		even
    Nem_GHZ3_1st:	incbin	artnem\8x8ghz13.bin; GHZ primary patterns
    		even
    Nem_GHZ3_2nd:	incbin	artnem\8x8ghz23.bin; GHZ secondary patterns
    		even
    Blk256_GHZ3:	incbin	map256\ghz3.bin
    		even
    Blk16_LZ3:	incbin	map16\lz3.bin
    		even
    Nem_LZ3:	incbin	artnem\8x8lz3.bin; LZ primary patterns
    		even
    Blk256_LZ3:	incbin	map256\lz3.bin
    		even
    Blk16_MZ3:	incbin	map16\mz3.bin
    		even
    Nem_MZ3:	incbin	artnem\8x8mz3.bin; MZ primary patterns
    		even
    Blk256_MZ3:	incbin	map256\mz3.bin
    		even
    Blk16_SLZ3:	incbin	map16\slz3.bin
    		even
    Nem_SLZ3:	incbin	artnem\8x8slz3.bin; SLZ primary patterns
    		even
    Blk256_SLZ3:	incbin	map256\slz3.bin
    		even
    Blk16_SYZ3:	incbin	map16\syz3.bin
    		even
    Nem_SYZ3:	incbin	artnem\8x8syz3.bin; SYZ primary patterns
    		even
    Blk256_SYZ3:	incbin	map256\syz3.bin
    		even
    Blk16_SBZ3:	incbin	map16\sbz3.bin
    		even
    Nem_SBZ3:	incbin	artnem\8x8sbz3.bin; SBZ primary patterns
    		even
    Blk256_SBZ3:	incbin	map256\sbz3.bin
    		even
    


    Create copies of this files, renaming to "2" and "3". Example: Creating 2 copies of the file 8x8ghz.bin and renaming the first copy to 8x8ghz11.bin, and the second one to 8x8ghz12.bin
    If you have this original files unchanged and don't want to rename, you can download it here:
    http://www.hotshare....32202158af.html
    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.
  4. How to restore FBZ in Sonic 3

    25 July 2008 - 11:05 PM

    This will restore pallete, tiles (8x8), mappings (16x16, 128x128), layout, collision, rings and some sprites...

    Thanks to:
    Erik JS - for helping me with layout.
    Nemesis' Sonic 3 Hacking Guide.

    -----------------------------------------------------------
    You will need:
    A Sonic 3 ROM. =P
    A Sonic 3C Prototype 0408 ROM.
    A Sonic 3 & Knuckles ROM.
    Hexadecimal editor with Copy/Paste option
    -----------------------------------------------------------

    Before we start, you must add $400 bytes to the end of Sonic 3.

    Copy the following data from Sonic 3 & Knuckles and add it to the end of Sonic 3:

    Rings (Act1) -> $1EDA10 - $1EDEC5
    Rings (Act2) -> $1EDEC2 - $1F61FB
    Layout (Act1) -> $09D680 - $09E427
    Layout (Act2) -> $09E428 - $09F3B5
    Pallete -> $0A909C - $0A90FB
    8x8 tiles -> $195040 - $1974A1
    16x16 mappings -> $194400 - $19503F
    128x128 mappings -> $1974A2 - $1A3567

    The collision format is diferent between Sonic 3 and Sonic 3 & Knuckles, but this format is same as in S3CProto 0408. The location of FBz collision in S3C 0408 ranges from $18AA60 to $18B65F.
    -----------------------------------------------------------
    To restore rings:
    -----------------------------------------------------------
    Flying Battery Act1 uses some strange rings, located in adress $0660AC...
    Go to $05E1B9, replace 0660AC to adress that you added data for Flying Battery Act1 rings.
    Go to $05E1BD, replace 0660D4 to adress that you added data for Flying Battery Act2 rings.
    -----------------------------------------------------------
    To restore layout:
    -----------------------------------------------------------
    The pointers of Flying Battery Act1 and 2 layouts points to adress of Icecap Act1 layout.
    Go to $081381, replace 08793A to adress of you added Flying Battery Act1 layout.
    Go to $081385, replace 08793A to adress of you added Flying Battery Act2 layout.
    -----------------------------------------------------------
    To restore pallete:
    -----------------------------------------------------------
    The pointer of FBz pallete is located in $08BFE5 and $08BFED. And it points to
    adress of Icecap Act1 pallete.
    Replace 08C894 to adress of you added data from FBz pallete.
    -----------------------------------------------------------
    To restore 8x8 tiles:
    -----------------------------------------------------------
    The pointers of tiles and mappings of Flying Battery points to adress of 16x16 mappings of Icecap ($1D3FB6).
    Go to $05ABCD, $05ABD1, $05ABE5 and $05ABE9, replace 1D3FB6 to adress of you added 8x8 tiles of Flying Battery.
    -----------------------------------------------------------
    To restore 16x16 mappings:
    -----------------------------------------------------------
    Go to $05ABD5, $05ABD9, $05ABED and $05ABF1, replace 1D3FB6 to adress of you added 16x16 mappings.
    of Flying Battery.
    -----------------------------------------------------------
    To restore 128x128 mappings:
    -----------------------------------------------------------
    Go to $05ABDD, $05ABE1, $05ABF5, $05ABF9, replace 1D3FB6 to adress of you added 128x128 mappings.
    -----------------------------------------------------------
    To restore collision:
    -----------------------------------------------------------
    The pointer of Flying Battery collision in Sonic 3 points to adress of Icecap collision.
    Go to $0746C1 and $0746C5, replace 079B60 to adress of you added collision of Flying Battery.
    -----------------------------------------------------------
    Sprite restoring:
    -----------------------------------------------------------
    To restore sprites programming, just copy from S3K, paste to Sonic 3, and fix some pointers.
    Here are some sprite locations of Flying Battery sprites:
    -----------------------------------------------------------
    $6F -> 039F2E - 03A239
    $70 -> 03A23A - 03A57F
    $71 -> 03A580 - 03A7CB
    $72 -> 03A7CC - 03B0E1
    $73 -> 03B0E2 - 03B2F5
    $74 -> 03B2F6 - 03B533
    $75 -> 03B534 - 03B6DD
    $76 -> 03B6DE - 03B765
    $77 -> 03B766 - 03B933
    $78 -> 03B934 - 03BAB1
    $79 -> 03BAB2 - 03BBED
    $7A -> 03BBEE - 03BF55
    $7B -> 03BF56 - 03C1A5
    $7C -> 03C1A6 - 03C25B
    $7D -> 03C25C - 03C34B
    $7E -> 03C34C - 03C461
    -----------------------------------------------------------
    To fix sprite $6F:
    The pointers in this sprite are:
    -----------------------------------------------------------
    $27
    $4D
    $C5
    $D7
    $14D
    $1A5
    $1BF
    $2B7

    And these pointers points to there adress:

    $27 -> $039F58
    $4D -> $01B5D4
    $C5 -> $01E490
    $D7 -> $00157C
    $14D -> $001D4C
    $1A5 -> $01B5D4
    $1BF -> $006400
    $2B7 -> $001D4C

    The pointer located in adress $27 points to $2A in sprite, to fix this pointer, replace 039F58 to 2A + adress of you added this sprite programming.
    To fix another pointers, replace adress to referent adress in Sonic 3. Example: the pointer $4D points to adress $01B5D4, the referent adress in Sonic 3 is $019C36.
    Here are the adress:

    Sonic 3K Sonic 3
    $01B5D4 $019C36
    $01E490 $01C136
    $00157C $001806
    $001D4C $001FD4
    $01B5D4 $019C36
    $006400 $004A08
    $001D4C $001FD4

    After fixing this pointers, just copy and paste in Sonic 3.
    I will try to restore the other sprites later...
    And to restore Flying Battery in level select, go to $006A9E, replace 55555555 to 04000401 (Flying Battery Act1 and Act2).
  5. FBz cannon badnick comparison

    13 July 2008 - 01:18 AM

    The cannon badnick from Flying Battery of Sonic 3 is diferrent of Sonic 3 & Knuckles. There's a possible prototype of this badnick?

    Posted Image

    Posted Image

Friends