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

Jump to content

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

Group:
Member: Members
Active Posts:
490 (0.12 per day)
Most Active In:
Engineering & Reverse Engineering (157 posts)
Joined:
21-December 03
Profile Views:
13325
Last Active:
User is offline Private
Currently:
Offline

My Information

Member Title:
Jack-O is her name-o!
Age:
22 years old
Birthday:
January 24, 1993
Gender:
Male Male
Location:
Oklahoma

Contact Information

E-mail:
Click here to e-mail me
AIM:
AIM  MikelSonicFan
Website:
Website  http://twitch.tv/MikelAL93
Skype:
Skype  TheOneEyedDragon

Previous Fields

Other Contact Info:
#retro, PSN: Mikel93, GGPO: MikelAL93
Project:
MUGEN Stuff
National Flag:
us
Wiki edits:
2,699
SA2 Emblems:
1

Latest Visitors

Topics I've Started

  1. Sonic Anniversary Celebrations thread

    23 June 2011 - 12:06 AM

    Twenty years ago, on June 23, 1991, Sonic the Hedgehog 1 was released on the Genesis, and it marked the beginning of one of my favorite franchises as a kid (I still love Sonic to this day, by the way). Happy 20th Birthday, Sonic! Let's hope this year will be your best!

    What are you going to do for Sonic's birthday today? I know what I'm doing, I'm going to do some online races in Sonic & Sega All-Stars Racing, as well as replaying through levels in Sonic Colors, as I am trying to get a couple of S Ranks in the game myself.
  2. How to seperate Super Sonic's mappings from Sonic's mappings

    08 June 2010 - 02:11 PM

    As you can see in Stealth's Sonic and Knuckles disassembly, Sonic's mappings and PLCs have been seperated from Super Sonic's mappings and PLCs, while Sonic 2 has Super Sonic and Sonic's PLCs and mappings together in two different files, a mappings file, and a PLC file.

    To seperate Super Sonic's mappings/PLCs with Sonic's mappings/PLCs, do the following steps as described here:

    First, go to "Sonic_Super:"

    Syntax Highlighted Code: ASM
    Sonic_Super:
    tst.b (Super_Sonic_flag).w ; Ignore all this code if not Super Sonic
    beq.w return_1AC3C
    tst.b (Update_HUD_timer).w
    beq.s Sonic_RevertToNormal ; ?
    subq.w #1,(Super_Sonic_frame_count).w
    bpl.w return_1AC3C
    move.w #60,(Super_Sonic_frame_count).w ; Reset frame counter to 60
    tst.w (Ring_count).w
    beq.s Sonic_RevertToNormal
    ori.b #1,(Update_HUD_rings).w
    cmpi.w #1,(Ring_count).w
    beq.s +
    cmpi.w #10,(Ring_count).w
    beq.s +
    cmpi.w #100,(Ring_count).w
    bne.s ++
    +
    ori.b #$80,(Update_HUD_rings).w
    +
    subq.w #1,(Ring_count).w
    bne.s return_1AC3C

    Replace it with this:

    Syntax Highlighted Code: ASM
    Sonic_Super:
    tst.b (Super_Sonic_flag).w ; Ignore all this code if not Super Sonic
    beq.w return_1AC3C
    tst.b (Update_HUD_timer).w
    beq.s Sonic_RevertToNormal ; ?
    tst.b (Super_Sonic_flag).w; switch on the super sonic flag
    move.l #Mapunc_SuperSonic,mappings(a0) ; load Super Sonic's art
    bra.w ContSonic_Super ; branch to rest of code
    ContSonic_Super:
    subq.w #1,(Super_Sonic_frame_count).w
    bpl.w return_1AC3C
    move.w #60,(Super_Sonic_frame_count).w ; Reset frame counter to 60
    tst.w (Ring_count).w
    beq.s Sonic_RevertToNormal
    ori.b #1,(Update_HUD_rings).w
    cmpi.w #1,(Ring_count).w
    beq.s +
    cmpi.w #10,(Ring_count).w
    beq.s +
    cmpi.w #100,(Ring_count).w
    bne.s ++
    +
    ori.b #$80,(Update_HUD_rings).w
    +
    subq.w #1,(Ring_count).w
    bne.s return_1AC3C

    This will make sure if Super Sonic will run his own mappings and animation script instead of using Sonic's mappings with a different animation script.

    Then, go to "loc_41C56:"

    Syntax Highlighted Code: ASM
    loc_41C56:
    btst #4,(Ctrl_1_Press).w
    beq.s return_41CB6
    moveq #0,d0
    move.w d0,(Debug_placement_mode).w
    lea (MainCharacter).w,a1 ; a1=character
    move.l #Mapunc_Sonic,mappings(a1)
    move.w #$780,art_tile(a1)
    tst.w (Two_player_mode).w
    beq.s loc_41C82
    move.w #$3C0,art_tile(a1)

    Then replace it with this:

    Syntax Highlighted Code: ASM
    loc_41C56:
    btst #4,(Ctrl_1_Press).w
    beq.s return_41CB6
    moveq #0,d0
    move.w d0,(Debug_placement_mode).w
    lea (MainCharacter).w,a1 ; a1=character
    tst.b (Super_Sonic_flag).w
    bne.w SuperSonicDebugMappings
    move.l #Mapunc_Sonic,mappings(a1)
    move.w #$780,art_tile(a1)
    tst.w (Two_player_mode).w
    beq.s loc_41C82
    move.w #$3C0,art_tile(a1)
     
    SuperSonicDebugMappings:
    move.l #Mapunc_SuperSonic,mappings(a1)
    move.w #$780,art_tile(a1)
    tst.w (Two_player_mode).w
    beq.s loc_41C82
    move.w #$3C0,art_tile(a1)

    This will make sure that whenever you are either Sonic or Super Sonic using the game's debug mode by pressing the B button to enter object placement mode, then pressing the button again whenever you are either Sonic or Super Sonic, either character's mappings will appear. Say if you are playing as Super Sonic, press B to enter object placement mode, press it again, then you will have Super Sonic mappings instead of Sonic's regular mappings.

    Then, go to "LoadSonicDynPLC_Part2:"

    Syntax Highlighted Code: ASM
    LoadSonicDynPLC_Part2:
    cmp.b ($FFFFF766).w,d0
    beq.s return_1B89A
    move.b d0,($FFFFF766).w
    lea (MapRUnc_Sonic).l,a2
    add.w d0,d0
    adda.w (a2,d0.w),a2
    move.w (a2)+,d5
    subq.w #1,d5
    bmi.s return_1B89A
    move.w #-$1000,d4

    Change it to this:

    Syntax Highlighted Code: ASM
    LoadSonicDynPLC_Part2:
    cmp.b ($FFFFF766).w,d0
    beq.s return_1B89A
    move.b d0,($FFFFF766).w
    cmpi.b #1,(Super_Sonic_flag).w; switch on the super sonic flag
    beq.s SonicPLCLoad ; if not, load Sonic's art
    lea (MapRUnc_Sonic).l,a2 ; load Sonic's art
    bra.s ContLoadPLC ; branch to rest of code
    SonicPLCLoad:
    cmpi.b #0,(Super_Sonic_flag).w; switch off the super sonic flag
    beq.s SonicPLCLoad2 ; if not, load Sonic's art
    lea (MapRUnc_SuperSonic).l,a2 ; load Super Sonic's art
    bra.s ContLoadPLC ; branch to rest of code
    SonicPLCLoad2:
    lea (MapRUnc_Sonic).l,a2
    ContLoadPLC:
    add.w d0,d0
    adda.w (a2,d0.w),a2
    move.w (a2)+,d5
    subq.w #1,d5
    bmi.s return_1B89A
    move.w #-$1000,d4

    This will make sure that Super Sonic will have his own PLCs whenever the player is playing as Super Sonic.

    Then, add this line under "Mapunc_Sonic:"

    Syntax Highlighted Code: ASM
    ;--------------------------------------------------------------------------------------
    ; Sprite Mappings
    ; Super Sonic ; MapUnc_6FBE0: SprTbl_Sonic:
    ;--------------------------------------------------------------------------------------
    Mapunc_SuperSonic: BINCLUDE "mappings/sprite/Super Sonic.bin"

    Add this one under "MapRUnc_Sonic:"

    Syntax Highlighted Code: ASM
    ;--------------------------------------------------------------------------------------
    ; Sprite Dynamic Pattern Reloading
    ; Super Sonic DPLCs ; MapRUnc_714E0:
    ;--------------------------------------------------------------------------------------
    ; WARNING: the build script needs editing if you rename this label
    ; or if you move Sonic's running frame to somewhere else than frame $2D
    MapRUnc_SuperSonic: BINCLUDE "mappings/spriteDPLC/Super Sonic.bin"

    These files will make sure that Super Sonic does indeed, have his own mappings and PLCs.

    Next, go to "SAnim_WalkRun:" and take a look at this line:

    Syntax Highlighted Code: ASM
    	tst.b	(Super_Sonic_flag).w
    bne.s SAnim_Super
    lea (SonAni_Run).l,a1 ; use running animation
    cmpi.w #$600,d2 ; is Sonic at running speed?
    bcc.s + ; use running animation
    lea (SonAni_Walk).l,a1 ; if yes, branch
    add.b d0,d0

    Remove the following lines:

    Syntax Highlighted Code: ASM
    	tst.b	(Super_Sonic_flag).w
    bne.s SAnim_Super

    They need to be removed because they will load the corkscrew animations with Super Sonic's walking/running sprites.

    Lastly, you can now copy and paste Sonic's animations for Walking, Running, and Pushing from Sonic's anmation script:

    Syntax Highlighted Code: ASM
    ; ---------------------------------------------------------------------------
    ; Animation script - Super Sonic
    ; (many of these point to the data above this)
    ; ---------------------------------------------------------------------------
    SuperSonicAniData:
    dc.w SupSonAni_Walk - SuperSonicAniData ; 0
    dc.w SupSonAni_Run - SuperSonicAniData ; 1
    dc.w SonAni_Roll - SuperSonicAniData ; 2
    dc.w SonAni_Roll2 - SuperSonicAniData ; 3
    dc.w SupSonAni_Push - SuperSonicAniData ; 4
    dc.w SupSonAni_Stand - SuperSonicAniData ; 5
    dc.w SupSonAni_Balance - SuperSonicAniData ; 6
    dc.w SonAni_LookUp - SuperSonicAniData ; 7
    dc.w SupSonAni_Duck - SuperSonicAniData ; 8
    dc.w SonAni_Spindash - SuperSonicAniData ; 9
    dc.w SonAni_Blink - SuperSonicAniData ; 10 ; $A
    dc.w SonAni_GetUp - SuperSonicAniData ; 11 ; $B
    dc.w SonAni_Balance2 - SuperSonicAniData ; 12 ; $C
    dc.w SonAni_Stop - SuperSonicAniData ; 13 ; $D
    dc.w SonAni_Float - SuperSonicAniData ; 14 ; $E
    dc.w SonAni_Float2 - SuperSonicAniData ; 15 ; $F
    dc.w SonAni_Spring - SuperSonicAniData ; 16 ; $10
    dc.w SonAni_Hang - SuperSonicAniData ; 17 ; $11
    dc.w SonAni_Dash2 - SuperSonicAniData ; 18 ; $12
    dc.w SonAni_Dash3 - SuperSonicAniData ; 19 ; $13
    dc.w SonAni_Hang2 - SuperSonicAniData ; 20 ; $14
    dc.w SonAni_Bubble - SuperSonicAniData ; 21 ; $15
    dc.w SonAni_DeathBW - SuperSonicAniData ; 22 ; $16
    dc.w SonAni_Drown - SuperSonicAniData ; 23 ; $17
    dc.w SonAni_Death - SuperSonicAniData ; 24 ; $18
    dc.w SonAni_Hurt - SuperSonicAniData ; 25 ; $19
    dc.w SonAni_Hurt - SuperSonicAniData ; 26 ; $1A
    dc.w SonAni_Slide - SuperSonicAniData ; 27 ; $1B
    dc.w SonAni_Blank - SuperSonicAniData ; 28 ; $1C
    dc.w SonAni_Balance3 - SuperSonicAniData ; 29 ; $1D
    dc.w SonAni_Balance4 - SuperSonicAniData ; 30 ; $1E
    dc.w SupSonAni_Transform - SuperSonicAniData ; 31 ; $1F
     
    SupSonAni_Walk: dc.b $FF, $F,$10,$11,$12,$13,$14, $D, $E,$FF
    SupSonAni_Run: dc.b $FF,$2D,$2E,$2F,$30,$FF,$FF,$FF,$FF,$FF
    SupSonAni_Push: dc.b $FD,$48,$49,$4A,$4B,$FF,$FF,$FF,$FF,$FF
    SupSonAni_Stand: dc.b 7,1,2,3,2,$FF
    SupSonAni_Balance: dc.b 9,$C8,$C9,$CA,$C9,$CB,$CC,$CD,$CC,$FF
    SupSonAni_Duck: dc.b 5,$4C,$FF
    SupSonAni_Transform: dc.b 2,$6D,$6D,$6E,$6E,$6F,$70,$71,$70,$71,$70,$71,$70,$71,$FD, 0
    even

    This method will let Super Sonic use Sonic's regular walking, running, pushing, standing/wait, balancing and ducking sprite mappings and PLCs instead of using his own.

    And here are the files:

    http://www.fileden.com/files/2007/2/10/758...appingsPLCs.rar

    Note: The sprites used in the mappings are the same as the regular Sonic 2 Super Sonic sprites.

    That's all for now, I will cover how to seperate his sprites from Sonic's sprites soon.
  3. How to Expand the music index to start at $00 instead of $80

    03 January 2010 - 08:23 PM

    Well, since Tweaker released the Sonic 2 Clone Driver, I might as well post this guide that I had to keep private since May 26, 2009.

    NOTE: First off, Credit HPZMan for the Original Guide he made for Sonic 1, which can be found at SCHG:How-to:Expand the music index to start at $00 instead of $80

    Second of all, you need to have the Sonic 2 Clone Driver in your hack, to get the Clone Driver, go to this topic, this requires the Sonic 1 Sound Driver to be installed in your Sonic 2 hack first.

    First, go to "PlayMusic:"

    You will see something like this:

    Syntax Highlighted Code: ASM
     
    PlayMusic:
    ; tst.b ($FFFFFFE0).w
    ; bne.s +
    ; move.b d0,($FFFFFFE0).w
    move.b d0,($FFFFF00A).w
    rts
    +
    move.b d0,($FFFFF00A).w
    rts
     

    Change it to:

    Syntax Highlighted Code: ASM
     
    PlayMusic:
    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 you get slot that starts in $81
    move.b #$01, ($FFFFFFFC) .w; $FFFFFC moves $01 you you make sound to driver load secound index
    NormalSoundRequest:
    move.b d0, ($FFFFF00A) .w
    rts
     

    Then, go to "PlaySound:".

    You will see something like this:

    Syntax Highlighted Code: ASM
     
    PlaySound:
    move.b d0,($FFFFF00B).w
    rts
     

    Change it to:

    Syntax Highlighted Code: ASM
     
    PlaySound:
    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 you get slot that starts in $81
    move.b #$01, ($FFFFFFFC) .w; $FFFFFC moves $01 you you make sound to driver load secound index
    NormalSoundRequest_Special:
    move.b d0, ($FFFFF00B) .w
    rts
     

    Then, go to "loc_7202C:"

    You will see something like this:

    Syntax Highlighted Code: ASM
     
    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 it to:

    Syntax Highlighted Code: ASM
     
    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, ($FFFFFFFC) .w
    bne.s NormalIndexLoad
    movea.l (Go_MusicIndex_01to1F) .l, a4
    NormalIndexLoad:
    clr.w ($FFFFFFFC) .w
     

    Then, search for "Go_MusicIndex:"

    You will see something like this:

    Syntax Highlighted Code: ASM
     
    Go_MusicIndex: dc.l MusicIndex ; XREF: Sound_81to9F
     

    Add this below "Go_MusicIndex:":

    Syntax Highlighted Code: ASM
     
    Go_MusicIndex_01to1F: dc.l MusicIndex_01plus
     

    Then, go to "MusicIndex:"

    You will see something like this:

    Syntax Highlighted Code: ASM
     
    MusicIndex: dc.l Music81, Music82
    dc.l Music83, Music84
    dc.l Music85, Music86
    dc.l Music87, Music88
    dc.l Music89, Music8A
    dc.l Music8B, Music8C
    dc.l Music8D, Music8E
    dc.l Music8F, Music90
    dc.l Music91, Music92
    dc.l Music93, Music94
    dc.l Music95, Music96
    dc.l Music97, Music98
    dc.l Music99, Music9A
    dc.l Music9B, Music9C
    dc.l Music9D, Music9E
    dc.l Music9F
     

    Then, add this below "MusicIndex:"

    Syntax Highlighted Code: ASM
     
    MusicIndex_01plus:
    dc.l Music01, Music02
     

    The "dc.l Music01, Music02" is basically an example of what music slots you should use for Slots $01 to any number you want to stop at

    Then, go to "Sound_ChkValue:"

    You should see something like this:

    Syntax Highlighted Code: ASM
     
    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 #$E0,d7
    bge.s Sound_E0plus
    Sound_ChkValue_OtherChecks:
    cmpi.b #$FF,d7
    bge.s Sound_E0toF8
    cmpi.b #$9F,d7
    ble.w Sound_81To9F
    cmpi.b #$F0,d7
    ble.w Sound_A0ToCF
    cmpi.b #$F9,d7
    bge.w Sound_E0toE4
     

    Change it to:

    Syntax Highlighted Code: ASM
     
    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 #$E0,d7
    bge.s Sound_E0plus
    cmpi.b #$01, ($FFFFFFFC) .w
    bne.s Load81to9F
    jmp Sound_ChkValueFor00
    Load81to9F:
    cmpi.b #$9F, d7
    bls.w Sound_81to9F; music $81-$9F
    Sound_ChkValue_OtherChecks:
    cmpi.b #$FF,d7
    bge.s Sound_E0toF8
    cmpi.b #$F0,d7
    ble.w Sound_A0ToCF
    cmpi.b #$F9,d7
    bge.w Sound_E0toE4
     

    Now, go to "Sound_81to9F:", and change it to this:

    Syntax Highlighted Code: ASM
     
    Sound_ChkValueFor00:
    cmpi.b #$FF, d7; $FF = Last slot will be musics in index $00 - $7F ($FF = $7F)
    bls.w Sound_81to9F
    rts
     
     
    Sound_81to9F: ; XREF: Sound_ChkValue
    cmpi.b #$98,d7 ; is "extra life" music played?
    bne.s loc_72024 ; if not, branch
    tst.b $27(a6)
    bne.w loc_721B6
    lea $40(a6),a5
    moveq #9,d0
     

    Finally, we are going to Change the number of sound test slots in the options menu

    Go to "word_917A:"

    You will see something like this:

    Syntax Highlighted Code: ASM
     
    dc.w $7FFF ; 4
    dc.w Sound_test_sound ; 5
     

    Change the "$7" in "$7FFF" to anything you like, like "$FFFF", or "$CFFF"

    That's all for now, I will cover Level Select Sound Test Slot expansion soon.
  4. Mikel's Unnamed Sonic 3K hack

    25 October 2009 - 07:28 PM

    Well, many of you know that I am working on a Sonic 2 hack named Sonic Zeta Overdrive, but I am also working on a hack of Sonic 3K, so far, I have changed the palettes for a couple of the zones, I will also include Layout and Special Stage edits, and when Varion releases his Sonic 3K split disassembly in the future, I will do ASM edits, like adding the Jump Dash and Light Dash, and adding the Sonic 1 Sound Driver to Sonic 3K.

    Here are some screenshots:




    Mushroom Hill Zone at Day (Act 1):


    Mushroom Hill Zone at Evening (Act 2):


    These are all the screenshots I can offer, more screenshots are coming soon, Comments, Name suggestions, and Criticism are welcome.
  5. How to add Dynamic Palettes in Sonic 2 SMS

    22 February 2009 - 08:48 PM

    I would like to thank Glitch for both, the Sonic 2 SMS disassembly, and the program Aspect Edit.

    Ok, if you have been playing Sonic 2 SMS in the past, you may notice that four zones in the game lack the use of Dynamic Palettes, as only three of the zones in the original game use them. The four zones that lacked Dynamic Palettes were:

    Underground Zone, Green Hills Zone, Gimmick Mountain Zone and Scrambled Egg Zone.

    So, if you want to add Dynamic Palettes for those four zones in Sonic 2 SMS, follow these instrcutions below:

    First, go to LevelPaletteValues in the Sonic 2 SMS disassembly, located in src/s2.asm, and you will get something like this:
    Syntax Highlighted Code: ASM
    LevelPaletteValues:
    .[color= #00CC66;]db[/color] [color= #ff0000;]$[/color][color= #ff0000;]0E[/color], [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]09[/color][/color]
    .[color= #00CC66;]db[/color] [color= #ff0000;]$[/color][color= #ff0000;]0E[/color], [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]09[/color][/color]
    .[color= #00CC66;]db[/color] [color= #ff0000;]$[/color][color= #ff0000;]0E[/color], [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]09[/color][/color]
    [color= #adadad; font-style: italic;];shz[/color]
    .[color= #00CC66;]db[/color] [color= #ff0000;]$[/color][color= #ff0000;]0F[/color], [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]05[/color][/color]
    .[color= #00CC66;]db[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]10[/color][/color], [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]06[/color][/color]
    .[color= #00CC66;]db[/color] [color= #ff0000;]$[/color][color= #ff0000;]0F[/color], [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]05[/color][/color]
    [color= #adadad; font-style: italic;];alz[/color]
    .[color= #00CC66;]db[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]11[/color][/color], [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]07[/color][/color]
    .[color= #00CC66;]db[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]12[/color][/color], [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]08[/color][/color]
    .[color= #00CC66;]db[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]11[/color][/color], [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]07[/color][/color]
    [color= #adadad; font-style: italic;];ghz[/color]
    .[color= #00CC66;]db[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]13[/color][/color], [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]04[/color][/color]
    .[color= #00CC66;]db[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]13[/color][/color], [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]04[/color][/color]
    .[color= #00CC66;]db[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]13[/color][/color], [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]04[/color][/color]
     
    .[color= #00CC66;]db[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]14[/color][/color], [color= #ff0000;]$[/color][color= #ff0000;]0A[/color]
    .[color= #00CC66;]db[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]14[/color][/color], [color= #ff0000;]$[/color][color= #ff0000;]0A[/color]
    .[color= #00CC66;]db[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]14[/color][/color], [color= #ff0000;]$[/color][color= #ff0000;]0A[/color]
     
    .[color= #00CC66;]db[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]15[/color][/color], [color= #ff0000;]$[/color][color= #ff0000;]0B[/color]
    .[color= #00CC66;]db[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]15[/color][/color], [color= #ff0000;]$[/color][color= #ff0000;]0B[/color]
    .[color= #00CC66;]db[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]15[/color][/color], [color= #ff0000;]$[/color][color= #ff0000;]0B[/color]
     
    .[color= #00CC66;]db[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]16[/color][/color], [color= #ff0000;]$[/color][color= #ff0000;]0C[/color]
    .[color= #00CC66;]db[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]16[/color][/color], [color= #ff0000;]$[/color][color= #ff0000;]0C[/color]
    .[color= #00CC66;]db[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]17[/color][/color], [color= #ff0000;]$[/color][color= #ff0000;]0D[/color]

    Take a look at Underground Zone for example:
    Syntax Highlighted Code: ASM
    .[color= #00CC66;]db[/color] [color= #ff0000;]$[/color][color= #ff0000;]0E[/color], [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]09[/color][/color]
    .[color= #00CC66;]db[/color] [color= #ff0000;]$[/color][color= #ff0000;]0E[/color], [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]09[/color][/color]
    .[color= #00CC66;]db[/color] [color= #ff0000;]$[/color][color= #ff0000;]0E[/color], [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]09[/color][/color]

    As you can see, $0E is the zone palette for Underground Zone, and $09 is the palette for Sonic in Underground Zone.

    Then, Open up Aspect Edit, and click on the Open Palette button:
    Posted Image

    Right now, we are going to edit Underground Zone's palette, so click on "palette_ugz.bin" (Which is located in the palettes folder) in the file browser:
    Posted Image

    Then, you can edit the colors in the palette, after you're done, click the Save Palette as button:
    Posted Image
    When it asks for a new filename, save it as "palette_ugz2.bin" for Act 2, and "palette_ugz3.bin" for Act 3.

    For GHZ, do the same method, but open "palette_ghz.bin", and save it as "palette_ghz2.bin" for Act 2, and "palette_ghz3.bin" for Act 3.

    Same goes for SEZ, and GMZ. open "palette_sez.bin" for SEZ, and "palette_gmz.bin" for GMZ, for SEZ, save it as "palette_sez2.bin" for Act 2, and "palette_sez3.bin" for Act 3. And for GMZ, save it as "palette_gmz2.bin" for Act 2, and "palette_gmz3.bin" for Act 3.

    Then, If you want Underground to go through a Day-to-Night, do this:
    Syntax Highlighted Code: ASM
    [color= #adadad; font-style: italic;];ugz[/color]
    .[color= #00CC66;]db[/color] [color= #ff0000;]$[/color][color= #ff0000;]0E[/color], [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]09[/color][/color]
    .[color= #00CC66;]db[/color] [color= #ff0000;]$[/color][color= #ff0000;]2F[/color], [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]09[/color][/color]
    .[color= #00CC66;]db[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]30[/color][/color], [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]09[/color][/color]

    And for Green Hills Zone to Scrambled Egg, do this:
    Syntax Highlighted Code: ASM
    [color= #adadad; font-style: italic;];ghz[/color]
    .[color= #00CC66;]db[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]13[/color][/color], [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]04[/color][/color]
    .[color= #00CC66;]db[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]31[/color][/color], [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]04[/color][/color]
    .[color= #00CC66;]db[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]32[/color][/color], [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]04[/color][/color]
    [color= #adadad; font-style: italic;];gmz[/color]
    .[color= #00CC66;]db[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]14[/color][/color], [color= #ff0000;]$[/color][color= #ff0000;]0A[/color]
    .[color= #00CC66;]db[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]33[/color][/color], [color= #ff0000;]$[/color][color= #ff0000;]0A[/color]
    .[color= #00CC66;]db[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]34[/color][/color], [color= #ff0000;]$[/color][color= #ff0000;]0A[/color]
    [color= #adadad; font-style: italic;];sez[/color]
    .[color= #00CC66;]db[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]15[/color][/color], [color= #ff0000;]$[/color][color= #ff0000;]0B[/color]
    .[color= #00CC66;]db[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]35[/color][/color], [color= #ff0000;]$[/color][color= #ff0000;]0B[/color]
    .[color= #00CC66;]db[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]36[/color][/color], [color= #ff0000;]$[/color][color= #ff0000;]0B[/color]

    And lastly, add these lines at the end of src/includes/palettes.asm:
    Syntax Highlighted Code: ASM
    Palette_UGZ_2:    [color= #adadad; font-style: italic;];$2F[/color]
    .[color= #00bfff;]incbin[/color] [color= #CC33CC;]"palettespalette_ugz2.bin"[/color]
     
    Palette_UGZ_3: [color= #adadad; font-style: italic;];$30[/color]
    .[color= #00bfff;]incbin[/color] [color= #CC33CC;]"palettespalette_ugz3.bin"[/color]
     
    Palette_GHZ_2: [color= #adadad; font-style: italic;];$31[/color]
    .[color= #00bfff;]incbin[/color] [color= #CC33CC;]"palettespalette_ghz2.bin"[/color]
     
    Palette_GHZ_3: [color= #adadad; font-style: italic;];$32[/color]
    .[color= #00bfff;]incbin[/color] [color= #CC33CC;]"palettespalette_ghz3.bin"[/color]
     
    Palette_GMZ_2: [color= #adadad; font-style: italic;];$33[/color]
    .[color= #00bfff;]incbin[/color] [color= #CC33CC;]"palettespalette_gmz2.bin"[/color]
     
    Palette_GMZ_3: [color= #adadad; font-style: italic;];$34[/color]
    .[color= #00bfff;]incbin[/color] [color= #CC33CC;]"palettespalette_gmz3.bin"[/color]
     
    Palette_SEZ_2: [color= #adadad; font-style: italic;];$35[/color]
    .[color= #00bfff;]incbin[/color] [color= #CC33CC;]"palettespalette_sez2.bin"[/color]
     
    Palette_SEZ_3: [color= #adadad; font-style: italic;];$36[/color]
    .[color= #00bfff;]incbin[/color] [color= #CC33CC;]"palettespalette_sez3.bin"[/color]

    Then, build the rom, and check out your new Dynamic palettes for UGZ, GHZ, GMZ, and SEZ.

    That's all, if you have any questions, PM me, and give credit where credit is due.

    And if you want to see my dynamic palettes for UGZ, here they are (The palette for Act 1 is the Same palette as the original game):

    UGZ Act 1 (Same palette as the original game)

    UGZ Act 2

    UGZ Act 3