From 4b5e25d4ab6f16e3cf99f896ea537bfe84db5c9f Mon Sep 17 00:00:00 2001 From: flamewing Date: Thu, 4 Feb 2021 21:24:52 +0100 Subject: [PATCH 01/72] Minor renaming of some terrain collision functions GetFloorPosition_FG and GetFloorPosition_BG were outrageously bad names given that they are also used for finding walls and ceilings. --- sonic3k.asm | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/sonic3k.asm b/sonic3k.asm index c6f9947e..fd1b5b38 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -18895,8 +18895,8 @@ loc_EFA2: move.b #1,$21(a0) rts ; --------------------------------------------------------------------------- - -GetFloorPosition_BG: +;GetFloorPosition_BG +Find_Tile_BG: lea (Level_layout_header).w,a1 move.w d2,d0 lsr.w #5,d0 @@ -18921,8 +18921,8 @@ GetFloorPosition_BG: movea.l d1,a1 rts ; --------------------------------------------------------------------------- - -GetFloorPosition_FG: +;GetFloorPosition_FG +Find_Tile_FG: lea (Level_layout_header).w,a1 move.w d2,d0 lsr.w #5,d0 @@ -18968,22 +18968,22 @@ ChunkAddrArray: dc.w 0, $80, $100, $180, $200, $280, $300, $380, $400, $480 FindFloor: - lea (GetFloorPosition_FG).l,a5 + lea (Find_Tile_FG).l,a5 tst.b (Background_collision_flag).w beq.s sub_F264 bsr.s sub_F264 - move.b (a4),1(a4) + move.b (a4),Primary_Angle_save-Primary_Angle(a4) move.w d1,-(sp) sub.w (Camera_X_diff).w,d3 sub.w (Camera_Y_diff).w,d2 - lea (GetFloorPosition_BG).l,a5 + lea (Find_Tile_BG).l,a5 bsr.s sub_F264 add.w (Camera_X_diff).w,d3 add.w (Camera_Y_diff).w,d2 move.w (sp)+,d0 cmp.w d0,d1 ble.s locret_F262 - move.b 1(a4),(a4) + move.b Primary_Angle_save-Primary_Angle(a4),(a4) move.w d0,d1 locret_F262: @@ -19148,24 +19148,24 @@ loc_F394: ; End of function sub_F30C ; --------------------------------------------------------------------------- - -loc_F3A4: - lea (GetFloorPosition_FG).l,a5 +;loc_F3A4 +Ring_FindFloor: + lea (Find_Tile_FG).l,a5 tst.b (Background_collision_flag).w beq.s sub_F3DE bsr.s sub_F3DE - move.b (a4),1(a4) + move.b (a4),Primary_Angle_save-Primary_Angle(a4) move.w d1,-(sp) sub.w (Camera_X_diff).w,d3 sub.w (Camera_Y_diff).w,d2 - lea (GetFloorPosition_BG).l,a5 + lea (Find_Tile_BG).l,a5 bsr.s sub_F3DE add.w (Camera_X_diff).w,d3 add.w (Camera_Y_diff).w,d2 move.w (sp)+,d0 cmp.w d0,d1 ble.s locret_F3DC - move.b 1(a4),(a4) + move.b Primary_Angle_save-Primary_Angle(a4),(a4) move.w d0,d1 locret_F3DC: @@ -19254,11 +19254,11 @@ loc_F470: FindWall: - lea (GetFloorPosition_FG).l,a5 + lea (Find_Tile_FG).l,a5 tst.b (Background_collision_flag).w beq.s sub_F4DC bsr.s sub_F4DC - move.b (a4),1(a4) + move.b (a4),Primary_Angle_save-Primary_Angle(a4) move.w d1,-(sp) move.w a3,d0 bpl.s loc_F4A4 @@ -19273,7 +19273,7 @@ loc_F4A4: loc_F4A8: sub.w (Camera_Y_diff).w,d2 - lea (GetFloorPosition_BG).l,a5 + lea (Find_Tile_BG).l,a5 bsr.s sub_F4DC move.w a3,d0 bpl.s loc_F4C6 @@ -19291,7 +19291,7 @@ loc_F4CA: move.w (sp)+,d0 cmp.w d0,d1 ble.s locret_F4DA - move.b 1(a4),(a4) + move.b Primary_Angle_save-Primary_Angle(a4),(a4) move.w d0,d1 locret_F4DA: @@ -19890,7 +19890,7 @@ RingCheckFloorDist: movea.w #$10,a3 move.w #0,d6 moveq #$C,d5 - bra.w loc_F3A4 + bra.w Ring_FindFloor ; End of function RingCheckFloorDist @@ -20196,8 +20196,8 @@ locret_FC9E: ; =============== S U B R O U T I N E ======================================= - -sub_FCA0: +;sub_FCA0 +RingCheckFloorDist_ReverseGravity: move.w $10(a0),d3 move.w $14(a0),d2 move.b $1E(a0),d0 @@ -20209,8 +20209,8 @@ sub_FCA0: movea.w #-$10,a3 move.w #$800,d6 moveq #$C,d5 - bra.w loc_F3A4 -; End of function sub_FCA0 + bra.w Ring_FindFloor +; End of function RingCheckFloorDist_ReverseGravity ; =============== S U B R O U T I N E ======================================= @@ -35049,7 +35049,7 @@ loc_1A7E8: bne.s loc_1A83C tst.b 4(a0) bpl.s loc_1A828 - jsr (sub_FCA0).l + jsr (RingCheckFloorDist_ReverseGravity).l tst.w d1 bpl.s loc_1A828 sub.w d1,$14(a0) From 7ad1bfd6976148de419bed8d875ba154bc188800 Mon Sep 17 00:00:00 2001 From: flamewing Date: Thu, 4 Feb 2021 21:27:17 +0100 Subject: [PATCH 02/72] OOps, forgot to include this --- sonic3k.constants.asm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sonic3k.constants.asm b/sonic3k.constants.asm index 813268b6..c9250793 100644 --- a/sonic3k.constants.asm +++ b/sonic3k.constants.asm @@ -596,9 +596,9 @@ Deceleration ds.w 1 Player_prev_frame ds.b 1 ; used by DPLC routines to detect whether a DMA transfer is required ds.b 1 ; unused Primary_Angle ds.b 1 - ds.b 1 ; unused +Primary_Angle_save ds.b 1 ; Used in FindFloor/FindWall Secondary_Angle ds.b 1 - ds.b 1 ; unused +Secondary_Angle_save ds.b 1 ; Used in FindFloor/FindWall Object_load_routine ds.b 1 ; routine counter for the object loading manager ds.b 1 ; unused From 66bb7031d7a2413ee4ec24b063f9fb667e6d979f Mon Sep 17 00:00:00 2001 From: Clownacy Date: Sun, 25 Apr 2021 22:12:50 +0100 Subject: [PATCH 03/72] Correct some sound driver constants zFinishTrackUpdate actually clears variables relating to modulation envelopes. --- Sound/Z80 Sound Driver.asm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Sound/Z80 Sound Driver.asm b/Sound/Z80 Sound Driver.asm index 755fdd59..add2c6f4 100644 --- a/Sound/Z80 Sound Driver.asm +++ b/Sound/Z80 Sound Driver.asm @@ -1266,8 +1266,8 @@ zFinishTrackUpdate: bit 1, (ix+zTrack.PlaybackControl) ; Is 'do not attack next note' flag set? ret nz ; Return if yes xor a ; Clear a - ld (ix+zTrack.ModulationSpeed), a ; Clear modulation speed - ld (ix+zTrack.ModulationValLow), a ; Clear low byte of accumulated modulation + ld (ix+zTrack.ModEnvIndex), a ; Clear modulation envelope index + ld (ix+zTrack.ModEnvSens), a ; Clear modulation envelope multiplier ld (ix+zTrack.VolEnv), a ; Reset volume envelope ld a, (ix+zTrack.NoteFillMaster) ; Get master note fill ld (ix+zTrack.NoteFillTimeout), a ; Set note fill timeout From b1665130777a31ef096cf39f35871c75eb6a2e5f Mon Sep 17 00:00:00 2001 From: Clownacy Date: Sun, 25 Apr 2021 23:21:18 +0100 Subject: [PATCH 04/72] Document a buggy FM volume envelope --- Sound/Z80 Sound Driver.asm | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/Sound/Z80 Sound Driver.asm b/Sound/Z80 Sound Driver.asm index add2c6f4..bf343629 100644 --- a/Sound/Z80 Sound Driver.asm +++ b/Sound/Z80 Sound Driver.asm @@ -4297,8 +4297,7 @@ zDoVolEnv: ; In order to get here, the flutter value would have to be: ; (1) negative; ; (2) not 80h, 81h or 83h. - ; As it stands, none of the entries in the flutter tables will allow - ; this code to execute. + ; VolEnv_0A contains such a value, but luckily isn't used by any songs or sounds. ld a, (bc) ; Get value from wherever the hell bc is pointing to jr zDoVolEnvSetValue ; Use this as new envelope index ; --------------------------------------------------------------------------- @@ -4583,11 +4582,11 @@ ModEnv_02: db 0, 0, 0, 0, 13h, 26h, 39h, 4Ch, 5Fh, 72h, 7Fh, 72h, 83h ModEnv_03: db 1, 2, 3, 2, 1, 0,0FFh,0FEh,0FDh,0FEh,0FFh, 0, 82h, 0 ModEnv_04: db 0, 0, 1, 3, 1, 0,0FFh,0FDh,0FFh, 0, 82h, 2 ModEnv_05: db 0, 0, 0, 0, 0, 0Ah, 14h, 1Eh, 14h, 0Ah, 0,0F6h,0ECh,0E2h,0ECh,0F6h - db 82h, 4 + db 82h, 4 ModEnv_06: db 0, 0, 0, 0, 16h, 2Ch, 42h, 2Ch, 16h, 0,0EAh,0D4h,0BEh,0D4h,0EAh, 82h - db 3 + db 3 ModEnv_07: db 1, 2, 3, 4, 3, 2, 1, 0,0FFh,0FEh,0FDh,0FCh,0FDh,0FEh,0FFh, 0 - db 82h, 1 + db 82h, 1 ; --------------------------------------------------------------------------- ; =========================================================================== @@ -4616,7 +4615,15 @@ VolEnv_07: db 0, 0, 0, 2, 3, 3, 4, 5, 6, 7, 8, 9, 0Ah, VolEnv_08: db 3, 2, 1, 1, 0, 0, 1, 2, 3, 4, 81h VolEnv_09: db 1, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 4 db 4, 4, 5, 5, 81h -VolEnv_0A: db 10h, 20h, 30h, 40h, 30h, 20h, 10h, 0,0F0h, 80h +; The -10h in this FM volume envelope appears to be erroneous: +; negative volume attenuations aren't supported, and instead +; trigger the code intended for byte 82h. +; This envelope appears in many SMPS Z80 Type 2 DAC drivers, +; suggesting it was some kind of poorly-thought-out example. +; Oddly, this same envelope appears in Ristar (whose driver +; *does* support negative attenuations), despite SMPS 68k not +; supporting FM volume envelopes. +VolEnv_0A: db 10h, 20h, 30h, 40h, 30h, 20h, 10h, 0,-10h, 80h VolEnv_0B: db 0, 0, 1, 1, 3, 3, 4, 5, 83h VolEnv_0C: db 0, 81h VolEnv_0D: db 2, 83h From 75cec478b4e5b1ef77d393dfe87ae2c5f2c6d388 Mon Sep 17 00:00:00 2001 From: Clownacy Date: Sun, 25 Apr 2021 23:27:39 +0100 Subject: [PATCH 05/72] Deobfuscate the modulation envelopes --- Sound/Z80 Sound Driver.asm | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/Sound/Z80 Sound Driver.asm b/Sound/Z80 Sound Driver.asm index bf343629..38d54bd6 100644 --- a/Sound/Z80 Sound Driver.asm +++ b/Sound/Z80 Sound Driver.asm @@ -4577,16 +4577,13 @@ z80_ModEnvPointers: dw ModEnv_07 ModEnv_01: db 0 -ModEnv_00: db 1, 2, 1, 0,0FFh,0FEh,0FDh,0FCh,0FDh,0FEh,0FFh, 83h +ModEnv_00: db 1, 2, 1, 0, -1, -2, -3, -4, -3, -2, -1, 83h ModEnv_02: db 0, 0, 0, 0, 13h, 26h, 39h, 4Ch, 5Fh, 72h, 7Fh, 72h, 83h -ModEnv_03: db 1, 2, 3, 2, 1, 0,0FFh,0FEh,0FDh,0FEh,0FFh, 0, 82h, 0 -ModEnv_04: db 0, 0, 1, 3, 1, 0,0FFh,0FDh,0FFh, 0, 82h, 2 -ModEnv_05: db 0, 0, 0, 0, 0, 0Ah, 14h, 1Eh, 14h, 0Ah, 0,0F6h,0ECh,0E2h,0ECh,0F6h - db 82h, 4 -ModEnv_06: db 0, 0, 0, 0, 16h, 2Ch, 42h, 2Ch, 16h, 0,0EAh,0D4h,0BEh,0D4h,0EAh, 82h - db 3 -ModEnv_07: db 1, 2, 3, 4, 3, 2, 1, 0,0FFh,0FEh,0FDh,0FCh,0FDh,0FEh,0FFh, 0 - db 82h, 1 +ModEnv_03: db 1, 2, 3, 2, 1, 0, -1, -2, -3, -2, -1, 0, 82h, 0 +ModEnv_04: db 0, 0, 1, 3, 1, 0, -1, -3, -1, 0, 82h, 2 +ModEnv_05: db 0, 0, 0, 0, 0, 10, 20, 30, 20, 10, 0, -10, -20, -30, -20, -10, 82h, 4 +ModEnv_06: db 0, 0, 0, 0, 22, 44, 66, 44, 22, 0, -22, -44, -66, -44, -22, 82h, 3 +ModEnv_07: db 1, 2, 3, 4, 3, 2, 1, 0, -1, -2, -3, -4, -3, -2, -1, 0, 82h, 1 ; --------------------------------------------------------------------------- ; =========================================================================== From dd8209a7bfd5e27499fc840410a48fc95066a061 Mon Sep 17 00:00:00 2001 From: Clownacy Date: Mon, 26 Apr 2021 12:00:46 +0100 Subject: [PATCH 06/72] Add a driver bugfix and some optimisations --- Sound/Z80 Sound Driver.asm | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Sound/Z80 Sound Driver.asm b/Sound/Z80 Sound Driver.asm index 38d54bd6..781e2d3e 100644 --- a/Sound/Z80 Sound Driver.asm +++ b/Sound/Z80 Sound Driver.asm @@ -1413,7 +1413,10 @@ zDoFMVolEnv: push bc ; Save bc jr nc, .skip_reg ; Branch if c bit shifted was zero add a, (hl) ; Add TL value to volume envelope + if fix_sndbugs=0 + ; This isn't actually needed and 7Fh ; Strip sign bit + endif ld c, a ; c = TL + volume envelope ld a, (de) ; a = YM2612 register call zWriteFMIorII ; Send TL data to YM2612 @@ -3321,9 +3324,17 @@ zSendTL: or a ; Is it positive? jp p, .skip_track_vol ; Branch if yes add a, (ix+zTrack.Volume) ; Add track's volume to it + if fix_sndbugs + ; Perform some clamping, to prevent volume attenuation overflow (quiet sounds becoming loud) + jr nc,.skip_track_vol + ld a, 7Fh + endif .skip_track_vol: + if fix_sndbugs=0 + ; Not actually needed and 7Fh ; Strip sign bit + endif ld c, a ; c = new volume for operator ld a, (de) ; a = register write command call zWriteFMIorII ; Send it to YM2612 From 72cf5ac1c4265bb1370eed2f42a06a8fbc05279f Mon Sep 17 00:00:00 2001 From: Clownacy Date: Mon, 17 May 2021 21:46:00 +0100 Subject: [PATCH 07/72] Correct a comment about the PSG frequency table --- Sound/Z80 Sound Driver.asm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Sound/Z80 Sound Driver.asm b/Sound/Z80 Sound Driver.asm index 781e2d3e..e0d1e907 100644 --- a/Sound/Z80 Sound Driver.asm +++ b/Sound/Z80 Sound Driver.asm @@ -2968,16 +2968,16 @@ zFadeInToPrevious: ; --------------------------------------------------------------------------- ;loc_AA5 zPSGFrequencies: - ; This table starts with 12 notes not in S1 or S2: + ; This table differs from the one in Sonic 1 and 2's drivers by + ; having an extra octave at the start and two extra notes at + ; the end, allowing it to span notes c-0 to b-7. dw 3FFh,3FFh,3FFh,3FFh,3FFh,3FFh,3FFh,3FFh,3FFh,3F7h,3BEh,388h - ; The following notes are present on S1 and S2 too: dw 356h,326h,2F9h,2CEh,2A5h,280h,25Ch,23Ah,21Ah,1FBh,1DFh,1C4h dw 1ABh,193h,17Dh,167h,153h,140h,12Eh,11Dh,10Dh,0FEh,0EFh,0E2h dw 0D6h,0C9h,0BEh,0B4h,0A9h,0A0h,097h,08Fh,087h,07Fh,078h,071h dw 06Bh,065h,05Fh,05Ah,055h,050h,04Bh,047h,043h,040h,03Ch,039h dw 036h,033h,030h,02Dh,02Bh,028h,026h,024h,022h,020h,01Fh,01Dh dw 01Bh,01Ah,018h,017h,016h,015h,013h,012h,011h,010h,000h,000h - ; Then, it falls through to the 12 base notes from FM octaves. ;loc_B4D zFMFrequencies: dw 284h,2ABh,2D3h,2FEh,32Dh,35Ch,38Fh,3C5h,3FFh,43Ch,47Ch,4C0h From 984dadbb516bb2716963500abbff523a06504298 Mon Sep 17 00:00:00 2001 From: Clownacy Date: Mon, 17 May 2021 21:54:36 +0100 Subject: [PATCH 08/72] Document a quirk of the FM frequency table --- Sound/Z80 Sound Driver.asm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Sound/Z80 Sound Driver.asm b/Sound/Z80 Sound Driver.asm index e0d1e907..1d8311e8 100644 --- a/Sound/Z80 Sound Driver.asm +++ b/Sound/Z80 Sound Driver.asm @@ -2980,6 +2980,8 @@ zPSGFrequencies: dw 01Bh,01Ah,018h,017h,016h,015h,013h,012h,011h,010h,000h,000h ;loc_B4D zFMFrequencies: + ; This table spans only a single octave, as the octave frequency + ; is calculated at run-time unlike in Sonic 1 and 2's drivers. dw 284h,2ABh,2D3h,2FEh,32Dh,35Ch,38Fh,3C5h,3FFh,43Ch,47Ch,4C0h ; --------------------------------------------------------------------------- ; =========================================================================== From 4ae20b5642437ff6a1866fc3057e9d44fceeae81 Mon Sep 17 00:00:00 2001 From: Clownacy Date: Mon, 17 May 2021 22:05:20 +0100 Subject: [PATCH 09/72] Add another sound driver optimisation --- Sound/Z80 Sound Driver.asm | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Sound/Z80 Sound Driver.asm b/Sound/Z80 Sound Driver.asm index 1d8311e8..8a07bc49 100644 --- a/Sound/Z80 Sound Driver.asm +++ b/Sound/Z80 Sound Driver.asm @@ -544,8 +544,12 @@ bankswitch1 macro rrca ld (hl), a endm + if fix_sndbugs + ld (hl),h ; The low bit of h is 0 + else xor a ld (hl), a + endif endm bankswitch2 macro @@ -555,8 +559,12 @@ bankswitch2 macro rra ld (hl), a endm + if fix_sndbugs + ld (hl),h ; The low bit of h is 0 + else xor a ld (hl), a + endif endm bankswitch3 macro @@ -578,8 +586,12 @@ bankswitchToMusic macro rra ld (hl), a endm + if fix_sndbugs + ld (hl),h ; The low bit of h is 0 + else xor a ld (hl), a + endif endm ; macro to make a certain error message clearer should you happen to get it... From 2b03313829abca3b2c94b1c64465232dcf31da74 Mon Sep 17 00:00:00 2001 From: Vinny Date: Tue, 25 May 2021 20:55:32 +0300 Subject: [PATCH 10/72] identified some lap count addresses used in competition mode --- Lockon S3/Screen Events.asm | 2 +- sonic3k.asm | 46 ++++++++++++++++++------------------- sonic3k.constants.asm | 6 ++--- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/Lockon S3/Screen Events.asm b/Lockon S3/Screen Events.asm index 82f36778..55b873d4 100644 --- a/Lockon S3/Screen Events.asm +++ b/Lockon S3/Screen Events.asm @@ -102,7 +102,7 @@ CGZ_BackgroundInit: move.w d0,(Events_bg+$04).w move.w d0,(Events_bg+$06).w moveq #0,d0 - move.b (_unkFEDA).w,d0 + move.b (Competition_total_laps).w,d0 addq.w #1,d0 lsl.w #8,d0 subi.w #$70,d0 diff --git a/sonic3k.asm b/sonic3k.asm index fd1b5b38..dad45116 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -73982,8 +73982,8 @@ Obj_2PGoalMarker: lsl.w #3,d0 subi.w #$14,d0 move.w d0,$38(a0) - move.b #5,(_unkFEDA).w - clr.w (_unkFEDC).w + move.b #5,(Competition_total_laps).w + clr.w (Competition_lap_count).w clr.w (Events_bg+$14).w clr.b (Update_HUD_timer).w clr.l (Timer).w @@ -74028,13 +74028,13 @@ loc_36CEA: move.w $10(a0),d1 lea $34(a0),a2 lea (Player_1).w,a1 - lea (_unkFEDC).w,a3 + lea (Competition_lap_count).w,a3 lea (_unkF74A).w,a4 lea (Timer).w,a5 lea ($FF7828).l,a6 bsr.w sub_36DFC lea (Player_2).w,a1 - lea (_unkFEDD).w,a3 + lea (Competition_lap_count_2P).w,a3 lea (_unkF74B).w,a4 lea (Timer_P2).w,a5 lea ($FF7840).l,a6 @@ -74072,7 +74072,7 @@ loc_36D3E: move.w #0,$32(a1) loc_36DC0: - clr.w (_unkFEDC).w + clr.w (Competition_lap_count).w clr.b (Update_HUD_timer).w clr.l (Timer).w clr.b (_unkFEC7).w @@ -74336,10 +74336,10 @@ loc_37086: move.l #loc_37092,(a0) loc_37092: - move.b (_unkFEDC).w,d0 - cmp.b (_unkFEDA).w,d0 + move.b (Competition_lap_count).w,d0 + cmp.b (Competition_total_laps).w,d0 ble.s loc_370A0 - move.b (_unkFEDA).w,d0 + move.b (Competition_total_laps).w,d0 loc_370A0: subi.b #$A,d0 @@ -74350,10 +74350,10 @@ loc_370A0: ; --------------------------------------------------------------------------- loc_370B4: - move.b (_unkFEDD).w,d0 - cmp.b (_unkFEDA).w,d0 + move.b (Competition_lap_count_2P).w,d0 + cmp.b (Competition_total_laps).w,d0 ble.s loc_370C2 - move.b (_unkFEDA).w,d0 + move.b (Competition_total_laps).w,d0 loc_370C2: subi.b #$A,d0 @@ -74447,8 +74447,8 @@ loc_3720C: move.w #$78,(Events_bg+$16).w loc_37218: - move.b (_unkFEDA).w,d0 - cmp.b (_unkFEDC).w,d0 + move.b (Competition_total_laps).w,d0 + cmp.b (Competition_lap_count).w,d0 bhs.s loc_37292 move.b #3,$20(a0) tst.b (Not_ghost_flag).w @@ -74470,8 +74470,8 @@ loc_37256: jsr sub_37430(pc) moveq #sfx_Goal,d0 jsr (Play_Sound_2).l - move.b (_unkFEDA).w,d0 - cmp.b (_unkFEDD).w,d0 + move.b (Competition_total_laps).w,d0 + cmp.b (Competition_lap_count_2P).w,d0 bhs.s loc_3728C move.b #6,$20(a0) bclr #3,4(a0) @@ -74486,7 +74486,7 @@ loc_3728C: ; --------------------------------------------------------------------------- loc_37292: - cmp.b (_unkFEDD).w,d0 + cmp.b (Competition_lap_count_2P).w,d0 bhs.s locret_372CE move.b #4,$20(a0) bset #4,4(a0) @@ -74531,15 +74531,15 @@ locret_37306: ; --------------------------------------------------------------------------- loc_37308: - move.b (_unkFEDC).w,d0 + move.b (Competition_lap_count).w,d0 tst.b (Update_HUD_timer).w bpl.s loc_3731C - move.b (_unkFEDD).w,d0 + move.b (Competition_lap_count_2P).w,d0 tst.b (Update_HUD_timer).w bmi.s loc_37322 loc_3731C: - cmp.b (_unkFEDA).w,d0 + cmp.b (Competition_total_laps).w,d0 beq.s loc_37328 loc_37322: @@ -74598,8 +74598,8 @@ byte_3739F: dc.b 0 ; --------------------------------------------------------------------------- loc_373A4: - move.b (_unkFEDA).w,d0 - cmp.b (_unkFEDC).w,d0 + move.b (Competition_total_laps).w,d0 + cmp.b (Competition_lap_count).w,d0 bhs.s loc_373D4 tst.b (Update_HUD_timer).w bmi.s loc_373D4 @@ -74611,8 +74611,8 @@ loc_373A4: jsr (Play_Sound_2).l loc_373D4: - move.b (_unkFEDA).w,d0 - cmp.b (_unkFEDD).w,d0 + move.b (Competition_total_laps).w,d0 + cmp.b (Competition_lap_count_2P).w,d0 bhs.s locret_37404 tst.b (_unkFEC7).w bmi.s locret_37404 diff --git a/sonic3k.constants.asm b/sonic3k.constants.asm index c9250793..e5811a85 100644 --- a/sonic3k.constants.asm +++ b/sonic3k.constants.asm @@ -820,10 +820,10 @@ Ring_count_P2 ds.w 1 ; left over from Sonic 2 Timer_P2 ds.l 1 ; left over from Sonic 2 Timer_minute_P2 = Timer_P2+1 ; left over from Sonic 2 Score_P2 ds.l 1 ; left over from Sonic 2 -_unkFEDA ds.b 1 +Competition_total_laps ds.b 1 ;total number of laps in comeptition mode (typically 5) ds.b 1 ; unused -_unkFEDC ds.b 1 -_unkFEDD ds.b 1 +Competition_lap_count ds.b 1 ;current lap number for player 1 in competition mode +Competition_lap_count_2P ds.b 1 ;current lap number for player 2 in competition mode _unkFEDE ds.b 1 ; unused ds.b $23 ; unused Results_screen_2P ds.w 1 ; left over from Sonic 2 From 909df6f93f9f114632e8a1deadfc4c279019e35d Mon Sep 17 00:00:00 2001 From: Vinny Date: Wed, 26 May 2021 16:52:15 +0300 Subject: [PATCH 11/72] updated address names for Sonic 3 solo, too --- s3.asm | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/s3.asm b/s3.asm index 165e3cb8..38ca5cbf 100644 --- a/s3.asm +++ b/s3.asm @@ -63885,8 +63885,8 @@ Obj_2PGoalMarker: lsl.w #3,d0 subi.w #$14,d0 move.w d0,$38(a0) - move.b #5,(_unkFEDA).w - clr.w (_unkFEDC).w + move.b #5,(Competition_total_laps).w + clr.w (Competition_lap_count).w clr.w (Events_bg+$14).w clr.b (Update_HUD_timer).w clr.l (Timer).w @@ -63931,13 +63931,13 @@ loc_3627C: move.w $10(a0),d1 lea $34(a0),a2 lea (Player_1).w,a1 - lea (_unkFEDC).w,a3 + lea (Competition_lap_count).w,a3 lea (_unkF74A).w,a4 lea (Timer).w,a5 lea ($FF7828).l,a6 bsr.w sub_3638E lea (Player_2).w,a1 - lea (_unkFEDD).w,a3 + lea (Competition_lap_count_2P).w,a3 lea (_unkF74B).w,a4 lea (Timer_P2).w,a5 lea ($FF7840).l,a6 @@ -63975,7 +63975,7 @@ loc_362D0: move.w #0,$32(a1) loc_36352: - clr.w (_unkFEDC).w + clr.w (Competition_lap_count).w clr.b (Update_HUD_timer).w clr.l (Timer).w clr.b (_unkFEC7).w @@ -64238,10 +64238,10 @@ loc_36618: move.l #loc_36624,(a0) loc_36624: - move.b (_unkFEDC).w,d0 - cmp.b (_unkFEDA).w,d0 + move.b (Competition_lap_count).w,d0 + cmp.b (Competition_total_laps).w,d0 ble.s loc_36632 - move.b (_unkFEDA).w,d0 + move.b (Competition_total_laps).w,d0 loc_36632: subi.b #$A,d0 @@ -64252,10 +64252,10 @@ loc_36632: ; --------------------------------------------------------------------------- loc_36646: - move.b (_unkFEDD).w,d0 - cmp.b (_unkFEDA).w,d0 + move.b (Competition_lap_count_2P).w,d0 + cmp.b (Competition_total_laps).w,d0 ble.s loc_36654 - move.b (_unkFEDA).w,d0 + move.b (Competition_total_laps).w,d0 loc_36654: subi.b #$A,d0 @@ -64349,8 +64349,8 @@ loc_3679E: move.w #$78,(Events_bg+$16).w loc_367AA: - move.b (_unkFEDA).w,d0 - cmp.b (_unkFEDC).w,d0 + move.b (Competition_total_laps).w,d0 + cmp.b (Competition_lap_count).w,d0 bcc.s loc_36824 move.b #3,$20(a0) tst.b (Not_ghost_flag).w @@ -64372,8 +64372,8 @@ loc_367E8: jsr sub_369C2(pc) moveq #sfx_Goal,d0 jsr (Play_Sound_2).l - move.b (_unkFEDA).w,d0 - cmp.b (_unkFEDD).w,d0 + move.b (Competition_total_laps).w,d0 + cmp.b (Competition_lap_count_2P).w,d0 bcc.s loc_3681E move.b #6,$20(a0) bclr #3,4(a0) @@ -64388,7 +64388,7 @@ loc_3681E: ; --------------------------------------------------------------------------- loc_36824: - cmp.b (_unkFEDD).w,d0 + cmp.b (Competition_lap_count_2P).w,d0 bcc.s locret_36860 move.b #4,$20(a0) bset #4,4(a0) @@ -64433,15 +64433,15 @@ locret_36898: ; --------------------------------------------------------------------------- loc_3689A: - move.b (_unkFEDC).w,d0 + move.b (Competition_lap_count).w,d0 tst.b (Update_HUD_timer).w bpl.s loc_368AE - move.b (_unkFEDD).w,d0 + move.b (Competition_lap_count_2P).w,d0 tst.b (Update_HUD_timer).w bmi.s loc_368B4 loc_368AE: - cmp.b (_unkFEDA).w,d0 + cmp.b (Competition_total_laps).w,d0 beq.s loc_368BA loc_368B4: @@ -64500,8 +64500,8 @@ byte_36931: dc.b 0 ; --------------------------------------------------------------------------- loc_36936: - move.b (_unkFEDA).w,d0 - cmp.b (_unkFEDC).w,d0 + move.b (Competition_total_laps).w,d0 + cmp.b (Competition_lap_count).w,d0 bcc.s loc_36966 tst.b (Update_HUD_timer).w bmi.s loc_36966 @@ -64513,8 +64513,8 @@ loc_36936: jsr (Play_Sound_2).l loc_36966: - move.b (_unkFEDA).w,d0 - cmp.b (_unkFEDD).w,d0 + move.b (Competition_total_laps).w,d0 + cmp.b (Competition_lap_count_2P).w,d0 bcc.s locret_36996 tst.b (_unkFEC7).w bmi.s locret_36996 @@ -69311,7 +69311,7 @@ CGZ_BackgroundInit: move.w d0,(Events_bg+$04).w move.w d0,(Events_bg+$06).w moveq #0,d0 - move.b (_unkFEDA).w,d0 + move.b (Competition_total_laps).w,d0 addq.w #1,d0 lsl.w #8,d0 subi.w #$70,d0 From b4388b5ae622e8a7bb5dfba5a29ebf53e80a606b Mon Sep 17 00:00:00 2001 From: Vinny Date: Wed, 26 May 2021 17:26:43 +0300 Subject: [PATCH 12/72] identified addresses to control peppermint and goal sprite animations --- sonic3k.asm | 22 +++++++++++----------- sonic3k.constants.asm | 8 ++++---- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/sonic3k.asm b/sonic3k.asm index dad45116..7e0680a8 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -98182,31 +98182,31 @@ loc_4B4E8: addq.w #8,a1 dbf d1,loc_4B4E8 lea (Chunk_table+$7005).l,a1 - subq.b #1,(_unkFEB0).w + subq.b #1,(Slot_machine_goal_frame_timer).w bpl.s loc_4B526 - move.b #1,(_unkFEB0).w + move.b #1,(Slot_machine_goal_frame_timer).w addq.b #1,$20(a1) cmpi.b #3,$20(a1) blo.s loc_4B514 move.b #0,$20(a1) loc_4B514: - addq.b #1,(_unkFEB1).w - cmpi.b #6,(_unkFEB1).w + addq.b #1,(Slot_machine_goal_frame).w + cmpi.b #6,(Slot_machine_goal_frame).w blo.s loc_4B526 - move.b #0,(_unkFEB1).w + move.b #0,(Slot_machine_goal_frame).w loc_4B526: - move.b (_unkFEB1).w,$48(a1) + move.b (Slot_machine_goal_frame).w,$48(a1) move.b (Rings_frame).w,$40(a1) - subq.b #1,(_unkFEB4).w + subq.b #1,(Slot_machine_peppermint_frame_timer).w bpl.s loc_4B548 - move.b #3,(_unkFEB4).w - addq.b #1,(_unkFEB5).w - andi.b #3,(_unkFEB5).w + move.b #3,(Slot_machine_peppermint_frame_timer).w + addq.b #1,(Slot_machine_peppermint_frame).w + andi.b #3,(Slot_machine_peppermint_frame).w loc_4B548: - move.b (_unkFEB5).w,$38(a1) + move.b (Slot_machine_peppermint_frame).w,$38(a1) rts ; End of function sub_4B4C4 diff --git a/sonic3k.constants.asm b/sonic3k.constants.asm index e5811a85..3a5c44dc 100644 --- a/sonic3k.constants.asm +++ b/sonic3k.constants.asm @@ -793,12 +793,12 @@ LRZ_rocks_addr_front ds.l 1 ; the address inside the lrz rocks data of the fi LRZ_rocks_addr_back ds.l 1 ; the address inside the lrz rocks data of the first rock whose X pos is >= Camera_X_pos_coarse - $80 Oscillating_table ds.b $42 ; various oscillating variables Oscillating_table_end = * ; end of oscillating data array -_unkFEB0 ds.b 1 -_unkFEB1 ds.b 1 +Slot_machine_goal_frame_timer ds.b 1 +Slot_machine_goal_frame ds.b 1 Rings_frame_timer ds.b 1 Rings_frame ds.b 1 -_unkFEB4 ds.b 1 -_unkFEB5 ds.b 1 +Slot_machine_peppermint_frame_timer ds.b 1 +Slot_machine_peppermint_frame ds.b 1 Ring_spill_anim_counter ds.b 1 Ring_spill_anim_frame ds.b 1 Ring_spill_anim_accum ds.b 1 From 1906c752e2071425de313ab2dc3d01f7e0898938 Mon Sep 17 00:00:00 2001 From: Vinny Date: Sat, 29 May 2021 00:25:33 +0300 Subject: [PATCH 13/72] identified various addresses related to competition mode --- s3.asm | 64 +++++++++++++++++++++---------------------- sonic3k.asm | 64 +++++++++++++++++++++---------------------- sonic3k.constants.asm | 27 ++++++++++++------ 3 files changed, 82 insertions(+), 73 deletions(-) diff --git a/s3.asm b/s3.asm index 38ca5cbf..90ae9781 100644 --- a/s3.asm +++ b/s3.asm @@ -13279,7 +13279,7 @@ loc_B244: move.l #loc_B252,(a0) loc_B252: - move.b (_unkEE5A).w,d0 + move.b (Competition_time_attack_new_top_record).w,d0 cmp.b $2E(a0),d0 bne.s loc_B264 btst #3,(Level_frame_counter+1).w @@ -63886,7 +63886,7 @@ Obj_2PGoalMarker: subi.w #$14,d0 move.w d0,$38(a0) move.b #5,(Competition_total_laps).w - clr.w (Competition_lap_count).w + clr.w (Competition_current_lap).w clr.w (Events_bg+$14).w clr.b (Update_HUD_timer).w clr.l (Timer).w @@ -63931,20 +63931,20 @@ loc_3627C: move.w $10(a0),d1 lea $34(a0),a2 lea (Player_1).w,a1 - lea (Competition_lap_count).w,a3 + lea (Competition_current_lap).w,a3 lea (_unkF74A).w,a4 lea (Timer).w,a5 lea ($FF7828).l,a6 bsr.w sub_3638E lea (Player_2).w,a1 - lea (Competition_lap_count_2P).w,a3 + lea (Competition_current_lap_2P).w,a3 lea (_unkF74B).w,a4 lea (Timer_P2).w,a5 lea ($FF7840).l,a6 bsr.w sub_3638E lea (Ani_2PGoalMarker).l,a1 jsr (Animate_Sprite).l - move.w $36(a0),(_unkEE5C).w + move.w $36(a0),(Competition_lap_count).w jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- @@ -63975,7 +63975,7 @@ loc_362D0: move.w #0,$32(a1) loc_36352: - clr.w (Competition_lap_count).w + clr.w (Competition_current_lap).w clr.b (Update_HUD_timer).w clr.l (Timer).w clr.b (_unkFEC7).w @@ -64138,9 +64138,9 @@ sub_364EC: loc_364F4: clr.l (a1)+ dbf d0,loc_364F4 - clr.l (_unkEE52).w - clr.l (_unkEE56).w - st (_unkEE5A).w + clr.l (Competition_time_record).w + clr.l (Competition_time_record_P2).w + st (Competition_time_attack_new_top_record).w rts ; End of function sub_364EC @@ -64238,7 +64238,7 @@ loc_36618: move.l #loc_36624,(a0) loc_36624: - move.b (Competition_lap_count).w,d0 + move.b (Competition_current_lap).w,d0 cmp.b (Competition_total_laps).w,d0 ble.s loc_36632 move.b (Competition_total_laps).w,d0 @@ -64252,7 +64252,7 @@ loc_36632: ; --------------------------------------------------------------------------- loc_36646: - move.b (Competition_lap_count_2P).w,d0 + move.b (Competition_current_lap_2P).w,d0 cmp.b (Competition_total_laps).w,d0 ble.s loc_36654 move.b (Competition_total_laps).w,d0 @@ -64339,9 +64339,9 @@ loc_36786: subq.b #1,d0 bne.w loc_36862 move.l #$93B63,d0 - cmp.l (_unkEE52).w,d0 + cmp.l (Competition_time_record).w,d0 bls.s loc_3679E - cmp.l (_unkEE56).w,d0 + cmp.l (Competition_time_record_P2).w,d0 bhi.s loc_367AA loc_3679E: @@ -64350,7 +64350,7 @@ loc_3679E: loc_367AA: move.b (Competition_total_laps).w,d0 - cmp.b (Competition_lap_count).w,d0 + cmp.b (Competition_current_lap).w,d0 bcc.s loc_36824 move.b #3,$20(a0) tst.b (Not_ghost_flag).w @@ -64373,7 +64373,7 @@ loc_367E8: moveq #sfx_Goal,d0 jsr (Play_Sound_2).l move.b (Competition_total_laps).w,d0 - cmp.b (Competition_lap_count_2P).w,d0 + cmp.b (Competition_current_lap_2P).w,d0 bcc.s loc_3681E move.b #6,$20(a0) bclr #3,4(a0) @@ -64388,7 +64388,7 @@ loc_3681E: ; --------------------------------------------------------------------------- loc_36824: - cmp.b (Competition_lap_count_2P).w,d0 + cmp.b (Competition_current_lap_2P).w,d0 bcc.s locret_36860 move.b #4,$20(a0) bset #4,4(a0) @@ -64433,10 +64433,10 @@ locret_36898: ; --------------------------------------------------------------------------- loc_3689A: - move.b (Competition_lap_count).w,d0 + move.b (Competition_current_lap).w,d0 tst.b (Update_HUD_timer).w bpl.s loc_368AE - move.b (Competition_lap_count_2P).w,d0 + move.b (Competition_current_lap_2P).w,d0 tst.b (Update_HUD_timer).w bmi.s loc_368B4 @@ -64449,9 +64449,9 @@ loc_368B4: bmi.s loc_368CE loc_368BA: - cmpi.l #$93B63,(_unkEE52).w + cmpi.l #$93B63,(Competition_time_record).w bcc.s loc_368CE - cmpi.l #$93B63,(_unkEE56).w + cmpi.l #$93B63,(Competition_time_record_P2).w bcs.s locret_3692A loc_368CE: @@ -64460,8 +64460,8 @@ loc_368CE: subi.b #$E,d0 move.b byte_36931(pc,d0.w),d0 lea ($FF7800).l,a1 - move.l (_unkEE52).w,(a1,d0.w) - move.l (_unkEE56).w,$14(a1,d0.w) + move.l (Competition_time_record).w,(a1,d0.w) + move.l (Competition_time_record_P2).w,$14(a1,d0.w) tst.b (Update_HUD_timer).w bmi.s loc_368FC move.l #$93B63,(a1,d0.w) @@ -64501,7 +64501,7 @@ byte_36931: dc.b 0 loc_36936: move.b (Competition_total_laps).w,d0 - cmp.b (Competition_lap_count).w,d0 + cmp.b (Competition_current_lap).w,d0 bcc.s loc_36966 tst.b (Update_HUD_timer).w bmi.s loc_36966 @@ -64514,7 +64514,7 @@ loc_36936: loc_36966: move.b (Competition_total_laps).w,d0 - cmp.b (Competition_lap_count_2P).w,d0 + cmp.b (Competition_current_lap_2P).w,d0 bcc.s locret_36996 tst.b (_unkFEC7).w bmi.s locret_36996 @@ -64559,7 +64559,7 @@ sub_369C2: lsl.w #4,d0 lea (Competition_saved_data).w,a1 adda.w d0,a1 - move.l (_unkEE52).w,d0 + move.l (Competition_time_record).w,d0 cmp.l (a1),d0 bcc.s loc_36A08 move.b $D(a1),$E(a1) @@ -64568,7 +64568,7 @@ sub_369C2: move.l 4(a1),8(a1) move.l (a1),4(a1) move.l d0,(a1) - clr.b (_unkEE5A).w + clr.b (Competition_time_attack_new_top_record).w bra.s loc_36A42 ; --------------------------------------------------------------------------- @@ -64579,7 +64579,7 @@ loc_36A08: move.b (P1_character).w,$D(a1) move.l 4(a1),8(a1) move.l d0,4(a1) - move.b #1,(_unkEE5A).w + move.b #1,(Competition_time_attack_new_top_record).w bra.s loc_36A42 ; --------------------------------------------------------------------------- @@ -64588,7 +64588,7 @@ loc_36A2C: bcc.s locret_36A48 move.b (P1_character).w,$E(a1) move.l d0,8(a1) - move.b #2,(_unkEE5A).w + move.b #2,(Competition_time_attack_new_top_record).w loc_36A42: jsr (Write_SaveGeneral).l @@ -64650,9 +64650,9 @@ loc_3726E: lea ($FF700A).l,a2 lea (Timer_minute).w,a3 moveq #0,d1 - move.b (_unkEE5C).w,d1 + move.b (Competition_lap_count).w,d1 lea (Update_HUD_timer).w,a4 - lea (_unkEE52).w,a5 + lea (Competition_time_record).w,a5 lea ($FF7828).l,a6 bra.s loc_3730E ; --------------------------------------------------------------------------- @@ -64686,9 +64686,9 @@ loc_372EC: lea ($FF708A).l,a2 lea (Timer_minute_P2).w,a3 moveq #0,d1 - move.b (_unkEE5C+1).w,d1 + move.b (Competition_lap_count_2P).w,d1 lea (_unkFEC7).w,a4 - lea (_unkEE56).w,a5 + lea (Competition_time_record_P2).w,a5 lea ($FF7840).l,a6 loc_3730E: diff --git a/sonic3k.asm b/sonic3k.asm index 7e0680a8..5c446276 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -14966,7 +14966,7 @@ loc_BF30: move.l #loc_BF3E,(a0) loc_BF3E: - move.b (_unkEE5A).w,d0 + move.b (Competition_time_attack_new_top_record).w,d0 cmp.b $2E(a0),d0 bne.s loc_BF50 btst #3,(Level_frame_counter+1).w @@ -73983,7 +73983,7 @@ Obj_2PGoalMarker: subi.w #$14,d0 move.w d0,$38(a0) move.b #5,(Competition_total_laps).w - clr.w (Competition_lap_count).w + clr.w (Competition_current_lap).w clr.w (Events_bg+$14).w clr.b (Update_HUD_timer).w clr.l (Timer).w @@ -74028,20 +74028,20 @@ loc_36CEA: move.w $10(a0),d1 lea $34(a0),a2 lea (Player_1).w,a1 - lea (Competition_lap_count).w,a3 + lea (Competition_current_lap).w,a3 lea (_unkF74A).w,a4 lea (Timer).w,a5 lea ($FF7828).l,a6 bsr.w sub_36DFC lea (Player_2).w,a1 - lea (Competition_lap_count_2P).w,a3 + lea (Competition_current_lap_2P).w,a3 lea (_unkF74B).w,a4 lea (Timer_P2).w,a5 lea ($FF7840).l,a6 bsr.w sub_36DFC lea (Ani_2PGoalMarker).l,a1 jsr (Animate_Sprite).l - move.w $36(a0),(_unkEE5C).w + move.w $36(a0),(Competition_lap_count).w jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- @@ -74072,7 +74072,7 @@ loc_36D3E: move.w #0,$32(a1) loc_36DC0: - clr.w (Competition_lap_count).w + clr.w (Competition_current_lap).w clr.b (Update_HUD_timer).w clr.l (Timer).w clr.b (_unkFEC7).w @@ -74235,9 +74235,9 @@ sub_36F5A: loc_36F62: clr.l (a1)+ dbf d0,loc_36F62 - clr.l (_unkEE52).w - clr.l (_unkEE56).w - st (_unkEE5A).w + clr.l (Competition_time_record).w + clr.l (Competition_time_record_P2).w + st (Competition_time_attack_new_top_record).w rts ; End of function sub_36F5A @@ -74336,7 +74336,7 @@ loc_37086: move.l #loc_37092,(a0) loc_37092: - move.b (Competition_lap_count).w,d0 + move.b (Competition_current_lap).w,d0 cmp.b (Competition_total_laps).w,d0 ble.s loc_370A0 move.b (Competition_total_laps).w,d0 @@ -74350,7 +74350,7 @@ loc_370A0: ; --------------------------------------------------------------------------- loc_370B4: - move.b (Competition_lap_count_2P).w,d0 + move.b (Competition_current_lap_2P).w,d0 cmp.b (Competition_total_laps).w,d0 ble.s loc_370C2 move.b (Competition_total_laps).w,d0 @@ -74437,9 +74437,9 @@ loc_371F4: subq.b #1,d0 bne.w loc_372D0 move.l #$93B63,d0 - cmp.l (_unkEE52).w,d0 + cmp.l (Competition_time_record).w,d0 bls.s loc_3720C - cmp.l (_unkEE56).w,d0 + cmp.l (Competition_time_record_P2).w,d0 bhi.s loc_37218 loc_3720C: @@ -74448,7 +74448,7 @@ loc_3720C: loc_37218: move.b (Competition_total_laps).w,d0 - cmp.b (Competition_lap_count).w,d0 + cmp.b (Competition_current_lap).w,d0 bhs.s loc_37292 move.b #3,$20(a0) tst.b (Not_ghost_flag).w @@ -74471,7 +74471,7 @@ loc_37256: moveq #sfx_Goal,d0 jsr (Play_Sound_2).l move.b (Competition_total_laps).w,d0 - cmp.b (Competition_lap_count_2P).w,d0 + cmp.b (Competition_current_lap_2P).w,d0 bhs.s loc_3728C move.b #6,$20(a0) bclr #3,4(a0) @@ -74486,7 +74486,7 @@ loc_3728C: ; --------------------------------------------------------------------------- loc_37292: - cmp.b (Competition_lap_count_2P).w,d0 + cmp.b (Competition_current_lap_2P).w,d0 bhs.s locret_372CE move.b #4,$20(a0) bset #4,4(a0) @@ -74531,10 +74531,10 @@ locret_37306: ; --------------------------------------------------------------------------- loc_37308: - move.b (Competition_lap_count).w,d0 + move.b (Competition_current_lap).w,d0 tst.b (Update_HUD_timer).w bpl.s loc_3731C - move.b (Competition_lap_count_2P).w,d0 + move.b (Competition_current_lap_2P).w,d0 tst.b (Update_HUD_timer).w bmi.s loc_37322 @@ -74547,9 +74547,9 @@ loc_37322: bmi.s loc_3733C loc_37328: - cmpi.l #$93B63,(_unkEE52).w + cmpi.l #$93B63,(Competition_time_record).w bhs.s loc_3733C - cmpi.l #$93B63,(_unkEE56).w + cmpi.l #$93B63,(Competition_time_record_P2).w blo.s locret_37398 loc_3733C: @@ -74558,8 +74558,8 @@ loc_3733C: subi.b #$E,d0 move.b byte_3739F(pc,d0.w),d0 lea ($FF7800).l,a1 - move.l (_unkEE52).w,(a1,d0.w) - move.l (_unkEE56).w,$14(a1,d0.w) + move.l (Competition_time_record).w,(a1,d0.w) + move.l (Competition_time_record_P2).w,$14(a1,d0.w) tst.b (Update_HUD_timer).w bmi.s loc_3736A move.l #$93B63,(a1,d0.w) @@ -74599,7 +74599,7 @@ byte_3739F: dc.b 0 loc_373A4: move.b (Competition_total_laps).w,d0 - cmp.b (Competition_lap_count).w,d0 + cmp.b (Competition_current_lap).w,d0 bhs.s loc_373D4 tst.b (Update_HUD_timer).w bmi.s loc_373D4 @@ -74612,7 +74612,7 @@ loc_373A4: loc_373D4: move.b (Competition_total_laps).w,d0 - cmp.b (Competition_lap_count_2P).w,d0 + cmp.b (Competition_current_lap_2P).w,d0 bhs.s locret_37404 tst.b (_unkFEC7).w bmi.s locret_37404 @@ -74657,7 +74657,7 @@ sub_37430: lsl.w #4,d0 lea (Competition_saved_data).w,a1 adda.w d0,a1 - move.l (_unkEE52).w,d0 + move.l (Competition_time_record).w,d0 cmp.l (a1),d0 bhs.s loc_37476 move.b $D(a1),$E(a1) @@ -74666,7 +74666,7 @@ sub_37430: move.l 4(a1),8(a1) move.l (a1),4(a1) move.l d0,(a1) - clr.b (_unkEE5A).w + clr.b (Competition_time_attack_new_top_record).w bra.s loc_374B0 ; --------------------------------------------------------------------------- @@ -74677,7 +74677,7 @@ loc_37476: move.b (P1_character).w,$D(a1) move.l 4(a1),8(a1) move.l d0,4(a1) - move.b #1,(_unkEE5A).w + move.b #1,(Competition_time_attack_new_top_record).w bra.s loc_374B0 ; --------------------------------------------------------------------------- @@ -74686,7 +74686,7 @@ loc_3749A: bhs.s locret_374B6 move.b (P1_character).w,$E(a1) move.l d0,8(a1) - move.b #2,(_unkEE5A).w + move.b #2,(Competition_time_attack_new_top_record).w loc_374B0: jsr (Write_SaveGeneral).l @@ -74748,9 +74748,9 @@ loc_37CDC: lea ($FF700A).l,a2 lea (Timer_minute).w,a3 moveq #0,d1 - move.b (_unkEE5C).w,d1 + move.b (Competition_lap_count).w,d1 lea (Update_HUD_timer).w,a4 - lea (_unkEE52).w,a5 + lea (Competition_time_record).w,a5 lea ($FF7828).l,a6 bra.s loc_37D7C ; --------------------------------------------------------------------------- @@ -74784,9 +74784,9 @@ loc_37D5A: lea ($FF708A).l,a2 lea (Timer_minute_P2).w,a3 moveq #0,d1 - move.b (_unkEE5C+1).w,d1 + move.b (Competition_lap_count_2P).w,d1 lea (_unkFEC7).w,a4 - lea (_unkEE56).w,a5 + lea (Competition_time_record_P2).w,a5 lea ($FF7840).l,a6 loc_37D7C: diff --git a/sonic3k.constants.asm b/sonic3k.constants.asm index 3a5c44dc..f9cc4838 100644 --- a/sonic3k.constants.asm +++ b/sonic3k.constants.asm @@ -343,11 +343,18 @@ Apparent_zone_and_act = * Apparent_zone ds.b 1 ; always equal to actual zone Apparent_act ds.b 1 ; for example, after AIZ gets burnt, this indicates act 1 even though it's actually act 2 Palette_fade_timer ds.w 1 ; the palette gets faded in until this timer expires -_unkEE52 ds.l 1 ; something to do with competition mode -_unkEE56 ds.l 1 ; something to do with competition mode. Wiki said this was to do with demos, but I doubt that's the case -_unkEE5A ds.b 1 +Competition_time_record ds.l 1 ; player 1's recorded time for the current run, to be displayed in menus and the result screen +Competition_time_record_minute = Competition_time_record+1 +Competition_time_record_second = Competition_time_record+2 +Competition_time_record_frame = Competition_time_record+3 +Competition_time_record_2P ds.l 1 ; player 2's recorded time for the current run, to be displayed in menus and the result screen +Competition_time_record_minute_P2 = Competition_time_record_P2+1 +Competition_time_record_second_P2 = Competition_time_record_P2+2 +Competition_time_record_frame_P2 = Competition_time_record_P2+3 +Competition_time_attack_new_top_record ds.b 1 ; signifies new time records in time attack mode. set: no new records, clear: 1st place, $1: 2nd place, $2: 3rd place record. ds.b 1 ; unused -_unkEE5C ds.w 1 +Competition_lap_count ds.b 1 ; number of laps that player 1 has completed +Competition_lap_count_2P ds.b 1 ; number of laps that player 2 has completed Act3_flag ds.b 1 ; set when entering LRZ 3 or DEZ 3 directly from previous act. Prevents title card from loading ds.b 1 ; unused Camera_X_pos_P2 ds.l 1 @@ -817,13 +824,15 @@ Total_ring_count_P2 ds.w 1 ; left over from Sonic 2 Monitors_broken ds.w 1 ; left over from Sonic 2. Apparently Sonic 3 developers liked copypasting, since gaining a life from rings also increments this counter Monitors_broken_P2 ds.w 1 ; left over from Sonic 2 Ring_count_P2 ds.w 1 ; left over from Sonic 2 -Timer_P2 ds.l 1 ; left over from Sonic 2 -Timer_minute_P2 = Timer_P2+1 ; left over from Sonic 2 +Timer_P2 ds.l 1 ; used in competition mode +Timer_minute_P2 = Timer_P2+1 +Timer_second_P2 = Timer_P2+2 +Timer_frame_P2 = Timer_P2+3 ; the second gets incremented when this reaches 60 Score_P2 ds.l 1 ; left over from Sonic 2 -Competition_total_laps ds.b 1 ;total number of laps in comeptition mode (typically 5) +Competition_total_laps ds.b 1 ; total number of laps in comeptition mode (typically 5) ds.b 1 ; unused -Competition_lap_count ds.b 1 ;current lap number for player 1 in competition mode -Competition_lap_count_2P ds.b 1 ;current lap number for player 2 in competition mode +Competition_current_lap ds.b 1 ; current lap number for player 1 in competition mode +Competition_current_lap_2P ds.b 1 ; current lap number for player 2 in competition mode _unkFEDE ds.b 1 ; unused ds.b $23 ; unused Results_screen_2P ds.w 1 ; left over from Sonic 2 From 73ade0a6b49da0ca62ba81abd1b01c2ed5e67ffc Mon Sep 17 00:00:00 2001 From: Vinny Date: Sat, 29 May 2021 00:45:03 +0300 Subject: [PATCH 14/72] typos fixed --- sonic3k.constants.asm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sonic3k.constants.asm b/sonic3k.constants.asm index f9cc4838..f6c22b5d 100644 --- a/sonic3k.constants.asm +++ b/sonic3k.constants.asm @@ -245,8 +245,8 @@ Chunk_table ds.b $8000 ; chunk (128x128) definitions, $80 bytes per definitio Level_layout_header ds.b 8 ; first word = chunks per FG row, second word = chunks per BG row, third word = FG rows, fourth word = BG rows Level_layout_main ds.b $FF8 ; $40 word-sized line pointers followed by actual layout data Object_respawn_table_2 := Level_layout_header+$400; $200 bytes ; respawn table used by glowing spheres bonus stage, because... Reasons? -Ring_status_table_2 := Level_layout_header+$600; $400 bytes ; rinng status table used by glowing spheres bonus stage, because... Reasons? -Block_table ds.b $1800 ; block (16x16) definitions, 8 bytes per definition, spece for $300 blocks +Ring_status_table_2 := Level_layout_header+$600; $400 bytes ; ring status table used by glowing spheres bonus stage, because... Reasons? +Block_table ds.b $1800 ; block (16x16) definitions, 8 bytes per definition, space for $300 blocks SStage_collision_response_list := Block_table+$1400 ; $100 bytes ; sprite collision list during a special stage SStage_unkA500 := Block_table+$1500 ; unknown special stage array SStage_unkA600 := Block_table+$1600 ; unknown special stage array @@ -523,7 +523,7 @@ Mean_water_level ds.w 1 ; the steady central value of the water level Target_water_level ds.w 1 Water_speed ds.b 1 ; this is added to or subtracted from Mean_water_level every frame till it reaches Target_water_level Water_entered_counter ds.b 1 ; incremented when entering and exiting water, read by the the floating AIZ spike log, cleared on level initialisation and dynamic events of certain levels -Water_full_screen_flag ds.b 1 ; set if water covers the entire screen (i.e. the underwater pallete should be DMAed during V-int rather than the normal palette) +Water_full_screen_flag ds.b 1 ; set if water covers the entire screen (i.e. the underwater palette should be DMAed during V-int rather than the normal palette) Do_Updates_in_H_int ds.b 1 ; if this is set Do_Updates will be called from H-int instead of V-int Palette_cycle_counters ds.b $C ; various counters and variables for palette cycles Palette_frame ds.w 1 @@ -829,7 +829,7 @@ Timer_minute_P2 = Timer_P2+1 Timer_second_P2 = Timer_P2+2 Timer_frame_P2 = Timer_P2+3 ; the second gets incremented when this reaches 60 Score_P2 ds.l 1 ; left over from Sonic 2 -Competition_total_laps ds.b 1 ; total number of laps in comeptition mode (typically 5) +Competition_total_laps ds.b 1 ; total number of laps in competition mode (typically 5) ds.b 1 ; unused Competition_current_lap ds.b 1 ; current lap number for player 1 in competition mode Competition_current_lap_2P ds.b 1 ; current lap number for player 2 in competition mode @@ -837,7 +837,7 @@ _unkFEDE ds.b 1 ; unused ds.b $23 ; unused Results_screen_2P ds.w 1 ; left over from Sonic 2 Perfect_rings_left ds.w 1 ; left over from Sonic 2 -_unkFF06 ds.w 1 ; uknown +_unkFF06 ds.w 1 ; unknown Player_mode ds.w 1 ; 0 = Sonic and Tails, 1 = Sonic alone, 2 = Tails alone, 3 = Knuckles alone Player_option ds.w 1 ; option selected on level select, data select screen or Sonic & Knuckles title screen ds.w 1 ; unused From d982b42193da386dfa35f94a55f064af0b75adda Mon Sep 17 00:00:00 2001 From: Vinny Date: Sat, 29 May 2021 00:53:34 +0300 Subject: [PATCH 15/72] fixed another typo in address name --- sonic3k.constants.asm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonic3k.constants.asm b/sonic3k.constants.asm index f6c22b5d..8566fcff 100644 --- a/sonic3k.constants.asm +++ b/sonic3k.constants.asm @@ -347,7 +347,7 @@ Competition_time_record ds.l 1 ; player 1's recorded time for the current run, Competition_time_record_minute = Competition_time_record+1 Competition_time_record_second = Competition_time_record+2 Competition_time_record_frame = Competition_time_record+3 -Competition_time_record_2P ds.l 1 ; player 2's recorded time for the current run, to be displayed in menus and the result screen +Competition_time_record_P2 ds.l 1 ; player 2's recorded time for the current run, to be displayed in menus and the result screen Competition_time_record_minute_P2 = Competition_time_record_P2+1 Competition_time_record_second_P2 = Competition_time_record_P2+2 Competition_time_record_frame_P2 = Competition_time_record_P2+3 From 46ee64aa0bb210c8dc39daf532bf80c17bcb3b05 Mon Sep 17 00:00:00 2001 From: flamewing Date: Sun, 30 May 2021 16:07:14 +0200 Subject: [PATCH 16/72] AS 1.42 build 136 changed phase/dephase They now need to be matched in pairs. --- Sound/Z80 Sound Driver.asm | 1 + s3.constants.asm | 5 +++++ sonic3k.constants.asm | 3 +++ 3 files changed, 9 insertions(+) diff --git a/Sound/Z80 Sound Driver.asm b/Sound/Z80 Sound Driver.asm index 8a07bc49..78c01166 100644 --- a/Sound/Z80 Sound Driver.asm +++ b/Sound/Z80 Sound Driver.asm @@ -485,6 +485,7 @@ zSFX_PSG1: zTrack zSFX_PSG2: zTrack zSFX_PSG3: zTrack zTracksSFXEnd: + dephase phase zTracksSFXStart zTracksSaveStart: diff --git a/s3.constants.asm b/s3.constants.asm index 67738a4e..4535850c 100644 --- a/s3.constants.asm +++ b/s3.constants.asm @@ -8,6 +8,7 @@ SStage_unkA500 := * ; unknown special stage array ds.b $100 ; Sonic & Knuckles has a different address... So uh... Yes SStage_unkA600 := * ; unknown special stage array ds.b $100 ; Sonic & Knuckles has a different address... So uh... Yes + dephase phase Stat_table+$12 _unkE412 ds.w 1 ; unused, but referenced in sphere test @@ -19,6 +20,7 @@ Save_pointer := Competition_saved_data+$B8; long ; pointer to the active save Saved_data := Competition_saved_data+$CC; $34 bytes ; saved data from 1 player mode H_int_jump := _tempF608 ; 6 bytes ; contains an instruction to jump to the H-int handler H_int_addr := H_int_jump+2 ; long + dephase phase _unkF712+8 CNZ_bumper_routine ds.b 1 ; left over from Sonic 2 @@ -27,12 +29,14 @@ CNZ_visible_bumpers_start ds.l 1 ; left over from Sonic 2 CNZ_Visible_bumpers_end ds.l 1 ; left over from Sonic 2 CNZ_Visible_bumpers_start_P2 ds.l 1 ; left over from Sonic 2 CNZ_Visible_bumpers_end_P2 ds.l 1 ; left over from Sonic 2 + dephase phase _tempFF88 Current_zone_2P ds.b 1 ; left over from Sonic 2 Current_act_2P ds.b 1 ; left over from Sonic 2 Options_menu_box = _tempFF8C ; byte ; left over from Sonic 2 _unkFF98 = _tempFF98 ; word ; unused + dephase phase Demo_mode_flag Level_select_flag := * @@ -55,6 +59,7 @@ _dbgFFDC ds.b 1 ; seems like a leftover constant. Existed in Sonic 1 and Son _dbgFFDD ds.b 1 ; seems like a leftover constant. Existed in Sonic 1 and Sonic 2 as well _dbgFFDE ds.b 1 ; seems like a leftover constant. Existed in Sonic 1 and Sonic 2 as well _dbgFFDF ds.b 1 ; seems like a leftover constant. Existed in Sonic 1 and Sonic 2 as well + dephase phase V_int_jump Demo_mode_flag := * diff --git a/sonic3k.constants.asm b/sonic3k.constants.asm index 8566fcff..4e5ce3a0 100644 --- a/sonic3k.constants.asm +++ b/sonic3k.constants.asm @@ -952,6 +952,7 @@ Checksum_string := * ; set to 'SM&K' once the checksum routine has run if (.check>0)&(.check<$FF0000) fatal "Sonic & Knuckles RAM definitions are too large by $\{*} bytes!" endif + dephase ; extra Special Stage variables phase Pos_table_P2 @@ -1058,6 +1059,7 @@ Mus__EndCmd = * ; next ID after last sound command mus_FA = $FA ; $FA - ??? mus_StopSEGA = $FE ; $FE - Stop SEGA sound mus_SEGA = $FF ; $FF - Play SEGA sound + dephase ; --------------------------------------------------------------------------- ; Music ID's list. These do not affect the sound driver, be careful. @@ -1114,6 +1116,7 @@ mus_FinalBoss ds.b 1 ; $30 mus_Drowning ds.b 1 ; $31 mus_Ending ds.b 1 ; $32 Mus__End = * ; next ID after last music + dephase ; --------------------------------------------------------------------------- ; Sound effect ID's list. These do not affect the sound driver, be careful. From 547d6150fd909da78c3cc6a7e4a152e9e10e1fc8 Mon Sep 17 00:00:00 2001 From: flamewing Date: Sun, 30 May 2021 19:14:23 +0200 Subject: [PATCH 17/72] Updating AS To 1.42 Beta [Bld 151]. --- AS/Win32/as.msg | Bin 17594 -> 21939 bytes AS/Win32/asw.exe | Bin 1458190 -> 2926003 bytes AS/Win32/cmdarg.msg | Bin 307 -> 307 bytes AS/Win32/ioerrs.msg | Bin 2719 -> 2719 bytes AS/Win32/tools.msg | Bin 451 -> 451 bytes Build Scripts/build.py | 7 +- Build Scripts/buildS3.bat | 2 +- Build Scripts/buildS3Complete.bat | 2 +- Build Scripts/buildSK.bat | 2 +- Sound/Z80 Sound Driver.asm | 2 +- s3.asm | 690 +++++++------- sonic3k.asm | 1426 ++++++++++++++--------------- sonic3k.macrosetup.asm | 5 + 13 files changed, 1073 insertions(+), 1063 deletions(-) diff --git a/AS/Win32/as.msg b/AS/Win32/as.msg index 210488ffa6faa8a1ae3b053dcfc7316bfd11077b..96207237adc1cc917e7cda1351ed231390d2c8b9 100644 GIT binary patch delta 8202 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 E3qDg40RR91 diff --git a/AS/Win32/asw.exe b/AS/Win32/asw.exe index 2f20da3f44af7a742e37a22b8e23764a1f77cfa7..f8fd6466063354ce377ca8f587a662a7d3fa877e 100755 GIT binary patch literal 2926003 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 ZAWX>+Bvp&cS|7j%w{Xa_TEh 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 w3iq>Pc63EUatbu9xv=?)8yR1~ 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 UVrc(o%VzRCr!p_l4gxsN^(5 zrIJ)W+bg6m4H2JXFOkYr0BI`xoHbVtVQaQ=b_YCPvn_GP8&mxsK0HmeQ?-^7cSrp)y)0Z}t zpmIYP74Bfx_Y5kBG(!a^Ul9LXTl0dgoZEO^fX{Y0RT!hjZApbZ3iB@F1_7U&NGCBlF{v_O$R0CZ^> z&{7N3hCoM!0exzL+7W2iFd#0KXxX(V(675WEXesx=@VcK(6$8nFboLxV}Lpl=%p|q zX5=)voe6YX7?9(&LJ%5V=;Y6 zpgCbchgqN|0*wm;>T7|1B+w0EKxGza1A$Ht1L|jiHWR347|`Jss9+O-io$@701(E% z{31X=*OOoG#ET4iVNI^i9~(PNQ4a4ni|{y(Xwv|zlOarr+r-C#*vY69BX`eKX%BB~ z0)^ZLT8+OMsJYUhP3>f&9-59CNfL!GzR0_Krn)rf6Kppnz7O#?1K-aU-)Y3x!QxZ- z7~L$DPI(0(oKD^xTJ?VPpbT_BS#;+U-Hc+t=V|EB&fVYRjYfY7Yt)Yx%f-ZULpCg9 zJLtX@hM`$&(Ogb6y|SX2|E*%t4E)XLlasr=nrOb=F-xDu-m1}z3Pba&ZOyer^JG>u zeKnec!qEI;(OgF~=Vzcv{f1qpTu_w7BxtQ(OrisBe)TC;_a)c2eGUwNU+MD~tO?zJ z0tr{@e$x&=Z%!SIZAfbUI|F`(ZR11C(M|(=2GBbe=rID_M<8YlQ}3b`Y`1tqYqN)xdACBn~034l*Q+sa=cxsM`K+y#${#DE@9S^d*KLI{C6^ zTGJa#9WxlnrVI=lErvf6!%GH3YCX1+s&(IByVuw{<*ajqUuOyGSoxTKerw?e68;1q z{xO_x%!FTO;m;=gE(YHBMX4Qd=+Nw6P-~A&%`Qqk1B7}lvPds$j^U9BwJz!1H#2n- zyOp*8i~YOQp5dQEoAOJyql)Wo*^VfiNQNdW(|_o~ALuiam!$tt${(0LPM*Xc z@=MpgIWT7;eN6J5#&!PHKD^#X&J&QuRGG!w%l$K{-WUIDT3L6-6wc+}>JOBs*B;Ev zQ`S9s-ud4B4V}3O^&Wehjp|kQ{inbpcEZ0Tc5MyU*IT@=278S-v!b8DUk1WH7JQc^ zJvu0J^uJ>r2RrM`$w#gC+3$O~3k=B#x$oty?_}ja^JFbs8D$BeJ{5! zUl+XZrMR+R9ZA(O`8+(24GnBcS6of4j|)X-VjGFty|x+jiV)%HHn3Fcs~C2Z(Z_2dHzTUFzq;p{ScP zab>2u(O2D7h-|m9{fEUi=}U}kb9ZWpty~jJZeNoN({-;;(fh@g*IwFD z*0V$Z-o_~%Pt>i#~biC)HcFA_z}8(Ci{sF#_^VH z9-drXl8T~aSl#J88?djYqjmv!CDRCAj7uB6Z{+92M00jGo!LFh^_uhbjyLRwm2F4M zaRasA{z|sLmumkzQ^MOnh#p9{f7ueatQWPAgy4+Td9j5J!J8I4=Qh>o{r71mK);4w zWgJJp>sI4m)OLIEFSQ4=!L>JaoFDg!8LNbCB?%BHj{t+n+ELAZ)Sg8(2U=^rKR@IEoq_s z(*cmR{fY8f`N1C41=`=Q73~k>eJ9oSEbnvoTwZ&f)fdtCveNhpVfn+8MPv5X8vj|C z#y|C;&s9G7C%ePfaco& z^#>9KxsD)9Kg##db9@HudrR71ck>ptpT4AvYJIc*rkm6HI^}P2qsL-X;hxyR8Wcvn zF;V_qE^Y=JNe89<1uWzV#{n#T9}esc^?M?p0dr0~6-3l+UaVmx@EkxmZEjikL51W> z1OEEQ=c;ZJUUUfh-`XzX53cRVOHW63@$IQiZ9h5#dWDZ%k8lM*;*GGWKh<7d!n?GN zQgxz-#AX#6%jXWRJanq*uDaMP-yg8_+xHyFqxp5-q@y#5v;|I(c)@Wyw|qzEQ=@Oi z^Csmc%GdVSdp9e4kBIJQ^*>c?StRG5S7J}7?sw{UG{9kBNIVqAy<=_^?zM}lSOg7k zAx@K94=VYLx)`TK1Go|+Iz5fwZ95CUqdNzt9X5G^ex*rk+0J~?f?JP z3jegpMar_b3h<`Ki{+A)XJ}P1h_LBmwAzbrJ?PHCF4La?N_*~x5 zhd8_T%tFp2{<@RwxSv~a4SlozU~eE|SlK2(B-3I70& zvNlniz$Z5T>)GHukY8U_w^BLf5!XxV7{PwsXY&;2i)o%bop5Lpe@oAykb-X+fmkD-6Z3(1Ud*y7E z2tXCyJ(nCe7l*sBC%FC$sBB{a`;y1|ixddP^>IN=m*wfM?c)%hL7eQK}k) z>U#dCPNQghqv%|j5s$3C0M8(Ur{XM;mdMGg8Vs7Lk8qTVguTfhlZ&TaB1`>3FnK1v zSeg^=MoSgp39O_D*PdS}Pvz)~(>l5Ji~ahv2vuKf~25sl(SSlqX=Jjbj03bpI0$C1T}fsR8N zs4hR;2EQ;MJ7BMj0p(B75|T-N@YK4^7{m3eWd{#~;p=;bs8lgEaE-tX{UA7n3w1)z zJ9#0*Wn zYo_Om>PV6={i7tV`yA9-Ha57hv+Y~1Q6_;}>PBaJu@48KwLxR?xW%v+*VfvUn z2{*k-pU{gdwYe}rgjMNt>77&U=G%y81e*0z^UX59(uy)0oqA6@0IeMr_lhJ^ql{mG zWi*p-yJ=q5d>fUR&cN8r2iJZ_AO8;>$o|b7O+6#h>o{vD}Z7r}FEAzIR zCH;vl%y_m0v+2hnM+3S#4*`M?ofqsmUKqO;d>w}Ph0@GLyy>$Tcf~w8*Y6kgBDSzs z2!aEFK=QLX27Vf+HUBvM>UmRB&aU^=x)t)CI(*YeMDDtZLE^W5JXb%8E zG*>B)BjHhOUR`E>P^X$ygH^uF=l@B3Z^7{Y7N7rbTmJLtW8oZM%zpg+X?*QeZXro- zZBWp9E`ZWh+##$DFcojgENMYJJfy7cqpeqcz0dEo^Wj>4UiDf0T|3c$&$}}Jav&+-JE#zQaz2_Uo)8rQBDDzEktJY^o_lp^@ z5%51vzLylWAm8%Hge^}t%OGcDI2<+cKkeSfd|&pZij ze;Zsus973`UPL1bk2hpqHc1VQVB1G)eYRD+TlrgF#f7>{6=!E*%j%}5ls~idamj%U zwZJzP`21$rZ@IXvLIRGw=#$nPA>cUpEv2q?xC1A;4*^#yz(~bMS(?z4 z+MPHBU2es{aPA%IF8QyH;$MMZ{AU=0k3rf1VfTrK!8=(7bAWkjy3b+NKfPF)e35tZ zY5#=xBN5V!*dew7H)B*&0Lm#V$HoAHr;;>RrgFl7ZbgfFz7Ga__smQT-mZfnrzxCn z@dDWfh)1HGJLN;9;tAbLueu-Raas8BYw8By#5mi-4J?!g8oVI_Ju-S*K7kqt|w& z<4P01_RqwXss*{J+k#GV2dCZDOcgfkJcrZgoy1(g2t8i|GgkvomQEg+ijaLWzZDSN zF%?@F$!t;cy)(aNnTfrL`MQp$1DFx3b#I#J(9it+u%?)98CDvP3H;9Yl+WiL8#oB- zb!h0*r^3*sU&;d7R(uBQjDBo;nHz#@d*V`NUU!DX+l&G_=sCKRKnV@F7hpFGd{1w2 zQq!4$q>@)XM}6toU-VOFr#Knn4wdAg*e<1pwfrddFStvTdZu3g4ul?Um&oTH!<^W> z*-8O2Ex`yOd`e<|4HuE2Oh2m(I&Ixg)`|Ufzljfruba6m#V^$(TG$sY*WBcMjJc-N zI$z(moWGY{B>X)gz~5b9&6=;mR0L37)stkpzL5l(mEs>=ZR$o-tpZVlHaFx2E$H$OLcm$Q2>H6~w`iN$+h2XlFP)EXc*N(QxOGHPinkww z&%ql;&X(*qZy5Qrx?x0+74U|UA@Y-R!^o{9Ah(JP$~h6Ac&kX=X6&_-TSbQBQ}VJk za?ftj%UhkuV2IT^JBK zrGa7u`nJho!MNOvHjO3FJQrwan+%{@0!<79avFXofo^hvR<_N+bT@&{3In2yb;Iu` zP%js#Booua1oB*<4u@rsdyGKeeB-d71GO$)Rk)QhIfp>%3V?A8`o=sDcK0cGL_WWa zGe~_3xY5ZQ(*ZA?`#QB)V>`e$zT;+K8|jiXK+fTXVgj8K26TkQ)R{p0g#j_!sd-gG zpu#X9S&UKlVeCbq)hUM!rcFCqOx+1IJq&0!3$#Ch9wd;J1!6wJC2xSnS)hLrXy-5>PU$sEUMJAcNvF34)5{iU3V{}f0Wp}>nBFAN zb1u-@E*a`GgFs_kpt{Z(K(h&SfeSQr=M12^1S)fZ>WVXf77}Pj7ijGc89?t6=*O=e z77XpAfH<+yz59Sb@3=tyJ7!?|h(J$=0Xe3>oIo)b$dGe<)@KAdFANB4nx;*w3DhSH zh|>Yx@UIEf(FGd5T}H#dA<*|1;Z~U5^aER;ETv?nQpaXcjfw5uoh=Ay4EwS^+K>#k}FKXTF!Bi7g=j$u+}SKwNjSW ztE~0sV6D+%wU*ji^{lmZu+}kQwHDi2(^%`@Uj(?(A*|LsTk9>>dMsG$W3D#^xzS*2 z&19{=1#3MXR%@-T)yP^01#4XuR%?T;HJ`QqSRLqB@32})TkCDsnj5T@8&+$jt+kl7 z?h4j=n`=%%Za9P0hpcr@u-1KHwVcswDQoQ&tTi;OmNT4v!dl<23UH%)SS@FKTgh5e zg0+6)s#dUH&Y1rNYsG@KriayXf`BAzofxcD6IRQK3f8dJj=@@|gw@*H%4;oaeg1iX z8=b>yIp+a?Vy)+bwZ7s4QIH$XDV<+ft0GwI<*-_4pz$^vS?h>ktx;jMM%Y@LSZga= zOX9V$gTiW+*jl-Cu^+7TxuI(999FA`t<{FL9<{Y39vr)tt3^R>bg;GBvDPKQTG+*& zS*sYe=;S?Afe%jhM6FaEAendZY4ne%aiy!JF_AR#f;8@M`(tYL)-;~hG~W3PG%f<9 z$;V{SX|!}=r1LOpxY6I(G`<-+eBe-zBV$?X;$W>WTn?C8OKh!L);b_q>&38ID{QSh zS?kvoffimDR_iNU>u%PX6|8k+Sgr4Dt@~Lk5v)}dR%^Yj^)PFl5v;X@>vl$q3^z8} zT92{T?xt4iDS-D?6OvmW#%JaUOzo9gKR&g!N3r(mPkpW^%{|?vX=?ppYu(IRFPK`X zy|d794wE0q8aJ34eF|h2Fm@G}-h!=jj#eMST1N+KJs(zU58JxKSj!968WC2jyRCHu zYc2c4=Y(ou|FBxKY^`$Eni#CrF09taw$=dFx-wYnLoV6{x$(ZObpmT08m#rtuv!aj zt-r8VBv|Xxuv#;1ty5TQ;qm}C4h*a1oD4mkweAhp`kgCh!G3*XX`RJd=Lc&whSgeS zYn{tl-Ga61!fJhDYhA!v>pl+j>+G;vAKF?MvDTZxTBTvN-nO+aWv#KnTHkR2FUXDA zw$|mWb#ky)eON8$RPWWSwM($ptzos+SX$Sx)|bly+<4QC{*Cp2VQYm(+TD?-k@1kZ~t{EMWUm*~WBRNe7z_lh^>6q*z)hCx4X z?wqfZ-LyDg^%<56@{^b2kQ$cYn>{Zxay;^^eEkdiiNDUP_@t>;4}bWs&i~f!g;6%Y zv>hi}4-Qb!KVho4M+KbiNlv zMd5(I@*@c84gAb6)7E%7<6qNXUgVdT^_TJdQm?<)=gqgC{=sP>1M>NaqQ(m-@zC^~pjU zY*S1ejp}^)U8DFO<7#Yne??L?+0%K9fdPK{ra zKP-NHAr=Do>N6-Q#5k)0az!hjl$>SAUZ?5PJuLaJ5SW6Obl$PLg zZMod8ozKv~EaWBjy_Zd?E$>=LmALv6>}j6Gwe2raipW$}U2w9DD#6_X0;rE#zKE_h-cCSf``6`2$DFP*a^hX;<+%j}4&aGpyM&y{59a*l+pKg4l1lBTtW^zY%u2 z=25zYz6IozcLyI~X}ZJrN76&n4Yzyi(CWr2;apCtE7t%;-$49n5-)ueE{^XR7|Cjk z^f!7tx}RP81e~M%C=jywQn)XO7w9cHR~{`-LKo z2Y{m5mmP0ZTMLtW9g6+%ZL3y?cPNiw@UW0QcvWX|qsJ)%SZ?R#IhFm`5q#O(Cy*-yqI+WCNk?8vZfRm_R)gTyCAGE`(x&xm;tq5+mBM#CGjt@j^fkvYljRkU%Lvm}- zM;i|S9&w2Lnc&3B=mMb0xp-$i0=hWVbU=<*^&QmRn>4tT4-0YpY$vGjWeHZZy?dn$ zdz6;qTj9XcT`M`wUQXDJlPKDy=q#$Jdehn?13LpX>iSu((Qq$ z44>JX{`kw@l&6M6%h{IafKhAYJIKXQM6ZJj7;3#S&tMxBVEi|^U$n5h>jsPg2&z|( z?z*{~SA8A#T@5K6Y${2t*BR%I6VBm0e9uFdf^ubJKv>QWuKQjFkpprjd;<|iyFh#l zkd);W;HjGG{Q=r2g?Op+3K{(^f0LR^zvCzuI#m5Q(F&I;-k0alz@h3D@E_pDfZAy3 zAP7TAd>~rf8=res9uBiQ4BeqFbxD-Jki$cvn-lp*dR14#a;kuKJQSGEp}hwCuIwkl znr^69eJ;ufvmI?8+8Ik$_Pd#?Ifi?L;K=yIZE}};;mFE-e*-|#k0#yzGHHKB4{s9e zNeS5lFs&<++QIriZ7!+z^gb|y=R1w(C)_VXJ`5Dw@Nvxo2I9(1Euh>+u%TjF0LzKP zv_825*J9=KH|1yXJ59iME7LUoj?&KPDdu-9CyU#e9iY!Wr4YNg9KyIRXEl zQc8o;>PKq2us+{KV!963l*}=3njMUX4gf!V*F+T-w^ZhPux{UKO~%nk5U(9rT8!tH z#4&ZEkBcwRKB?Qx$UHfh33r5c&|BfM8v=`~8eF=ocs1*6EYPpw2 zyE`!95v)$I#qoE z#Zn^x)p#mmKLC_(7!i}0Z17-hXXwji zRu`#0$H7E4o&Gqg@9GzQ(6Q`-0 zfo2Mj=9G2vst$+zrhvgYWjlCPJ@Eyadi+#qcus0BeB&di_c4}(pBqwxhC&Y*3DeOf z21IJ=7~6q+gKOGLvGRj5@}>R++T4^phS)oLRYjm#*3PTyg1?wq6j#If{XjPg_Qi4K zMdh%5n>Tr5uBTjP_OEGA-UV5gYCr`(|9Ts_4DK9;zmVKzXmN7uI!J9_toEXyBOT<% zJ5jI;3VO~@ora3?IC<(sd_n@N8~tK2#0@LKe@fE%R!S2{KlLfJtZZ||?HY#T2vwxG zX#w9Q)wS}JvuK0)NbTvh;L&WBKI+jBZvQ{FDZp*$x#P8G{MvvO1(C`mKvV@N zPa(Wie&l2Ns56&(z)bwe9$dR$_44S>&UM%H4l503XAbWZt`gP!6Z`zKTc6FS4jMNw?Xo= zFEa$0CxY~z9n$n4ZnOlw%&>u5 zuz?6Ju8Z^|-3G4LDR;-;QAtu zoG`6dwmDh_-*OC{aK&x#E!TpDVf;Ju-~R#sBrUt;`tS4vQ#g+2H3M_?Ekn{R>Il@*xuLv>jDU0Hqpy0@lQH;02Mo=SyPA{x#*>s-rEj23_Y0)`33= zu|LRD5^g~o{8ukY+wG&SlSmv{oVccF7@S2}@_rnT@}_s95Mmo6Blc@4O2Oom!Bg!A-jou1d! zBaGVI^ZnGzY#Ex{>T$SItG)@khEyB7*cqsX>H8kN$>mr#!D%P1{3SZqd6SQlgx`61 z9|TO6@vW-Ci~_;)v6v2WZjr3)Aqv!4x{*Er4ARO|N0D);u02W?<+_N@Mc?t&sSHP} zw0~#B{V4Pfe*Fa_o=2;&4D?u*ak27US1t!{fn2PAXl;DcpsN^8^};hEIN>Q1wg|5y z&5I=?67%Y=;e0hNhc;cy^Qt-1F}1(K3mo30r3`(W@DZcv4Z=he*tG^(nuyO$P60$s z+YrZ}$X|<-gwBZL*aytUwU2Wb1?@wHX{n>36`7>x>Sd0TgtU9l*%rhH7wj)R3yTkq zv+)6sr1R+XK{)zlxCKSvavukJZp+}n&-)Xg7_S<|sJa!3@dWZ|A@S0s@3?x=%6Qk< z>lVhl!aL)bsSSu<)I~kGaaEPe6VGXu{ynW)4N<-;mGp*JH5>hm&x|eDL}&FFz9<6X zJKIUNr>3Lp5{W!q0|FlMoVSA-pgrVYZDU|(8U2YZ>~9AetuzPND%xL7MakxrEMusC zVLH2m@j*)~jSpInXEl%}?wq(EYe#4L zo@XZR^fwB(Ir=OxU+yrHVW{&}hoKUBi7fQOp$@&25*H`0vN)-c$GOHXEKT2j(<6S{29}KNYI~; zyRpp4a3yyB*nsw!L5VeM@eC~VLSK9-?c*#mFb!!$mmU$-L0vulldU2|Wu|{CadEWj zsy~m<)ziO=AmOy?oH}9#$?DW|wq$%}bu)Y9*df*Rj8nHj7O%|Y_OGZOpOsvAmY(Cr zXL?oNf|c>5-4<8&JCV1JS8SW8y8)<%-LjEMuqhxMOBSSw9Gh11OA|x3%}*X#%q!ot zzzWn%WCBGa`P?u)T|3v+(^ihh>aKca6!br>^uG_qB=<>P>IoA$r3+zof!w7fwb$CX^6BFL(cBdm>+S6Ws_n_4}w~q zaXEGtG=XC`-SAILM)WVC-ClAwlMxj=X(eMIZL=}kp;?ah$zVrkz%kn()Bai9JN*HX z&csd8xHgu7pxR87C%ZFh1{o*+8q_bHq8=v4;Rmhu`n`pLW@;vcprAwP}MuIhDo?Oz=71j?Eq@tI{0DP0MBboPIB&KQ^{={p>oxqIX3ClenU^D|X%W!r}}s zxZRtsP99e%Oy&%?vqx?aU|YJd_qf)3Hm;zCE8IH=YtxXnH#w<1mUI{Zm>lOJ3)VTg za9b>>;e(zXYriG{`2sN22LOKQe;O_1RnD}uB0|ee^p? zcQB{#$(}4#d%j`~dO&=V9trFVorkP!aP6v^sH<>ioXGV`PDKe6s1FM1};ycEQZ znMW&(*=)}ysp?xWo|?RYBNcE8Q4rUelE-v_P-J*g_Na0g9I706ikrb8OeHY)`0TAL z9`_Qf*}BQi%m;$%9YL}J>K*ETzl7SQ&j-jy<$NNXZqEMLVW-;fcJn^WK=Aw;78I*L z1vwi4Z#65nuuY0*Vs$$a)>qF1NXB|Z-`&|NTpdmK7W)kt#{E z05e=}*wD5&g11pbFX!X=N&=TxnftLt~_OB&TywK^te5o8rk*kk~g#H z-6H56EocVyPvTi)NBdrb;qqA&r;#^|*Fo2vR&BRHUr)xHqtuLNphYUjJ_Xy-a^Cud z1J98iajof--u*Kwm*w!Sz)}cbJ=L{|I~APYqMcQFek8rzt1dqChRWTMGsI5uf4dVS%O+A#JH0G$c zglf)=)XR*$fGW#R{t}*fwuvL8U6q_U&CyaX7DEHJKvPZoVhw!HAX$Ch&zqq&UiB3~ zV`MpWIAqxuMgl*`AMa_1H>S85fPRr$&3?@4kkOA;>DJb0{&+?Pe)@e0FmwMW*`K^; zAV&MO-ej2`m*qxxf~Ptvxj##1CdS@`Ms-`vtq3FbPws?5An7(Yaje>%Fm^I90FlgZ z9=_T*_7TLNY&rqAW-B6C?1?Q*cAJ~r8yKWRxU|2f*xt^6b32S!?sfe)NrBpAtB%NU z0-ZXAJW)eNEA2UTHLGCYQ~EWX@=o1Hvmsy6jK-WM+m2thl6D02BefjxA@&1%_UCKF zOZj%fGo{()Ydyj6%zWbN53Qa@ygP0OA}lrxcVugV$JWjpcABE2#o8`P?#0QQNJK4+ zVd-OI1oyt6G2{!q%U>X6ql+J230*v#x~TYE)o|S>GPc7?#NA@b)FZ9QcXA#Iu-7qI zaG6C77P`@SlJ?|yRm@COvQ6>LliUle0MV6g@K7-r9AN)SoE|R7h*5H)*+QCm4zr;x|e7 zIe`x*?uBMrnkdiH_NmH zXsvLGAkHN5$bo9bn(N(eu+VjXO-4@}wT_%j%WHLhE47u@Pdi^`##PUk|BjDvEHYod z;csSq_#T>-{rn4)l-#lcXWAP#PlwJ#Rkl)^?^SWusTPq`5EhwPIVv|&(Ydl~kI)Vd z2Yf~}yx$H~GmVi~Uh06Zt4d=9cRK6~2<;&CA2mMcQv|i;xZ%DcK5PB#l8Rx_M{Y#I zdRb#7lZFr1bmI54nK49`F)LnxS5Xm$RsX}tEq&$k5HoF122}a=XLy+c`VHZ`=hLD% zN@gHo#-aXn*W%=TEk+xO`gTLwfug-1-=!1jrh1TLfV9(RL+teJ3tN_J@0YAx zujP&>Y>%{d%I%R>i_P{(SuO^>#4$z5>lV18JuN8OWoSZ%Xj{$qCS|Wi51vgNgZ;pa z2RA2kEM0iPTUIf3Q4uHkcWHYnY{a7ZsKlVnl?YD9Rs&!P5+B&y9IbGSU3mc9B<+;7 z+5zOgn8gA71&z=t>nIKzu+5PvD?q)8+xBEL_4L0Q*6aabGo(H3mlmP)e?1-;B{TkG zYWx3%|F{UJ#~gJG9S;^iZ}rTJ@zRb=|M3k?C_%tO~ zd1y~lbMm_fHCp-RNgk%^U@*jt_xGS3DcQ`X+G(x(#IpS81;(JR1ej8TKPV9He{8LP zKM&OS9+4api;mI;+w_FHZX~Fo7oUNAaB38r*Q3=5;YH76@fpXW)y55s$H7C@m!2qf zop95h{6VwxK zOZs1r9}G^|7Zaq6YWu$!KT6MOS#Ro|boGWKMW&xQ)7P6OH~uV2elR0LU)=dbFVJ^G zPv5_IRoo_GB8YeJd8&#a@cstAh@{=*&VRT)?Tsh0c!U=z!Y%P*9Kejs89yt3wx9NA zQ&+&vsoUF4-d`e-US}I6>WBJ9wRZJO_eN=&3%Z|VM&z8)vw>Gyl<0Jg31vk)WclZw zhD3P|Z=oraA&m3y0R^HlRpZG&UZx>;;ZMM~SP~%^hgy`3ye4Bd{aG7UjGn6I0{vJO z?;{i?&Mb~Ei5A3HB+gW8y-FTfEB{-3aq{E0tl*I^Y=VLyCiKunIXTf6`-OzRBwPJ{ z+AeUulN!h;`O}bC8rnM^LFS~s0gnXN5}pPFXNJRZ@0^@ZTE(by}_;2t!}GIapj ziTAM8K<#W=L=Ka^imy$+^=6uCtP~ky=@VHPQ_snLaz9S1{Q27PxKxNcB06(}np&cV z{?lo4vs$wLWwS+XmRA)cvB?`$n`J=-hf5RD++4ltKJAB}ulj_;>BLNyXc>cCg>7v1Jzo$(KCj;Yl= zCpc(*s@!67Y}Whte8ZK^9dB#de2Bk}5W?3m)B=S& z;Bwy}b@Q}w&`m|6IN2~QjReocmgQGeq?w455?>E1QH+*Mk42xCtFn4x1|YKbF%VJN zPyR$@R4Ji6a#>jp&SQ+`OqFjGQIU;1dVVm*A+DrpIMvtm{BaHN>pVR!V~IV3b}K7u z=}e=Vw2MD5`kiSPK6}Pbwd}#>s+l0;-T6G_fT=XMEV)iZ!zOiOd%W>nGkJtgpi!tw=88^NS?QV8{diP|<8ZzgnKcOAz^9?z_SNYrK=#a!w zJfc75JrIVOOSm-$;3A3??O4oXBQD-HrEu@g&^`>^Rxgq|?N2AitZs9vqP# zBDJ&1?k@RAi7|bQxadJw=i8_uBC!5)k+1VjcWd^@c{O*P=k^oR?Mvrjz3Su8nD|}adw1p}%U zeISbqp0}lTwh9%rbw&41n>`(m-Wfywom)>N+`I(vMi;;GOS$ZsrivW6gKaiO0nyCRd~VMDu8#4NkW9b&fYq_|`S?+bQnSbtwEYrcPQaJD4hS=&tMI(`4 zy%bpFu&(QkT0H~XbZ-`|tE9BaKQ`zpr6DryoP9jTi*v0mv_4NM2?6EItpAU8(Hd&> z@*?0@die*uq0!5e{L-(3KJpB<1@n2C&D-_K9{;sIp8a!6`sf~k$+q5{e;oDEpC*Rt z`W$$)xW^}ctpwZrw*dkL9va#{dBC+ zw=Sq>^lgP-+7_jb1LtU-It4faW$ssOb1jj#oZUji2dSM=FU_a!!`>;A$ndA?9aps) zdrijJE)!R^aRNi`d5-sqH64LQu5d~+Tn~m}_nh4faK^Yy-#&!^lp3%T!lDP%k)_^V zKT7n_zuD-)d%@RHJ@CS9R?PKcj5^uau6&4b(DsJb&ZpbiWQsi9hOf49*kJ z3_nj?e3!MWYxi$mLdUERw_4wt=1BV?Aug;S%Xg(aWzz|pZJy_t%%wXF7u>?;ha0hVxm`> zp--uWaHn-9FEm#d82h~ENQ^(S?5A9d;zfGQKOERq%dz3gi}4b@|BJj({AtTRQQC-C&tBZ zLLSC1{oW6L>3J)lR*(0oZ7>S?@ufO<7NUs^omjk5vVVBWW;k@UFDKCWWBuV%g}#yV+i?b#@*-349jW9 z>Bv4!9fCS(k?(xl19v^f&fiM@a( z;M;%`|8iahwXFUZ{wi(d*+cCxD9p6@_pp}jwd)vbum9KauCb%n(5}?sw%yv8v&6w| z#`}z5n93!8vqADjN8@6$AvQb^UKzZ8i<^vw)gcakW}HQ?&3pi zSq2qFZ%kIE5>iSGQnBzI_-ta~8=R@}{~!-|MOBt@_INbMM8rC+ry}AMZw4`*Z?8Va z40i^+F;34fl^eHdxBvTmNq0P4%7H3-{;oCok`E7UIbYI0X7${Qoub0UK#rK(%tQ8L z7A0fx2$)_NYEdUik&wP$#Sf<$yrKeMPx=Hz4 zj)$k?o3Z0Hhro`H=FiIiwSGLj50(7!Fskz{xl=itO3AH#YCf-r<|@z;wx+mS!6@ie ze(7A4rjH)WQoMOOy)12bLbz6vYM%k~Y3f(BEN#?j0&?9yXFgbaFrR^f6l96S%nH$b znUV1?SKv>;YonMI?k0^--=lh=89HEC+0Jc!f~Q;I6lZvouPwwq2Fd3aD{FZi=mjM& zH}IdUnWgV>8v&@Ayr$al{6_CeXWrD>`+?1V1=(KO`ul;iw{g|GY-8$B#~i?iH2&7N zg1=38^Yg#p?`RQ^<<5zgt?1Dy)+M(c1g*}HQ;RO4+7_tH1@ zqi4hgA`|kpu0zq4f-9@Wu#79zC4YuV@K&=#*KiCr0A{AzDdxcjCdwqQbyyEwxwJqg?`jHy9H-lc(axoWg_^wpS~ zzO(4Q8+8BjcPvIdZ4I@p6H1;!e!fXZYXJHf1RIhJL^8H49KEPAh)1(3m}+Gt%DBVA?;B=*&Kot8op#s2S<<6oKamO zfa1+xwk)r*6V(NN*9b{*(Oe3GSJGnhZi~w;^-6QNN9G=fA5Pn$*N#QH31gk25?H%y z>51R`e2QN4k?U2xNn-br8Ms@2>-dkA8{2qQ3)W;ho zCgCG4$&dFlk;-h8qSXt=rP;9~(?I6w>Fa_r)i!+t5T(T*&U`m|u3GCk3D(xCeH>tA zT7dHGQgQVm=U`{UkFd4weDaEY)8~`CUI`Zlb($wgt`~Noz_QA`ptpK1_jSteh=TrM zw{wgQb5-|_1S@n3>Dm+ErEuEY9?`3~NT-elFnCb;bV*%@5gsLkQ?f*~1^ddI9&tlJ z|Aoc0_~h}B_ypE2OyggP|K#n<(D?5tC;rpkqbRw{KhnI1?6ck+oq>o~{Oss`ux|CL zR)#Eo{>%}MpZ`CO?;!s~uNB_po8(=vZ5l-lj#p}ceZA=xgX=0knZu~WwaUbiO3U?_ zn0rhc`j~gLU&_Q}V%!OWsp%fW3uX68KI!(+$n)c^wvV6yZ~J$ceGI$htIeM^&CJ+8 zG_YH`efV-cs?N%_AXbFpYg+e6jy~_F%`mHpeEm21F22Zn zyWnKexM%PLGeTK#jD|O;(402}?sL}=M zP?iD2N4AsaxIizTtbjnxwCQ|eIwTCJy9K(4K-;=NB|{XZo)+kD1X^>B!vX_zkOjJu zKyzK7;X^YT{&xaRaDn=tmjN__KsUNTgC5NQ8cm=x0R&y{a3j9pZ_zPm4*sS+>dhde z2aZdnJ-tLzfO=<^fYWK82tzD2B5$e8mAhpz) zPTveQI04hQ2S{x;fY`SOTcGwxUVxJhwPI4c!KKz?bcUAvlhjVv)E;Yr+WtXmMCfWs zdzV^CU51uCPHM?BRNtOxfm%aupl?LzYRO|j6@YE47)Q(Z6<)&x0x+adnhNsNrze?E#P{W z+RBj`eQPAO!J69K7O3qTq(+2p-?k2;=Jf4tQu}JK>f1XlP@BG4GYZMMd@!TPp(cHM z6o`Ba7&I!QZ|{@Zb(-1-El?X2q(+2p-wp_)=JahTskPJ8mbE}_)uuq-9BR_H8K*jZ z8$K?>-d2#>BLJe7eAWWBXpkBay7qP|5KUp>R2o_RY9jv(OPD@)O$+d=u9%-9(9XIA z-?Y$zAO8sS*J*)75AU54(qD(W-;vt$0Ahc?Z-H7>Gt`8;7Xs0gx&->mfv)~1BL99A z-c^+{;lW0hEk~Kp1O5i;Y?R?aBo{zC=vL+83)M7R1ohqT0Ui*ct6}e)?C`))b9m5} z)Sd*$hgFGQlP)7!`bPB|3x<`#U2tOWl}w+rrT-e1O%DwuP6la03gEvxTRy@OKuTXbbzX za3c#(wuN0;$n%r+r`f{oS@<9e&$5M^MxbzS7M^PhQ!G4yg%{Yu4_U}f%k>xA!nats zh=qT%h0n5(FIUuGWee|RA)mjhzt$F3vT!X6ud{`hv#^eZH`>C}S;)8K>Tj`ye`X=` zr}blO;l3>VCkt=4g*&qFR~Fu73v*e>_ebmRwT0i}l;#xPyH@|8EnLdNhgtZjEu6)| zk61Xt7QV>B`7C@&3i-Hg@GzEo{TWf3R?gE&L&h!o66y+!lVq!auQ{ ztE7;|ketiH{aKi_g|D#i5Eg!C3m;|S;Vk^g7S^y(__@&*UW-ECrwn~b`IKe2Qd7Bt z{G2=(+x{mg4;I0f=Ek`;>jPF!gxaSp+XO5B@_5IC8ERiF^QpBZwFUsmIM)KT2Y${@ z?F*<~a%32_FD`;OEe z2BHkPB`vibNNt3swqpy_PHKi)lGOGKqt;}p?LumWnp)=;sI6R=y>CsV_SS%qzNIX+ z-AU~s08vZ!Xo1=_%}`5`+R0(mzOmH0lG?tSTDKOcHc%R~D1 zxurIg)ZPFP`*uMK)b9B{J10LUwQIwut+doGCbg3^wP7t#`%^R2R+3sl7_}cQwaZ9t zts}K=Vbs=IY9mQ4UsJoT z1!|vso4s#qNp0GZA$|M7QoE7V?gJ3Dk zYQK`&XMYaq+v??h6jV!UQvt-j-QEJVf2_&Q$<+v{lYbARw$f6&i_`{cYX4|~T4^)X zR+3s?7`4wWwfjhIMSs<|`&*zksVRHkJ}0$%fhfZQR#|F~klJuf?a>yf4QPfMFNIF- z9Y*aJt0faiEmu>U*aEeWzscUWU#KNhjtJ@7dQ0tDQo9F0)RN~~pms$w)Yg;Q31QS0 zTWYV6+MhJFS6iUADV4o%i%IR%!=1iWzM^Iw^DMQ=q*f0g_N~4JYIQ+sM5t#S^GNOL zFlr5-`u6q)sU5GWz1ae_J({7`fO%~);!>;oR`so`?b}RJ`=p=h+pHF-y_O7ck_dI* zy0UL~1Ceh5hFWh+Z62vzrK!ztf!Z<6Q0q-_74D2Oa9#gwac2J)`NXJE{s}@oiXqP~k*w+xJD?|7l+j@H=Pa`K*wP0q=O` z%WB&*XAs-a-n(<;cHEfF>WR+%6CEF##)nSl<|awt`21n#`hEfQ(_RwXMXhbU0IJr1(>t^EE0FbanZwpUD-^bCRqF|*TVET3{^kJs zX*{$&H@CR8trtMm`h6{WCKtu5m@y2t{tBV6YpYsMDBb#Z4)vMiqo1)&I{Il>3hq5y z+j;?1t-mS+{a*v<$@{B>Lf2Nco>02=UI_ZU0QzY>5KbCb<1h7cZtniT(7fXzgr@P_ zA>uCwqjvJ^<1_u`u=tsU@Rk!_bDiYN-)A_~H~EL?00yRh(c7XI577W#$DZQ;7J0lAWppWDI}eqquU z&PO54p$A}-6-OI$`2Vjb{f*QEpd0$Q4pQcab{$EeIcMi7DzyyF>Zk30^)MpxF9$f)_kAmRNXCo zL!$5Rub+NCr0>0_PMtdE)TvXas!ll`>cYRHC(uD%1qeE*w(D4Rahlov9(c{KhT0}U z`KFo1ybWDx5{OEh-6Xmn#))=}n1edB4Jh^CaIX*IyV@Y;*t1e7_4P+xh<|br4|fo& zaTyd3XoL8b5U>(E*Qnd^xLnwGIoQ_?5rZ=o<;(+0(>ZL7X}r(UW^Un4Y0M2~fw^}B znP*JvYRtQ%3z^H}nz@?Pc9`p+4rKwQW^S<$;v?H2X7h34qP^z35O;GBuOFOF@teTn zp%~2GhdQ_r_izy3>4SKB8^oZvcuhOfa$)V|U>)FtwND$YuW;%H)EzUpw}ZH8P&yx0 zLQ-x%kik62&@sgaJBVlcAm&**H{w?Y!HXq!9F6S+_C5~wgMl6PfjfE33s0r?a^c&t z576FFJh!2wOU*(a=&}`f7Mx3wc$Ka11mZys;)95oCuT7F&S`p7MS8#vYwdg( zKplRV=CQhgF7VI@z_e+J>URk8n2Y^NoV>3R6@Deg?5o82ekD%ZSBXNu5@+nI#CON| zwEXOSm3Y;!#JT$_aW_j?!q|9MnlLUvVV5u_yDQM(p^Nub!2rJ!Q}$Kjrva{JTXjs` zSBX_DVKrjWuhSaw8*d{Xc2}UmL%-cu1=skMn6|GH$N80r?5jioC88_GPp;=V*HBR_ z4aA$HahHiYN+{=oqu&%HdjEJFc6iZZF4%%!4Oy4t-$3J7?w`XSOhWLdB)b&|%Hlm9 zJzfLjce(Yuu|%No>Ph?6Si~$?K97I!We&bHmgEvmV~Mk0gVwta&?4-+Em zeh?AF|BYF1!%HGhwPkl1NJ zgR$f^$*Vai@gpwNEQ_vfO`fjqoat6R`d24_iQ!v~CAVec#u~F5V30dweEUaN*WJw{ zlJXrURi7!ZHnc?%8w&Dz&Oa;eIC&vbX49PO5`#k871UH?yS2-s3!8-pQ7n$Fr zWaU1FuFmQ>UvP?N4W&P7q+&coCXq%Rz0)kfgD18sy--QY* zyQG+Q&waQy#XJ<2g|qZS_df=etj>b|SLoOOZhKT(>X*-Gx=WyK`sJ`WiPJ;W>m1RZ zaBcAheQsY8sg&fQZ-y2y@}CIFo#pTS=f_qk*3HrSoY}j$_z-y?GOLA`ZQkFtNk zRo&q}t2^*IE4x!$*$=*$LtzL~V@Wt)QaNqHJD%}octPon-*M^}STZw})aR}{t)Fs# zvqI}f&^1C(>MXRR{kq4fx~~L~)ju#Ek}FML!{*~69vbuK?}LBsyt^0g7INBbR(U@> z$Pb*Inlrs09_0tw%X$Srgo-9&99by4Q$K!}W}=|J%KERkrruIs$@`$_Q6n*En2PI1 zfPiC-dEPW0#V<&M7r%wNIKL21Okk{BDP-O@97?kr)bY#j`Ou;tuHwUw`e70uzR?e7 z-~lzH8gKg1Vi2zr$kW}4sKFQ+39aq~SyeH$ijgl!D z6ChyEn|y`c0vJlM=Y_fg66LDEcf5S#K~@m4#>;lc!-1@=2AB4o!_kbS1y9@78gDdj zShck^UKei}&{RHJzJ<@0!7}`h=*Hc8@Qd_J!oesH%-*>h9>&bG(3&Ip3$3aBEI-(k z=*_mpGn|H{ZlqG-J|B*|M#U9)dM-1(2(lYQyZn#|yUZ(B@Ir>R3ci5*V)5D1#|4!T zHS9gm!wF#$5dK#_A`r={r-7z^gv2>APu(e;IKq5%=F0 z5&fcKd-9)r1>>{PQbF+>Uq*%I=Y0RqvMS2INW^0a27j|Z!bn9-^ekA<2@gm;R|sGO zT$Es}=8mgnQl1RsdIaP}rd>?tO=d!G3sW*A=_UqgBv+lvtN((!&B zC2+5l>cs0KM=45PRx%61GLMS)q1?>-{sR_1p;-%|70}q<^W|3Mn}zSvIMhu^%_|fg zfIA%In%4lXd2w0Qg%`)yT@-J)pm;;{n}O0%IiL(HqL|G)S94G?D&~>K`t0bg!pKL) z;x36k_gpRVZ+$n~az;3>_?>9W`QaYXl>_5Vldrh)a?TIXUK+ma?qoi2B~K4hkiQvf z1ma!es}lGuN*CQ@%s2ogi{F_XZ<4ZVJV7;pZ+&+ed5c;i3!f<)aKX z=&p9<3W0{ZPz=D0#*&Jna$o{U?6}aBk_B5}4Uz@OP<0xw-?;ZByk5p&$$+}*4E%|& z1>JIOrAOXu#b2vL9Y+|;S@h166Q|)`Um2J~v2VIx5jX<1gd_Y4c0Y^$nGBUALw5;J zCx1>0eWS%ERZe|RPAVFhD9JXj!`KBA^t>AZ=oJkQRSA~fz|vd|K39`J%lS|0SLp3k zVia+@GCw)1XcRyTkmr2)mSku~@pe#<$OQw29R_Ip9m>B*GC(D7%tTIg1UrvT*|u1u%t;?m$M~(}8Iz2dvu9 zdIpD%dWwnf-TV3pArW^6az6H)NVc?_@Of>sPtmC4k>kqB!)r~m!lT) z{e5yPjCq2V!zw&O4*k7y7z2L$$>HJ+kVC1G!?o}bsPofTiY{Hevd#g+a3V@6r!Cp5C(zfU#e<@`}aQd?Lx@>79KsKrq8_+3gVM&o_zONTCV_MTS60B0QK6&%Gm z6>3sV%}DX~V$}{pRosq82u7rktmqv;TT{H83H3qOWFl0w33@gRW45L5wb`NxsUH+w zQd^BylbYoCE^y8_2!zyN09z`6f6S9#gFRq3iaZmo$rh~{Am%ZCU8p*Mutw@fVpLKt zV;=B44*1V(MEx(L&4TVtHu~@QhxYufi{fi9h}TEI8AV2cL6aKkfVU#o9z!9O>XtW{&<3B_T{$YgTA3{Y?N zfm!(}P1>m9HIw73#f0N~CGWT86$_}9a)-Xl5P5@Er)TOoy_-v=BTALZgyMt@Msn~XvKeTu|zKa!RD`_3#c}3XXTLZ>`kDfwcG2#IyGSDmfyC&_QyFYgnN{aZa{k=@fYwIT{(=7DfMw= zQ+zG%4NDH2VJxmeX>kgMEsC#}K@a(h$t39CGDuk5qu82AU(xJkPy<+ON*;)u)@DKl z3$(drC;`k`qHXEj)V4bvZKFOxa&G_ro(=5#LZ0Xo)crWrV}?G0ePSv#t*Dm1UKn2` z9@#)JaC{B?YqF8Eu(<=hcbcoMI+Nl_y6nLubpYyfW8V4DTj> zkXl=*yb`zmPJyd=hO!msX2)mdR9?A1u#8vp)*Io?$Yv=}KB0UsmZ+fX(Uk*f$x?&& zm-(|qvNMi00`!M365FY05H|pHTp3@hDH&Lv%=;U5IYHV((KbM}vedzfP$5+$o z!N?+$ePhWa@e#xB9rA?{s7 z*+MiRQ2cGYF>!jHdC4{zt0ob|h|y2ig8^oO1B1miP>e$Mz9V<{qeF!r*)#YyIwoe) zuLs{(Q@)_-o=uDWh4saF3cB256Y3*%S+A;@PY>7~^pAe9Bvy;q68u(H8mR}nA8$p& zL3a4r7$T+yO1&098)Ql@{T5B@FP&BTB9uOaH$||4(VBeer{>reWuc~`(_l^#a<`F| zE03K?jYhT|6^tZ?mN!~cMAC0P4q*tyPhXZW#1=aYVN}Ekgc!su7;2-U1)W=mBaGNm znuRJ3AhUPw1Q(4tf5jW9r34dBT#wGo3sTF{$HUX}^muqT&QwDZ1Hqp{84FjUfY_o} z6e{tXzF7xU^sh7(f5gw{kk0y#XdSAPV8&{~T#65{HyEDs`5qiK7xj?dItk5j_#d;;!dtOO7$`m?0d*9hIDU-vf2K~ z&hsEU&5aC0PCWbklzkv34dfua@;(7z74X2+d=k#Ke8J<$fmSG zc1SzO9`i@m$AiphgY3|DkS*{>*0i6ynRV!+Zl0+TCSA{-_eU1>Ad9p?)~6lH7WpGP z!Go-S8)SXkL00XLEY;oJ%niqSo7t}&WHtWCo&YlR_uOvi@9X=bb8D|rxiE_`(Bh3} zkrU7`4uOSq6sjA6RoMgfeDmI)U{yRA?sH+Nev{DX+AOcpn3L0rRJn`1?Ng*bipX4X z**v&*E`%J0tJk80IUL4aHc~Bn$_oPA$PYn~yV5G2=dO5@PsJ~8Z`-`t?jm3N6q%J) z571wio{=pmn$ z%_Ecc0;R*GayVEvlT`3K@9xHor%0IcLA`q{u%RlqVB8GkiK=+MqVS z|DkP>r`<(v^C|MGDx!K!6adm=g!m*VGqC~1#kzBjbg|CqF@I(o+V&XK41RW|$5f(P z&AM+hE!KVJTb-4prFw-$?!?E}7tat@_SN zs~7S62$z`Aye01D)p?sIoofB}?&jTngsXXu45i>$UOxs=DnEa04xc(F!{tu%24u9g zdSew)g0;Fqkt?mYoP-lVp;y<>R>Qh@Ce?51B5aLSBr~nZe(oY~`xI&V4whmqKD4zI zq-9wG#m$dBth(}W7pojg@i-uTEk)-vVFM`8>b^JNunLkcb@OSHZUJbs8{HEv@bc+2 zcag7rifs7SRfO_fc9SkbZdQM*i)hvoz0pM7!yHVEMA5}VI{ey)rQ94@x z7;E|Ema7-4)uKGUbz5uo!FcvnuGyrh927egWw+80JO>!4G+o#AAt|G9t=P3|1l<*8j+qT~bct^&4 zvCGrP!{nYWXdOG-FR`^3f(Wg3ukFTVKPvPBum44Cez2=^My_vEbyzxfRmUglS;r&S zWlnYHc&aOLSLgJp-R)P`8E@c9r@BvfZF3KlYbY#jRjvV)IYbFZtV;Fucq1kN)d!Y+ z09f%rkSBeL%t|YgbQgKnr^uOUMdrGTyx>#hz_cO>caeYk6xsYm+vbmVYu3v?MHZzM z$#xf6>Qm%)6sca055CG6WhcBFv^yp$=U|sII-}kLPA5de*a_92P6j6GL4mf2FZ|S2 z8UO5N)f%5hRDUk4Qf8zH0FEb-U<+2GkxmQF!m6%qMjWg6I3S(wM6LW;-D#cEg4A|b z3rN(mnZ#{%r%$~tAb`1jvrE|I+_D+&B42uo5WuW=6+w48Rm0;G5~O>3;%b` zRDs{_1Any(UJcJtw;Wo1iVRIF@`Srcmu~6ybI)h4hLg@^kGhNO=TqeMv?5Qsi{$zg zc_gjKqGt@H@SMz@gDLkN&a1Eo|K(u&;X8LrH)E5ftEF6|?-*OPgKeP)+e2P#r*sP23J2ST z9&BfLv7OKf`Kt{!YVupQXd(vh9Q_LhTf>9=maz2L=G+$n5p9c;h#V7uIl?c`2j z``E$O$AiuAVmrQ5*uHSEz4eW|rL{dgd>hj#Y~MQAW_z$r_hRD--j4O{M+e*S9&AT? zu^q0kwcW_o#v<)@uzk_&Zs|HqEnOONWT&uYU=Oag?vHq|#l6^yI)$y9gY8TYwv)Zs zj_MRP!@;)eYj;b(-Otm~!#aiSKnL4DJlLM{Vng7cGVMSL1rD|=J=o6kVmrE1*p6_p z_3~iL{3X~1IN0h_7_mdLMb>QH)6=tSiDTtL9!|5z(W%(K)MgwV3S8#xz@puZ?#8@7 z;B*a6+oND(=q~J-2*@XDDa$)smyRPD7?Rs;T^i~^cDNfE8rvSS6aA5GHraYsAUoNO3~pL`$j163+x?ZhncqQjb~6uXAK5s6 zWG{MXZJkacw<u)^)smc+7*h1A6B= zcz^A|J1GtCe1(_mNFCFgaPW5b;N6Y(dg*=IgSP{E=Q(&^+T`ZLGii7idGL0?-v=DL zmwE6`NW=S*2X6=TKH}ib@ZkLs_R!0R8iiNe$qwj!+`;>|jcz_Xk%qUmIxv(EB$B@6*7Gfvph5%}=&j0~@*>hcs-- zN9J%Io@-Q@k&r*>MU+M2BQhLmkp4%W3LtJgllUXxM9irHb0>+Y( z&@yR^ptC6b2f&`}O~NNh%rxysrek7arm0)`i;0=$(E5 zOZ7nc4l4vo9?Sw8KEk7UJ7A*7XmR0N5-AhbEZqv$ynGakl~t*H8=;zE=djG@Ec5)Y zfHzb$jdcvF;_)e0z7D`EFCAPT`mr}5M;Pb7E>84j1_uequE^f+iU1CKZu^VG^NdGo z3IaIOnXf+P;3L23*T#c5s(i(jc5VzsV3izoN2SZi5G_fU9JGvlg}_`}O8K%|p`Vrz zLPggCRilVG7c{6OTPL|BD&pH;K0N^(fMq@{MNy_( zZDvP#K&Os`T=tPmp#!G?feuEh5}|xRn#0{d6D=TgT@BQSK)Jp^Z`eSG5vUn7+5KnQ z=(OsNBv6AJsOq#dpaBG0;06keNdp>8pjmF9Eo79pb;l9tVmHvnacMv&5a>8J(3Vrv zfT&z%4?iHp4J|%V$xQP@7Yi1RPs4N)f$IH$s6LwGV+i!59}pEo1D!^oTl|1Htg~~T z0SEw_lK{kyrSe<+N1umAh68*HeAhG3(4{rLiUrO_0iKM;`zjnsi`7I5ifhW^UBx0< z=ftctaO(WyxlWPGRgr_MX{1mJ1*D*TPMTF*;J^>E;4#f;7ye=geouumq2B^LaY44R zI0Hw=cuI4Dq~ItmDrjxOp{sl(;4msS0w}sC6rPM@Vna}|ST4@{NyGqr#0e;K@@}3B zGZq7cr^*h2`HVM3H+HS;5^t*Anf-Q4^s}zfjoIDm6a!w*EsGzN`jLmR7@mz|VRLRMRT)c|n`6p{O=V2dk-8Nupt_;%<`?yudTu&5ht1!L52@RLRk5hhuIXCVWQ{MK z$mav(A$v@j^}#lt`_E?IAfKrk?(@8_KBWdET>-~0Px=!IA6%Al{0q^VkDe_@IrA2n zNJ~@vPMMXEiM?CuQN+qQNM@Pgp>g1`2UZzGK!>&l=6Jyu2}M^9k-(9Czawz5dvg0kl(1|`d6PNsVDYbKl_ue zKO6O{YX2Rtt8K}}L2n$+E}Q*XAiEnnVEK*#@PwGT<@KnE&Akhpo6iEQGnFN466IlSvQyvzVP-!YE+>2)>9Kc!LqvGq$c{|h*-iy$y z%aGLLC_@@%%qau+VYVVy8OuwHieP3WVFS!Yyy1ZvX4DLnhDl}Y2g z?INusaTfSl*d{B9Myv!B#p{dT!Nox+mCNpqzYIw7ucb%|IZm_VD6{$S=~O18;&R|| zni$>O6)lYQWeb$J<-D~`7HQ%*NY1YOFVwn+>cc^FCQ`*DDLi9-RPARNkK*fVH)eHf zLdPyIiw7N*N||nZ2%PQOl`WdeB`g3LSg^D!qy?*8Ldyu!;<6{CC5ke}k_n(?Q+Bu2 ziU^l=NnMTa$k7PGQwO8HuaIlv6coRcT8wsB_EhDg8s$-VbWx@}%C>wM{$!kpbELjD#GH9>LJlh6t3_q-}PjYz= zlc+sh&u^f(3Az1p|-AU6lK=Mr45X`OJd{W6!SFfq%- zf3;s_ciR^IqHDKL%?F2UYwflNbch~eU=P*q;lMy&lxnGz>P9p(RP+pn2=ju>ZLQ{$ zD3yB6VSicGYZQ!R*@0kikAfu_OFohh#UmXcw($B3|4kv##rV)kJXYxumb~O2L{=8V4=1H;i5sb1IOdhvIEtRBH7o2%Kx&O zN~$a)X;GD{`B=tg0k;K9{TBN0BIGjH6Ss<<41x%cM-g_l!LZxxZO*V&;~BP;IkNQ- z#M+g>RQhX5>Ib`;Hz5jJQ^<#(X=euGrcP=KQ@J`U)OKb$URupm>L4UZ*Pztdr7m}9 zDIpFvIl8f5?dB|LwKZhTej|W(yT+~5{($EAfj*8#H$P(Oi>IRx|E2nLk+f?c`jlfL z%S2m!GUlvBvqYyN)Sl(YzF_Ip*7BVgT)IFtkS2L#lM&kwKSi%GwhdzXI}Q{W*KE6> zvnA56at#s#w`k$T>tWu}KJ)HB$_SK;0Z0}VjV1Ny#dO4|UU-T7YbPi%4YITq``y%c8dk7$t1_XQYd)kxKVQk@#9{)rnf$@gP`M@fD{(J)y26W{=w_u(uaKlZ>! z8kQ5vqB{*^&aco>jOBofZ^1OXd`D|Idt|KuvvM5+w@u>)~ zm0mQXha+2%)COF&RD1S)Q0;Q6wmn`=a#1dxjh|mU(rLq3l(zLH4&3p^pVd$Az^$4j zoN0a`{;#@fWMz*U<67cdKzZp;#*)VP561EzMs7h~uS#&ih;2b@Sgan!Qs04(nq8O& zB<{##rp(bBIMeCMna)m-l`QSLcVwe6cRhY%rc>y^x0&w%=4HUNo$tUyVD`oldcISN zzmmZF9OP$%cTVL(sesw@Zpq|0T)p#jI*^Qf1t}5#aM&}WA`8@GawPqO$jxaun#X2+ zgY;swrRX3nhB5a{6opkqXXsWR-_q^l)b}j-vINkp#2#7x+J(-C6&^bU78NU$>{4H4 z0i7PoyM5ekPg&gErGAgvlc%dFQh&%7idRZ6Y-})jR*>Y~2LQZ8W~pz>s$j4O2Ex}T zr!~bfq;@stoDD{>2>%%vK)F+c(OQ&?yk8dGgTT=zpiv4L74PEb0tp>uN$99Ya@=-? zj*K~f01|-1Ivj<{mcwAQrnUka_1zK-Bu_=`=wUn}G{q#jEvYyjpw==2{M)^loye@0 zdYwEy$KtV>ixY-yz&*(ADEtL8)Iclz==O10{202UC!pR(Q7?!`Ut;&U8&5Dn!Bv1r z-HwNL!hGLNQxT4utx?#4CjQDwzR_wgbq;dLZEUFjPYVeszFJ z-e9WsW=MOJH=0c{L9%-78%gF!L^nvW(~!8sAzff=F_yHZ^6^g01Hc(4W8eYGX=b5R z>OoAusc8C}eE8-be7FrCFa-+f59T_)EF<&{8x=7TQpRx+@fd1*ITs#6MOPraY3?{) zP5Sk_Yw&I%rD|@(hlPxnFvz77uKVO$w_|Tp>(keBP@l7Yb|X-$^)u;hsm zl$-FC%V^e`j4YAWfVb_epz+p{>BN}6f@Up+VfoCna)Y%E5a3;n*)kcdkky!`bNP#_ zF&pvAJgiQy#sB~!2ivkq4cQkVkGQC4z6l_Ed1O9O0jvaIszm4(K$?H`1A4##x`RM> z`2lfrgT@pk(B*zW+?b_-DhV{g4`_b}C`q6LJV3uzgqJ%&_Y>&5T6gO-P>BQd2!Yo4 z0c~`Eo*>XOen1a8KnnHz(XK*Rlj0Aum#MFQpe0S$G4UM5g; zjSmZ^IY3JZ)ZhoyId|U19T{XK6}lF1wT4Kg#>!d59mDy zsE9z1x`F1GDURRc01Y6}bU&a84$xo%o#O}ejRSN%fd=>i4RnA;5GdpabfW__nn0hv z>SBRKc#Z=!mO#t=fZlX~&LGf3en5YBfF=-Vnj2{1Zxo*@9ia0FbhaPRcn9br0v+WC z)Zze5CQ#51i0ce`Y?(@+k6v-Hz@q6A2k18hTH*(EvjcPkf$sMMG992l5a@S)K>Zz{ zFoDMV0bS<+-9n%v{D86@pgRb(cbQM?Ry#mZ0)5~I^qd1!NuZbAK!K~2?4EFdk_4LP z2ZXE$7RT==&<%b-uR1`F5NMnq&?pD!2?7l95Z9H2D>de;x=DF^631p22NXv>ufQ=S9#4uRr+K*JoMbp*P`4OFGa zV6H{z&iN66#`pof0wDUVn*ae|^AG^Zsy33;(>VLvgi0W zdLl4^3kIf|uOZu*;NiW%(^_jcBLVvzM>B39_mdzF+nke`C81v&wEa+)U;Z=`d)U4U zMm~~>l`Iv7inu4hnq1}M_CZyvn#yo76fG`>uAs%eqxxDp;g_{EOZwdV3a+`6`wGNcT6gwXi_j&u{O<>Q0pDm19*MZN0&q+z}U6Nm)!FOhE@ zAO!c+YgUS46~9hQ%Om8M>;YJdt(=OePhD|M>>VSiZcEIUR1 zi~!dc)qQ6uP7UC0p+fvlQ?Rl9EqS@FH1n0$`YSAXMG75RIZ@=Ox)e?NCyBQBGhfPS z{)A;WoW+}%`lNUh{u@hKe7OOiz?ZJVm*#o=WO3nK`4s-bj|*30--;$gsh;ZpV&{f- zN`Z@y7KZeQt{f_RK%_lVRdH(@4Q{wx#i{NEe}AdYjz!XQ*oz^7@V%O;yDAScmaI>V zW*4X3op>Ow8azXE5gPNAJ&3QR}%YdvduldZq-(GX`=Q0oP}O`!)gZsQ5j^Ce4iR?6$R1Uu{T|Q0<&$#U)^Z;+Qh(gDj(d zTP{>rD%!&;?Qe5No{YM1Qk9 z=9~JlzhQX_lF{r_4^l_;jm*k?ZAkX%Hrs~8cAFn z-@0vwHSl@tV!#Kg)Ald%4OPzm^#l`$OxX zoF!`aCe2Q218`Y=4hZ%7Q(z+I!l5EA2${DWtS*0-6{g0ld@MNeKXo6Ju_P;mLsJ*v z{+n!gk~vsk%(w%qd@Wrg17_C-uv}K%3Wbcm+d6VJ=aqqj*H1PcurCF!DvQZA1OJxcmk}h{KEhbNbEt+O|f20ZdsM$aE2TMOTFiG>=nTtI!R*law@ih z3*bn?iw+R{S@k|BlZe!V&L?B>aO#OUWrA$6VoZlus^uhx^X^*kP?_tWzp4Dhf3mb&Q1DlF zMGb-G+2y0D(HWISxF@TWZ>j6hP+YwjDa5M`^@`Jh;2KrbVA0fRcmr;2>;hH&%kN?F zh6J16Qup@?cP3CV2cwz1#}$lv=ftgGi@LuxUVH4>*>TzCL`GnPLGnf!G-V9OZdzGI zCp#w;^|$tipZW&8Q#{A(a3n}?T>0tkhAy~euPJzTNCr|cVMyfAhAx9anT#ztpscvY z8q9egT{iY7j7GHJ6qC0OqASlr$x|={4}cPLrGGSeHl%iADA*M53REa8>ZE)K4DO%{ zZIj6|dZcXe;(jBG&UhnFG|m2ucFx+YGp>$jvD|o+M7f`12zD#HjPh=@+&B#OxzQd+ zwDsGw)}z~%WA714ppo2LWv)9D?AMojcZqHuQ~p*cz8>Xs$H2JMw)DeKQF#2#4&W93 zD(b;t)M8$HkQxa;1u{8_Rl7NJ_U0DwBUzEjtxWpd6PS_W0VL?5&^_Z|P|%-4__H@| zZROV(zfzCMLogD)Q8ENJre4+`P=J#Mv&cnqx7nNf1zH2qHwv+j5wzuw0R&X04dsP+ zYg10L7hzHh`3+3weT+|v^4Xhlk0E}(ldQ<#KD}UlykF`>R<0OMBERDvEX{wMzah?6 z@R2nW5B`QUmsC_$bNRk&Iqu=qjw-6gANT(G#Bh#07KsVHi=NFTO8#X(*r}*KSq2%J zb#CyOI00hO`|4Ad{MH_V^?pw7T)~dMr!aiNSHUVfc(F8(bay%Kg5-D(3LZtH@LGoRs?x#4uq zFw^!M-ky|2ts;PD-83gCmeY24PHsRP_<=By z5J|q9DcO$*8;r%1vxx9~AdJ@vs^A-m9&BiGS}-o-TV+9zheb3ia*C3dSgeq%+cBpL zp)|Hv=4)2Gz0+o+LRFa;lx?}_zj7zu%hzE*45K6Ag-qBM@&!+wm^(`0?Q9HUB>Wz~ zY*}{;Zb_H+%$hVwdm42+uKM`p@*RTG$#a6bP3a<0d_RY|7TQRCub)UD#Mt(5zTYQG zOWsqReD&yO>x*0(t>?Syd`@CG{a35ETlNLLMeGazQV$+OECN>XiuUbGOPOO|Fj*a9 zVf3*dIm&(niTGbNdRh~2jNrT`ZVbkal@PyFya(pQJohwv95PD3H@A%Sw<#HIZOWBE z(Z;4QjfBUhWa5QwQ^xQ?Y|82QWzJ{k`auQm@+0q39bcu`gGRFq+W?y|nVRd0*7d`;dN*qq%KSg>a&@ zzdiX?eimr>`Z?^ty+t|PVt$8TjY-~n_^#Gv+lIpm(d4uh;n@f@zjL(C0TRxo^7p_UCL(fs#+U)P2UC`c^UN-9tTz_oT(>&4UWrr z)jp!X38LnQ6ddpF?dbgVYTWe+i#F00^C76VM0-rBV_2tl$*|tZ@E*K-@t6J}XOzTW zvb?qg90!!P++iz77lN-z^M_C38KZZ|sl7jQ&Ou+J4!H=TpW$NI1Y5f^7(RtZt1|(g zeF$cL(T!s;DZx{SZctVL-W-POT%gQZFcB2dex7&QkFBYjAVfOI@j4dGWl^UbisZ?O zZJv7DnQ51fel|w10Z9?vfOWP*o?DqE;9qMsQS6?So}Y!gm(rMA!{Xm){)PWQLd za#Vk#bZtR+``i4fSnSvQFQC85`_vd=y9;HE6{SUePnKv=n8DWHYhX$838N&=2Kuln-cnIh zO>H*DZ6Vuo$+j^&U2M~H%>QG&tjO%w~Z* z7~6oeGH6l)2P`leoJd?F@Gzb@@t3#5ml&~i0EzFxa|tDXBqU$l8VCPZ6miOqSWy4+ z5rbF(qLlH*`1)f3iL(?aoQ?6Rl%U~BKejex%65mP7lD0Po#=HjTyj7nUNIcZJVEZi zf_lWb`igQVqB2hqVi3u2&Y1<5h`)9smbn0IR185e#)OWD*LCl4&IvF|DdQn9=%){n zSY%vXu(YTM?TzKSgo1rK;B4GHvh_|G4v&C(nVNS-#Uj)f`!+lw87s%H(R=ZaG51*T zvLWk02q73Z8?y57Bh;AHguVCFg{O1zEYTF1ni&i0rXS-zj)#0CkhcJ6Bnm|aApf`) z+~}`m1m1#&4*`OBiCM+CxC zwd)nH3r|u4Kh)=W-iPyCV1AiW6i zjOv2JQXmmNM{7~6Ka3akva&Zni-t)&Pd&fgniAt9b{rf*Jbk!0NH{bkN~q<5Wv>)h z_+&j-M*0f0G3eXm2Rjw*iMbIEn&hW@;e{euYzroZ zD(>s!U!mKlZ6^C~P+a=o*`DMgnx_JcssmLhth|+zbwe7q= zT{|(N2ZA?oNnZKMla1I@U_kk8LHv3Mzo>D)n~#)ia5%KTHl-*pdR=Z%Z$PygM8H>( zT0n9YLObW{mdeCjUn4HT+JVE&%{19wF2Jp+A56e>rrhN_c5r zgnq6$X~f3iz2as@Wa=;C=o7GE04(z^Ld*MjTqd6SM_SkVZr zclKv2fGLRJ7O*eTn=YJiUj+u(Qc?#0T$cA<_%oK&#m$otcd84OuC%C-R!T<)%Fmaz z*TNg{s<~Os|I_!MqEK2UnFhoR;P`Zps-2^jU6AESGUTYAEY1ZY*r%d~HZwRXID>XY zDwLwBJ?AO2Qsppo8GJKvtB>k*`R0e)=_bo?hPmFIqcS3K#X5}_995etqxJjQ%u0?o zgEf^o2P((`=`++0`S;r=y!`8>?6KQIaFXm832H<#v8ryd`;h zYa51B->0Fp&1s}I1T46Hk2FOE1au5aLc7scX!z}bX$Y9n)?o6q45M_tz((tt)z}?@ zM4LNg_|C`D8D3UZ+`7FUGr|kB_C5>c(Aryf?pE~whCnJcm!eU_ZIuv^%=zCX3%(HgSa*RHhYQd$~6;xpd!9)8mLE9Uv=9{Z`I9V-6DID_3ky8P(K z=|i>T9}II0(On~da%%HA=o#E!AUZ@Q#Hzq-C2w{SN(|=?-4dItBvxs)C|aN0h6jiP zr`#%R>2D=trX5(6OaJ5*P+zc^d3XwyP(bq#(ySO|k&s^hm-4AyX0LXb&2hF<{5}ye zk$v*};jJ!yJ1h+|UgnTL4f|=l{6$d2;cxgh^oA$g+)FnANL6Ze{x&V|Oc(g+5if^b zam9UCn+(Npzg)+5XM>BmN=}{P?>gK;x=;R|fWV^i4+4>P^!Wg6^s(&~hh&$De*_na zTaMb}us|Frv8%)kAt&ODJ|YtBDM0CE<~{sucmPa4B+8V`d%qAEDUP%?mwjqmhdTe8 zhrJRJzglt5Wxu`gOIifF@c0|zU-}*o;SN-A5cXT`CD$lqUa_zB5Nl#i9JS9ddL_P~ zwJcIvFKZ&mCu)Nlg)^m^^>vTenkB=lf#EeF(dXJ$+Y*?rLLgSRHSJs zj0%SP(32SiRF<=L=2=+lSgzr;@iON21%&E6U4RtMlr?@If_n9+G76Ub3BUnk>{ir; z*BqggTcb1_BPgx~r6$LBC>yOT$)-@{gp8p4RE07ur2fQlY^7c+wBT|RrCGEBrEzp(k49*w{JsJ-Ep{EHA?K&R4_ZIQr z@lqWAAFE9H7jcT;5=k5VZVbE{P2HwX5h>&_!|Bkp z7~BuXxla_Ib=NLkRb@Nqnk&|1$MQoM9`4Jne)=d+L9XiUamY~CTNbZR4(vWE)0n#f zb|khTd?>ckR$i!&|0$U5^`K@CJ_kRL36Rys;Oh)}V&joHuc~JtvyV)UWWP;n8OKHO z(*Qh?TB`R`q^4k#kV~IO1@HWrt)d_8wsylUYd7#~o8z>0ztPOO6cu>1<;zfTo6~49 zgD`#fDb4cha-H!Xmdx{xR+}BwV!Jr?OC5nK#INi@(~AwN{mOShT#QLD_uM)~rOUHP zmi`;N_LP;PIFuMfS8Qp@)>eouSsKi?B^z&{30L4Xnd*G)4oHsc5?F)jVJz-h+5I`l zYAl$f40POtXk!Ca&m&9K#T5wX_B{razT3h~mF$>o&ON}BnncOL-dGh$ln2y9g`J_r zVstX}eQ>=@o=KG=)cO`j;z_FqcVc=y;a(4`d7R6LO^4-*Z_zYwiJJpzb*FlF@5lyh z+NNO}3q~h;CT|TzzuFz|o|w>OcYH#|?g2ZKIk^MY)}}JHJu6GXi35|jhvFuIE({E4 zNlfayJDHO?pdmh~&u)QI{X%JcYJYNU$%HO@%YbaJY{ACDOxiPaKTN2v2kDxC*fBb$JLaUs|OyB2O#bFW8no z5GfJ2ky?vLjdm7tOxZ%Ute|QhZQp9$#>+G`TBfQ;zXgr1@X7KLd%~rKs>Tm*4tp%lmauIfK}`5-A5jlT z+l-1kXw10j1B>GKUJan)cb0?N)>kOj*Z2?gsOXU9?x-Jg`;ql`o*7T!!h~(=bV4#T zIT^Z31qug!VTrOeJQ0oKFoLmvz^E>f;ml_k86p({OY!!R^>D~HKEYaxkii`K(~X0a-*UjeuC{Kv{%hTG~qTK;ohTyGY1r}LH+2w z;PPzIQx;I6I^j&}y;GC|^S#9DzEt`G&64m(o2^c8pAigy>jP`QfpSf3du`ij?Wpt+ zPulByVs~Zg8dz8J7GQx;u41!qm)}Ok+4#U3F1Krl*IJfTH!WFOTjH$;2+*r_45?o4 zV>%WXDl=0%VZn$nXCDYdwfn%=sPVnA9{9SZ&IQwn?^Qf1PNfsLPka`Aw-H}vDqlDF z#(m)1cY|dlga=Y!jvx+fkg3c_{R_>ulwItWW1k>tu}t`z7Joe*SC-PDW5CB+vN0-X zyu{9;NJy>E6msIYzOSs$Tw{Oxm9uv9s(dqIqij9K;_g92#38bc5yo^x2iUx-g7@br z3+3#$IalhC`Y+LSJW6WmN|HVo4I}h-o>+T#rkm9Qaol>J`eg)<7% zWQVl7y3yBz0=+mDS*rV^EcU9XwjI$(=Dd$B2(6VlUDTMOKcA{L=JWOg+kNS&T@Z27 z2E6_5F5F`gn~Zu$JG4dqi}Q>VKDGE2jC|;r{X;PFpTas7 zXAmLmfhxtmSvGSH_wPAO1<2PUoiWWF-*)k@@e_N>2jf|5Tf)Cm{ArdD^l(hD$JgYP z%xrOIZBXpGN)@uKRbLxgi+_5-kkR^FyBV-=rvj1PjG5QjY@APK`~n@0{{SuaGngF5-{UZ2+bK1_rNr;R z&K*z9)ZetqHH5R&#qN}xlCOG^RV`evcD#s-P`h1=znZAeN^ATDkje!Xxi3+?I>^8t z9m#Dx+kS2TP3#@v)2)#)%>BuQ6J%Cjkh&W?WZKG$@g+Skp*g$uLrdQ>!aXI|m(ot! z2mfKQy`2N(NVH}sdVlj0v3s4|kMWz0(u8xYCPdDaj*%RngFUR}Be3y+`=GG7q@TqI z#x}?Vo->Q*SaD@)c$`w=*7Lm$veiC+#o9`VB`_)e>e`lII8 z>FWbD)RY$g(nX7WA_o0uuMfD-6D~m3>JHZj%##hv$XkQOE$gt1A`w2mVSG}?^k3t( zwO(+rgk~eSq?63!f2s3nr?@_;=Xgd%5XCvb%!UGiEi!HEa~y^$UAou z+L8C8soU-Yj0fU{ec0$2fSN@PvIg@YJSYpY@5uWWp!xqpebT|T$UK!m1#Uw2lpYF_YedbFkgRH90zV|;}nqTDX}j7wBoik zb|yo6@E*rtvN29KS;1RGDKo-@JaW;4x{iKYakTT;xy4@)1yB)0ZkEVtw{Udh#*8eh zylj?{^6?!EFF#b5oV5RLy@&N^B3Igr^Z)Lp6-|tb_|p6u=uCWz6-kDw0AKh_I4LTm z;W_vf>Lu)o@$w$6XYn2Hw&41V#k@Wvb}Qb)>dF)-bvhnUzbxvMm-e!n)?TDUVIJYa zytV1;8Z%=ABGSBpp!qK{zWc4;pvtrvd<9|v@ZfW;bDP%qD2A9LgX_FXK91J$yvlq? zRJj3io+{t$w_Fk?ykdC?SoVO5@TAIM>!iv`yl7{{ljA&cYWuH^R*)oGQ<(1m$r%7a z;yJZ#o#wd|r4b=H4r0~uQHOpt|HnZ$(qHbSKgYcCHFds*Q!1woBfV{KPA4@Ti=oSZ z^mf{^p}}d(P`fQD9=4!>Z2n&4#6YTXo{jXa2YpZ*t{c#9F2Ez#zhN`{_js3(9vL`6 zF~-b%b8wU0-?4toR{4|rs8V~aqo5Lc?bhUIjRCb!eM+OIdJ2e;ecNvy1H*MJFzffq zPy|z9-9Et4(KVkT+*3~ZHtiO<)Zhpi_U+#2YV&?*$v)dW0eIbQ&M{AV%hl#VsIi?k zSEagwMpf2YpWOQ&k1f*?+1OXG==K^Vj|Zxqjl+t#IBC8ewpJv$AzZIjx}pQmJ4iXt z-A*xLVmJa#V+8kZAcvdhtbPTJIWu7EQH^Ki@7Du(7Jy(uxz$cbEM~4#O;EcW?2yhd zZ>2YqkBATSVM}~WoMySR4`|k@6jxksj6->57jvJH*lb2Fm8rkW)0Kf8(_xI=PQ^U7s19YEZnzSgdvn z>UeNt{DW=JSfUmcQd>HL>otJh*ZS@st%j~wYlf+%*yb$-Fpe_Nq1T<-`0&XIKb6Ce zZB1*uAaMNMKMerLH$(ckukimCy-$*F%;g z*3c^dSVYGx)Y51#9*`~c$aZLn)YO18jNQa4!4R!e?NzSZp`gGE1oO(%f_b`r-nQut zRC6MCH#TeAmB^}GI{^f%w ziw}PiKg;5y=ipCc)_9Z({1(~kvP$u*$+@@U#eqDK$;WHGnj4a05+!It}Q00*!M6ZCRKG^m_sox`7Jg zX+VD@&@K>eUua|j!Dd=C%_PuTH_)`Z(=g2<(7)V38xv_j)T|?j=wkH_*meX+ZZAsO1tD3oIZP3mzuWyKbN@x20ivj6nbN19D+{ zl0b1cQ0`yTFfAm|HEy7$bfD)5G{y~7GA9kwKL~V)8)*K0X+ZxX(0?y>v7qMpG@!)< zYH|aW-<$^Y3V~km19GvTmOyjdKwGAzVPdjB^C~ycv|H1Fn9IA+ZInx8geA%^1m#&Bpd^$=`2bKR21#m76Y;e~Zuv=P z;Q&|<45haQ#~QK!kzW}BBlbLg#lL=qWt%gjb=isImcsG};-50}V{Q2dfr>Q|Gye7f zB;3rb9N%Sti98yWW4ky_dcx+@(HKH#SX01d_F|)$v=eV~h60Gz_e4i_-xBDXNj^Yb zhuW&Ll|YStKnE4tKtB=aX*bZ8htf224}ct@o6`wS=94-N9t!rvXHyPG4yKVFObcyHuLRND<9F&12mREIetJ(9H4Oo`f8$^1-d#((xLpcGYM1&AgEL&%9?wx>FLs@#=x%t zP!^w-wUBATY^AD-q$w2v&6`=BGT^z!yw4!DL~j;cic>1efS)J$e66j6G(;$^T}OIQ z&a+V>MU_T*p`g6M&w#s75=x_d=Ug|HqimG8PEVt}R8Zd90ZKw?ly`birVt)c4PTDq zW~$+r3(7xsfRa!e9Tdvxg0ds=5K5yw$%FD48|6|&loZOD zg0ds=5K5!`YJ$7r=h-MOuK}jdD3A-wI_^PBDt~dE$6x&LHJV5430CoGmtXn42kz|w zA85aFz49yL>zC0AHfPIv$v*JYu>CUpv|k``Ou>yQz56KKRcL{EO&c z#(vr{f7tbY3H}d-KN;mCFyHwW-U2S7xXg%cmS1f52lPJHzeWYee849^1shL7gGfH5ycdN~xv zfUX?f=Lr}pT1~jDjSPRCcR7B2j$e=v?hnW5WNb2$4e(W&)opuCu=k1WK^&{+;I`%|Q5UxU=#P^us9!vlDe>h%ckt4Q?b1rIB>gCMzH0ap{O zm4g(tiZumTf(jqBVi&){bO+*V?bnf<_H`w~ctxgxhOU*ec1h#GdR^4L ze>5?iq=Px4)z+p4)G3goei7g={K($-JQy2sEM6)lwC-oXeUrFs64~8l^(+z2XQsUZh*dIR zZGUzvR>O^PVZ6dAgF7z)M{$*3OK>Lki*x~<_Jv>JqcY_NE-2=+sFvBP%>F&tfd=B1 z5@tYF@&)!oqYXjo1}1RSAF1f}pSJOs>7i)PI2H6{4%BgB~PF0_paS@3bKnDlcD<;EpXnt1l4SZ!I%)HbOSQKJb z!a(HY1zTXNa9d@fL^>M_+w`M8bV6R=gjZB)#OoF-yqUm@`)7DTLhZ)hN3w74ml?0K z+kpI8-J0T=LVJpv@)5^^dFZcs(RO#EXbvl3J~3?5r278jH(-|{GhUB0lFSesIaV@@ z+U+U848weIKfPZl{F&9P4=7l5mrSq>M@jRH74@>=$h>$PtsV0IO1`wi!E198$~S+a z^9>b>zLejb6Nro{UQ@iGczZD#TGGAv9q3~=({Bd1Xh!zhNz+9$Wo|;&4{Haew$L*I zOAFDM;tk8?Piym1egDB2yhT&hijC$go|P!A`ws+PoBI#izdtt1x{rtIX4|-XPLuwR z^KAw4o&0s*Uh`%*8JsM0TBXtz;*LrJcBL_b6lUTe88#9eP+b7B%i>)`qRL1RtQ)~_ z7H6UYE2!?HzyP83)O1-JjQgB`d7<=Q-A%hOPQ(@@oiC@KYEYA~=7>L3kOp`eViMoi-r$bK5+ zU=4DW1JX-_m{4+JDbOINI3W9LkW~P|EjpZZu%R+udUiY~+PSXqxR*teN0(vrTnbWJ zk(R9B;0@8uInjDt`?NQBa80x(!~88~hS+$7+fO)3s{Lw!?3*af&o;S|NsBNCO&1;K z)}OvGjMygdI^M;bkk7bwV|Lk*f!uCQ-5MkzFjir^HK;*i_J0E9W$~eW-Pai|k`p(V zAw~0y>B)&-@yE=uQZ8y1z^Yt$aPhL{zH4@ zWxvi&%yE#SyiCnSzO;?$XdiA z`Ry;m*gg@Yr0p>)6q0cBfF9j4W?Y3`Y(cT3$=_xl+!}4n;ERK|N59O8Ho(CeilhJB z0X!&(v;Y0jENk4o6#2D3j<#GDK2ZyVKmqfVF0>Bn<^gSQvAIF{1M)Ui00{Ei(#XN_ z7Slvj25wM;as^OnLx7j`4T52^?@N)v3RV;xmhl@Lu0>jB9yITVr1;!*MRF^%!MH&I zqe8L|KDqGlXeYaJjsNLT0_V2RU|E99`cl0z> z41Ms5U(O2`bxHwVS|t6i#Nu|ym@^krYj+eo%29x?kY`8~Al?wcc>|aG%KfgCy;-s8 z2kbA2|Dd#^wxvhyj@+^%w*+x5R9XCw8QoTQt1p}VMh-OQ5Y-^jFNF&1uL2{7D!BlA zYEB4Jar|-L_7MTu&%adgcV3kCjg=RsGwj$p+XHB0TGodDk@dnZL~@))(O&z8kh-W97j{Xs92Y>xKQ_2 z1w@Mp!2qs+8-fdh%Nyc?OEH3y-{*7geeb@>ykY2%KghiI&i&kT&pr3tbGLKJr+vYe zZ^argh6Dm^i|0D?)j)k!Oy9Ups^p(dJ@31H-SA|(eLX1MzIIZjb?mG1R#VC&mpn<4 zsM+@R$x`{f1F@#?D<}uNm4JQc$Ea=`>C1!K9;EE76sZ|Ev~RII=JsirTcg1(F^*rR zK!T3+@Hg#Ddx4asI>bI-wIswvhlJ(AI9Byx_vlXF|GwM|@!9|Ngjm4Nj*lbyrHoD3 zb512(UI4qt8g(?wM$BiW{;R_)7YwF@3?iol!Word`L6r+3ZpY>H z1Db0_Rw7{_Tol{UFK;-0h9`C!R)N1x)Xaj!*vd%j&DZ}{H>t+YbE{^4-kRI-d;2h8 zb=>W0%MMpt*z~;7{jtB5u5iDp1uctR|5CP>4-KOG$T51Q&4{1<(ET^DDFyyzx&HjP zh_7Ay-xu?-7(uLYWl+}-9f`acX$cN!G7{OSC30q`-d>4xMpz=aOe5Rih+jWei=}Gj zwl=HdM^)&`8|*HCRATXJSwxu?Rlg#SNd+yBrplu{0D0`2Jnawu*4 zwk*n<%cty;F&SjIqmm1ICF6F(3^k zu4@b0)X9%z?nsv_Iv@OUZ$y;$ibYyO>VgFM)EjMDWjkV%b?f=~o){e* zvC_JA0)I{oj(FF)op*DR8J_<_JeS)T#!XnVqKD(t%vF?*8p`8dyOEqr!mJ)c*P-0~ zbsTmhBuL2-Qu1B;Z=#oAcM_(lZW{wE>3VE5AFv(Ae!NqlR&R z<3NxOhrunv>!BE^7T`CpkdP}M?GGN7R#-BkHyN;Qy%70EUdE6jn0y`6j`gmDCYDc< zEsWtK-4pA2_hWIerO_=PGMUV}K_1UbBl64P`QOrRLLsejtR4sxtFdKzBQYr$Lkwo7XfAx` z_DUZ-#QG1PBw2BKuoTmSXXR+uZ^UxQl6PMmWWNQ)0O3Iv$9~#N-4d$ml-q6$BhIbF zvGMq$J2Abi+O6@&;=?$>+MYky7vYb8Az!;f@i)MqzrGHCrS{RnU-e-TuX`=?10FuE zartolS(!Dqhau(}O1F}wE0sYpM;MK^u0tYJ?JLWZh62br-K4VVDS3ADtIKYnY%eqa0L%)@g zpZ0=&Ymq-cxZYDKzy>Vlk{@V8itn!U9xBCf`PzruiLlR5XZXA;!%s>9AWmF((6NaU z4QYv5x&R&DN_EKoLY-6UUBA!#cN6}@eVsOwW6iDyL%jI+Y*FC-g@2B}%!OZapMigA z=)3FE^!Jpe5usS|B_P$%5a@`TJtU%CZe+_~QydIQ?n)_BOH3CC`mXg67p8r@6U{;! zqyM$M{TBMym)l?u#(Mr<>x&woOE`9duCMUZO8K{j{MD3ei)l*FeR{`YHP@@o_zB{AIG}|DQ-&kU*WAhdh$)M6u698m=%?3m z9?D6aYt5dIN2ebtwR@@AxHV#@WhS_?%1aTgsGF9H?_~V#$mjp?!pNuPF5NCT z9*s3cz8vp%(?>!^`l7s>v11a0sOXP)1%I_r6$`@z+z#JAhWpbnYCMd-tlWoHU>~0} zTO?AJL@{lbi>T4)@(<&Z=zit~cv%m1gzPMa0?%0weU0~$OS0zhTKBSb4)L62yx~Z_ z&r6=2|IRA2qBl^E{%fh;OW`Fx_fVHT^j)r)I33BN!w2mT9%H!-T|1Q6eU(;XT?qS| zUxn29L5=++UI@**{VYD{5`>T5=S9+HII+sk{f|qs-S1K5jsU>)(P$s^w}(oTkn#I4 z^mQ;9;S!X&@*IpoBddmDzWAK4p<$l+JULlcg5uj>Zc&EfI}}Q8)@%-p#Q1Jte3)Fb z*%)hTOy(liHFkMeOV`T&4y*PH5aVZMz>5BipVo?D?*0sn{fcnPT=scz915)iE3&@> ze_pU4wsclV(r+e}jMdL9t$55D}it!19UlXw+_rNS_ju9Qlf2SQd_ zHxyJ?8uuF{=Oe9ZvZlT&K9-JkGRAuYV;?tullx;6*X66Pu$Hby@}fS#!e2+0s?>Un z2wle~CltI2KE!gxtLo2|6R9Yb z?2*Cjb-X*zGR6mSUQwTDMD1XXo2MGZGa99s8YSb_s#s?pFN}{1RmFPqgyE3Qt49@; zA&b?cR3S#m{Kx81a?lYg^uH}w#13I~-UI;FzlMELd6V#~50+%rsmEj6pL*;opLpsK zv|r-SY{KX9tYeOQ)=_?)IQ)2iI#Ke9T~Np^0tkL#EuFd__6HQi-fR3KFSsXxyVhbS z7B#l^iJe%CSWU8t@5hF zKYv^oX$-QaI3pf;E3k-@zSiUK)>ne=qCy6+JlJDEpj3vpU|ni&ws+ zoyY>5*4!aPQYW$|rr=ET;uPGuCkxIo2B$Cu=SVM3NmiU=4bG}Q-g13@fTvsqbF=YN zX>eww;5^{PsmqEp#^4N1!8yl^(?2WDID_-$LEdt8@!~AbiZkBeJeY#h+}$IelB_rr z49?^foSVEj^RnVhG&sd6IKTGdOwWol$>6-!+bf^1VX|C(Zq14_+2BM|a31#JjLV91 zvB9ZG!MV_jvnDIf5igTsGc{~N@jcy+KEX#^B#o%0?f-~ETb7fYX zsRpMs1?M;~j-3@JY;fK_&?}#v`+LeYDJ#x&gL7*N&XZo8jahMK7@RRFI8|PpKp>m_ zsWCV|_wttOATLf`R(lvVIM1fwyxY|ypT${mZZSAhQgCkb;`E%`kj2j5W^l?=aK@(K z+?fq$uEF`Br&m6E;9e^vibL zpwtdI00mmaMFRK4-Gr@9U+Ovr4*|>0H{5izZtpML$m&99R?uGy4N~ZzhMN^7u5^I2 z1vAF+?iwdIE6x)JXIcu*JTK0ES#kblaE?sDnc&5-?(p?CJmq@M;C$Z0Tdsl>oce4y z%MH#0DL4&sj$F$pKWn*G7@TubaHe~4I%LIJX>huv;0*TS6K-TJDl{ul>T3%P zQs^zi&5rJFserS83J&7Q`?OIH&U*%DaSF~W827}xJNy)6!`W6Ljm4Z{24d-Kn zQ<8%7n-rY>*>JWQoOQ)s`FtmbznyZGXT$m2;MAqyJeq=2lnrOQ!KqBaxikf*I2+D4 z2B)=~w_Lqaa6;K|zB4#ar{HYBij%4Lf!T0&8k{RraBfM#xzD%n^623%gHuKvC*Z@n zZF-bejuD-j7}x_+d-wi+L}e~fP7#RS^(BHLX{3A-{mYlA)Fs-FM7Mg0F8);WG{Gh6 zLZT~ti7H*9ZX_DzOElFbDj`vCU!sd$qTVEG?dlPM%abAMOQN@YiD0?32o539lfFb- zT%rLaig}6FeV|3~gG)4sM3?&#?Qn^XBGK`FL_tGz42gRA5rs^46(ss^kw*kRJe@$I zb$&!04ANKn@*w;enhzj=|&P2`w|(X zStR@&?%z$JQ&L<@b1 zFjK7=f0{%$dWiyWry)H@qDj6)m|N9I%Sd#zm#FC7G^7_u)Ww&`AiYGQWT8g{7r&o| z)I_3HzC;*hXr7u$^p6yxjcG`)km#?zM24p~NOZQBsOBAoRAVH*fkcD-h(P1;^d5;i zd5Ibv9XCWDkm&PH9uZ9aB8~AaBx>{$)ojv4m~Pi1_>@HV`4XAzk|er5h3LJs?7k+^ znSMkNlat+dBpT!;YS^5H^dpH1e2I!&q@PK&Z9k6)cC1fB;(=Lvg_o#4ors5G?R&gL zJJzKk<#Yv6*h{qT!!)9N5}ocP8th2ih=9j*?Zdr97k{0GluNHC&r7r=y@ES2yDc3( zBB-}D5>6oN3N9ki3w}hrPgoNjK%%?+h-wVcfh4-tkEqTN^(E1GFVTc#TIu?e=rAu) zV0#+TAQI(xi7HzR5mzFHfC2@uKP=!9zdGygtOs$Mv;AOioLk2N(OJuW4bm4b?tUSb z?n`hV91c`Qnt0j}-XWG&fVBlylvs_|BWy)3R`NGv$Ty#h3~kG~owDTorh50^kOpU~ zjaqNR3KN!+FbWj3Q27KdD)d+-Tyg(Q%K7gOsIM6yU~Z3<;>h=O{qO)E!usKFe3+^q zqI{U5AFk)amHOc-K3uLJF2Doiko<7c_wHih60&smxv}@uiu^$4T74ksa0zz*ShKYx zH$Ldr%Y>V@cOtE4hA)fk;r%47Ct1;VkTlXdK3p_pb7a*(ISr1J(2%FKWONWflAwBP zqzRWL%UKMyyHt*%gzPJp%kI)XSgUHn5ee%q+`U~B>(KYDmS15ns$Ys>o)obTBUyz= z)%UIFW-H3=d6CwetT{Yp(`bj{BPs7#<6CX9igNpgtJO;M+4xv9k^vU5xtj<3P>DwY z#@_xWb}k%)7os0t{;k@B@H#^o7CoO*hFAyTN9_Z7R;|Wz{qgJ}U!9w%s640fiyZ93 zABgVLSTNWQPydZ{H(>OlKRb;#4GvBx2+3tHu=RmwSYp|tQFUaCPnwNu- zrh>>XrQu=mT&7}*H+y!$U5eG);-f>@U|kvu&RoTuWP`5S*seL67RVjRa|={pYzyYz zd;7dMzHL+V&VhDKEczk)W8+v5wU(@lH49>*@XUC3>K~4?1cHguTWXFCI_)L0u?-x_ z33FL9rcQPItJFYk5G+;I?u7L5qvlvt!)nMMDNFE&JM??7>U%g)#1Ra(!9k$F`2n@M z9I7Ym!Tsf2PW(|hbkPHA`*(uq$7UEDKyy!j;;sM|Ob4u-iJg790c*CpPy4rW#=LMQ z*1oZqd(K1<#?LB15%q~Jt~W=+BKjP0{#$6 z_K*kPjSX%o*EOR!n^<0gtt|ED}efS*Q~CSn|{?mRD`w z<;vY0o50tQ4G>Q?qTzDGKKY4{#u=uv#w{he*v%HiMmpvn%V~L7*0*__wET6NBH8RL z^_Id<55rG%D)_->{1R+wZ+QUwk=;D(6aI;P|B%G^@{$3~C_CuB_Qm}SA5?#LekuLt4<^3Vf!pr zN;Qn#fKv+WwJ{%ABa=}jF*zOPn{XpvSQ2?Nk4IHbYw)3~h&J1<4k zOB_Zj)ecVCC)LL(t5^y#YmgN4(fgzV<+7KnPawRuaZ3>*PAEMUtN+7V><9UGmFIkd zgGQ<4XlD7BQX4DGa{s8bFyOG+iZ!$uZymbvDQwq)4n_(`YUh@mCA_AeaC9KgUOp2? zTZWZMJdI33*3u?sbmQgUWB=AV9>pw>Ru|l18XFTB@kAPGaMr?_eI**3+p#gU2GmB1 z*cC-gp2GI2bY1#4XMd-|sb6U)g;_N`uQ^bi*HkvD*nU%O-8>)9C2GHKZ?y^e9axl7 zum`JB#3Ie5;F?w474dz0wx=!9ELZ>CVfWHCsF7Pm|MALuYGv7KwqUhSb6@zMcU=bl zE#Y6Xu%ffTV!X19WwCc66yT7xs70Prl7bk9QKUqagGk?8V7gbeRRr>yCzY2Tg&r;w{ zs&S;)fAlTIb`KPfeak%R{cY#XTnVt;Sl3#(XWWWQ6sU6my1iLJ(J%o-Nj4|g6#HE$$%9h9_5U)3 z!c!8{0)iZjbxjsgu~qybwV%+@Xjr~VKOxP!R)o|=@1auycH>bDq@2D%+)B#n3OWyC z%8zg$Q<}4ulio1OMmw($#HEA6G+WUaie@d{i4ZSV?fv)-6fi4)i}A>3$1F>S11}D* z*v$v*5C23at?0QF8n&{B7B@< ztFW(`MHuU2spzs6DdT&SE{}6gx}BZ*{YqtLl>WQ&SNxB|$Nz=@{+amy$G3+6(;WV9 zk(c3f(yCyEW?2i{Xnpm=j@XX_XV{$@#yF0Sj21|&xbqW* zv!OU8@!!EqE#PRVaa&1nW2^!d5ATgWcm_9Bq@$!pDjke*}6H2bPfF)zkNhBD zmVm5Tj@r>7j5OAZd>uhE%B}Y z7f^y5RC`GqPa<>9PN$f#N3M`cOYwg>KM?PIF{&K7n<4m=f05LRvc8;_A#*n0Z&!7T zr84&eoaZuolm4)f1gB6_}av8ONaxvACU zaiHdTwGiVb#c&9J{*{VXnlQ({r^-v!&pb>+t01lZ{>XHG-=gGc&bvFc=qJ!~szjjP z@ouJ)t8q@D#~qFpoBp6l_XitQfAEw?Q*?3A5y(c%c=(Ud4aHXR#kR zVrHL05{8mA?MHv+=m^zg_b0_CN}j5}9k05xVVrw+`a}9pkhg2SWOxG4(c+v&B)pj_4-pbxa`kvQ^82A(2(%)f}&9+y^W# zhVHjHav_AhzlI1mfr`Q-gZ^U^&k>vxF2lW>U=_^AmE{<31Sv02f5Q{wD}Rw%Zu|rl zSitC%1MR!MkcKdjE$H#B0IC}8krKrM{c#+%LeLbXX$zeJh-|{Ri^O}no|!lhw#{^N`uex zeCW@9*(MgJ0^P-+=Z9{btE0&p|&L1e`16U54uB!i$Se z$1k3AtL$`oz<%I2vfub`E~^!+>Mm=Wq<_3$cpvP zI=u^g*#GttZRwjvbRUTlUZM$yq!B$xqAR^b^NZ7n{z;%BxXjPTLRc#!`0oN%W4)0nEw*x*W}r$%N1%j?G*Z zU3bvwTAI#8X()IQAT8$01Dx^B#EP^YW!>Hh^UCq=Or9vMOcejUIVTW1CA4}}0XFWo zzk3aA78>kO9x(Os%;!E&NB&oN24t>R`)sE7An#|8&-Xz-HxqKNtjI+MIp~A@OTP>} z)63gC&j%RfM?OoJ#-dEf`)5Ty&>;WT2l?bo$n{x~%M9}OpQiKt&A}O@LGNkr(kM5` z_xK>+nF;yGtjGfl^6@^%$7VvlI4kmCgZ$aHbZLCjH-j|BXGI=nkmEkcb21^HmKFIo z26>1N@}Nw}9+MUMRD;~l2f0rskwL$LSgPfZQc}iB~sRsFpkJF{`Pi$cDmBuw$k*f{z zSw6_8XF|r2p)B@!hC%-6qjaACi{9Ut=NVa%BL?{&KFIfGLjG%3P9##@XSE)t(uoaYt6< zXAE++5AwB{kZZCcFEPjm`XKknggiSd@^XXRxG7y4|ABAss~fYjBCjyWSNI@bmI)bS zfh;w+(ja&CLGG9dd0b>`cgqXGLCbklQw< z^St|j3^h13EAo2=`5_`QIDTrST-D&3tv^ z`>e>r4e}%(5?zca{N z-%OXrN1ZcB&(TcCTeBixW{{8cK|VYa@|LW~Qw;LkZ@AKMd0vNs zwXbe`loh$!Apg||d0HmqkFz4*V35lU@+3#jrR|X2PWyqZ$g>P`^Xt-SPe&R%XRGhp z%v5~Soi=xox}A2zfoYv~9f0lY0GYBjgMeCpl29~E-mcT0?9Z&h4kZk;J$;b7XF|R( zEAkx%`K8y=d42(NPx0gMo|zT-8H2pY2l*fEkQ0;3 z_jeoMpR=MrZ_rN!I=p6%9POE~%FB5;Ryoahg*^a8dbzZ+U@@M#Ldp}jZYwP6lGX}e z0=oUxTHs=plMh^!U8VlY6~^3B_&SbuA^JDhP#Fc7q=c$@EhUUCR54AQ_# zSr%yo%iOBF*9ZCTOvrHDvmkdc$S3$9kIaO8Tvp^R2KkF7QMWBfWB1$GIk1R9BvuEy zgJN|h6dGMkWkFAQDn#?eQ&DeuDn|BrD(NdvrKlP_l^r5aazb%+W&Z*4G!Ui$-v$qo zr=e7^)s@4C$WsNn2Ru~{lczE0H1RZUgglK$w~wa@Bjsr#92Y!IIzgT$!>Pm5#V5+s zo@@^jfzeL{MhhMYg-F*E2dwKUDensRRJL4j@0(rL) z|KBL@KESVqd?%fFDSo9KXoZz&!#jJ`yPf3#C?hCfquiGM*rXLIp9u*2`61XuXx_!} zZV|^9_WaZjf8z%Zmh3sHAMPQ_b$o{a1=wu3NX_^$RssLn_H{fjQYuk#R_8sgU$4%4 z8oxx{@}9*nQMJ5f_$6wVH&4?w=lzYpn)B}9pVfJ{y6@}M`+EFobK*F7Y@pCG0IAkDvEFKZSM)FeoZ#ediZO3jj;rpEt0~Ko;Sq>V z!+wnqYgH&(P1tRs#NrKwS^(&W4&@7US2fb1zqS&I93v z6BcF(^3Zr`dEN=UL~)?y3CIH%SiW&q>@D2!6CWc-AVNnf?uz3lNq~%bXQ*p_DxnM` zPAagXFX4xrb-*=0I0rElB`M@tF5JswpFa~(mk@tOst6mx54B_1$%|?_k@wsjniyYx zSXJH*xJtPwBTWXc^DMyc5UZFGfPTVN=5_g`#$}B9tc1J2o9Wvpq&YEH0!dvy2Mlmk z5?d)a$o^StN#1D)C4-I3rFgW4G=PQVbZ1|B70y~CC-1IG2GNaHk0&@*jk=-+}e5RS~-e$B)B^LxEDc z{6i5~aN!>X50GhxVJphpUSjL24r%LydM`$d95zNM-iE5iWTDOxmxol1SZ~!nL=mjy zy@-w5;oEhC{Fd^5QTv0w3{b(cO7x55quf>vK41#Q=ArH1H=AvLyw;hjdR_rlLdozV zSLmZ#T-;$P#eE(*;qKe=;{Cd_%<6oIq#6{!!om91M12iNs`6@ritRBg31^vnk72&$ z$ahFX@<9E%J~joT8x@lVrv{4caILx+sW{pC3m9?hzg;1rB*n>h4TXclJOpQ;i}N(7 zbT0j!uU*`)ci^io1$1D2Yw{z4%K2Q~ItIpPlvlz&)Lw#WnE5#iS=~1>lIAXC%{dY; z7w~smdF|t{M2@|2>Z$e_rrOm8@S9#)9@v9uPai=wMl{|0;?AaE_0rhJ=DaA9V=w+X z4BJ2)7_e@A>%v;RlbUOpEa#hIn=mZ61uq+Sbs4cT%wQDPfYyFH%ImwnS0MQeQ6M-p z+V)1=)qyvHWpBnqWXth2Bbi&i>^QCH5AvH` zrxoSQt**4l=ec%iM2hLu+dyx$ZsMWmX7qzI z6)LBX!oJ0x0Bl_@$T*3R;%)WKd4EU3VDdIyfabh=<@qM}nf-b&d5!ygk35SxfZb5N zeK2{N`<>l>FnJuFhwPLa22H-FJ*NOq&O)lFIb@x*hA52GvK*v5E< zct}$Q$-y6-_brz5zUt@-^WkZ;(vRZ9K1GluYw2jY80jP2#z9kvIBW8r+O&!9#$x_t zbbb|LRxQCh_0gPyu^$$i9MYJC3*=?4M6#+Gex_B+&ZA~}@IRapPG?# zQ4-WOqk_=D7xr~4#(rTY4!0bK4_V@CHRsKzV5{>bOdsNEFtQekiFm1ZhzMq&L!<1q z(wLgDqE z_5xOWqhP_N1#B{PCGtlup{$z_bmI49|2A=dA(z!cQ;oQ%ZiK>L$$f>e!mn zZ18)a;bRr#k;dGC|1sx@?LeLa+5sM?bsYB?7rwv zffOZto$wZ)P+aqyeqjcUs-(w+Dob8*qZ>vIWdX~-!dFogoX0D~?*gg{rQ@jhuuX{7 zC#(e<;1>NVP&XAwe(kU5UV7pktdzuae1R``2vW%_tv#b~X||=qp(3hI$_O~)Na~Inu%*a>%I2I( z)~At=c^mR*vge?g z!Cz3kiKdM^#a_kt73RIuAIW%EM!S=h&jpj+ojtAc6OnTuKBj!?>bx4f<3A{0ImW>? z!~0paeNc1OlFDEOj*TA;E@g~cahw&U%cCPIVALOd9gj7;Fb+J8KW3Ew8ot1*z(T*v ztW?IqNJDTDeN%Do;k{UknygvRfDC1ju~`6R&`cWcBC95QL&U~UFR+#bE6#^wiM+^I zFSuIZsdgd$s$x){k_nXi*Qi9-Qt1{AZD#xC*gFAD7KXzI#c)&ktJae3>=4UixN;R| z_U*6GETrGJR>*LrqRpy30aA9js*k-sWG#xmoQ^i8VC-8Fye8HhZLp$ef(%0)E7}u` z4rxHl)RFX00(IRv60xGY;6Z}9P%n?OblY?o8I@DZT*(*h@z*@|?-m0(iQfgBK4bx2 zgX&pJcVM_&9+!8Q2K)@E>8}m z9Rg@?)L`sKTIy>?(h$JQ?q4%}5GV?9#cgagGe-sm_&bKSU7kT*hPZIZrqY=@I>tUt z0^o!%jqN~u%g!|;DVjDb`V{hW8p-BrOipdKqD^>*#A9N60Lcq`$Kh`U{*K4r$|U`A zDv*)Cnh!}L)GptHhm;y7A1F(~Ai%Qi%hkMIW-r^ItK5p-2yBu4D+5*{l*PBvwbqz* zXi@!>moZndS9DH}k>O{O!GE+uRMle+q>3yk1*xjnWke@7P@>-TN1W)c$_V5vqh=;I zAZFvt8Rh*YG~n$s@rqA@nzptZM?xt5*b6j=-FB1w9pF_PwxvNgpe-XdM1Q+4B6sP= zl^jZIhapwyj!-L8{Pnym$;A>+k?2HCG$d*$o_UWE%x8i-`q@dKLSOa^e z1m>x}fO?jE0@_}Kc+Syh@Pk_S*ow}|o+c)C0KYjr7Yr^XDQ0p8##-%40FZNQ2|^dt z?T7C9V8vNz8Rrg@%MdP6y~tfA!fKN|A|VBd-`-o3FuKD?3t&sq)tulq4| zYF!CBN|piLG6oIWDFI*J3>g10eZ1FRvWsztsESvs$9vEpa2{=9C6 z0}{Mk4Ap=gja%|KIo#xm9?qcXhN~)48J^r|*Y>48N))SR{0)(6{%XJ`>*Hk%9~FP? z>SM@Sw=zb7)>9dGAPG2R=U&kkUR064ycyzN_AdT2KCgA+O2vL%PFn5!@qg0yvv5JF zkG{t?iKYx$8`;Wx<53pTG5ZIMFP#FtCRyuQ8zX$j8CQyjVuly7fq5r$zWx(NA_=E; zLEN7CEJsx`*_VaAgy9VK#iJj3CWzH=oXd5fdbQJ(H7PBg$INsCsTMyB<@AbRHGK=2 z?o|asoR{Fbsz|Ff?Fh#qKiGk!HAjPDe`jz1BRpx&WQqSJqKY&X(H!KlLAu%(+yVVF z(o1q)1^UjRioZeg&`J;?=_fPVxAsQlGF&O@Q{PSrJo2O9@(^6sZC^^$lr_t&zZ(#G z*3sW!_?U|P>bXX5v5conCVy(K3>GO=k9E0}`s*X}cz2F1YByAmru46$Xj~G3Fk-1I zQNq=dhS?3E8|cKUQ0@Z!t;num_#iJ|`QmgKceZ7#)bWE(9pCFn$XmzxQ&7kMhQCtdkAkdR3gE5#% z_CWT!NSvndnNM-@X0@Vsb3&PZgc#&HlCu@%$`qXNU%{#P17tL0CzmM$PI2**2A8db z3h@J?+UnZn;N&5^uE4V2U?lX^0y_>hE2_GX_h^u%|3GCVCYMwSZQZ1xu4ZXd+Mtcf ziLH!xrut(EFBj`_1yzfbn)2kC;G8O zpW2pOkH1p?MNY3K4iYNM4Y04}Z-0g>K4De{>ba)s!SUWNvTVD%-E^@d@d;u?RLG}? z{=jMBB2>0FUhR<0@u|i1I6vQA7>JK-076R_RZiS16WLuHekO(xfAP@A^l0vRwsQd9 z@MnrS8xiu2a;WZ>r@kGp}g}$>{IT#0&4dqobvQ|`LH%J-_3?fc>ZPWU)RmC z_Y5rW+CQai&`?galfDdtPp%&zNyDkQpGk)c1WL+$c<5u9-&6C;GU+{Jt?Fn4u0tb6 zN9h^8%SJ@QRecByMK$$+ZBg3;_9HoxnN*eQ2O++wH`#IRlGRPf6%=E^>q;WqimYgN zLpUziS~4N0Zk+CMCgiG^drAcE0yH;b#kbz`$+ zyr7D0lA{ACI4&nz+1T1;=2l#?6EMUdx2#v~QNHi$a%^|5bcQD$+g+`4&V*Qx?XFfi zXUK1^a)xg}`DIypB=VTqk3&_-sjA-dAngjz$WT5G*$`WQ2%j21>4IT&Zq0I8-+NNQP!En^A@y9$ms0T(X6+`$RZL`GA zPtE=j6sn?w745;lP-e^}=+%ixQ@%$Pdnpa~_%wTHFrY5VughozPJ2pUse^E!ssZVd zU5R}I2JzbQwrZaOoHD(UCeKWGozB?xypyw?d>!hXG&U3G>|o1fo6N}9k|$xDenTv$ z{?vR+t~KWgRGtG~(D=FLhP7YUE45=CGq?~|F!?>qmos03^nd&x(ibp2CqAe@X+F7Q z^{v_?fC=xdgEeO|ei=W}5OeHmhZk38AOohNa!2&oM$ z!JZ8c_#pvo=Cqca8B9bc$Q8QSje*&-Qu|uW_;8uCG~Sz)z(#Z7FW*g@; zbYGT7rw>PN9)Ed-NPPA@Wa0F$wQ)Q+J&D(Eegm6SlG{;kSD*HMJ!&DQ6VU!K{__|V zH$E!ro9=2O{&>fK2)C<^fbOg+@~vnkh+$2_K>N4DCDJkd3Haj~6z)OLS)HCN8 z3Yf9-=f&@8IWEPW)H4qm&Db~pgc(~U_Cx1Z>22C6=87W#)?ae2(ChvXZHMjiji1yp z6x0^fWTWHuyY4>CAL#0ObF$0cfg3!bV})8{g@2ix(p?|)4cprS12)E*MGe{U-TJ93 zp6gd@)kFU^(Xao45g4*Tr5s5&B3Ek=H`F$i3|X5fzH=q;?cu=GP}HU$(ZH?SkH-J# z%c94^-K4Y684G6`)l>y0(IWPgx*TOCtR*fVAK2!UHs6}_4l3D{ILs2Kr9V40{e?*Hlq_UL?~#%XfD6plI)o)e z$!-L$sqVzsHHv$zCF@DF9N`C}(&U*&&pduG_(lUng}Z!zzSZFy`v7_)k%CN&tuq+V)~v`FEyhGIM{#7~)TPv5g{eUq@_H*+CP{ur zrrdrnV?%oQ;WP%Knt``IF;$U+fX;N4I$#ejfF0rNG}$`Sm!^ro$385rzEOoe~tMqR_+k?HlImVv1H7HKJROh{tvcbXljfYe9k@;?MaGAI=Z zdgLH+{s8S|U|o(6y--Pbg5TSEQ{!CFT4XkH(HW?IN(dd!7F3pU(oa9GtyI`FT1id5p zolZZbZNgsqp_y0r}b`j+(0yQe7OA)vjeFry-F~DW&$4 zc`P9H-znEJBQm!kvukKl1`cvP6nIrG{pW@ON4GsL(=K$u1~4(!PELmm>3^NzWcWEW zG7ZB~NU!_#q+oHPgWBHml4!?lP7b*4*T;Bp92>9ubvicOB(FhwV}JbCJ7`njExJo% z{d1)sOIhy#3H_xS{9(8C&WBFJY`5N_R|y=`)*NUtatJ@kT)gW8Z-7DEf2FM>>qFf? zk-A2PB}$p{VEMg#*5r^+Gs$+enPj`%5r=n@trGifBF^R6x;+S;JI{8Ljd`{~KJ#o( z$2iY6=0ow?2QQF`wojcI9I&OAW{b^48&%VO@&iXqIn}kINwJ@dJn9O3CXmeB+8OAf z)qHd6{x*ofbwF5kbX2N?siMd>-#F}Sib8H+(tZ~EKUWUZzSxKP#sTxyd?N-oeZbSc zZGEbEO16SMG(>g>^ueJFE6RmiJ=KTpPk(e~;>%^;Pqu?iD}k#c+qDY8xLib`l}03J zM2dy{jUf?qYiHY z;{?A-*wH4Nf89ynZ2I{0S*(N#?{+0MzH#f}>(BN@ALl=y^br;DtF(%6F0w((6Mgkg zH9~P7e?ltaS8^)@@A$L#8~iQDjz!!Bg$1qxbPKJ0Fnd{uiD+5y>bW0v&5E7?YOT|_ z9@1mW{L~t9*TY^+XJ7HPbOYu^mAuGJew|hU`#9fTy(d-lS@r)+iaz6f`?OE@MgQ;L z*ZKBGHX2_k+kE?Dd$kGsJm0=aYDPQh^v^k^mU+It`;pn_+efckAk*y);ZZpESA8N@ z=*$fJ-GG-YOjk)h+Gk$<6(12eBkYW>+U|Sdsto|T>;f9FZV`D+ zo<$v%{q@Rzc(orb!X7jM&7Lz=y4hoYMrvDUJ8$1V7W_5wB8}kYo<#VqH zZ!hvW9QpqL%IE9HT=|4g^vFj>;m>0Wm==L7_W8)6Ij;^{6RbNWm^>cDXfGOM2%b&7p><(fM75ecN_ z4EnE-Q1=y{jzU&=n*&%iR_nA}%Sv&&F;p^pDAe+>I~&nFDmRdPPn(l^%^>ful=b1W zotoM_9+e`OCuLqAW&_9iursz$gE=zdT^i;+Sl-&6Mc{LpKbD52;|jxnJx5ec<`1w{ zV`$YP-ozuf@~G>0aMj0aP_c}c@_-X(LQ`G0Q;&HOb=}T*ecjG$92d^V6*_mwr?l&K zx|{2E8qUWtdAV+9%bEODfmBc9*ND!oaQCd}*!_vcE&BtI@9I3BEWqqFevQXPJPf}9 zMp1S6BktWYc@-*O3mOIsT68(c7R}&)bLHlqExg%Betn8x;sc+DaUfh&b#u=Xcrc+r zZqhfcK>naW!wAhqk?d9wv6b+F_IIB8>jwSVI1uZWuVH!B3HdV^KnkD$j3I8PH<$Vw zR4(Grs9f%2E_e75F}Y@CA&LIzCE7AYA$@6x7L#b49}$l-Xrw1d)Xz&)rjb0^{fk6< zYCPhZaJ9;zNc294C>}oeiRXD7?@AF5fwXx3h8*pAe!0vvxh!Wc*XdmN;Frr; zd&y-cb2-YJ%eo6xS*ToEDl3>vXFnp@Ij(A|iA46z9;q~h6_P{?z(IR zKi@z;-~%~54RUiW)?c0B%D#M!>pfonnATp6Oj6PBNaIfx=PO@0>VuC6Tki~KAN zA%4^i^0Pb-!J}@Hp9Av|IjTl}4())jQ4#rBQGl3HweoXJM+A(jlb_>(J0UJVCjxiU zZSr$6XfM7)eqL^^uDtRt`8fs2rv6=ihPxm<)C2N!MxlxgwUAFWQIw&R3JmqIytoxF zIri&Ru@3M7(AS6l4Kfq)+`e);Jh)Q&XNB^m zol9nq>(|cV@IoRl`!E2+hcVnDG5D3aEI}@bu__EB_Khyx=@Yf_tLxpYNseSG-k|;Z z!A{m;%v2!)r0T^a5Bq5(PS5s*eaLp2$(H14*`BkvY)ANJ`_evS+cwQDEy>fe{TRV& zlxOEt+LcJ0UfNarkZqmGmgH&KUb(kyPxZ}q%|2w?)nrTZv~0gE+e>NRuJ$YKYx|Jx z-;q*lGs)Ak{p;Scy}&oyb^DNQKa(xV)3VLoTehEvVG%jvL9)X7KPngEaWpOMw7msH zyU~vbeXm2bkwo|T5e+m%ACTyJKcex5XbXwX^dp*Lh(0CJATQCy7b?cDGDJ3s3jBx; zH$-2NXxnuj5jaSv7^3e;w8D?*H-_j(65ZoRbe&Sl#u8JFVT)aD4sy$5FG>}k8Qt| z)2?e({v9&1&+|)h*xpj~_e(KwZz*nUmAlC(k`m0F0^BzFp-$wR~T zmcgBVDMsuq#btgeM(!=e5N{y{r`N=&)I#KVGtlIrv3tv4-BeGpofN0;EyV*&;nrs8QzC)Qk~F?rJ`%jK4T{lO(N}^u*4NkT0~yvo8cf_EI2B-mwly>t7)bd(Q5LL_g)sNq1M1sG zeyhbdEG0L|dCnbp!xUQk(5fGv?%i}f`mmZKNH}uDs!lu$LZ}q9L+#H1C_j% zVK%UB$cC0zGy`%TR90Bx!&r1AW|tGd>~@(8q=6};*KiFeX1Cq=REX=qe0drwG4!K& zK53>SxCoX|cwT3}(U_)OdQN^~Trf9}Tc>Jn3gzIOVqIr`i8Y1$*u6GjF%jF*gjSB6 zMAV67DX-m0eFg^hb4jA&^2DjZT-k%GVC?tS6Qbn>%=dfC!`f?K9;z-GW*N!r&!1#3 z&thBz%kqera4u!E=0pnSu#!@+@FaV*@Z?i0wJ@#rH-M3+peg!1$KaCh+Yn1&0r)E$ z3xSFplADIPivTE}y?dRAYp?QHEi^5&+R1|ooJ}5IZpki>d7=aVqdbmQe5Y4)J9+%e z$fFDg@Y3b+%Fq;fwBU*ksLx*Iu~cY89%?_pK((f*bsaKE+mP`oOc30ab__Y6mngltaa&G&Om7KC^x@0g5WtV|?r#GrF$U3e z#*~-DCly3?6&IaiQqP7+Ls$M?8)*#I z9D8o{X*D+l1J&b%hsf$+WY59YoL2o z&$W?Ha)1{8x3%PG?3XEx>=|F(1IXuAcdfZ0ClC*p7l-fDb|ZpFuqRiajIX1r3-~qG z9IjC>hf0zo`Leoy?2X79Wu7<@EDr<}P(k#LfH6|#j6(=8+*Etnq%iR)8fYCc5eqXT zR$I3*3}9q?Fj4pp0C>(Y@<~}@R6``$<_0avWB5KwLlfOnvI86{Zm#B#Kd%Rh; z64^hGoltEpYt&cTO@2LzUz_+9OUrF7kE*Zv`m3x`H@aVMRbOdqnYNRQ%(N2HM-i~t zB-oDk%Op9oPM(7Q6akGA3D%N8auyAnc7Hh|1$zlPHlIHr?-X*wG}kS5YObst9i_Hp$`Vm$Tv zSaopiy_JOlweDG2Y%M8@>>6L4k3fUxhA&Z}jxR6Agk&>A9XHmzA3*TT0nfwPaCV+| zG!=^-SnO1|6`0HD(DTTyN#P@)WM%WkfO3aOavpZX=;GJcOwS2Om52Y;atG*Uoz}G6JfIe1=kvrJv#_0_IgF` z^~1uaMjH~vFP{d2Wn=N58#BO^vpMH0ccCBq?a&_3R^))|i@(ASyx9)R*pJ&@{w-2V zR`ep2ZW;4vS?Ev$#+*+?Ee}TD)<*;yY3W>7qOuphSMf}u@)JEav%MUi-XvAMK8=Sf zgop65jKblvk`~V9Iwz7GmW2Btj$BT-#^I?s@S#)RiaECC11Sll^1DW^>>x^|vw@Hj;0-4e`tAaHa2WY|rAIxMdVBRD}ps zIj}*5L+s z=A2*D+vZWhBBufBjnj3P=BhV1d|Eduq_l9FM!_943WYYmIj6{+7#oOdLh42bliX0j zigt4Kod0Uh`EYN!CVw#2ys92*Ci^O%Jp#KKHkmKFLCE;VZl@9juDwEh8rfXsX)9nj z#X;WuuGHLH?e$=)DIf<@PJY_IYR=mNyBv_AO|y9R*f_C;eB|*^IsY~16<`Q}fJU3} zTJLBGUs*Fez;>xSeu?`>V(GS2AIHZ<>yXB7sE~cm>(j%yF1buv#8RkN$Q!+N&j47< z1(f?sSE7%Rv6|{=R@Q6^SSz;Ie&snWrWg-42c|*Fgt6b?Bp)SKi@h;HD7oszrZb#t zskNj7LXnj~%}B5DEraBo1ZoIM(alH#!7LL3ZkrTXU^pXNqbTr+|5r$$>6kpsoe}17bzz9^eG0Klj zzfgi-;&@^I-%SH0UnxMOIhZIeNsKA^A=1Piio;NQp;Oio%`@JI$FPVHg06PWD2wYI z;HZzDc3nAJ56Pe5v&4CHmqjKRVK4Pm%oAWy2bHM(ffMdw&5=EZh?!pDwPozJX z=|{`>>cF_A~a(F)}i{t_#k#b zNO0^R_D5D^4Oknp^VmVO$5wPXo^T!|^jz@(gEL6ubcRrYgT#?N`PG|{jeXTrge`1_ zN>1xob9{d*x*tgRz86+^U|woZLDp!EG^#u&_zXTHdS&!{h>o9gAYb?Z$D_dF7twmK z@UmG4p#v^MU~6=>#|IXMfM7)#)=^0TN5#3xSE~F)))@5~IS<)szxyZNA(Cs=4gYBsXgU$48l1emoYNdNw#>qkn=}qLBvWpbWZ6OD)!9 zMgM`cXb%*W{dRz{O{qkARk7X_>5omYTBwjm@LfriN*!Z_;f4A7JAyyf9)OBlRt}Z4 z12}V(JcSHR(|qPc_T*Z(&u6+Fir*s~ei6EIfK}Uq$01*dem+6HLe~S%Wp=|+)l>2j zh4O|1Gz#47a#C($!n&GW9j6^%aZ&i#$d->I_6Zd|rwxhxl4ISTuQhDPA6d&GEBZcJ z*TGvy_d|n!f+y3|yyVNl$S?WTb;&;{ex-IIdqPq{*=r^zc`2bVei17Vm6~%KN{Mc^ z_TTthGm^8m(8`D8K|BU4$`x^{G%Coc9!IMg))M<;Je89Jd>uG-@qe&_i2EW~EB0e} z(0aZw&s0nji(lB<1-pI}b5Kt=Ts~=aLM;1b!ioDKMJ$P)t)N9{`clwfHo( zg8&3x?baJKUsiMqQXnKW-|kPY5Q|T^>fVm4zh;q_{0yEkt328jH5{{*JaUzWt;M(IlY)a`A+ZDb_~y!-GW={FGq_C+Hb>;q z%%K8`z)+xP1DZ!+WXorGp~t-aQ7YDpUF0+tD;kyzb77{CW;s*_*@t9Yu3Boob>b_! z`_nBnab8e$aLSjiE9|C@5+qIu*3F{KVx4KF5_L5|ocR++0@m!#$R=@0PMy@OLl6K3 z2xKVmf6xjvz{DxJb+gzAMZSvAo{5-+$yY(BInbOXm$|PB)crcD2UG39%s(st)}3&5 znjz&vje^CqZ^k{Om}G>%D^U$;SJTGMN8q+unS7Q>!%4+Ve>jwYD$|BjV{9Tn0#7+| zI9a?2$^bh^(^HWXKCB`XKA-);|A7W^3g;rdXL9+*KA0L|zBMCh{&K3f)QqIh5vYEz zy~B?wGP>^48radR@-BM?KUaK+|J0Zz_HCVsijEp&%?J|02Pptrz2trbV7`)c*%~}5 z4scxcJby4x_OGFB>UKtP41zcWhcamiNQZxnE00%DjjlYb=+8)70b7;}P3O*b8_&yd zzNby1Wr{yAgm|2ABHq1%7k-)<4dVwYD?iLqAMTcn;*-j}6;q{{xKuMyXrJg|0+n$+ znZS|gtMOM$-m1M+9z^<9?b&!}Ujv>oWs-A*6rfvvdTCPrw(sch3~{r5Ma8KUeF%mp zFxwxHSjTr+wuwcrL~cZqlG95h(gHyWFL6uG{*oW+)Q9_%ymH8`wncbwcHm?0ePqkv z2qsBXP^acfTq|MJr;yA)dnn*!y{0^65E|D3vZ!dx8ucWNYycl1&G&}}pEXUynO@AI26Z5KpeVkRWCd&HS3^cD7)Y3-** ztmvO1I;W1HVFc1s0$Xx1|BP(I9p!sXWl+yXi}L>l>2&eyg{3*jBoV4~xEeYu`FoPE zeI!Pe2$yv0u)iE(9vxi{hL0xK;^a|@osRj@1EqJtjR#Q%yh|QxazlTmsw+QynA6S= zlAilv0`N;F78uj@hOsUz2 zd&-m(?g1OM8erN+l_od$f`ww7x$cy2&92<=Cy)SJiE{3c(XlnVa;iJ1n#^que$}on zaNNI3>TXx^?K3#SVsUbL-1VCV#a(Mr*uWo>Oh|NTieb zqV`il?dx|9E(*<9-W#OyJ@tDE!U)uir1{CI?x>3sF7cMLwZzQNFJK>|r@ulurYhyN zM4O~-X&7HOrmJ^>hwhQI7vJ-~lT*+8(z3Ao4XAP;-itoNiw5VK&Hww>)K9_nMb?sa zSeL6n2cY^r)YTf4VZvD0U7bET80ARozpobM2;Up;E$&IUoU0QdaaeF3cQV|f;APlP zKs)7XM~U6tlY36}9oCZ0qWwSRhHuesQGBF|MAF1-825wkRr8Z+1j^R3-kLjLGLgcA zpA_qCq}Uwl`l@O``g3Vly7-aF7!P7{s;9N&fVys8g2m`J{)Bm!AO=~|6cPRnXS8Fz zi5Xeh5reGcGq5*W^AMDY980;x{$58xHDDZ0ONQ|nefXd~NJX-g&Iz`;3w8;!bG{2h zRCdmH0nqJW5_r(|)d^q55+=sxAmYVvW{vvGEatyok}l>azcH1JZn+JOiTz_AfN3LR zE!m8nRC@1%@{wX9Pb<0<+ru$2uH>g}jw@wosgho#VRT)ntEja?iR^}$??75~4_zqc zqMc31^BD*}D8fumG2Nq%mj#Vc`vl6Uw*{^2;;q^lpp$lNx>nCb{prbaes|WNJn7f` zsM1eGaWkhsDfuafOsXE^orx3M!KivCV4})eB6f-4iEaT(tQAuXQQn@L82dBF^_QR` z6DR1}4%lOHO9mvQd=M+T2&G3g*DjR|lrfh(UlN7?rT0-+h*&(G*+x`-W2!6Y#B52P zhD45$X1~ze)w7!27*LFcm!hqVRl5Yd)$E31-2#5nweKl7c@A5cSL`qBu$^CwcK!nU z>a^y3Un6aw6F z9g&sLFq#L(*c3A{CO=noNf#p@e@^z-oE*n-A4*>PNBmH{=w&k4`E!kGB)e>+wDnL*AUOzW z-2UHHdh9RWZnPaG;QcvlgmWQ>v z8YZnvUBS+kFlj@;YEbGuc@GAqg74ZRwa-WF+3@d`J$f8OX_7c%g{qNr`H^kL2-7J( z^!%jcG0Xw;vV)}kwCiT4Kx1vpIhNGHW47zh$4qJ~W*V_pW7TejjgTJdef)53mfJ(c zlPOZ01^dJvY6Hv+d#E2Uu#2@07aL~PZdb!RS|pmr&HVUNq+zPHWW8!#oW%%rjoD7~ zYlt-lH=#+r_x*#a4NXN73d*fFmysL~BQRDsNLDmfQ5Y+|BTY5`P|4wFcJez@+fAI; zIgl$JiR!?Utr#Vy$^NMqmFzdm5K@*GoE(&iLpGUmI088cad4xuZOwtc+FH2&b|f9Q zZ}J4Va%r3#qB%K34Q44|#}6`2VJ<`qQ>t_|d8l8BK72uysH4HDfGs#m9%Z#f?zNf$ zT~-xlEjb}L9IinTD6kB(kj4%74P)4Fm|Kh&|Lb@u2+s8d9@5ya(%IgDkCBno(12BY zuk@py-VY7yXczPfkh)$LD<5K!?G=LY;S}O7|uI67f_7)`4xuH#|F`eoO*l1BSv;#fNx)opD zhKBQ%9$f0*R{3F8W zc(l61U+Qkn@Ob6XOy+$5Q1Swh zq&4mMQe{z=su3GiKE1!xg9Ig~#3a(yBU5b0}uII*)cIzW(; zbT0BV7YNHmLqM%TS64#YhM;M9CCaC^((KZ^QPx0q-v0u zwAH}O>B+hR1h+lXIL>Ay=oI6N=@)e+d}7Rw$`l*C5GZOyptpk0*$58>#wofEf0Z~; z&xrcfwJoysihF_lb@ENBk90-Jah!|5 z<(4wqj(sbkWP%vdB%#3urt(e4)yRI(71NZBFp45F_vb}Z7+0YJ%08N%)miydjo zZ4M3Ao*6a|xK~)Pa|+73HEqe?CODqi4n68DQI6RTw`ALKFQGuiUEI+WUjoAzSPJvGyhKRTRnpFUd;?5S*xqMhy}* zDk>^bP|&bO42mwgC@AQn;<3?He=F(>;ISHfFOX-9#MSj!FAx>HS=Z%?VmM6jM!Zlw zA}G!?sNql%kNm&i>YkaN_a=w?`RnIH-po{2S65Y6cUMHDnNAq5!WNcS?9VM}dCQ&hv z_Ze_V!`kd{;B@^&`?7-M#ii$b<`=ly%TN*eoT$o0Kq@7wu(y-oZk_TALrt(UMEu96 zZS57&pS6Yas9`)=cGNx;F3TbmO5N{0R)lE9(wzz%9>Ex~!C35GB^CRf_wUeWh;^fm zzpU*`CqC-8VwX{keol`Z8l*Z@X>RF#{}hk0dB-h`JeI0mv*nN+lc2|g6(*W;NhJBfQa_+fuRlbd#O{x5NoR`9uY_XwX z~k0TR~2Zhkt7wbf@@lP>a)LoiW5#5+wnHAq2|1SP= zbOQogxG54_7b&5c7SGrSG1Ggi794}uWooBMYDzTy+UD3BXS`7bzWGd4?X9X|vdt2C z*6C=t=HBW55~7nGZTTE>aN^khqONvFKHn8qYyf(fW5;qnYHOc{86BhKIUevgjP8tg z@LMkeFk-MW%sMeaG546F_O4vpD9^7!CtiKg2r17DY>>zb$EM#D&F zGN+xn$;ER74%AMsaNrO&l?+vwp5PHLjHjZ{_FeD52YM)4scgm!KJJaj3c2r6#V25@ z5Gj%E`t4}D!%X~j^@5$6dNFSQ=((qCS!L{zrrO95N}Z1zl6* zb~|rv80Awjl`ANBjz<}ktECWj5S?QlQ$`r={!I-={`kQS8%*87qKVw`oI$!$b}x#uY+|zd_bozTEfgMBX>76M2_8@|JNQgS>1z zDzQ7WfN9%ZiSGpbqV|d1SQF+gN#joR=ZqV31Xt_xYTrQSGb_T0FUfIz&P`7TZ=Oqb z-Q^wenS6HLUFPwg8D^X7PW<(MlKnZT*wH@>i*+Yz73xOU;eN8#5=VQ&U`C>c_ud_U z*-lIrb~grkHCcE?4)9BSp{Y##h-XqE#^;bZGAJQ*oiT-7&f{Ld*)fcf{T=xQ32xO7 zZSAek8vR}AkK!Wh$K{CyVN8&DW}qg$HRkjPZ$2u*rUgA(EGW-Qn2nGH78*fhw4fCa z8`DvVFBUtxly>y@_lp{2Y*zhZMdb15x24{+k#v~T#nC zYp&h@_20?cCe7RL;5@F$O69Hd{WIgc$y?|9OUCy?gZIw&hva+WW=<;geAtWUb@Uap z!6N)lIaK=GL(=gOpJ-fBuKHj6)96OHjc~uU(kc}P5gCK{+&;`RkpoUr8xh*A-!_GE~Gpr&YVlTh3m?j!rk#WU;YQzyS1 zdhC+p-HW#v{7Ugh>;+ST(oafwFX9)6(ZHrfrlbIFnJs`f>uM_RRo;QLN^L`bsGXW8 z=XK0;KYxE$x?dlC=I8UoMDPk{OP0_HplP>8ykDcd*k}+81_lpvtpw-vYqf*9Cn$=Y z6cfQjaWIIVlw!YjFlW8#67Ryidwf#My~2TsRl1+5{MDF*PRONxP*0?Mk2pK|p$NWOcg}=ynrmbzusoy$Ezg5D=mT9m0zUbdm{FWh)jK zt=peK`vw6SG#x~sU-vg!=U}2?(0n?SKx>15IHqWzBM9^#6KK+k6q=4E&}}BrtRlsN z{vM`d3G~+>Aft816R120h{~*KI*CC2OrWaeDKwo%pdG~q3+k7p0G&ag_e`MGxr%Vk z;dFK52sA$k$RK*YVyPz39zj3`GjAc#wtWp2IMo?6%_PuUCQ#_vl-B)|Ku?%JZC|7S-AABm6KLSN z6rhI)G|>cV{4xdTVFDd%0?l8a0yLLEyO}^$Eh#`x5NPv01`B4Tw(eO1y>0>xd?p3c z^8}h}0!@561!xh0ZVm!61l&NNb4{SCr&2I2CD0HPX#NW+K+6cUs|hseNd;t7*G!;q ziwqVxK!&QkPM}vzpwaVEs(YJ2kC;HYkEQ@I;hcSw3DklSFsYlrPfX`@0kn=lg8_sw zb|Pp+)&<5Z;XnJ5L487VWFug?q-%_B?`_RIWiPDBR5l@mgx3w~74Ivl9J5-0sOiKo zHXm}VSTUg@y|NKh+MKlkUlbI+r^)xQ`kq@iKBGD7OY?iWeE(ukDPK@GKHQvTo8L3! z`%3k_sBU~_bJo}9_pp3_M1AjHH$JO5>zmZ?G4*|5-S{5OS#9R`Oeue{`aYy?e0Foz z*3|Fi>U&w;_@2#K-<#jFq!VX`&n7yJ`jP$+2jcXK_&Hr5PCw8^{AS-)Qc#Da72d|>#XcV5^8*mqx`>x@&F1KF zH#*1x9^$M3#7DS@8<=CkK-?884)G8_y=N*bKFs&C0xZW0NjgYc=N)9Ahj?rN;wl&M z(tdu5yV8n59^#+(NTv8d7jeUtzfUWMc!(bkK>TK&pB0yMTPsRE#3u(Ju5=MEJ@EIj zqRd0wR*=eyLKktvael;IX+^n*`0fD2D|Yp>;^=N`#YhkF9|90x<|0Po6K&N<&h!u;6@d6c7xB^&ekJazcbwxP z{$#gQR`hfcH$3b|+?7h4?;(x_AfAt$p(ZPy>ozMc@(>>qfOwpXc!-LY zR@~_!{`W4atoWpl%ZmH_h`VCNy&mH69%7z<6X79&yU$j<)ooTh4$!byJE$o9^%IW5U+ucS!>0IpZL_RD^@(|AwD$#@wF~ur4=7yJE(h8&G{bUZMmte zC~^@m{rdN@;=dl^`vMR*<7}d4#STB>u2`|eLp(eH@!wp;iWTd-trd+P;)IpTihLLG z(k*_9yV8o6J;e0^h+n`NWX%fOkGLyVyyhW3IsoxSE@H)s?cHX@Y7gat`0!_Z#XVBE86^syJE#U5AlEi#N%DWiWP66`*p8_eC{EBr%x&? z+TlM_6fgbRPjOeQ_{u|kT>#?8T*M7q{fN6_#Wx<}eF6}l>LOOGXa)A}v0|%-cvVg+ zE4E=Vs#&qYPjOeQ_{l?jWdP#)T*M7$`Vn`wuDrGaLsL zQpxR)S`~*5?|fY{@G;i`6=r@#<$!vux62{=w-`e*a}AH0<+Gxt<^F~Qa>ziO?IAwZ zL##R^5MS#eZupBIaUh2b#5o?~ZM}jxbU;6Hh&9dOWel#14z*^WR?VT#yHnX*mqR;y z^~F%1&$0mJd_=d^=Ch)uWBm;YpdsmMk&|4;ugUJB;1A(3}fgGC9og7Rj5UAP&axfV{ClY9) z2~?j**&aBBK*yRuAuDC??lc1JW&$~wjNPp<1lrugV1a|l02)W2*G(V?lc5C@2sGCO zaxfV{=M(5=6Uf12>?&VGpmR+i2a^F*L7*Wfkb}ukmCFdUs|n;_GJyU@pl`Db7C4v; z0bfI)S431n%_b0Srw;p!R-qF(J6w#4FfV_4WNgQmKh@xy ziqfj6m&lU_($hQ~w_PE;ceuo^AmoH`D2P+xfZmtkCnf9rQ7MV5V5m{Az>^NCA9V0~ zCX9~%BGEUTsX|atfzT?KPyvSdOab#SVa5X{aU?3@`7V8<)}4FcMlHk(bwB>>h-(Am z&&V(`hc`6A_SoyLlQ5?bB~VajV`6C9oW~?6PsL$bv6Y~g$NG8Ks6HlDIYx(&@l^4x z^4-n4rjAi~w*9fcEKG)2T|MOPN!?hUuSD!vo) zWDZb$zG(Z?3_`PF^=N?m{V8ac{=Qa!uYsDo-=FoqFVf%3obUc5UDS^1M?CGoVegHo z2`2+Dlmyd0?ic(yanNgKJYKT?{dp?eg$-d86HY~2k5kgstWqIuxY30ft5eU%?WN0q z0Zs>t5;FW%Lg|u3jQ8JndC)$R?}k0zj2fKy%cLMmrp=g8uuPF!n5z=vi#|L2&1SxA z_B%rkjo@?QJ_hO`eqHC~a^Z}7!0sX37zNjH|0lax0spdNA5q!8{y*91|8&d7PL7iKvs>>9}f6^+>s&pri9*oL86zyic-XyWd(2IX6d^pA zLh+scTGi}!Fy}mL#L28!xhDCTv14sSQQVr!>$g#9{%;>AG#;laF9u&#d~ABs z!_Tq}+|W0TrC3Qx(-0K0dV>mCJ$M&b$zfi|svZhXN~6Pmo?Oh{{atG=Hd&h$w;`B-!@Z-_eP~{Uw&m*Zg zHmv)CVmwS%v~jpTzFd70S}O%`d^tNYlx=5d5zV^q~lNM+w-RE?9x9B(iR zltV{z9a#)uYamcLB>g#MLJi>P^e!H>Qt5Pxq1?nvcq#JNUs4tAO(Qm%or!0lRe4-d zCq`(lYbt${@HM zB2yf-z~7XEf6rdYV=L;GBE?P>J6?A~aUN0yEFvbhfhRoK`;L1|l<`4SO_{2E!atLluzqN%6t&bNYSft|0kvfdEz-2RP&7F zc~u5<59b`zC8gBVQyp8cZ3hoqEd7_K2GF=4MS!@Hf`8K@C!izWkNUN7!c^|OWj_5Q zi;ep^tLBKZy&)q^YrXVi$5bzJ=G)J9DAXoHcuA)owD7*_?Fugq>cI*`eojgRoZFr* zFZ`)acrBRDCHW{Y2qkX%P{{_tyrIsylD^75VoaOi=0CZEW=Z%AILU#8CC_@i^rjIR z4ka2wVTsx|_|vwO4^2tE*F`n%>R?+-dl7dvQ~u9k=&c^@yY!& zE%#?Vx!>cHd&Ntg$-QRw?~r@6^$6FfV|-I=V(JCSJ{UBA(8B+^rz?EkCZw4tT#vS1 zZB8+hx^U}#s3%3f(blWXL_m)crSxxCzB{@hU!)Vg)i2-)9&NqUyZQFaE(nlir~=#BpTb+_cbHs+W2D33)ws|3!}y$(+!B`PkSq|CT~?C-`vH;Pq4BlOimmBRLqA~W zF$L(23X#AxR!bdekK78H%$di<4bTwOU)z^+z`E;mqALpI2%X1oWfvn&dIqW_ZdD&l z#O`V<184JA#Hgs&$-*ZvpT*tXIa9eih|xK|_t5oP3mnf^`M^8D4#lfr z&)1ijJ}7^H<2-Oyn9qqbr-Rv=6 z#Ze@@!1EI^KMw4Iy2O*;)LcNSji_%$n*LUgl^W;s2cRyj^EBz^JYtBHwPHok9QV87 zpDNJb8-c+6u9}=j>bE0J3|ANfJ1DXfP$+SUXK{@3N-o0t?f0toR{=25 zKxogu6jtpNxYYs|xj*rvhtcJy;v^1bo`w~pnW znwG0?BXoOp?)0)W%{VG%;&0G*x2!>5wyu|XLnJ$q3#2L#rPy$fV#+QZ2z7;gH;8-L zBW|wx<`Cy52{MU$`xk>a)o5Yf<+|RjAU?4X6uQKz3WT^5HPCRAI3r`!0g8Yd-LkSY zE0YR(sc#pij0R~Ju@hUdqe+=kL)Y{kt@KIQx_bwd|NCymvA>e7yksw_cA@-M4fHew zq{fEYYl^D=fHZ6upe=|HJ|V{*f15YjV1$v?MSA6NI#oZCg-4DR)Nm>2vBRqV2&5rX ze`RI^ZJM2Lpuj@qI^Yfi)dXZ8g5fc|CoeqT=Fw@0;fuReV}`OZ_nM7SY!+6&q=EiT zpu?c;E{R!@dmP8gOovvxs?Kaz_2nqw3|FxVc@S5ORed%dQp9uN1xh^kAm4h`&pj&7 zi?<QoAkY|N+Jnf zFQxItH}lE{UMCrQ#fmlJ!;lqLH5Wm;V*j8VZ5-&Y^y{CTMq&jtjm44|Ah%3Z?P>%h zn-m$VnBq+VTp=IN>gD`8Zj5wDh^`oDtmjl7$r_vz69Y(PNK^<7%FR_7TUYsqi?y5~I7# zLwS2dt*1KJRT~K7pm2h#%uSiX)j{Vgu3m=H@y*Ue=#@x>n{q#)2kYt9g7jmCBUj{C zc%ydEqK$*Pm`3allu(9hS}5K8PpECd%}*ei?f{(+DsrH;V0hXPbjT^F&zRXAVzhS= z3MBIjY=R?&6UIh6oe6Qlu<~qPk`=(PDL~+kmnrKhbbr@BLUYCmz|j-PEZ(E%`A0a< zpda?NxW{=|kQYz{e%Jy`dEfRd30xi5%*TXR){V}3e-G#cCbGVrQk`d?&d{q3#Nf!o zgwCv-3;mp%BF&0(l{Eh>Hbx~;O_|IlEo0po=knGGnjN4|aTfmB<7i{pNW(w-S&gr) zobNERcW!63nqC;r=~7*27wpJ!X05V$<@uk~M!ZmA-6=`n$e6PYDp31B*wN+cZ>)Mi z2?NJKSP1U;Y+;o6g$@)Y@f?YUvh@NKr|+HneH*JVJ5TJY z*g)~>1SwF2{>oE~6xNYa?KD0|^4O_+jT(Eh|L`6^FpH{vlK;a;{J>~?`!N59FZqF@v-9~OTwH`R z#dA0S*mvHA>|(h0y*V=%{N#US`881b#f-FhX#j4xJuCkH*2g4@!@9e%5V^%81?uBKUaO36 z`n7fEviPd=&Ud%c^?JnHU#%TXy1`uEt`A#AhVw5;dVL&wa-_goxK8A!bdgfG7Ub<+ zlj~dUa2`%-n=)H4nMbH3=k)xKx7=q6!^W8{X+rKe63ol!p>G$(n_glo1jKDf9_H>t)=-x!1&lJkt3^iv{z;+J+c5;=75D}dNlGb{QHnq%x z&Z3FQq;zs<9!%1uG$0FC{jd__$oc%eAd}T7?Ac4muZql;ohs%G!rR0!Km_L#C2xry zf8C5{5ySvNukv($qRQQC`xXLA^ygh~9A)MgtsO?2kA!?D$#lH#*ql)9l)TzQ*?(Gh zLVlwaI8UF4yu84V4YF`;`6t5l(rr0RE7#KD?l3PWc6JP~RX|CNMuO*flfAgw%^Y?$ z+H?>cKBpc9J+ACocjAo|!`eerPSF|}{WjfN_=CL`1*AhebCmM6VcCA{T?4l-S0OK=BP%JwyeJHD@v_(n|+php#M~*^Qc25+o-_(s0$ihRYUXbLKw~ zP?m=Oo6BlLQ|LQ(|A{Q-*a+zHFt9IPSUiU|)cz4jbb^Q+Yi2@@dh!F@XEWi% zOG!EaT$B#b98WYV=KDDxl1EG=4|R^D+(YtzJ|yRxNN(yJ$w?lP{yrponn+&i9LXpT z$%c;+X(0-iCal?GP4rcZxgBP{!t{8r~k&h(I+ z=0j3uB6+rRBxid_dis$3EN4SCC7*SU>SAj9+I1UNUk!G9NsyS z3J=LKK%y;!@YkwtLDv;Y^)oU4sRN8ucYsEB zh^sxqW&;hnCi}kq$+u>otcVxP;XKO?r*Hg=)1#D$0!fpB$Ue`bq?a{wv{1r=i)oxH z;yJ?ui1BcRuk(n>^I^(zF*Otkrot{T-RNO@^+T6Cpy>q|!`ghIX<)Z#y4k~2<->Hf zi>aZkTQp7gFdgN?)ZfLlcyzaDihGzgtul!9@i>5jc)5AVYceB1Fzw{S6ml^wp5HB+?)EUP{J`YX0y#7)e45pdn%R{;-REJt z4w#&7vY<65B=a(F{HloO&f&_#?JM&qrSz4DfXzO_M-fNF+I$vV%u`Pt^c4?R_z{mH z`+c)*A7SdOFg5h=nBNAb$309B`Y_eIm=+J|7ERB1n8x}ro#gPdwiH~@i5Jkz7lA~4Sjmk!*m)jp|2bY3hZ0#9Qs8# zC0vfqqT(;wy=@D-;Kj-+gnq0T@v|O6fdENnf`}=p?#_nXz{0av~v9@T)1=@^! zVylSn*)%+z*-(=wgC5542Ogo1`taSY@GUMg@FDqBSNPU>_|Ej-i2^SLthrp`hE0m_3%~t@Li(tHO&8g^lkU>?eD|4yQZ(v zz}F4_{o>(!Z?)OpW*p>V|5$C{>xO(oSZwMkX0;FB6oqebi-E5j^o2cqgMIi8)bzC( z__{$~4-em$Z<+1=0L%ErjX;J*oBG$Ub9<2E;rl1>!Ent24*Ts5oD0)i!u9DKdP15* zxqwA-JS>Q_cafht*;s1l$%LeW(KL=&v z(APflv$RihSy{3CEDtxAjXY3(j>>5+8-0lU919HN50jr0fMH^Z{Jc1=x$M$G^7D$G z&1I90mYvoL&Zd{F@MlbMm(A3U48=*Bqk(ZXam^jlMhuXe@zt zGJ&ejS3t{AhsJa^ff8>R)j2>ndqC$BXr&1>={$vLg$Hy2fgTD1ih4j51iH=ynssgp z;g=KWOcSW_h!mhJ2{h0Ins{{z(A5O$Z32~DmI72sppCB^ENGdK0(2dLmid7GoC0(s zf$lefR-cms6eZ9U6R1c7t@ZdcgFt5l0j=_YZY9v6CQ$v^Db@XhK-nfxC>7{#0&RHB zU_sgV6ig2gXsHP_a9j$|!vwn51R8x-3eaN&iUa{wd98brKz}lUs>Y^ZnoppEO`w)D zQh=T(P-YMitD`qyF(A+(?3P!#oxv?i#=+8~C>}|4xqy@}#K#PSUGFjs0){>H>Rt=bO{|He%xD7OTh5p^DiS=rWtUR6Ksg9{GB*p~UJ3>WXw z$DCJOGpcw1i0W@|`4}#C{IC|_O>}$Mnz0HMRQ>b^t9o~Ezv{ZQKUn{4j5k|%HsbP7 z+~@Uj8t!)oF-@7L(M=8w5b=P%oEUCn+!LD;wfQ+1rMN8uPdH=M?QP$Rlf4W{`nh{x z#acmL)iA+e#g0OmAIgjO&9;#Zfg&#suZK4kS=t#=@@ z0E*h(y#^WI!I6;>*=w!l9V4~n;97G!!LW`9k@29)KJ$9G$8RVu3q8yo4lDK!Kuaxa z#%uV?t&l!Itpu29-hNq8kNt%*x5e-i6EWN;(htBk@%(2yZB@vtN2aq$Xr8s;9lP~Q z970<;0T)c3%YH(9pr|-;Flxp#j&-@Tj#2`C{5n6aAx-Oc*_P#gk-`qFsDOwQ(@}}q zFRQyDy}jzVgTPmms?CBdMxna$+7rY0GqR}%Rb=P~*3FyHVCr-Hr|5UM8m|Z6t;W03 z{*{}^!+1_H1l(Vk*S|k5^Tb1}F}}(g!3Lnalot=M=VI;857^+I+!v(=SPR&dln$#8 z(BI>rfXOJ|JFo+kV_lT#*7V;%5YduD;HfZOgbw2~=4vPl>gI9I_t}{8;^SOSLgXyR zgA)K9f2}a|IH6T5z#O&}3UHsQq8OYx0ufad^GMTPhsrljLIX?H{MNPCxr*64?i z5*6AL42E?eT}pF$+Rt8&U7U0ZR_(?@z9gxy!pOd1f83hXFL==<&`_5Ynl$@TqG`Z; zlvnS%S>zv{@N&ukGwNYHx6mV@K?_zxJ^rz8u{WVK~}IRPJ9pn5F?0{nX;uzE? zg3bY%w0uA_oH?0lh&;-3!mVxXYLrOyMEqSn-4*B}l?QIY_V4Q1B2i_b9&O{wP=Jm3_z68|_<9pD|-c13B)dAg~;B*o#&Y#)IrD@(! zqnq|MMkBLn4E&*`>5so0YF-3N)x@mC``~4KS^P(9!ODtdiSV-aa7mlB@RgFEdajyh zS=Bid!Je9nCJWJ27&l?}^-gs(hT6E@2I^Vmbo?b(x;Acuzi{}XjN32}=Hp8bdrbxS z!rSWcUQENzx8Oydp$#w##{H6@SM*mOKXp5nhytQJV=zTmxl>ebmed+mFWcTI>gM~2IIun6b1kIMkMWX``z3IrcZ)=aQu+ROA z@UdUWiZLO?K`Xr2f)oBOu>}``ee6ro)(rb5KwAq};6@?F5CF@kxQe6ZL^D?OQz{x5 z%hRoE@H=r0V+at3qXMFTNFp;a7N1dr#2iejfq)($g69uFjc)!Gb)Tct82rt~Tv4ex z{*sObM~ZB4euB4tvi=mgTqNR)d?Jjgn_$QV=iRhiSSitc@VO_K9C9RkniQ@{i*#65lpFp2M#T4ir_}iI4qV|WzXK-&1bTrX&}RVc6KEe?EaDgF0aa0jHnsLlsXNZ%=3r-_JO7pQ_@4V zt+#5M;%9QZ{&R%b5p}6|7y5c2+okP@r?0ae7N{v=s=l`2j`RS1WhlL$CB^oCH@hsc zsz(q&^=HKv&+Hg{=?5spLv1SbiJR;opD9BArC7EfE}{-I)G(#rJ}JD4Y;Y*r7lj~B zdp}Tw05D1kN2doO^tVydv`xo_DUL+#B40#(>%BA&>KuAgXq%ML^y7@YLI2;nP5+S2 z=x-e;a&+mZev^LmJgsDDl}(!R_d28ohvAh?><&NY9o7jy|C~e*XTGH89rzHG(uZAo zwscKTN_@C;o;q2`yDFm4pZ)oilJ&kpn2GbY5@+|y5;~Ph-;pkT*_91KR}F$dWiqD( z9bX2k%UMayDc<$TN}e3TTc?ZMQ|P5aCflA%4iyHXe|quk$#m|j=v4g^#$zAN$J%dQ zy+l0WMCj#Ww<)Lx0qis(jMKgVkc#6yEB~oA;9mKQgAK~k;3R}20?u=4Mw>(Jc~DS& zH{vTxs!+XwJJZFDQ1!t8)cEgdebBL0N}mGlRWd)u!O@}O`)P}nz0%^Lm?@q+k%v+> zro9te%)tsxXQ#gg7n@_e`gnpKuj0!iv*K$HTJ20gdex1-v4YoVPbt;iQ<kSxgi7q_PBmKhC~=n{$BypP zVJlnXroAod5H3M=R`5h@`I#Rn2)F2_loXVuG{y^*IxV5BWIUpRlenP zM@}NG1%sXLxCW4p2CKsY(G|I{F-kzr@ET5Q^A9Ig{{B$rNBVaUsTDiJ>4!B1@irG> zx+s7TX`(+BRr;A19}h$2tWS!9jMj7g$&bhhT6L`0?I2~z2>eqq?dRn7f1CM4X^m((tW5~EL1sL z2yF^|kfNf<_6Q$oK8Fk?8{fFW`JHP|9R48m6#RGVdHE|(IS_3>9c1t%(;*J0nnGVC z((uw9e-M;wmaq1ge@2y${SANV&)Wb_YU;Pf*LKQ zpoSPXX^~!``dY81FA~josax*gd&rOPjg5|8^sr_OLs?HWHbeve6u7XzhjXLiuQyE7 zn)rw5AL$Qq^-=du)nqI76$oxh|H3ChHDlF?%>n;uVA5RsUjBNcN&xgtfW~?i9?dQm@4B_jX#oBZ+$1_lB;sin3V16FV__MGQnk$)F7ucMHibw&GIH))XbUN z___58e1BRWHiV-qa%%RJB3?_4{`df3q5{@N7!qV;~?s~hl2iw*TDk~@^#R`@nGuneX>YgD2M|4G+300qjTE3&=ZT}q$K zb;(=!WMV0VvR(A6+>>?JcP;k+R-vfJ+H* zu!$$6;cxYetam9Z5|^%GH0j~+jX4RZAcPuH_cF7ee+t*@2mxKjEQCcYm}`XDrGaGjXe}K@kCAd7^QAG1I^A=i@Y&4 zc|&SJtz%p~?W<95(9!(aRb{d%%#{MJ!!kRH%pS1urhm&h|I!N9?Aw+7< zF>0=6%^1*8TI*_K7O1usfJ6EP7RuoxeB_TJ`Pm-%WkjOnX5h&bJmPp%OvnQh#uoRB zeqEIKURR5GE~wU3`|CxA&{LrB5%EKLLNBqF<|L(_a3}SQf=FcClzP%z@6yFpy;&-o zE1IvKGZQa5bgBNKd=#~P85#+VQu8d8MkvKwaY{c?&`~&PRTrL|wxa6#^ibtUPeV(- zL7!3n*FDyhyb@jCg7H4O{9ya47N2aNgXBvyBR9f(aSE0K(kWoClh>I~;wD)1gHO;O z(((81rPTJ9*dJbmQeY>W2EHa82j@h8tp&SkAz;JYl*y2|q-b<%^7v!G%dE}NhGUY- z`1L2PCVX(`bpSqazC^;oX4e7qV_&v0_58S;{aSJgpgCnK`OL?^oADYG*3(MUD%G&k z6nfur2&hADSQVbyM^=R?@AsGY#t_yTHO9TB(7T;m)-hB!Z=3|YFx}~dK0nfdgjLFn z`Dh?NC{6N%f4MgP3O9QO@dH-PafcLt>KL=^%C%B?Q>dT%Tb5?0w08t945>LGBjtTx zyw_N3P6)fEvgs2SyH(8-m`*{_HpA1BuCyh4c!nBxxM7i?f6&pd)b$G*n&NQz0gHDu z82)=_;gQl0=7^4H|2;_l6JkKA6??g)_L|b@S@c3!bZ2BjbS&(iJGV`I>@+T;@;1%7 zyOZQ6kN(NSM6}9*;>^0_6^#=U7^%tiAJ@1QVAXYyQ%vR@alw$ZxRCLS2^JlK^U*=9 zg@a|k7=zCc;By8A3*z1P8%_6xQzo|FRQv0BY|$!jKp}OIQxN7Jl`b@Avz1ZLe)|jtan-NkeTXF zae1|)pPmsu{6x(y%?qYl3N755hW!IC(;r;d?SmZ-BEmpHrEA|O^{}TJ}QcA%X zkx^?QjiJm?3)qbu)p9KOg=-z1%C3xR{$wbTgMBgF?NO6u@H2`Rs_~dpv{;x63Bo10 z=m?yl?h15{wuK{;s0#s6sc|>*(O!f-ZTy+zeTT#z; zuxT>mkhw?6H+Uz>6%({=+R(f6LCidn)1Gq!rG{z}qGrJwGc%GnawLVnu9VO^ z84};k7xs5>K3~nAH~~yLpa0Fzy@Su^KSjL8`TYBzSLgF(p(OJT#KsGUaTs5wAojoC z_c)BX`OUyknq|e7^DoRHhsnTG_kC*Mu})I||AwjlsokPZ-kUbFA9>8UJKy>H|6U4r zb{LXl~T)MSMx2!*GztOFc+MA5x3X-h3}y@v;~ z(`hV4CW-q&s5AS4c%1wxMS~E>8!jG+QQ97Asr)JW-D!NczyIA>zT4UV?i{}R71!gT z%CIgwk?#`zcT7fLzsGktuYe==bJ(-(v8Sv2DcnzU(w$6v5FyfK_)7bA?0*ns1rNPL zyqdw)>wF=}|6oZTVAK0L_ch9f&Vh_c9D;DpQeKT9VYHFn(^e9h z#Ag6if0XP`O4`~~~cD2=G!QoyLFYA1@9?cfxGQM;J`x#R#xXmwk= z{YMlw>IvE}r8Oqi{L8wh?ktRw{b#TwkzncnxJFp#vX)*I zeX6P|;@X%}(NL=n4^n>X+DUnw3$6MdgM^@v5kUg=ZheO1LF6)dbAsG+aIJcEo_du_ z(N?HeXR24SuQ^7&8l_%|0+gv&C#deCvZz3H*(L2w7g9M$7D5$=LGc!m$#NUjBKn|Y zj9pZ~U;X&Ch`;hZ1?|wju)S1rr-R)A3kapMOl#uok7yNW+@@84_GSEfpF|+bb`3!`{(9s(wNs>b^u4R)MJRT!4WL zwY1I_KNIZNkh*bcR8}`mG_Tlx;ExhaImD?Vb`nHY5#5g9MhaK)BUI8D-)b$`YRzf7 zx)%6P#6;1)2KY6*Ogd1{AXGwCphcy<%VvAiu2_G!s_-IC-f%a7GG`U_ zu&D@Wrc}}vQ8lX9Sg|Vs4trZnjlO>vCKk3go+Gk$#!ucO_MfqRkj=Lr;VrmS`3=b; zI~bfsoo3wXf6v~+c+(*+nLvHjIhetYEiNM$87E6&I)^+ex5MN^vQ&n#_^jpp!xIv) zk7FMU*q1{fjF8s>`*=nWDL#&g>?4(_z+0gK!KHTn`9O*v39cfe%hLdJB>86u30iLQ#Y~Nzdax2EbcL8RqxBmz4=rVp1f1@jN z;a2qQy|#C2+hFg8$wY@UV0Jb8{>O8Wa0nLfpJKRFBJ&w|$yjpcu~)Cf>P^zG=ew`P z@|`WOBM}8DmhVLM>hd7Vx8+<~K1Cq*X-ST?P%>5Zim$+gnO&5WUH21?UWiG@DVv^a zEBb_{`HXsEH>hue_)y-5N;Xj86R%Tc(T(dRXOwdHihXJz=Mzu!vpmc8NZ0Z?v*-UJ zA07^~zeZ5=?~~7v?^5OS%iI9@e1(?*@>#84C&_2Ay!OfGG4(1?K4(nmo_s#~Fn3}9^Qt%f7DemC~d=_b4wao<(L*hxb0m+FtQX}z#7HH}N? zGQhZ!ie%$zr4nF$LhItP4cYLf!KK03Ma8t&LXEzmu=QrqH~9+Cir#|O2a=coO-))) zr20pl1wwKo*T4Y)a^Ran%^zkn7wR6PDO92q32eAqh)JGQ5)p{cACoun4`r8+%^iTEZ-Ev zi|26Kd#hx-RdRjTX+cZ2A*R(na(w7uAiB^0GZaBx@c)+|lKH=wf?Ve#Ew$OrF3S=dX-r_*_nricwHy zy<PVOrX)J)zLv=e^+O)Ae0L9 zZvwq)0yR!fA$&1`9yNi=C=HllgYe}9stN)!2!EMCe+~j_^IErxKt}}ut@eQ4B+$-5 zK%qvLneP&4)2#*zCQeg?bBcg*gB)K=pynVTdT%w*#{_yf2#5--fz}h~??FIZP-~!# z1R5U%q{lMSw244R1_9~mB7wdm&`v=>oC@jcwh|~&Yp`JS&58xGCQ>Z;kw7bhfaFA) z0{WRi4+R0qY+3=e6X?1iAn_b1po{?kIx`4}Gi^i$J}DfDDfBM4*kg z1hBx+f?Wu-EC>iBIW+A?p!4B72TpeZI$i{|(&4^v+Poe>1o;sNbPphE!!v)Ui8 z?Y};l6DnD=SlLXj4)|Y1d~|pTn_CednInmc@g`3Wj?Lkex;b<(@E{Az0Qr-9nEWXy z!5@?;MD~><`9{)^D#4WlsZKr!D3eUF3^4{Hx34zKOx4Z3;*i2(aOIX?mk&p%CiYCU>v95Dhtg+fm=_N6jlV4UlegtK}c&vJKo<>vd#rTNOW-Y)Z5 zkN(0$8OZnF|0cc~Y<2Qvq`OMggQk5u>=t_EAdzRuI{1`s9IE}mN?x_$2Sy*NQpM~q zq(pX>bl&0052NZ0-AD}b$&>U9ujn9Lxu239#@NbUCVQ)GHC*TzxKfglm$)=->&eEwk2F~_f0T(PD({%gt ztOXI;^~4FJ&i4x1WzTy4^VgMZx9Q1U*I(k$G0L`P_{i4wX+>f z&p4>AgfA3+ai=!Xx%15!$r z%Ac|!Y6-5M!o?ThE%MJlsPfNGXa0FfqCXoHszrAQ+TJXS?m2kpTXat+Vo87>b{F01 z7Z=@aw_v6xi|&c?i;M1o_+_uT(VdFQ0y~boN0^kJ|JiTckrSFDQ@!OnDSA(9W`E53 zo5MG!hs=CdRHcFSvIq%33euoZWZN6BL@Xa|uA)lPmDp4U- zaUOA?^Qm2YNnKA9xDC{L$R0G2Wp#|~$zWu2eaKEXk@e^p*|WjO&ha4&o5(^PBl}M< zvOYd!3$ZqEc^2*%*}`CCjej?JcA1H6r;d>|1S7k~hpexO%<34~OTowv@F80b`{y<@ zyJKW4f{}fAgW1feiL6)0$eM$Z-3nwd4P2lZ-C-$GL(h@Lj?o?VKuzclp{lf?^lnx6 zJHD*&YphCL!f>dM)(@~GsLdx{;+d7^^$C{t`ovqow6<%BYVLoJK9a8pTFtQVU$l72dy=H>59Z>dpFtVSnGn>i8Sst>+4v}pPM)s5s*;#&M z9X2x&jO=_LvYtL@k5rWiC(}X5#i?CQ$v%6iitJ>S+SC)ujOSAg| zIwS~aHxKAQ0%e&%^Eqx~L!lm-PF*jt!`u7s>8zLHYojg4`BqHd zcv3=s&wzDP8K_8EH|_VHZ{76Nj84`~r*yn-di{Xky>8M9rT)-g3LOpIf&Q;oP$%nK z1;u4-`ionxhJl)d*$pj20|=fyK|eghhl};YY(89}AMWJCMEx*>50~nP>+m4XCLcXM zfAd6Gp$`4c7t=&}F_8aX{LSYbo$PP+_MdA9v*}L%hIK2#Z!zM+KxNGB*Efo5XLr~U z@ygWZJ?QrZ8^HlIpr$`&FqvjlAYQU$f6V1lf$NXqa@r{(%Pe{hNDwbWL%;z=HSbQ( z$+gPvwLAP;%j4S*T3uHkf^s8=3r5Guhys>d>mvI*zLs_3`|2Hj(6mXdGgMp-ltpsF zO*jUjRJ;gX+bLgrs1XivU|3*#?)%c`U+PYK*4|;Z=a}7$_COwJ5B9}^+k+2XwCC2L z{`UNi{f5&KTL@2CKs@(J=r~>MH^hc?yx)+l0+*^AD?R^ia{Td(x3q_x@w@P(ZYq{u zXDu8nGLQiZauL5|-5~eQN;ej@hpJ#d(cs>D`#p=2!B6*D?I*7F`vXTJ&fD+@z76*P z0|b-&foDYaD_N(;OcfVMZH406*B%X4#Jq9O@ejITfpCPqw~v@T_y>23uRu6YbbCK* z`l(RE)~A(zVo;5*Xq{EB<|q1m{V>`qS0N+8=Z$*7{6UPEpZLxjv0ouHwh(QV%-JAf zBG_!SGcirtX-!{*u4no_$3U=DacCAz>~l#a9) z-WT%ZOPn$me`tJ#;EF7a{@icMb83d6CLHk4p_Dt@_)ooblERP`I|6)x>lER6;8gGM zkJ_tP^;VH7*+g%EDSvz7EOuz|uleV9KK^y!Rekkyhksqo?~2}Z<_R*td%Q~XkB661 z=XmjDii7%H@$G;!4tpmoydpUp%uz58wA@Wi3B7sxHIqdwIAM5)qc!DPllA)ab}d^ z2PU$G%hqRfJQ*E;I{ov-+QA&you+m)-(T`scl9Cnbsxj;y;1AKD(O$jbN){B;pii~ zs}FTJwcNQrP!p!S<|8bm2%DU|1~?;9B3hv3!2>t!yN@3Mv2ec6@m>HD5_2c=LuU_? z)Au-GE_6knhJ>cf6Gh?PKt}KIr^dWKx+>jNmgG(_nfD7IL{rW0yC<(+pLSPX6JPbQ zC2_<5+J9%1bXQ)V;2?VE^78ucvR8cMoubGKklOW1YN;zX_`B>z2iJJn6f(o1QS)!Ht@ zXD~X_0nsm+zd|AZ$|e7m2$56~hQWIyTe}ClbFd7O&6U-&_=}q>6YgFywr0Mw8z>9k9BNG7T$wmqTrJ^ixPEarSH3_6dOrk(??U0) zd|7XVZ%zXW*Tc%vo+EiGabT*Dw7GJ(5825kvhEeXH8_`j*-m>MmFDv>_QV+X2-~G4Muhmkk#gI$1G2HeQf^t6E4Ik{Rn~uj?Et{ zzsnGher*0|`F&>|mRH*$s#g4P84^NA=s;Be3a)n3MWR@fM33F=y1l1DqhxXIXjC6- z<}}pQ99|x(Vu(VcD|U{*6CZOoCmuvS_Fcd#bkyb(OH=vsFrtb5Wr`kk%RJ077dmBd zI(&}W=0l}9(ma{>q3Xs?tDZ|VdpT&jSM^gY^VNlpR+v@a4t6UfY&HH%Zh_J2=ZI#O zgQj~`FJPG~oHD*v@8+wztkbF+h-QBWP4}v9WSPwu1hx7;D4fyiw9Z=HL^Mx0Xu4PR zt1L6wDdTH(k+15qPOE;4XbyMKbg$}nSmx)6L9KpNZjN@;tg6$h*AmV14w~*&y^dw7 zoHD*vAMC5TvD2zQBbuQOn(kG-fn_qCGQO&xMG$~OA{w6FnXGN1S$h8O>eriC<`$=n zuj)a*s>?d9dNa|S;GpSVtAAh_%PHfldNI5(UaPA*t@;ORzvy1bWZ4S=($ zeCKe;vsDv;7&fB0eCO;mpzX*)h7JSHNH=ljcsSEL!5JpbqHf|`gzy|qXGSMDdlKjC z=W-;O(} z>%yz8g=?BaX)Woz@3M!QDIp*b(|3-XMNg>N*a$NF{0WVcLH* z;1rkK@e0*_4nGW{e?dcC-g3$}T`CbOs@3Qz)F8aE=hk&yQ=h3RvHSf^vdK)*Pav9(wkE%%~UN-?})uq zSZOVg1<3UJ)oQH6|Fvuf3CqH&rtw1VpWepQSlGjRB$o-L3v%x4Z4e zs#W;Nw`V&oWk}U5V5rTfwxhd+kgZCPQ)gJ(>u!7aXm>-ZX8Vwh@gXbf5Lw?~WMh5E zvV6z}c8IJf7+DV=vco*k0 zY6sJ5D>I&IjL*MZ8{_!$p`Ti@zv6_osPfRkY9VzAqRntYnlEpC(H%Xo{>7$AbGSZK1Otow=?mA$%+DpD z5lB%n^9~Uwt*m_;5GuB82ZAynsLhv6R@m2KL+@F(OZ$4f57}0X0v@vd9U|+%zHS?1 zQude+*??zT})(Y$;jBn{s}Zm&GnG&>L5$Jhbvgz`I6AN5F31+&#dbA z(z$4~%Q?__nGacgMkpcKf7Lc%y$mxa0mPk?H+F98Wg&1DY6zG#rYr;wb15+w0=!8) zX?om6r7|b~{7-?Erp(C~1I}mb6Z4^mn#17lO@H=y3w8)7#Ff)69hl%E2clg(M38^t zXO&4u;sEn5Mobg-vvmAW(NnPgFupXpJzql4f_mt8|G>LB>^yecQs0OB_<<7w`vZKK z!xbUpft-`7>Tijcv2Ou~7M*~{dI;}Py_|=0@&lHg2FA<+8Vm#QLn7Abe*Lf$AMVi) zX?(a-KWw`Yn^riZ7)u z&XOnbk2T`$+NpW*cdCx-UzuGyx~S@y{*h}*!-*Kq92(w35R9{n6@C$=klPLp5>~Tg z`(_*+v#M*+2`cJK8j)#|6si+{=;I;W)l^rW8`TMcjYPAv{=Jz=Fm)Y@-@E`Do7VO( z6D7k}Vf^Jdw$;DIQ}ow#>$Zz!OPSM)LhCk3a#4QxZ*qhPluQC8+`u9=#{y6Y=0^|< z3VtKCqYRkc9T>#7G?n-NO>Le6xCy}O0elEQBhAgz&FwACjf|}t_A+Lup~{HMmIXez z4L>TjJcn&L7i5`_bB!8gCO{I*#p%L5=YzXP;414Dk(-J8O~A#zIki!y@H&+ATKY?e z@k>fOk<#q%P=-)t4}EVK`*XOM$n9weEewulnsO>Nx6}NT&+n?@nYjO$dOs*sk&{I? z;OH)x3{=%C>fR5EebL~!Hg!dr#I>#dKOF}aX;#W>EnKVA8dC#Y+hXa9P#G`u3{?5V zH1EZ`@*-VVs0Irflf+MwFL_0XN@&%57vw(1$-;?cB8I*#k#J9AgxJe=vouavAq zrnA-@89!E}MSm`cyd(y>HoTT64xt!!`8IaX%9a#8xB|VJszbgyhkEs4-bUPWt{B@C znO+fXPm5e@7k>L)JFjhD9&aO~t5AxU)|rehtGoyGpfJ(mWgDU4Z;*NUt4j zoK%xuD;b}$Lu?nY%9GN(7rWzyPTE>?5^~Gm1rsu@X&T$6Za1G1!yAx>&AX7jI2WW{ zgBRpC#<%#J$p2_9SRUOp3hDK7;&0a>?7m{!DUwvsc2bQ3%A35y3uSi?ZxEF`E;AS@~EI#E;3~9zXysbvuT?KV0{M~` zcmPzI0B2jVY6HW`X9M61m~@ARlh3hY+wkmSI0pd#!HmoS7&F?6t-!MbFlICW*5F0- z=L{?MA&N$kxUsqnl~@a6!o>LUn)2ek`LrJz6aD&hJQmcATwS#z&6++1ew3=8dQ2JV zR4{%Vu0VjZ(0v|m#nze6gTG3N<8&*w32(ip&3Gz3(289S7ggy* zD|Qk7mNZUVNy&?n*Efv_wKQd=tLZ?R%s3*Sp{KtANc*jvwsy%H+WNX<-vR#x;9K9+ zFYs*hd8vLz-OQpIl44eMm}Vke-2y{aGa@ADo3hdj0$g}d6pFl?*oHL$?TWQj@e!mf zI{jR(F2i=)St|YEjet3nZ|g8iY)OlLp3`$x6gkS>3PMH&ny!*YrzUU%)Fe)3MVJRU z^m2%|Vx#%#c79TQoc!5@_9fP7d*{MK`hYJY{LOy&Hr>qhR4OX!-SQaNP`(9d6Bilf zqd&v`-Uem>kev}C?Fmo{dLKNNPDJv!1Fh<#Q4a44_r|+pGRX^cOo;55%*FCM56Utm zbBX-kMSeHP?_B&oCi4aPy_5WYQGVyh@1^p)7k*2Mp<^;%k{7*!m;_L;)cESjR4Yvh zFR80j#8F5XUyEo{R{pfPy{Wu-AE@*V#YMCe^MFMjXcG=|9@zg$xO_ohuYLrTV9?zc zTX^^4=Mu^V_6J74!2V#YED{Rp%0oNq%IjA<5@+v=Jq|Wi)I+-xg$6$%zir);2f8HX zkD`ff@X0vxw-($ga&X#Tclxu^g$qGjd|CAKpR0ZviNwMXN9oAA@_xS>Jh1LWm$w_R zekf^_=AAqq96`fk*lAS_J{hJ-85%H&W+;b^AjfEO_6AMVhuCkRN--YwxQd}AV#Rnh zOyUZBf0X@Env(L^9dL{ziLI{+EFA!r|KhC-nRc^pGK9+Q|ER@CEs-=Xi+f zMz5yDs~KCocNLtiGu~x&3+@ypJ|8?Cv>Kx!BaS>aE}hO*eZeRXqnv>pWB2 zxw?0rsqoW{XO3?V8P6Qf=)QH}sUpvr&(IQHKH_|*qP&V{R~cj1fEpV8k0A{h{pzzQ z|aE#uw@>}W9z4BY>&?d~NiqZ=okN+%x)l zTC_#Rm%Tx`Zkc^U% zedQ4|AL)3JUFDJUoa)g)CTzqQx>}8)!6fYOk&vD!L@7PaKq_m0^h5zEB)6ik(~9-s zHn&r=>k4hs6K;IMk;qcOs0qQ{B4|Cz4})@1O$zEJoc(oOIO@ol{FsUAwRq8>jSwVE z%zCpGR_rA3+9Bi5P8Ep~yj8WJ$AuyfCN|*3Vk%YQA{slHpSx;borQ`LQvl+OOuOPm zz{qs)*3Iaw5XHFTl{v1ifUvg^5r^Hcg}FURed26xF(jM+LATSXmm2b z;aDk%FRKgh5?xO{f!AquUHQmg90rKd-iZFF+iO*?!b9R+zEKm86Eq8VA^vledFMDg zLUh5Z?#1`R`JNq1t{lT84+2iSNGbEBD2Nr~r7Q{dY>(SDkPEoIF;V9tAS;n9oCxAd zP1x}unJX0R*NF=NTe3zlZNM$WWF4We}sXF zV?g;5en|}EFHxxj_zOlLlqlpcSgKHB7yjbJAd!tQ0+59aH5?SQUL%xN#x6#8N}Pdz6zVhi zOKM#PG#pNn{5|56hOe6^Gua+lUY-me61;nZwNJXTR6DYlL}AgIGH-#eBt!0w@*E{K zx%!&2w5ZSFgZ=k&xM;28L?H?J(qi^bJ23c#Ax5M3{>t;J$SM4h0fn`l?pG!?S zs;0D(S6c6^uNp>YcsouH<76ue)|Hq1hPkVp?r0Qv!BkmKA2kNnC2W3E`9RMZ9c@gr z&uW7iOONyt*u(|kliaY1%>aT|?MRR8hFNH3OX+u0K8`PsuFvR|Pw#Z)TYT71wWFo- zWh4bqTL-uVEOO-T`{!Hx>+6;s^cyX-75&H zdEbB%zVu=J^(uT-KFhQ=TzEP}=uPq8Ip>oRR~e$G5Oiga*M2*z`fj|fx;`ru=`(vO z+CDUsVJ4A-9m(?k;1ha~uIQy;G88~2dmsGzU3=>)sjq5S6H0_C-@vycfXr^-x0mz; zu%g}qvC5I=X)kG5c@KPSJ@}PRkKxH}%J8(rUr|}SDZwi>oT=pV2LOAhUe4DDGiwKP z>&X!cI#m&VW8ozZ8n<&jHIFQ;%#KQ!1LDWnOt^Ik`!TFQUE!yc8Jd|zLi%F!sk(9M z+YVuUK^TgkF3ph3=sY z)gr>D1flnp?`rt&#I)9XFrSv=WvTZwP%luE+wA|&CEbz!j@tE)4x{gQcWY)XAPsB6 zf=!{F^u-h45A_B9;;DXr@p$o{)(ztQej&PzvEoE^cArnBi+?B>hl+nX@|Y*-rqF!D z@rq@~z;M*g#eJLp`k*_eBir6V+afn%)So3IfRlA@(ClqEA%vq%|4^CUuEU=?q(MYJ zUlP__=5$c!Z+4sZoU*H-njLslDeBOn#sZfV%N&hgZ7Z>*DhI7L3D5+*JHt6|#r`)7 zFTRye_p@NLWNfG0)LEvYRV-hQPpg~xs|>$d1Sd~5h3MIApC%i!E^+CHE4MCH1;pjx z(OyTGaPgrKjD6)m_!h&(Du4TOJh;I(^Lw98c}uGSLDA>2be|FfsHI;D&>jS`O-v3D z6+vSvB+v>IsO(j=$Y0$)1bQ$C$iP%gpleN_(XXUn>QA7tCQwyN3ecehI@|=BMSlBf zDj`rW6R2uX3JZ=R(3giBe44*k3ed3xYBYhWdZhsUfk5{K0U0bffk2Z@pwUOAU>ZrF z(@mg(N2UOcBG3R6XjXO#(CGx~VFESwNC7&NK6-N7SgGAVIN$28j?bDr!_zR78A~T5FZ+Mr=h{ z-3{zEM)Fl#wY3%jEv?VC$|EQypql_{5m8ZmM6i0Vu@c294<*0P=giz!c9X!b{K4Mb zd*;lUGiT16Idjg;@)>>b;wrv43@_wQF&&pp=et}5RA~U{dcOGXGXU{V1#~0dZNWQ7 zo=ZMZohcg}N}g{f&}c7_HV_ieY*D?HK!urr4swBRC(!nxp61$^JSR}iCeRxIsz;_q zU|F1hjzK%>k**S0mf)Wy{1Z7lfn~M)^KkyjD^r&JAOGARe?lJfe~&*Xmw!~hYR{%$ zv3c_*HTdiD&xbK)w>)no5ZD{`=h-x-%10b_0+9)@@FQ=O1~dnIp+m;{0u;af zxf61>zMGL8o~UV)(=bG{EE74S?TY^3h3ZJoX*N{Eh9XUs`zdLo#jSPDBC_zjOh9y4 zX`safI@SwRkew#CPZ1~^K+vMsp{#j2W(5^&#$nkMc#a$?!>PnsfrT_7?5@aMtGzT;S@i@wKl>~HwX!+5pEdlZE`O^!Z#GcPLd5gy-Yxj@Gc+1 zdI{-wc(_3!40hXO0&0XMK7>E_BYaOGEa$jFc@3VV`a(B%nq(+K2E~Kf=!x!UMWRNI;G7%VR__lui95$&4++AQ<@?)c zzZbM;?FCvwYP1jd&~kTFpoH7``T!;1?}E2fsh*QJRjO-OmCVAy=}BT1g$V3+%>g?)M!TnEhe*K z%4}p5WR_E+S7!GEEM~MoPB0guo41gWm#)};m^P~s-rQ2`@E~N&J4}dW!P@+?6YIyj|~S74gm9Id6`Id(1!`ENv`%GUx|fw&4C&@@Gj3q3z|X)0)Be(tUOe( zBM`{#8aaVA@UCo#?!y?{HZO-wkx$u}7AT;JaRU2Lm}e2!x!B7j8e9ZJTkR zh{Tf1XC_rFQAricPG!;coqr$0@6UDqeJsD%b^d)kzt8CW`u=zwLAj*$6RDVgJyD|ZJR)#kdXi6p^O032-lRzhD0-|VYpjiak-wRYS zJdNv1YhIz>d zTKaT!kDO;%()#@;C{|CjUbor=W^yFUaGy z;ij_dmdWD{`AuarUX;fO-rn}IJkH8*ibg^CD*hFX7!2rYK#;>*NJP+e1y!`S^K5UM#|s(G*>bpAGWjDLmyiMW4gZJM!XrJoRddF2m3J z^5R82Whp@^#AEE05x9&S9A*%wS$m>;9I@;#UX*+lF3G#ToC1#5;7B4Ybk9E_A3nBw zzEf^md=_4?;aKm>Ly!yqb^651GH-`U}^1oB~VI)DBa&Ctb05RT# z{|yq5Cv*Ndq3`0*G7(UC)Is`B7_$5zs?WD^r0-^FXD5;P6xhGkCssMUy1!#g;~ zD;ZMB+coIEm3jEfL&%@rsINWJ7)@*&Zou1TTrHC^rMis(MC$6CA1H?QmIl zV z+2HP|9mY93u(v(}Z7l~BmVy9)JAx$`!wcY4_PIZ~8l4#^1y zSRP33LTt(@Mtmka77@zHU4vHzci_{=fKk4l5hTN+6N^VN+O&imsosp;YwiM~?sg;o z392H{s8YmJoCqB4#no+;FO*~a60lU4;5A{!fxjn{zhmUZtm3h_`}64J&gjllKbF6>O`dYI+?8;sg{nCw;mN*My~i{|+q2{Y;7rlZs1)1MH|U znlnb&z-$P2e`d*VLe=d?^-b7vr-(r0M4mQ&_;tJWBwlLB9KXK0~Rn5lA@)N1&KYR{4nh%-56Xo|q^r5sGtfU@bljYtw@F{B#ihcx+u$b`b-64use?Tc?CEnV&vGHow z>yLNXD1~iJqAPJ+8k%Fi3)iL1yu)-GSu2_L)}Pp2)o8&B51e~{BNNASp$_`|4$IgatIcni){ zH{lnf^^`y)J9cex$!r!>L(rJ}GQJ5)dmGrOehRM|cZASu1+!6WtR)wZ^g;&~a5ESx zmHWPVQP7?Y7dP%0h`;jjN4qfQ+#1=SjbES#9!#KYAiC$DJ|RDt*wwlQZ`zBXB_NkCL$Q~a)C>= zzK6j*YfxDNx|1m%w@+7u0T%Zu+>X8-Q7r5>kH;UvZj0d+l(uo?*I4eTAHlfJ>REVS zy3Lpy!LMg$-Kf3>FQ_G<`%8e>S6{iyh!6x->aqr~2GEFb2igj_6N}1^|E4#ZA#{Xv zfb~6MDqKQdChI|s5oag`_xSr@kH5EvlE~$BUxQtuCjayi*!4V6*i1odgeh!RiI2!K zmqst|(5sj^6`@`^t`Y%LaF-(qmA%M%}zu&<@eE#VXlGc?v+Fj^b;f z%a$plJSCk4F%$9HmQdog9U&_sx4ufpArb=TE^>6J>YZU@twI68Y{U z#)o3;^o5*g8g~?UFvuW_0t3NGEROZzO2ek=Oypm3UK{|Fq{<#$%*GKa)g)KVBUt6{ z8U0 z-a$SO5?E@=^f+(FgmEN{#Ur%2Yc72qg9OUySuhUsNAPlYEx8v%ztm1{ zk0NDcZZ)2h>tb8CMt8Ru)wH-8cZOo0(?QIPGP3EX?omn378cSp}A_4cg$a=x$CnwLW;R%MId3?9znapBXp$+sT7f%!0xX& zWLI1ZBofgk6}MJ9_7BfJB>eDHUqa{sLa|k&NV9Rh2NU2(b zX3qXuX?xWHKym|#I0HzmA2BGV*AW53tucMG?|tS!Lx3m;c{sNk!d|TB*!XH0PV82! z`)mu;V&cN|I*RW?jSpozqU4IgT!!PH1s`ucycNL4(l*7ntj5*?OfCv5D8+p`5zln< zGXLmTEHjR|K>tDYV?K^Q7R2ym9nH#-_lN!-rThD#6%;bWO@UDqx|Sok$b$L(Pj(Ch zUMvX|I9(U`TotIkAK#57H-&4@Ss&e*Wz3Dq-)CgOv>gZqr*6*VKphy{agGts2BVF6 zDUco8fxzw$sS&ic5p(}nKha(*xzsN{C-31lN^M> z_E@W=%qoUf;e9!2Ol8U~`)L{uvKGD~j|Q;Fw$)r^M@UCOB5)7(EsBfOggOxZE8s_yrs*aHWspjfE|D*_N9ZrOaa&%O@iiLe z#$(x{!44o@_*JV3IPQ*)QM8$FEQigYoE>L`ywn4TC$>88uH6kNhT(<(b$V(cghyt= z$Cv9kBZenQKq}%9&6{L~RtEqCXGfqYDa7#&k=tn*+@~VS5ZI>zk|-51b5tTE!Abz8 za!phQ{SiuqVP=Dl4OvWe((zCjXWsavigy^F#Fk(^hVU+qLHXNSi7y(lQ!RN>TOMjw z)Sz~{rPLpo4s>-v>k|qU?~llozul3a@7!hcQ*MU<{~$+VnxZmU?hAj}1uB2L5aMkX zl<2s>J-)urgPUqT6qDJ;pe44sp^i#eKOW})V0sw|ja zBk^$*+;?X%U@hdnct>7jdCp-6OPTdy-t#t8*GaBkhk~m<8h@%jvMYn8M3ma+9Xsw* z+)y&2EjhUqNwy1Cy_k9dew?9bSGlD10Jq*?# zEfZkmljvx&r7Y4HIP^8UL#!7!ssO)E`$NTHN`FL;xBFw2v@B5>j?^gba(^Nf_}*?X zhc;NO0{0S?N`g~mIBZ0*AUj~4M;>OlPdifsADk@>>=k>3w;GGSQsTg97Pj*sv{PFG z#*+SQCMTZt_*xo{Oo32n@hK4aLi003;oE%qo1V1XL5HDGJ0+`GwXx7{6S1OA!_@1_ zkaZ(kpyCgm0e&y=YC15n#Tf@n0VxNhu0;(bS0qta#xbr%<#<)wXbOvoYL)K(sc>ZX#T>M>7 z4~0GfuF-+79aY3X?~pz=R3B>uo_od_6Rz(|uXvuyRX9;K40=`AZ|={;0kNxtkx`JM zB92#Lvo^g68CMwVAT1cmTx*G*9*R%i8f|+L9=_4+Irgz|DYkk)mkFuByYkYblgWp~ z0-h_AAwO9AICuZ5>y`LWMGF4z4><80W%O5P_ zk8QPh0!F|DA4RGyesUn(hqOMaiE$a&&w6OR%RhKJ6Vmo>xdFL4L|mA5^JLt5?telR zqSExLGi?%n42ydZ-rElDmhzqIDbKkdn+Dr@YIOt$tu{}G{~|JV_y$RJ(9{GQVyl9q z8mqofelLO)`#dYTbL5-1jB&>Ds&B|knW4p+u0l`Q@-^I^4(|9Dri05VB%J7>&y;)} zY0KB^Z{Yi>_%3xPcfQp!cy)Y3Ri&>puyC;_4mC?T0#e~Qk>rHyJ4{l;UzRj(_X75FAlfjQIg-Dg> zG!B`d%xPb{TDbBt8uChS;XICoZ5U6QNwJ2g9xycr5(sh=<^%(Gf_-$vorA!8P&Eugc2V8k@uV!XMKe<>!+R(D0X`hwSy>*Kfmq>z7`va=Px#vA|-}~!!y^( z*-zQBvh}Gs5a|fC&64%EktIg_K5Bu{oYjMRYs09H;~i|=fkCLTrbPGWp55e zB8fe~F~c!agAU*C@Qa}W@42XdpVsCe=Zxmj+9ZAJ&)^3YmerQ0rb&pq*k+yCWfUX` zH@o(>qxJZTtkat?xc8*G0(|7wL9Q`}N)RJNaxX4_4fz!dHTz_}&V(B81V!a#PlK9r zkz$y-B=nRHgoe~L@minj7DLqmGISnn@rj4GM9GY=~{aHK+NpRk`NP|8YeZB1@OC zG4E+m$05O`E9YBUIl4>tK|~JrkR9e)XgRw{==QhoE4jpj{R$leVW5{sCG6KZ-*?$vC8B4@T=%lkXZpnt$5CxSt zD2Q8b#gYnH-(kV7{*VTw%0t1h^$A|;Dz&Cin#~#BVt?s|FGKWYz?$xImjhRy-$zG& z8Fks0xR|5!Axhmzq3185_k*_rdKP{GbtRvkUnIZ{Vs761g)8Gw&mU8&A?w`sK(RG4 zChEDO(yJ6Y1upZH0qm1dhqKRT|D2CnVQ$@T^H?|&YrW02ylk!6nK62iJGD`6C%A(P z+~X7)Z@6<1I)pCy#!vEsYjJ#GA^xUItMQY9;95M>snz&NVQ{U|hdgO_?qEy?t~jy_ zuv|(U0z!#Y^;*oFOo_DDv0f6jqA-@6#Apkh8(P!9+)9Se0t9}F0AqtLHUjt#P0 zE`wt|$fqnL{usCozExi-!*g@;>)LV3j*z;egDT@|Y*vc6MvgR=^oeabH@d5wtv){( z+wwz?Rf+S1s-=#fpF>c@EL4^#KO|_iL$00iswktRdAfA2=@7_{Y{pmeKZSy>^zH@! z-$XYF|F?kuAVGJ5IZArr?`XFx3kkKF!R1vDDE{B8Z(Dv7`1&Gh(g#;S`mAQ?$i-J`hFfApAxcUc6vp}!6>8YY;fT3j<)(Rg|=Q9cUsCKGv%l}s!+%%iqEFRH*2!DL&!AtBxq zAvAKhu_Q0{$+^*;41!%sd$jhOTO6&;a@TTN zLAjl}T%!n)cYPIWt?huZVED3;D=>B;D0%6@(hAac8ICvcNBT!L`UIkU3m z;URy2kgt52upaxm#3~iK*Q&aLs`_oJe81hV`bp?+p0DWM0Vs8Fq*^yCha2;tt)H&k zrd{G{+d@zIYLf3T@prbUAKb&9_|XG0@eljN)5PJZ9fR7|>au@j&-mPA9tH2ifaDJ9 z`0}a)jU}h!K$jnStWTV-=XXHJ$;Jmq6Pz+V(^Ufk1P={b>oKGF)qBbRqTVmd^QlDo zD6C()_N=y=Y?1OViba<69Aj%<`WlC!w6bUW`FsxyfAlI3vX7dh65a|h#W|q$ME8K! z$!fg$_l*i(q;s^NH=xhSx9@O1YlGeZbIxa7^r+~N79mU-c4Vod`krEy^SEySDtcLak57tIY-fwBhj)y`O`b zV<=TE?V#vr8dex7D}X3Enij7eB4bp~#XA+^c=|GEfk6G~_|M(JRCJvxrw3pI87Lta zu`encKUech;-YRyIS-^LhI!Ua*j(F$={OhXtYPuQ16oO_B4eza2~L4lr8p*L%tUHpcZ1_U$@Z@1*N3TS8==s9Zz`qfu)7h{2T;r4FM%3h@B2yHCRt zm&cQw*QhPXlfmGY$`QG)A+$$2qcL%$x@DT~!oS*^0f_n7AwU0H= z8y^09$F8jePg3^SXz%K$GbLCYwv`~)806ovA2>WG*H)9~Xym1+G}&fr!!{W}wReVs zJ8Y9j8oi{CHc4Uafg>MXXfrO>Ffvhog0`~dWMRjoqm^A+Z2ln&<3~a@IDXU&%4lwA zbGvKjZMO9@2;#|Dtm8MR!^8Dnn(JBJaD6M<<#0XuwJQgnbp}n+j_eOv=b>U}eP;Kz zQY&unDK^K+|fyxBlmjok6C7bjbrMwDDZ8e>lp6M(|I+I_h*SNKiS5;;2{&qiVm+QtGy6 zxTw+k$>A%ywf6k1V)u#b;{o)E-*OoD%*bcO^3EV zq&gP=&n9PVLdkBxwvMq<875Oc#6USa$5{BL5u-oASbAX?h@mBaYF<~F!7WCQeO{jH z5c40ga}9E+Y~Zp_sam zz_X6>_~PgPPV8if3*@pi5LqwH@Y2k>%}d_#(agO<()^I3`Hz`sMi+N<*l@h}c4$tc zm?ffR!2+2W9sStpeyWQ5fCEKxZ)iT=h0~*@8F1G_*zEk9_@y8-nTma8NaL*QUFm>4 zYTA{gK?#WV&M<{fI;R7()$mr#=B{X>BFnnhMV)MeYxFl7JEIMED~9~9J3!C>&`WlJ zUYY3EU$KVU#4hVa5+K;HyCh(H*59$g`<*-E>}`9mC4Q~UAX?tmQY4~fp#tmAoIz8y zmF?hdbeCbw`6DW~4ZbW^dVW7yMeaM zRNzx<)~u?z%H|iIV8E@$zEPIfcCm%Wo)XmWWOo|)735ICTasi?rW%86JdKs6Iy>IZj7#fM7w^WF2<++=u*S0jXS`_&TpHQSG6!dH@b+X; zJ%3_cWf^nCf*tWf3x>H4D8>y1ihC-{;UwK0pZ}A!{Vyxzkvn^7lTWxKD`Xx`t!d-1 zQ}c-^8py5+AHk%aNuIC1)Rt%2*VgS*z0R3}^7qktx7XVvZ|is&wV#gFsI!G;JF7g( zef2z9;LcW?_F$AFK3E9-1mZ&t&RARsQT1)=v$E`DfeT-8C*6UB3kg_ck5RFW1ul^T zuMv!?$2t;7^?qRx(fm$0pX}R9PUxJgEwJK+37LG0)17xDt zocSDFvmSlQ9zR}rb1zV>_n&qiAgPAY^JNlTfc!%2$hGy~roOS~Uuj zT!TM-T-nT`&V*rcjE_+Vxwg83ynRP3z;-8oDQ`UdQdgpR z7F%87m7h*zPxwOFI!23w9p@l!5bFxQRRaklPTPHylUx6mSx%-(J|4TD$L#(qFn)o8i>r+0MpIZSjm z;=e~BrKvFZWo0qqHG8IPk0k9NfqUl=j*gI6s}34xm=2a5slax5kC?s#+?cLy<2r

)7Je=oo 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%0D)}n2tb_PL3a+GBV@mR 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

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

4gf}W#I^j86mb=EXHpr#=45${ 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

Er>M%t^S|MMm8)nF}j1&CU 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μ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

doO{I3sa1o!!7)sGSAkW0vCeY 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 J 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

GzAw%M`-7+xs^BO24ZPsE}X%gE3FTR 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

h0 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%0A^HEK?aSk%ERz0bk_iM1On@L)fVc() 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%0A&~ei-5NXI79({B;Yv$rYpd&1Uy0j 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

Xe+v@m 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

VY#-VGkTkUF3l?Q{z2wAT>h6 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

oi_>ia?aFO%z=8t)8;_E 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%0APY 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 WHtEVg*$X@q4yc!%nic5Sv;GB*M#A_2 diff --git a/AS/Win32/cmdarg.msg b/AS/Win32/cmdarg.msg index 0bb799fd1e9dd38d1616b93c09828343e370d612..e71d1a40414668c621285f8c472e7a844e1cc58c 100644 GIT binary patch delta 15 XcmdnYw3%sw3d_=^n-ex_a5Dk`E~5oy delta 15 WcmdnYw3%sw3d^*WlI9yVxETQ{-UOEb diff --git a/AS/Win32/ioerrs.msg b/AS/Win32/ioerrs.msg index 237e26bf4466dd7bc853787e2e0e9e924865510b..34638ee12fe005cda2207946bf63dca0697d96c6 100644 GIT binary patch delta 268 zcmbO)I$v~x3d{1Pn-ex_9AssDGWiv&KI8q#Qf$^hb{LyG+B)o_ZeIgOHwn7D~n4~a}~<+b8;9$ z^V0uJcH&3}I${-v9+14r;mG)HvNUG`P)`k~lJK8ApxGsZpPZeZTGUdakXn?MUzCzsl#`j9!Qc)Qn(V-?DchKoTBJ~x zT2!2zk(rv3nwP2ok}64ssAyw10vfoJT^2}QXAcp7$l#J#lA2juSzMBut5BAolfw|2 zm) Date: Mon, 31 May 2021 23:53:14 +0300 Subject: [PATCH 18/72] identified some Tails AI-related addresses --- s3.asm | 30 +++++++++++++++--------------- sonic3k.asm | 30 +++++++++++++++--------------- sonic3k.constants.asm | 4 ++-- 3 files changed, 32 insertions(+), 32 deletions(-) diff --git a/s3.asm b/s3.asm index c2f95287..24068ad2 100644 --- a/s3.asm +++ b/s3.asm @@ -23640,12 +23640,12 @@ loc_14ADE: bset #0,$2A(a0) loc_14AF2: - tst.b (_unkF70F).w + tst.b (Tails_CPU_auto_jump_flag).w beq.s loc_14B0A ori.w #$7000,d1 btst #1,$2A(a0) bne.s loc_14B46 - move.b #0,(_unkF70F).w + move.b #0,(Tails_CPU_auto_jump_flag).w loc_14B0A: move.w (Level_frame_counter).w,d0 @@ -23669,7 +23669,7 @@ loc_14B2A: cmpi.b #8,$20(a0) beq.s loc_14B46 ori.w #$7070,d1 - move.b #1,(_unkF70F).w + move.b #1,(Tails_CPU_auto_jump_flag).w loc_14B46: move.w d1,(Ctrl_2_logical).w @@ -23912,10 +23912,10 @@ loc_14DEA: clr.b (_unkFAAC).w btst #1,(Ctrl_1_held).w beq.s loc_14E1E - addq.b #1,(_unkF70E).w - cmpi.b #-$40,(_unkF70E).w + addq.b #1,(Tails_CPU_auto_fly_timer).w + cmpi.b #-$40,(Tails_CPU_auto_fly_timer).w bcs.s loc_14E58 - move.b #0,(_unkF70E).w + move.b #0,(Tails_CPU_auto_fly_timer).w ori.w #$7070,(Ctrl_2_logical).w bra.s loc_14E58 ; --------------------------------------------------------------------------- @@ -23923,19 +23923,19 @@ loc_14DEA: loc_14E1E: btst #0,(Ctrl_1_held).w beq.s loc_14E40 - addq.b #1,(_unkF70E).w - cmpi.b #$20,(_unkF70E).w + addq.b #1,(Tails_CPU_auto_fly_timer).w + cmpi.b #$20,(Tails_CPU_auto_fly_timer).w bcs.s loc_14E58 - move.b #0,(_unkF70E).w + move.b #0,(Tails_CPU_auto_fly_timer).w ori.w #$7070,(Ctrl_2_logical).w bra.s loc_14E58 ; --------------------------------------------------------------------------- loc_14E40: - addq.b #1,(_unkF70E).w - cmpi.b #$58,(_unkF70E).w + addq.b #1,(Tails_CPU_auto_fly_timer).w + cmpi.b #$58,(Tails_CPU_auto_fly_timer).w bcs.s loc_14E58 - move.b #0,(_unkF70E).w + move.b #0,(Tails_CPU_auto_fly_timer).w ori.w #$7070,(Ctrl_2_logical).w loc_14E58: @@ -24033,10 +24033,10 @@ loc_14F68: move.w #0,(Ctrl_2_logical).w cmpi.w #$200,$1A(a0) bge.s loc_14FAE - addq.b #1,(_unkF70E).w - cmpi.b #$58,(_unkF70E).w + addq.b #1,(Tails_CPU_auto_fly_timer).w + cmpi.b #$58,(Tails_CPU_auto_fly_timer).w bcs.s loc_14FB4 - move.b #0,(_unkF70E).w + move.b #0,(Tails_CPU_auto_fly_timer).w loc_14FAE: ori.w #$7070,(Ctrl_2_logical).w diff --git a/sonic3k.asm b/sonic3k.asm index 585dcda8..3441263f 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -26502,12 +26502,12 @@ loc_13E50: bset #0,$2A(a0) loc_13E64: - tst.b (_unkF70F).w + tst.b (Tails_CPU_auto_jump_flag).w beq.s loc_13E7C ori.w #$7000,d1 btst #1,$2A(a0) bne.s loc_13EB8 - move.b #0,(_unkF70F).w + move.b #0,(Tails_CPU_auto_jump_flag).w loc_13E7C: move.w (Level_frame_counter).w,d0 @@ -26531,7 +26531,7 @@ loc_13E9C: cmpi.b #8,$20(a0) beq.s loc_13EB8 ori.w #$7070,d1 - move.b #1,(_unkF70F).w + move.b #1,(Tails_CPU_auto_jump_flag).w loc_13EB8: move.w d1,(Ctrl_2_logical).w @@ -26780,10 +26780,10 @@ loc_14164: clr.b (_unkFAAC).w btst #1,(Ctrl_1).w beq.s loc_14198 - addq.b #1,(_unkF70E).w - cmpi.b #-$40,(_unkF70E).w + addq.b #1,(Tails_CPU_auto_fly_timer).w + cmpi.b #-$40,(Tails_CPU_auto_fly_timer).w blo.s loc_141D2 - move.b #0,(_unkF70E).w + move.b #0,(Tails_CPU_auto_fly_timer).w ori.w #$7070,(Ctrl_2_logical).w bra.s loc_141D2 ; --------------------------------------------------------------------------- @@ -26791,19 +26791,19 @@ loc_14164: loc_14198: btst #0,(Ctrl_1).w beq.s loc_141BA - addq.b #1,(_unkF70E).w - cmpi.b #$20,(_unkF70E).w + addq.b #1,(Tails_CPU_auto_fly_timer).w + cmpi.b #$20,(Tails_CPU_auto_fly_timer).w blo.s loc_141D2 - move.b #0,(_unkF70E).w + move.b #0,(Tails_CPU_auto_fly_timer).w ori.w #$7070,(Ctrl_2_logical).w bra.s loc_141D2 ; --------------------------------------------------------------------------- loc_141BA: - addq.b #1,(_unkF70E).w - cmpi.b #$58,(_unkF70E).w + addq.b #1,(Tails_CPU_auto_fly_timer).w + cmpi.b #$58,(Tails_CPU_auto_fly_timer).w blo.s loc_141D2 - move.b #0,(_unkF70E).w + move.b #0,(Tails_CPU_auto_fly_timer).w ori.w #$7070,(Ctrl_2_logical).w loc_141D2: @@ -26901,10 +26901,10 @@ loc_142E2: move.w #0,(Ctrl_2_logical).w cmpi.w #$200,$1A(a0) bge.s loc_14328 - addq.b #1,(_unkF70E).w - cmpi.b #$58,(_unkF70E).w + addq.b #1,(Tails_CPU_auto_fly_timer).w + cmpi.b #$58,(Tails_CPU_auto_fly_timer).w blo.s loc_1432E - move.b #0,(_unkF70E).w + move.b #0,(Tails_CPU_auto_fly_timer).w loc_14328: ori.w #$7070,(Ctrl_2_logical).w diff --git a/sonic3k.constants.asm b/sonic3k.constants.asm index 4e5ce3a0..220dc7de 100644 --- a/sonic3k.constants.asm +++ b/sonic3k.constants.asm @@ -572,8 +572,8 @@ Tails_CPU_flight_timer ds.w 1 ; counts up while Tails is respawning, when it Tails_CPU_routine ds.w 1 ; Tails' current AI routine in a Sonic and Tails game Tails_CPU_target_X ds.w 1 ; Tails' target x-position Tails_CPU_target_Y ds.w 1 ; Tails' target y-position -_unkF70E ds.b 1 -_unkF70F ds.b 1 +Tails_CPU_auto_fly_timer ds.b 1 ; counts up until AI Tails automatically flies up to maintain altitude, while grabbing Sonic in Marble Garden Act 2's boss +Tails_CPU_auto_jump_flag ds.b 1 ; set to #1 when AI Tails needs to jump of his own accord, regardless of whether Sonic jumped or not Rings_manager_routine ds.b 1 Level_started_flag ds.b 1 _unkF712 ds.b $1C ; ??? ; unknown object respawn table From 55b5c755a8ab989a66348f9d807bede619b75774 Mon Sep 17 00:00:00 2001 From: Vinny Date: Tue, 1 Jun 2021 20:13:13 +0300 Subject: [PATCH 19/72] identified addresses used for Mecha Sonic's Metropolis Zone boss in Sky Sanctuary --- sonic3k.asm | 130 +++++++++++++++++++++--------------------- sonic3k.constants.asm | 10 ++-- 2 files changed, 70 insertions(+), 70 deletions(-) diff --git a/sonic3k.asm b/sonic3k.asm index 3441263f..c3c3ea0a 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -164282,10 +164282,10 @@ loc_7A72C: move.b #$11,$28(a0) move.b #8,$29(a0) move.b #7,$3C(a0) - move.w $10(a0),(_unkFAF0).w - move.w $14(a0),(_unkFAF4).w - move.w #0,(_unkFAF8).w - move.w #$100,(_unkFAFA).w + move.w $10(a0),(SSZ_MTZ_boss_X_pos).w + move.w $14(a0),(SSZ_MTZ_boss_Y_pos).w + move.w #0,(SSZ_MTZ_boss_X_vel).w + move.w #$100,(SSZ_MTZ_boss_Y_vel).w move.b #$20,7(a0) clr.b $2E(a0) clr.b $30(a0) @@ -164328,18 +164328,18 @@ off_7A7F0: dc.w loc_7A800-off_7A7F0 loc_7A800: bsr.w sub_7B12E - move.w (_unkFAF4).w,$14(a0) - cmpi.w #$420,(_unkFAF4).w + move.w (SSZ_MTZ_boss_Y_pos).w,$14(a0) + cmpi.w #$420,(SSZ_MTZ_boss_Y_pos).w blo.s loc_7A84A addq.b #2,$26(a0) - move.w #0,(_unkFAFA).w - move.w #-$100,(_unkFAF8).w + move.w #0,(SSZ_MTZ_boss_Y_vel).w + move.w #-$100,(SSZ_MTZ_boss_X_vel).w bclr #7,$2E(a0) bclr #0,4(a0) move.w (Player_1+x_pos).w,d0 - cmp.w (_unkFAF0).w,d0 + cmp.w (SSZ_MTZ_boss_X_pos).w,d0 blo.s loc_7A84A - move.w #$100,(_unkFAF8).w + move.w #$100,(SSZ_MTZ_boss_X_vel).w bset #7,$2E(a0) bset #0,4(a0) @@ -164355,7 +164355,7 @@ sub_7A85A: move.b $1D(a0),d0 jsr (GetSineCosine).l asr.w #6,d0 - add.w (_unkFAF4).w,d0 + add.w (SSZ_MTZ_boss_Y_pos).w,d0 move.w d0,$14(a0) addq.b #4,$1D(a0) rts @@ -164367,31 +164367,31 @@ loc_7A874: bsr.w sub_7B12E btst #7,$2E(a0) bne.s loc_7A8AE - cmpi.w #$1680,(_unkFAF0).w + cmpi.w #$1680,(SSZ_MTZ_boss_X_pos).w bhs.s loc_7A8DA bchg #7,$2E(a0) - move.w #$100,(_unkFAF8).w + move.w #$100,(SSZ_MTZ_boss_X_vel).w bset #0,4(a0) bset #6,$2E(a0) beq.s loc_7A8DA addq.b #2,$26(a0) - move.w #-$100,(_unkFAFA).w + move.w #-$100,(SSZ_MTZ_boss_Y_vel).w bra.s loc_7A8DA ; --------------------------------------------------------------------------- loc_7A8AE: - cmpi.w #$1780,(_unkFAF0).w + cmpi.w #$1780,(SSZ_MTZ_boss_X_pos).w blo.s loc_7A8DA bchg #7,$2E(a0) - move.w #-$100,(_unkFAF8).w + move.w #-$100,(SSZ_MTZ_boss_X_vel).w bclr #0,4(a0) bset #6,$2E(a0) beq.s loc_7A8DA addq.b #2,$26(a0) - move.w #-$100,(_unkFAFA).w + move.w #-$100,(SSZ_MTZ_boss_Y_vel).w loc_7A8DA: - move.w (_unkFAF0).w,$10(a0) + move.w (SSZ_MTZ_boss_X_pos).w,$10(a0) bsr.w sub_7A85A loc_7A8E4: @@ -164402,27 +164402,27 @@ loc_7A8E4: loc_7A8F4: bsr.w sub_7B12E - cmpi.w #$3F0,(_unkFAF4).w + cmpi.w #$3F0,(SSZ_MTZ_boss_Y_pos).w bhs.s loc_7A906 - move.w #0,(_unkFAFA).w + move.w #0,(SSZ_MTZ_boss_Y_vel).w loc_7A906: btst #7,$2E(a0) bne.s loc_7A91E - cmpi.w #$1700,(_unkFAF0).w + cmpi.w #$1700,(SSZ_MTZ_boss_X_pos).w bhs.s loc_7A92C - move.w #0,(_unkFAF8).w + move.w #0,(SSZ_MTZ_boss_X_vel).w bra.s loc_7A92C ; --------------------------------------------------------------------------- loc_7A91E: - cmpi.w #$1700,(_unkFAF0).w + cmpi.w #$1700,(SSZ_MTZ_boss_X_pos).w blo.s loc_7A92C - move.w #0,(_unkFAF8).w + move.w #0,(SSZ_MTZ_boss_X_vel).w loc_7A92C: - move.w (_unkFAF8).w,d0 - or.w (_unkFAFA).w,d0 + move.w (SSZ_MTZ_boss_X_vel).w,d0 + or.w (SSZ_MTZ_boss_Y_vel).w,d0 bne.s loc_7A93A addq.b #2,$26(a0) @@ -164458,7 +164458,7 @@ loc_7A968: addq.b #1,$3A(a0) cmpi.b #$27,$3A(a0) blo.s loc_7A986 - move.w #$100,(_unkFAFA).w + move.w #$100,(SSZ_MTZ_boss_Y_vel).w move.b #0,$26(a0) bclr #6,$2E(a0) @@ -164483,9 +164483,9 @@ loc_7A99C: loc_7A9A8: bsr.w sub_7B12E - cmpi.w #$3B0,(_unkFAF4).w + cmpi.w #$3B0,(SSZ_MTZ_boss_Y_pos).w bhs.s loc_7A9BA - move.w #0,(_unkFAFA).w + move.w #0,(SSZ_MTZ_boss_Y_vel).w loc_7A9BA: tst.b $30(a0) @@ -164513,19 +164513,19 @@ loc_7A9D4: ; --------------------------------------------------------------------------- loc_7A9EE: - move.w #$100,(_unkFAFA).w + move.w #$100,(SSZ_MTZ_boss_Y_vel).w move.b #0,$26(a0) bclr #6,$2E(a0) bra.s loc_7AA40 ; --------------------------------------------------------------------------- loc_7AA02: - move.w #-$180,(_unkFAFA).w - move.w #-$100,(_unkFAF8).w + move.w #-$180,(SSZ_MTZ_boss_Y_vel).w + move.w #-$100,(SSZ_MTZ_boss_X_vel).w bclr #0,4(a0) btst #7,$2E(a0) beq.s loc_7AA28 - move.w #$100,(_unkFAF8).w + move.w #$100,(SSZ_MTZ_boss_X_vel).w bset #0,4(a0) loc_7AA28: @@ -164558,30 +164558,30 @@ off_7AA60: dc.w loc_7AA66-off_7AA60 loc_7AA66: bsr.w sub_7B12E - cmpi.w #$3B0,(_unkFAF4).w + cmpi.w #$3B0,(SSZ_MTZ_boss_Y_pos).w bhs.s loc_7AA78 - move.w #0,(_unkFAFA).w + move.w #0,(SSZ_MTZ_boss_Y_vel).w loc_7AA78: btst #7,$2E(a0) bne.s loc_7AAA6 - cmpi.w #$16A0,(_unkFAF0).w + cmpi.w #$16A0,(SSZ_MTZ_boss_X_pos).w bhs.s loc_7AACA addq.b #2,$32(a0) - move.w #$180,(_unkFAFA).w + move.w #$180,(SSZ_MTZ_boss_Y_vel).w move.b #3,$31(a0) - move.w #$1E,(_unkFAFC).w + move.w #$1E,(SSZ_MTZ_boss_laser_timer).w bset #0,4(a0) bra.s loc_7AACA ; --------------------------------------------------------------------------- loc_7AAA6: - cmpi.w #$1760,(_unkFAF0).w + cmpi.w #$1760,(SSZ_MTZ_boss_X_pos).w blo.s loc_7AACA addq.b #2,$32(a0) - move.w #$180,(_unkFAFA).w + move.w #$180,(SSZ_MTZ_boss_Y_vel).w move.b #3,$31(a0) - move.w #$1E,(_unkFAFC).w + move.w #$1E,(SSZ_MTZ_boss_laser_timer).w bclr #0,4(a0) loc_7AACA: @@ -164590,9 +164590,9 @@ loc_7AACA: loc_7AACE: bsr.w sub_7B12E - cmpi.w #$420,(_unkFAF4).w + cmpi.w #$420,(SSZ_MTZ_boss_Y_pos).w blo.s loc_7AAEC - move.w #-$180,(_unkFAFA).w + move.w #-$180,(SSZ_MTZ_boss_Y_vel).w addq.b #2,$32(a0) bchg #7,$2E(a0) bra.s loc_7AB12 @@ -164601,16 +164601,16 @@ loc_7AACE: loc_7AAEC: btst #7,$2E(a0) bne.s loc_7AB04 - cmpi.w #$1680,(_unkFAF0).w + cmpi.w #$1680,(SSZ_MTZ_boss_X_pos).w bhs.s loc_7AB12 - move.w #0,(_unkFAF8).w + move.w #0,(SSZ_MTZ_boss_X_vel).w bra.s loc_7AB12 ; --------------------------------------------------------------------------- loc_7AB04: - cmpi.w #$1780,(_unkFAF0).w + cmpi.w #$1780,(SSZ_MTZ_boss_X_pos).w blo.s loc_7AB12 - move.w #0,(_unkFAF8).w + move.w #0,(SSZ_MTZ_boss_X_vel).w loc_7AB12: bsr.w sub_7AB56 @@ -164619,17 +164619,17 @@ loc_7AB12: loc_7AB1A: bsr.w sub_7B12E - cmpi.w #$3F0,(_unkFAF4).w + cmpi.w #$3F0,(SSZ_MTZ_boss_Y_pos).w bhs.s loc_7AB3A - move.w #$100,(_unkFAF8).w + move.w #$100,(SSZ_MTZ_boss_X_vel).w btst #7,$2E(a0) bne.s loc_7AB3A - move.w #-$100,(_unkFAF8).w + move.w #-$100,(SSZ_MTZ_boss_X_vel).w loc_7AB3A: - cmpi.w #$3B0,(_unkFAF4).w + cmpi.w #$3B0,(SSZ_MTZ_boss_Y_pos).w bhs.s loc_7AB4E - move.w #0,(_unkFAFA).w + move.w #0,(SSZ_MTZ_boss_Y_vel).w move.b #0,$32(a0) loc_7AB4E: @@ -164640,13 +164640,13 @@ loc_7AB4E: sub_7AB56: - subi.w #1,(_unkFAFC).w + subi.w #1,(SSZ_MTZ_boss_laser_timer).w bne.s locret_7AB7E tst.b $31(a0) beq.s locret_7AB7E subq.b #1,$31(a0) move.b #$10,$33(a0) - move.w #$1E,(_unkFAFC).w + move.w #$1E,(SSZ_MTZ_boss_laser_timer).w lea ChildObjDat_7AB80(pc),a2 jsr (CreateChild1_Normal).l @@ -164722,12 +164722,12 @@ sub_7AC06: tst.b $3C(a0) beq.s loc_7AC42 move.b #$A,$26(a0) - move.w #-$180,(_unkFAFA).w + move.w #-$180,(SSZ_MTZ_boss_Y_vel).w subq.b #1,$3C(a0) - move.w #0,(_unkFAF8).w + move.w #0,(SSZ_MTZ_boss_X_vel).w loc_7AC42: - move.w #0,(_unkFAF8).w + move.w #0,(SSZ_MTZ_boss_X_vel).w rts ; --------------------------------------------------------------------------- @@ -164786,9 +164786,9 @@ loc_7ACC0: move.b $1D(a0),d0 jsr (GetSineCosine).l asr.w #6,d0 - add.w (_unkFAF4).w,d0 + add.w (SSZ_MTZ_boss_Y_pos).w,d0 move.w d0,$14(a0) - move.w (_unkFAF0).w,$10(a0) + move.w (SSZ_MTZ_boss_X_pos).w,$10(a0) addq.b #2,$1D(a0) ; =============== S U B R O U T I N E ======================================= @@ -165218,18 +165218,18 @@ loc_7B116: sub_7B12E: - move.l (_unkFAF0).w,d2 - move.l (_unkFAF4).w,d3 - move.w (_unkFAF8).w,d0 + move.l (SSZ_MTZ_boss_X_pos).w,d2 + move.l (SSZ_MTZ_boss_Y_pos).w,d3 + move.w (SSZ_MTZ_boss_X_vel).w,d0 ext.l d0 asl.l #8,d0 add.l d0,d2 - move.w (_unkFAFA).w,d0 + move.w (SSZ_MTZ_boss_Y_vel).w,d0 ext.l d0 asl.l #8,d0 add.l d0,d3 - move.l d2,(_unkFAF0).w - move.l d3,(_unkFAF4).w + move.l d2,(SSZ_MTZ_boss_X_pos).w + move.l d3,(SSZ_MTZ_boss_Y_pos).w rts ; End of function sub_7B12E diff --git a/sonic3k.constants.asm b/sonic3k.constants.asm index 220dc7de..c926ba01 100644 --- a/sonic3k.constants.asm +++ b/sonic3k.constants.asm @@ -702,13 +702,13 @@ Pal_fade_delay2 ds.w 1 ; timer for palette fade from white routine ds.b $A ; unused Palette_rotation_custom ds.l 1 ; custom routine for palette rotation scripts Palette_rotation_data ds.w 9 ; data used by palette rotation scripts. Last word must always be 0 -_unkFAF0 ds.w 1 +SSZ_MTZ_boss_X_pos ds.w 1 ; horizontal position of the Metropolis Zone boss in Sky Sanctuary ds.w 1 ; unused -_unkFAF4 ds.w 1 +SSZ_MTZ_boss_Y_pos ds.w 1 ; vertical position of the Metropolis Zone boss in Sky Sanctuary ds.w 1 ; unused -_unkFAF8 ds.w 1 -_unkFAFA ds.w 1 -_unkFAFC ds.w 1 +SSZ_MTZ_boss_X_vel ds.w 1 ; horizontal velocity of the Metropolis Zone boss in Sky Sanctuary +SSZ_MTZ_boss_Y_vel ds.w 1 ; vertical velocity of the Metropolis Zone boss in Sky Sanctuary +SSZ_MTZ_boss_laser_timer ds.w 1 ; counts down until a laser is fired in Sky Sanctuary's Metropolis boss fight ds.w 1 ; unused DMA_queue ds.w $12*7 ; stores all the VDP commands necessary to initiate a DMA transfer From 691d4f279150087853ff9e3e19cfe08fe2c812f6 Mon Sep 17 00:00:00 2001 From: flamewing Date: Sat, 5 Jun 2021 14:21:11 +0000 Subject: [PATCH 20/72] Documenting a function from S2 --- sonic3k.asm | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/sonic3k.asm b/sonic3k.asm index c3c3ea0a..a0d99c69 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -164327,7 +164327,7 @@ off_7A7F0: dc.w loc_7A800-off_7A7F0 ; --------------------------------------------------------------------------- loc_7A800: - bsr.w sub_7B12E + bsr.w Boss_MoveObject move.w (SSZ_MTZ_boss_Y_pos).w,$14(a0) cmpi.w #$420,(SSZ_MTZ_boss_Y_pos).w blo.s loc_7A84A @@ -164364,7 +164364,7 @@ sub_7A85A: ; --------------------------------------------------------------------------- loc_7A874: - bsr.w sub_7B12E + bsr.w Boss_MoveObject btst #7,$2E(a0) bne.s loc_7A8AE cmpi.w #$1680,(SSZ_MTZ_boss_X_pos).w @@ -164401,7 +164401,7 @@ loc_7A8E4: ; --------------------------------------------------------------------------- loc_7A8F4: - bsr.w sub_7B12E + bsr.w Boss_MoveObject cmpi.w #$3F0,(SSZ_MTZ_boss_Y_pos).w bhs.s loc_7A906 move.w #0,(SSZ_MTZ_boss_Y_vel).w @@ -164482,7 +164482,7 @@ loc_7A99C: subq.b #1,$38(a0) loc_7A9A8: - bsr.w sub_7B12E + bsr.w Boss_MoveObject cmpi.w #$3B0,(SSZ_MTZ_boss_Y_pos).w bhs.s loc_7A9BA move.w #0,(SSZ_MTZ_boss_Y_vel).w @@ -164557,7 +164557,7 @@ off_7AA60: dc.w loc_7AA66-off_7AA60 ; --------------------------------------------------------------------------- loc_7AA66: - bsr.w sub_7B12E + bsr.w Boss_MoveObject cmpi.w #$3B0,(SSZ_MTZ_boss_Y_pos).w bhs.s loc_7AA78 move.w #0,(SSZ_MTZ_boss_Y_vel).w @@ -164589,7 +164589,7 @@ loc_7AACA: ; --------------------------------------------------------------------------- loc_7AACE: - bsr.w sub_7B12E + bsr.w Boss_MoveObject cmpi.w #$420,(SSZ_MTZ_boss_Y_pos).w blo.s loc_7AAEC move.w #-$180,(SSZ_MTZ_boss_Y_vel).w @@ -164618,7 +164618,7 @@ loc_7AB12: ; --------------------------------------------------------------------------- loc_7AB1A: - bsr.w sub_7B12E + bsr.w Boss_MoveObject cmpi.w #$3F0,(SSZ_MTZ_boss_Y_pos).w bhs.s loc_7AB3A move.w #$100,(SSZ_MTZ_boss_X_vel).w @@ -165216,8 +165216,10 @@ loc_7B116: ; =============== S U B R O U T I N E ======================================= - -sub_7B12E: +; This routine comes from Sonic 2, and is used in Sky Sanctuary by Mecha +; Sonic cosplaying as the Metropolis Zone boss. +;sub_7B12E: +Boss_MoveObject: move.l (SSZ_MTZ_boss_X_pos).w,d2 move.l (SSZ_MTZ_boss_Y_pos).w,d3 move.w (SSZ_MTZ_boss_X_vel).w,d0 @@ -165231,7 +165233,7 @@ sub_7B12E: move.l d2,(SSZ_MTZ_boss_X_pos).w move.l d3,(SSZ_MTZ_boss_Y_pos).w rts -; End of function sub_7B12E +; End of function Boss_MoveObject ; --------------------------------------------------------------------------- moveq #0,d6 From 29391b638f764467165417200da5998175f99578 Mon Sep 17 00:00:00 2001 From: Clownacy Date: Sat, 16 Oct 2021 16:32:34 +0100 Subject: [PATCH 21/72] Update accurate-kosinski and clownlzss accurate-kosinski is more accurate, clownlzss is faster, and they're both now more portable. I've tested that produced ROMs are still accurate and functional. --- AS/Win32/s3p2bin.exe | Bin 51712 -> 54272 bytes AS/s3p2bin/Makefile | 4 +- AS/s3p2bin/accurate-kosinski/LICENCE.txt | 2 +- .../accurate-kosinski/kosinski_compress.c | 257 +++++++++--------- .../accurate-kosinski/kosinski_compress.h | 29 +- AS/s3p2bin/clowncommon.h | 39 +++ AS/s3p2bin/clownlzss/LICENCE.txt | 2 +- AS/s3p2bin/clownlzss/clownlzss.h | 167 +++++++++--- AS/s3p2bin/clownlzss/common.c | 80 ++++-- AS/s3p2bin/clownlzss/common.h | 29 +- AS/s3p2bin/clownlzss/kosinski.c | 105 ++++--- AS/s3p2bin/clownlzss/kosinski.h | 29 +- AS/s3p2bin/memory_stream.c | 135 +++++++-- AS/s3p2bin/memory_stream.h | 68 ++++- AS/s3p2bin/s3p2bin.c | 4 +- 15 files changed, 676 insertions(+), 274 deletions(-) create mode 100644 AS/s3p2bin/clowncommon.h diff --git a/AS/Win32/s3p2bin.exe b/AS/Win32/s3p2bin.exe index 172ce8c62506a907fa394a97dc6fa03a7ee67f11..24347b38b347ea6a3674207ce38c0c3538289d60 100755 GIT binary patch literal 54272 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 -#include +#include +#ifdef DEBUG + #include +#endif #include #include @@ -67,42 +50,45 @@ #define MIN(a, b) (((a) < (b)) ? (a) : (b)) #define MAX(a, b) (((a) > (b)) ? (a) : (b)) -#define MAX_MATCH_LENGTH 0xFD // Mistake 1: This should be 0x100 -#define MAX_MATCH_DISTANCE (0x2000 - MAX_MATCH_LENGTH) // Mistake 2: This should just be 0x2000 +#define SLIDING_WINDOW_SIZE 0x2000 -#define TOTAL_DESCRIPTOR_BITS 16 +#define MAX_MATCH_LENGTH 0xFD // Mistake 1: This should be 0x100 +#define MAX_MATCH_DISTANCE (SLIDING_WINDOW_SIZE - MAX_MATCH_LENGTH) // Mistake 2: This should just be SLIDING_WINDOW_SIZE -#ifdef __MINGW32__ -#define PRINTF __mingw_printf -#else -#define PRINTF printf -#endif +#define TOTAL_DESCRIPTOR_BITS 16 -static MemoryStream *output_stream; -static MemoryStream *match_stream; +static MemoryStream output_stream; +static MemoryStream match_stream; -static unsigned short descriptor; +static unsigned int descriptor; static unsigned int descriptor_bits_remaining; +// Rather than load the entire file into memory, it appears that the original +// Kosinski compressor would stream data into a ring buffer, which matched the +// size of the LZSS sliding window. +// Okumura's 1989 LZSS compressor does this too, so it appears that this was a +// common technique back then. +static unsigned char ring_buffer[SLIDING_WINDOW_SIZE]; + static void FlushData(void) { descriptor >>= descriptor_bits_remaining; - // Descriptors are stored byte-swapped, so it's possible the - // original compressor did this: + // Descriptors are stored byte-swapped, so it's possible that the original + // compressor was designed for a little-endian CPU and that it did this: //fwrite(&descriptor, 2, 1, output_file); - MemoryStream_WriteByte(output_stream, descriptor & 0xFF); - MemoryStream_WriteByte(output_stream, descriptor >> 8); + MemoryStream_WriteByte(&output_stream, (descriptor >> 0) & 0xFF); + MemoryStream_WriteByte(&output_stream, (descriptor >> 8) & 0xFF); - const size_t match_buffer_size = MemoryStream_GetPosition(match_stream); - unsigned char *match_buffer = MemoryStream_GetBuffer(match_stream); + const size_t match_buffer_size = MemoryStream_GetPosition(&match_stream); + const unsigned char *match_buffer = MemoryStream_GetBuffer(&match_stream); - MemoryStream_WriteBytes(output_stream, match_buffer, match_buffer_size); + MemoryStream_Write(&output_stream, match_buffer, 1, match_buffer_size); } static void PutMatchByte(unsigned char byte) { - MemoryStream_WriteByte(match_stream, byte); + MemoryStream_WriteByte(&match_stream, byte); } static void PutDescriptorBit(bool bit) @@ -117,17 +103,26 @@ static void PutDescriptorBit(bool bit) FlushData(); descriptor_bits_remaining = TOTAL_DESCRIPTOR_BITS; - MemoryStream_Rewind(match_stream); + MemoryStream_Rewind(&match_stream); } } -size_t AccurateKosinskiCompress(unsigned char *file_buffer, size_t file_size, unsigned char **output_buffer_pointer) +size_t KosinskiCompress(const unsigned char *file_buffer, size_t file_size, unsigned char **output_buffer_pointer) { - output_stream = MemoryStream_Create(0x100, false); - match_stream = MemoryStream_Create(0x10, true); + MemoryStream_Create(&output_stream, CC_FALSE); + MemoryStream_Create(&match_stream, CC_TRUE); descriptor_bits_remaining = TOTAL_DESCRIPTOR_BITS; + // Fill the ring buffer with zero. We know the original Kosinski compressor + // did this because of Mistake 6. + memset(ring_buffer, 0, sizeof(ring_buffer)); + + // Initialise the ring buffer with data from the file + for (size_t i = 0; i < MAX_MATCH_LENGTH; ++i) + if (i < file_size) + ring_buffer[i] = file_buffer[i]; + size_t file_index = 0; size_t last_src_file_index = 0; @@ -136,16 +131,15 @@ size_t AccurateKosinskiCompress(unsigned char *file_buffer, size_t file_size, un // Mistake 5: This is completely pointless. // For some reason, the original compressor would insert a dummy match // before the first match that starts after 0xA000. - // Update: I actually might have figured out what these are for: the - // original PC decompressor might have had a 0xA000-byte decompression - // buffer, and these commands were for signalling that it's about to - // run out of room, and to allocate a bigger buffer. - // Still though, this is pointless to the Mega Drive. + // Perhaps this was intended for detecting corrupted data? Maybe the PC + // Kosinski decompressor would expect this type of match to appear every + // 0xA000 bytes, and if it didn't, then it would bail and print an error + // message to the user telling them that the compressed data is corrupt. if (file_index / 0xA000 != last_src_file_index / 0xA000) { - #ifdef DEBUG - PRINTF("%zX - 0xA000 boundary flag: %tX\n", MemoryStream_GetPosition(output_stream) + MemoryStream_GetPosition(match_stream) + 2, file_index); - #endif + #ifdef DEBUG + fprintf(stderr, "%zX - 0xA000 boundary flag: %zX\n", MemoryStream_GetPosition(&output_stream) + MemoryStream_GetPosition(&match_stream) + 2, file_index); + #endif // 0xA000 boundary match PutDescriptorBit(false); @@ -157,16 +151,21 @@ size_t AccurateKosinskiCompress(unsigned char *file_buffer, size_t file_size, un last_src_file_index = file_index; - const unsigned int max_match_distance = MIN(file_index, MAX_MATCH_DISTANCE); - const unsigned int max_match_length = MIN(file_size - file_index, MAX_MATCH_LENGTH); + const size_t max_match_distance = MIN(file_index, MAX_MATCH_DISTANCE); - unsigned int longest_match_index; - unsigned int longest_match_length = 0; - for (unsigned int backsearch_index = 1; backsearch_index < max_match_distance + 1; ++backsearch_index) + size_t longest_match_index = 0; + size_t longest_match_length = 0; + for (size_t backsearch_index = 1; backsearch_index < max_match_distance + 1; ++backsearch_index) { - - unsigned int match_length = 0; - while (match_length < max_match_length && file_buffer[file_index + match_length] == file_buffer[file_index - backsearch_index + match_length]) + // Mistake 6: `match_length` always counts up to `MAX_MATCH_LENGTH`, even if it means reading + // past the end of the file. Because the ring buffer isn't updated once the end of the file is + // reached, this results in leftover values from earlier in the file being read instead. + // This bug causes the final match in the file to sometimes ignore suitable nearby data in + // favour of data earlier in the file, even if it means using a larger match type. This is + // because the chosen data just so happened to be followed by the same pattern of bytes that + // the buggy search read from the ring buffer, while the nearby data did not. + size_t match_length = 0; + while (match_length < MAX_MATCH_LENGTH && ring_buffer[(file_index + match_length) % SLIDING_WINDOW_SIZE] == ring_buffer[(file_index - backsearch_index + match_length) % SLIDING_WINDOW_SIZE]) { ++match_length; } @@ -178,65 +177,71 @@ size_t AccurateKosinskiCompress(unsigned char *file_buffer, size_t file_size, un } } - if (longest_match_length >= 2 && longest_match_length <= 5 && longest_match_index < 256) // Mistake 3: This should be '<= 256' + // If the match is longer than the remainder of the file, reduce it to the proper size. See Mistake 6 for more info. + longest_match_length = MIN(longest_match_length, file_size - file_index); + + if (longest_match_length >= 2 && longest_match_length <= 5 && longest_match_index < 0x100) // Mistake 3: This should be '<= 0x100' { - #ifdef DEBUG - PRINTF("%zX - Inline dictionary match found: %tX, %tX, %X\n", MemoryStream_GetPosition(output_stream) + MemoryStream_GetPosition(match_stream) + 2, file_index, file_index - longest_match_index, longest_match_length); - #endif + #ifdef DEBUG + fprintf(stderr, "%zX - Inline dictionary match found: %zX, %zX, %zX\n", MemoryStream_GetPosition(&output_stream) + MemoryStream_GetPosition(&match_stream) + 2, file_index, file_index - longest_match_index, longest_match_length); + #endif - const unsigned int length = longest_match_length - 2; + const size_t length = longest_match_length - 2; PutDescriptorBit(false); PutDescriptorBit(false); PutDescriptorBit(length & 2); PutDescriptorBit(length & 1); - PutMatchByte(-longest_match_index); - - file_index += longest_match_length; + PutMatchByte(-longest_match_index & 0xFF); } else if (longest_match_length >= 3 && longest_match_length <= 9) { - #ifdef DEBUG - PRINTF("%zX - Full match found: %tX, %tX, %X\n", MemoryStream_GetPosition(output_stream) + MemoryStream_GetPosition(match_stream) + 2, file_index, file_index - longest_match_index, longest_match_length); - #endif + #ifdef DEBUG + fprintf(stderr, "%zX - Full match found: %zX, %zX, %zX\n", MemoryStream_GetPosition(&output_stream) + MemoryStream_GetPosition(&match_stream) + 2, file_index, file_index - longest_match_index, longest_match_length); + #endif - const unsigned int distance = -longest_match_index; + const size_t distance = -longest_match_index; PutDescriptorBit(false); PutDescriptorBit(true); PutMatchByte(distance & 0xFF); PutMatchByte(((distance >> (8 - 3)) & 0xF8) | ((longest_match_length - 2) & 7)); - - file_index += longest_match_length; } else if (longest_match_length >= 3) { - #ifdef DEBUG - PRINTF("%zX - Extended full match found: %tX, %tX, %X\n", MemoryStream_GetPosition(output_stream) + MemoryStream_GetPosition(match_stream) + 2, file_index, file_index - longest_match_index, longest_match_length); - #endif + #ifdef DEBUG + fprintf(stderr, "%zX - Extended full match found: %zX, %zX, %zX\n", MemoryStream_GetPosition(&output_stream) + MemoryStream_GetPosition(&match_stream) + 2, file_index, file_index - longest_match_index, longest_match_length); + #endif - const unsigned int distance = -longest_match_index; + const size_t distance = -longest_match_index; PutDescriptorBit(false); PutDescriptorBit(true); PutMatchByte(distance & 0xFF); PutMatchByte((distance >> (8 - 3)) & 0xF8); PutMatchByte(longest_match_length - 1); - - file_index += longest_match_length; } else { - #ifdef DEBUG - PRINTF("%zX - Literal match found: %X at %tX\n", MemoryStream_GetPosition(output_stream) + MemoryStream_GetPosition(match_stream) + 2, file_buffer[file_index], file_index); - #endif + #ifdef DEBUG + fprintf(stderr, "%zX - Literal match found: %X at %zX\n", MemoryStream_GetPosition(&output_stream) + MemoryStream_GetPosition(&match_stream) + 2, file_buffer[file_index], file_index); + #endif + + longest_match_length = 1; PutDescriptorBit(true); - PutMatchByte(file_buffer[file_index++]); + PutMatchByte(file_buffer[file_index]); } + + // Update the ring buffer with bytes from the file + for (size_t i = 0; i < longest_match_length; ++i) + if (file_index + MAX_MATCH_LENGTH + i < file_size) + ring_buffer[(file_index + MAX_MATCH_LENGTH + i) % SLIDING_WINDOW_SIZE] = file_buffer[file_index + MAX_MATCH_LENGTH + i]; + + file_index += longest_match_length; } - #ifdef DEBUG - PRINTF("%zX - Terminator: %tX\n", MemoryStream_GetPosition(output_stream) + MemoryStream_GetPosition(match_stream) + 2, file_index); - #endif +#ifdef DEBUG + fprintf(stderr, "%zX - Terminator: %zX\n", MemoryStream_GetPosition(&output_stream) + MemoryStream_GetPosition(&match_stream) + 2, file_index); +#endif // Terminator match PutDescriptorBit(false); @@ -247,24 +252,24 @@ size_t AccurateKosinskiCompress(unsigned char *file_buffer, size_t file_size, un FlushData(); - // Destory match_buffer - MemoryStream_Destroy(match_stream); + // Destroy match_buffer + MemoryStream_Destroy(&match_stream); // Mistake 4: There's absolutely no reason to do this. - // This might have been because the original compressor's ASM output could only write - // exactly 0x10 values per dc.b instruction. + // This might have been because the original compressor's ASM output could + // only write exactly 0x10 values per dc.b instruction. - // Pad to 0x10 - size_t bytes_remaining = -MemoryStream_GetPosition(output_stream) & 0xF; - for (unsigned int i = 0; i < bytes_remaining; ++i) - MemoryStream_WriteByte(output_stream, 0); + // Pad to 0x10 bytes + size_t bytes_remaining = -MemoryStream_GetPosition(&output_stream) & 0xF; + for (size_t i = 0; i < bytes_remaining; ++i) + MemoryStream_WriteByte(&output_stream, 0); - const size_t output_buffer_size = MemoryStream_GetPosition(output_stream); - unsigned char *output_buffer = MemoryStream_GetBuffer(output_stream); + const size_t output_buffer_size = MemoryStream_GetPosition(&output_stream); + unsigned char *output_buffer = MemoryStream_GetBuffer(&output_stream); - MemoryStream_Destroy(output_stream); + MemoryStream_Destroy(&output_stream); - if (output_buffer_pointer) + if (output_buffer_pointer != NULL) *output_buffer_pointer = output_buffer; return output_buffer_size; diff --git a/AS/s3p2bin/accurate-kosinski/kosinski_compress.h b/AS/s3p2bin/accurate-kosinski/kosinski_compress.h index b2276ece..c4b100ea 100644 --- a/AS/s3p2bin/accurate-kosinski/kosinski_compress.h +++ b/AS/s3p2bin/accurate-kosinski/kosinski_compress.h @@ -1,7 +1,30 @@ -// Copyright (c) 2018 Clownacy +/* + * zlib License + * + * (C) 2018-2021 Clownacy + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + */ -#pragma once +#ifndef KOSINSKI_COMPRESS_H +#define KOSINSKI_COMPRESS_H #include -size_t AccurateKosinskiCompress(unsigned char *file_buffer, size_t file_size, unsigned char **output_buffer_pointer); +size_t KosinskiCompress(const unsigned char *file_buffer, size_t file_size, unsigned char **output_buffer_pointer); + +#endif /* KOSINSKI_COMPRESS_H */ diff --git a/AS/s3p2bin/clowncommon.h b/AS/s3p2bin/clowncommon.h new file mode 100644 index 00000000..570c8924 --- /dev/null +++ b/AS/s3p2bin/clowncommon.h @@ -0,0 +1,39 @@ +/* + (C) 2021 Clownacy + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef CLOWNCOMMON_H +#define CLOWNCOMMON_H + +/* Boolean */ +typedef unsigned char cc_bool_small; +typedef unsigned int cc_bool_fast; +enum +{ + CC_FALSE = 0, + CC_TRUE = 1 +}; + +/* Common macros */ +#define CC_MIN(a, b) ((a) < (b) ? (a) : (b)) +#define CC_MAX(a, b) ((a) > (b) ? (a) : (b)) +#define CC_CLAMP(x, min, max) (CC_MIN((max), CC_MAX((min), (x)))) +#define CC_COUNT_OF(array) (sizeof(array) / sizeof(*array)) + +#endif /* CLOWNCOMMON_H */ diff --git a/AS/s3p2bin/clownlzss/LICENCE.txt b/AS/s3p2bin/clownlzss/LICENCE.txt index 00489f6f..2f92630a 100644 --- a/AS/s3p2bin/clownlzss/LICENCE.txt +++ b/AS/s3p2bin/clownlzss/LICENCE.txt @@ -1,6 +1,6 @@ zlib License -(C) 2018 Clownacy +(C) 2018-2021 Clownacy This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/AS/s3p2bin/clownlzss/clownlzss.h b/AS/s3p2bin/clownlzss/clownlzss.h index 91f8f8d5..5603cbc2 100644 --- a/AS/s3p2bin/clownlzss/clownlzss.h +++ b/AS/s3p2bin/clownlzss/clownlzss.h @@ -1,17 +1,37 @@ -#pragma once +/* + (C) 2018-2021 Clownacy + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef CLOWNLZSS_H +#define CLOWNLZSS_H -#include #include #include -#define CLOWNLZSS_MIN(a, b) (a) < (b) ? (a) : (b) -#define CLOWNLZSS_MAX(a, b) (a) > (b) ? (a) : (b) +#define CLOWNLZSS_MIN(a, b) ((a) < (b) ? (a) : (b)) +#define CLOWNLZSS_MAX(a, b) ((a) > (b) ? (a) : (b)) typedef struct ClownLZSS_GraphEdge { union { - unsigned int cost; + size_t cost; size_t next_node_index; } u; size_t previous_node_index; @@ -19,67 +39,146 @@ typedef struct ClownLZSS_GraphEdge size_t match_offset; } ClownLZSS_GraphEdge; -#define CLOWNLZSS_MAKE_COMPRESSION_FUNCTION(NAME, TYPE, MAX_MATCH_LENGTH, MAX_MATCH_DISTANCE, FIND_EXTRA_MATCHES, LITERAL_COST, LITERAL_CALLBACK, MATCH_COST_CALLBACK, MATCH_CALLBACK)\ -void NAME(TYPE *data, size_t data_size, void *user)\ +#define CLOWNLZSS_MAKE_COMPRESSION_FUNCTION(NAME, BYTES_PER_VALUE, MAX_MATCH_LENGTH, MAX_MATCH_DISTANCE, FIND_EXTRA_MATCHES, LITERAL_COST, LITERAL_CALLBACK, MATCH_COST_CALLBACK, MATCH_CALLBACK)\ +void NAME(const unsigned char *data, size_t data_size, void *user)\ {\ - ClownLZSS_GraphEdge *node_meta_array = (ClownLZSS_GraphEdge*)malloc((data_size + 1) * sizeof(ClownLZSS_GraphEdge)); /* +1 for the end-node */\ + ClownLZSS_GraphEdge *node_meta_array;\ + size_t i;\ +\ + const size_t total_values = data_size / BYTES_PER_VALUE;\ + const size_t DUMMY = -1;\ +\ + /* String list stuff */\ + size_t next[MAX_MATCH_DISTANCE + 0x100];\ + size_t prev[MAX_MATCH_DISTANCE];\ + size_t bytes[MAX_MATCH_DISTANCE];\ +\ + /* Initialise the string list heads */\ + for (i = 0; i < 0x100; ++i)\ + next[MAX_MATCH_DISTANCE + i] = DUMMY;\ +\ + /* Initialise the string list nodes */\ + for (i = 0; i < MAX_MATCH_DISTANCE; ++i)\ + prev[i] = DUMMY;\ +\ + node_meta_array = (ClownLZSS_GraphEdge*)malloc((total_values + 1) * sizeof(ClownLZSS_GraphEdge)); /* +1 for the end-node */\ \ + /* Set costs to maximum possible value, so later comparisons work */\ node_meta_array[0].u.cost = 0;\ - for (size_t i = 1; i < data_size + 1; ++i)\ - node_meta_array[i].u.cost = UINT_MAX;\ + for (i = 1; i < total_values + 1; ++i)\ + node_meta_array[i].u.cost = DUMMY;\ \ - for (size_t i = 0; i < data_size; ++i)\ + /* Search for matches, to populate the edges of the LZSS graph. + Notably, while doing this, we're also using a shortest-path + algorithm on the edges to find the best combination of matches + to produce the smallest file. */\ +\ + /* Advance through the data one step at a time */\ + for (i = 0; i < total_values; ++i)\ {\ - const size_t max_read_ahead = CLOWNLZSS_MIN(MAX_MATCH_LENGTH, data_size - i);\ - const size_t max_read_behind = MAX_MATCH_DISTANCE > i ? 0 : i - MAX_MATCH_DISTANCE;\ + size_t match_string;\ +\ + const size_t string_list_head = MAX_MATCH_DISTANCE + (data[i * BYTES_PER_VALUE] & 0xFF);\ + const size_t current_string = i % MAX_MATCH_DISTANCE;\ \ - FIND_EXTRA_MATCHES(data, data_size, i, node_meta_array, user);\ + FIND_EXTRA_MATCHES(data, total_values, i * BYTES_PER_VALUE, node_meta_array, user);\ \ - for (size_t j = i; j-- > max_read_behind;)\ + /* `string_list_head` points to a linked-list of strings in the LZSS sliding window that match at least + one byte with the current string: iterate over it and generate every possible match for this string */\ + for (match_string = next[string_list_head]; match_string != DUMMY; match_string = next[match_string])\ {\ - for (size_t k = 0; k < max_read_ahead; ++k)\ + size_t j;\ +\ + const unsigned char *current_bytes = &data[i * BYTES_PER_VALUE];\ + const unsigned char *match_bytes = &data[bytes[match_string] * BYTES_PER_VALUE];\ +\ + /* If `BYTES_PER_VALUE` is not 1, then we have to re-evaluate the first value, otherwise we can skip it */\ + for (j = BYTES_PER_VALUE == 1; j < CLOWNLZSS_MIN(MAX_MATCH_LENGTH, total_values - i); ++j)\ {\ - if (data[i + k] == data[j + k])\ + unsigned int values_do_not_match = 0;\ + size_t l;\ +\ + for (l = 0; l < BYTES_PER_VALUE; ++l)\ + values_do_not_match |= current_bytes[j * BYTES_PER_VALUE + l] != match_bytes[j * BYTES_PER_VALUE + l];\ +\ + if (values_do_not_match)\ + {\ + /* No match: give up on the current run */\ + break;\ + }\ + else\ {\ - const unsigned int cost = MATCH_COST_CALLBACK(i - j, k + 1, user);\ + /* Figure out how much it costs to encode the current run */\ + const size_t cost = MATCH_COST_CALLBACK(current_bytes - match_bytes, j + 1, user);\ \ - if (cost && node_meta_array[i + k + 1].u.cost > node_meta_array[i].u.cost + cost)\ + /* Figure out if the cost is lower than that of any other runs that end at the same value as this one */\ + if (cost && node_meta_array[i + j + 1].u.cost > node_meta_array[i].u.cost + cost)\ {\ - node_meta_array[i + k + 1].u.cost = node_meta_array[i].u.cost + cost;\ - node_meta_array[i + k + 1].previous_node_index = i;\ - node_meta_array[i + k + 1].match_length = k + 1;\ - node_meta_array[i + k + 1].match_offset = j;\ + /* Record this new best run in the graph edge assigned to the value at the end of the run */\ + node_meta_array[i + j + 1].u.cost = node_meta_array[i].u.cost + cost;\ + node_meta_array[i + j + 1].previous_node_index = i;\ + node_meta_array[i + j + 1].match_length = j + 1;\ + node_meta_array[i + j + 1].match_offset = bytes[match_string];\ }\ }\ - else\ - break;\ }\ }\ \ + /* If a literal match is more efficient than all runs assigned to this value, then use that instead */\ if (node_meta_array[i + 1].u.cost >= node_meta_array[i].u.cost + LITERAL_COST)\ {\ node_meta_array[i + 1].u.cost = node_meta_array[i].u.cost + LITERAL_COST;\ node_meta_array[i + 1].previous_node_index = i;\ node_meta_array[i + 1].match_length = 0;\ }\ +\ + /* Replace the oldest string in the list with the new string, since it's about to be pushed out of the LZSS sliding window */\ +\ + /* Detach the old node in this slot */\ + if (prev[current_string] != DUMMY)\ + {\ + next[prev[current_string]] = next[current_string];\ +\ + if (next[current_string] != DUMMY)\ + prev[next[current_string]] = prev[current_string];\ + }\ +\ + /* Replace the old node with this new one, and insert it at the start of its matching list */\ + bytes[current_string] = i;\ + prev[current_string] = string_list_head;\ + next[current_string] = next[string_list_head];\ +\ + if (next[string_list_head] != DUMMY)\ + prev[next[string_list_head]] = current_string;\ +\ + next[string_list_head] = current_string;\ }\ \ - node_meta_array[0].previous_node_index = (size_t)-1;\ - node_meta_array[data_size].u.next_node_index = (size_t)-1;\ - for (size_t node_index = data_size; node_meta_array[node_index].previous_node_index != (size_t)-1; node_index = node_meta_array[node_index].previous_node_index)\ - node_meta_array[node_meta_array[node_index].previous_node_index].u.next_node_index = node_index;\ + /* At this point, the edges will have formed a shortest-path from the start to the end: + You just have to start at the last edge, and follow it backwards all the way to the start. */\ +\ + /* Mark start/end nodes for the following loops */\ + node_meta_array[0].previous_node_index = DUMMY;\ + node_meta_array[total_values].u.next_node_index = DUMMY;\ \ - for (size_t node_index = 0; node_meta_array[node_index].u.next_node_index != (size_t)-1; node_index = node_meta_array[node_index].u.next_node_index)\ + /* Reverse the direction of the edges, so we can parse the LZSS graph from start to end */\ + for (i = total_values; node_meta_array[i].previous_node_index != DUMMY; i = node_meta_array[i].previous_node_index)\ + node_meta_array[node_meta_array[i].previous_node_index].u.next_node_index = i;\ +\ + /* Go through our now-complete LZSS graph, and output the optimally-compressed file */\ + for (i = 0; node_meta_array[i].u.next_node_index != DUMMY; i = node_meta_array[i].u.next_node_index)\ {\ - const size_t next_index = node_meta_array[node_index].u.next_node_index;\ + const size_t next_index = node_meta_array[i].u.next_node_index;\ const size_t length = node_meta_array[next_index].match_length;\ const size_t offset = node_meta_array[next_index].match_offset;\ \ - if (length)\ - MATCH_CALLBACK(next_index - length - offset, length, offset, user);\ + if (length == 0)\ + LITERAL_CALLBACK(&data[i * BYTES_PER_VALUE], user);\ else\ - LITERAL_CALLBACK(data[node_index], user);\ + MATCH_CALLBACK(next_index - length - offset, length, offset, user);\ }\ \ free(node_meta_array);\ } + +#endif /* CLOWNLZSS_H */ diff --git a/AS/s3p2bin/clownlzss/common.c b/AS/s3p2bin/clownlzss/common.c index eb3dc096..3ddbf06b 100644 --- a/AS/s3p2bin/clownlzss/common.c +++ b/AS/s3p2bin/clownlzss/common.c @@ -1,3 +1,23 @@ +/* + (C) 2018-2021 Clownacy + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + #include "common.h" #include @@ -5,48 +25,62 @@ #include "memory_stream.h" -unsigned char* RegularWrapper(unsigned char *data, size_t data_size, size_t *compressed_size, void *user_data, void (*function)(unsigned char *data, size_t data_size, MemoryStream *output_stream, void *user_data)) +unsigned char* RegularWrapper(const unsigned char *data, size_t data_size, size_t *compressed_size, void *user_data, void (*function)(const unsigned char *data, size_t data_size, MemoryStream *output_stream, void *user_data)) { - MemoryStream *output_stream = MemoryStream_Create(0x1000, false); + MemoryStream output_stream; + unsigned char *out_buffer; + + MemoryStream_Create(&output_stream, CC_FALSE); - function(data, data_size, output_stream, user_data); + function(data, data_size, &output_stream, user_data); - unsigned char *out_buffer = MemoryStream_GetBuffer(output_stream); + out_buffer = MemoryStream_GetBuffer(&output_stream); - if (compressed_size) - *compressed_size = MemoryStream_GetPosition(output_stream); + if (compressed_size != NULL) + *compressed_size = MemoryStream_GetPosition(&output_stream); - MemoryStream_Destroy(output_stream); + MemoryStream_Destroy(&output_stream); return out_buffer; } -unsigned char* ModuledCompressionWrapper(unsigned char *data, size_t data_size, size_t *out_compressed_size, void *user_data, void (*function)(unsigned char *data, size_t data_size, MemoryStream *output_stream, void *user_data), size_t module_size, size_t module_alignment) +unsigned char* ModuledCompressionWrapper(const unsigned char *data, size_t data_size, size_t *out_compressed_size, void *user_data, void (*function)(const unsigned char *data, size_t data_size, MemoryStream *output_stream, void *user_data), size_t module_size, size_t module_alignment) { - MemoryStream *output_stream = MemoryStream_Create(0x1000, false); + size_t header; + size_t compressed_size, i; + unsigned char *out_buffer; + + MemoryStream output_stream; + MemoryStream_Create(&output_stream, CC_FALSE); - const unsigned short header = (unsigned short)((data_size % module_size) | ((data_size / module_size) << 12)); + header = (data_size % module_size) | ((data_size / module_size) << 12); - MemoryStream_WriteByte(output_stream, header >> 8); - MemoryStream_WriteByte(output_stream, header & 0xFF); + MemoryStream_WriteByte(&output_stream, (header >> 8) & 0xFF); + MemoryStream_WriteByte(&output_stream, (header >> 0) & 0xFF); - for (size_t compressed_size = 0, i = 0; i < data_size; i += module_size) + for (compressed_size = 0, i = 0; i < data_size; i += module_size) { - if (compressed_size % module_alignment) - for (unsigned int i = 0; i < module_alignment - (compressed_size % module_alignment); ++i) - MemoryStream_WriteByte(output_stream, 0); + size_t start; + + if (compressed_size % module_alignment != 0) + { + size_t j; + + for (j = 0; j < module_alignment - (compressed_size % module_alignment); ++j) + MemoryStream_WriteByte(&output_stream, 0); + } - const size_t start = MemoryStream_GetPosition(output_stream); - function(data + i, module_size < data_size - i ? module_size : data_size - i, output_stream, user_data); - compressed_size = MemoryStream_GetPosition(output_stream) - start; + start = MemoryStream_GetPosition(&output_stream); + function(data + i, module_size < data_size - i ? module_size : data_size - i, &output_stream, user_data); + compressed_size = MemoryStream_GetPosition(&output_stream) - start; } - unsigned char *out_buffer = MemoryStream_GetBuffer(output_stream); + out_buffer = MemoryStream_GetBuffer(&output_stream); - if (out_compressed_size) - *out_compressed_size = MemoryStream_GetPosition(output_stream); + if (out_compressed_size != NULL) + *out_compressed_size = MemoryStream_GetPosition(&output_stream); - MemoryStream_Destroy(output_stream); + MemoryStream_Destroy(&output_stream); return out_buffer; } diff --git a/AS/s3p2bin/clownlzss/common.h b/AS/s3p2bin/clownlzss/common.h index af92103c..b79853d1 100644 --- a/AS/s3p2bin/clownlzss/common.h +++ b/AS/s3p2bin/clownlzss/common.h @@ -1,8 +1,31 @@ -#pragma once +/* + (C) 2018-2021 Clownacy + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef COMMON_H +#define COMMON_H #include #include "memory_stream.h" -unsigned char* RegularWrapper(unsigned char *data, size_t data_size, size_t *compressed_size, void *user_data, void (*function)(unsigned char *data, size_t data_size, MemoryStream *output_stream, void *user_data)); -unsigned char* ModuledCompressionWrapper(unsigned char *data, size_t data_size, size_t *compressed_size, void *user_data, void (*function)(unsigned char *data, size_t data_size, MemoryStream *output_stream, void *user_data), size_t module_size, size_t module_alignment); +unsigned char* RegularWrapper(const unsigned char *data, size_t data_size, size_t *compressed_size, void *user_data, void (*function)(const unsigned char *data, size_t data_size, MemoryStream *output_stream, void *user_data)); +unsigned char* ModuledCompressionWrapper(const unsigned char *data, size_t data_size, size_t *compressed_size, void *user_data, void (*function)(const unsigned char *data, size_t data_size, MemoryStream *output_stream, void *user_data), size_t module_size, size_t module_alignment); + +#endif /* COMMON_H */ diff --git a/AS/s3p2bin/clownlzss/kosinski.c b/AS/s3p2bin/clownlzss/kosinski.c index a6e0997a..0af7fb91 100644 --- a/AS/s3p2bin/clownlzss/kosinski.c +++ b/AS/s3p2bin/clownlzss/kosinski.c @@ -1,10 +1,30 @@ +/* + (C) 2018-2021 Clownacy + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + #include "kosinski.h" -#ifndef __cplusplus -#include -#endif +#include #include +#include "clowncommon.h" + #include "clownlzss.h" #include "common.h" #include "memory_stream.h" @@ -14,30 +34,35 @@ typedef struct KosinskiInstance { MemoryStream *output_stream; - MemoryStream *match_stream; + MemoryStream match_stream; - unsigned short descriptor; + unsigned int descriptor; unsigned int descriptor_bits_remaining; } KosinskiInstance; static void FlushData(KosinskiInstance *instance) { - MemoryStream_WriteByte(instance->output_stream, instance->descriptor & 0xFF); - MemoryStream_WriteByte(instance->output_stream, instance->descriptor >> 8); + size_t match_buffer_size; + unsigned char *match_buffer; + + MemoryStream_WriteByte(instance->output_stream, (instance->descriptor >> 0) & 0xFF); + MemoryStream_WriteByte(instance->output_stream, (instance->descriptor >> 8) & 0xFF); - const size_t match_buffer_size = MemoryStream_GetPosition(instance->match_stream); - unsigned char *match_buffer = MemoryStream_GetBuffer(instance->match_stream); + match_buffer_size = MemoryStream_GetPosition(&instance->match_stream); + match_buffer = MemoryStream_GetBuffer(&instance->match_stream); - MemoryStream_WriteBytes(instance->output_stream, match_buffer, match_buffer_size); + MemoryStream_Write(instance->output_stream, match_buffer, 1, match_buffer_size); } -static void PutMatchByte(KosinskiInstance *instance, unsigned char byte) +static void PutMatchByte(KosinskiInstance *instance, unsigned int byte) { - MemoryStream_WriteByte(instance->match_stream, byte); + MemoryStream_WriteByte(&instance->match_stream, byte); } -static void PutDescriptorBit(KosinskiInstance *instance, bool bit) +static void PutDescriptorBit(KosinskiInstance *instance, cc_bool_fast bit) { + assert(bit == 0 || bit == 1); + --instance->descriptor_bits_remaining; instance->descriptor >>= 1; @@ -50,31 +75,31 @@ static void PutDescriptorBit(KosinskiInstance *instance, bool bit) FlushData(instance); instance->descriptor_bits_remaining = TOTAL_DESCRIPTOR_BITS; - MemoryStream_Rewind(instance->match_stream); + MemoryStream_Rewind(&instance->match_stream); } } -static void DoLiteral(unsigned char value, void *user) +static void DoLiteral(const unsigned char *value, void *user) { KosinskiInstance *instance = (KosinskiInstance*)user; PutDescriptorBit(instance, 1); - PutMatchByte(instance, value); + PutMatchByte(instance, value[0]); } static void DoMatch(size_t distance, size_t length, size_t offset, void *user) { - (void)offset; - KosinskiInstance *instance = (KosinskiInstance*)user; - if (length >= 2 && length <= 5 && distance <= 256) + (void)offset; + + if (length >= 2 && length <= 5 && distance <= 0x100) { PutDescriptorBit(instance, 0); PutDescriptorBit(instance, 0); - PutDescriptorBit(instance, (length - 2) & 2); - PutDescriptorBit(instance, (length - 2) & 1); - PutMatchByte(instance, (unsigned char)-distance); + PutDescriptorBit(instance, !!((length - 2) & 2)); + PutDescriptorBit(instance, !!((length - 2) & 1)); + PutMatchByte(instance, -distance & 0xFF); } else if (length >= 3 && length <= 9) { @@ -83,31 +108,31 @@ static void DoMatch(size_t distance, size_t length, size_t offset, void *user) PutMatchByte(instance, -distance & 0xFF); PutMatchByte(instance, ((-distance >> (8 - 3)) & 0xF8) | ((length - 2) & 7)); } - else //if (length >= 3) + else /*if (length >= 3)*/ { PutDescriptorBit(instance, 0); PutDescriptorBit(instance, 1); PutMatchByte(instance, -distance & 0xFF); PutMatchByte(instance, (-distance >> (8 - 3)) & 0xF8); - PutMatchByte(instance, (unsigned char)(length - 1)); + PutMatchByte(instance, length - 1); } } -static unsigned int GetMatchCost(size_t distance, size_t length, void *user) +static size_t GetMatchCost(size_t distance, size_t length, void *user) { (void)user; - if (length >= 2 && length <= 5 && distance <= 256) - return 2 + 2 + 8; // Descriptor bits, length bits, offset byte + if (length >= 2 && length <= 5 && distance <= 0x100) + return 2 + 2 + 8; /* Descriptor bits, length bits, offset byte */ else if (length >= 3 && length <= 9) - return 2 + 16; // Descriptor bits, offset/length bytes + return 2 + 16; /* Descriptor bits, offset/length bytes */ else if (length >= 3) - return 2 + 16 + 8; // Descriptor bits, offset bytes, length byte + return 2 + 16 + 8; /* Descriptor bits, offset bytes, length byte */ else - return 0; // In the event a match cannot be compressed + return 0; /* In the event a match cannot be compressed */ } -static void FindExtraMatches(unsigned char *data, size_t data_size, size_t offset, ClownLZSS_GraphEdge *node_meta_array, void *user) +static void FindExtraMatches(const unsigned char *data, size_t data_size, size_t offset, ClownLZSS_GraphEdge *node_meta_array, void *user) { (void)data; (void)data_size; @@ -116,20 +141,22 @@ static void FindExtraMatches(unsigned char *data, size_t data_size, size_t offse (void)user; } -static CLOWNLZSS_MAKE_COMPRESSION_FUNCTION(CompressData, unsigned char, 0x100, 0x2000, FindExtraMatches, 1 + 8, DoLiteral, GetMatchCost, DoMatch) +static CLOWNLZSS_MAKE_COMPRESSION_FUNCTION(CompressData, 1, 0x100, 0x2000, FindExtraMatches, 1 + 8, DoLiteral, GetMatchCost, DoMatch) -static void KosinskiCompressStream(unsigned char *data, size_t data_size, MemoryStream *output_stream, void *user) +static void KosinskiCompressStream(const unsigned char *data, size_t data_size, MemoryStream *output_stream, void *user) { + KosinskiInstance instance; + (void)user; - KosinskiInstance instance; instance.output_stream = output_stream; - instance.match_stream = MemoryStream_Create(0x10, true); + MemoryStream_Create(&instance.match_stream, CC_TRUE); + instance.descriptor = 0; instance.descriptor_bits_remaining = TOTAL_DESCRIPTOR_BITS; CompressData(data, data_size, &instance); - // Terminator match + /* Terminator match */ PutDescriptorBit(&instance, 0); PutDescriptorBit(&instance, 1); PutMatchByte(&instance, 0x00); @@ -139,15 +166,15 @@ static void KosinskiCompressStream(unsigned char *data, size_t data_size, Memory instance.descriptor >>= instance.descriptor_bits_remaining; FlushData(&instance); - MemoryStream_Destroy(instance.match_stream); + MemoryStream_Destroy(&instance.match_stream); } -unsigned char* KosinskiCompress(unsigned char *data, size_t data_size, size_t *compressed_size) +unsigned char* ClownLZSS_KosinskiCompress(const unsigned char *data, size_t data_size, size_t *compressed_size) { return RegularWrapper(data, data_size, compressed_size, NULL, KosinskiCompressStream); } -unsigned char* ModuledKosinskiCompress(unsigned char *data, size_t data_size, size_t *compressed_size, size_t module_size) +unsigned char* ClownLZSS_ModuledKosinskiCompress(const unsigned char *data, size_t data_size, size_t *compressed_size, size_t module_size) { return ModuledCompressionWrapper(data, data_size, compressed_size, NULL, KosinskiCompressStream, module_size, 0x10); } diff --git a/AS/s3p2bin/clownlzss/kosinski.h b/AS/s3p2bin/clownlzss/kosinski.h index 99c0ef48..7e392c9d 100644 --- a/AS/s3p2bin/clownlzss/kosinski.h +++ b/AS/s3p2bin/clownlzss/kosinski.h @@ -1,6 +1,29 @@ -#pragma once +/* + (C) 2018-2021 Clownacy + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef CLOWNLZSS_KOSINSKI_H +#define CLOWNLZSS_KOSINSKI_H #include -unsigned char* KosinskiCompress(unsigned char *data, size_t data_size, size_t *compressed_size); -unsigned char* ModuledKosinskiCompress(unsigned char *data, size_t data_size, size_t *compressed_size, size_t module_size); +unsigned char* ClownLZSS_KosinskiCompress(const unsigned char *data, size_t data_size, size_t *compressed_size); +unsigned char* ClownLZSS_ModuledKosinskiCompress(const unsigned char *data, size_t data_size, size_t *compressed_size, size_t module_size); + +#endif /* CLOWNLZSS_KOSINSKI_H */ diff --git a/AS/s3p2bin/memory_stream.c b/AS/s3p2bin/memory_stream.c index 6a8cc40b..b4869f58 100644 --- a/AS/s3p2bin/memory_stream.c +++ b/AS/s3p2bin/memory_stream.c @@ -1,69 +1,107 @@ +/* + (C) 2018-2021 Clownacy + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + #include "memory_stream.h" -#ifndef __cplusplus -#include -#endif +#include #include #include #include -struct MemoryStream -{ - unsigned char *buffer; - size_t position; - size_t end; - size_t size; - size_t growth; - bool free_buffer_when_destroyed; -}; +#include "clowncommon.h" -static void ResizeIfNeeded(MemoryStream *memory_stream, size_t minimum_needed_size) +static cc_bool_fast ResizeIfNeeded(MemoryStream *memory_stream, size_t minimum_needed_size) { if (minimum_needed_size > memory_stream->size) { - const size_t new_size = minimum_needed_size + memory_stream->growth - (minimum_needed_size % memory_stream->growth); - memory_stream->buffer = (unsigned char*)realloc(memory_stream->buffer, new_size); + unsigned char *buffer; + + size_t new_size = 1; + while (new_size < minimum_needed_size) + new_size <<= 1; + + buffer = (unsigned char*)realloc(memory_stream->buffer, new_size); + + if (buffer == NULL) + return CC_FALSE; + + memory_stream->buffer = buffer; memset(memory_stream->buffer + memory_stream->size, 0, new_size - memory_stream->size); memory_stream->size = new_size; } if (minimum_needed_size > memory_stream->end) memory_stream->end = minimum_needed_size; + + return CC_TRUE; } -MemoryStream* MemoryStream_Create(size_t growth, bool free_buffer_when_destroyed) +void MemoryStream_Create(MemoryStream *memory_stream, cc_bool_fast free_buffer_when_destroyed) { - MemoryStream *memory_stream = (MemoryStream*)malloc(sizeof(MemoryStream)); memory_stream->buffer = NULL; memory_stream->position = 0; memory_stream->end = 0; memory_stream->size = 0; - memory_stream->growth = growth; memory_stream->free_buffer_when_destroyed = free_buffer_when_destroyed; - return memory_stream; } void MemoryStream_Destroy(MemoryStream *memory_stream) { if (memory_stream->free_buffer_when_destroyed) free(memory_stream->buffer); - - free(memory_stream); } -void MemoryStream_WriteByte(MemoryStream *memory_stream, unsigned char byte) +cc_bool_fast MemoryStream_WriteByte(MemoryStream *memory_stream, unsigned int byte) { - ResizeIfNeeded(memory_stream, memory_stream->position + 1); + assert(byte < 0x100); + + if (!ResizeIfNeeded(memory_stream, memory_stream->position + 1)) + return CC_FALSE; memory_stream->buffer[memory_stream->position++] = byte; + + return CC_TRUE; +} + +cc_bool_fast MemoryStream_Write(MemoryStream *memory_stream, const void *data, size_t size, size_t count) +{ + if (!ResizeIfNeeded(memory_stream, memory_stream->position + size * count)) + return CC_FALSE; + + memcpy(&memory_stream->buffer[memory_stream->position], data, size * count); + memory_stream->position += size * count; + + return CC_TRUE; } -void MemoryStream_WriteBytes(MemoryStream *memory_stream, unsigned char *bytes, size_t length) +size_t MemoryStream_Read(MemoryStream *memory_stream, void *output, size_t size, size_t count) { - ResizeIfNeeded(memory_stream, memory_stream->position + length); + const size_t elements_remaining = (memory_stream->end - memory_stream->position) / size; + + if (count > elements_remaining) + count = elements_remaining; - memcpy(&memory_stream->buffer[memory_stream->position], bytes, length); - memory_stream->position += length; + memcpy(output, &memory_stream->buffer[memory_stream->position], size * count); + memory_stream->position += size * count; + + return count; } unsigned char* MemoryStream_GetBuffer(MemoryStream *memory_stream) @@ -76,23 +114,64 @@ size_t MemoryStream_GetPosition(MemoryStream *memory_stream) return memory_stream->position; } -void MemoryStream_SetPosition(MemoryStream *memory_stream, ptrdiff_t offset, enum MemoryStream_Origin origin) +cc_bool_fast MemoryStream_SetPosition(MemoryStream *memory_stream, ptrdiff_t offset, enum MemoryStream_Origin origin) { switch (origin) { case MEMORYSTREAM_START: memory_stream->position = (size_t)offset; break; + case MEMORYSTREAM_CURRENT: memory_stream->position = (size_t)(memory_stream->position + offset); break; + case MEMORYSTREAM_END: memory_stream->position = (size_t)(memory_stream->end + offset); break; + + default: + return CC_FALSE; } + + return CC_TRUE; } void MemoryStream_Rewind(MemoryStream *memory_stream) { memory_stream->position = 0; } + +void ROMemoryStream_Create(ROMemoryStream *ro_memory_stream, const void *data, size_t size) +{ + ro_memory_stream->memory_stream.buffer = (unsigned char*)data; + ro_memory_stream->memory_stream.position = 0; + ro_memory_stream->memory_stream.end = size; + ro_memory_stream->memory_stream.size = size; + ro_memory_stream->memory_stream.free_buffer_when_destroyed = CC_FALSE; +} + +void ROMemoryStream_Destroy(ROMemoryStream *ro_memory_stream) +{ + MemoryStream_Destroy(&ro_memory_stream->memory_stream); +} + +size_t ROMemoryStream_Read(ROMemoryStream *ro_memory_stream, void *output, size_t size, size_t count) +{ + return MemoryStream_Read(&ro_memory_stream->memory_stream, output, size, count); +} + +size_t ROMemoryStream_GetPosition(ROMemoryStream *ro_memory_stream) +{ + return MemoryStream_GetPosition(&ro_memory_stream->memory_stream); +} + +cc_bool_fast ROMemoryStream_SetPosition(ROMemoryStream *ro_memory_stream, ptrdiff_t offset, enum MemoryStream_Origin origin) +{ + return MemoryStream_SetPosition(&ro_memory_stream->memory_stream, offset, origin); +} + +void ROMemoryStream_Rewind(ROMemoryStream *ro_memory_stream) +{ + MemoryStream_Rewind(&ro_memory_stream->memory_stream); +} diff --git a/AS/s3p2bin/memory_stream.h b/AS/s3p2bin/memory_stream.h index 7faee5ed..44c39b88 100644 --- a/AS/s3p2bin/memory_stream.h +++ b/AS/s3p2bin/memory_stream.h @@ -1,11 +1,43 @@ -#pragma once +/* + (C) 2018-2021 Clownacy + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef MEMORY_STREAM_H +#define MEMORY_STREAM_H -#ifndef __cplusplus -#include -#endif #include -typedef struct MemoryStream MemoryStream; +#include "clowncommon.h" + +typedef struct MemoryStream +{ + unsigned char *buffer; + size_t position; + size_t end; + size_t size; + cc_bool_small free_buffer_when_destroyed; +} MemoryStream; + +typedef struct ROMemoryStream +{ + MemoryStream memory_stream; +} ROMemoryStream; enum MemoryStream_Origin { @@ -14,11 +46,29 @@ enum MemoryStream_Origin MEMORYSTREAM_END }; -MemoryStream* MemoryStream_Create(size_t growth, bool free_buffer_when_destroyed); +#ifdef __cplusplus +extern "C" { +#endif + +void MemoryStream_Create(MemoryStream *memory_stream, cc_bool_fast free_buffer_when_destroyed); void MemoryStream_Destroy(MemoryStream *memory_stream); -void MemoryStream_WriteByte(MemoryStream *memory_stream, unsigned char byte); -void MemoryStream_WriteBytes(MemoryStream *memory_stream, unsigned char *bytes, size_t byte_count); +cc_bool_fast MemoryStream_WriteByte(MemoryStream *memory_stream, unsigned int byte); +cc_bool_fast MemoryStream_Write(MemoryStream *memory_stream, const void *data, size_t size, size_t count); +size_t MemoryStream_Read(MemoryStream *memory_stream, void *output, size_t size, size_t count); unsigned char* MemoryStream_GetBuffer(MemoryStream *memory_stream); size_t MemoryStream_GetPosition(MemoryStream *memory_stream); -void MemoryStream_SetPosition(MemoryStream *memory_stream, ptrdiff_t offset, enum MemoryStream_Origin origin); +cc_bool_fast MemoryStream_SetPosition(MemoryStream *memory_stream, ptrdiff_t offset, enum MemoryStream_Origin origin); void MemoryStream_Rewind(MemoryStream *memory_stream); + +void ROMemoryStream_Create(ROMemoryStream *ro_memory_stream, const void *data, size_t size); +void ROMemoryStream_Destroy(ROMemoryStream *ro_memory_stream); +size_t ROMemoryStream_Read(ROMemoryStream *ro_memory_stream, void *output, size_t size, size_t count); +size_t ROMemoryStream_GetPosition(ROMemoryStream *ro_memory_stream); +cc_bool_fast ROMemoryStream_SetPosition(ROMemoryStream *ro_memory_stream, ptrdiff_t offset, enum MemoryStream_Origin origin); +void ROMemoryStream_Rewind(ROMemoryStream *ro_memory_stream); + +#ifdef __cplusplus +} +#endif + +#endif /* MEMORY_STREAM_H */ diff --git a/AS/s3p2bin/s3p2bin.c b/AS/s3p2bin/s3p2bin.c index 24c7d925..b07903c1 100644 --- a/AS/s3p2bin/s3p2bin.c +++ b/AS/s3p2bin/s3p2bin.c @@ -230,9 +230,9 @@ bool buildRom(FILE* from, FILE* to) unsigned char *compressed_buffer; if (accurate_compression) - compressedLength = AccurateKosinskiCompress(uncompressed_buffer, length, &compressed_buffer); + compressedLength = KosinskiCompress(uncompressed_buffer, length, &compressed_buffer); else - compressed_buffer = KosinskiCompress(uncompressed_buffer, length, &compressedLength); + compressed_buffer = ClownLZSS_KosinskiCompress(uncompressed_buffer, length, &compressedLength); free(uncompressed_buffer); fwrite(compressed_buffer, compressedLength, 1, to); From c4e56ac40522bb76f70dba3be07fd5a64aadd9c8 Mon Sep 17 00:00:00 2001 From: Clownacy Date: Sun, 17 Oct 2021 17:25:35 +0100 Subject: [PATCH 22/72] Recompile the 64-bit Linux s3p2bin Since I'm an Arch Linux user, it would normally be a bad idea for me to share binaries since they might expect a newer glibc than other distros provide. To work around this, I've compiled s3p2bin statically using the musl C standard library. This produces a more-portable binary that does not rely on a particular version of glibc. --- AS/Linux/s3p2bin | Bin 18608 -> 46728 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/AS/Linux/s3p2bin b/AS/Linux/s3p2bin index 904ea99ae98b9c6b405b2b06e470753a92639768..5da4347ed4151795d2af524c3e6beded56bc7c49 100755 GIT binary patch literal 46728 zcmeFadwf$>);E6AHZ(0QCtNC3L4pQt2hdhwY%G-?NMJ`(ta25+P)jQ)H`}BI1>1UB z=;4q@=6RhN=km-rK67ziXGUk<5eh0K4KxLBZBZ$rP*C86sFaIsxi!D<+9zp?&O9^k z@AG;8v)b#HbF2H*v^Z!o6&<)9c869c5!R2Bu6HChN1RSPYTs`FD@0w z*ag9*e9e?2+JBV^LY>cjFI98D%Dj`GzyMTGs~7y1$$1&*To7w}aOFm7n4TI5(2%;^ ziZV|fQ%0XdEVMQfi7;>8qv!-^_$ko9)U*&vSY4Y~TTeZxlUsSZORQZ(X>Z;cz4kI* zJMT>@^-likS)lW`z=u-_vO1qwdpmEO_kv#BO2u_3W=h=x8kDL$k18%D!j#`-Axpaj z#d!+ga}U8Nuj-@3V-(cUl2Iu4jNnB+y+~Vy?rOdyO@<@;3-n?^FI4yNExe5q&^{VR z=o0H@=p$(xqUj$ZEp9zmeW_Zk9TzVMHN7<)XIY5XVW!uhy!uj&xG{d1KD?@TDJgrj z>b~A95c7X-!jS$Bb5cMnMcSSe=IL~#=k+(b7ttN)l;+~^FxitdLx2@`O14k!qU&?b z{R1q9M0imrKheUm{EO%Kn#5z0M2EYQ(OA2K_PHm_)VFz+w(KtE z9ewF981scpbk??$bWpTFbx1bV6`~)ZG+1Y+P+-Bj3?9*|T!)>Bs*Gh6jVd>#0s z*8ZFH^h-!P#I0XS)t9l1pCBdGTmjUASo;MP)qN$_uA|)Q%UH=Df=qa8kO1$vN!uEW z?$%yKRPuijT}vrxxArsSIFinzs=p)Mp47o!1nDwBs8#hhb0do7EJb;#Qa1yoVr?}@ zhRJVJRY9y@fRrR(xnHc^08pZ+(XIyq5T`oKJ3pS;8pX{&8$x++@VpoXwM8I%ySVMo z)U``}gD70*2M%%D@dhG&mvX_SbW66~oV@JfeI3r?^Gtbzu&WgUi%j*>azv@G8$_s^fGls`+fQ@qGcHFz2GHfz zV>@Wrw49gi4d#V-RbTh`_yh-#o+nd*ew^b53k-;0!-*WO>4H z4E$qXZKM01>bE&jx~14cc=PU9$6G#wmfxDp?=1Rc{tF={^S|E(p)VuI3i-r!{9%k2 zVq?7EGd0%#m_`t5&qkpiiUt^rkleR#fb?{vwMVdeSp47d#aB*hmZdb{h3HD2U`o&l zenhyh&dbH3QH0m|l#JZiSgo3weWNkh1Th;S=(6Jk| zjo}?HArK0b^9970PoOiY0UHS%zsqHFyi%UvQXH=^b^VJ7UveqOrZpwpDHM2D<8(by z@v!t3)eXlN7{0)1Th;@dFy+T4jO0@4%rxMifKz@Lo#We&mlY^S!MYU3i_Xke=AB}8 zDf_hP`GotD*ZEK?Z|kyo`1qbzFlb_Dfp>-h0Js#-O9i%$iU+S6d-p#YJ4+v%sO_JQ z`_9zwj+^UvrGn3!=FBG?MW0%*d;bcbmNOI-vAzN1FgJxz%a^)(eKj!qJE8@q7{A&} z)RKu}P>OcaPSpmoiIX@8_M(n9p@^!S)OMqaxa|!h#rQXfIB24d$iM=GKhIc45~R6L02_L>94qT#PFOEgWU&Qw&sdKPQ~w3 zt}yRRgUfcrJqtTJ{1*sQzxM$1^HJNW?B>LI3dqc+^Hd3H>_)pc` zR*lIQ28kPA0^;YIuUi+0)Q86Q<X8WVC44Y7N4sMQ zb)Y99(HCQPbnc-_r?AZ9(=H>15<_YJCd z6}l=5AqB7vAi_b2I+gcB+b%^Ssy}( z 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 literal 18608 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 PS*pX&lZmKvJx=~_L*N-b From 9ceb3ebff4caf4b2ad00d6029db6430cbb3a49ea Mon Sep 17 00:00:00 2001 From: Clownacy Date: Sun, 17 Oct 2021 17:32:33 +0100 Subject: [PATCH 23/72] Remove a leftover debug print in the build script (From the comments on 547d6150fd909da78c3cc6a7e4a152e9e10e1fc8) Clownacy Was this an accidental inclusion? flamewing Yes, I was debugging the generated command line to make sure that the path given to -i was valid, and forgot to remove it after. --- Build Scripts/build.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Build Scripts/build.py b/Build Scripts/build.py index 2ab05052..c5c21b2f 100755 --- a/Build Scripts/build.py +++ b/Build Scripts/build.py @@ -88,7 +88,7 @@ def build(targetName, def0, def1, accurate): # Input asm file assembleCommand.append("sonic3k.asm"); - print(" Assembling .p file", assembleCommand); + print(" Assembling .p file"); assembleProcess = subprocess.Popen(assembleCommand, stdout=subprocess.PIPE, stderr=subprocess.PIPE) output, errors = assembleProcess.communicate() From 3ec137afec85634a56109791dc510ed0c5e84b81 Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Tue, 9 Nov 2021 18:20:37 +0000 Subject: [PATCH 24/72] Update SonLVL definitions --- SonLVL INI Files/CNZ/SpiralTube.cs | 3 +-- SonLVL INI Files/CNZ/TriangleBumpers.cs | 2 ++ SonLVL INI Files/Common/SinkingMud.cs | 2 ++ SonLVL INI Files/DEZ/ConveyorBelt.cs | 1 + SonLVL INI Files/DEZ/GravityTube.cs | 2 +- SonLVL INI Files/FBZ/WireCage.cs | 1 + SonLVL INI Files/LBZ/RollingDrum.cs | 2 ++ SonLVL INI Files/LRZ/RockSprite.cs | 3 ++- SonLVL INI Files/SOZ/CapsuleArtLoadTrigger.cs | 2 +- SonLVL INI Files/SOZ/Quicksand.cs | 3 ++- 10 files changed, 15 insertions(+), 6 deletions(-) diff --git a/SonLVL INI Files/CNZ/SpiralTube.cs b/SonLVL INI Files/CNZ/SpiralTube.cs index e8ff2b8d..fd5a49ec 100644 --- a/SonLVL INI Files/CNZ/SpiralTube.cs +++ b/SonLVL INI Files/CNZ/SpiralTube.cs @@ -93,8 +93,7 @@ public override Sprite GetDebugOverlay(ObjectEntry obj) public override Rectangle GetBounds(ObjectEntry obj) { - if (obj.SubType > 2) - return new Rectangle(obj.X - 8, obj.Y - 7, 16, 14); + if (obj.SubType > 2) return base.GetBounds(obj); return new Rectangle(obj.X - 64, obj.Y - 16, 128, 32); } diff --git a/SonLVL INI Files/CNZ/TriangleBumpers.cs b/SonLVL INI Files/CNZ/TriangleBumpers.cs index 8b74e758..8a9e8bae 100644 --- a/SonLVL INI Files/CNZ/TriangleBumpers.cs +++ b/SonLVL INI Files/CNZ/TriangleBumpers.cs @@ -55,6 +55,8 @@ public override Sprite GetDebugOverlay(ObjectEntry obj) public override Rectangle GetBounds(ObjectEntry obj) { + if (obj.SubType == 0) return base.GetBounds(obj); + return new Rectangle(obj.X - obj.SubType, obj.Y - 8, obj.SubType * 2, 16); } diff --git a/SonLVL INI Files/Common/SinkingMud.cs b/SonLVL INI Files/Common/SinkingMud.cs index fff853fd..e9f89eaa 100644 --- a/SonLVL INI Files/Common/SinkingMud.cs +++ b/SonLVL INI Files/Common/SinkingMud.cs @@ -73,6 +73,8 @@ public override Sprite GetDebugOverlay(ObjectEntry obj) public override Rectangle GetBounds(ObjectEntry obj) { var width = obj.SubType << 4; + if (width == 0) return base.GetBounds(obj); + return new Rectangle(obj.X - (width / 2), obj.Y - (height / 2), width, height); } diff --git a/SonLVL INI Files/DEZ/ConveyorBelt.cs b/SonLVL INI Files/DEZ/ConveyorBelt.cs index 9ea5daec..18322f17 100644 --- a/SonLVL INI Files/DEZ/ConveyorBelt.cs +++ b/SonLVL INI Files/DEZ/ConveyorBelt.cs @@ -63,6 +63,7 @@ public override Sprite GetDebugOverlay(ObjectEntry obj) public override Rectangle GetBounds(ObjectEntry obj) { var width = (obj.SubType & 0x7F) << 4; + if (width == 0) return base.GetBounds(obj); return new Rectangle(obj.X - (width / 2), obj.Y - 16, width, 32); } diff --git a/SonLVL INI Files/DEZ/GravityTube.cs b/SonLVL INI Files/DEZ/GravityTube.cs index cd356542..aba54c11 100644 --- a/SonLVL INI Files/DEZ/GravityTube.cs +++ b/SonLVL INI Files/DEZ/GravityTube.cs @@ -64,7 +64,7 @@ public override Sprite GetDebugOverlay(ObjectEntry obj) public override Rectangle GetBounds(ObjectEntry obj) { - if ((obj.SubType & 0x3F) == 0) return new Rectangle(obj.X - 8, obj.Y - 7, 16, 14); + if ((obj.SubType & 0x3F) == 0) return base.GetBounds(obj); var length = (obj.SubType & 0x3F) << 4; if (obj.SubType >= 0x80) diff --git a/SonLVL INI Files/FBZ/WireCage.cs b/SonLVL INI Files/FBZ/WireCage.cs index 9306dc7a..506567f6 100644 --- a/SonLVL INI Files/FBZ/WireCage.cs +++ b/SonLVL INI Files/FBZ/WireCage.cs @@ -73,6 +73,7 @@ public override Sprite GetDebugOverlay(ObjectEntry obj) public override Rectangle GetBounds(ObjectEntry obj) { var length = (obj.SubType & 0x7F) << 4; + if (length == 0) return base.GetBounds(obj); if (obj.SubType < 0x80) return new Rectangle(obj.X - (length / 2), obj.Y - 64, length, 128); diff --git a/SonLVL INI Files/LBZ/RollingDrum.cs b/SonLVL INI Files/LBZ/RollingDrum.cs index c657113c..d13168d4 100644 --- a/SonLVL INI Files/LBZ/RollingDrum.cs +++ b/SonLVL INI Files/LBZ/RollingDrum.cs @@ -57,6 +57,8 @@ public override Sprite GetDebugOverlay(ObjectEntry obj) public override Rectangle GetBounds(ObjectEntry obj) { var width = obj.SubType << 1; + if (width == 0) return base.GetBounds(obj); + return new Rectangle(obj.X - (width / 2), obj.Y - 64, width, 128); } diff --git a/SonLVL INI Files/LRZ/RockSprite.cs b/SonLVL INI Files/LRZ/RockSprite.cs index 93985a4d..bf2b4af8 100644 --- a/SonLVL INI Files/LRZ/RockSprite.cs +++ b/SonLVL INI Files/LRZ/RockSprite.cs @@ -6,7 +6,8 @@ namespace S3KObjectDefinitions.LRZ { - class RockSprite : ExtraObjEntry + [Serializable] + public class RockSprite : ExtraObjEntry { private static Sprite[] sprites; diff --git a/SonLVL INI Files/SOZ/CapsuleArtLoadTrigger.cs b/SonLVL INI Files/SOZ/CapsuleArtLoadTrigger.cs index efacf948..a82f5dda 100644 --- a/SonLVL INI Files/SOZ/CapsuleArtLoadTrigger.cs +++ b/SonLVL INI Files/SOZ/CapsuleArtLoadTrigger.cs @@ -61,7 +61,7 @@ public override Rectangle GetBounds(ObjectEntry obj) { if (obj.SubType == 0) return new Rectangle(obj.X - 16, obj.Y - 64, 32, 128); if (obj.SubType == 4) return new Rectangle(obj.X - 16, obj.Y - 128, 32, 256); - return new Rectangle(obj.X - 8, obj.Y - 7, 16, 14); + return base.GetBounds(obj); } public override void Init(ObjectData data) diff --git a/SonLVL INI Files/SOZ/Quicksand.cs b/SonLVL INI Files/SOZ/Quicksand.cs index 32462494..f5f39aa5 100644 --- a/SonLVL INI Files/SOZ/Quicksand.cs +++ b/SonLVL INI Files/SOZ/Quicksand.cs @@ -64,8 +64,9 @@ public override Rectangle GetBounds(ObjectEntry obj) { var direction = obj.SubType & 0xC0; var width = (obj.SubType & 0x3F) << 4; - var height = width; + if (width == 0) return base.GetBounds(obj); + var height = width; if (direction == 0x00) width = 32; else if (direction == 0x40) height = 32; else if (direction == 0x80) width = 64; From d6a2818b69a3defa39f5edc301e84ea2fa09087f Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Tue, 9 Nov 2021 20:27:41 +0000 Subject: [PATCH 25/72] Update split files --- Build Scripts/s3.txt | 27 +++++++++++++++++++++++++++ Build Scripts/sk.txt | 8 ++++---- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/Build Scripts/s3.txt b/Build Scripts/s3.txt index 37dcd339..73667af7 100644 --- a/Build Scripts/s3.txt +++ b/Build Scripts/s3.txt @@ -36,6 +36,8 @@ #split 0x0000BCB6,0x0000BCD6,General\Save Menu\Palettes\Zone Card 8 S3.bin #split 0x000236AC,0x000236CC,General\Special Stage\Palettes\Eosian Spheres.bin #split 0x0002D39E,0x0002D41E,General\Special Stage\Palettes\Results S3.bin +#split 0x0003C05A,0x0003C07A,Levels\AIZ\Palettes\Battleship.bin +#split 0x0003C07A,0x0003C096,Levels\AIZ\Palettes\Boss Small.bin #split 0x0003F698,0x0003F718,General\Sprites\Continue\Palette S3.bin #split 0x0004160A,0x0004164A,General\Ending\Palettes\S3 Ending.bin #split 0x0004164A,0x0004168A,General\Ending\Palettes\S3 Logo.bin @@ -153,6 +155,7 @@ #split 0x0015D794,0x0015D7FC,General\Sprites\Level Misc\Horizontal Spikes.bin #split 0x0015D7FC,0x0015D8A2,General\Sprites\Enemy Misc\Enemy Points.bin #split 0x0015D8A2,0x0015DA5A,General\Sprites\Starpost\Starpost.bin +#split 0x0015EEB4,0x0015EFFC,General\Sprites\S2Menu\Tails Continue Icon.bin #split 0x00164BF2,0x00165260,Levels\AIZ\Nemesis Art\Miniboss.bin #split 0x001671A2,0x0016732A,Levels\AIZ\Nemesis Art\Miniboss Small.bin #split 0x00168400,0x0016929E,Levels\HCZ\Nemesis Art\Miniboss.bin @@ -332,6 +335,30 @@ #split 0x000DFABE,0x000DFBFE,Sound\Music\Countdown.bin #split 0x000DFBFE,0x000DFEAC,Sound\Music\Sonic 3\Sonic 3 Game Complete.bin +/* Uncompressed plane mappings */ +#split 0x0000A130,0x0000A164,General\Competition Menu\Uncompressed Map\Numbers.bin +#split 0x0000AE7C,0x0000AEA4,General\Competition Menu\Uncompressed Map\Results Letters.bin +#split 0x0000AEA4,0x0000AEF4,General\Competition Menu\Uncompressed Map\Results Dividers.bin +#split 0x0000AEF4,0x0000AF08,General\Competition Menu\Uncompressed Map\Results TOTAL.bin +#split 0x0000AF08,0x0000AF10,General\Competition Menu\Uncompressed Map\Results Win.bin +#split 0x0000AF10,0x0000AF18,General\Competition Menu\Uncompressed Map\Results Lose.bin +#split 0x0000AF18,0x0000AF20,General\Competition Menu\Uncompressed Map\Results Tie.bin +#split 0x0000B326,0x0000B38A,General\Competition Menu\Uncompressed Map\LAP.bin +#split 0x0000B38A,0x0000B3A6,General\Competition Menu\Uncompressed Map\RECORDS.bin +#split 0x0000B3A6,0x0000B3D6,General\Competition Menu\Uncompressed Map\1ST 2ND 3RD.bin +#split 0x0000B3EA,0x0000B41E,General\Competition Menu\Uncompressed Map\AZURE LAKE.bin +#split 0x0000B41E,0x0000B452,General\Competition Menu\Uncompressed Map\BALLOON PARK.bin +#split 0x0000B452,0x0000B486,General\Competition Menu\Uncompressed Map\CHROME GADGET.bin +#split 0x0000B486,0x0000B4BA,General\Competition Menu\Uncompressed Map\DESERT PALACE.bin +#split 0x0000B4BA,0x0000B4EE,General\Competition Menu\Uncompressed Map\ENDLESS MINE.bin +#split 0x0019F150,0x0019F228,General\Competition Menu\Uncompressed Map\Time Border.bin +#split 0x0019F228,0x0019F24C,General\Competition Menu\Uncompressed Map\Time Text.bin +#split 0x001A20DE,0x001A216A,General\Save Menu\Uncompressed Map\NEW.bin +#split 0x001A217A,0x001A2206,General\Save Menu\Uncompressed Map\Static 1.bin +#split 0x001A2206,0x001A2292,General\Save Menu\Uncompressed Map\Static 2.bin +#split 0x001A2292,0x001A231E,General\Save Menu\Uncompressed Map\Static 3.bin +#split 0x001A231E,0x001A23AA,General\Save Menu\Uncompressed Map\Static 4.bin + /* Enigma Mappings */ #split 0x0000729C,0x000072EE,General\Sprites\S2Menu\Enigma Map\Level Select 2P.bin #split 0x000072EE,0x0000731A,General\Sprites\S2Menu\Enigma Map\Options Screen.bin diff --git a/Build Scripts/sk.txt b/Build Scripts/sk.txt index f117e2d4..d7797ef4 100644 --- a/Build Scripts/sk.txt +++ b/Build Scripts/sk.txt @@ -6,7 +6,6 @@ /* Miscellaneous */ #split 0x00001D64,0x00001FE4,Levels\Misc\sine.bin #split 0x00002040,0x00002142,Levels\Misc\arctan.bin -#split 0x00005F82,0x00005FB2,Sound\Music\Music playlist.bin #split 0x00006D2C,0x00006D6C,Levels\Misc\StartingWaterHeights.bin #split 0x0001CBBE,0x0001CCAE,Levels\LRZ\Misc\Rock Sprite Attribute Data.bin #split 0x000B2E36,0x000B6946,General\Special Stage\Layout\Perspective Maps.bin @@ -79,7 +78,7 @@ #split 0x0000CCF8,0x0000CD18,General\Save Menu\Palettes\Zone Card 10.bin #split 0x0000CD18,0x0000CD38,General\Save Menu\Palettes\Zone Card 11.bin #split 0x0000CD38,0x0000CD58,General\Save Menu\Palettes\Zone Card 12.bin -#split 0x0002E318,0x0002E398,General\Results\Palettes\Main.bin +#split 0x0002E318,0x0002E398,General\Special Stage\Palettes\Results.bin #split 0x0004CB36,0x0004CBB6,General\Blue Sphere\Palettes\Title 1.bin #split 0x0004CBB6,0x0004CC36,General\Blue Sphere\Palettes\Title 2.bin #split 0x0004DE08,0x0004DE68,General\Blue Sphere\Palettes\Results Line 0-2.bin @@ -142,7 +141,6 @@ #split 0x00079726,0x00079786,Levels\LRZ\Palettes\Boss Act Fire.bin #split 0x0007A1EE,0x0007A20E,Levels\LRZ\Palettes\End Boss.bin #split 0x0007B268,0x0007B288,Levels\SSZ\Palettes\MTZOrbs.bin -#split 0x0007D850,0x0007D9EA,Levels\SSZ\Palettes\GHZMisc.bin #split 0x0007EFFC,0x0007F01C,Levels\DEZ\Palettes\Miniboss 1.bin #split 0x0007F01C,0x0007F03C,Levels\DEZ\Palettes\Miniboss 2.bin #split 0x0007FD08,0x0007FD28,Levels\DEZ\Palettes\End Boss.bin @@ -227,6 +225,9 @@ #split 0x000A8044,0x000A872C,Levels\MHZ\Layout\3.bin /* Uncompressed Art */ +#split 0x0000E18A,0x0000E48A,General\Sprites\HUD Icon\HUD Digits.bin +#split 0x0000E48A,0x0000E5CA,General\Sprites\HUD Icon\Lives Digits.bin +#split 0x0000E5CA,0x0000E8AA,General\Sprites\HUD Icon\Debug Digits.bin #split 0x000A9DFC,0x000AA57C,General\Sprites\Bubbles\Air Countdown.bin #split 0x000AA57C,0x000AAA7C,General\Sprites\S2Menu\SONICMILES.bin #split 0x000AAA7C,0x000ABDFC,General\Sprites\Sonic\Art\SStage Sonic.bin @@ -379,7 +380,6 @@ #split 0x0019385A,0x00194388,General\Sprites\Bonus\Bonus Stage.bin /* Kosinski-Compressed Art */ - #split 0x000CC6A0,0x000CCA20,General\Title\Kosinski Art\SK Big SEGA.bin #split 0x000CCA20,0x000CD910,General\Title\Kosinski Art\SK Screen Background.bin #split 0x000D2504,0x000D33E4,General\Title\Kosinski Art\SK Sonic Falling.bin From fb571a507fd2ce0bb434c1f00674640dde6df05d Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Tue, 9 Nov 2021 18:25:02 +0000 Subject: [PATCH 26/72] Split Mecha Sonic palettes and fix SonLVL project --- Build Scripts/sk.txt | 7 ++ .../Sprites/Mecha Sonic/Palettes/Flash 1.bin | Bin 0 -> 32 bytes .../Sprites/Mecha Sonic/Palettes/Flash 2.bin | Bin 0 -> 32 bytes .../Sprites/Mecha Sonic/Palettes/Flash 3.bin | Bin 0 -> 32 bytes General/Sprites/Mecha Sonic/Palettes/Main.bin | Bin 0 -> 32 bytes .../Sprites/Mecha Sonic/Palettes/Super 1.bin | Bin 0 -> 32 bytes .../Sprites/Mecha Sonic/Palettes/Super 2.bin | Bin 0 -> 32 bytes .../Sprites/Mecha Sonic/Palettes/Super 3.bin | Bin 0 -> 32 bytes SonLVL INI Files/SonLVL - S&K.ini | 2 +- SonLVL INI Files/SonLVL.ini | 2 +- sonic3k.asm | 70 +++++++++--------- sonic3k.macros.asm | 8 ++ 12 files changed, 52 insertions(+), 37 deletions(-) create mode 100644 General/Sprites/Mecha Sonic/Palettes/Flash 1.bin create mode 100644 General/Sprites/Mecha Sonic/Palettes/Flash 2.bin create mode 100644 General/Sprites/Mecha Sonic/Palettes/Flash 3.bin create mode 100644 General/Sprites/Mecha Sonic/Palettes/Main.bin create mode 100644 General/Sprites/Mecha Sonic/Palettes/Super 1.bin create mode 100644 General/Sprites/Mecha Sonic/Palettes/Super 2.bin create mode 100644 General/Sprites/Mecha Sonic/Palettes/Super 3.bin diff --git a/Build Scripts/sk.txt b/Build Scripts/sk.txt index d7797ef4..387b4cba 100644 --- a/Build Scripts/sk.txt +++ b/Build Scripts/sk.txt @@ -141,6 +141,13 @@ #split 0x00079726,0x00079786,Levels\LRZ\Palettes\Boss Act Fire.bin #split 0x0007A1EE,0x0007A20E,Levels\LRZ\Palettes\End Boss.bin #split 0x0007B268,0x0007B288,Levels\SSZ\Palettes\MTZOrbs.bin +#split 0x0007D850,0x0007D870,General\Sprites\Mecha Sonic\Palettes\Main.bin +#split 0x0007DA6E,0x0007DA8E,General\Sprites\Mecha Sonic\Palettes\Flash 1.bin +#split 0x0007DA90,0x0007DAB0,General\Sprites\Mecha Sonic\Palettes\Flash 2.bin +#split 0x0007DAB2,0x0007DAD2,General\Sprites\Mecha Sonic\Palettes\Flash 3.bin +#split 0x0007DADC,0x0007DAFC,General\Sprites\Mecha Sonic\Palettes\Super 1.bin +#split 0x0007DAFE,0x0007DB1E,General\Sprites\Mecha Sonic\Palettes\Super 2.bin +#split 0x0007DB20,0x0007DB40,General\Sprites\Mecha Sonic\Palettes\Super 3.bin #split 0x0007EFFC,0x0007F01C,Levels\DEZ\Palettes\Miniboss 1.bin #split 0x0007F01C,0x0007F03C,Levels\DEZ\Palettes\Miniboss 2.bin #split 0x0007FD08,0x0007FD28,Levels\DEZ\Palettes\End Boss.bin diff --git a/General/Sprites/Mecha Sonic/Palettes/Flash 1.bin b/General/Sprites/Mecha Sonic/Palettes/Flash 1.bin new file mode 100644 index 0000000000000000000000000000000000000000..6ac18ff058c4f1b39eb960c75e96029763eb0ad5 GIT binary patch literal 32 ncmZQz;Csj5$DqZ)!SIfugMo$b9bX5J3zrI;3f~zPB?cD&X@CZG literal 0 HcmV?d00001 diff --git a/General/Sprites/Mecha Sonic/Palettes/Flash 2.bin b/General/Sprites/Mecha Sonic/Palettes/Flash 2.bin new file mode 100644 index 0000000000000000000000000000000000000000..06cd5efa4af1a52fa544b9e2cf6714268b56cbcf GIT binary patch literal 32 mcmZQz;Csi=$Kc1H!|;xwgF%Du9T0Z#q;aY6ondogZ~*{>ga|hP literal 0 HcmV?d00001 diff --git a/General/Sprites/Mecha Sonic/Palettes/Flash 3.bin b/General/Sprites/Mecha Sonic/Palettes/Flash 3.bin new file mode 100644 index 0000000000000000000000000000000000000000..38677d07de54f184038e2b5bd01c3045245eb6d7 GIT binary patch literal 32 gcmZQz;Csi=$Kc1H!|;xwgF%Du9UPuvb7F7-0F!75^#A|> literal 0 HcmV?d00001 diff --git a/General/Sprites/Mecha Sonic/Palettes/Main.bin b/General/Sprites/Mecha Sonic/Palettes/Main.bin new file mode 100644 index 0000000000000000000000000000000000000000..be1f125c697452dda90caf7d313eb57e5819c2ff GIT binary patch literal 32 ncmZQz;Csj5$DqZ)!SIfugMo#wgU5wSg-wM;iSG=90)q Date: Tue, 9 Nov 2021 22:07:23 +0000 Subject: [PATCH 27/72] Identify unknown palettes --- Build Scripts/s3.txt | 4 ++-- Build Scripts/sk.txt | 6 +++--- .../S2Menu/Palettes/Proto Level Select SK.bin | Bin .../S2Menu/Palettes/Proto Level Select.bin | Bin .../Sprites/S2Menu/Palettes/Sega Screen.bin | Bin .../Sprites/S2Menu/Palettes/Title Screen SK.bin | Bin .../Sprites/S2Menu/Palettes/Title Screen.bin | Bin Levels/Misc/Palette pointers S3.asm | 14 +++++++------- Levels/Misc/Palette pointers.asm | 14 +++++++------- s3.asm | 6 +++--- sonic3k.asm | 9 +++++---- 11 files changed, 27 insertions(+), 26 deletions(-) rename Levels/Misc/Palettes/Unknown 3.bin => General/Sprites/S2Menu/Palettes/Proto Level Select SK.bin (100%) rename Levels/Misc/Palettes/Unknown 3 S3.bin => General/Sprites/S2Menu/Palettes/Proto Level Select.bin (100%) rename Levels/Misc/Palettes/Unknown 1.bin => General/Sprites/S2Menu/Palettes/Sega Screen.bin (100%) rename Levels/Misc/Palettes/Unknown 2.bin => General/Sprites/S2Menu/Palettes/Title Screen SK.bin (100%) rename Levels/Misc/Palettes/Unknown 2 S3.bin => General/Sprites/S2Menu/Palettes/Title Screen.bin (100%) diff --git a/Build Scripts/s3.txt b/Build Scripts/s3.txt index 73667af7..681eb469 100644 --- a/Build Scripts/s3.txt +++ b/Build Scripts/s3.txt @@ -47,8 +47,8 @@ #split 0x00043470,0x000434E0,General\Sprites\S2Menu\Palettes\Sega Screen 3.bin #split 0x0004D520,0x0004D540,Levels\FBZ\Palettes\S3 Miniboss.bin #split 0x0005215C,0x0005217C,General\Ending\Palettes\S3 Super Sonic End Pose.bin -#split 0x0008C1B4,0x0008C1D4,Levels\Misc\Palettes\Unknown 2 S3.bin -#split 0x0008C1D4,0x0008C234,Levels\Misc\Palettes\Unknown 3 S3.bin +#split 0x0008C1B4,0x0008C1D4,General\Sprites\S2Menu\Palettes\Title Screen.bin +#split 0x0008C1D4,0x0008C234,General\Sprites\S2Menu\Palettes\Proto Level Select.bin #split 0x0008CDB4,0x0008CE14,Levels\Pachinko\Palettes\S3.bin #split 0x0008CE14,0x0008CE74,Levels\Slots\Palettes\S3.bin #split 0x00164896,0x00164A96,Levels\Misc\Palettes\MGZ Fade to CNZ.bin diff --git a/Build Scripts/sk.txt b/Build Scripts/sk.txt index 387b4cba..4cb38320 100644 --- a/Build Scripts/sk.txt +++ b/Build Scripts/sk.txt @@ -152,9 +152,9 @@ #split 0x0007F01C,0x0007F03C,Levels\DEZ\Palettes\Miniboss 2.bin #split 0x0007FD08,0x0007FD28,Levels\DEZ\Palettes\End Boss.bin #split 0x00090680,0x000906A0,Levels\LRZ\Palettes\Rock Crusher.bin -#split 0x000A893C,0x000A89BC,Levels\Misc\Palettes\Unknown 1.bin -#split 0x000A89BC,0x000A89DC,Levels\Misc\Palettes\Unknown 2.bin -#split 0x000A89DC,0x000A8A3C,Levels\Misc\Palettes\Unknown 3.bin +#split 0x000A893C,0x000A89BC,General\Sprites\S2Menu\Palettes\Sega Screen.bin +#split 0x000A89BC,0x000A89DC,General\Sprites\S2Menu\Palettes\Title Screen SK.bin +#split 0x000A89DC,0x000A8A3C,General\Sprites\S2Menu\Palettes\Proto Level Select SK.bin #split 0x000A8A3C,0x000A8A7C,General\Sprites\Sonic\Palettes\SonicAndTails.bin #split 0x000A8A7C,0x000A8AFC,General\Sprites\S2Menu\Palettes\Main.bin #split 0x000A8AFC,0x000A8B1C,General\Sprites\Knuckles\Palettes\Main.bin diff --git a/Levels/Misc/Palettes/Unknown 3.bin b/General/Sprites/S2Menu/Palettes/Proto Level Select SK.bin similarity index 100% rename from Levels/Misc/Palettes/Unknown 3.bin rename to General/Sprites/S2Menu/Palettes/Proto Level Select SK.bin diff --git a/Levels/Misc/Palettes/Unknown 3 S3.bin b/General/Sprites/S2Menu/Palettes/Proto Level Select.bin similarity index 100% rename from Levels/Misc/Palettes/Unknown 3 S3.bin rename to General/Sprites/S2Menu/Palettes/Proto Level Select.bin diff --git a/Levels/Misc/Palettes/Unknown 1.bin b/General/Sprites/S2Menu/Palettes/Sega Screen.bin similarity index 100% rename from Levels/Misc/Palettes/Unknown 1.bin rename to General/Sprites/S2Menu/Palettes/Sega Screen.bin diff --git a/Levels/Misc/Palettes/Unknown 2.bin b/General/Sprites/S2Menu/Palettes/Title Screen SK.bin similarity index 100% rename from Levels/Misc/Palettes/Unknown 2.bin rename to General/Sprites/S2Menu/Palettes/Title Screen SK.bin diff --git a/Levels/Misc/Palettes/Unknown 2 S3.bin b/General/Sprites/S2Menu/Palettes/Title Screen.bin similarity index 100% rename from Levels/Misc/Palettes/Unknown 2 S3.bin rename to General/Sprites/S2Menu/Palettes/Title Screen.bin diff --git a/Levels/Misc/Palette pointers S3.asm b/Levels/Misc/Palette pointers S3.asm index e5f17031..1224536b 100644 --- a/Levels/Misc/Palette pointers S3.asm +++ b/Levels/Misc/Palette pointers S3.asm @@ -1,12 +1,12 @@ ; Palette pointers - dc.l Pal_Unknown1 + dc.l Pal_S2Sega dc.w Normal_palette&$FFFF dc.w $1F - dc.l Pal_Unknown2 + dc.l Pal_S2Title dc.w Normal_palette_line_2&$FFFF dc.w 7 - dc.l Pal_Unknown3 + dc.l Pal_S2LevSel dc.w Normal_palette&$FFFF dc.w $1F dc.l Pal_SonicTails @@ -18,16 +18,16 @@ dc.l Pal_Knuckles dc.w Normal_palette_line_2&$FFFF dc.w 7 - dc.l Pal_Unknown1 + dc.l Pal_S2Sega dc.w Normal_palette&$FFFF dc.w $1F - dc.l Pal_Unknown1 + dc.l Pal_S2Sega dc.w Normal_palette&$FFFF dc.w $1F - dc.l Pal_Unknown1 + dc.l Pal_S2Sega dc.w Normal_palette&$FFFF dc.w $1F - dc.l Pal_Unknown1 + dc.l Pal_S2Sega dc.w Normal_palette&$FFFF dc.w $1F dc.l Pal_AIZIntro diff --git a/Levels/Misc/Palette pointers.asm b/Levels/Misc/Palette pointers.asm index f83fc4c6..ca639f6b 100644 --- a/Levels/Misc/Palette pointers.asm +++ b/Levels/Misc/Palette pointers.asm @@ -1,12 +1,12 @@ ; Palette pointers - dc.l Pal_Unknown1 + dc.l Pal_S2Sega dc.w Normal_palette&$FFFF dc.w $1F - dc.l Pal_Unknown2 + dc.l Pal_S2Title dc.w Normal_palette_line_2&$FFFF dc.w 7 - dc.l Pal_Unknown3 + dc.l Pal_S2LevSel dc.w Normal_palette&$FFFF dc.w $1F dc.l Pal_SonicTails @@ -18,16 +18,16 @@ dc.l Pal_Knuckles dc.w Normal_palette&$FFFF dc.w 7 - dc.l Pal_Unknown1 + dc.l Pal_S2Sega dc.w Normal_palette&$FFFF dc.w $1F - dc.l Pal_Unknown1 + dc.l Pal_S2Sega dc.w Normal_palette&$FFFF dc.w $1F - dc.l Pal_Unknown1 + dc.l Pal_S2Sega dc.w Normal_palette&$FFFF dc.w $1F - dc.l Pal_Unknown1 + dc.l Pal_S2Sega dc.w Normal_palette&$FFFF dc.w $1F dc.l Pal_AIZIntro diff --git a/s3.asm b/s3.asm index 24068ad2..9b648964 100644 --- a/s3.asm +++ b/s3.asm @@ -117673,11 +117673,11 @@ Layout_Slot_Special: even PalPoint: include "Levels/Misc/Palette pointers S3.asm" -Pal_Unknown1: binclude "Levels/Misc/Palettes/Unknown 1.bin" +Pal_S2Sega: binclude "General/Sprites/S2Menu/Palettes/Sega Screen.bin" even -Pal_Unknown2: binclude "Levels/Misc/Palettes/Unknown 2 S3.bin" +Pal_S2Title: binclude "General/Sprites/S2Menu/Palettes/Title Screen.bin" even -Pal_Unknown3: binclude "Levels/Misc/Palettes/Unknown 3 S3.bin" +Pal_S2LevSel: binclude "General/Sprites/S2Menu/Palettes/Proto Level Select.bin" even Pal_SonicTails: binclude "General/Sprites/Sonic/Palettes/SonicAndTails.bin" even diff --git a/sonic3k.asm b/sonic3k.asm index ab552860..913f388f 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -202017,16 +202017,17 @@ MHZ_Custom_Layout:binclude "Levels/MHZ/Layout/3.bin" even PalPoint: include "Levels/Misc/Palette pointers.asm" -Pal_Unknown1: binclude "Levels/Misc/Palettes/Unknown 1.bin" + +Pal_S2Sega: binclude "General/Sprites/S2Menu/Palettes/Sega Screen.bin" even -Pal_Unknown2: binclude "Levels/Misc/Palettes/Unknown 2.bin" +Pal_S2Title: binclude "General/Sprites/S2Menu/Palettes/Title Screen SK.bin" even -Pal_Unknown3: binclude "Levels/Misc/Palettes/Unknown 3.bin" +Pal_S2LevSel: binclude "General/Sprites/S2Menu/Palettes/Proto Level Select SK.bin" even -Pal_SonicTails: binclude "General/Sprites/Sonic/Palettes/SonicAndTails.bin" +Pal_SonicTails: binclude "General/Sprites/Sonic/Palettes/SonicAndTails.bin" even Pal_S2Menu: binclude "General/Sprites/S2Menu/Palettes/Main.bin" From 2bfbd0893a58464ba44b46391e69b84eff7dff89 Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Tue, 9 Nov 2021 18:36:59 +0000 Subject: [PATCH 28/72] Split a few more unused palettes --- Build Scripts/sk.txt | 2 ++ Levels/AIZ/Palettes/Miniboss After.bin | Bin 0 -> 32 bytes Levels/ICZ/Palettes/Miniboss After.bin | Bin 0 -> 32 bytes s3.asm | 8 ++++++-- sonic3k.asm | 6 ++++-- 5 files changed, 12 insertions(+), 4 deletions(-) create mode 100644 Levels/AIZ/Palettes/Miniboss After.bin create mode 100644 Levels/ICZ/Palettes/Miniboss After.bin diff --git a/Build Scripts/sk.txt b/Build Scripts/sk.txt index 4cb38320..dc9c8491 100644 --- a/Build Scripts/sk.txt +++ b/Build Scripts/sk.txt @@ -151,6 +151,8 @@ #split 0x0007EFFC,0x0007F01C,Levels\DEZ\Palettes\Miniboss 1.bin #split 0x0007F01C,0x0007F03C,Levels\DEZ\Palettes\Miniboss 2.bin #split 0x0007FD08,0x0007FD28,Levels\DEZ\Palettes\End Boss.bin +#split 0x00083CFA,0x00083D1A,Levels\AIZ\Palettes\Miniboss After.bin +#split 0x00083D1A,0x00083D3A,Levels\ICZ\Palettes\Miniboss After.bin #split 0x00090680,0x000906A0,Levels\LRZ\Palettes\Rock Crusher.bin #split 0x000A893C,0x000A89BC,General\Sprites\S2Menu\Palettes\Sega Screen.bin #split 0x000A89BC,0x000A89DC,General\Sprites\S2Menu\Palettes\Title Screen SK.bin diff --git a/Levels/AIZ/Palettes/Miniboss After.bin b/Levels/AIZ/Palettes/Miniboss After.bin new file mode 100644 index 0000000000000000000000000000000000000000..ba6b520693cf0cef1042dd35e1c324ddda463dec GIT binary patch literal 32 ncmZQz;Csh+fG>eZiQyeX2OAedAA=r;3xfjRDy}rXGYl>Od2|O` literal 0 HcmV?d00001 diff --git a/Levels/ICZ/Palettes/Miniboss After.bin b/Levels/ICZ/Palettes/Miniboss After.bin new file mode 100644 index 0000000000000000000000000000000000000000..322858846e272d4dec3c42e7feda97793dfba035 GIT binary patch literal 32 ncmZQz;Csh+fG>eZiQyeX2SXo&4u=v01A_w3DvmTZ7X}vqcESde literal 0 HcmV?d00001 diff --git a/s3.asm b/s3.asm index 9b648964..56366d21 100644 --- a/s3.asm +++ b/s3.asm @@ -101347,8 +101347,12 @@ PLC_52730: dc.w 6 dc.w $8AC0 dc.l ArtNem_AIZCorkFloor2 dc.w $8800 - dc.w 0,$EEE,$EC0,$E60,$C22, $EE, $88,$60A, $8E, $2E,$844, $20,$EAA,$A66,$ECC, $44 - dc.w 0,$EEE,$EC0,$E60,$C22, $EE, $88, $8E, $2C,$822, 0, $20,$CAA,$866,$644, $44 +Pal_AfterMiniboss_AIZ: + binclude "Levels/AIZ/Palettes/Miniboss After.bin" + even +Pal_AfterMiniboss_ICZ: + binclude "Levels/ICZ/Palettes/Miniboss After.bin" + even PLC_MonitorsSpikesSprings:dc.w 1 dc.l ArtNem_Monitors dc.w tiles_to_bytes(ArtTile_Monitors) diff --git a/sonic3k.asm b/sonic3k.asm index 913f388f..114c640f 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -177849,8 +177849,10 @@ PLC_83CCE: dc.w 6 dc.w $8AC0 dc.l ArtNem_AIZCorkFloor2 dc.w $8800 - dc.w 0,$EEE,$EC0,$E60,$C22, $EE, $88,$60A, $8E, $2E,$844, $20,$EAA,$A66,$ECC, $44 - dc.w 0,$EEE,$EC0,$E60,$C22, $EE, $88, $8E, $2C,$822, 0, $20,$CAA,$866,$644, $44 +Pal_AfterMiniboss_AIZ: binclude "Levels/AIZ/Palettes/Miniboss After.bin" + even +Pal_AfterMiniboss_ICZ: binclude "Levels/ICZ/Palettes/Miniboss After.bin" + even PLC_MonitorsSpikesSprings: dc.w 1 dc.l ArtNem_Monitors dc.w tiles_to_bytes(ArtTile_Monitors) From 0dffff1fcafd012a389bac115ae4eb9ba511b3a0 Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Tue, 9 Nov 2021 18:43:43 +0000 Subject: [PATCH 29/72] Split special stage plane mappings --- Build Scripts/s3.txt | 2 +- Build Scripts/sk.txt | 4 ++++ .../Uncompressed Map/HUD Numbers.bin | 1 + .../Special Stage/Uncompressed Map/HUD.bin | 1 + .../Layout S3.bin} | Bin SonLVL INI Files/SonPLN.ini | 20 +++++++++++++++++- s3.asm | 18 +++++++--------- sonic3k.asm | 18 +++++++--------- 8 files changed, 42 insertions(+), 22 deletions(-) create mode 100644 General/Special Stage/Uncompressed Map/HUD Numbers.bin create mode 100644 General/Special Stage/Uncompressed Map/HUD.bin rename General/Special Stage/{Layout/S3 Plane Map.bin => Uncompressed Map/Layout S3.bin} (100%) diff --git a/Build Scripts/s3.txt b/Build Scripts/s3.txt index 681eb469..707778aa 100644 --- a/Build Scripts/s3.txt +++ b/Build Scripts/s3.txt @@ -10,7 +10,6 @@ #split 0x0006BD18,0x0006C120,General\Special Stage\Layout\S3 8.bin #split 0x0006D000,0x0006F460,Levels\HCZ\Misc\HCZ Waterline Scroll Data.bin #split 0x0006F460,0x000704A0,Levels\LBZ\Misc\LBZ Waterline Scroll Data.bin -#split 0x00093240,0x00098100,General\Special Stage\Layout\S3 Plane Map.bin #split 0x0009A7DA,0x0009FC3A,General\Special Stage\Layout\S3 Perspective Maps.bin #split 0x00144E80,0x00144F48,Levels\ICZ\Misc\ICZ Snowboard Slope 1.bin #split 0x00144F48,0x00145010,Levels\ICZ\Misc\ICZ Snowboard Slope 2.bin @@ -351,6 +350,7 @@ #split 0x0000B452,0x0000B486,General\Competition Menu\Uncompressed Map\CHROME GADGET.bin #split 0x0000B486,0x0000B4BA,General\Competition Menu\Uncompressed Map\DESERT PALACE.bin #split 0x0000B4BA,0x0000B4EE,General\Competition Menu\Uncompressed Map\ENDLESS MINE.bin +#split 0x00093240,0x00098100,General\Special Stage\Uncompressed Map\Layout S3.bin #split 0x0019F150,0x0019F228,General\Competition Menu\Uncompressed Map\Time Border.bin #split 0x0019F228,0x0019F24C,General\Competition Menu\Uncompressed Map\Time Text.bin #split 0x001A20DE,0x001A216A,General\Save Menu\Uncompressed Map\NEW.bin diff --git a/Build Scripts/sk.txt b/Build Scripts/sk.txt index dc9c8491..f400a6a3 100644 --- a/Build Scripts/sk.txt +++ b/Build Scripts/sk.txt @@ -821,6 +821,10 @@ #split 0x001DFE92,0x001E01B2,Levels\Pachinko\Chunks\Primary.bin #split 0x001E36C4,0x001E3BB4,Levels\Slots\Chunks\Primary.bin +/* Uncompressed plane mappings */ +#split 0x00008CB4,0x00008D2C,General\Special Stage\Uncompressed Map\HUD Numbers.bin +#split 0x00008D2C,0x00008D5C,General\Special Stage\Uncompressed Map\HUD.bin + /* Enigma Compressed plane mappings */ #split 0x000AEDB0,0x000AEED0,General\Special Stage\Enigma Map\BG.bin #split 0x000AEF54,0x000B07B8,General\Special Stage\Enigma Map\Layout.bin diff --git a/General/Special Stage/Uncompressed Map/HUD Numbers.bin b/General/Special Stage/Uncompressed Map/HUD Numbers.bin new file mode 100644 index 00000000..9f826273 --- /dev/null +++ b/General/Special Stage/Uncompressed Map/HUD Numbers.bin @@ -0,0 +1 @@ +ǁρǂǃǁρǁρDŽDždžLJǁρχLjǁρǁρNJϊNjnjǍǎǏǐǑǒǓǔǕǖǗǘǙϙߖߕׁ߁Ǜ׃߈ׇׁ߁ǜǝׁ߁ׁ߁Ǟǟׁ߁ׁ߁ \ No newline at end of file diff --git a/General/Special Stage/Uncompressed Map/HUD.bin b/General/Special Stage/Uncompressed Map/HUD.bin new file mode 100644 index 00000000..6601cfbf --- /dev/null +++ b/General/Special Stage/Uncompressed Map/HUD.bin @@ -0,0 +1 @@ +ωǁρǁρǁρljϚNJϊNJϊNJϊǚ߉ׁ߁ׁ߁ׁ߁׉ \ No newline at end of file diff --git a/General/Special Stage/Layout/S3 Plane Map.bin b/General/Special Stage/Uncompressed Map/Layout S3.bin similarity index 100% rename from General/Special Stage/Layout/S3 Plane Map.bin rename to General/Special Stage/Uncompressed Map/Layout S3.bin diff --git a/SonLVL INI Files/SonPLN.ini b/SonLVL INI Files/SonPLN.ini index 0ef55f9b..fa7f5b9d 100644 --- a/SonLVL INI Files/SonPLN.ini +++ b/SonLVL INI Files/SonPLN.ini @@ -483,10 +483,28 @@ palette=../General/Blue Sphere/Palettes/Title 1.bin:16:0:16 palette2=Dark|../General/Blue Sphere/Palettes/Title 2.bin:16:0:16 width=40 height=16 +[Special Stage\\HUD] +displayname=Special Stage - HUD +tiles=../General/Special Stage/Nemesis Art/Digits.bin +tileoff=0x781 +mappings=../General/Special Stage/Uncompressed Map/HUD.bin +mapcmp=Uncompressed +palette=../General/Special Stage/Palettes/Main.bin:0:0:64 +width=8 +height=3 +[Special Stage\\HUD Numbers] +displayname=Special Stage - HUD Numbers +tiles=../General/Special Stage/Nemesis Art/Digits.bin +tileoff=0x781 +mappings=../General/Special Stage/Uncompressed Map/HUD Numbers.bin +mapcmp=Uncompressed +palette=../General/Special Stage/Palettes/Main.bin:0:0:64 +width=20 +height=3 [Special Stage\\Foreground (S3)] displayname=Special Stage - Foreground (S3) tiles=../General/Special Stage/Nemesis Art/Layout.bin -mappings=../General/Special Stage/Layout/S3 Plane Map.bin +mappings=../General/Special Stage/Uncompressed Map/Layout S3.bin mapcmp=Uncompressed palette=../General/Special Stage/Palettes/Main.bin:0:0:64 width=40 diff --git a/s3.asm b/s3.asm index 56366d21..8c54e907 100644 --- a/s3.asm +++ b/s3.asm @@ -8845,12 +8845,12 @@ loc_7546: move.l #$74000003,(VDP_control_port).l lea (ArtNem_SStageShadow).l,a0 bsr.w Nem_Decomp - lea (SSNum000_Map).l,a1 + lea (MapUnc_SSNum000).l,a1 move.l #$40840003,d0 moveq #7,d1 moveq #2,d2 jsr (Plane_Map_To_VRAM).l - lea (SSNum000_Map).l,a1 + lea (MapUnc_SSNum000).l,a1 move.l #$40BC0003,d0 moveq #7,d1 moveq #2,d2 @@ -9167,7 +9167,7 @@ Pal_SStage_8: binclude "General/Special Stage/Palettes/3-8 S3.bin" Draw_SSNum: lea (SSNum_Precision).l,a2 moveq #2,d6 - lea SSNum_Map(pc),a1 + lea MapUnc_SSNum(pc),a1 loc_7BE2: moveq #0,d2 @@ -9202,12 +9202,10 @@ loc_7BEE: SSNum_Precision:dc.w $64 dc.w $A dc.w 1 -SSNum_Map: dc.l $C781CF81,$C782C783,$C781CF81,$C781CF81,$C784C785,$C786C787,$C781CF81,$CF87C788,$C781CF81,$C781CF81 - dc.l $C78ACF8A,$C78BC78C,$C78DC78E,$C78FC790,$C791C792,$C793C794,$C795C796,$C797C798,$C799CF99,$DF96DF95 - dc.l $D781DF81,$C79BD783,$DF88D787,$D781DF81,$C79CC79D,$D781DF81,$D781DF81,$C79EC79F,$D781DF81,$D781DF81 -SSNum000_Map: dc.w $CF89, $C781, $CF81, $C781, $CF81, $C781, $CF81, $C789 - dc.w $CF9A, $C78A, $CF8A, $C78A, $CF8A, $C78A, $CF8A, $C79A - dc.w $DF89, $D781, $DF81, $D781, $DF81, $D781, $DF81, $D789 +MapUnc_SSNum: binclude "General/Special Stage/Uncompressed Map/HUD Numbers.bin" + even +MapUnc_SSNum000:binclude "General/Special Stage/Uncompressed Map/HUD.bin" + even ; =============== S U B R O U T I N E ======================================= @@ -117803,7 +117801,7 @@ MapEni_SStageBG:binclude "General/Special Stage/Enigma Map/BG.bin" ArtNem_SStageBG:binclude "General/Special Stage/Nemesis Art/BG.bin" even MapUnc_SStageLayout: - binclude "General/Special Stage/Layout/S3 Plane Map.bin" + binclude "General/Special Stage/Uncompressed Map/Layout S3.bin" even ArtNem_SStageLayout: binclude "General/Special Stage/Nemesis Art/Layout.bin" diff --git a/sonic3k.asm b/sonic3k.asm index 114c640f..5bf80fd3 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -10167,12 +10167,12 @@ loc_82A6: move.l #$74000003,(VDP_control_port).l lea (ArtNem_SStageShadow).l,a0 bsr.w Nem_Decomp - lea (SSNum000_Map).l,a1 + lea (MapUnc_SSNum000).l,a1 move.l #$40840003,d0 moveq #7,d1 moveq #2,d2 jsr (Plane_Map_To_VRAM).l - lea (SSNum000_Map).l,a1 + lea (MapUnc_SSNum000).l,a1 move.l #$40BC0003,d0 moveq #7,d1 moveq #2,d2 @@ -10706,7 +10706,7 @@ Pal_SStage_K_8: binclude "General/Special Stage/Palettes/K-8.bin" Draw_SSNum: lea (SSNum_Precision).l,a2 moveq #2,d6 - lea SSNum_Map(pc),a1 + lea MapUnc_SSNum(pc),a1 loc_8C6A: moveq #0,d2 @@ -10740,13 +10740,11 @@ loc_8C76: ; --------------------------------------------------------------------------- SSNum_Precision: dc.w $64 dc.w $A - dc.w 1 ;0 1 2 3 4 5 6 7 8 9 -SSNum_Map: dc.l $C781CF81, $C782C783, $C781CF81, $C781CF81, $C784C785, $C786C787, $C781CF81, $CF87C788, $C781CF81, $C781CF81 - dc.l $C78ACF8A, $C78BC78C, $C78DC78E, $C78FC790, $C791C792, $C793C794, $C795C796, $C797C798, $C799CF99, $DF96DF95 - dc.l $D781DF81, $C79BD783, $DF88D787, $D781DF81, $C79CC79D, $D781DF81, $D781DF81, $C79EC79F, $D781DF81, $D781DF81 -SSNum000_Map:dc.w $CF89, $C781, $CF81, $C781, $CF81, $C781, $CF81, $C789 - dc.w $CF9A, $C78A, $CF8A, $C78A, $CF8A, $C78A, $CF8A, $C79A - dc.w $DF89, $D781, $DF81, $D781, $DF81, $D781, $DF81, $D789 + dc.w 1 +MapUnc_SSNum: binclude "General/Special Stage/Uncompressed Map/HUD Numbers.bin" + even +MapUnc_SSNum000:binclude "General/Special Stage/Uncompressed Map/HUD.bin" + even ; =============== S U B R O U T I N E ======================================= From 3ec89017d530f594475936aeb314f52ef4a3b8dc Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Tue, 9 Nov 2021 18:47:15 +0000 Subject: [PATCH 30/72] Split even more stuff --- Build Scripts/s3.txt | 2 + Build Scripts/sk.txt | 1 + General/Special Stage/Scalars.bin | Bin 0 -> 512 bytes Levels/AIZ/Demodata/1 Proto.bin | Bin 0 -> 1024 bytes .../Misc/Rock Sprite Attribute Data S3.bin | Bin 0 -> 88 bytes s3.asm | 137 +----------------- sonic3k.asm | 18 +-- 7 files changed, 13 insertions(+), 145 deletions(-) create mode 100644 General/Special Stage/Scalars.bin create mode 100644 Levels/AIZ/Demodata/1 Proto.bin create mode 100644 Levels/LRZ/Misc/Rock Sprite Attribute Data S3.bin diff --git a/Build Scripts/s3.txt b/Build Scripts/s3.txt index 707778aa..dd30ca59 100644 --- a/Build Scripts/s3.txt +++ b/Build Scripts/s3.txt @@ -1,5 +1,6 @@ /* Miscellaneous */ #split 0x00000000,0x00000200,Lockon S3\Header.bin +#split 0x0001AF6A,0x0001AFC2,Levels\LRZ\Misc\Rock Sprite Attribute Data S3.bin #split 0x0006A0E0,0x0006A4E8,General\Special Stage\Layout\S3 1.bin #split 0x0006A4E8,0x0006A8F0,General\Special Stage\Layout\S3 2.bin #split 0x0006A8F0,0x0006ACF8,General\Special Stage\Layout\S3 3.bin @@ -18,6 +19,7 @@ #split 0x001CBBB4,0x001CCC34,Levels\MGZ\Misc\Act 2 Quake Chunks.bin /* Demo data */ +#split 0x00005A20,0x00005E20,Levels\AIZ\Demodata\1 Proto.bin #split 0x000C5624,0x000C5DA4,Levels\AIZ\Demodata\1.bin #split 0x000C5DA4,0x000C6524,Levels\HCZ\Demodata\1.bin #split 0x000C6524,0x000C6CA4,Levels\MGZ\Demodata\1.bin diff --git a/Build Scripts/sk.txt b/Build Scripts/sk.txt index f400a6a3..dbef522e 100644 --- a/Build Scripts/sk.txt +++ b/Build Scripts/sk.txt @@ -7,6 +7,7 @@ #split 0x00001D64,0x00001FE4,Levels\Misc\sine.bin #split 0x00002040,0x00002142,Levels\Misc\arctan.bin #split 0x00006D2C,0x00006D6C,Levels\Misc\StartingWaterHeights.bin +#split 0x0000A264,0x0000A464,General\Special Stage\Scalars.bin #split 0x0001CBBE,0x0001CCAE,Levels\LRZ\Misc\Rock Sprite Attribute Data.bin #split 0x000B2E36,0x000B6946,General\Special Stage\Layout\Perspective Maps.bin #split 0x000CAD06,0x000CB81A,Levels\LRZ\Misc\Act 1 Rock Placement.bin diff --git a/General/Special Stage/Scalars.bin b/General/Special Stage/Scalars.bin new file mode 100644 index 0000000000000000000000000000000000000000..c5a01ef96b6a088c046975e20bbf410cef9ca9d2 GIT binary patch literal 512 zcmV+b0{{I000EK%Bm}hvMhDgjWD4;Nd=3T=jS&(OloS&ckQWIUei`o@T^z<9D<6y? z=OR5LjwIS9ASYlbnkmjI`z#?XK`vS^Y%q2)c`|e}Xf#tbH#QPB_7WJ06+Ub>_5~$u|I`BPd^Vn#XfRA z6+N##KRm@eLOZrQAv%IN+c_&ZaW}9w%oq}JHYY4vA}!4Prxj|6uONPr!S?vB2@cJHd{@>%vjO z!NWVlzQjtz-^G5$CC1gqkH}ET8_Dj<$;++Gn9YpNhtG=8l+mWrzti8<1=cdxX4s(F z;M*qLa^1t<8Q^r`)#EzkqvjFkg6Q|^aO>^uZ0_#xbMgA~g!K>hocJpFy8BD~-2QIi C68wVz literal 0 HcmV?d00001 diff --git a/Levels/AIZ/Demodata/1 Proto.bin b/Levels/AIZ/Demodata/1 Proto.bin new file mode 100644 index 0000000000000000000000000000000000000000..1114bad830bdd95a20f16ca704e95f08f7c4aadf GIT binary patch literal 1024 zcmb`FJ(3ew6opTB-={v^YW<9)K|-3*JfYXjoj(|`%chK7<-k=g0+J~T0-KD;p(#ip zU;*raB~WaDJ+K6pK`f3$Y)2?i_j`SBopZi>vB3r(b3-Q{<2i{ZdN29j1D~PC0%jvH zHt6YD@MrHbM{X4cjNXfd7ZE6I5Kw_#&sEvAfYL65?m5Cd-f*yw7yQeOe|oL@iVZ3| zOhq&VY34?B^(@TLaN#vSdC5oKSHDTC%b{lxschi|gK?*Jh7Ym!3IFzrlL}#!fgAp- zwW)@H@D~%x+@H8Tz|(LKXx1s^8$<_9m9-*lC-uaFU4@ z+a_eZ^cCm+8#{8*rkU-7_DgD%d}3Dt%Jtf(yy0uHFYSkP-F{Wo1Camtg1L{B&7!*H zcgyNh*@m`E6V)Erl^DO2=YhzO_x%1ApXe{_Y3kV=eVgxi-t)vxm1PJ)ib1FCWbdba z`vZ}${3a*9I+2@jx1EKd=DqZRHUvQ{gFRmNwd&6jm2trq5M7AYf|+tOX>5(?EqtgH zM^*>4RjO^K30=60e8&z{W4OjMY1P`JbsAZ&ZMm&PJ#EQ6?QPj`<&$_Joju)kMB^3^ zyQtMqF{7qC=7HbUJ|0T1qm4Tfl@N3JqX<^=Rcq4I-M8(&=3-LIE9LEgr`on!{_mt* zR4aK4wb9hwQ|GznR;0Sc2|Ofgv4XShg{f{bzZNr`^R1ssea%+0$wg_y&sc8fub&+Y Q?0^2_f4_d~{f;$X0hYr^B>(^b literal 0 HcmV?d00001 diff --git a/Levels/LRZ/Misc/Rock Sprite Attribute Data S3.bin b/Levels/LRZ/Misc/Rock Sprite Attribute Data S3.bin new file mode 100644 index 0000000000000000000000000000000000000000..a4e28d51414aacdc7e04ca0e1dc43b1579b0e54e GIT binary patch literal 88 zcmezWgMsx3!~Y-uf%F+DeS`(VKf(bOhtWWB1_lO}BRo)=4?>@T(LiyKIZp)s{{R3v CJuIRC literal 0 HcmV?d00001 diff --git a/s3.asm b/s3.asm index 8c54e907..fc80d8a3 100644 --- a/s3.asm +++ b/s3.asm @@ -7082,92 +7082,8 @@ loc_5A18: ; End of function sub_59E0 ; --------------------------------------------------------------------------- - dc.b 0, $FF, 0, $FF - dc.b 0, $BA, 2, 4, 0, 6, $20, $27, 0, $73, 8, 8 - dc.b 0, $57, 2, 4, 0, 7, 8, $AB, $28, 5, 8, $64 - dc.b 0, $D, 8, 3, 0, 4, 4, $12, 0, 8, $20, $C - dc.b 0, $D, 4, $12, 0, 3, 8, $37, $28, $B, 8, 2 - dc.b 0, 2, 4, 9, 0, $F, 8, $20, $28, $D, $20, 3 - dc.b $28, 3, $20, 0, 0, 3, 4, $F, 5, 0, 9, 0 - dc.b 8, $B, $28, 2, $20, $C, 0, $B, 4, 5, 0, 7 - dc.b 4, $30, 5, 0, 0, 3, 8, $12, 0, $1A, $20, $22 - dc.b $28, 0, 8, $E, 0, $75, 8, $5B, $28, 4, 8, $47 - dc.b $28, $A, $20, 0, 0, 9, 8, $C, 0, 9, 4, $1D - dc.b $24, 3, $20, 4, 0, 5, 8, 8, 0, 2, 4, 8 - dc.b 0, $B, 8, 8, 0, 3, 4, 4, 0, $C, 8, $1B - dc.b $28, $A, 8, $CD, $28, 7, 8, $54, $28, $E, 8, $12 - dc.b 0, 4, 4, 9, 0, $B, 8, $10, $28, 1, $20, 0 - dc.b $24, 7, $25, 0, $28, 3, 8, 5, 4, 8, 5, 0 - dc.b 9, 0, 8, $2B, 0, $AD, $20, $A, $28, $14, 8, $5C - dc.b $28, 9, 8, $14, 9, 0, 5, $12, 1, 0, 8, $FF - dc.b 8, $72, 9, 0, 5, 9, 1, 0, 0, 7, 8, $1B - dc.b 0, $36, 4, $56, 0, $A, 8, $13, 0, $13, 8, $C - dc.b 0, $1B, 8, $11, 0, $17, 4, $E, 0, $D, 8, $14 - dc.b 0, $C, 4, $17, 0, $14, 8, $E, 0, $23, 4, $13 - dc.b 0, $F, 8, $C, 0, $28, 4, 3, 0, 4, 4, $1F - dc.b 0, $B, 8, 7, 0, $F, 8, $F, 0, $1A, 4, 6 - dc.b 0, 5, 4, $E, 0, 7, 8, 8, 0, 3, 4, $10 - dc.b 0, 4, 8, $4D, 0, 5, 4, $24, $24, 8, 4, $2D - dc.b 0, 2, 8, 9, $28, 9, 8, $34, 0, $15, 4, $B - dc.b $24, 7, 4, $2D, 0, $2A, 8, $1D, 0, $1E, 8, $10 - dc.b 0, $F5, $80, 0, $40, 0, 8, $1E, 0, $18, 4, $26 - dc.b 0, $10, 8, $18, 0, $E, $80, 0, $40, 0, 8, $24 - dc.b 0, 1, $20, 5, 0, $E, 8, $34, 0, $FF, 0, $9B - dc.b $80, 0, $40, 0, $20, 7, 0, 6, 4, $2A, $25, 2 - dc.b $21, 0, $29, 1, $28, 2, $20, 8, $25, $C, 5, 1 - dc.b 8, $30, $28, $21, 8, $1A, $28, $3D, 8, 6, 0, 4 - dc.b 4, $25, $24, $18, 4, $15, 0, 8, 4, $3A, $24, $C - dc.b 4, 9, 0, $14, 4, $52, 5, 0, 1, 0, 8, $7C - dc.b $28, $17, 8, $22, $28, $23, 8, 2, 0, 7, 4, $33 - dc.b $24, $19, 4, $3C, $24, $18, 4, $49, 0, 8, 8, $6A - dc.b $28, $1B, 8, 2, $28, $12, 8, $11, 0, 4, $20, 6 - dc.b 0, 4, 8, 8, 0, $B, 8, $10, $28, $30, 8, $E - dc.b 0, $10, 4, $1E, $24, $14, 4, $33, $24, $1C, 4, $52 - dc.b 0, 5, 8, $76, $28, 9, 8, $F, 9, 0, 5, 8 - dc.b 8, $38, $28, $3B, 8, 5, 0, 9, 4, $1D, $24, $1B - dc.b 4, $5D, $24, $D, 4, $1A, 0, $E, 4, $1A, 5, 0 - dc.b 9, 0, 8, $38, $28, $24, 8, 6, 9, 1, 1, 0 - dc.b 5, 5, 1, 0, 8, 5, $28, $24, 8, 0, 0, 3 - dc.b 4, $3B, $24, $15, 4, $44, 0, $20, 8, $7B, $28, $26 - dc.b 8, $14, $28, $21, $29, 0, 1, 0, 5, $32, $25, $18 - dc.b 5, $10, 9, 0, 8, $1E, $28, $F, 8, 3, 0, 0 - dc.b 5, 2, 4, 0, 0, $11, 8, $19, $28, $23, 0, 3 - dc.b 4, $2B, $24, 8, $20, 7, 0, $1B, 8, $25, 0, 0 - dc.b 4, $13, 0, 0, 8, 9, $28, $1B, 8, 1, 0, $14 - dc.b 4, $C, $24, $13, 4, $C, 0, 2, 8, $1B, $28, $10 - dc.b 8, 2, 0, $1F, 4, $A, 5, 0, $25, 9, $24, $A - dc.b 4, $18, 0, $A, 8, $2D, $28, $28, 8, 7, 0, 6 - dc.b 4, $1C, $24, $13, 4, 4, 0, $16, 8, $2B, $28, $26 - dc.b 8, $A, 0, $B, 4, $23, $24, $12, 4, 2, 0, 9 - dc.b 8, $2F, $28, $30, 8, $D, 0, 2, 4, $1A, $24, $11 - dc.b 4, $15, 0, 8, 8, $21, $28, $14, $20, $2D, $24, 8 - dc.b $20, $11, 0, 2, 4, 6, $24, $19, 4, $2E, 0, 0 - dc.b $20, $B, 0, $A, 4, $1C, $24, 8, 4, 9, 0, 8 - dc.b 4, $17, 0, $13, 8, $1C, $28, $32, 8, $B, $28, $1D - dc.b 8, $1B, $28, 6, $20, 0, 0, $1F, 8, $10, $28, 5 - dc.b $20, 2, 0, 3, 4, 8, 0, 7, 4, 9, 0, 0 - dc.b 8, $A, 0, $F, 8, $17, $28, 6, $20, 0, 0, $B - dc.b 4, 5, 0, 2, 8, 5, 0, $A, 8, 9, $28, 8 - dc.b 8, 2, 0, $1C, 8, $2A, $28, 1, $20, $A, 0, 0 - dc.b 4, $31, $24, 2, $20, 6, 0, 9, 8, 7, 0, 5 - dc.b $A, 4, 8, 4, 0, 3, 4, $D, 0, 0, 8, $2C - dc.b $28, 2, $20, 3, $24, $A, $25, 0, $29, 0, $28, 5 - dc.b $24, 4, $25, 0, $21, 0, $28, 8, $25, $D, 5, $17 - dc.b $25, 0, $29, 1, $28, $16, $20, 1, 0, $2C, 8, $8C - dc.b $28, $2A, 8, $B, $28, $23, 8, $25, $28, $12, 8, 2 - dc.b $28, $F, 8, $FF, 8, $DD, 0, $1E, $80, 0, $40, 0 - dc.b 0, 0, 0, 4, $27, 8, 0, 0, 0, 4, $27, 8 - dc.b 0, 0, 0, 4, $27, 8, 0, 0, 0, 4, $27, 8 - dc.b 0, 0, 0, 4, $27, 8, 0, 0, 0, 0, $27, 8 - dc.b 0, 0, 0, 4, $27, 8, 0, 0, 0, 4, $27, 8 - dc.b 0, 0, 0, 4, $27, 8, 0, 0, 0, 4, $27, 8 - dc.b 0, 0, 0, 4, $27, 8, 0, 0, 0, 0, $27, 8 - dc.b 0, 0, 0, 4, $27, 8, 0, 0, 0, 4, $27, 8 - dc.b 0, 0, 0, 4, $27, 8, 0, 0, 0, 4, $27, 8 - dc.b 0, 0, 0, 4, $27, 8, 0, 0, 0, 0, $27, 8 - dc.b 0, 0, 0, 4, $27, 8, 0, 0, 0, 4, $27, 8 - dc.b 0, 0, 0, 4, $27, 8, 0, 0, 0, 4, $27, 8 - dc.b 0, 0, 0, 4, $27, 8, 0, 0, 0, 0, $27, 8 +S2_DemoDat_AIZ: binclude "Levels/AIZ/Demodata/1 Proto.bin" + even ; =============== S U B R O U T I N E ======================================= @@ -11105,22 +11021,8 @@ GetScalars2: ; End of function GetScalars2 ; --------------------------------------------------------------------------- -ScalarTable2: dc.w 0, $192, $324, $4B5, $646, $7D6, $964, $AF1, $C7C, $E06, $F8D, $1112, $1294, $1413, $1590, $1709 - dc.w $187E, $19EF, $1B5D, $1CC6, $1E2B, $1F8C, $20E7, $223D, $238E, $24DA, $2620, $2760, $289A, $29CE, $2AFB, $2C21 - dc.w $2D41, $2E5A, $2F6C, $3076, $3179, $3274, $3368, $3453, $3537, $3612, $36E5, $37B0, $3871, $392B, $39DB, $3A82 - dc.w $3B21, $3BB6, $3C42, $3CC5, $3D3F, $3DAF, $3E15, $3E72, $3EC5, $3F0F, $3F4F, $3F85, $3FB1, $3FD4, $3FEC, $3FFB - dc.w $4000, $3FFB, $3FEC, $3FD4, $3FB1, $3F85, $3F4F, $3F0F, $3EC5, $3E72, $3E15, $3DAF, $3D3F, $3CC5, $3C42, $3BB6 - dc.w $3B21, $3A82, $39DB, $392B, $3871, $37B0, $36E5, $3612, $3537, $3453, $3368, $3274, $3179, $3076, $2F6C, $2E5A - dc.w $2D41, $2C21, $2AFB, $29CE, $289A, $2760, $2620, $24DA, $238E, $223D, $20E7, $1F8C, $1E2B, $1CC6, $1B5D, $19EF - dc.w $187E, $1709, $1590, $1413, $1294, $1112, $F8D, $E06, $C7C, $AF1, $964, $7D6, $646, $4B5, $324, $192 - dc.w 0, $FE6E, $FCDC, $FB4B, $F9BA, $F82A, $F69C, $F50F, $F384, $F1FA, $F073, $EEEE, $ED6C, $EBED, $EA70, $E8F7 - dc.w $E782, $E611, $E4A3, $E33A, $E1D5, $E074, $DF19, $DDC3, $DC72, $DB26, $D9E0, $D8A0, $D766, $D632, $D505, $D3DF - dc.w $D2BF, $D1A6, $D094, $CF8A, $CE87, $CD8C, $CC98, $CBAD, $CAC9, $C9EE, $C91B, $C850, $C78F, $C6D5, $C625, $C57E - dc.w $C4DF, $C44A, $C3BE, $C33B, $C2C1, $C251, $C1EB, $C18E, $C13B, $C0F1, $C0B1, $C07B, $C04F, $C02C, $C014, $C005 - dc.w $C000, $C005, $C014, $C02C, $C04F, $C07B, $C0B1, $C0F1, $C13B, $C18E, $C1EB, $C251, $C2C1, $C33B, $C3BE, $C44A - dc.w $C4DF, $C57E, $C625, $C6D5, $C78F, $C850, $C91B, $C9EE, $CAC9, $CBAD, $CC98, $CD8C, $CE87, $CF8A, $D094, $D1A6 - dc.w $D2BF, $D3DF, $D505, $D632, $D766, $D8A0, $D9E0, $DB26, $DC72, $DDC3, $DF19, $E074, $E1D5, $E33A, $E4A3, $E611 - dc.w $E782, $E8F7, $EA70, $EBED, $ED6C, $EEEE, $F073, $F1FA, $F384, $F50F, $F69C, $F82A, $F9BA, $FB4B, $FCDC, $FE6E +ScalarTable2: binclude "General/Special Stage/Scalars.bin" + even Map_SStageSphere: include "General/Special Stage/Map - Sphere.asm" Map_SStageRing: @@ -32329,17 +32231,8 @@ locret_1AF68: ; --------------------------------------------------------------------------- LRZ_Rock_SpriteData: - dc.w $FFF8, 5, $C400, $FFF8 - dc.w $FFF8, 5, $CC00, $FFF8 - dc.w $FFF8, 5, $C404, $FFF8 - dc.w $FFF8, 5, $C408, $FFF8 - dc.w $FFF8, 5, $CC08, $FFF8 - dc.w $FFF8, 5, $CC04, $FFF8 - dc.w 0, 4, $C40C, $FFF8 - dc.w 0, 4, $C40E, $FFF8 - dc.w 0, 4, $CC0E, $FFF8 - dc.w 0, 4, $CC0C, $FFF8 - dc.w $FFF8, 5, $E410, $FFF8 + binclude "Levels/LRZ/Misc/Rock Sprite Attribute Data S3.bin" + even ; --------------------------------------------------------------------------- Obj_PathSwap: @@ -42041,22 +41934,8 @@ GetScalars: ; End of function GetScalars ; --------------------------------------------------------------------------- -ScalarTable: dc.w 0, $192, $324, $4B5, $646, $7D6, $964, $AF1, $C7C, $E06, $F8D, $1112, $1294, $1413, $1590, $1709 - dc.w $187E, $19EF, $1B5D, $1CC6, $1E2B, $1F8C, $20E7, $223D, $238E, $24DA, $2620, $2760, $289A, $29CE, $2AFB, $2C21 - dc.w $2D41, $2E5A, $2F6C, $3076, $3179, $3274, $3368, $3453, $3537, $3612, $36E5, $37B0, $3871, $392B, $39DB, $3A82 - dc.w $3B21, $3BB6, $3C42, $3CC5, $3D3F, $3DAF, $3E15, $3E72, $3EC5, $3F0F, $3F4F, $3F85, $3FB1, $3FD4, $3FEC, $3FFB - dc.w $4000, $3FFB, $3FEC, $3FD4, $3FB1, $3F85, $3F4F, $3F0F, $3EC5, $3E72, $3E15, $3DAF, $3D3F, $3CC5, $3C42, $3BB6 - dc.w $3B21, $3A82, $39DB, $392B, $3871, $37B0, $36E5, $3612, $3537, $3453, $3368, $3274, $3179, $3076, $2F6C, $2E5A - dc.w $2D41, $2C21, $2AFB, $29CE, $289A, $2760, $2620, $24DA, $238E, $223D, $20E7, $1F8C, $1E2B, $1CC6, $1B5D, $19EF - dc.w $187E, $1709, $1590, $1413, $1294, $1112, $F8D, $E06, $C7C, $AF1, $964, $7D6, $646, $4B5, $324, $192 - dc.w 0, $FE6E, $FCDC, $FB4B, $F9BA, $F82A, $F69C, $F50F, $F384, $F1FA, $F073, $EEEE, $ED6C, $EBED, $EA70, $E8F7 - dc.w $E782, $E611, $E4A3, $E33A, $E1D5, $E074, $DF19, $DDC3, $DC72, $DB26, $D9E0, $D8A0, $D766, $D632, $D505, $D3DF - dc.w $D2BF, $D1A6, $D094, $CF8A, $CE87, $CD8C, $CC98, $CBAD, $CAC9, $C9EE, $C91B, $C850, $C78F, $C6D5, $C625, $C57E - dc.w $C4DF, $C44A, $C3BE, $C33B, $C2C1, $C251, $C1EB, $C18E, $C13B, $C0F1, $C0B1, $C07B, $C04F, $C02C, $C014, $C005 - dc.w $C000, $C005, $C014, $C02C, $C04F, $C07B, $C0B1, $C0F1, $C13B, $C18E, $C1EB, $C251, $C2C1, $C33B, $C3BE, $C44A - dc.w $C4DF, $C57E, $C625, $C6D5, $C78F, $C850, $C91B, $C9EE, $CAC9, $CBAD, $CC98, $CD8C, $CE87, $CF8A, $D094, $D1A6 - dc.w $D2BF, $D3DF, $D505, $D632, $D766, $D8A0, $D9E0, $DB26, $DC72, $DDC3, $DF19, $E074, $E1D5, $E33A, $E4A3, $E611 - dc.w $E782, $E8F7, $EA70, $EBED, $ED6C, $EEEE, $F073, $F1FA, $F384, $F50F, $F69C, $F82A, $F9BA, $FB4B, $FCDC, $FE6E +ScalarTable: binclude "General/Special Stage/Scalars.bin" + even Map_SphereTest: include "General/Special Stage/Map - Eosian Spheres.asm" ; --------------------------------------------------------------------------- diff --git a/sonic3k.asm b/sonic3k.asm index 5bf80fd3..89be5358 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -12828,22 +12828,8 @@ GetScalars2: ; End of function GetScalars2 ; --------------------------------------------------------------------------- -ScalarTable2: dc.w 0, $192, $324, $4B5, $646, $7D6, $964, $AF1, $C7C, $E06, $F8D, $1112, $1294, $1413, $1590, $1709 - dc.w $187E, $19EF, $1B5D, $1CC6, $1E2B, $1F8C, $20E7, $223D, $238E, $24DA, $2620, $2760, $289A, $29CE, $2AFB, $2C21 - dc.w $2D41, $2E5A, $2F6C, $3076, $3179, $3274, $3368, $3453, $3537, $3612, $36E5, $37B0, $3871, $392B, $39DB, $3A82 - dc.w $3B21, $3BB6, $3C42, $3CC5, $3D3F, $3DAF, $3E15, $3E72, $3EC5, $3F0F, $3F4F, $3F85, $3FB1, $3FD4, $3FEC, $3FFB - dc.w $4000, $3FFB, $3FEC, $3FD4, $3FB1, $3F85, $3F4F, $3F0F, $3EC5, $3E72, $3E15, $3DAF, $3D3F, $3CC5, $3C42, $3BB6 - dc.w $3B21, $3A82, $39DB, $392B, $3871, $37B0, $36E5, $3612, $3537, $3453, $3368, $3274, $3179, $3076, $2F6C, $2E5A - dc.w $2D41, $2C21, $2AFB, $29CE, $289A, $2760, $2620, $24DA, $238E, $223D, $20E7, $1F8C, $1E2B, $1CC6, $1B5D, $19EF - dc.w $187E, $1709, $1590, $1413, $1294, $1112, $F8D, $E06, $C7C, $AF1, $964, $7D6, $646, $4B5, $324, $192 - dc.w 0, $FE6E, $FCDC, $FB4B, $F9BA, $F82A, $F69C, $F50F, $F384, $F1FA, $F073, $EEEE, $ED6C, $EBED, $EA70, $E8F7 - dc.w $E782, $E611, $E4A3, $E33A, $E1D5, $E074, $DF19, $DDC3, $DC72, $DB26, $D9E0, $D8A0, $D766, $D632, $D505, $D3DF - dc.w $D2BF, $D1A6, $D094, $CF8A, $CE87, $CD8C, $CC98, $CBAD, $CAC9, $C9EE, $C91B, $C850, $C78F, $C6D5, $C625, $C57E - dc.w $C4DF, $C44A, $C3BE, $C33B, $C2C1, $C251, $C1EB, $C18E, $C13B, $C0F1, $C0B1, $C07B, $C04F, $C02C, $C014, $C005 - dc.w $C000, $C005, $C014, $C02C, $C04F, $C07B, $C0B1, $C0F1, $C13B, $C18E, $C1EB, $C251, $C2C1, $C33B, $C3BE, $C44A - dc.w $C4DF, $C57E, $C625, $C6D5, $C78F, $C850, $C91B, $C9EE, $CAC9, $CBAD, $CC98, $CD8C, $CE87, $CF8A, $D094, $D1A6 - dc.w $D2BF, $D3DF, $D505, $D632, $D766, $D8A0, $D9E0, $DB26, $DC72, $DDC3, $DF19, $E074, $E1D5, $E33A, $E4A3, $E611 - dc.w $E782, $E8F7, $EA70, $EBED, $ED6C, $EEEE, $F073, $F1FA, $F384, $F50F, $F69C, $F82A, $F9BA, $FB4B, $FCDC, $FE6E +ScalarTable2: binclude "General/Special Stage/Scalars.bin" + even Map_SStageSphere: include "General/Special Stage/Map - Sphere.asm" Map_SStageRing: include "General/Special Stage/Map - Ring.asm" From fa3f17bd08885e5b22efdb7a8f8237752efc6954 Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Tue, 9 Nov 2021 18:50:02 +0000 Subject: [PATCH 31/72] Rename a couple of files --- Build Scripts/s3.txt | 4 ++-- ... Block Platform.bin => Act 2 Block Platform.bin} | Bin ...2 Knuckles Wall.bin => Act 2 Knuckles Wall.bin} | Bin Lockon S3/LockOn Data.asm | 4 ++-- SonLVL INI Files/Common/BreakableWall.cs | 2 +- SonLVL INI Files/Common/StillSprite.cs | 2 +- SonLVL INI Files/Common/TensionBridge.cs | 2 +- SonLVL INI Files/HCZ/SnakeBlocks.cs | 2 +- SonLVL INI Files/HCZ/SpinningColumn.cs | 2 +- s3.asm | 6 +++--- 10 files changed, 12 insertions(+), 12 deletions(-) rename Levels/HCZ/Nemesis Art/{Act 2 Block Platform.bin => Act 2 Block Platform.bin} (100%) rename Levels/HCZ/Nemesis Art/{Act 2 Knuckles Wall.bin => Act 2 Knuckles Wall.bin} (100%) diff --git a/Build Scripts/s3.txt b/Build Scripts/s3.txt index dd30ca59..a8650011 100644 --- a/Build Scripts/s3.txt +++ b/Build Scripts/s3.txt @@ -189,8 +189,8 @@ #split 0x0018FD88,0x00190348,Levels\HCZ\Nemesis Art\Misc Art.bin #split 0x00190348,0x00190900,Levels\HCZ\Nemesis Art\Water Rush.bin #split 0x00191B36,0x0019204C,Levels\HCZ\Nemesis Art\Act 2 Slide.bin -#split 0x0019204C,0x00192394,Levels\HCZ\Nemesis Art\Act 2 Block Platform.bin -#split 0x00193714,0x0019382E,Levels\HCZ\Nemesis Art\Act 2 Knuckles Wall.bin +#split 0x0019204C,0x00192394,Levels\HCZ\Nemesis Art\Act 2 Block Platform.bin +#split 0x00193714,0x0019382E,Levels\HCZ\Nemesis Art\Act 2 Knuckles Wall.bin #split 0x0019382E,0x0019426C,Levels\MGZ\Nemesis Art\Misc Art 1.bin #split 0x0019426C,0x0019487C,Levels\MGZ\Nemesis Art\Misc Art 2.bin #split 0x0019487C,0x00194AB6,Levels\MGZ\Nemesis Art\Direction Signs.bin diff --git a/Levels/HCZ/Nemesis Art/Act 2 Block Platform.bin b/Levels/HCZ/Nemesis Art/Act 2 Block Platform.bin similarity index 100% rename from Levels/HCZ/Nemesis Art/Act 2 Block Platform.bin rename to Levels/HCZ/Nemesis Art/Act 2 Block Platform.bin diff --git a/Levels/HCZ/Nemesis Art/Act 2 Knuckles Wall.bin b/Levels/HCZ/Nemesis Art/Act 2 Knuckles Wall.bin similarity index 100% rename from Levels/HCZ/Nemesis Art/Act 2 Knuckles Wall.bin rename to Levels/HCZ/Nemesis Art/Act 2 Knuckles Wall.bin diff --git a/Lockon S3/LockOn Data.asm b/Lockon S3/LockOn Data.asm index 7f7bea8a..dd91c790 100644 --- a/Lockon S3/LockOn Data.asm +++ b/Lockon S3/LockOn Data.asm @@ -842,13 +842,13 @@ ArtKosM_HCZGeyserVert: binclude "Levels/HCZ/KosinskiM Art/Geyser Vertical.bin" even ArtNem_HCZ2Slide: binclude "Levels/HCZ/Nemesis Art/Act 2 Slide.bin" even -ArtNem_HCZ2BlockPlat: binclude "Levels/HCZ/Nemesis Art/Act 2 Block Platform.bin" +ArtNem_HCZ2BlockPlat: binclude "Levels/HCZ/Nemesis Art/Act 2 Block Platform.bin" even ArtUnc_HCZWaterSplash2: binclude "Levels/HCZ/Animated Tiles/Water Splash 2.bin" even ArtUnc_HCZWaterSplash: binclude "Levels/HCZ/Animated Tiles/Water Splash.bin" even -ArtNem_HCZ2KnuxWall: binclude "Levels/HCZ/Nemesis Art/Act 2 Knuckles Wall.bin" +ArtNem_HCZ2KnuxWall: binclude "Levels/HCZ/Nemesis Art/Act 2 Knuckles Wall.bin" even ArtNem_MGZMisc1: binclude "Levels/MGZ/Nemesis Art/Misc Art 1.bin" even diff --git a/SonLVL INI Files/Common/BreakableWall.cs b/SonLVL INI Files/Common/BreakableWall.cs index 6a5802b2..d2771379 100644 --- a/SonLVL INI Files/Common/BreakableWall.cs +++ b/SonLVL INI Files/Common/BreakableWall.cs @@ -54,7 +54,7 @@ class BreakableWall2 : BreakableWall public override void Init(ObjectData data) { base.Init(data); - var art = LevelData.ReadFile("../Levels/HCZ/Nemesis Art/Act 2 Knuckles Wall.bin", CompressionType.Nemesis); + var art = LevelData.ReadFile("../Levels/HCZ/Nemesis Art/Act 2 Knuckles Wall.bin", CompressionType.Nemesis); var sprite = ObjectHelper.MapASMToBmp(art, "../Levels/HCZ/Misc Object Data/Map - Breakable Wall.asm", 2, 2); sprites[1] = BuildFlippedSprites(sprite); properties[0].Enumeration.Add("Knuckles Wall", 1); diff --git a/SonLVL INI Files/Common/StillSprite.cs b/SonLVL INI Files/Common/StillSprite.cs index a3560af6..88fa6677 100644 --- a/SonLVL INI Files/Common/StillSprite.cs +++ b/SonLVL INI Files/Common/StillSprite.cs @@ -81,7 +81,7 @@ public override void Init(ObjectData data) var art5 = indexer.ToArray(); indexer.AddFile(new List(LevelData.ReadFile( - "../Levels/HCZ/Nemesis Art/Act 2 Block Platform.bin", CompressionType.Nemesis)), -512); + "../Levels/HCZ/Nemesis Art/Act 2 Block Platform.bin", CompressionType.Nemesis)), -512); var art6 = indexer.ToArray(); BuildSpritesSubtypes( diff --git a/SonLVL INI Files/Common/TensionBridge.cs b/SonLVL INI Files/Common/TensionBridge.cs index dd8885bd..e7498727 100644 --- a/SonLVL INI Files/Common/TensionBridge.cs +++ b/SonLVL INI Files/Common/TensionBridge.cs @@ -11,7 +11,7 @@ class TensionBridge : Common.TensionBridge public override void Init(ObjectData data) { BuildSpritesProperties( - "../Levels/HCZ/Nemesis Art/Act 2 Block Platform.bin", -512, + "../Levels/HCZ/Nemesis Art/Act 2 Block Platform.bin", -512, "../Levels/Misc/Map - Tension Bridge.asm", 2, false, null, null, 0); } } diff --git a/SonLVL INI Files/HCZ/SnakeBlocks.cs b/SonLVL INI Files/HCZ/SnakeBlocks.cs index e5285c4a..1fe27f8f 100644 --- a/SonLVL INI Files/HCZ/SnakeBlocks.cs +++ b/SonLVL INI Files/HCZ/SnakeBlocks.cs @@ -77,7 +77,7 @@ public override void Init(ObjectData data) properties = new PropertySpec[2]; subtypes = new ReadOnlyCollection(new byte[0]); sprite = ObjectHelper.MapASMToBmp(LevelData.ReadFile( - "../Levels/HCZ/Nemesis Art/Act 2 Block Platform.bin", CompressionType.Nemesis), + "../Levels/HCZ/Nemesis Art/Act 2 Block Platform.bin", CompressionType.Nemesis), "../Levels/HCZ/Misc Object Data/Map - Floating Platform.asm", 1, 0); var bitmap = new BitmapBits(129, 129); diff --git a/SonLVL INI Files/HCZ/SpinningColumn.cs b/SonLVL INI Files/HCZ/SpinningColumn.cs index 016658dc..3ef0f3cf 100644 --- a/SonLVL INI Files/HCZ/SpinningColumn.cs +++ b/SonLVL INI Files/HCZ/SpinningColumn.cs @@ -98,7 +98,7 @@ public override void Init(ObjectData data) { var indexer = new MultiFileIndexer(); indexer.AddFile(new List(LevelData.ReadFile( - "../Levels/HCZ/Nemesis Art/Act 2 Block Platform.bin", CompressionType.Nemesis)), -768); + "../Levels/HCZ/Nemesis Art/Act 2 Block Platform.bin", CompressionType.Nemesis)), -768); properties = new PropertySpec[2]; subtypes = new ReadOnlyCollection(new byte[0]); diff --git a/s3.asm b/s3.asm index fc80d8a3..66eb0dde 100644 --- a/s3.asm +++ b/s3.asm @@ -119586,7 +119586,7 @@ ArtNem_AIZSlideRope: binclude "Levels/AIZ/Nemesis Art/Zip Vine.bin" even ArtNem_AIZBackgroundTree: - binclude "Levels/AIZ/Nemesis Art/BG Tree.bin" + binclude "Levels/AIZ/Nemesis Art/BG Tree.bin" even ArtNem_AIZMisc1:binclude "Levels/AIZ/Nemesis Art/Misc Art 1.bin" even @@ -119622,7 +119622,7 @@ ArtNem_HCZ2Slide: binclude "Levels/HCZ/Nemesis Art/Act 2 Slide.bin" even ArtNem_HCZ2BlockPlat: - binclude "Levels/HCZ/Nemesis Art/Act 2 Block Platform.bin" + binclude "Levels/HCZ/Nemesis Art/Act 2 Block Platform.bin" even ArtUnc_HCZWaterSplash2: binclude "Levels/HCZ/Animated Tiles/Water Splash 2.bin" @@ -119631,7 +119631,7 @@ ArtUnc_HCZWaterSplash: binclude "Levels/HCZ/Animated Tiles/Water Splash.bin" even ArtNem_HCZ2KnuxWall: - binclude "Levels/HCZ/Nemesis Art/Act 2 Knuckles Wall.bin" + binclude "Levels/HCZ/Nemesis Art/Act 2 Knuckles Wall.bin" even ArtNem_MGZMisc1:binclude "Levels/MGZ/Nemesis Art/Misc Art 1.bin" even From 019320b7a43da5e08397bc646b6c1a5c2892f483 Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Tue, 9 Nov 2021 22:09:41 +0000 Subject: [PATCH 32/72] Rename a few labels --- General/Sprites/Shields/Anim - Shield S2.asm | 2 +- General/Sprites/Shields/Map - Shield S2.asm | 12 +- s3.asm | 245 ++++++++++--------- sonic3k.asm | 166 +++++++------ 4 files changed, 221 insertions(+), 204 deletions(-) diff --git a/General/Sprites/Shields/Anim - Shield S2.asm b/General/Sprites/Shields/Anim - Shield S2.asm index 6bd0c8e2..d9873309 100644 --- a/General/Sprites/Shields/Anim - Shield S2.asm +++ b/General/Sprites/Shields/Anim - Shield S2.asm @@ -1,3 +1,3 @@ - dc.w byte_177B6-Ani_Shield_S2 + dc.w byte_177B6-Ani_S2Shield byte_177B6: dc.b 0, 5, 0, 5, 1, 5, 2, 5, 3, 5, 4, $FF even \ No newline at end of file diff --git a/General/Sprites/Shields/Map - Shield S2.asm b/General/Sprites/Shields/Map - Shield S2.asm index 6b285619..b1cb538c 100644 --- a/General/Sprites/Shields/Map - Shield S2.asm +++ b/General/Sprites/Shields/Map - Shield S2.asm @@ -1,9 +1,9 @@ - dc.w word_177CE-Map_Shield_S2 - dc.w word_177E8-Map_Shield_S2 - dc.w word_17802-Map_Shield_S2 - dc.w word_1781C-Map_Shield_S2 - dc.w word_17836-Map_Shield_S2 - dc.w word_17850-Map_Shield_S2 + dc.w word_177CE-Map_S2Shield + dc.w word_177E8-Map_S2Shield + dc.w word_17802-Map_S2Shield + dc.w word_1781C-Map_S2Shield + dc.w word_17836-Map_S2Shield + dc.w word_17850-Map_S2Shield word_177CE: dc.w 4 dc.b $F0, 5, 0, 0, $FF, $F0 dc.b $F0, 5, 8, 0, 0, 0 diff --git a/s3.asm b/s3.asm index 66eb0dde..b0959525 100644 --- a/s3.asm +++ b/s3.asm @@ -3221,7 +3221,7 @@ AnPal_Load: OffsAnPal: dc.w AnPal_AIZ1-OffsAnPal dc.w AnPal_AIZ2-OffsAnPal dc.w AnPal_HCZ1-OffsAnPal - dc.w AnPal_None2-OffsAnPal + dc.w AnPal_HCZ2-OffsAnPal dc.w AnPal_None-OffsAnPal dc.w AnPal_None-OffsAnPal dc.w AnPal_CNZ-OffsAnPal @@ -3416,7 +3416,7 @@ locret_2608: ; --------------------------------------------------------------------------- -AnPal_None2: +AnPal_HCZ2: rts ; --------------------------------------------------------------------------- @@ -4452,7 +4452,7 @@ loc_36AE: bsr.w Play_Sound move.w #$B4,(Demo_timer).w -Wait_SegaS3K: +Wait_Sega: move.b #$14,(V_int_routine).w bsr.w Wait_VSync move.b (Ctrl_1_pressed).w,d0 @@ -4460,7 +4460,7 @@ Wait_SegaS3K: andi.b #-$80,d0 bne.w loc_36F8 tst.w (Demo_timer).w - bne.s Wait_SegaS3K + bne.s Wait_Sega loc_36F8: moveq #signextendB(mus_StopSEGA),d0 @@ -4491,7 +4491,7 @@ loc_3704: moveq #signextendB(mus_TitleScreen),d0 bsr.w Play_Sound -Wait_TitleS3K: +Wait_Title: move.b #4,(V_int_routine).w jsr (Process_Kos_Queue).l bsr.w Wait_VSync @@ -4505,7 +4505,7 @@ Wait_TitleS3K: andi.b #-$80,d0 bne.w loc_379E cmpi.w #$C,(Title_anim_frame).w - bcs.s Wait_TitleS3K + bcs.s Wait_Title loc_379E: move.w #$C,(Title_anim_frame).w @@ -20593,7 +20593,7 @@ Sonic_JumpHeight: loc_128F0: cmp.w $1A(a0),d1 - ble.w Sonic_InstaAndShieldMoves + ble.w Sonic_ShieldMoves move.b (Ctrl_1_held_logical).w,d0 andi.b #$70,d0 bne.s locret_12906 @@ -20614,7 +20614,7 @@ locret_1291C: rts ; --------------------------------------------------------------------------- -Sonic_InstaAndShieldMoves: +Sonic_ShieldMoves: tst.b $2F(a0) bne.w locret_12A20 move.b (Ctrl_1_pressed_logical).w,d0 @@ -27311,40 +27311,40 @@ loc_1744C: Ani_Shields: include "General/Sprites/Shields/Anim - Shields.asm" ; --------------------------------------------------------------------------- -Obj_Shield_S2: +Obj_S2Shield: moveq #0,d0 move.b 5(a0),d0 - move.w Obj_Shield_S2_Index(pc,d0.w),d1 - jmp Obj_Shield_S2_Index(pc,d1.w) + move.w Obj_S2Shield_Index(pc,d0.w),d1 + jmp Obj_S2Shield_Index(pc,d1.w) ; --------------------------------------------------------------------------- -Obj_Shield_S2_Index:dc.w Obj_Shield_S2_Init-Obj_Shield_S2_Index - dc.w Obj_Shield_S2_Main-Obj_Shield_S2_Index +Obj_S2Shield_Index:dc.w Obj_S2Shield_Init-Obj_S2Shield_Index + dc.w Obj_S2Shield_Main-Obj_S2Shield_Index ; --------------------------------------------------------------------------- -Obj_Shield_S2_Init: +Obj_S2Shield_Init: addq.b #2,5(a0) - move.l #Map_Shield_S2,$C(a0) + move.l #Map_S2Shield,$C(a0) move.b #4,4(a0) move.w #$80,8(a0) move.b #$18,7(a0) move.w #ArtTile_Shield,$A(a0) -Obj_Shield_S2_Main: +Obj_S2Shield_Main: movea.w $42(a0),a2 btst #1,$2B(a2) bne.s locret_17566 btst #0,$2B(a2) - beq.s Obj_Shield_S2_Destroy + beq.s Obj_S2Shield_Destroy move.w $10(a2),$10(a0) move.w $14(a2),$14(a0) move.b $2A(a2),$2A(a0) andi.w #$7FFF,$A(a0) tst.w $A(a2) - bpl.s Obj_Shield_S2_Display + bpl.s Obj_S2Shield_Display ori.w #$8000,$A(a0) -Obj_Shield_S2_Display: - lea (Ani_Shield_S2).l,a1 +Obj_S2Shield_Display: + lea (Ani_S2Shield).l,a1 jsr (Animate_Sprite).l jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- @@ -27353,7 +27353,7 @@ locret_17566: rts ; --------------------------------------------------------------------------- -Obj_Shield_S2_Destroy: +Obj_S2Shield_Destroy: jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- off_1756E: dc.l byte_1776D @@ -27519,8 +27519,8 @@ byte_17782: dc.b 8, 7, 6, 5, 4, 3, 2, 3, 4, 5, 6, 7, $F dc.b 7, 6, 5, 4, 3 byte_1779B: dc.b 7, 6, 5, 4, 3, 2, 1, 2, 3, 4, 5, 6, $FF, 1, 2, 3, 4, 5, 6, 7 dc.b 6, 5, 4, 3, 2 -Ani_Shield_S2: include "General/Sprites/Shields/Anim - Shield S2.asm" -Map_Shield_S2: include "General/Sprites/Shields/Map - Shield S2.asm" +Ani_S2Shield: include "General/Sprites/Shields/Anim - Shield S2.asm" +Map_S2Shield: include "General/Sprites/Shields/Map - Shield S2.asm" Map_Invincibility: include "General/Sprites/Shields/Map - Invincibility.asm" ; --------------------------------------------------------------------------- @@ -31459,50 +31459,50 @@ LevelResizeArray:dc.w AIZ1_Resize-LevelResizeArray dc.w AIZ2_Resize-LevelResizeArray dc.w HCZ1_Resize-LevelResizeArray dc.w HCZ2_Resize-LevelResizeArray - dc.w MGZ_Resize-LevelResizeArray - dc.w MGZ_Resize-LevelResizeArray - dc.w No_Resize2-LevelResizeArray - dc.w No_Resize2-LevelResizeArray - dc.w No_Resize2-LevelResizeArray - dc.w No_Resize2-LevelResizeArray + dc.w MGZ1_Resize-LevelResizeArray + dc.w MGZ2_Resize-LevelResizeArray + dc.w CNZ1_Resize-LevelResizeArray + dc.w CNZ2_Resize-LevelResizeArray + dc.w FBZ1_Resize-LevelResizeArray + dc.w FBZ2_Resize-LevelResizeArray dc.w ICZ1_Resize-LevelResizeArray dc.w ICZ2_Resize-LevelResizeArray - dc.w No_Resize-LevelResizeArray + dc.w LBZ1_Resize-LevelResizeArray dc.w LBZ2_Resize-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray ; --------------------------------------------------------------------------- AIZ1_Resize: @@ -31648,7 +31648,7 @@ off_1AAAA: dc.w AIZ2_Resize1-off_1AAAA dc.w AIZ2_Resize6-off_1AAAA dc.w AIZ2_Resize7-off_1AAAA dc.w AIZ2_Resize8-off_1AAAA - dc.w AIZ2_SonicResizeEnd-off_1AAAA + dc.w AIZ2_ResizeEnd-off_1AAAA ; --------------------------------------------------------------------------- AIZ2_Resize1: @@ -31797,7 +31797,7 @@ locret_1AC36: rts ; --------------------------------------------------------------------------- -AIZ2_SonicResizeEnd: +AIZ2_ResizeEnd: rts ; --------------------------------------------------------------------------- @@ -31881,7 +31881,11 @@ locret_1ACD6: rts ; --------------------------------------------------------------------------- -MGZ_Resize: +MGZ1_Resize: + ; Bug: MGZ1 uses a dynamic resize routine meant for MGZ2 + ; This causes the act 2 boss to spawn in out-of-bounds act 1 + +MGZ2_Resize: moveq #0,d0 move.b (Dynamic_resize_routine).w,d0 move.w off_1ACE6(pc,d0.w),d0 @@ -31950,7 +31954,10 @@ locret_1AD84: rts ; --------------------------------------------------------------------------- -No_Resize2: +CNZ1_Resize: +CNZ2_Resize: +FBZ1_Resize: +FBZ2_Resize: rts ; --------------------------------------------------------------------------- @@ -32017,7 +32024,7 @@ locret_1ADF8: rts ; --------------------------------------------------------------------------- -No_Resize: +LBZ1_Resize: rts ; --------------------------------------------------------------------------- @@ -32058,7 +32065,7 @@ locret_1AE66: rts ; --------------------------------------------------------------------------- -No_Resize3: +No_Resize: rts ; =============== S U B R O U T I N E ======================================= @@ -32622,7 +32629,7 @@ loc_1B4C8: lea (Player_1).w,a1 moveq #3,d6 movem.l d1-d4,-(sp) - bsr.w SolidObject_Monitor_SonicKnux + bsr.w SolidObject_Monitor_Sonic movem.l (sp)+,d1-d4 lea (Player_2).w,a1 moveq #4,d6 @@ -32639,13 +32646,13 @@ loc_1B504: ; =============== S U B R O U T I N E ======================================= -SolidObject_Monitor_SonicKnux: +SolidObject_Monitor_Sonic: btst d6,$2A(a0) bne.s Monitor_ChkOverEdge cmpi.b #2,$20(a1) bne.w SolidObject_cont rts -; End of function SolidObject_Monitor_SonicKnux +; End of function SolidObject_Monitor_Sonic ; =============== S U B R O U T I N E ======================================= @@ -38395,7 +38402,7 @@ loc_20BD0: move.w #1,$20(a0) subi.w #5,$10(a0) move.b #7,$22(a0) - jsr (SurfboardIntro_LoadPLC).l + jsr (SurfboardIntro_Load_PLC).l bra.s loc_20C00 ; --------------------------------------------------------------------------- @@ -38439,7 +38446,7 @@ loc_20C30: loc_20C74: lea (Ani_SurfboardIntro).l,a1 jsr (Animate_Sprite).l - jsr (SurfboardIntro_LoadPLC).l + jsr (SurfboardIntro_Load_PLC).l jmp (Sprite_OnScreen_Test).l ; --------------------------------------------------------------------------- Ani_SurfboardIntro: @@ -38536,7 +38543,7 @@ loc_20D98: move.b (a1,d0.w),d0 addq.b #1,d0 move.b d0,$22(a0) - jsr (SurfboardIntro_LoadPLC).l + jsr (SurfboardIntro_Load_PLC).l subq.w #1,$2E(a0) bpl.s locret_20DCA move.w #5,$2E(a0) @@ -38558,7 +38565,7 @@ SurfboardIntro_UpFrames: ; =============== S U B R O U T I N E ======================================= -SurfboardIntro_LoadPLC: +SurfboardIntro_Load_PLC: moveq #0,d0 move.b $22(a0),d0 cmp.b (Player_prev_frame).w,d0 @@ -38590,7 +38597,7 @@ loc_20E06: locret_20E32: rts -; End of function SurfboardIntro_LoadPLC +; End of function SurfboardIntro_Load_PLC ; --------------------------------------------------------------------------- Map_SurfboardIntro: @@ -77896,7 +77903,7 @@ ArtNem_EndingGraphics: binclude "General/Ending/Nemesis Art/S3 Ending Graphics.bin" even ; --------------------------------------------------------------------------- - movea.l ObjB0(pc,d6.w),a6 + movea.l Obj_SonicOnSegaScr(pc,d6.w),a6 jsr (a6) nop nop @@ -77911,21 +77918,21 @@ ArtNem_EndingGraphics: rte ; --------------------------------------------------------------------------- -ObjB0: +Obj_SonicOnSegaScr: moveq #0,d0 move.b 5(a0),d0 - move.w ObjB0_Index(pc,d0.w),d1 - jmp ObjB0_Index(pc,d1.w) + move.w off_4316C(pc,d0.w),d1 + jmp off_4316C(pc,d1.w) ; --------------------------------------------------------------------------- -ObjB0_Index: dc.w ObjB0_Init-ObjB0_Index - dc.w ObjB0_RunLeft-ObjB0_Index - dc.w ObjB0_MidWipe-ObjB0_Index - dc.w ObjB0_RunRight-ObjB0_Index - dc.w ObjB0_EndWipe-ObjB0_Index - dc.w locret_43340-ObjB0_Index +off_4316C: dc.w SonicOnSegaScr_Init-off_4316C + dc.w SonicOnSegaScr_RunLeft-off_4316C + dc.w SonicOnSegaScr_MidWipe-off_4316C + dc.w SonicOnSegaScr_RunRight-off_4316C + dc.w SonicOnSegaScr_EndWipe-off_4316C + dc.w locret_43340-off_4316C ; --------------------------------------------------------------------------- -ObjB0_Init: +SonicOnSegaScr_Init: lea ObjDat3_434E0(pc),a1 jsr (SetUp_ObjAttributes).l move.b #0,4(a0) @@ -77996,11 +78003,11 @@ SonicRunningSpriteScaleData: dc.b 3 ; --------------------------------------------------------------------------- -ObjB0_RunLeft: +SonicOnSegaScr_RunLeft: subi.w #$20,$10(a0) subq.w #1,$2E(a0) bmi.s loc_43254 - bsr.w ObjB0_Move_Streaks_Left + bsr.w SonicOnSegaScr_Move_Streaks_Left lea (Ani_SonicOnSegaScr).l,a1 jsr (Animate_Sprite).l jmp (Draw_Sprite).l @@ -78014,11 +78021,11 @@ loc_43254: jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -ObjB0_MidWipe: +SonicOnSegaScr_MidWipe: tst.w $2E(a0) beq.s loc_4327E subq.w #1,$2E(a0) - bsr.w ObjB0_Move_Streaks_Left + bsr.w SonicOnSegaScr_Move_Streaks_Left loc_4327E: lea byte_433F4(pc),a1 @@ -78057,11 +78064,11 @@ locret_432D8: rts ; --------------------------------------------------------------------------- -ObjB0_RunRight: +SonicOnSegaScr_RunRight: subq.w #1,$2E(a0) bmi.s loc_432FC addi.w #$20,$10(a0) - bsr.w ObjB0_Move_Streaks_Right + bsr.w SonicOnSegaScr_Move_Streaks_Right lea (Ani_SonicOnSegaScr).l,a1 jsr (Animate_Sprite).l jmp (Draw_Sprite).l @@ -78075,11 +78082,11 @@ loc_432FC: rts ; --------------------------------------------------------------------------- -ObjB0_EndWipe: +SonicOnSegaScr_EndWipe: tst.w $2E(a0) beq.s loc_43322 subq.w #1,$2E(a0) - bsr.w ObjB0_Move_Streaks_Right + bsr.w SonicOnSegaScr_Move_Streaks_Right loc_43322: lea byte_4346A(pc),a1 @@ -78124,7 +78131,7 @@ ObjB1_Main: ; =============== S U B R O U T I N E ======================================= -ObjB0_Move_Streaks_Left: +SonicOnSegaScr_Move_Streaks_Left: lea (H_scroll_buffer+$138).w,a1 move.w #$22,d6 @@ -78133,13 +78140,13 @@ loc_43386: addq.w #8,a1 dbf d6,loc_43386 rts -; End of function ObjB0_Move_Streaks_Left +; End of function SonicOnSegaScr_Move_Streaks_Left ; =============== S U B R O U T I N E ======================================= -ObjB0_Move_Streaks_Right: +SonicOnSegaScr_Move_Streaks_Right: lea (H_scroll_buffer+$13C).w,a1 move.w #$22,d6 @@ -78148,7 +78155,7 @@ loc_4339A: addq.w #8,a1 dbf d6,loc_4339A rts -; End of function ObjB0_Move_Streaks_Right +; End of function SonicOnSegaScr_Move_Streaks_Right ; =============== S U B R O U T I N E ======================================= @@ -79732,7 +79739,7 @@ loc_44790: bset #7,$2A(a0) move.w #-$600,$1A(a0) move.w #$80,$18(a0) - lea Pal_CutsceneKnux1(pc),a1 + lea Pal_CutsceneKnux(pc),a1 jmp (PalLoad_Line1).l ; --------------------------------------------------------------------------- @@ -79880,7 +79887,7 @@ loc_44950: bsr.w sub_456C6 move.w #$77,$2E(a0) move.l #loc_449A8,$34(a0) - lea Pal_CutsceneKnux1(pc),a1 + lea Pal_CutsceneKnux(pc),a1 jsr (PalLoad_Line1).l lea ChildObjDat_4572A(pc),a2 jsr (CreateChild6_Simple).l @@ -80053,7 +80060,7 @@ loc_44B42: move.w #$1F,$2E(a0) move.l #loc_44B82,$34(a0) move.w #$5C0,(Camera_min_Y_pos).w - lea Pal_CutsceneKnux1(pc),a1 + lea Pal_CutsceneKnux(pc),a1 jmp (PalLoad_Line1).l ; --------------------------------------------------------------------------- @@ -80142,7 +80149,7 @@ loc_44C36: move.w #$1D00,$1C(a0) move.w #$1D00,(Camera_max_X_pos).w move.l #loc_44CAE,$34(a0) - lea Pal_CutsceneKnux1(pc),a1 + lea Pal_CutsceneKnux(pc),a1 jsr (PalLoad_Line1).l lea ChildObjDat_45730(pc),a2 jmp (CreateChild1_Normal).l @@ -80345,7 +80352,7 @@ loc_44EA2: st (Ctrl_1_locked).w move.b #-$80,(Player_1+object_control).w bsr.w sub_456C6 - lea Pal_CutsceneKnux1(pc),a1 + lea Pal_CutsceneKnux(pc),a1 jmp (PalLoad_Line1).l ; --------------------------------------------------------------------------- @@ -80463,7 +80470,7 @@ loc_44FE8: jsr (SetUp_ObjAttributesSlotted).l move.b #$16,$22(a0) move.w #$A0,(Camera_min_Y_pos).w - lea Pal_CutsceneKnux1(pc),a1 + lea Pal_CutsceneKnux(pc),a1 jsr (PalLoad_Line1).l lea ChildObjDat_45738(pc),a2 jmp (CreateChild1_Normal).l @@ -80661,7 +80668,7 @@ loc_45242: bset #0,4(a0) move.b #$20,$22(a0) bsr.w sub_456C6 - lea Pal_CutsceneKnux1(pc),a1 + lea Pal_CutsceneKnux(pc),a1 jsr (PalLoad_Line1).l lea ChildObjDat_4574E(pc),a2 jmp (CreateChild3_NormalRepeated).l @@ -81151,7 +81158,7 @@ byte_4579E: dc.b $20, 5 dc.b $21, 5 dc.b $20, 5 dc.b $F4, 0 -Pal_CutsceneKnux1: +Pal_CutsceneKnux: binclude "General/Sprites/Knuckles/Cutscene/Pal.bin" even Pal_CNZFlash: binclude "Levels/CNZ/Palettes/Flash.bin" @@ -115790,8 +115797,8 @@ LevelLoadBlock: levartptrs $B, $B, $A, AIZ1_8x8_Primary_KosM, AIZ1_8x8_Second levartptrs $14, $14, $F, MGZ_8x8_Primary_KosM, MGZ2_8x8_Secondary_KosM, MGZ_16x16_Primary_Kos, MGZ2_16x16_Secondary_Kos, MGZ_128x128_Primary_Kos, MGZ2_128x128_Secondary_Kos levartptrs $16, $17, $10, CNZ_8x8_KosM, CNZ_8x8_KosM, CNZ_16x16_Kos, CNZ_16x16_Kos, CNZ_128x128_Kos, CNZ_128x128_Kos levartptrs $18, $19, $11, CNZ_8x8_KosM, CNZ_8x8_KosM, CNZ_16x16_Kos, CNZ_16x16_Kos, CNZ_128x128_Kos, CNZ_128x128_Kos - levartptrs $1A, $1A, $12, ArtKosM_FBZ, ArtKosM_FBZ, FBZ_16x16_Kos, FBZ_16x16_Kos, FBZ_128x128_Kos, FBZ_128x128_Kos - levartptrs $1C, $1C, $13, ArtKosM_FBZ, ArtKosM_FBZ, FBZ_16x16_Kos, FBZ_16x16_Kos, FBZ_128x128_Kos, FBZ_128x128_Kos + levartptrs $1A, $1A, $12, FBZ1_8x8_KosM, FBZ1_8x8_KosM, FBZ1_16x16_Kos, FBZ1_16x16_Kos, FBZ1_128x128_Kos, FBZ1_128x128_Kos + levartptrs $1C, $1C, $13, FBZ2_8x8_KosM, FBZ2_8x8_KosM, FBZ2_16x16_Kos, FBZ2_16x16_Kos, FBZ2_128x128_Kos, FBZ2_128x128_Kos levartptrs $1E, $1E, $14, ICZ_8x8_Primary_KosM, ICZ1_8x8_Secondary_KosM, ICZ_16x16_Primary_Kos, ICZ1_16x16_Secondary_Kos, ICZ_128x128_Primary_Kos, ICZ1_128x128_Secondary_Kos levartptrs $20, $20, $15, ICZ_8x8_Primary_KosM, ICZ2_8x8_Secondary_KosM, ICZ_16x16_Primary_Kos, ICZ2_16x16_Secondary_Kos, ICZ_128x128_Primary_Kos, ICZ2_128x128_Secondary_Kos levartptrs $22, $22, $16, LBZ_8x8_Primary_KosM, LBZ1_8x8_Secondary_KosM, LBZ_16x16_Primary_Kos, LBZ1_16x16_Secondary_Kos, LBZ1_128x128_Kos, LBZ1_128x128_Kos @@ -117381,8 +117388,8 @@ SolidIndexes: dc.l Solid_AIZ1 dc.l Solid_MGZ2 dc.l Solid_CNZ dc.l Solid_CNZ - dc.l Solid_FBZ - dc.l Solid_FBZ + dc.l Solid_FBZ1 + dc.l Solid_FBZ2 dc.l Solid_ICZ1 dc.l Solid_ICZ2 dc.l Solid_LBZ1 @@ -117435,7 +117442,8 @@ Solid_MGZ2: binclude "Levels/MGZ/Collision/2.bin" even Solid_CNZ: binclude "Levels/CNZ/Collision/1.bin" even -Solid_FBZ: +Solid_FBZ1: +Solid_FBZ2: Solid_ICZ1: binclude "Levels/ICZ/Collision/1.bin" even Solid_ICZ2: binclude "Levels/ICZ/Collision/2.bin" @@ -119921,9 +119929,12 @@ CNZ_8x8_KosM: binclude "Levels/CNZ/Tiles/Primary.bin" even CNZ_128x128_Kos:binclude "Levels/CNZ/Chunks/Primary.bin" even -FBZ_16x16_Kos: -ArtKosM_FBZ: -FBZ_128x128_Kos: +FBZ1_16x16_Kos: +FBZ1_8x8_KosM: +FBZ1_128x128_Kos: +FBZ2_16x16_Kos: +FBZ2_8x8_KosM: +FBZ2_128x128_Kos: ICZ_16x16_Primary_Kos: binclude "Levels/ICZ/Blocks/Primary.bin" even diff --git a/sonic3k.asm b/sonic3k.asm index 89be5358..ef1a1918 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -2997,7 +2997,7 @@ AnPal_Load: OffsAnPal: dc.w AnPal_AIZ1-OffsAnPal dc.w AnPal_AIZ2-OffsAnPal dc.w AnPal_HCZ1-OffsAnPal - dc.w AnPal_None2-OffsAnPal + dc.w AnPal_HCZ2-OffsAnPal dc.w AnPal_None-OffsAnPal dc.w AnPal_None-OffsAnPal dc.w AnPal_CNZ-OffsAnPal @@ -3194,7 +3194,7 @@ locret_2380: ; --------------------------------------------------------------------------- -AnPal_None2: +AnPal_HCZ2: rts ; --------------------------------------------------------------------------- @@ -23121,7 +23121,7 @@ Sonic_JumpHeight: loc_118D2: cmp.w y_vel(a0),d1 ; is y speed greater than 4? (2 if underwater) - ble.w Sonic_InstaAndShieldMoves ; if not, branch + ble.w Sonic_ShieldMoves ; if not, branch move.b (Ctrl_1_logical).w,d0 andi.b #$70,d0 ; are buttons A, B or C being pressed? bne.s locret_118E8 ; if yes, branch @@ -23142,7 +23142,7 @@ locret_118FE: rts ; --------------------------------------------------------------------------- -Sonic_InstaAndShieldMoves: +Sonic_ShieldMoves: tst.b double_jump_flag(a0) ; is Sonic currently performing a double jump? bne.w locret_11A14 ; if yes, branch move.b (Ctrl_1_pressed_logical).w,d0 @@ -33093,41 +33093,41 @@ Ani_Shields: include "General/Sprites/Shields/Anim - Shields.asm" ; --------------------------------------------------------------------------- -Obj_Shield_S2: +Obj_S2Shield: moveq #0,d0 move.b routine(a0),d0 - move.w Obj_Shield_S2_Index(pc,d0.w),d1 - jmp Obj_Shield_S2_Index(pc,d1.w) + move.w Obj_S2Shield_Index(pc,d0.w),d1 + jmp Obj_S2Shield_Index(pc,d1.w) ; --------------------------------------------------------------------------- -Obj_Shield_S2_Index: - dc.w Obj_Shield_S2_Init-Obj_Shield_S2_Index - dc.w Obj_Shield_S2_Main-Obj_Shield_S2_Index +Obj_S2Shield_Index: + dc.w Obj_S2Shield_Init-Obj_S2Shield_Index + dc.w Obj_S2Shield_Main-Obj_S2Shield_Index ; --------------------------------------------------------------------------- -Obj_Shield_S2_Init: +Obj_S2Shield_Init: addq.b #2,routine(a0) - move.l #Map_Shield_S2,mappings(a0) + move.l #Map_S2Shield,mappings(a0) move.b #4,render_flags(a0) move.w #$80,priority(a0) move.b #$18,width_pixels(a0) move.w #ArtTile_Shield,art_tile(a0) -Obj_Shield_S2_Main: +Obj_S2Shield_Main: movea.w parent(a0),a2 btst #Status_Invincible,status_secondary(a2) bne.s locret_187D6 btst #Status_Shield,status_secondary(a2) - beq.s Obj_Shield_S2_Destroy + beq.s Obj_S2Shield_Destroy move.w x_pos(a2),x_pos(a0) move.w y_pos(a2),y_pos(a0) move.b status(a2),status(a0) andi.w #drawing_mask,art_tile(a0) tst.w art_tile(a2) - bpl.s Obj_Shield_S2_Display + bpl.s Obj_S2Shield_Display ori.w #high_priority,art_tile(a0) -Obj_Shield_S2_Display: - lea (Ani_Shield_S2).l,a1 +Obj_S2Shield_Display: + lea (Ani_S2Shield).l,a1 jsr (Animate_Sprite).l jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- @@ -33136,7 +33136,7 @@ locret_187D6: rts ; --------------------------------------------------------------------------- -Obj_Shield_S2_Destroy: +Obj_S2Shield_Destroy: jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- off_187DE: @@ -33311,9 +33311,9 @@ byte_18A02: dc.b 8, 7, 6, 5, 4, 3, 2, 3, 4, 5, 6, 7, $F byte_18A1B: dc.b 7, 6, 5, 4, 3, 2, 1, 2, 3, 4, 5, 6, $FF, 1, 2, 3, 4, 5, 6, 7 dc.b 6, 5, 4, 3, 2 -Ani_Shield_S2: include "General/Sprites/Shields/Anim - Shield S2.asm" +Ani_S2Shield: include "General/Sprites/Shields/Anim - Shield S2.asm" -Map_Shield_S2: include "General/Sprites/Shields/Map - Shield S2.asm" +Map_S2Shield: include "General/Sprites/Shields/Map - Shield S2.asm" Map_Invincibility:include "General/Sprites/Shields/Map - Invincibility.asm" @@ -38172,50 +38172,50 @@ LevelResizeArray: dc.w AIZ1_Resize-LevelResizeArray dc.w AIZ2_Resize-LevelResizeArray dc.w HCZ1_Resize-LevelResizeArray dc.w HCZ2_Resize-LevelResizeArray - dc.w MGZ_Resize-LevelResizeArray - dc.w MGZ_Resize-LevelResizeArray - dc.w No_Resize2-LevelResizeArray - dc.w No_Resize2-LevelResizeArray - dc.w No_Resize2-LevelResizeArray - dc.w No_Resize2-LevelResizeArray + dc.w MGZ1_Resize-LevelResizeArray + dc.w MGZ2_Resize-LevelResizeArray + dc.w CNZ1_Resize-LevelResizeArray + dc.w CNZ2_Resize-LevelResizeArray + dc.w FBZ1_Resize-LevelResizeArray + dc.w FBZ2_Resize-LevelResizeArray dc.w ICZ1_Resize-LevelResizeArray dc.w ICZ2_Resize-LevelResizeArray - dc.w No_Resize-LevelResizeArray + dc.w LBZ1_Resize-LevelResizeArray dc.w LBZ2_Resize-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray - dc.w No_Resize3-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray + dc.w No_Resize-LevelResizeArray ; --------------------------------------------------------------------------- AIZ1_Resize: @@ -38680,7 +38680,11 @@ locret_1C91A: rts ; --------------------------------------------------------------------------- -MGZ_Resize: +MGZ1_Resize: + ; Bug: MGZ1 uses a dynamic resize routine meant for MGZ2 + ; This causes the act 2 boss to spawn in out-of-bounds act 1 + +MGZ2_Resize: moveq #0,d0 move.b (Dynamic_resize_routine).w,d0 move.w off_1C92A(pc,d0.w),d0 @@ -38749,7 +38753,10 @@ locret_1C9C8: rts ; --------------------------------------------------------------------------- -No_Resize2: +CNZ1_Resize: +CNZ2_Resize: +FBZ1_Resize: +FBZ2_Resize: rts ; --------------------------------------------------------------------------- @@ -38816,7 +38823,7 @@ locret_1CA3C: rts ; --------------------------------------------------------------------------- -No_Resize: +LBZ1_Resize: rts ; --------------------------------------------------------------------------- @@ -38857,7 +38864,7 @@ locret_1CAAA: rts ; --------------------------------------------------------------------------- -No_Resize3: +No_Resize: rts ; =============== S U B R O U T I N E ======================================= @@ -129507,7 +129514,7 @@ loc_61E02: bset #7,$2A(a0) move.w #-$600,$1A(a0) move.w #$80,$18(a0) - lea Pal_CutsceneKnux1(pc),a1 + lea Pal_CutsceneKnux(pc),a1 jmp (PalLoad_Line1).l ; --------------------------------------------------------------------------- @@ -129655,7 +129662,7 @@ loc_61FC2: bsr.w sub_65DD6 move.w #$77,$2E(a0) move.l #loc_6201A,$34(a0) - lea Pal_CutsceneKnux1(pc),a1 + lea Pal_CutsceneKnux(pc),a1 jsr (PalLoad_Line1).l lea ChildObjDat_6655A(pc),a2 jsr (CreateChild6_Simple).l @@ -129837,7 +129844,7 @@ loc_621D6: move.w #$1F,$2E(a0) move.l #loc_62216,$34(a0) move.w #$5C0,(Camera_min_Y_pos).w - lea Pal_CutsceneKnux1(pc),a1 + lea Pal_CutsceneKnux(pc),a1 jmp (PalLoad_Line1).l ; --------------------------------------------------------------------------- @@ -129935,7 +129942,7 @@ loc_622E4: loc_62318: move.l (a1)+,(a2)+ dbf d6,loc_62318 - lea Pal_CutsceneKnux1(pc),a1 + lea Pal_CutsceneKnux(pc),a1 jsr (PalLoad_Line1).l lea ChildObjDat_66560(pc),a2 jmp (CreateChild1_Normal).l @@ -130137,7 +130144,7 @@ loc_62528: st (Ctrl_1_locked).w move.b #-$80,(Player_1+object_control).w bsr.w sub_65DD6 - lea Pal_CutsceneKnux1(pc),a1 + lea Pal_CutsceneKnux(pc),a1 jmp (PalLoad_Line1).l ; --------------------------------------------------------------------------- @@ -130259,7 +130266,7 @@ loc_62678: jsr (SetUp_ObjAttributesSlotted).l move.b #$16,$22(a0) move.w #$A0,(Camera_min_Y_pos).w - lea Pal_CutsceneKnux1(pc),a1 + lea Pal_CutsceneKnux(pc),a1 jsr (PalLoad_Line1).l lea ChildObjDat_6657C(pc),a2 jmp (CreateChild1_Normal).l @@ -130457,7 +130464,7 @@ loc_628E0: bset #0,4(a0) move.b #$20,$22(a0) bsr.w sub_65DD6 - lea Pal_CutsceneKnux1(pc),a1 + lea Pal_CutsceneKnux(pc),a1 jsr (PalLoad_Line1).l lea ChildObjDat_66592(pc),a2 jmp (CreateChild3_NormalRepeated).l @@ -130676,7 +130683,7 @@ loc_62B68: loc_62BA2: move.l (a1)+,(a2)+ dbf d6,loc_62BA2 - lea Pal_CutsceneKnux1(pc),a1 + lea Pal_CutsceneKnux(pc),a1 jmp (PalLoad_Line1).l ; --------------------------------------------------------------------------- @@ -131157,7 +131164,7 @@ loc_63134: move.w (word_630DC).l,(_unkFAB4).w bsr.w sub_65DD6 st (Events_bg+$16).w - lea Pal_CutsceneKnux1(pc),a1 + lea Pal_CutsceneKnux(pc),a1 jsr (PalLoad_Line1).l lea ChildObjDat_665BC(pc),a2 jmp (CreateChild1_Normal).l @@ -131933,7 +131940,7 @@ loc_63A96: move.b #$56,$22(a0) move.w #$3A38,$10(a0) move.w #$EC,$14(a0) - lea Pal_CutsceneKnux1(pc),a1 + lea Pal_CutsceneKnux(pc),a1 jmp (PalLoad_Line1).l ; --------------------------------------------------------------------------- @@ -132166,7 +132173,7 @@ loc_63D5C: loc_63DBC: move.l (a1)+,(a2)+ dbf d6,loc_63DBC - lea Pal_CutsceneKnux1(pc),a1 + lea Pal_CutsceneKnux(pc),a1 jsr (PalLoad_Line1).l move.w #$88,(Normal_palette_line_2+$C).w rts @@ -134403,7 +134410,7 @@ loc_65730: loc_6574E: move.l (a1)+,(a2)+ dbf d6,loc_6574E - lea Pal_CutsceneKnux1(pc),a1 + lea Pal_CutsceneKnux(pc),a1 jmp (PalLoad_Line1).l ; --------------------------------------------------------------------------- @@ -136445,10 +136452,9 @@ byte_6690B: dc.b 5 dc.b 7 dc.b 8 dc.b $F4 -Pal_CutsceneKnux1: binclude "General/Sprites/Knuckles/Cutscene/Pal.bin" +Pal_CutsceneKnux: binclude "General/Sprites/Knuckles/Cutscene/Pal.bin" even - Pal_CNZFlash: binclude "Levels/CNZ/Palettes/Flash.bin" even @@ -199116,7 +199122,7 @@ Obj_B5_2: lea (ArtKosM_Teleporter).l,a1 move.w #-$6F00,d2 jsr (Queue_Kos_Module).l - lea (Pal_CutsceneKnux1).l,a1 + lea (Pal_CutsceneKnux).l,a1 cmpi.w #3,(Player_mode).w bne.s loc_90998 lea (Pal_SonicTails).l,a1 From fcd8be158325a885e79f18294266d6cdb82cd229 Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Tue, 9 Nov 2021 22:14:44 +0000 Subject: [PATCH 33/72] Document a few subroutines and constants --- s3.asm | 370 ++++++++++++++++++------------------ sonic3k.asm | 424 +++++++++++++++++++++--------------------- sonic3k.constants.asm | 4 +- 3 files changed, 391 insertions(+), 407 deletions(-) diff --git a/s3.asm b/s3.asm index b0959525..e0e07e87 100644 --- a/s3.asm +++ b/s3.asm @@ -604,7 +604,7 @@ VInt_0_Main: loc_8B2: btst #0,(Z80_bus_request).l bne.s loc_8B2 - bsr.w nullsub_1 + bsr.w sndDriverInput move.w #0,(Z80_bus_request).l bra.s VInt_Done ; --------------------------------------------------------------------------- @@ -650,7 +650,7 @@ VInt_0_FullyUnderwater: VInt_0_Water_Cont: move.w (H_int_counter_command).w,(a5) - bsr.w nullsub_1 + bsr.w sndDriverInput move.w #0,(Z80_bus_request).l bra.w VInt_Done ; --------------------------------------------------------------------------- @@ -698,7 +698,7 @@ loc_9DE: move.w (DMA_trigger_word).w,(a5) VInt_0_Done: - bsr.w nullsub_1 + bsr.w sndDriverInput move.w #0,(Z80_bus_request).l bra.w VInt_Done ; --------------------------------------------------------------------------- @@ -835,7 +835,7 @@ loc_BA8: move.l (V_scroll_value_P2).w,(V_scroll_value_P2_copy).w jsr (SpecialVInt_Function).l jsr (VInt_DrawLevel).l - bsr.w nullsub_1 + bsr.w sndDriverInput move.w #0,(Z80_bus_request).l move #$2300,sr tst.b (Water_flag).w @@ -936,7 +936,7 @@ loc_CDE: loc_D02: bsr.w Process_DMA_Queue move.l (V_scroll_value_P2).w,(V_scroll_value_P2_copy).w - jsr (nullsub_1).l + jsr (sndDriverInput).l move.w #0,(Z80_bus_request).l bsr.w Process_Nem_Queue jmp (Set_Kos_Bookmark).l @@ -994,7 +994,7 @@ loc_D44: loc_DEA: bsr.w Process_DMA_Queue - bsr.w nullsub_1 + bsr.w sndDriverInput move.w #0,(Z80_bus_request).l rts ; --------------------------------------------------------------------------- @@ -1028,7 +1028,7 @@ loc_E04: move.w #$83,(DMA_trigger_word).w move.w (DMA_trigger_word).w,(a5) bsr.w Process_DMA_Queue - bsr.w nullsub_1 + bsr.w sndDriverInput move.w #0,(Z80_bus_request).l bsr.w Process_Nem_Queue tst.w (Demo_timer).w @@ -1111,7 +1111,7 @@ loc_F44: move.w #$83,(DMA_trigger_word).w move.w (DMA_trigger_word).w,(a5) bsr.w Process_DMA_Queue - bsr.w nullsub_1 + bsr.w sndDriverInput move.w #0,(Z80_bus_request).l rts ; End of function Do_ControllerPal @@ -1477,9 +1477,9 @@ HInt2_Do_Updates: ; =============== S U B R O U T I N E ======================================= -nullsub_1: +sndDriverInput: rts -; End of function nullsub_1 +; End of function sndDriverInput ; =============== S U B R O U T I N E ======================================= @@ -5499,7 +5499,7 @@ loc_4942: jsr (j_LevelSetup).l move #$2300,sr jsr (Animate_Init).l - jsr (nullsub_4).l + jsr (ConvertCollisionArray).l bsr.w LoadSolids bsr.w Handle_Onscreen_Water_Height move.w (Ctrl_2).w,(_unkFF7C).w @@ -5547,7 +5547,7 @@ loc_4A0C: move.w d0,(Total_ring_count_P2).w move.w d0,(Monitors_broken).w move.w d0,(Monitors_broken_P2).w - move.w d0,(_unkFEDE).w + move.w d0,(Loser_time_left).w move.b d0,(LRZ_rocks_routine).w bsr.w sub_58F4 move.b #1,(Update_HUD_score).w @@ -5558,7 +5558,7 @@ loc_4A0C: jsr (Load_Sprites).l jsr (Load_Rings).l jsr (S2_SpecialCNZBumpers).l - jsr (nullsub_5).l + jsr (Draw_LRZ_Special_Rock_Sprites).l jsr (Process_Sprites).l jsr (Render_Sprites).l jsr (Animate_Tiles).l @@ -5617,13 +5617,13 @@ LevelLoop: jsr (DeformBgLayer).l jsr (ScreenEvents).l bsr.w Handle_Onscreen_Water_Height - bsr.w nullsub_3 + bsr.w UpdateWaterSurface jsr (Load_Rings).l jsr (Animate_Tiles).l bsr.w Process_Nem_Queue_Init jsr (Process_Kos_Module_Queue).l - bsr.w sub_594A - bsr.w sub_59E0 + bsr.w OscillateNumDo + bsr.w ChangeRingFrame jsr (Render_Sprites).l jsr (Load_Sprites).l cmpi.b #8,(Game_mode).w @@ -5812,7 +5812,7 @@ loc_4DAE: SpawnLevelMainSprites: - move.l #Obj_Level_50B2,(Reserved_object_3).w + move.l #Obj_ResetCollisionResponseList,(Reserved_object_3).w bsr.w SpawnLevelMainSprites_SpawnPlayers bsr.w SpawnLevelMainSprites_SpawnPowerup tst.b (Last_star_post_hit).w @@ -6068,17 +6068,15 @@ Pal_Level_2P: binclude "Levels/Misc/Palettes/2P Level Secondary.bin" even ; --------------------------------------------------------------------------- -Obj_Level_50B2: +Obj_ResetCollisionResponseList: move.w #0,(Collision_response_list).w rts ; =============== S U B R O U T I N E ======================================= -nullsub_3: +UpdateWaterSurface: rts -; End of function nullsub_3 - ; --------------------------------------------------------------------------- tst.b (Water_flag).w beq.s locret_50DC @@ -6094,6 +6092,8 @@ loc_50D2: locret_50DC: rts +; End of function UpdateWaterSurface + ; =============== S U B R O U T I N E ======================================= @@ -6928,62 +6928,46 @@ LoadSolids: sub_58F4: lea (Oscillating_table).w,a1 - lea (word_5908).l,a2 + lea (Osc_Data).l,a2 moveq #(Oscillating_table_end-Oscillating_table)/2-1,d1 -loc_5900: +Osc_Loop: move.w (a2)+,(a1)+ - dbf d1,loc_5900 + dbf d1,Osc_Loop rts -; End of function sub_58F4 +; End of function OscillateNumInit ; --------------------------------------------------------------------------- -word_5908: dc.w $7D - dc.w $80 - dc.w 0 - dc.w $80 - dc.w 0 - dc.w $80 - dc.w 0 - dc.w $80 - dc.w 0 - dc.w $80 - dc.w 0 - dc.w $80 - dc.w 0 - dc.w $80 - dc.w 0 - dc.w $80 - dc.w 0 - dc.w $80 - dc.w 0 - dc.w $3848 - dc.w $EE - dc.w $2080 - dc.w $B4 - dc.w $3080 - dc.w $10E - dc.w $5080 - dc.w $1C2 - dc.w $7080 - dc.w $276 - dc.w $80 - dc.w 0 - dc.w $4000 - dc.w $FE +Osc_Data: dc.w %0000000001111101 ; oscillation direction bitfield + dc.w $80, 0 ; baseline values + dc.w $80, 0 + dc.w $80, 0 + dc.w $80, 0 + dc.w $80, 0 + dc.w $80, 0 + dc.w $80, 0 + dc.w $80, 0 + dc.w $80, 0 + dc.w $3848, $EE + dc.w $2080, $B4 + dc.w $3080, $10E + dc.w $5080, $1C2 + dc.w $7080, $276 + dc.w $80, 0 + dc.w $4000, $FE ; =============== S U B R O U T I N E ======================================= -sub_594A: +OscillateNumDo: tst.w (Competition_mode).w bne.s loc_5958 cmpi.b #6,(Player_1+routine).w - bcc.s locret_599E + bcc.s OscillateNumDo_Return loc_5958: lea (Oscillating_table).w,a1 - lea (word_59A0).l,a2 + lea (Osc_Data2).l,a2 move.w (a1)+,d3 moveq #$F,d1 @@ -7016,48 +7000,32 @@ loc_5994: dbf d1,loc_5966 move.w d3,(Oscillating_table).w -locret_599E: +OscillateNumDo_Return: rts -; End of function sub_594A +; End of function OscillateNumDo ; --------------------------------------------------------------------------- -word_59A0: dc.w 2 - dc.w $10 - dc.w 2 - dc.w $18 - dc.w 2 - dc.w $20 - dc.w 2 - dc.w $30 - dc.w 4 - dc.w $20 - dc.w 8 - dc.w 8 - dc.w 8 - dc.w $40 - dc.w 4 - dc.w $40 - dc.w 2 - dc.w $38 - dc.w 2 - dc.w $38 - dc.w 2 - dc.w $20 - dc.w 3 - dc.w $30 - dc.w 5 - dc.w $50 - dc.w 7 - dc.w $70 - dc.w 2 - dc.w $40 - dc.w 2 - dc.w $40 +Osc_Data2: dc.w 2, $10 + dc.w 2, $18 + dc.w 2, $20 + dc.w 2, $30 + dc.w 4, $20 + dc.w 8, 8 + dc.w 8, $40 + dc.w 4, $40 + dc.w 2, $38 + dc.w 2, $38 + dc.w 2, $20 + dc.w 3, $30 + dc.w 5, $50 + dc.w 7, $70 + dc.w 2, $40 + dc.w 2, $40 ; =============== S U B R O U T I N E ======================================= -sub_59E0: +ChangeRingFrame: subq.b #1,(Rings_frame_timer).w bpl.s loc_59F6 move.b #7,(Rings_frame_timer).w @@ -7079,7 +7047,7 @@ loc_59F6: loc_5A18: addi.w #$180,(AIZ_vine_angle).w rts -; End of function sub_59E0 +; End of function ChangeRingFrame ; --------------------------------------------------------------------------- S2_DemoDat_AIZ: binclude "Levels/AIZ/Demodata/1 Proto.bin" @@ -14873,17 +14841,17 @@ ArtKos_SaveScreenS3Zone: ; =============== S U B R O U T I N E ======================================= -sub_E8C0: +Render_HUD_P1: tst.w (Debug_mode_flag).w - bne.s sub_E8C8 + bne.s Render_HUD rts -; End of function sub_E8C0 +; End of function Render_HUD_P1 ; =============== S U B R O U T I N E ======================================= -sub_E8C8: +Render_HUD: cmpi.b #$13,(Current_zone).w bcs.s loc_E8E4 moveq #8,d4 @@ -14929,15 +14897,15 @@ loc_E90E: locret_E92E: rts -; End of function sub_E8C8 +; End of function Render_HUD ; =============== S U B R O U T I N E ======================================= -nullsub_2: +Render_HUD_P2: rts -; End of function nullsub_2 +; End of function Render_HUD_P2 ; --------------------------------------------------------------------------- Map_HUD: include "General/Sprites/HUD Icon/Map - HUD.asm" @@ -15826,7 +15794,7 @@ loc_F80A: ; =============== S U B R O U T I N E ======================================= -sub_F816: +Render_Rings: movea.l (Ring_start_addr_ROM).w,a0 move.l (Ring_end_addr_ROM).w,d2 sub.l a0,d2 @@ -15874,7 +15842,7 @@ loc_F876: locret_F87C: rts -; End of function sub_F816 +; End of function Render_Rings ; --------------------------------------------------------------------------- CMap_Ring: dc.w $FFF8, $0005, $0000+make_art_tile(ArtTile_Ring,1,0), $FFF8 @@ -17427,9 +17395,9 @@ loc_1096E: ; =============== S U B R O U T I N E ======================================= -nullsub_4: +ConvertCollisionArray: rts -; End of function nullsub_4 +; End of function ConvertCollisionArray ; =============== S U B R O U T I N E ======================================= @@ -24080,11 +24048,11 @@ loc_150FA: moveq #0,d1 move.b $23(a1),d1 addq.b #1,$23(a1) - move.b byte_15190(pc,d1.w),d0 + move.b AniRaw_Tails_Carry(pc,d1.w),d0 cmpi.b #-1,d0 bne.s loc_15152 move.b #0,$23(a1) - move.b byte_15190(pc),d0 + move.b AniRaw_Tails_Carry(pc),d0 loc_15152: move.b d0,$22(a1) @@ -24105,24 +24073,9 @@ loc_15166: movem.l (sp)+,d0-a6 rts ; --------------------------------------------------------------------------- -byte_15190: dc.b $91 - dc.b $91 - dc.b $90 - dc.b $90 - dc.b $90 - dc.b $90 - dc.b $90 - dc.b $90 - dc.b $92 - dc.b $92 - dc.b $92 - dc.b $92 - dc.b $92 - dc.b $92 - dc.b $91 - dc.b $91 - dc.b $FF - dc.b 0 +AniRaw_Tails_Carry: + dc.b $91, $91, $90, $90, $90, $90, $90, $90, $92, $92, $92, $92, $92, $92, $91, $91, $FF + even ; --------------------------------------------------------------------------- loc_151A2: @@ -26789,8 +26742,31 @@ loc_16D44: bsr.w Tails2P_Tail_Load_PLC jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -byte_16D58: dc.b 0, 0, 3, 3, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 - dc.b 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +byte_16D58: dc.b 0,0 + dc.b 3 + dc.b 3 + dc.b 0 + dc.b 1 + dc.b 1 + dc.b 1 + dc.b 1 + dc.b 0 + dc.b 1,1,1 + dc.b 0 + dc.b 0,0 + dc.b 0 + dc.b 0 + dc.b 0 + dc.b 0 + dc.b 0 + dc.b 0 + dc.b 0,0,0 + dc.b 0 + dc.b 0,0 + dc.b 0 + dc.b 0,0 + dc.b 0 + dc.b 0,0 AniTails2P_Tail:include "General/Sprites/Tails/Anim - Tails 2P Tail.asm" ; --------------------------------------------------------------------------- @@ -28471,13 +28447,11 @@ loc_18DB4: JmpTo_Play_Sound_2: jmp (Play_Sound_2).l -; End of function GiveRing - ; --------------------------------------------------------------------------- rts ; --------------------------------------------------------------------------- -loc_18DCC: +GiveRing_Tails: cmpi.w #999,(Total_ring_count_P2).w bcc.s loc_18DD8 addq.w #1,(Total_ring_count_P2).w @@ -28509,6 +28483,8 @@ loc_18E14: loc_18E20: jmp (Play_Sound_2).l +; End of function GiveRing + ; --------------------------------------------------------------------------- Obj_Bouncing_Ring: @@ -29131,8 +29107,8 @@ Render_Sprites: lea (Sprite_table_buffer).w,a6 tst.b (Level_started_flag).w beq.s loc_193B8 - jsr (sub_E8C8).l - jsr (sub_F816).l + jsr (Render_HUD).l + jsr (Render_Rings).l loc_193B8: tst.w (a5) @@ -29740,7 +29716,7 @@ Render_Sprites_CompetitionMode: loc_19872: tst.b (Level_started_flag).w beq.s loc_1987E - jsr (sub_E8C0).l + jsr (Render_HUD_P1).l loc_1987E: move.b 1(a5),(a5) @@ -29839,7 +29815,7 @@ loc_19958: loc_19974: tst.b (Level_started_flag).w beq.s loc_19980 - jsr (nullsub_2).l + jsr (Render_HUD_P2).l loc_19980: tst.b 1(a5) @@ -32093,21 +32069,14 @@ loc_1AE82: ; =============== S U B R O U T I N E ======================================= -nullsub_5: +Draw_LRZ_Special_Rock_Sprites: rts -; End of function nullsub_5 - - -; =============== S U B R O U T I N E ======================================= - +; --------------------------------------------------------------------------- -Draw_LRZ_Special_Rock_Sprites: moveq #0,d0 move.b (LRZ_rocks_routine).w,d0 move.w off_1AE98(pc,d0.w),d0 jmp off_1AE98(pc,d0.w) -; End of function Draw_LRZ_Special_Rock_Sprites - ; --------------------------------------------------------------------------- off_1AE98: dc.w loc_1AE9C-off_1AE98 dc.w loc_1AECC-off_1AE98 @@ -32190,6 +32159,8 @@ loc_1AF08: bls.s loc_1AF06 move.l a2,(LRZ_rocks_addr_back).w rts +; End of function Draw_LRZ_Special_Rock_Sprites + ; =============== S U B R O U T I N E ======================================= @@ -32805,9 +32776,9 @@ loc_1B68C: ; End of function sub_1B65C ; --------------------------------------------------------------------------- -off_1B69C: dc.w loc_1B6B0-off_1B69C +off_1B69C: dc.w Monitor_Give_Eggman-off_1B69C dc.w Monitor_Give_1up-off_1B69C - dc.w loc_1B6B0-off_1B69C + dc.w Monitor_Give_Eggman-off_1B69C dc.w Monitor_Give_Rings-off_1B69C dc.w Monitor_Give_Super_Sneakers-off_1B69C dc.w Monitor_Give_Fire_Shield-off_1B69C @@ -32817,7 +32788,7 @@ off_1B69C: dc.w loc_1B6B0-off_1B69C dc.w Monitor_Give_SuperSonic-off_1B69C ; --------------------------------------------------------------------------- -loc_1B6B0: +Monitor_Give_Eggman: addq.w #1,(a2) bra.w sub_228EC ; --------------------------------------------------------------------------- @@ -32866,7 +32837,7 @@ loc_1B714: loc_1B71C: cmpa.w #Player_1,a1 beq.w Monitor_Give_1up - bra.w loc_1B6B0 + bra.w Monitor_Give_Eggman ; --------------------------------------------------------------------------- Monitor_Give_Super_Sneakers: @@ -43604,7 +43575,7 @@ sub_25194: move.l a1,-(sp) jsr (Create_New_Sprite3).l bne.w loc_251C0 - move.l #Obj_2523E,(a1) + move.l #loc_2523E,(a1) move.w $10(a0),$10(a1) move.w $14(a0),$14(a1) move.b 4(a0),4(a1) @@ -43662,7 +43633,7 @@ loc_25236: ; --------------------------------------------------------------------------- -Obj_2523E: +loc_2523E: move.l #Map_LBZPlayerLauncher,$C(a0) move.w #$43C3,$A(a0) ori.b #4,4(a0) @@ -53563,7 +53534,7 @@ loc_2D340: loc_2D35C: jsr (Init_SpriteTable).l - move.l #loc_2D41E,(Dynamic_object_RAM+object_size).w + move.l #Obj_SpecialStage_Results,(Dynamic_object_RAM+object_size).w move.w (VDP_reg_1_command).w,d0 ori.b #$40,d0 move.w d0,(VDP_control_port).l @@ -53582,7 +53553,7 @@ Pal_Results: binclude "General/Special Stage/Palettes/Results S3.bin" even ; --------------------------------------------------------------------------- -loc_2D41E: +Obj_SpecialStage_Results: moveq #0,d0 move.b 5(a0),d0 move.w off_2D42C(pc,d0.w),d1 @@ -60744,7 +60715,18 @@ Ani_MGZHeadTrigger: include "Levels/MGZ/Misc Object Data/Anim - Head Trigger.asm" Map_MGZHeadTrigger: include "Levels/MGZ/Misc Object Data/Map - Head Trigger.asm" -byte_33868: dc.b $40, $1E, 0, $40, $20, $40, 1, $40, $20, $40, 1, $40 +byte_33868: dc.b $40 + dc.b $1E + dc.b 0 + dc.b $40 + dc.b $20 + dc.b $40 + dc.b 1 + dc.b $40 + dc.b $20 + dc.b $40 + dc.b 1 + dc.b $40 ; --------------------------------------------------------------------------- Obj_MGZTriggerPlatform: @@ -63312,7 +63294,7 @@ loc_35B7A: ; --------------------------------------------------------------------------- loc_35B9E: - jmp (loc_18DCC).l + jmp (GiveRing_Tails).l ; --------------------------------------------------------------------------- loc_35BA4: @@ -69090,21 +69072,21 @@ NoScreenEvent: ; --------------------------------------------------------------------------- NoBackgroundInit: - jsr sub_3A626(pc) + jsr No_Deform(pc) jsr Reset_TileOffsetPositionEff(pc) jsr Refresh_PlaneFull(pc) jmp PlainDeformation(pc) ; --------------------------------------------------------------------------- NoBackgroundEvent: - jsr sub_3A626(pc) + jsr No_Deform(pc) jsr DrawBGAsYouMove(pc) jmp PlainDeformation(pc) ; =============== S U B R O U T I N E ======================================= -sub_3A626: +No_Deform: move.w (Camera_X_pos_copy).w,d0 asr.w #3,d0 move.w d0,(Camera_X_pos_BG_copy).w @@ -69112,7 +69094,7 @@ sub_3A626: asr.w #3,d0 move.w d0,(Camera_Y_pos_BG_copy).w rts -; End of function sub_3A626 +; End of function No_Deform ; --------------------------------------------------------------------------- @@ -77903,7 +77885,9 @@ ArtNem_EndingGraphics: binclude "General/Ending/Nemesis Art/S3 Ending Graphics.bin" even ; --------------------------------------------------------------------------- - movea.l Obj_SonicOnSegaScr(pc,d6.w),a6 + +Trap15_FuncDebug: + movea.l Func_Listing(pc,d6.w),a6 jsr (a6) nop nop @@ -77917,6 +77901,8 @@ ArtNem_EndingGraphics: nop rte ; --------------------------------------------------------------------------- +Func_Listing: +; --------------------------------------------------------------------------- Obj_SonicOnSegaScr: moveq #0,d0 @@ -78098,7 +78084,7 @@ loc_43322: loc_4332E: addq.b #2,5(a0) st (_unkF660).w - move.b #mus_FA,d0 + move.b #mus_S2SEGA,d0 jsr (Play_Sound_2).l locret_43340: @@ -98371,7 +98357,7 @@ off_5087E: dc.w loc_50884-off_5087E ; --------------------------------------------------------------------------- loc_50884: - lea off_50B84(pc),a1 + lea ObjDat3_50B84(pc),a1 jsr SetUp_ObjAttributes(pc) move.w #-$180,$18(a0) move.l #byte_50C76,$30(a0) @@ -98663,7 +98649,7 @@ ObjDat3_50B78: dc.l Map_LBZEndBoss dc.b $10 dc.b 0 dc.b $18 -off_50B84: dc.l Map_FBZRobotnikRun +ObjDat3_50B84: dc.l Map_FBZRobotnikRun dc.w $4A9 dc.w $280 dc.b $20 @@ -101161,23 +101147,23 @@ AfterBoss_Cleanup: ; End of function AfterBoss_Cleanup ; --------------------------------------------------------------------------- -off_526CE: dc.w loc_526EA-off_526CE - dc.w loc_526FE-off_526CE - dc.w locret_52714-off_526CE - dc.w locret_52714-off_526CE - dc.w loc_52716-off_526CE - dc.w loc_52716-off_526CE - dc.w locret_52720-off_526CE - dc.w locret_52720-off_526CE - dc.w locret_52720-off_526CE - dc.w locret_52720-off_526CE - dc.w locret_52720-off_526CE - dc.w loc_52722-off_526CE - dc.w locret_5272E-off_526CE - dc.w locret_5272E-off_526CE +off_526CE: dc.w AfterBoss_AIZ1-off_526CE + dc.w AfterBoss_AIZ2-off_526CE + dc.w AfterBoss_HCZ-off_526CE + dc.w AfterBoss_HCZ-off_526CE + dc.w AfterBoss_MGZ-off_526CE + dc.w AfterBoss_MGZ-off_526CE + dc.w AfterBoss_CNZ-off_526CE + dc.w AfterBoss_CNZ-off_526CE + dc.w AfterBoss_FBZ-off_526CE + dc.w AfterBoss_FBZ-off_526CE + dc.w AfterBoss_ICZ1-off_526CE + dc.w AfterBoss_ICZ2-off_526CE + dc.w AfterBoss_LBZ-off_526CE + dc.w AfterBoss_LBZ-off_526CE ; --------------------------------------------------------------------------- -loc_526EA: +AfterBoss_AIZ1: lea (Pal_AIZ).l,a1 lea (Normal_palette_line_2).w,a2 moveq #$17,d0 @@ -101188,35 +101174,38 @@ loc_526F6: rts ; --------------------------------------------------------------------------- -loc_526FE: +AfterBoss_AIZ2: lea (Pal_AIZFire).l,a1 jsr (PalLoad_Line1).l - lea PLC_52730(pc),a1 + lea PLC_AfterMiniboss_AIZ(pc),a1 jmp (Load_PLC_Raw).l ; --------------------------------------------------------------------------- -locret_52714: +AfterBoss_HCZ: rts ; --------------------------------------------------------------------------- -loc_52716: +AfterBoss_MGZ: lea PLC_MonitorsSpikesSprings(pc),a1 jmp (Load_PLC_Raw).l ; --------------------------------------------------------------------------- -locret_52720: +AfterBoss_CNZ: +AfterBoss_FBZ: +AfterBoss_ICZ1: rts ; --------------------------------------------------------------------------- -loc_52722: +AfterBoss_ICZ2: lea (Pal_ICZ2).l,a1 jmp (PalLoad_Line1).l ; --------------------------------------------------------------------------- -locret_5272E: +AfterBoss_LBZ: rts ; --------------------------------------------------------------------------- -PLC_52730: dc.w 6 +PLC_AfterMiniboss_AIZ: + dc.w 6 dc.l ArtNem_Monitors dc.w tiles_to_bytes(ArtTile_Monitors) dc.l ArtNem_AIZMisc2 @@ -101237,7 +101226,8 @@ Pal_AfterMiniboss_AIZ: Pal_AfterMiniboss_ICZ: binclude "Levels/ICZ/Palettes/Miniboss After.bin" even -PLC_MonitorsSpikesSprings:dc.w 1 +PLC_MonitorsSpikesSprings: + dc.w 1 dc.l ArtNem_Monitors dc.w tiles_to_bytes(ArtTile_Monitors) dc.l ArtNem_SpikesSprings @@ -101245,6 +101235,7 @@ PLC_MonitorsSpikesSprings:dc.w 1 PLC_Monitors: dc.w 0 dc.l ArtNem_Monitors dc.w tiles_to_bytes(ArtTile_Monitors) +PLC_AnimalsAndExplosion: dc.w 2 dc.l ArtNem_Explosion dc.w $B400 @@ -101252,7 +101243,8 @@ PLC_Monitors: dc.w 0 dc.w $B000 dc.l ArtNem_BlueFlicky dc.w $B240 -PLC_BossExplosion:dc.w 0 +PLC_BossExplosion: + dc.w 0 dc.l ArtNem_BossExplosion dc.w $A000 PLC_Explosion: dc.w 0 diff --git a/sonic3k.asm b/sonic3k.asm index ef1a1918..858be9ee 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -7266,10 +7266,10 @@ loc_6404: move.w d0,(Total_ring_count_P2).w move.w d0,(Monitors_broken).w move.w d0,(Monitors_broken_P2).w - move.w d0,(_unkFEDE).w + move.w d0,(Loser_time_left).w move.b d0,(LRZ_rocks_routine).w move.b d0,(Super_Sonic_Knux_flag).w - bsr.w sub_76E6 + bsr.w OscillateNumInit move.b #1,(Update_HUD_score).w move.b #1,(Update_HUD_ring_count).w move.b #1,(Update_HUD_timer).w @@ -7350,8 +7350,8 @@ Level_NotLRZ: jsr (Animate_Tiles).l bsr.w Process_Nem_Queue_Init jsr (Process_Kos_Module_Queue).l - bsr.w sub_773C - bsr.w sub_77D2 + bsr.w OscillateNumDo + bsr.w ChangeRingFrame jsr (Render_Sprites).l cmpi.b #$15,(Current_zone).w bne.s Level_NotSlots @@ -7553,7 +7553,7 @@ locret_67EC: SpawnLevelMainSprites: - move.l #Obj_Level_6C2C,(Reserved_object_3).w + move.l #Obj_ResetCollisionResponseList,(Reserved_object_3).w bsr.w SpawnLevelMainSprites_SpawnPlayers bsr.w SpawnLevelMainSprites_SpawnPowerup tst.b (Last_star_post_hit).w @@ -7904,7 +7904,7 @@ Pal_Level_2P: binclude "Levels/Misc/Palettes/2P Level Secondary.bin" ; --------------------------------------------------------------------------- -Obj_Level_6C2C: +Obj_ResetCollisionResponseList: move.w #0,(Collision_response_list).w rts @@ -8999,64 +8999,48 @@ LoadSolids_SK_Interleaved_Format: ; =============== S U B R O U T I N E ======================================= -sub_76E6: +OscillateNumInit: lea (Oscillating_table).w,a1 - lea (word_76FA).l,a2 + lea (Osc_Data).l,a2 moveq #(Oscillating_table_end-Oscillating_table)/2-1,d1 -loc_76F2: +Osc_Loop: move.w (a2)+,(a1)+ - dbf d1,loc_76F2 + dbf d1,Osc_Loop rts -; End of function sub_76E6 +; End of function OscillateNumInit ; --------------------------------------------------------------------------- -word_76FA: dc.w $7D - dc.w $80 - dc.w 0 - dc.w $80 - dc.w 0 - dc.w $80 - dc.w 0 - dc.w $80 - dc.w 0 - dc.w $80 - dc.w 0 - dc.w $80 - dc.w 0 - dc.w $80 - dc.w 0 - dc.w $80 - dc.w 0 - dc.w $80 - dc.w 0 - dc.w $3848 - dc.w $EE - dc.w $2080 - dc.w $B4 - dc.w $3080 - dc.w $10E - dc.w $5080 - dc.w $1C2 - dc.w $7080 - dc.w $276 - dc.w $80 - dc.w 0 - dc.w $4000 - dc.w $FE +Osc_Data: dc.w %0000000001111101 ; oscillation direction bitfield + dc.w $80, 0 ; baseline values + dc.w $80, 0 + dc.w $80, 0 + dc.w $80, 0 + dc.w $80, 0 + dc.w $80, 0 + dc.w $80, 0 + dc.w $80, 0 + dc.w $80, 0 + dc.w $3848, $EE + dc.w $2080, $B4 + dc.w $3080, $10E + dc.w $5080, $1C2 + dc.w $7080, $276 + dc.w $80, 0 + dc.w $4000, $FE ; =============== S U B R O U T I N E ======================================= -sub_773C: +OscillateNumDo: tst.w (Competition_mode).w bne.s loc_774A cmpi.b #6,(Player_1+routine).w - bhs.s locret_7790 + bhs.s OscillateNumDo_Return loc_774A: lea (Oscillating_table).w,a1 - lea (word_7792).l,a2 + lea (Osc_Data2).l,a2 move.w (a1)+,d3 moveq #$F,d1 @@ -9089,48 +9073,32 @@ loc_7786: dbf d1,loc_7758 move.w d3,(Oscillating_table).w -locret_7790: +OscillateNumDo_Return: rts -; End of function sub_773C +; End of function OscillateNumDo ; --------------------------------------------------------------------------- -word_7792: dc.w 2 - dc.w $10 - dc.w 2 - dc.w $18 - dc.w 2 - dc.w $20 - dc.w 2 - dc.w $30 - dc.w 4 - dc.w $20 - dc.w 8 - dc.w 8 - dc.w 8 - dc.w $40 - dc.w 4 - dc.w $40 - dc.w 2 - dc.w $38 - dc.w 2 - dc.w $38 - dc.w 2 - dc.w $20 - dc.w 3 - dc.w $30 - dc.w 5 - dc.w $50 - dc.w 7 - dc.w $70 - dc.w 2 - dc.w $40 - dc.w 2 - dc.w $40 +Osc_Data2: dc.w 2, $10 + dc.w 2, $18 + dc.w 2, $20 + dc.w 2, $30 + dc.w 4, $20 + dc.w 8, 8 + dc.w 8, $40 + dc.w 4, $40 + dc.w 2, $38 + dc.w 2, $38 + dc.w 2, $20 + dc.w 3, $30 + dc.w 5, $50 + dc.w 7, $70 + dc.w 2, $40 + dc.w 2, $40 ; =============== S U B R O U T I N E ======================================= -sub_77D2: +ChangeRingFrame: subq.b #1,(Rings_frame_timer).w bpl.s loc_77E8 move.b #7,(Rings_frame_timer).w @@ -9152,7 +9120,7 @@ loc_77E8: loc_780A: addi.w #$180,(AIZ_vine_angle).w rts -; End of function sub_77D2 +; End of function ChangeRingFrame ; =============== S U B R O U T I N E ======================================= @@ -17283,17 +17251,17 @@ byte_DB36: dc.b $20, $29, $22, $1E, $2F, $FF ; =============== S U B R O U T I N E ======================================= -sub_DB3C: +Render_HUD_P1: tst.w (Debug_mode_flag).w - bne.s sub_DB44 + bne.s Render_HUD rts -; End of function sub_DB3C +; End of function Render_HUD_P1 ; =============== S U B R O U T I N E ======================================= -sub_DB44: +Render_HUD: cmpi.b #$16,(Current_zone).w bhs.s loc_DB68 cmpi.b #$13,(Current_zone).w @@ -17341,15 +17309,15 @@ loc_DB92: locret_DBB2: rts -; End of function sub_DB44 +; End of function Render_HUD ; =============== S U B R O U T I N E ======================================= -nullsub_2: +Render_HUD_P2: rts -; End of function nullsub_2 +; End of function Render_HUD_P2 ; --------------------------------------------------------------------------- Map_HUD: include "General/Sprites/HUD Icon/Map - HUD.asm" @@ -18382,7 +18350,7 @@ loc_EB7A: ; =============== S U B R O U T I N E ======================================= -sub_EB86: +Render_Rings: movea.l (Ring_start_addr_ROM).w,a0 move.l (Ring_end_addr_ROM).w,d2 sub.l a0,d2 @@ -18430,7 +18398,7 @@ loc_EBE6: locret_EBEC: rts -; End of function sub_EB86 +; End of function Render_Rings ; --------------------------------------------------------------------------- ; Custom mappings format. Compare to Map_Ring. @@ -27042,11 +27010,11 @@ loc_144BA: moveq #0,d1 move.b $23(a1),d1 addq.b #1,$23(a1) - move.b byte_14522(pc,d1.w),d0 + move.b AniRaw_Tails_Carry(pc,d1.w),d0 cmpi.b #-1,d0 bne.s loc_144E4 move.b #0,$23(a1) - move.b byte_14522(pc),d0 + move.b AniRaw_Tails_Carry(pc),d0 loc_144E4: move.b d0,$22(a1) @@ -27067,24 +27035,8 @@ loc_144F8: movem.l (sp)+,d0-a6 rts ; --------------------------------------------------------------------------- -byte_14522: dc.b $91 - dc.b $91 - dc.b $90 - dc.b $90 - dc.b $90 - dc.b $90 - dc.b $90 - dc.b $90 - dc.b $92 - dc.b $92 - dc.b $92 - dc.b $92 - dc.b $92 - dc.b $92 - dc.b $91 - dc.b $91 - dc.b $FF - dc.b 0 +AniRaw_Tails_Carry: dc.b $91, $91, $90, $90, $90, $90, $90, $90, $92, $92, $92, $92, $92, $92, $91, $91, $FF + even ; --------------------------------------------------------------------------- loc_14534: @@ -29893,8 +29845,31 @@ loc_1628C: bsr.w Tails2P_Tail_Load_PLC jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -byte_162A0: dc.b 0, 0, 3, 3, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 - dc.b 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +byte_162A0: dc.b 0,0 + dc.b 3 + dc.b 3 + dc.b 0 + dc.b 1 + dc.b 1 + dc.b 1 + dc.b 1 + dc.b 0 + dc.b 1,1,1 + dc.b 0 + dc.b 0,0 + dc.b 0 + dc.b 0 + dc.b 0 + dc.b 0 + dc.b 0 + dc.b 0 + dc.b 0,0,0 + dc.b 0 + dc.b 0,0 + dc.b 0 + dc.b 0,0 + dc.b 0 + dc.b 0,0 AniTails2P_Tail:include "General/Sprites/Tails/Anim - Tails 2P Tail.asm" ; --------------------------------------------------------------------------- @@ -34829,13 +34804,11 @@ loc_1A5D8: JmpTo_Play_Sound_2: jmp (Play_Sound_2).l -; End of function GiveRing - ; --------------------------------------------------------------------------- rts ; --------------------------------------------------------------------------- -loc_1A5F0: +GiveRing_Tails: cmpi.w #999,(Total_ring_count_P2).w bhs.s loc_1A5FC addq.w #1,(Total_ring_count_P2).w @@ -34867,6 +34840,8 @@ loc_1A638: loc_1A644: jmp (Play_Sound_2).l +; End of function GiveRing + ; --------------------------------------------------------------------------- Obj_Bouncing_Ring: @@ -35192,7 +35167,7 @@ Map_Ring: include "General/Sprites/Ring/Map - Ring.asm" ; --------------------------------------------------------------------------- -loc_1A9EE: +Obj_SlotRing: moveq #0,d0 move.b 5(a0),d0 move.w off_1A9FC(pc,d0.w),d1 @@ -35666,8 +35641,8 @@ Render_Sprites: lea (Sprite_table_buffer).w,a6 tst.b (Level_started_flag).w beq.s loc_1AD4A - jsr (sub_DB44).l - jsr (sub_EB86).l + jsr (Render_HUD).l + jsr (Render_Rings).l loc_1AD4A: tst.w (a5) @@ -36285,7 +36260,7 @@ Render_Sprites_CompetitionMode: loc_1B210: tst.b (Level_started_flag).w beq.s loc_1B21C - jsr (sub_DB3C).l + jsr (Render_HUD_P1).l loc_1B21C: move.b 1(a5),(a5) @@ -36384,7 +36359,7 @@ loc_1B2F6: loc_1B312: tst.b (Level_started_flag).w beq.s loc_1B31E - jsr (nullsub_2).l + jsr (Render_HUD_P2).l loc_1B31E: tst.b 1(a5) @@ -38897,8 +38872,6 @@ Draw_LRZ_Special_Rock_Sprites: move.b (LRZ_rocks_routine).w,d0 move.w off_1CADA(pc,d0.w),d0 jmp off_1CADA(pc,d0.w) -; End of function Draw_LRZ_Special_Rock_Sprites - ; --------------------------------------------------------------------------- off_1CADA: dc.w loc_1CADE-off_1CADA dc.w loc_1CB20-off_1CADA @@ -38987,6 +38960,8 @@ loc_1CB5C: bls.s loc_1CB5A move.l a2,(LRZ_rocks_addr_back).w rts +; End of function Draw_LRZ_Special_Rock_Sprites + ; =============== S U B R O U T I N E ======================================= @@ -39934,6 +39909,8 @@ SolidObject_Monitor_Tails: cmpi.b #2,anim(a1) ; Is Tails in his rolling animation? bne.w SolidObject_cont ; If not, branch rts +; End of function SolidObject_Monitor_Tails + ; --------------------------------------------------------------------------- Monitor_ChkOverEdge: @@ -39963,8 +39940,6 @@ Monitor_CharStandOn: bsr.w MvSonicOnPtfm moveq #0,d4 rts -; End of function SolidObject_Monitor_Tails - ; --------------------------------------------------------------------------- Obj_MonitorBreak: @@ -40092,9 +40067,9 @@ loc_1D86C: ; End of function sub_1D820 ; --------------------------------------------------------------------------- -off_1D87C: dc.w loc_1D890-off_1D87C +off_1D87C: dc.w Monitor_Give_Eggman-off_1D87C dc.w Monitor_Give_1up-off_1D87C - dc.w loc_1D890-off_1D87C + dc.w Monitor_Give_Eggman-off_1D87C dc.w Monitor_Give_Rings-off_1D87C dc.w Monitor_Give_Super_Sneakers-off_1D87C dc.w Monitor_Give_Fire_Shield-off_1D87C @@ -40104,7 +40079,7 @@ off_1D87C: dc.w loc_1D890-off_1D87C dc.w Monitor_Give_SuperSonic-off_1D87C ; --------------------------------------------------------------------------- -loc_1D890: +Monitor_Give_Eggman: addq.w #1,(a2) jmp (sub_24280).l ; --------------------------------------------------------------------------- @@ -40153,7 +40128,7 @@ loc_1D8F6: loc_1D8FE: cmpa.w #Player_1,a1 beq.w Monitor_Give_1up - bra.w loc_1D890 + bra.w Monitor_Give_Eggman ; --------------------------------------------------------------------------- Monitor_Give_Super_Sneakers: @@ -51564,7 +51539,7 @@ sub_261F2: move.l a1,-(sp) jsr (Create_New_Sprite3).l bne.w loc_2621E - move.l #Obj_2629C,(a1) + move.l #loc_2629C,(a1) move.w $10(a0),$10(a1) move.w $14(a0),$14(a1) move.b 4(a0),4(a1) @@ -51622,7 +51597,7 @@ loc_26294: ; --------------------------------------------------------------------------- -Obj_2629C: +loc_2629C: move.l #Map_LBZPlayerLauncher,$C(a0) move.w #$43C3,$A(a0) ori.b #4,4(a0) @@ -63028,7 +63003,7 @@ loc_2E226: jsr (Init_SpriteTable).l move.w #$98,(_unkEF68).w st (HPZ_special_stage_completed).w - move.l #loc_2E3B8,(Dynamic_object_RAM+(object_size*29)).w + move.l #Obj_SpecialStage_Results,(Dynamic_object_RAM+(object_size*29)).w move.w (VDP_reg_1_command).w,d0 ori.b #$40,d0 move.w d0,(VDP_control_port).l @@ -63130,7 +63105,7 @@ word_2E398: dc.w $15A0 dc.w $368 ; --------------------------------------------------------------------------- -loc_2E3B8: +Obj_SpecialStage_Results: moveq #0,d0 move.b 5(a0),d0 move.w off_2E3C6(pc,d0.w),d1 @@ -70932,7 +70907,18 @@ loc_34536: ; --------------------------------------------------------------------------- Ani_MGZHeadTrigger: include "Levels/MGZ/Misc Object Data/Anim - Head Trigger.asm" -byte_34568: dc.b $40, $1E, 0, $40, $20, $40, 1, $40, $20, $40, 1, $40 +byte_34568: dc.b $40 + dc.b $1E + dc.b 0 + dc.b $40 + dc.b $20 + dc.b $40 + dc.b 1 + dc.b $40 + dc.b $20 + dc.b $40 + dc.b 1 + dc.b $40 ; --------------------------------------------------------------------------- Obj_MGZTriggerPlatform: @@ -73514,7 +73500,7 @@ loc_365E8: ; --------------------------------------------------------------------------- loc_3660C: - jmp (loc_1A5F0).l + jmp (GiveRing_Tails).l ; --------------------------------------------------------------------------- loc_36612: @@ -99269,7 +99255,7 @@ loc_4C0BE: bhs.w loc_4C16C jsr (Create_New_Sprite).l bne.w loc_4C16C - move.l #loc_4C374,(a1) + move.l #Obj_SlotSpike,(a1) move.l #Map_SlotSpike,$C(a1) move.w #$2490,$A(a1) move.b #4,4(a1) @@ -99313,7 +99299,7 @@ loc_4C172: bhs.w locret_4C21A jsr (Create_New_Sprite).l bne.w locret_4C21A - move.l #loc_1A9EE,(a1) + move.l #Obj_SlotRing,(a1) move.l #Map_Ring,$C(a1) move.w #make_art_tile(ArtTile_Ring,1,0),$A(a1) move.b #4,4(a1) @@ -99405,7 +99391,7 @@ Map_SlotBonusCage: include "Levels/Slots/Misc Object Data/Map - Bonus Cage (Unus ; --------------------------------------------------------------------------- -loc_4C374: +Obj_SlotSpike: moveq #0,d1 move.w $3C(a0),d1 swap d1 @@ -112677,7 +112663,7 @@ locret_54BA2: MHZ1_BackgroundInit: move.w (Camera_X_pos_copy).w,(Events_fg_0).w move.w (Camera_X_pos_copy).w,(Events_fg_1).w - jsr sub_54C68(pc) + jsr MHZ_Deform(pc) jsr Reset_TileOffsetPositionEff(pc) moveq #0,d1 jsr Refresh_PlaneFull(pc) @@ -112721,7 +112707,7 @@ loc_54C3C: move.w #$100,d2 move.w #$200,d3 jsr Adjust_BGDuringLoop(pc) - jsr sub_54C68(pc) + jsr MHZ_Deform(pc) lea (Camera_Y_pos_BG_copy).w,a6 lea (Camera_Y_pos_BG_rounded).w,a5 moveq #0,d1 @@ -112732,7 +112718,7 @@ loc_54C3C: ; =============== S U B R O U T I N E ======================================= -sub_54C68: +MHZ_Deform: move.w (Camera_Y_pos_copy).w,d0 swap d0 clr.w d0 @@ -112762,7 +112748,7 @@ sub_54C68: swap d0 move.w d0,(Events_bg+$12).w rts -; End of function sub_54C68 +; End of function MHZ_Deform ; --------------------------------------------------------------------------- @@ -113255,7 +113241,7 @@ MHZ2_BackgroundInit: ; --------------------------------------------------------------------------- loc_55198: - jsr sub_54C68(pc) + jsr MHZ_Deform(pc) loc_5519C: jsr Reset_TileOffsetPositionEff(pc) @@ -113312,7 +113298,7 @@ loc_551EE: ; --------------------------------------------------------------------------- loc_5521E: - jsr sub_54C68(pc) + jsr MHZ_Deform(pc) loc_55222: lea (Camera_Y_pos_BG_copy).w,a6 @@ -113338,7 +113324,7 @@ loc_5523A: loc_55250: cmpi.w #$500,(Player_1+y_pos).w blo.s loc_5527A - jsr sub_54C68(pc) + jsr MHZ_Deform(pc) jsr Reset_TileOffsetPositionEff(pc) addi.w #$E0,d0 and.w (Camera_Y_pos_mask).w,d0 @@ -113391,7 +113377,7 @@ loc_552E4: ; --------------------------------------------------------------------------- loc_552F8: - jsr sub_54C68(pc) + jsr MHZ_Deform(pc) loc_552FC: moveq #0,d1 @@ -115672,7 +115658,7 @@ loc_56B6C: move.b #-$A,4(a1) loc_56B88: - jsr sub_56D40(pc) + jsr LRZ1_Deform(pc) jsr (Reset_TileOffsetPositionEff).l clr.l (HScroll_table).w move.w d2,(HScroll_table+$006).w @@ -115723,7 +115709,7 @@ loc_56BD2: loc_56C28: jsr sub_56DCA(pc) - jsr sub_56D40(pc) + jsr LRZ1_Deform(pc) loc_56C30: lea LRZ1_BGDrawArray(pc),a4 @@ -115760,7 +115746,7 @@ loc_56C76: ; --------------------------------------------------------------------------- loc_56C88: - jsr sub_56D40(pc) + jsr LRZ1_Deform(pc) loc_56C8C: lea LRZ1_BGDrawArray(pc),a4 @@ -115801,7 +115787,7 @@ loc_56CAA: clr.w (Events_routine_bg).w loc_56D16: - jsr sub_56D40(pc) + jsr LRZ1_Deform(pc) lea LRZ1_BGDrawArray(pc),a4 lea (HScroll_table).w,a5 moveq #$20,d6 @@ -115815,7 +115801,7 @@ loc_56D16: ; =============== S U B R O U T I N E ======================================= -sub_56D40: +LRZ1_Deform: move.w (Camera_Y_pos_copy).w,d0 move.w (Screen_shake_offset).w,d1 sub.w d1,d0 @@ -115862,7 +115848,7 @@ loc_56D9E: add.l d0,d2 dbf d3,loc_56D9E rts -; End of function sub_56D40 +; End of function LRZ1_Deform ; =============== S U B R O U T I N E ======================================= @@ -115982,7 +115968,7 @@ loc_56E66: clr.w (Events_bg+$00).w move.w (Camera_X_pos_BG_copy).w,(Events_bg+$02).w move.w (Camera_Y_pos_BG_copy).w,(Events_bg+$04).w - jsr sub_56D40(pc) + jsr LRZ1_Deform(pc) jsr (Reset_TileOffsetPositionEff).l move.w d2,(HScroll_table+$006).w addi.w #$E0,d0 @@ -159409,9 +159395,9 @@ loc_76F0E: lea word_773B8(pc),a1 jsr (SetUp_ObjAttributes3).l move.w 8(a0),$3C(a0) - move.l #loc_76F24,(a0) + move.l #Osc_Loop4,(a0) -loc_76F24: +Osc_Loop4: bsr.w sub_770EA movea.w $46(a0),a1 moveq #8,d0 @@ -177730,57 +177716,57 @@ AfterBoss_Cleanup: ; End of function AfterBoss_Cleanup ; --------------------------------------------------------------------------- -off_83C1C: dc.w loc_83C7C-off_83C1C - dc.w loc_83C90-off_83C1C - dc.w locret_83CA6-off_83C1C - dc.w locret_83CA6-off_83C1C - dc.w loc_83CA8-off_83C1C - dc.w loc_83CA8-off_83C1C - dc.w locret_83CB2-off_83C1C - dc.w locret_83CB2-off_83C1C - dc.w locret_83CB2-off_83C1C - dc.w locret_83CB2-off_83C1C - dc.w locret_83CB2-off_83C1C - dc.w loc_83CB4-off_83C1C - dc.w loc_83CC0-off_83C1C - dc.w loc_83CC0-off_83C1C - dc.w loc_83CC0-off_83C1C - dc.w loc_83CC0-off_83C1C - dc.w locret_83CCC-off_83C1C - dc.w locret_83CCC-off_83C1C - dc.w locret_83CCC-off_83C1C - dc.w locret_83CCC-off_83C1C - dc.w locret_83CCC-off_83C1C - dc.w locret_83CCC-off_83C1C - dc.w locret_83CCC-off_83C1C - dc.w locret_83CCC-off_83C1C - dc.w locret_83CCC-off_83C1C - dc.w locret_83CCC-off_83C1C - dc.w locret_83CCC-off_83C1C - dc.w locret_83CCC-off_83C1C - dc.w locret_83CCC-off_83C1C - dc.w locret_83CCC-off_83C1C - dc.w locret_83CCC-off_83C1C - dc.w locret_83CCC-off_83C1C - dc.w locret_83CCC-off_83C1C - dc.w locret_83CCC-off_83C1C - dc.w locret_83CCC-off_83C1C - dc.w locret_83CCC-off_83C1C - dc.w locret_83CCC-off_83C1C - dc.w locret_83CCC-off_83C1C - dc.w locret_83CCC-off_83C1C - dc.w locret_83CCC-off_83C1C - dc.w locret_83CCC-off_83C1C - dc.w locret_83CCC-off_83C1C - dc.w locret_83CCC-off_83C1C - dc.w locret_83CCC-off_83C1C - dc.w locret_83CCC-off_83C1C - dc.w locret_83CCC-off_83C1C - dc.w locret_83CCC-off_83C1C - dc.w locret_83CCC-off_83C1C -; --------------------------------------------------------------------------- - -loc_83C7C: +off_83C1C: dc.w AfterBoss_AIZ1-off_83C1C + dc.w AfterBoss_AIZ2-off_83C1C + dc.w AfterBoss_HCZ-off_83C1C + dc.w AfterBoss_HCZ-off_83C1C + dc.w AfterBoss_MGZ-off_83C1C + dc.w AfterBoss_MGZ-off_83C1C + dc.w AfterBoss_CNZ-off_83C1C + dc.w AfterBoss_CNZ-off_83C1C + dc.w AfterBoss_FBZ-off_83C1C + dc.w AfterBoss_FBZ-off_83C1C + dc.w AfterBoss_ICZ1-off_83C1C + dc.w AfterBoss_ICZ2-off_83C1C + dc.w AfterBoss_LBZ-off_83C1C + dc.w AfterBoss_LBZ-off_83C1C + dc.w AfterBoss_MHZ-off_83C1C + dc.w AfterBoss_MHZ-off_83C1C + dc.w AfterBoss_None-off_83C1C + dc.w AfterBoss_None-off_83C1C + dc.w AfterBoss_None-off_83C1C + dc.w AfterBoss_None-off_83C1C + dc.w AfterBoss_None-off_83C1C + dc.w AfterBoss_None-off_83C1C + dc.w AfterBoss_None-off_83C1C + dc.w AfterBoss_None-off_83C1C + dc.w AfterBoss_None-off_83C1C + dc.w AfterBoss_None-off_83C1C + dc.w AfterBoss_None-off_83C1C + dc.w AfterBoss_None-off_83C1C + dc.w AfterBoss_None-off_83C1C + dc.w AfterBoss_None-off_83C1C + dc.w AfterBoss_None-off_83C1C + dc.w AfterBoss_None-off_83C1C + dc.w AfterBoss_None-off_83C1C + dc.w AfterBoss_None-off_83C1C + dc.w AfterBoss_None-off_83C1C + dc.w AfterBoss_None-off_83C1C + dc.w AfterBoss_None-off_83C1C + dc.w AfterBoss_None-off_83C1C + dc.w AfterBoss_None-off_83C1C + dc.w AfterBoss_None-off_83C1C + dc.w AfterBoss_None-off_83C1C + dc.w AfterBoss_None-off_83C1C + dc.w AfterBoss_None-off_83C1C + dc.w AfterBoss_None-off_83C1C + dc.w AfterBoss_None-off_83C1C + dc.w AfterBoss_None-off_83C1C + dc.w AfterBoss_None-off_83C1C + dc.w AfterBoss_None-off_83C1C +; --------------------------------------------------------------------------- + +AfterBoss_AIZ1: lea (Pal_AIZ).l,a1 lea (Normal_palette_line_2).w,a2 moveq #$17,d0 @@ -177791,40 +177777,46 @@ loc_83C88: rts ; --------------------------------------------------------------------------- -loc_83C90: +AfterBoss_AIZ2: lea (Pal_AIZFire).l,a1 jsr (PalLoad_Line1).l - lea PLC_83CCE(pc),a1 + lea PLC_AfterMiniboss_AIZ(pc),a1 jmp (Load_PLC_Raw).l ; --------------------------------------------------------------------------- -locret_83CA6: +AfterBoss_HCZ: rts ; --------------------------------------------------------------------------- -loc_83CA8: +AfterBoss_MGZ: lea PLC_MonitorsSpikesSprings(pc),a1 jmp (Load_PLC_Raw).l ; --------------------------------------------------------------------------- -locret_83CB2: +AfterBoss_CNZ: +AfterBoss_FBZ: +AfterBoss_ICZ1: rts ; --------------------------------------------------------------------------- -loc_83CB4: +AfterBoss_ICZ2: lea (Pal_ICZ2).l,a1 jmp (PalLoad_Line1).l ; --------------------------------------------------------------------------- -loc_83CC0: +AfterBoss_LBZ: + ; Bug: LBZ uses a post-boss routine meant for MHZ + ; This makes the MHZ object palette load during LBZ1's results + +AfterBoss_MHZ: lea (Pal_MHZ2).l,a1 jmp (PalLoad_Line1).l ; --------------------------------------------------------------------------- -locret_83CCC: +AfterBoss_None: rts ; --------------------------------------------------------------------------- -PLC_83CCE: dc.w 6 +PLC_AfterMiniboss_AIZ: dc.w 6 dc.l ArtNem_Monitors dc.w tiles_to_bytes(ArtTile_Monitors) dc.l ArtNem_AIZMisc2 diff --git a/sonic3k.constants.asm b/sonic3k.constants.asm index c926ba01..902de5d9 100644 --- a/sonic3k.constants.asm +++ b/sonic3k.constants.asm @@ -833,7 +833,7 @@ Competition_total_laps ds.b 1 ; total number of laps in competition mode (typ ds.b 1 ; unused Competition_current_lap ds.b 1 ; current lap number for player 1 in competition mode Competition_current_lap_2P ds.b 1 ; current lap number for player 2 in competition mode -_unkFEDE ds.b 1 ; unused +Loser_time_left ds.b 1 ; left over from Sonic 2 ds.b $23 ; unused Results_screen_2P ds.w 1 ; left over from Sonic 2 Perfect_rings_left ds.w 1 ; left over from Sonic 2 @@ -1056,7 +1056,7 @@ mus_StopSFX ds.b 1 ; $E4 - stop all sound effects mus_FadeOut2 ds.b 1 ; $E5 - fade out music (duplicate) Mus__EndCmd = * ; next ID after last sound command -mus_FA = $FA ; $FA - ??? +mus_S2SEGA = $FA ; $FA - SEGA sound ID in Sonic 2 mus_StopSEGA = $FE ; $FE - Stop SEGA sound mus_SEGA = $FF ; $FF - Play SEGA sound dephase From 0589f934081107b825f76eed7e06c6644bf01efa Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Tue, 9 Nov 2021 20:32:05 +0000 Subject: [PATCH 34/72] Fix a bunch of disassembly burps --- .../Sonic/Anim - Sonic Knuckles 2P.asm | 10 +- General/Sprites/Tails/Anim - Tails 2P.asm | 6 +- s3.asm | 128 +++++++----------- sonic3k.asm | 69 ++++------ 4 files changed, 87 insertions(+), 126 deletions(-) diff --git a/General/Sprites/Sonic/Anim - Sonic Knuckles 2P.asm b/General/Sprites/Sonic/Anim - Sonic Knuckles 2P.asm index f65ef913..b5b42df9 100644 --- a/General/Sprites/Sonic/Anim - Sonic Knuckles 2P.asm +++ b/General/Sprites/Sonic/Anim - Sonic Knuckles 2P.asm @@ -23,8 +23,8 @@ dc.w AniSonic2P16-AniSonic2P dc.w AniSonic2P17-AniSonic2P dc.w AniSonic2P18-AniSonic2P - dc.w AniSonic2P19-AniSonic2P - dc.w AniSonic2P19-AniSonic2P + dc.w AniSonic2P1A-AniSonic2P + dc.w AniSonic2P1A-AniSonic2P dc.w AniSonic2P1B-AniSonic2P dc.w AniSonic2P1C-AniSonic2P dc.w AniSonic2P05-AniSonic2P @@ -59,8 +59,8 @@ AniKnuckles2P: dc.w AniSonic2P00-AniKnuckles2P dc.w AniSonic2P16-AniKnuckles2P dc.w AniSonic2P17-AniKnuckles2P dc.w AniSonic2P18-AniKnuckles2P - dc.w AniSonic2P19-AniKnuckles2P - dc.w AniSonic2P19-AniKnuckles2P + dc.w AniSonic2P1A-AniKnuckles2P + dc.w AniSonic2P1A-AniKnuckles2P dc.w AniSonic2P1B-AniKnuckles2P dc.w AniSonic2P1C-AniKnuckles2P dc.w AniSonic2P05-AniKnuckles2P @@ -92,7 +92,7 @@ AniSonic2P15: dc.b $B, $15, $FF AniSonic2P16: dc.b $20, $20, $FF AniSonic2P17: dc.b $20, $20, $FF AniSonic2P18: dc.b $20, $20, $FF -AniSonic2P19: dc.b $40, $21, $FF +AniSonic2P1A: dc.b $40, $21, $FF AniSonic2P1B: dc.b 9, $21, $FF AniSonic2P1C: dc.b $77, 0, $FF AniSonic2P20: dc.b 9, $1B, $FF diff --git a/General/Sprites/Tails/Anim - Tails 2P.asm b/General/Sprites/Tails/Anim - Tails 2P.asm index c852c68a..bea364fb 100644 --- a/General/Sprites/Tails/Anim - Tails 2P.asm +++ b/General/Sprites/Tails/Anim - Tails 2P.asm @@ -23,8 +23,8 @@ dc.w AniTails2P16-AniTails2P dc.w AniTails2P17-AniTails2P dc.w AniTails2P18-AniTails2P - dc.w AniTails2P19-AniTails2P - dc.w AniTails2P19-AniTails2P + dc.w AniTails2P1A-AniTails2P + dc.w AniTails2P1A-AniTails2P dc.w AniTails2P1B-AniTails2P dc.w AniTails2P1C-AniTails2P dc.w AniTails2P1D-AniTails2P @@ -52,7 +52,7 @@ AniTails2P15: dc.b $B, $15, $FF AniTails2P16: dc.b $20, $20, $FF AniTails2P17: dc.b $20, $20, $FF AniTails2P18: dc.b $20, $20, $FF -AniTails2P19: dc.b $40, $21, $FF +AniTails2P1A: dc.b $40, $21, $FF AniTails2P1B: dc.b 9, $21, $FF AniTails2P1C: dc.b $77, 0, $FF AniTails2P1D: dc.b 3, $1B, $FF diff --git a/s3.asm b/s3.asm index e0e07e87..df4465f2 100644 --- a/s3.asm +++ b/s3.asm @@ -2003,7 +2003,7 @@ loc_181C: loc_1834: move.w #0,(DMA_queue).w - move.l #-$500,(DMA_queue_slot).w + move.l #DMA_queue,(DMA_queue_slot).w rts ; End of function Process_DMA_Queue @@ -2703,12 +2703,8 @@ locret_1CBA: Kos_Decomp: - -var_2 = -2 -var_1 = -1 - subq.l #2,sp - move.b (a0)+,2+var_1(sp) + move.b (a0)+,1(sp) move.b (a0)+,(sp) move.w (sp),d5 moveq #$F,d4 @@ -2717,7 +2713,7 @@ Kos_Decomp_Loop: lsr.w #1,d5 move sr,d6 dbf d4,Kos_Decomp_ChkBit - move.b (a0)+,2+var_1(sp) + move.b (a0)+,1(sp) move.b (a0)+,(sp) move.w (sp),d5 moveq #$F,d4 @@ -2734,7 +2730,7 @@ Kos_Decomp_Match: lsr.w #1,d5 move sr,d6 dbf d4,Kos_Decomp_ChkBit2 - move.b (a0)+,2+var_1(sp) + move.b (a0)+,1(sp) move.b (a0)+,(sp) move.w (sp),d5 moveq #$F,d4 @@ -2744,7 +2740,7 @@ Kos_Decomp_ChkBit2: bcs.s Kos_Decomp_FullMatch lsr.w #1,d5 dbf d4,loc_1D0A - move.b (a0)+,2+var_1(sp) + move.b (a0)+,1(sp) move.b (a0)+,(sp) move.w (sp),d5 moveq #$F,d4 @@ -2753,7 +2749,7 @@ loc_1D0A: roxl.w #1,d3 lsr.w #1,d5 dbf d4,loc_1D1C - move.b (a0)+,2+var_1(sp) + move.b (a0)+,1(sp) move.b (a0)+,(sp) move.w (sp),d5 moveq #$F,d4 @@ -4738,8 +4734,6 @@ SonicFrameIndex:dc.b 1, 2, 3, 4, 5, 6, 7, 8, 9, $A, $B, $FF locret_3AB0: rts -; End of function Iterate_TitleSonicFrame - ; --------------------------------------------------------------------------- move.b (Title_anim_buffer).w,d2 cmpi.b #1,d2 @@ -4773,6 +4767,8 @@ loc_3AFC: locret_3B0A: rts +; End of function Iterate_TitleSonicFrame + ; =============== S U B R O U T I N E ======================================= @@ -18435,7 +18431,7 @@ Touch_Monitor: ; --------------------------------------------------------------------------- loc_11312: - cmpa.w #-$5000,a0 + cmpa.w #Player_1,a0 beq.s loc_1131E tst.w (Competition_mode).w beq.s locret_11334 @@ -19538,7 +19534,7 @@ Sonic_RecordPosCompetitionP2: Reset_Player_Position_Array: - cmpa.w #-$5000,a0 + cmpa.w #Player_1,a0 bne.s Reset_Player_Position_ArrayP2 lea (Pos_table).w,a1 lea (Stat_table).w,a2 @@ -25308,7 +25304,7 @@ loc_15D50: neg.w d0 addi.w #$2000,d0 lea (H_scroll_frame_offset).w,a1 - cmpa.w #-$5000,a0 + cmpa.w #Player_1,a0 beq.s loc_15DA8 lea (H_scroll_frame_offset_P2).w,a1 @@ -25953,11 +25949,6 @@ loc_16362: Animate_Tails: lea (AniTails).l,a1 -; End of function Animate_Tails - - -; =============== S U B R O U T I N E ======================================= - Animate_Tails_Part2: moveq #0,d0 @@ -25981,7 +25972,7 @@ loc_16392: subq.b #1,$24(a0) bpl.s locret_163D0 move.b d0,$24(a0) -; End of function Animate_Tails_Part2 +; End of function Animate_Tails ; =============== S U B R O U T I N E ======================================= @@ -32637,6 +32628,8 @@ SolidObject_Monitor_Tails: cmpi.b #2,$20(a1) bne.w SolidObject_cont rts +; End of function SolidObject_Monitor_Tails + ; --------------------------------------------------------------------------- Monitor_ChkOverEdge: @@ -32664,8 +32657,6 @@ Monitor_CharStandOn: bsr.w MvSonicOnPtfm moveq #0,d4 rts -; End of function SolidObject_Monitor_Tails - ; --------------------------------------------------------------------------- Obj_MonitorBreak: @@ -37999,7 +37990,7 @@ loc_20648: move.b #0,$20(a1) andi.w #-2,d0 move.b byte_206CE(pc,d0.w),d2 - move.b byte_206CF(pc,d0.w),d3 + move.b byte_206CE+1(pc,d0.w),d3 ext.w d2 ext.w d3 btst #0,$2A(a1) @@ -38047,7 +38038,7 @@ byte_206BE: dc.b $78 dc.b $79 dc.b $79 byte_206CE: dc.b 0 -byte_206CF: dc.b $18 + dc.b $18 dc.b $EE dc.b $13 dc.b $E8 @@ -38645,7 +38636,7 @@ SurfboardSplash2_Init: ; --------------------------------------------------------------------------- Obj_SurfboardSplash_Main: - movea.w %110000(a0),a1 + movea.w $30(a0),a1 lea (SurfboardSplash_Offsets).l,a2 bsr.w SurfboardSplash_SetOffsets move.w $10(a1),$10(a0) @@ -42576,7 +42567,7 @@ sub_242D8: lea $33(a0),a2 lea (Player_2).w,a1 move.w (Ctrl_2).w,d0 - bsr.s i + bsr.s sub_242F0 lea (Player_1).w,a1 subq.w #1,a2 move.w (Ctrl_1).w,d0 @@ -42586,7 +42577,7 @@ sub_242D8: ; =============== S U B R O U T I N E ======================================= -i: +sub_242F0: tst.b (a2) beq.w loc_2436C tst.b 4(a1) @@ -42666,7 +42657,7 @@ loc_2437A: locret_243DE: rts -; End of function i +; End of function sub_242F0 ; --------------------------------------------------------------------------- Map_LBZPlatformUndersideUnused: @@ -49001,7 +48992,7 @@ LBZTubeElevator_CheckPlayer: bne.w loc_29128 tst.w (Debug_placement_mode).w bne.w locret_29126 - cmpa.w #-$4FB6,a1 + cmpa.w #Player_2,a1 bne.s loc_2909A btst #4,$2A(a0) beq.s loc_2909A @@ -50945,7 +50936,7 @@ loc_2B02C: move.b $23(a0),d0 addq.b #1,$23(a0) move.b byte_2B056(pc,d0.w),$22(a0) - move.b byte_2B057(pc,d0.w),d0 + move.b byte_2B056+1(pc,d0.w),d0 bpl.s loc_2B054 move.b #0,$23(a0) @@ -50953,7 +50944,7 @@ loc_2B054: bra.s loc_2B05E ; --------------------------------------------------------------------------- byte_2B056: dc.b 7 -byte_2B057: dc.b 8 + dc.b 8 dc.b 9 dc.b $A dc.b 9 @@ -59604,7 +59595,7 @@ loc_32A22: move.l a0,-(sp) movea.l a1,a0 move.w a0,d1 - subi.w #-$5000,d1 + subi.w #Player_1,d1 bne.s loc_32A56 cmpi.w #2,(Player_mode).w beq.s loc_32A56 @@ -59978,7 +59969,7 @@ loc_32E78: move.l a0,-(sp) movea.l a1,a0 move.w a0,d1 - subi.w #-$5000,d1 + subi.w #Player_1,d1 bne.s loc_32EA6 cmpi.w #2,(Player_mode).w beq.s loc_32EA6 @@ -61380,7 +61371,7 @@ loc_342B6: muls.w $1C(a0),d0 asr.l #8,d0 move.w d0,$1A(a0) - bsr.s h + bsr.s sub_34354 jsr (MoveSprite2).l tst.b $2D(a0) bne.s loc_342E6 @@ -61428,7 +61419,7 @@ loc_3434E: ; =============== S U B R O U T I N E ======================================= -h: +sub_34354: move.b #$40,d1 tst.w $1C(a0) beq.s locret_343CE @@ -61490,7 +61481,7 @@ loc_343D6: loc_34400: add.w d1,$1A(a0) rts -; End of function h +; End of function sub_34354 ; =============== S U B R O U T I N E ======================================= @@ -62214,8 +62205,8 @@ loc_34B30: move.w #sfx_Skid,d0 jsr (Play_Sound_2).l movea.l a0,a2 - suba.w #-$5000,a2 - adda.w #-$33AC,a2 + suba.w #Player_1,a2 + adda.w #Dust,a2 move.b #6,5(a2) move.b #$15,$22(a2) @@ -62268,8 +62259,8 @@ loc_34BB2: move.w #sfx_Skid,d0 jsr (Play_Sound_2).l movea.l a0,a2 - suba.w #-$5000,a2 - adda.w #-$33AC,a2 + suba.w #Player_1,a2 + adda.w #Dust,a2 move.b #6,5(a2) move.b #$15,$22(a2) @@ -80089,11 +80080,9 @@ loc_44BE0: ; --------------------------------------------------------------------------- ChildObjDat_44BEC:dc.w 1 dc.l Obj_DecLevStartYGradual - dc.b 0 - dc.b 0 + dc.w 0 dc.l Obj_IncLevEndXGradual - dc.b 0 - dc.b 0 + dc.w 0 ; --------------------------------------------------------------------------- CutsceneKnux_CNZ2A: @@ -89228,7 +89217,7 @@ loc_4ADF4: movea.l (sp)+,a0 move.w (_unkF740).w,d3 lsl.w #4,d3 - move.l #-$3000,d1 + move.l #Kos_decomp_buffer,d1 move.w $3A(a0),d2 jsr (Add_To_DMA_Queue).l @@ -96491,7 +96480,7 @@ loc_4F63E: lea word_4F95A(pc),a1 jsr SetUp_ObjAttributes3(pc) move.w #$100,$2E(a0) - move.l #sub_4F68E,$34(a0) + move.l #loc_4F68E,$34(a0) move.b #4,$3D(a0) move.w #5,$3E(a0) cmpi.b #$A,$2C(a0) @@ -96512,11 +96501,9 @@ loc_4F682: move.w $3E(a0),d2 jsr MoveSprite_CircularSimple(pc) jmp Obj_Wait(pc) +; --------------------------------------------------------------------------- -; =============== S U B R O U T I N E ======================================= - - -sub_4F68E: +loc_4F68E: move.b #4,5(a0) bsr.w sub_4F818 move.l #loc_4F6CA,$34(a0) @@ -96582,12 +96569,12 @@ loc_4F726: loc_4F73A: bclr #1,$38(a0) neg.b $3D(a0) - bsr.w sub_4F68E + bsr.w loc_4F68E cmpi.b #$A,$2C(a0) bne.s loc_4F76A move.b #$A,5(a0) move.w #$3C,$2E(a0) - move.l #sub_4F68E,$34(a0) + move.l #loc_4F68E,$34(a0) bset #1,$38(a0) loc_4F76A: @@ -96608,8 +96595,6 @@ loc_4F786: movea.l off_4F792(pc,d1.w),a1 move.b (a1,d0.w),$3C(a0) rts -; End of function sub_4F68E - ; --------------------------------------------------------------------------- off_4F792: dc.l byte_4F800 dc.l byte_4F806 @@ -98079,7 +98064,7 @@ loc_505BA: movea.w $46(a0),a1 btst #7,$2A(a1) beq.s loc_505E4 - bsr.w sub_50690 + bsr.w loc_50690 loc_505E4: jmp Child_DrawTouch_Sprite(pc) @@ -98114,7 +98099,7 @@ loc_50628: loc_50638: move.b #6,5(a0) - move.l #sub_50690,$34(a0) + move.l #loc_50690,$34(a0) move.w $26(a0),d0 clr.w $1A(a0) rts @@ -98139,19 +98124,15 @@ loc_50666: bne.w locret_504DA lea ChildObjDat_50C24(pc),a2 jmp CreateChild1_Normal(pc) +; --------------------------------------------------------------------------- -; =============== S U B R O U T I N E ======================================= - - -sub_50690: +loc_50690: move.l #Delete_Current_Sprite,(a0) bset #7,$2A(a0) moveq #signextendB(sfx_BossHit),d0 jsr (Play_Sound_2).l lea ChildObjDat_50C2C(pc),a2 jmp CreateChild1_Normal(pc) -; End of function sub_50690 - ; --------------------------------------------------------------------------- loc_506AC: @@ -103785,17 +103766,12 @@ MoveSlowFall_AnimateRaw: ; --------------------------------------------------------------------------- jsr Swing_UpAndDown(pc) -; =============== S U B R O U T I N E ======================================= - - Move_AnimateRaw_Wait: jsr (MoveSprite2).l loc_53CD6: jsr Animate_Raw(pc) jmp Obj_Wait(pc) -; End of function Move_AnimateRaw_Wait - ; --------------------------------------------------------------------------- Refresh_ChildPosWait: @@ -106901,7 +106877,7 @@ ObjDat3_557D2: dc.l Map_Blastoid ChildObjDat_557DE:dc.w 0 dc.l loc_54B46 dc.l ObjDat3_557D2 - dc.l word_55805 + dc.l byte_55805 dc.l Move_AnimateRaw dc.b $EC dc.b $F9 @@ -106915,9 +106891,9 @@ byte_557F6: dc.b 0, $7F dc.b 1, 4 dc.b 0, $3F dc.b $F4 -word_55805: dc.w 2 - dc.w $3FC - dc.b 0 +byte_55805: dc.b 0, 2 + dc.b 3, $FC + dc.b 0 ; --------------------------------------------------------------------------- Obj_Buggernaut: @@ -113849,7 +113825,7 @@ off_598CC: dc.w loc_598D2-off_598CC ; --------------------------------------------------------------------------- loc_598D2: - lea word_59A04(pc),a1 + lea word_59A14(pc),a1 jmp SetUp_ObjAttributes3(pc) ; --------------------------------------------------------------------------- @@ -113889,7 +113865,7 @@ off_59928: dc.w loc_59930-off_59928 ; --------------------------------------------------------------------------- loc_59930: - lea word_59A0A(pc),a1 + lea word_59A1A(pc),a1 jmp SetUp_ObjAttributes3(pc) ; --------------------------------------------------------------------------- @@ -113986,12 +113962,12 @@ ObjDat3_599F8: dc.l Map_SnaleBlaster dc.b $10 dc.b 0 dc.b $B -word_59A04: dc.w $180 +word_59A14: dc.w $180 dc.b 4 dc.b $C dc.b 5 dc.b 0 -word_59A0A: dc.w $200 +word_59A1A: dc.w $200 dc.b 4 dc.b 4 dc.b 7 diff --git a/sonic3k.asm b/sonic3k.asm index 858be9ee..61e86a97 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -21539,7 +21539,7 @@ word_10A14: dc.w $800 dc.w $B00 dc.w $B80 dc.w $C00 - dc.w $B00 +word_10A26: dc.w $B00 dc.w $B80 dc.w $C00 dc.w $C80 @@ -46124,7 +46124,7 @@ loc_2226C: move.b #0,$20(a1) andi.w #-2,d0 move.b byte_222E4(pc,d0.w),d2 - move.b byte_222E5(pc,d0.w),d3 + move.b byte_222E4+1(pc,d0.w),d3 ext.w d2 ext.w d3 btst #0,$2A(a1) @@ -46167,7 +46167,7 @@ byte_222D4: dc.b $78 dc.b $79 dc.b $79 byte_222E4: dc.b 0 -byte_222E5: dc.b $18 + dc.b $18 dc.b $EE dc.b $13 dc.b $E8 @@ -59870,7 +59870,7 @@ loc_2B864: move.b $23(a0),d0 addq.b #1,$23(a0) move.b byte_2B88E(pc,d0.w),$22(a0) - move.b byte_2B88F(pc,d0.w),d0 + move.b byte_2B88E+1(pc,d0.w),d0 bpl.s loc_2B88C move.b #0,$23(a0) @@ -59878,7 +59878,7 @@ loc_2B88C: bra.s loc_2B896 ; --------------------------------------------------------------------------- byte_2B88E: dc.b 7 -byte_2B88F: dc.b 8 + dc.b 8 dc.b 9 dc.b $A dc.b 9 @@ -69814,7 +69814,7 @@ loc_337E8: move.l a0,-(sp) movea.l a1,a0 move.w a0,d1 - subi.w #-$5000,d1 + subi.w #Player_1,d1 bne.s loc_3381C cmpi.w #2,(Player_mode).w beq.s loc_3381C @@ -72417,8 +72417,8 @@ loc_3559E: move.w #sfx_Skid,d0 jsr (Play_Sound_2).l movea.l a0,a2 - suba.w #-$5000,a2 - adda.w #-$33AC,a2 + suba.w #Player_1,a2 + adda.w #Dust,a2 move.b #6,5(a2) move.b #$15,$22(a2) @@ -72471,8 +72471,8 @@ loc_35620: move.w #sfx_Skid,d0 jsr (Play_Sound_2).l movea.l a0,a2 - suba.w #-$5000,a2 - adda.w #-$33AC,a2 + suba.w #Player_1,a2 + adda.w #Dust,a2 move.b #6,5(a2) move.b #$15,$22(a2) @@ -129873,11 +129873,9 @@ loc_62274: ; --------------------------------------------------------------------------- ChildObjDat_62280:dc.w 1 dc.l Obj_DecLevStartYGradual - dc.b 0 - dc.b 0 + dc.w 0 dc.l Obj_IncLevEndXGradual - dc.b 0 - dc.b 0 + dc.w 0 word_6228E: dc.w $176 dc.w $300 dc.w $1C00 @@ -154614,7 +154612,7 @@ loc_73A92: movea.w $46(a0),a1 btst #7,$2A(a1) beq.s loc_73ABE - bsr.w sub_73B82 + bsr.w loc_73B82 loc_73ABE: jmp (Child_DrawTouch_Sprite).l @@ -154654,7 +154652,7 @@ loc_73B12: loc_73B24: move.b #6,5(a0) - move.l #sub_73B82,$34(a0) + move.l #loc_73B82,$34(a0) move.w $26(a0),d0 clr.w $1A(a0) rts @@ -154679,19 +154677,15 @@ loc_73B56: bne.w locret_7399C lea ChildObjDat_74198(pc),a2 jmp (CreateChild1_Normal).l +; --------------------------------------------------------------------------- -; =============== S U B R O U T I N E ======================================= - - -sub_73B82: +loc_73B82: move.l #Delete_Current_Sprite,(a0) bset #7,$2A(a0) moveq #signextendB(sfx_BossHit),d0 jsr (Play_Sound_2).l lea ChildObjDat_741A0(pc),a2 jmp (CreateChild1_Normal).l -; End of function sub_73B82 - ; --------------------------------------------------------------------------- loc_73BA0: @@ -168910,7 +168904,7 @@ loc_7DEA2: loc_7DEA6: move.b #2,5(a0) move.w #$F,$2E(a0) - move.l #sub_7DEF6,$34(a0) + move.l #loc_7DEF6,$34(a0) move.b #2,$39(a0) clr.w $40(a0) rts @@ -168928,23 +168922,19 @@ loc_7DEC6: neg.w d0 subq.b #1,$39(a0) bpl.s loc_7DEEC - bsr.w sub_7DEF6 + bsr.w loc_7DEF6 loc_7DEEC: move.w d0,$40(a0) move.w d1,$3C(a0) rts +; --------------------------------------------------------------------------- -; =============== S U B R O U T I N E ======================================= - - -sub_7DEF6: +loc_7DEF6: move.b #4,5(a0) move.w #$9F,$2E(a0) move.l #loc_7DF0C,$34(a0) rts -; End of function sub_7DEF6 - ; --------------------------------------------------------------------------- loc_7DF0C: @@ -180858,17 +180848,12 @@ MoveSlowFall_AnimateRaw: ; --------------------------------------------------------------------------- jsr Swing_UpAndDown(pc) -; =============== S U B R O U T I N E ======================================= - - Move_AnimateRaw_Wait: jsr (MoveSprite2).l loc_85652: jsr Animate_Raw(pc) jmp Obj_Wait(pc) -; End of function Move_AnimateRaw_Wait - ; --------------------------------------------------------------------------- Refresh_ChildPosWait: @@ -184890,7 +184875,7 @@ ObjDat3_879EC: dc.l Map_Blastoid ChildObjDat_879F8:dc.w 0 dc.l loc_86D4A dc.l ObjDat3_879EC - dc.l word_87A1F + dc.l byte_87A1F dc.l Move_AnimateRaw dc.b $EC dc.b $F9 @@ -184904,9 +184889,9 @@ byte_87A10: dc.b 0, $7F dc.b 1, 4 dc.b 0, $3F dc.b $F4 -word_87A1F: dc.w 2 - dc.w $3FC - dc.b 0 +byte_87A1F: dc.b 0, 2 + dc.b 3, $FC + dc.b 0 ; --------------------------------------------------------------------------- Obj_Buggernaut: @@ -185704,9 +185689,9 @@ loc_881C8: locret_881E8: rts ; --------------------------------------------------------------------------- -word_881EA: dc.w Player_1, Ctrl_1 - dc.w Player_2, Ctrl_2 - dc.w Player_1, Ctrl_1 +word_881EA: dc.w Player_1, Ctrl_1 + dc.w Player_2, Ctrl_2 + dc.w Player_1, Ctrl_1 ; --------------------------------------------------------------------------- loc_881F6: From a32d6928f6b42ee4ebfb0bb40f5dfcc1ca8d0ec2 Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Tue, 9 Nov 2021 22:19:40 +0000 Subject: [PATCH 35/72] Convert a few integer constants to decimal where it's more readable --- s3.asm | 57 ++++++++++++++++++++++++++++++----------------------- sonic3k.asm | 51 ++++++++++++++++++++++++++--------------------- 2 files changed, 60 insertions(+), 48 deletions(-) diff --git a/s3.asm b/s3.asm index df4465f2..e1992c2b 100644 --- a/s3.asm +++ b/s3.asm @@ -9079,8 +9079,8 @@ loc_7BEE: ; End of function Draw_SSNum ; --------------------------------------------------------------------------- -SSNum_Precision:dc.w $64 - dc.w $A +SSNum_Precision:dc.w 100 + dc.w 10 dc.w 1 MapUnc_SSNum: binclude "General/Special Stage/Uncompressed Map/HUD Numbers.bin" even @@ -14913,7 +14913,7 @@ HUD_AddToScore: move.b #1,(Update_HUD_score).w lea (Score).w,a3 add.l d0,(a3) - move.l #$F423F,d1 + move.l #999999,d1 cmp.l (a3),d1 bhi.s loc_EA5E move.l d1,(a3) @@ -20694,9 +20694,9 @@ Sonic_Super: ori.b #1,(Update_HUD_ring_count).w cmpi.w #1,(Ring_count).w beq.s loc_12AC6 - cmpi.w #$A,(Ring_count).w + cmpi.w #10,(Ring_count).w beq.s loc_12AC6 - cmpi.w #$64,(Ring_count).w + cmpi.w #100,(Ring_count).w bne.s loc_12ACC loc_12AC6: @@ -28416,7 +28416,7 @@ GiveRing: GiveRing_1P: move.w #sfx_RingRight,d0 - cmpi.w #$3E7,(Ring_count).w + cmpi.w #999,(Ring_count).w bcc.s JmpTo_Play_Sound_2 addq.w #1,(Ring_count).w ori.b #1,(Update_HUD_ring_count).w @@ -32798,24 +32798,24 @@ Monitor_Give_Rings: lea (Update_HUD_ring_count).w,a3 lea (Extra_life_flags).w,a4 lea (Total_ring_count).w,a5 - addi.w #$A,(a5) - cmpi.w #$3E7,(a5) + addi.w #10,(a5) + cmpi.w #999,(a5) bcs.s loc_1B6EA - move.w #$3E7,(a5) + move.w #999,(a5) loc_1B6EA: - addi.w #$A,(a2) - cmpi.w #$3E7,(a2) + addi.w #10,(a2) + cmpi.w #999,(a2) bcs.s loc_1B6F8 - move.w #$3E7,(a2) + move.w #999,(a2) loc_1B6F8: ori.b #1,(a3) - cmpi.w #$64,(a2) + cmpi.w #100,(a2) bcs.s loc_1B714 bset #1,(a4) beq.s loc_1B71C - cmpi.w #$C8,(a2) + cmpi.w #200,(a2) bcs.s loc_1B714 bset #2,(a4) beq.s loc_1B71C @@ -52238,7 +52238,7 @@ sub_2C49E: move.b #2,$22(a1) move.w #$20,$36(a1) move.w a0,$3E(a1) - cmpi.w #$32,(Ring_count).w + cmpi.w #50,(Ring_count).w bcs.s loc_2C546 bsr.w sub_2C83E @@ -53020,7 +53020,7 @@ loc_2CE5A: moveq #0,d1 move.b (Timer_second).w,d1 add.w d1,d0 - cmpi.w #$257,d0 + cmpi.w #599,d0 bne.s loc_2CE80 move.w #10000,(Time_bonus_countdown).w bra.s loc_2CE98 @@ -53101,14 +53101,14 @@ loc_2CF4C: moveq #0,d0 tst.w (Time_bonus_countdown).w beq.s loc_2CF5E - addi.w #$A,d0 - subi.w #$A,(Time_bonus_countdown).w + addi.w #10,d0 + subi.w #10,(Time_bonus_countdown).w loc_2CF5E: tst.w (Ring_bonus_countdown).w beq.s loc_2CF6E - addi.w #$A,d0 - subi.w #$A,(Ring_bonus_countdown).w + addi.w #10,d0 + subi.w #10,(Ring_bonus_countdown).w loc_2CF6E: add.w d0,(Total_bonus_countup).w @@ -53348,7 +53348,14 @@ loc_2D124: dc.b 0, 0, 4 dc.b 0, 0, 2 dc.b 0, 0, 1 -TimeBonus: dc.w $1388, $1388, $3E8, $1F4, $190, $12C, $64, $A +TimeBonus: dc.w 5000 + dc.w 5000 + dc.w 1000 + dc.w 500 + dc.w 400 + dc.w 300 + dc.w 100 + dc.w 10 ObjArray_LevResults:dc.l Obj_LevResultsCharName dc.w $E0 dc.w $FDE0 @@ -53581,7 +53588,7 @@ loc_2D442: clr.w (Time_bonus_countdown).w tst.w (Special_stage_rings_left).w bne.s loc_2D48E - move.w #$1388,(Time_bonus_countdown).w + move.w #5000,(Time_bonus_countdown).w loc_2D48E: move.w #$168,$2E(a0) @@ -104740,7 +104747,7 @@ AddRings: lea (Update_HUD_ring_count).w,a3 lea (Extra_life_flags).w,a4 lea (Total_ring_count).w,a5 - move.w #$3E7,d1 + move.w #999,d1 add.w d0,(a5) cmp.w (a5),d1 bcc.s loc_544A0 @@ -104754,11 +104761,11 @@ loc_544A0: loc_544A8: ori.b #1,(a3) - cmpi.w #$64,(a2) + cmpi.w #100,(a2) bcs.s loc_544C4 bset #1,(a4) beq.s loc_544CC - cmpi.w #$C8,(a2) + cmpi.w #200,(a2) bcs.s loc_544C4 bset #2,(a4) beq.s loc_544CC diff --git a/sonic3k.asm b/sonic3k.asm index 61e86a97..85c299ff 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -10706,8 +10706,8 @@ loc_8C76: ; End of function Draw_SSNum ; --------------------------------------------------------------------------- -SSNum_Precision: dc.w $64 - dc.w $A +SSNum_Precision:dc.w 100 + dc.w 10 dc.w 1 MapUnc_SSNum: binclude "General/Special Stage/Uncompressed Map/HUD Numbers.bin" even @@ -17329,7 +17329,7 @@ HUD_AddToScore: move.b #1,(Update_HUD_score).w lea (Score).w,a3 add.l d0,(a3) ; Add to score - move.l #$F423F,d1 ; 9999990 maximum points + move.l #999999,d1 ; 9999990 maximum points cmp.l (a3),d1 bhi.s loc_DCE2 move.l d1,(a3) @@ -40098,24 +40098,24 @@ Monitor_Give_Rings: lea (Update_HUD_ring_count).w,a3 lea (Extra_life_flags).w,a4 lea (Total_ring_count).w,a5 - addi.w #$A,(a5) - cmpi.w #$3E7,(a5) + addi.w #10,(a5) + cmpi.w #999,(a5) blo.s loc_1D8CC - move.w #$3E7,(a5) + move.w #999,(a5) loc_1D8CC: - addi.w #$A,(a2) - cmpi.w #$3E7,(a2) + addi.w #10,(a2) + cmpi.w #999,(a2) blo.s loc_1D8DA - move.w #$3E7,(a2) + move.w #999,(a2) loc_1D8DA: ori.b #1,(a3) - cmpi.w #$64,(a2) + cmpi.w #100,(a2) blo.s loc_1D8F6 bset #1,(a4) beq.s loc_1D8FE - cmpi.w #$C8,(a2) + cmpi.w #200,(a2) blo.s loc_1D8F6 bset #2,(a4) beq.s loc_1D8FE @@ -62362,7 +62362,7 @@ loc_2DB66: moveq #0,d1 move.b (Timer_second).w,d1 add.w d1,d0 - cmpi.w #$257,d0 + cmpi.w #599,d0 bne.s loc_2DB90 move.w #10000,(Time_bonus_countdown).w ; If clock is at 9:59 give an automatic 100000 point time bonus bra.s loc_2DBA8 @@ -62443,14 +62443,14 @@ loc_2DC5C: moveq #0,d0 tst.w (Time_bonus_countdown).w beq.s loc_2DC6E - addi.w #$A,d0 - subi.w #$A,(Time_bonus_countdown).w ; Get 100 points from the time bonus + addi.w #10,d0 + subi.w #10,(Time_bonus_countdown).w ; Get 100 points from the time bonus loc_2DC6E: tst.w (Ring_bonus_countdown).w beq.s loc_2DC7E - addi.w #$A,d0 - subi.w #$A,(Ring_bonus_countdown).w ; Get 100 points from the ring bonus + addi.w #10,d0 + subi.w #10,(Ring_bonus_countdown).w ; Get 100 points from the ring bonus loc_2DC7E: add.w d0,(Total_bonus_countup).w ; Add to total score for level @@ -62715,9 +62715,14 @@ loc_2DE70: dc.b 0, 0, 4 dc.b 0, 0, 2 dc.b 0, 0, 1 -TimeBonus: dc.w $1388, $1388, $3E8, $1F4, $190, $12C, $64, $A - - +TimeBonus: dc.w 5000 + dc.w 5000 + dc.w 1000 + dc.w 500 + dc.w 400 + dc.w 300 + dc.w 100 + dc.w 10 ObjArray_LevResults: dc.l Obj_LevResultsCharName ; Object address dc.w $E0 ; X destination dc.w $FDE0 ; X position @@ -63134,7 +63139,7 @@ loc_2E3DA: clr.w (Time_bonus_countdown).w tst.w (Special_stage_rings_left).w bne.s loc_2E404 - move.w #$1388,(Time_bonus_countdown).w + move.w #5000,(Time_bonus_countdown).w loc_2E404: move.w #$168,$2E(a0) @@ -182179,7 +182184,7 @@ AddRings: lea (Update_HUD_ring_count).w,a3 lea (Extra_life_flags).w,a4 lea (Total_ring_count).w,a5 - move.w #$3E7,d1 + move.w #999,d1 add.w d0,(a5) cmp.w (a5),d1 bhs.s loc_8610E @@ -182193,11 +182198,11 @@ loc_8610E: loc_86116: ori.b #1,(a3) - cmpi.w #$64,(a2) + cmpi.w #100,(a2) blo.s loc_86132 bset #1,(a4) beq.s loc_8613A - cmpi.w #$C8,(a2) + cmpi.w #200,(a2) blo.s loc_86132 bset #2,(a4) beq.s loc_8613A From 218ec4533d6a69833992975ceca1c9daff54471c Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Tue, 9 Nov 2021 22:16:07 +0000 Subject: [PATCH 36/72] Convert bitwise constants from unsigned to unsigned --- s3.asm | 394 +++++++++++++++++++++++----------------------- sonic3k.asm | 440 ++++++++++++++++++++++++++-------------------------- 2 files changed, 417 insertions(+), 417 deletions(-) diff --git a/s3.asm b/s3.asm index e1992c2b..7b15daf3 100644 --- a/s3.asm +++ b/s3.asm @@ -23270,7 +23270,7 @@ loc_14804: move.b d0,$2F(a0) move.b #2,$2A(a0) move.b #$1E,$2C(a0) - move.b #-$7F,$2E(a0) + move.b #$81,$2E(a0) move.b d0,$30(a0) move.b d0,$31(a0) move.w d0,$32(a0) @@ -23417,7 +23417,7 @@ loc_149E8: move.w #4,(Tails_CPU_routine).w move.b #0,$3D(a0) move.w #0,$3E(a0) - move.b #-$7F,$2E(a0) + move.b #$81,$2E(a0) move.b #2,$2A(a0) move.b #$20,$20(a0) rts @@ -23469,7 +23469,7 @@ loc_14A90: neg.w d2 cmpi.w #$30,d2 bcs.s loc_14AA8 - andi.w #-$C0D,d1 + andi.w #$F3F3,d1 ori.w #$404,d1 loc_14AA8: @@ -23484,7 +23484,7 @@ loc_14AA8: loc_14ABC: cmpi.w #$30,d2 bcs.s loc_14ACA - andi.w #-$C0D,d1 + andi.w #$F3F3,d1 ori.w #$808,d1 loc_14ACA: @@ -23686,7 +23686,7 @@ loc_14C9C: andi.w #$7FFF,$A(a0) tst.b $A(a1) bpl.s loc_14CEE - ori.w #-$8000,$A(a0) + ori.w #$8000,$A(a0) loc_14CEE: move.b $46(a1),$46(a0) @@ -26621,7 +26621,7 @@ Obj_Tails_Tail_Main: andi.w #$7FFF,$A(a0) tst.w $A(a2) bpl.s loc_16BE2 - ori.w #-$8000,$A(a0) + ori.w #$8000,$A(a0) loc_16BE2: moveq #0,d0 @@ -27583,7 +27583,7 @@ loc_179DC: andi.w #$7FFF,$A(a0) tst.w $A(a2) bpl.s loc_179FE - ori.w #-$8000,$A(a0) + ori.w #$8000,$A(a0) bra.s loc_179FE ; --------------------------------------------------------------------------- @@ -28057,7 +28057,7 @@ Obj_Fire_Shield_Main: andi.w #$7FFF,$A(a0) tst.w $A(a2) bpl.s loc_1820C - ori.w #-$8000,$A(a0) + ori.w #$8000,$A(a0) loc_1820C: lea (Ani_FireShield).l,a1 @@ -28130,7 +28130,7 @@ Obj_Lightning_Shield_Main: andi.w #$7FFF,$A(a0) tst.w $A(a2) bpl.s loc_18328 - ori.w #-$8000,$A(a0) + ori.w #$8000,$A(a0) loc_18328: tst.b $20(a0) @@ -28174,7 +28174,7 @@ loc_18378: ; --------------------------------------------------------------------------- Obj_Lightning_Shield_Destroy: - andi.b #-$72,$2B(a2) + andi.b #$8E,$2B(a2) move.l #Obj_Insta_Shield,(a0) rts @@ -30160,7 +30160,7 @@ loc_19CC4: move.w $10(a0),d0 loc_19CC8: - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.w loc_19CE2 @@ -30250,7 +30250,7 @@ loc_19D6C: moveq #0,d6 loc_19D84: - andi.w #-$80,d6 + andi.w #$FF80,d6 movea.l (Object_load_addr_front).w,a0 loc_19D8C: @@ -30282,20 +30282,20 @@ loc_19DB6: move.w a3,(Object_respawn_index_back).w move.w #-1,(Camera_X_pos_coarse).w move.w (Camera_Y_pos).w,d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 move.w d0,(Camera_Y_pos_coarse).w loc_19DD0: move.w (Camera_X_pos).w,d1 subi.w #$80,d1 - andi.w #-$80,d1 + andi.w #$FF80,d1 move.w d1,(Camera_X_pos_coarse_back).w lea (Sprite_Listing).l,a4 tst.w (Camera_min_Y_pos).w bpl.s loc_19E1A lea loc_1A010(pc),a6 move.w (Camera_Y_pos).w,d3 - andi.w #-$80,d3 + andi.w #$FF80,d3 move.w d3,d4 addi.w #$200,d4 subi.w #$80,d3 @@ -30315,7 +30315,7 @@ loc_19E0A: loc_19E1A: move.w (Camera_Y_pos).w,d3 - andi.w #-$80,d3 + andi.w #$FF80,d3 move.w d3,d4 addi.w #$200,d4 subi.w #$80,d3 @@ -30328,7 +30328,7 @@ loc_19E30: loc_19E34: move.w #$FFF,d5 move.w (Camera_X_pos).w,d6 - andi.w #-$80,d6 + andi.w #$FF80,d6 cmp.w (Camera_X_pos_coarse).w,d6 beq.w loc_19EEA bge.s loc_19EA2 @@ -30413,7 +30413,7 @@ loc_19EE2: loc_19EEA: move.w (Camera_Y_pos).w,d6 - andi.w #-$80,d6 + andi.w #$FF80,d6 move.w d6,d3 cmp.w (Camera_Y_pos_coarse).w,d6 beq.w loc_19FCA @@ -34644,12 +34644,12 @@ locret_1CAB2: loc_1CAB4: tst.b $32(a0) beq.s loc_1CAC0 - andi.b #-2,(Player_1+object_control).w + andi.b #$FE,(Player_1+object_control).w loc_1CAC0: tst.b $33(a0) beq.s loc_1CACC - andi.b #-2,(Player_2+object_control).w + andi.b #$FE,(Player_2+object_control).w loc_1CACC: clr.b (_unkF7C7).w @@ -34736,7 +34736,7 @@ loc_1CBA0: clr.b (a2) move.b #$3C,2(a2) bclr d2,(_unkF7C7).w - andi.b #-2,$2E(a1) + andi.b #$FE,$2E(a1) btst #6,$2C(a0) bne.s locret_1CBC8 move.b #1,$3A(a0) @@ -34807,12 +34807,12 @@ locret_1CC60: loc_1CC62: tst.b $32(a0) beq.s loc_1CC6E - andi.b #-2,(Player_1+object_control).w + andi.b #$FE,(Player_1+object_control).w loc_1CC6E: tst.b $33(a0) beq.s loc_1CC7A - andi.b #-2,(Player_2+object_control).w + andi.b #$FE,(Player_2+object_control).w loc_1CC7A: clr.b (_unkF7C7).w @@ -34884,7 +34884,7 @@ loc_1CD68: move.l (a0),(a1) move.l $C(a0),$C(a1) move.w $A(a0),$A(a1) - move.b #-$7C,4(a1) + move.b #$84,4(a1) move.w $10(a0),$10(a1) move.w $14(a0),$14(a1) move.w (a4)+,d0 @@ -35073,7 +35073,7 @@ loc_1D12C: loc_1D13A: move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.w loc_1C778 @@ -35113,7 +35113,7 @@ loc_1D190: loc_1D19E: move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.w loc_1C778 @@ -35224,7 +35224,7 @@ loc_1D2BA: loc_1D2C8: move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.w loc_1C778 @@ -35264,7 +35264,7 @@ loc_1D31E: loc_1D32C: move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.w loc_1C778 @@ -35304,7 +35304,7 @@ loc_1D382: loc_1D390: move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.w loc_1C778 @@ -35708,7 +35708,7 @@ loc_1D800: loc_1D818: move.w $38(a0),(Chain_bonus_counter).w - andi.b #-$19,$2A(a0) + andi.b #$E7,$2A(a0) tst.w (Competition_mode).w bne.w loc_1D874 move.l #loc_1D836,(a0) @@ -36065,7 +36065,7 @@ loc_1DB88: add.w d3,d0 move.w d0,$14(a1) move.w $A(a0),$A(a1) - ori.w #-$8000,$A(a1) + ori.w #$8000,$A(a1) move.w #$80,8(a1) move.b #$18,7(a1) move.b #$18,7(a1) @@ -37115,7 +37115,7 @@ loc_1F9BA: move.w $10(a0),$10(a1) move.w $14(a0),$14(a1) move.w $A(a0),$A(a1) - ori.w #-$8000,$A(a1) + ori.w #$8000,$A(a1) move.b 8(a0),8(a1) move.b 7(a0),7(a1) move.b 6(a0),6(a1) @@ -37575,13 +37575,13 @@ loc_2018C: lea $32(a1),a2 tst.b (a2) beq.s loc_201F6 - move.b #-$7F,(a2) + move.b #$81,(a2) loc_201F6: addq.w #1,a2 tst.b (a2) beq.s loc_20200 - move.b #-$7F,(a2) + move.b #$81,(a2) loc_20200: bra.s loc_2022E @@ -37988,7 +37988,7 @@ loc_20648: add.w d0,d0 move.b byte_206BE(pc,d0.w),$22(a1) move.b #0,$20(a1) - andi.w #-2,d0 + andi.w #$FFFE,d0 move.b byte_206CE(pc,d0.w),d2 move.b byte_206CE+1(pc,d0.w),d3 ext.w d2 @@ -38001,7 +38001,7 @@ loc_20676: movea.w $3C(a0),a3 move.b $26(a3),d0 addq.b #4,d0 - andi.b #-8,d0 + andi.b #$F8,d0 jsr (GetSineCosine).l neg.w d0 addi.w #8,d0 @@ -38086,7 +38086,7 @@ loc_206EC: move.b #$14,$20(a1) move.b #0,$3D(a1) move.b #3,$2E(a1) - andi.b #-3,4(a1) + andi.b #$FD,4(a1) move.b #1,(a2) moveq #signextendB(sfx_Grab),d0 jsr (Play_Sound_2).l @@ -38918,7 +38918,7 @@ Spring_Up: move.w #$391,$A(a0) cmpi.b #$12,(Current_zone).w bne.s Spring_Common - ori.w #-$8000,$A(a0) + ori.w #$8000,$A(a0) Spring_Common: move.b $2C(a0),d0 @@ -39839,7 +39839,7 @@ loc_221F4: move.l #loc_225B8,(a1) loc_2221C: - andi.b #-$10,$2C(a0) + andi.b #$F0,$2C(a0) move.b (a2)+,d1 or.b d1,$2C(a0) move.w $10(a0),$10(a1) @@ -40034,26 +40034,26 @@ loc_223F0: bhi.w locret_22498 move.w #0,$36(a0) move.b $2C(a0),d0 - andi.b #-$10,d0 - cmpi.b #-$20,d0 + andi.b #$F0,d0 + cmpi.b #$E0,d0 bne.s loc_2244A addi.w #$16,$14(a0) bchg #1,$2A(a0) bchg #1,4(a0) andi.b #$F,$2C(a0) - ori.b #-$10,$2C(a0) + ori.b #$F0,$2C(a0) move.l #loc_222A0,(a0) movea.w $3E(a0),a1 neg.w $32(a1) loc_2244A: - cmpi.b #-$10,d0 + cmpi.b #$F0,d0 bne.s loc_2247C subi.w #$16,$14(a0) bchg #1,$2A(a0) bchg #1,4(a0) andi.b #$F,$2C(a0) - ori.b #-$20,$2C(a0) + ori.b #$E0,$2C(a0) move.l #loc_222A0,(a0) movea.w $3E(a0),a1 neg.w $32(a1) @@ -40100,26 +40100,26 @@ loc_224D2: bcs.s locret_2255C move.w #$1800,$36(a0) move.b $2C(a0),d0 - andi.b #-$10,d0 - cmpi.b #-$20,d0 + andi.b #$F0,d0 + cmpi.b #$E0,d0 bne.s loc_2252A addi.w #$16,$14(a0) bchg #1,$2A(a0) bchg #1,4(a0) andi.b #$F,$2C(a0) - ori.b #-$10,$2C(a0) + ori.b #$F0,$2C(a0) move.l #loc_222A0,(a0) movea.w $3E(a0),a1 neg.w $32(a1) loc_2252A: - cmpi.b #-$10,d0 + cmpi.b #$F0,d0 bne.s locret_2255C subi.w #$16,$14(a0) bchg #1,$2A(a0) bchg #1,4(a0) andi.b #$F,$2C(a0) - ori.b #-$20,$2C(a0) + ori.b #$E0,$2C(a0) move.l #loc_222A0,(a0) movea.w $3E(a0),a1 neg.w $32(a1) @@ -40743,7 +40743,7 @@ sub_22CE0: lsr.w #3,d4 move.w d0,d5 ror.w #3,d5 - andi.w #-$2000,d5 + andi.w #$E000,d5 move.w #$F0,d6 swap d6 move.w #$F,d7 @@ -42052,7 +42052,7 @@ loc_23DE8: loc_23E12: move.w $44(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmp.w $42(a0),d0 bhi.w loc_23E2C @@ -43760,7 +43760,7 @@ loc_2539E: move.w $10(a0),$10(a1) move.w $14(a0),$14(a1) move.b $2A(a0),$2A(a1) - move.b #-$63,$28(a1) + move.b #$9D,$28(a1) bset #4,$2B(a1) addi.w #$40,$10(a1) btst #0,$2A(a0) @@ -43867,7 +43867,7 @@ loc_25630: loc_2564C: move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.w loc_25666 @@ -44045,7 +44045,7 @@ loc_25802: move.b $2A(a1),$2A(a0) move.b $2A(a1),d0 andi.b #1,d0 - andi.b #-2,4(a1) + andi.b #$FE,4(a1) or.b d0,4(a1) move.w $10(a3),$10(a1) move.w $14(a3),$14(a1) @@ -44866,7 +44866,7 @@ Obj_LBZCupElevatorAttach: move.w #$100,8(a0) loc_2610E: - andi.b #-2,4(a0) + andi.b #$FE,4(a0) subi.b #$40,d0 bpl.s loc_26120 ori.b #1,4(a0) @@ -47769,7 +47769,7 @@ loc_282D4: bsr.s sub_2831E move.w #$80,8(a1) move.b #2,$22(a1) - move.b #-$68,$28(a1) + move.b #$98,$28(a1) move.l #loc_28364,(a1) moveq #signextendB(sfx_EnergyZap),d0 jsr (Play_Sound_2).l @@ -47825,7 +47825,7 @@ Obj_22_1: move.b #$10,7(a0) move.b #$10,6(a0) move.w #$280,8(a0) - move.b #-$29,$28(a0) + move.b #$D7,$28(a0) move.l #loc_283DC,(a0) loc_283DC: @@ -48019,7 +48019,7 @@ Obj_AutoTunnelInit: tst.b $2E(a1) bne.s locret_28644 addq.b #2,(a4) - move.b #-$7F,$2E(a1) + move.b #$81,$2E(a1) move.b #2,$20(a1) clr.b $40(a1) move.w #$800,$1C(a1) @@ -48427,7 +48427,7 @@ Obj_TunnelExContinuous: move.w #$380,8(a1) move.w #0,$18(a1) move.w #$400,$1A(a1) - move.b #-$7C,4(a1) + move.b #$84,4(a1) move.b #1,$22(a1) move.w #$B,$2E(a1) @@ -48511,13 +48511,13 @@ loc_28AE0: add.w d0,d0 move.w d0,$2E(a1) addi.w #$10,$10(a1) - move.b #-$3A,$28(a1) + move.b #$C6,$28(a1) loc_28B5A: subq.w #1,$30(a0) bpl.s loc_28B6C move.w #$78,$30(a0) - eori.b #-1,$32(a0) + eori.b #$FF,$32(a0) loc_28B6C: jmp (Delete_Sprite_If_Not_In_Range).l @@ -49022,7 +49022,7 @@ loc_290B0: loc_290D6: addq.b #2,(a2) - move.b #-$7D,$2E(a1) + move.b #$83,$2E(a1) move.b #0,$20(a1) clr.b $40(a1) move.w #0,$1C(a1) @@ -49063,7 +49063,7 @@ loc_2915E: moveq #0,d0 move.b $26(a0),d0 move.b LBZTubeElevator_PlayerFrame(pc,d0.w),$22(a1) - andi.b #-4,4(a1) + andi.b #$FC,4(a1) move.b LBZTubeElevator_PlayerFlip(pc,d0.w),d0 or.b d0,4(a1) moveq #0,d0 @@ -49377,7 +49377,7 @@ loc_29800: loc_29818: move.w $38(a0),(Chain_bonus_counter).w - andi.b #-$19,$2A(a0) + andi.b #$E7,$2A(a0) movea.l $3C(a0),a4 addq.b #1,$22(a0) move.l #loc_29838,(a0) @@ -49587,7 +49587,7 @@ loc_29A50: loc_29A56: move.w $38(a0),(Chain_bonus_counter).w - andi.b #-$19,$2A(a0) + andi.b #$E7,$2A(a0) lea (word_29A8C).l,a4 moveq #0,d0 move.b $22(a0),d0 @@ -50048,7 +50048,7 @@ loc_2A470: move.b d0,$35(a0) move.b #8,$37(a0) move.l #Map_AIZDrawBridgeFire,$C(a0) - move.w #-$3D17,$A(a0) + move.w #$C2E9,$A(a0) move.b #$60,7(a0) move.b #8,6(a0) move.b #4,4(a0) @@ -50057,7 +50057,7 @@ loc_2A470: bne.w loc_2A52E move.l #loc_2A57C,(a1) move.l #Map_AIZDrawBridgeFire,$C(a1) - move.w #-$3D17,$A(a1) + move.w #$C2E9,$A(a1) ori.b #4,4(a1) move.b #$60,7(a1) move.b #8,6(a1) @@ -50292,12 +50292,12 @@ Map_AIZDrawBridgeFire: Obj_AIZDrawBridge: move.l #Map_AIZDrawBridge,$C(a0) - move.w #-$3D17,$A(a0) + move.w #$C2E9,$A(a0) move.b #4,4(a0) move.w #$280,8(a0) move.b #8,7(a0) move.b #$60,6(a0) - ori.b #-$80,$2A(a0) + ori.b #$80,$2A(a0) move.w $10(a0),$30(a0) move.w $14(a0),$32(a0) subi.w #$68,$14(a0) @@ -50796,7 +50796,7 @@ loc_2ADA0: move.w $10(a0),d4 jsr (SolidObjectTop).l move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.w loc_2ADD4 @@ -50861,7 +50861,7 @@ Obj_AIZSpikedLog: bne.w loc_2AF76 move.l #loc_2B0B6,(a1) move.b #4,4(a1) - move.b #-$64,$28(a1) + move.b #$9C,$28(a1) move.w a0,$3C(a1) move.w a1,$3C(a0) @@ -50964,7 +50964,7 @@ loc_2B05E: move.w $10(a0),d4 jsr (SolidObjectFull).l move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.w loc_2B096 @@ -51419,7 +51419,7 @@ loc_2BA34: bne.s locret_2BA74 cmpi.w #8,d0 bcc.s loc_2BA4C - move.b #-$7F,(a2) + move.b #$81,(a2) loc_2BA4C: cmpi.w #$9E,d0 @@ -51428,7 +51428,7 @@ loc_2BA4C: loc_2BA56: jsr (RideObject_SetRide).l - move.b #-$80,$2D(a1) + move.b #$80,$2D(a1) move.w #1,$20(a1) tst.w $1C(a1) bne.s locret_2BA74 @@ -51482,11 +51482,11 @@ loc_2BAC2: addi.b #-$80,d0 move.b d0,$27(a1) addq.b #2,(a2) - move.b #-$80,$2D(a1) + move.b #$80,$2D(a1) tst.w $1C(a1) bne.s loc_2BB0E move.w #1,$1C(a1) - move.b #-$7F,$2D(a1) + move.b #$81,$2D(a1) loc_2BB0E: bset #7,$A(a1) @@ -52136,7 +52136,7 @@ sub_2C2DC: Obj_EnemyScore: move.l #Map_EnemyScore,$C(a0) - move.w #-$7A1C,$A(a0) + move.w #$85E4,$A(a0) move.b #4,4(a0) move.w #$80,8(a0) move.b #8,7(a0) @@ -52529,7 +52529,7 @@ loc_2C950: ; --------------------------------------------------------------------------- loc_2C95A: - move.b #-$28,$28(a0) + move.b #$D8,$28(a0) loc_2C960: cmpi.w #$180,d1 @@ -52607,7 +52607,7 @@ loc_2CA0E: bne.w loc_2CA60 move.b (Ctrl_1_pressed).w,d0 or.b (Ctrl_2_pressed).w,d0 - andi.b #-$10,d0 + andi.b #$F0,d0 bne.s loc_2CA3C tst.w $24(a0) beq.s loc_2CA3C @@ -54202,7 +54202,7 @@ loc_2E068: addq.b #2,5(a0) move.l #Map_Bubbler,$C(a0) move.w #$45C,$A(a0) - move.b #-$7C,4(a0) + move.b #$84,4(a0) move.b #$10,7(a0) move.w #$80,8(a0) move.b $2C(a0),d0 @@ -54364,7 +54364,7 @@ loc_2E266: loc_2E272: move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.w loc_2E294 @@ -54639,7 +54639,7 @@ loc_2E83E: move.l #loc_2E9AA,(a1) move.l #Map_HCZWaterWallDebris,$C(a1) move.w #$4558,$A(a1) - move.b #-$7C,4(a1) + move.b #$84,4(a1) move.b (a3)+,d0 ext.w d0 add.w d2,d0 @@ -54782,7 +54782,7 @@ loc_2E9C0: move.l #loc_2EACE,(a1) move.l #Map_HCZWaterWall,$C(a1) move.w #$2530,$A(a1) - move.b #-$7C,4(a1) + move.b #$84,4(a1) move.w $10(a0),$10(a1) move.w (Water_level).w,$14(a1) move.w #$200,8(a1) @@ -54875,8 +54875,8 @@ loc_2EB4E: move.w #-$6000,d2 jsr (Queue_Kos_Module).l move.b #1,$22(a0) - move.b #-$7F,(Player_1+object_control).w - move.b #-$7F,(Player_2+object_control).w + move.b #$81,(Player_1+object_control).w + move.b #$81,(Player_2+object_control).w move.l #loc_2EB76,(a0) loc_2EB76: @@ -55035,7 +55035,7 @@ loc_2ED64: sub_2ED6A: move.l #loc_2EA6E,(a1) move.l $C(a0),$C(a1) - move.b #-$7C,4(a1) + move.b #$84,4(a1) move.w $10(a0),$10(a1) move.w $14(a0),$14(a1) subi.w #$50,$14(a1) @@ -56119,12 +56119,12 @@ loc_2FE1E: bsr.s sub_2FE80 move.w (Camera_X_pos_coarse_back).w,d1 move.w $3C(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 subi.w #$280,d0 cmp.w d0,d1 bcs.s loc_2FE5E move.w $3E(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 cmp.w d0,d1 bhi.s loc_2FE5E rts @@ -56210,7 +56210,7 @@ loc_2FF2E: move.b #$5A,2(a2) loc_2FF44: - andi.b #-4,$2E(a1) + andi.b #$FC,$2E(a1) bset #1,$2A(a1) move.b #1,$40(a1) move.b #$E,$1E(a1) @@ -56255,7 +56255,7 @@ loc_2FF88: clr.w $18(a1) clr.w $1A(a1) clr.w $1C(a1) - andi.b #-4,4(a1) + andi.b #$FC,4(a1) move.w $14(a0),d0 addi.w #$14,d0 move.w d0,$14(a1) @@ -56293,14 +56293,14 @@ loc_30030: clr.w $18(a1) clr.w $1A(a1) clr.w $1C(a1) - andi.b #-4,4(a1) + andi.b #$FC,4(a1) move.w $14(a0),d0 subi.w #$14,d0 move.w d0,$14(a1) move.b #0,$20(a1) move.b #3,$2E(a1) move.b #$65,$22(a1) - move.b #-$80,4(a2) + move.b #$80,4(a2) move.b #0,6(a2) move.b #0,8(a2) move.b #1,(a2) @@ -56401,7 +56401,7 @@ Obj_HCZConveryorSpike: move.w #$280,8(a0) move.b #$C,7(a0) move.b #$C,6(a0) - move.b #-$75,$28(a0) + move.b #$8B,$28(a0) move.w $10(a0),$30(a0) move.w $14(a0),$32(a0) btst #0,$2A(a0) @@ -56478,7 +56478,7 @@ loc_30264: loc_30280: move.w (Camera_X_pos_coarse_back).w,d1 move.w $3C(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 subi.w #$280,d0 cmp.w d0,d1 bcs.s loc_302AC @@ -56590,7 +56590,7 @@ Obj_CNZBalloon: move.w #$280,8(a0) move.b #$10,7(a0) move.b #$20,6(a0) - move.b #-$29,$28(a0) + move.b #$D7,$28(a0) move.w $14(a0),$32(a0) move.b $2C(a0),d0 add.b d0,d0 @@ -56825,7 +56825,7 @@ sub_308B4: move.w #0,$18(a1) move.w #0,$1A(a1) move.w #0,$1C(a1) - move.b #-$7F,$2E(a1) + move.b #$81,$2E(a1) bset #2,$2A(a1) bset #1,$2A(a1) move.b #$E,$1E(a1) @@ -58676,7 +58676,7 @@ Obj_Bumper: move.b #$10,7(a0) move.b #$10,6(a0) move.w #$80,8(a0) - move.b #-$29,$28(a0) + move.b #$D7,$28(a0) move.w $10(a0),$30(a0) move.w $14(a0),$32(a0) tst.w (Competition_mode).w @@ -58757,7 +58757,7 @@ sub_32146: move.w $48(a0),d0 beq.s loc_321B4 movea.w d0,a2 - cmpi.b #-$76,(a2) + cmpi.b #$8A,(a2) bcc.s locret_321DE addq.b #1,(a2) @@ -58782,7 +58782,7 @@ loc_321E0: lea (Ani_Bumper).l,a1 jsr (Animate_Sprite).l move.w $30(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.s loc_3220A @@ -59332,7 +59332,7 @@ loc_3277C: andi.w #$7FFF,$A(a1) cmpi.b #$34,d0 bcc.s loc_3278E - ori.w #-$8000,$A(a1) + ori.w #$8000,$A(a1) loc_3278E: tst.w 4(a2) @@ -59430,7 +59430,7 @@ loc_3285C: loc_32882: bsr.w sub_32A12 - move.b #-$20,$26(a1) + move.b #$E0,$26(a1) move.b #3,$2D(a1) locret_32892: @@ -59477,7 +59477,7 @@ loc_328DA: loc_3290C: bsr.w sub_32A12 - move.b #-$20,$26(a1) + move.b #$E0,$26(a1) move.b #3,$2D(a1) locret_3291C: @@ -59542,7 +59542,7 @@ loc_329A8: andi.w #$7FFF,$A(a1) cmpi.b #$4C,d0 bcs.s loc_329BA - ori.w #-$8000,$A(a1) + ori.w #$8000,$A(a1) loc_329BA: tst.w 4(a2) @@ -59838,7 +59838,7 @@ loc_32CA4: andi.w #$7FFF,$A(a1) cmpi.b #-$80,d0 bcs.s loc_32CDE - ori.w #-$8000,$A(a1) + ori.w #$8000,$A(a1) loc_32CDE: addi.b #$40,d0 @@ -59940,7 +59940,7 @@ loc_32DF4: andi.w #$7FFF,$A(a1) cmpi.b #-$80,d0 bcs.s loc_32E2E - ori.w #-$8000,$A(a1) + ori.w #$8000,$A(a1) loc_32E2E: addi.b #$40,d0 @@ -60077,7 +60077,7 @@ loc_32F38: bsr.w sub_32E68 move.b #-$40,$26(a1) bclr #0,4(a1) - move.b #-$80,5(a2) + move.b #$80,5(a2) move.w $10(a1),d0 sub.w $10(a0),d0 bcs.s loc_32FC2 @@ -60242,7 +60242,7 @@ loc_33138: andi.w #$7FFF,$A(a1) cmpi.b #-$80,d2 bcc.s loc_33196 - ori.w #-$8000,$A(a1) + ori.w #$8000,$A(a1) loc_33196: subi.b #$40,d2 @@ -60379,7 +60379,7 @@ Obj_MGZSwingingSpikeBall: move.w $10(a0),$30(a0) move.w $14(a0),$32(a0) move.b #3,$22(a0) - move.b #-$71,$28(a0) + move.b #$8F,$28(a0) jsr (Create_New_Sprite3).l bne.w loc_333F0 move.l #loc_334B4,(a1) @@ -60410,7 +60410,7 @@ loc_333F0: beq.s loc_33416 move.w #2,-2(a2) move.b #2,$22(a1) - move.w #-$8000,$34(a0) + move.w #$8000,$34(a0) move.w #$100,$36(a0) move.l #loc_3346A,(a0) bra.s loc_3346A @@ -60563,7 +60563,7 @@ Map_MGZSwingingSpikeBall: Obj_MGZHeadTrigger: move.l #Map_MGZHeadTrigger,$C(a0) - move.w #-$5C01,$A(a0) + move.w #$A3FF,$A(a0) ori.b #4,4(a0) move.w #$280,8(a0) move.b #$10,7(a0) @@ -60630,7 +60630,7 @@ loc_33690: tst.b $29(a0) bne.s loc_336DC move.l #Obj_Explosion,(a1) - move.w #-$8000,$A(a1) + move.w #$8000,$A(a1) move.b #2,5(a1) move.b #1,$34(a0) move.b #0,$22(a0) @@ -60643,7 +60643,7 @@ loc_336DC: move.w $10(a0),$10(a1) move.w $14(a0),$14(a1) move.b 4(a0),4(a1) - andi.b #-$41,4(a1) + andi.b #$BF,4(a1) move.b $2A(a0),$2A(a1) move.l $C(a0),$C(a1) move.w $A(a0),$A(a1) @@ -60670,14 +60670,14 @@ loc_33726: addi.w #$10,$10(a1) addi.w #$20,$14(a1) move.b 4(a0),4(a1) - andi.b #-$41,4(a1) + andi.b #$BF,4(a1) move.l $C(a0),$C(a1) move.w $A(a0),$A(a1) andi.w #$7FFF,$A(a1) move.w #$300,8(a1) move.b #$10,7(a1) move.b #4,6(a1) - move.b #-$65,$28(a1) + move.b #$9B,$28(a1) move.w #-$400,$18(a1) btst #0,$2A(a0) beq.s loc_337B4 @@ -61639,7 +61639,7 @@ loc_3451C: addi.b #$18,d0 move.b d0,$1E(a1) bset #0,$2E(a1) - move.b #-$80,$37(a1) + move.b #$80,$37(a1) bclr d6,$2A(a0) bclr #3,$2A(a1) bset #1,$2A(a1) @@ -62203,7 +62203,7 @@ loc_34B30: move.w d0,$1C(a0) move.b $26(a0),d0 addi.b #$20,d0 - andi.b #-$40,d0 + andi.b #$C0,d0 bne.s locret_34B74 cmpi.w #$400,d0 blt.s locret_34B74 @@ -62257,7 +62257,7 @@ loc_34BB2: move.w d0,$1C(a0) move.b $26(a0),d0 addi.b #$20,d0 - andi.b #-$40,d0 + andi.b #$C0,d0 bne.s locret_34BF6 cmpi.w #-$400,d0 bgt.s locret_34BF6 @@ -62656,7 +62656,7 @@ Obj_CGZBladePlatform: move.w $14(a0),$14(a1) subi.w #$10,$10(a1) addi.w #$C,$14(a1) - move.b #-$5A,$28(a1) + move.b #$A6,$28(a1) move.w a0,$3E(a1) jsr (Create_New_Sprite3).l bne.w loc_350A2 @@ -62665,7 +62665,7 @@ Obj_CGZBladePlatform: move.w $14(a0),$14(a1) addi.w #$10,$10(a1) addi.w #$14,$14(a1) - move.b #-$5A,$28(a1) + move.b #$A6,$28(a1) move.w a0,$3E(a1) loc_350A2: @@ -62859,7 +62859,7 @@ Obj_BPZBalloon: move.w #$200,8(a0) move.b #$10,7(a0) move.b #$10,6(a0) - move.b #-$29,$28(a0) + move.b #$D7,$28(a0) move.l #loc_35344,(a0) loc_35344: @@ -63088,7 +63088,7 @@ loc_35946: move.b d0,$27(a0) move.b #3,$20(a0) move.b #7,$20(a0) - move.b #-$39,$28(a0) + move.b #$C7,$28(a0) move.l #loc_35962,(a0) loc_35962: @@ -63312,7 +63312,7 @@ loc_35BBA: move.w $46(a2),$46(a1) tst.w $A(a2) bpl.s locret_35BE2 - ori.w #-$8000,$A(a1) + ori.w #$8000,$A(a1) locret_35BE2: rts @@ -63375,7 +63375,7 @@ loc_35C56: bpl.s loc_35C76 add.w d1,$14(a0) move.l d2,(a0) - move.b #-$39,$28(a0) + move.b #$C7,$28(a0) loc_35C76: cmpi.w #-$100,(Camera_min_Y_pos).w @@ -63544,7 +63544,7 @@ loc_35E16: loc_35E20: asl $1C(a2) move.b #$1B,$20(a2) - ori.b #-$80,$2B(a2) + ori.b #$80,$2B(a2) move.w a2,$3E(a0) move.b #$3C,$3C(a0) @@ -64058,7 +64058,7 @@ loc_36550: cmpi.l #loc_35962,(a1) bne.s loc_36566 move.b (a4)+,$20(a1) - move.b #-$39,$28(a1) + move.b #$C7,$28(a1) loc_36566: dbf d0,loc_36550 @@ -64078,7 +64078,7 @@ Map_2PGoalMarker: loc_365CC: move.l #Map_2PLapNumbers,$C(a0) - move.w #-$7900,$A(a0) + move.w #$8700,$A(a0) move.w #0,8(a0) move.b #8,7(a0) move.b #$C,6(a0) @@ -64134,7 +64134,7 @@ Map_2PLapNumbers: loc_366CC: move.l #Map_2PNeonDisplay,$C(a0) - move.w #-$78AA,$A(a0) + move.w #$8756,$A(a0) move.w #0,8(a0) move.b #-$80,7(a0) move.b #$28,6(a0) @@ -64232,7 +64232,7 @@ loc_367C4: move.w #$168,(Events_bg+$16).w loc_367E8: - move.b #-$80,(Update_HUD_timer).w + move.b #$80,(Update_HUD_timer).w jsr sub_369C2(pc) moveq #signextendB(sfx_Goal),d0 jsr (Play_Sound_2).l @@ -64242,7 +64242,7 @@ loc_367E8: move.b #6,$20(a0) bclr #3,4(a0) move.w #$78,(Events_bg+$16).w - move.b #-$80,(_unkFEC7).w + move.b #$80,(_unkFEC7).w rts ; --------------------------------------------------------------------------- @@ -64263,7 +64263,7 @@ loc_36824: move.w #$168,(Events_bg+$16).w loc_3684E: - move.b #-$80,(_unkFEC7).w + move.b #$80,(_unkFEC7).w bsr.w sub_36998 moveq #signextendB(sfx_Goal),d0 jsr (Play_Sound_2).l @@ -64465,7 +64465,7 @@ locret_36A48: loc_36A4A: move.l #Map_2PNeonDisplay,$C(a0) - move.w #-$78AA,$A(a0) + move.w #$8756,$A(a0) move.w #0,8(a0) move.b #-$80,7(a0) move.b #$28,6(a0) @@ -64493,7 +64493,7 @@ Map_2PNeonDisplay: loc_37220: move.l #$FF7000,$C(a0) - move.w #-$7A00,$A(a0) + move.w #$8600,$A(a0) move.w #0,8(a0) move.b #$40,7(a0) move.b #$10,6(a0) @@ -64529,7 +64529,7 @@ loc_37292: loc_3729E: move.l #$FF7080,$C(a0) - move.w #-$7A00,$A(a0) + move.w #$8600,$A(a0) move.w #0,8(a0) move.b #$40,7(a0) move.b #$10,6(a0) @@ -64676,7 +64676,7 @@ word_37420: dc.w 2 loc_37454: move.l #Map_2PItemIcon,$C(a0) - move.w #-$78B0,$A(a0) + move.w #$8750,$A(a0) move.w #0,8(a0) move.b #$10,7(a0) move.b #$10,6(a0) @@ -64739,7 +64739,7 @@ loc_374F2: Map_2PItemIcon: include "General/2P Zone/Map - Item Icon.asm" ; --------------------------------------------------------------------------- move.l #Map_2PPosition,$C(a0) - move.w #-$78A2,$A(a0) + move.w #$875E,$A(a0) move.w #0,8(a0) move.b #4,7(a0) move.b #4,6(a0) @@ -64825,7 +64825,7 @@ Obj_EMZDripper: move.b #4,$1E(a0) btst #0,$2A(a0) beq.s loc_376DC - move.w #-$3D00,$A(a0) + move.w #$C300,$A(a0) move.b #3,$22(a0) move.l #Draw_Sprite,(a0) jmp (Draw_Sprite).l @@ -64967,7 +64967,7 @@ loc_37870: subq.w #2,d0 bcc.s loc_37870 move.l #loc_3788E,(a1) - move.b #-$39,$28(a1) + move.b #$C7,$28(a1) moveq #0,d0 loc_37888: @@ -65444,7 +65444,7 @@ loc_37E20: loc_37E38: move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.s loc_37E4C @@ -66939,7 +66939,7 @@ sub_38F22: move.w #$100,8(a1) move.b #4,7(a1) move.b #4,6(a1) - move.b #-$7C,4(a1) + move.b #$84,4(a1) move.w #1,$20(a1) move.w $10(a2),$10(a1) move.w $14(a2),$14(a1) @@ -67662,7 +67662,7 @@ loc_397C8: Draw_TileColumn: move.w (a6),d0 - andi.w #-$10,d0 + andi.w #$FFF0,d0 move.w (a5),d2 move.w d0,(a5) move.w d2,d3 @@ -67693,7 +67693,7 @@ loc_397FE: Draw_TileColumn2: move.w (a6),d0 - andi.w #-$10,d0 + andi.w #$FFF0,d0 move.w (a5),d2 move.w d0,(a5) move.w d2,d3 @@ -68252,7 +68252,7 @@ loc_39CA2: sub.w (a4)+,d6 bmi.s loc_39CB2 move.w (a6)+,d0 - andi.w #-$10,d0 + andi.w #$FFF0,d0 move.w d0,(a6)+ subq.w #1,d5 bra.s loc_39CA2 @@ -68294,7 +68294,7 @@ loc_39CF4: subq.w #1,d5 beq.s locret_39D02 move.w (a6)+,d0 - andi.w #-$10,d0 + andi.w #$FFF0,d0 move.w d0,(a6)+ bra.s loc_39CF4 ; --------------------------------------------------------------------------- @@ -68850,7 +68850,7 @@ Reset_TileOffsetPositionActual: Reset_TileOffsetPositionEff: move.w (Camera_X_pos_BG_copy).w,d0 move.w d0,d1 - andi.w #-$10,d0 + andi.w #$FFF0,d0 move.w d0,d2 move.w d0,(Camera_X_pos_BG_rounded).w move.w (Camera_Y_pos_BG_copy).w,d0 @@ -70379,7 +70379,7 @@ AIZ2SE_Normal: move.w #5,(Draw_delayed_rowcount).w clr.l (HScroll_table+$1F8).w move.w (Camera_X_pos_copy).w,d0 - andi.w #-$10,d0 + andi.w #$FFF0,d0 subi.w #$10,d0 move.w d0,(HScroll_table+$1FE).w move.b #1,(Scroll_lock).w @@ -70444,7 +70444,7 @@ AIZ2SE_EndRefresh: jsr Draw_PlaneVertBottomUp(pc) bpl.s loc_3B368 move.w (Camera_X_pos_copy).w,d0 - andi.w #-$10,d0 + andi.w #$FFF0,d0 subi.w #$10,d0 move.w d0,(Camera_X_pos_rounded).w move.w #$46C0,(Events_bg+$02).w @@ -70844,7 +70844,7 @@ AIZ2_DoShipLoop: sub.w d1,(Player_2+x_pos).w sub.w d1,d0 move.w d0,d1 - andi.w #-$10,d1 + andi.w #$FFF0,d1 subi.w #$10,d1 move.w d1,(Camera_X_pos_rounded).w move.w d1,(HScroll_table+$1FE).w @@ -71095,7 +71095,7 @@ loc_3BA40: move.b #$20,7(a0) move.w #$500,$A(a0) move.l #Map_AIZ2BombExplode,$C(a0) - move.b #-$75,$28(a0) + move.b #$8B,$28(a0) bra.s loc_3BA70 ; --------------------------------------------------------------------------- @@ -77892,7 +77892,7 @@ Trap15_FuncDebug: move sr,d5 move.w (sp),d6 andi.w #$1F,d5 - andi.w #-$20,d6 + andi.w #$FFE0,d6 or.w d5,d6 move.w d6,(sp) nop @@ -80579,7 +80579,7 @@ sub_45174: movea.w d0,a1 cmpi.b #6,5(a1) bcc.s locret_4516C - move.b #-$7F,$2E(a1) + move.b #$81,$2E(a1) bclr #0,4(a1) bclr #0,$2A(a1) rts @@ -82669,7 +82669,7 @@ loc_468A6: loc_468B2: move.l #Map_BossExplosion,$C(a0) - move.w #-$7B2E,$A(a0) + move.w #$84D2,$A(a0) move.l #byte_4707A,$30(a0) move.l #Go_Delete_Sprite,$34(a0) cmpi.b #6,$2C(a0) @@ -83677,7 +83677,7 @@ loc_47292: move.b #8,5(a0) move.w #$3F,$2E(a0) move.l #loc_472CC,$34(a0) - andi.b #-$B,$38(a0) + andi.b #$F5,$38(a0) rts ; --------------------------------------------------------------------------- @@ -85929,7 +85929,7 @@ sub_489EC: moveq #0,d0 move.b $3D(a2),d0 lsr.w #3,d0 - andi.w #-2,d0 + andi.w #$FFFE,d0 move.w word_48A3C(pc,d0.w),8(a0) lea byte_48A5C(pc,d0.w),a1 move.b (a1)+,d1 @@ -90472,11 +90472,11 @@ CNZMiniboss_BlockExplosion: bne.s locret_4BA3A move.b #6,$2C(a1) move.w (Events_bg+$00).w,d0 - andi.w #-$20,d0 + andi.w #$FFE0,d0 addi.w #$10,d0 move.w d0,$10(a1) move.w (Events_bg+$02).w,d0 - andi.w #-$20,d0 + andi.w #$FFE0,d0 addi.w #$10,d0 move.w d0,$14(a1) @@ -90526,7 +90526,7 @@ loc_4BAB2: loc_4BABE: move.l #Obj_CNZMinibossCoilOpen,(a0) - move.b #-$57,$28(a0) + move.b #$A9,$28(a0) rts ; --------------------------------------------------------------------------- @@ -90546,7 +90546,7 @@ Obj_CNZMinibossCoilOpen: loc_4BAF2: move.l #loc_4BB00,(a0) - move.b #-$56,$28(a0) + move.b #$AA,$28(a0) rts ; --------------------------------------------------------------------------- @@ -92119,7 +92119,7 @@ loc_4CAA8: loc_4CAB6: move.l #loc_4CAD6,(a0) move.l #Map_EggCapsule,$C(a0) - move.w #-$7BB2,$A(a0) + move.w #$844E,$A(a0) move.b #5,$22(a0) addq.w #8,$14(a0) rts @@ -92493,7 +92493,7 @@ loc_4CE94: lea word_4D486(pc),a1 move.w #3,$3E(a0) jsr SetUp_ObjAttributes3(pc) - move.b #-$7A,$28(a0) + move.b #$86,$28(a0) movea.w $46(a0),a1 movea.w $46(a1),a1 movea.w $46(a1),a1 @@ -92767,7 +92767,7 @@ loc_4D188: loc_4D196: bsr.w sub_4D1B8 move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.s loc_4D1B2 @@ -93647,7 +93647,7 @@ loc_4D9A2: clr.b $28(a0) cmpi.b #8,$22(a0) bne.s loc_4D9B4 - move.b #-$54,$28(a0) + move.b #$AC,$28(a0) loc_4D9B4: lea (Player_1).w,a2 @@ -95017,7 +95017,7 @@ loc_4E75E: loc_4E768: move.b #8,5(a0) - move.b #-$75,$28(a0) + move.b #$8B,$28(a0) moveq #signextendB(sfx_BossRotate),d0 jsr (Play_Sound_2).l rts @@ -95962,7 +95962,7 @@ word_4F15E: dc.w $FFF0, $20, $FFF0, $20 loc_4F166: move.l #loc_4F174,(a0) - move.b #-$65,$28(a0) + move.b #$9B,$28(a0) rts ; --------------------------------------------------------------------------- @@ -97441,7 +97441,7 @@ loc_4FFC4: addq.b #1,d0 move.b d0,$39(a0) andi.b #3,d0 - andi.b #-4,4(a0) + andi.b #$FC,4(a0) or.b d0,4(a0) rts @@ -98590,7 +98590,7 @@ loc_50AD2: bclr #7,4(a0) move.w #$7F,$2E(a0) bset #4,$38(a0) - move.w #-$5BDB,$A(a0) + move.w #$A425,$A(a0) move.w #-$200,$1A(a0) move.l #loc_50594,$34(a0) lea (Child6_CreateBossExplosion).l,a2 @@ -98616,7 +98616,7 @@ loc_50B26: loc_50B38: move.l #MoveChkDel,(a0) bset #7,$2A(a0) - move.w #-$5BDB,$A(a0) + move.w #$A425,$A(a0) moveq #0,d0 move.b $2C(a0),d0 move.w word_50B70(pc,d0.w),$18(a0) @@ -103108,7 +103108,7 @@ locret_53702: Sprite_CheckDelete: move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.s loc_5371C @@ -103129,7 +103129,7 @@ loc_53728: Sprite_CheckDelete2: move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.s loc_5374E @@ -103148,7 +103148,7 @@ loc_5375A: rts ; --------------------------------------------------------------------------- move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.s loc_5371C @@ -103157,7 +103157,7 @@ loc_5375A: Sprite_CheckDeleteXY: move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.w Go_Delete_Sprite @@ -103172,7 +103172,7 @@ Sprite_CheckDeleteXY: Obj_FlickerMove: jsr (MoveSprite).l move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.w Go_Delete_Sprite @@ -103188,7 +103188,7 @@ Obj_FlickerMove: Sprite_CheckDeleteTouch: move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.w loc_5371C @@ -103198,7 +103198,7 @@ Sprite_CheckDeleteTouch: Sprite_CheckDeleteTouch2: move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.w loc_5374E @@ -103206,7 +103206,7 @@ Sprite_CheckDeleteTouch2: jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.w loc_5371C @@ -103215,7 +103215,7 @@ Sprite_CheckDeleteTouch2: Sprite_CheckDeleteTouchXY: move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.w Go_Delete_Sprite @@ -103230,7 +103230,7 @@ Sprite_CheckDeleteTouchXY: Sprite_CheckDeleteSlotted: move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.s Go_Delete_SpriteSlotted @@ -103259,7 +103259,7 @@ Remove_From_TrackingSlot: ; --------------------------------------------------------------------------- move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.s Go_Delete_SpriteSlotted @@ -103270,7 +103270,7 @@ Sprite_CheckDeleteTouchSlotted: tst.b $2A(a0) bmi.s Go_Delete_SpriteSlotted3 move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.s Go_Delete_SpriteSlotted @@ -103285,7 +103285,7 @@ Go_Delete_SpriteSlotted3: tst.b $2A(a0) bmi.s Go_Delete_SpriteSlotted3 move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.w Go_Delete_SpriteSlotted @@ -103293,14 +103293,14 @@ Go_Delete_SpriteSlotted3: jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.w Go_Delete_Sprite jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.w Go_Delete_Sprite @@ -103308,14 +103308,14 @@ Go_Delete_SpriteSlotted3: jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.w Go_Delete_Sprite_2 jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.w Go_Delete_Sprite_2 @@ -103323,14 +103323,14 @@ Go_Delete_SpriteSlotted3: jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.w Go_Delete_SpriteSlotted2 jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.w Go_Delete_SpriteSlotted2 @@ -103339,7 +103339,7 @@ Go_Delete_SpriteSlotted3: loc_539C4: move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.w Go_Delete_Sprite_2 @@ -105214,7 +105214,7 @@ locret_5491A: Set_PlayerEndingPose: - move.b #-$7F,$2E(a1) + move.b #$81,$2E(a1) move.b #$13,$20(a1) clr.b $3D(a1) clr.w $18(a1) @@ -107588,7 +107588,7 @@ loc_55E54: btst #2,$38(a0) beq.s loc_55E8C move.w (Ctrl_1).w,d0 - andi.w #-$7374,d0 + andi.w #$8C8C,d0 move.w d0,(Ctrl_1_logical).w loc_55E8C: @@ -107728,7 +107728,7 @@ sub_55FEA: bne.s loc_56022 loc_5601C: - ori.b #-$80,(Update_HUD_ring_count).w + ori.b #$80,(Update_HUD_ring_count).w loc_56022: move.w d0,(Ring_count).w @@ -107743,7 +107743,7 @@ loc_5602E: loc_56032: bclr #7,$38(a0) beq.s loc_5602E - andi.b #-2,(Update_HUD_ring_count).w + andi.b #$FE,(Update_HUD_ring_count).w moveq #0,d0 rts ; --------------------------------------------------------------------------- @@ -107814,7 +107814,7 @@ loc_560D2: move.b #$A,$28(a0) cmpi.b #2,$22(a0) bne.s locret_560F8 - move.b #-$7A,$28(a0) + move.b #$86,$28(a0) locret_560F8: rts @@ -107849,7 +107849,7 @@ Obj_BubblesBadnik: move.b #$12,$28(a0) cmpi.b #4,$22(a0) bne.s loc_5614A - move.b #-$7A,$28(a0) + move.b #$86,$28(a0) loc_5614A: lea PLCPtr_56222(pc),a2 @@ -108260,7 +108260,7 @@ loc_565B2: loc_565C2: move.l #loc_565D0,(a0) - move.b #-$62,$28(a0) + move.b #$9E,$28(a0) rts ; --------------------------------------------------------------------------- @@ -108836,7 +108836,7 @@ loc_56B52: loc_56B56: move.b #2,5(a0) - move.b #-$36,$28(a0) + move.b #$CA,$28(a0) rts ; =============== S U B R O U T I N E ======================================= @@ -112240,7 +112240,7 @@ loc_58998: loc_589A4: move.l #loc_589B2,(a0) - move.b #-$7E,$28(a0) + move.b #$82,$28(a0) rts ; --------------------------------------------------------------------------- @@ -112333,7 +112333,7 @@ loc_58A80: loc_58A84: move.l #loc_58AA6,(a0) - move.b #-$6E,$28(a0) + move.b #$92,$28(a0) rts ; --------------------------------------------------------------------------- @@ -112378,7 +112378,7 @@ locret_58AE6: ; --------------------------------------------------------------------------- loc_58AE8: - move.b #-$68,$28(a0) + move.b #$98,$28(a0) jsr (Add_SpriteToCollisionResponseList).l movea.w $46(a0),a1 btst #7,$2A(a1) diff --git a/sonic3k.asm b/sonic3k.asm index 85c299ff..37606324 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -26212,7 +26212,7 @@ loc_13B78: move.b d0,double_jump_flag(a0) move.b #2,$2A(a0) move.b #$1E,$2C(a0) - move.b #-$7F,$2E(a0) + move.b #$81,$2E(a0) move.b d0,$30(a0) move.b d0,$31(a0) move.w d0,$32(a0) @@ -26353,7 +26353,7 @@ loc_13D34: ; --------------------------------------------------------------------------- loc_13D42: - move.b #-$7F,$2E(a0) + move.b #$81,$2E(a0) rts ; --------------------------------------------------------------------------- @@ -26363,7 +26363,7 @@ loc_13D4A: move.w #4,(Tails_CPU_routine).w move.b #0,$3D(a0) move.w #0,$3E(a0) - move.b #-$7F,$2E(a0) + move.b #$81,$2E(a0) move.b #2,$2A(a0) move.b #$20,$20(a0) rts @@ -26640,7 +26640,7 @@ loc_14016: andi.w #$7FFF,$A(a0) tst.b $A(a1) bpl.s loc_14068 - ori.w #-$8000,$A(a0) + ori.w #$8000,$A(a0) loc_14068: move.b $46(a1),$46(a0) @@ -42208,12 +42208,12 @@ locret_1EEEA: loc_1EEEC: tst.b $32(a0) beq.s loc_1EEF8 - andi.b #-2,(Player_1+object_control).w + andi.b #$FE,(Player_1+object_control).w loc_1EEF8: tst.b $33(a0) beq.s loc_1EF04 - andi.b #-2,(Player_2+object_control).w + andi.b #$FE,(Player_2+object_control).w loc_1EF04: clr.b (_unkF7C7).w @@ -42300,7 +42300,7 @@ loc_1EFD8: clr.b (a2) move.b #$3C,2(a2) bclr d2,(_unkF7C7).w - andi.b #-2,$2E(a1) + andi.b #$FE,$2E(a1) btst #6,$2C(a0) bne.s locret_1F000 move.b #1,$3A(a0) @@ -42371,12 +42371,12 @@ locret_1F098: loc_1F09A: tst.b $32(a0) beq.s loc_1F0A6 - andi.b #-2,(Player_1+object_control).w + andi.b #$FE,(Player_1+object_control).w loc_1F0A6: tst.b $33(a0) beq.s loc_1F0B2 - andi.b #-2,(Player_2+object_control).w + andi.b #$FE,(Player_2+object_control).w loc_1F0B2: clr.b (_unkF7C7).w @@ -42642,7 +42642,7 @@ loc_1F494: loc_1F4A2: move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.w loc_1EBAA @@ -46081,7 +46081,7 @@ loc_2221A: loc_22224: move.b $2A(a1),d1 andi.b #1,d1 - andi.b #-4,4(a1) + andi.b #$FC,4(a1) or.b d1,4(a1) moveq #0,d0 move.b $22(a1),d0 @@ -46122,7 +46122,7 @@ loc_2226C: add.w d0,d0 move.b byte_222D4(pc,d0.w),$22(a1) move.b #0,$20(a1) - andi.w #-2,d0 + andi.w #$FFFE,d0 move.b byte_222E4(pc,d0.w),d2 move.b byte_222E4+1(pc,d0.w),d3 ext.w d2 @@ -46135,7 +46135,7 @@ loc_2229A: movea.w $3C(a0),a3 move.b $26(a3),d0 addq.b #4,d0 - andi.b #-8,d0 + andi.b #$F8,d0 jsr (GetSineCosine).l neg.w d0 addi.w #8,d0 @@ -46215,7 +46215,7 @@ loc_22302: move.b #$14,$20(a1) move.b #0,$3D(a1) move.b #3,$2E(a1) - andi.b #-3,4(a1) + andi.b #$FD,4(a1) move.b #1,(a2) moveq #signextendB(sfx_Grab),d0 jsr (Play_Sound_2).l @@ -47118,7 +47118,7 @@ loc_22E96: move.w #$391,$A(a0) cmpi.b #$12,(Current_zone).w bne.s Spring_Common - ori.w #-$8000,$A(a0) + ori.w #$8000,$A(a0) Spring_Common: move.b $2C(a0),d0 @@ -48051,7 +48051,7 @@ loc_23B66: move.l #loc_23F2A,(a1) loc_23B8E: - andi.b #-$10,$2C(a0) + andi.b #$F0,$2C(a0) move.b (a2)+,d1 or.b d1,$2C(a0) move.w $10(a0),$10(a1) @@ -48253,13 +48253,13 @@ loc_23D62: bchg #1,$2A(a0) bchg #1,4(a0) andi.b #$F,$2C(a0) - ori.b #-$10,$2C(a0) + ori.b #$F0,$2C(a0) move.l #loc_23C12,(a0) movea.w $3E(a0),a1 neg.w $32(a1) loc_23DBC: - cmpi.b #-$10,d0 + cmpi.b #$F0,d0 bne.s loc_23DEE subi.w #$16,$14(a0) bchg #1,$2A(a0) @@ -51093,7 +51093,7 @@ Obj_LBZExplodingTrigger: move.b #$10,7(a0) move.b #$10,6(a0) move.w #$280,8(a0) - move.b #-$3A,$28(a0) + move.b #$C6,$28(a0) move.l #loc_25CF0,(a0) loc_25CF0: @@ -51730,7 +51730,7 @@ loc_263DC: move.w $10(a0),$10(a1) move.w $14(a0),$14(a1) move.b $2A(a0),$2A(a1) - move.b #-$63,$28(a1) + move.b #$9D,$28(a1) bset #4,$2B(a1) addi.w #$40,$10(a1) btst #0,$2A(a0) @@ -51834,7 +51834,7 @@ loc_2656C: loc_26588: move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.w loc_265A2 @@ -52012,7 +52012,7 @@ loc_2673E: move.b $2A(a1),$2A(a0) move.b $2A(a1),d0 andi.b #1,d0 - andi.b #-2,4(a1) + andi.b #$FE,4(a1) or.b d0,4(a1) move.w $10(a3),$10(a1) move.w $14(a3),$14(a1) @@ -52840,7 +52840,7 @@ Obj_LBZCupElevatorAttach: move.w #$100,8(a0) loc_27060: - andi.b #-2,4(a0) + andi.b #$FE,4(a0) subi.b #$40,d0 bpl.s loc_27072 ori.b #1,4(a0) ; Flip object if angle-$40 is negative @@ -56724,7 +56724,7 @@ loc_29386: bsr.s sub_293D0 move.w #$80,8(a1) move.b #2,$22(a1) - move.b #-$68,$28(a1) + move.b #$98,$28(a1) move.l #loc_29416,(a1) moveq #signextendB(sfx_EnergyZap),d0 jsr (Play_Sound_2).l @@ -56777,7 +56777,7 @@ Obj_22_1: move.b #$10,7(a0) move.b #$10,6(a0) move.w #$280,8(a0) - move.b #-$29,$28(a0) + move.b #$D7,$28(a0) move.l #loc_2946A,(a0) loc_2946A: @@ -57463,13 +57463,13 @@ loc_29B6E: add.w d0,d0 move.w d0,$2E(a1) addi.w #$10,$10(a1) - move.b #-$3A,$28(a1) + move.b #$C6,$28(a1) loc_29BE8: subq.w #1,$30(a0) bpl.s loc_29BFA move.w #$78,$30(a0) - eori.b #-1,$32(a0) + eori.b #$FF,$32(a0) loc_29BFA: jmp (Delete_Sprite_If_Not_In_Range).l @@ -58015,7 +58015,7 @@ loc_2A1EC: moveq #0,d0 move.b $26(a0),d0 move.b LBZTubeElevator_PlayerFrame(pc,d0.w),$22(a1) - andi.b #-4,4(a1) + andi.b #$FC,4(a1) move.b LBZTubeElevator_PlayerFlip(pc,d0.w),d0 or.b d0,4(a1) moveq #0,d0 @@ -58334,7 +58334,7 @@ loc_2A5C0: loc_2A5D8: move.w $38(a0),(Chain_bonus_counter).w - andi.b #-$19,$2A(a0) + andi.b #$E7,$2A(a0) movea.l $3C(a0),a4 addq.b #1,$22(a0) move.l #loc_2A5F8,(a0) @@ -58544,7 +58544,7 @@ loc_2A810: loc_2A816: move.w $38(a0),(Chain_bonus_counter).w - andi.b #-$19,$2A(a0) + andi.b #$E7,$2A(a0) lea (word_2A84C).l,a4 moveq #0,d0 move.b $22(a0),d0 @@ -58994,7 +58994,7 @@ loc_2ADA8: move.b d0,$35(a0) move.b #8,$37(a0) move.l #Map_AIZDrawBridgeFire,$C(a0) - move.w #-$3D17,$A(a0) + move.w #$C2E9,$A(a0) move.b #$60,7(a0) move.b #8,6(a0) move.b #4,4(a0) @@ -59003,7 +59003,7 @@ loc_2ADA8: bne.w loc_2AE66 move.l #loc_2AEB4,(a1) move.l #Map_AIZDrawBridgeFire,$C(a1) - move.w #-$3D17,$A(a1) + move.w #$C2E9,$A(a1) ori.b #4,4(a1) move.b #$60,7(a1) move.b #8,6(a1) @@ -59239,12 +59239,12 @@ Map_AIZDrawBridgeFire: include "Levels/AIZ/Misc Object Data/Map - Draw Bridge Fi Obj_AIZDrawBridge: move.l #Map_AIZDrawBridge,$C(a0) - move.w #-$3D17,$A(a0) + move.w #$C2E9,$A(a0) move.b #4,4(a0) move.w #$280,8(a0) move.b #8,7(a0) move.b #$60,6(a0) - ori.b #-$80,$2A(a0) + ori.b #$80,$2A(a0) move.w $10(a0),$30(a0) move.w $14(a0),$32(a0) subi.w #$68,$14(a0) @@ -59739,7 +59739,7 @@ loc_2B6D8: move.w $10(a0),d4 jsr (SolidObjectTop).l move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.w loc_2B70C @@ -59795,7 +59795,7 @@ Obj_AIZSpikedLog: bne.w loc_2B7AE move.l #loc_2B8EE,(a1) move.b #4,4(a1) - move.b #-$64,$28(a1) + move.b #$9C,$28(a1) move.w a0,$3C(a1) move.w a1,$3C(a0) @@ -59898,7 +59898,7 @@ loc_2B896: move.w $10(a0),d4 jsr (SolidObjectFull).l move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.w loc_2B8CE @@ -60453,7 +60453,7 @@ loc_2C42C: bne.s locret_2C46C cmpi.w #8,d0 bhs.s loc_2C444 - move.b #-$7F,(a2) + move.b #$81,(a2) loc_2C444: cmpi.w #$9E,d0 @@ -60462,7 +60462,7 @@ loc_2C444: loc_2C44E: jsr (RideObject_SetRide).l - move.b #-$80,$2D(a1) + move.b #$80,$2D(a1) move.w #1,$20(a1) tst.w $1C(a1) bne.s locret_2C46C @@ -60516,11 +60516,11 @@ loc_2C4BA: addi.b #-$80,d0 move.b d0,$27(a1) addq.b #2,(a2) - move.b #-$80,$2D(a1) + move.b #$80,$2D(a1) tst.w $1C(a1) bne.s loc_2C506 move.w #1,$1C(a1) - move.b #-$7F,$2D(a1) + move.b #$81,$2D(a1) loc_2C506: bset #7,$A(a1) @@ -61196,7 +61196,7 @@ sub_2CCD2: Obj_EnemyScore: move.l #Map_EnemyScore,$C(a0) - move.w #-$7A1C,$A(a0) + move.w #$85E4,$A(a0) move.b #4,4(a0) move.w #$80,8(a0) move.b #8,7(a0) @@ -61791,7 +61791,7 @@ loc_2D56A: ; --------------------------------------------------------------------------- loc_2D574: - move.b #-$28,$28(a0) + move.b #$D8,$28(a0) loc_2D57A: cmpi.w #$180,d1 @@ -61875,7 +61875,7 @@ loc_2D638: bne.w loc_2D68A move.b (Ctrl_1_pressed).w,d0 or.b (Ctrl_2_pressed).w,d0 - andi.b #-$10,d0 + andi.b #$F0,d0 bne.s loc_2D666 tst.w $24(a0) beq.s loc_2D666 @@ -64387,7 +64387,7 @@ loc_2F952: addq.b #2,5(a0) move.l #Map_Bubbler,$C(a0) move.w #$45C,$A(a0) - move.b #-$7C,4(a0) + move.b #$84,4(a0) move.b #$10,7(a0) move.w #$80,8(a0) move.b $2C(a0),d0 @@ -64549,7 +64549,7 @@ loc_2FB50: loc_2FB5C: move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.w loc_2FB7E @@ -64816,7 +64816,7 @@ loc_2FFAE: move.l #loc_3011A,(a1) move.l #Map_HCZWaterWallDebris,$C(a1) move.w #$4558,$A(a1) - move.b #-$7C,4(a1) + move.b #$84,4(a1) move.b (a3)+,d0 ext.w d0 add.w d2,d0 @@ -64959,7 +64959,7 @@ loc_30130: move.l #loc_3023E,(a1) move.l #Map_HCZWaterWall,$C(a1) move.w #$2530,$A(a1) - move.b #-$7C,4(a1) + move.b #$84,4(a1) move.w $10(a0),$10(a1) move.w (Water_level).w,$14(a1) move.w #$200,8(a1) @@ -65052,8 +65052,8 @@ loc_302BE: move.w #-$6000,d2 jsr (Queue_Kos_Module).l move.b #1,$22(a0) - move.b #-$7F,(Player_1+object_control).w - move.b #-$7F,(Player_2+object_control).w + move.b #$81,(Player_1+object_control).w + move.b #$81,(Player_2+object_control).w move.l #loc_302E6,(a0) loc_302E6: @@ -65212,7 +65212,7 @@ loc_304D4: sub_304DA: move.l #loc_301DE,(a1) move.l $C(a0),$C(a1) - move.b #-$7C,4(a1) + move.b #$84,4(a1) move.w $10(a0),$10(a1) move.w $14(a0),$14(a1) subi.w #$50,$14(a1) @@ -66294,12 +66294,12 @@ loc_311C4: bsr.s sub_31226 move.w (Camera_X_pos_coarse_back).w,d1 move.w $3C(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 subi.w #$280,d0 cmp.w d0,d1 blo.s loc_31204 move.w $3E(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 cmp.w d0,d1 bhi.s loc_31204 rts @@ -66385,7 +66385,7 @@ loc_312D4: move.b #$5A,2(a2) loc_312EA: - andi.b #-4,$2E(a1) + andi.b #$FC,$2E(a1) bset #1,$2A(a1) move.b #1,$40(a1) move.b #$E,$1E(a1) @@ -66430,7 +66430,7 @@ loc_3132E: clr.w $18(a1) clr.w $1A(a1) clr.w $1C(a1) - andi.b #-4,4(a1) + andi.b #$FC,4(a1) move.w $14(a0),d0 addi.w #$14,d0 move.w d0,$14(a1) @@ -66468,14 +66468,14 @@ loc_313D6: clr.w $18(a1) clr.w $1A(a1) clr.w $1C(a1) - andi.b #-4,4(a1) + andi.b #$FC,4(a1) move.w $14(a0),d0 subi.w #$14,d0 move.w d0,$14(a1) move.b #0,$20(a1) move.b #3,$2E(a1) move.b #$65,$22(a1) - move.b #-$80,4(a2) + move.b #$80,4(a2) move.b #0,6(a2) move.b #0,8(a2) move.b #1,(a2) @@ -66576,7 +66576,7 @@ Obj_HCZConveryorSpike: move.w #$280,8(a0) move.b #$C,7(a0) move.b #$C,6(a0) - move.b #-$75,$28(a0) + move.b #$8B,$28(a0) move.w $10(a0),$30(a0) move.w $14(a0),$32(a0) btst #0,$2A(a0) @@ -66653,7 +66653,7 @@ loc_3160A: loc_31626: move.w (Camera_X_pos_coarse_back).w,d1 move.w $3C(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 subi.w #$280,d0 cmp.w d0,d1 blo.s loc_31652 @@ -66763,7 +66763,7 @@ Obj_CNZBalloon: move.w #$280,8(a0) move.b #$10,7(a0) move.b #$20,6(a0) - move.b #-$29,$28(a0) + move.b #$D7,$28(a0) move.w $14(a0),$32(a0) move.b $2C(a0),d0 add.b d0,d0 @@ -67000,7 +67000,7 @@ sub_319F4: move.w #0,$18(a1) move.w #0,$1A(a1) move.w #0,$1C(a1) - move.b #-$7F,$2E(a1) + move.b #$81,$2E(a1) bset #2,$2A(a1) bset #1,$2A(a1) move.b #$E,$1E(a1) @@ -68847,7 +68847,7 @@ Obj_Bumper: move.b #$10,7(a0) move.b #$10,6(a0) move.w #$80,8(a0) - move.b #-$29,$28(a0) + move.b #$D7,$28(a0) move.w $10(a0),$30(a0) move.w $14(a0),$32(a0) cmpi.b #$14,(Current_zone).w @@ -68901,7 +68901,7 @@ loc_32EB4: lea (Ani_Bumper).l,a1 jsr (Animate_Sprite).l move.w $30(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.s loc_32EDE @@ -68928,7 +68928,7 @@ loc_32EF8: lea (Ani_Bumper).l,a1 jsr (Animate_Sprite).l move.w $14(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_Y_pos_coarse_back).w,d0 cmpi.w #$200,d0 bhi.s loc_32F22 @@ -68995,7 +68995,7 @@ sub_32F56: move.w respawn_addr(a0),d0 beq.s loc_32FC4 movea.w d0,a2 - cmpi.b #-$76,(a2) + cmpi.b #$8A,(a2) bhs.s locret_32FEE addq.b #1,(a2) @@ -69549,7 +69549,7 @@ loc_33542: andi.w #$7FFF,$A(a1) cmpi.b #$34,d0 bhs.s loc_33554 - ori.w #-$8000,$A(a1) + ori.w #$8000,$A(a1) loc_33554: tst.w 4(a2) @@ -69759,7 +69759,7 @@ loc_3376E: andi.w #$7FFF,$A(a1) cmpi.b #$4C,d0 blo.s loc_33780 - ori.w #-$8000,$A(a1) + ori.w #$8000,$A(a1) loc_33780: tst.w 4(a2) @@ -70055,7 +70055,7 @@ loc_33A6A: andi.w #$7FFF,$A(a1) cmpi.b #-$80,d0 blo.s loc_33AA4 - ori.w #-$8000,$A(a1) + ori.w #$8000,$A(a1) loc_33AA4: addi.b #$40,d0 @@ -70157,7 +70157,7 @@ loc_33BBA: andi.w #$7FFF,$A(a1) cmpi.b #-$80,d0 blo.s loc_33BF4 - ori.w #-$8000,$A(a1) + ori.w #$8000,$A(a1) loc_33BF4: addi.b #$40,d0 @@ -70449,7 +70449,7 @@ loc_33EEC: andi.w #$7FFF,$A(a1) cmpi.b #-$80,d2 bhs.s loc_33F4A - ori.w #-$8000,$A(a1) + ori.w #$8000,$A(a1) loc_33F4A: subi.b #$40,d2 @@ -70583,7 +70583,7 @@ Obj_MGZSwingingSpikeBall: move.w $10(a0),$30(a0) move.w $14(a0),$32(a0) move.b #3,$22(a0) - move.b #-$71,$28(a0) + move.b #$8F,$28(a0) jsr (Create_New_Sprite3).l bne.w loc_34180 move.l #loc_34244,(a1) @@ -70764,7 +70764,7 @@ loc_342E6: Obj_MGZHeadTrigger: move.l #Map_MGZHeadTrigger,$C(a0) - move.w #-$5C01,$A(a0) + move.w #$A3FF,$A(a0) ori.b #4,4(a0) move.w #$280,8(a0) move.b #$10,7(a0) @@ -70831,7 +70831,7 @@ loc_343E6: tst.b $29(a0) bne.s loc_34432 move.l #Obj_Explosion,(a1) - move.w #-$8000,$A(a1) + move.w #$8000,$A(a1) move.b #2,5(a1) move.b #1,$34(a0) move.b #0,$22(a0) @@ -70844,7 +70844,7 @@ loc_34432: move.w $10(a0),$10(a1) move.w $14(a0),$14(a1) move.b 4(a0),4(a1) - andi.b #-$41,4(a1) + andi.b #$BF,4(a1) move.b $2A(a0),$2A(a1) move.l $C(a0),$C(a1) move.w $A(a0),$A(a1) @@ -70871,14 +70871,14 @@ loc_3447C: addi.w #$10,$10(a1) addi.w #$20,$14(a1) move.b 4(a0),4(a1) - andi.b #-$41,4(a1) + andi.b #$BF,4(a1) move.l $C(a0),$C(a1) move.w $A(a0),$A(a1) andi.w #$7FFF,$A(a1) move.w #$300,8(a1) move.b #$10,7(a1) move.b #4,6(a1) - move.b #-$65,$28(a1) + move.b #$9B,$28(a1) move.w #-$400,$18(a1) btst #0,$2A(a0) beq.s loc_3450A @@ -71847,7 +71847,7 @@ loc_34F84: addi.b #$18,d0 move.b d0,$1E(a1) bset #0,$2E(a1) - move.b #-$80,$37(a1) + move.b #$80,$37(a1) bclr d6,$2A(a0) bclr #3,$2A(a1) bset #1,$2A(a1) @@ -72413,7 +72413,7 @@ loc_3559E: move.w d0,$1C(a0) move.b $26(a0),d0 addi.b #$20,d0 - andi.b #-$40,d0 + andi.b #$C0,d0 bne.s locret_355E2 cmpi.w #$400,d0 blt.s locret_355E2 @@ -72467,7 +72467,7 @@ loc_35620: move.w d0,$1C(a0) move.b $26(a0),d0 addi.b #$20,d0 - andi.b #-$40,d0 + andi.b #$C0,d0 bne.s locret_35664 cmpi.w #-$400,d0 bgt.s locret_35664 @@ -72866,7 +72866,7 @@ Obj_CGZBladePlatform: move.w $14(a0),$14(a1) subi.w #$10,$10(a1) addi.w #$C,$14(a1) - move.b #-$5A,$28(a1) + move.b #$A6,$28(a1) move.w a0,$3E(a1) jsr (Create_New_Sprite3).l bne.w loc_35B10 @@ -72875,7 +72875,7 @@ Obj_CGZBladePlatform: move.w $14(a0),$14(a1) addi.w #$10,$10(a1) addi.w #$14,$14(a1) - move.b #-$5A,$28(a1) + move.b #$A6,$28(a1) move.w a0,$3E(a1) loc_35B10: @@ -73070,7 +73070,7 @@ Obj_BPZBalloon: move.w #$200,8(a0) move.b #$10,7(a0) move.b #$10,6(a0) - move.b #-$29,$28(a0) + move.b #$D7,$28(a0) move.l #loc_35DB2,(a0) loc_35DB2: @@ -73301,7 +73301,7 @@ loc_363B4: move.b d0,$27(a0) move.b #3,$20(a0) move.b #7,$20(a0) - move.b #-$39,$28(a0) + move.b #$C7,$28(a0) move.l #loc_363D0,(a0) loc_363D0: @@ -73525,7 +73525,7 @@ loc_36628: move.w $46(a2),$46(a1) tst.w $A(a2) bpl.s locret_36650 - ori.w #-$8000,$A(a1) + ori.w #$8000,$A(a1) locret_36650: rts @@ -73588,7 +73588,7 @@ loc_366C4: bpl.s loc_366E4 add.w d1,$14(a0) move.l d2,(a0) - move.b #-$39,$28(a0) + move.b #$C7,$28(a0) loc_366E4: cmpi.w #-$100,(Camera_min_Y_pos).w @@ -73757,7 +73757,7 @@ loc_36884: loc_3688E: asl $1C(a2) move.b #$1B,$20(a2) - ori.b #-$80,$2B(a2) + ori.b #$80,$2B(a2) move.w a2,$3E(a0) move.b #$3C,$3C(a0) @@ -74273,7 +74273,7 @@ loc_36FBE: cmpi.l #loc_363D0,(a1) bne.s loc_36FD4 move.b (a4)+,$20(a1) - move.b #-$39,$28(a1) + move.b #$C7,$28(a1) loc_36FD4: dbf d0,loc_36FBE @@ -74294,7 +74294,7 @@ Map_2PGoalMarker:include "General/2P Zone/Map - Goal Marker.asm" loc_3703A: move.l #Map_2PLapNumbers,$C(a0) - move.w #-$7900,$A(a0) + move.w #$8700,$A(a0) move.w #0,8(a0) move.b #8,7(a0) move.b #$C,6(a0) @@ -74350,9 +74350,9 @@ Map_2PLapNumbers: include "General/2P Zone/Map - Lap Numbers.asm" loc_3713A: move.l #Map_2PNeonDisplay,$C(a0) - move.w #-$78AA,$A(a0) + move.w #$8756,$A(a0) move.w #0,8(a0) - move.b #-$80,7(a0) + move.b #$80,7(a0) move.b #$28,6(a0) move.l #loc_3716C,(a0) tst.b (Not_ghost_flag).w @@ -74448,7 +74448,7 @@ loc_37232: move.w #$168,(Events_bg+$16).w loc_37256: - move.b #-$80,(Update_HUD_timer).w + move.b #$80,(Update_HUD_timer).w jsr sub_37430(pc) moveq #signextendB(sfx_Goal),d0 jsr (Play_Sound_2).l @@ -74458,7 +74458,7 @@ loc_37256: move.b #6,$20(a0) bclr #3,4(a0) move.w #$78,(Events_bg+$16).w - move.b #-$80,(_unkFEC7).w + move.b #$80,(_unkFEC7).w rts ; --------------------------------------------------------------------------- @@ -74479,7 +74479,7 @@ loc_37292: move.w #$168,(Events_bg+$16).w loc_372BC: - move.b #-$80,(_unkFEC7).w + move.b #$80,(_unkFEC7).w bsr.w sub_37406 moveq #signextendB(sfx_Goal),d0 jsr (Play_Sound_2).l @@ -74681,7 +74681,7 @@ locret_374B6: loc_374B8: move.l #Map_2PNeonDisplay,$C(a0) - move.w #-$78AA,$A(a0) + move.w #$8756,$A(a0) move.w #0,8(a0) move.b #-$80,7(a0) move.b #$28,6(a0) @@ -74709,7 +74709,7 @@ Map_2PNeonDisplay: include "General/2P Zone/Map - Neon Display.asm" loc_37C8E: move.l #$FF7000,$C(a0) - move.w #-$7A00,$A(a0) + move.w #$8600,$A(a0) move.w #0,8(a0) move.b #$40,7(a0) move.b #$10,6(a0) @@ -74745,7 +74745,7 @@ loc_37D00: loc_37D0C: move.l #$FF7080,$C(a0) - move.w #-$7A00,$A(a0) + move.w #$8600,$A(a0) move.w #0,8(a0) move.b #$40,7(a0) move.b #$10,6(a0) @@ -74892,7 +74892,7 @@ word_37E8E: dc.w 2 loc_37EC2: move.l #Map_2PItemIcon,$C(a0) - move.w #-$78B0,$A(a0) + move.w #$8750,$A(a0) move.w #0,8(a0) move.b #$10,7(a0) move.b #$10,6(a0) @@ -74956,7 +74956,7 @@ Map_2PItemIcon: include "General/2P Zone/Map - Item Icon.asm" ; --------------------------------------------------------------------------- move.l #Map_2PPosition,$C(a0) - move.w #-$78A2,$A(a0) + move.w #$875E,$A(a0) move.w #0,8(a0) move.b #4,7(a0) move.b #4,6(a0) @@ -75043,7 +75043,7 @@ Obj_EMZDripper: move.b #4,$1E(a0) btst #0,$2A(a0) beq.s loc_3814A - move.w #-$3D00,$A(a0) + move.w #$C300,$A(a0) move.b #3,$22(a0) move.l #Draw_Sprite,(a0) jmp (Draw_Sprite).l @@ -75186,7 +75186,7 @@ loc_382DE: subq.w #2,d0 bcc.s loc_382DE move.l #loc_382FC,(a1) - move.b #-$39,$28(a1) + move.b #$C7,$28(a1) moveq #0,d0 loc_382F6: @@ -75525,7 +75525,7 @@ Obj_TensionBridge: loc_386D0: cmpi.b #9,(Current_zone).w bne.s loc_386DE - move.w #-$1EED,$A(a0) + move.w #$E113,$A(a0) loc_386DE: tst.b $2C(a0) @@ -75661,7 +75661,7 @@ loc_38822: loc_3883A: move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.s loc_3884E @@ -77386,7 +77386,7 @@ Obj_LRZCollapsingBridge: move.b #4,4(a0) move.w #$80,8(a0) move.l #Map_LRZCollapsingBridge,$C(a0) - move.w #-$3F2D,$A(a0) + move.w #$C0D3,$A(a0) move.b $2C(a0),d0 move.b d0,d1 andi.w #$F,d0 @@ -78795,7 +78795,7 @@ loc_3B122: ; --------------------------------------------------------------------------- loc_3B146: - move.w #-$5BBE,$A(a0) + move.w #$A442,$A(a0) move.b #$24,7(a0) move.b #4,6(a0) move.b #4,$22(a0) @@ -80079,7 +80079,7 @@ Map_FBZPlatformBlocks:include "Levels/FBZ/Misc Object Data/Map - Platform Blocks Obj_FBZMissileLauncher: move.l #Map_FBZMissileLauncher,$C(a0) - move.w #-$5CD5,$A(a0) + move.w #$A32B,$A(a0) ori.b #4,4(a0) move.b #$10,7(a0) move.b #$10,6(a0) @@ -80108,7 +80108,7 @@ Obj_FBZMissileLauncher: move.w $10(a0),$44(a1) move.b 4(a0),4(a1) move.l $C(a0),$C(a1) - move.w #-$3CD5,$A(a1) + move.w #$C32B,$A(a1) move.w #$100,8(a1) move.b #$20,7(a1) move.b #8,6(a1) @@ -80149,7 +80149,7 @@ loc_3C552: subi.w #$44,$46(a1) move.b 4(a0),4(a1) move.l $C(a0),$C(a1) - move.w #-$5CD5,$A(a1) + move.w #$A32B,$A(a1) move.w #$80,8(a1) move.b #8,7(a1) move.b #$24,6(a1) @@ -80209,7 +80209,7 @@ loc_3C648: bne.w loc_3C67C move.l #Obj_Explosion,(a1) move.b #6,5(a1) - move.w #-$8000,$A(a1) + move.w #$8000,$A(a1) move.w $10(a0),$10(a1) move.w $14(a0),$14(a1) move.w (a2)+,d0 @@ -81706,7 +81706,7 @@ sub_3DB68: tst.b (_unkF7C1).w bne.s loc_3DB7E move.l #Map_MHZPollen,$C(a1) - move.w #-$1C98,$A(a1) + move.w #$E368,$A(a1) rts ; --------------------------------------------------------------------------- @@ -81717,13 +81717,13 @@ loc_3DB7E: move.b byte_3DBB0(pc,d0.w),d0 bne.s loc_3DBA0 move.l #Map_MHZBigLeaves,$C(a1) - move.w #-$1C9D,$A(a1) + move.w #$E363,$A(a1) rts ; --------------------------------------------------------------------------- loc_3DBA0: move.l #Map_MHZPollen,$C(a1) - move.w #-$1C9D,$A(a1) + move.w #$E363,$A(a1) rts ; End of function sub_3DB68 @@ -83799,7 +83799,7 @@ Map_MHZMushroomPlatform:include "Levels/MHZ/Misc Object Data/Map - Mushroom Plat Obj_MHZMushroomParachute: move.l #Map_MHZMushroomParachute,$C(a0) - move.w #-$3C33,$A(a0) + move.w #$C3CD,$A(a0) ori.b #4,4(a0) move.w #$280,8(a0) move.b #$20,7(a0) @@ -88581,7 +88581,7 @@ Map_LRZSmashingSpikePlatform:include "Levels/LRZ/Misc Object Data/Map - Smashing Obj_LRZSwingingSpikeBall: move.l #Map_LRZSwingingSpikeBall,$C(a0) - move.w #-$5C5F,$A(a0) + move.w #$A3A1,$A(a0) move.b #4,4(a0) move.b #$10,7(a0) move.b #$10,6(a0) @@ -88592,7 +88592,7 @@ Obj_LRZSwingingSpikeBall: tst.b (Current_act).w beq.s loc_4354E move.l #Map_LRZSwingingSpikeBall2,$C(a0) - move.w #-$5BF3,$A(a0) + move.w #$A40D,$A(a0) loc_4354E: jsr (Create_New_Sprite3).l @@ -88963,8 +88963,8 @@ sub_439EC: move.w $14(a0),$14(a1) addi.w #$20,$14(a1) move.l #Map_LRZRockDebris,$C(a1) - move.w #-$3F2D,$A(a1) - ori.b #-$7C,4(a1) + move.w #$C0D3,$A(a1) + ori.b #$84,4(a1) move.w #0,8(a1) move.b #4,7(a1) move.b #4,6(a1) @@ -89538,7 +89538,7 @@ Map_LRZSolidRock:include "Levels/LRZ/Misc Object Data/Map - Solid Rock.asm" ; --------------------------------------------------------------------------- Obj_LRZTurbineSprites: - move.w #-$5C53,$A(a0) + move.w #$A3AD,$A(a0) ori.b #4,4(a0) move.w #$200,8(a0) tst.b $2C(a0) @@ -89934,7 +89934,7 @@ Obj_SSZCollapsingColumn: move.b #$21,6(a0) move.b #$10,7(a0) move.w #$180,8(a0) - move.w #-$1D1C,$A(a0) + move.w #$E2E4,$A(a0) move.l #Map_SSZFloatingPlatform,$C(a0) move.b #2,$22(a0) move.w $14(a0),$1A(a0) @@ -90002,7 +90002,7 @@ loc_44BCC: move.b #8,6(a0) move.b #8,7(a0) move.w #$200,8(a0) - move.w #-$1D1C,$A(a0) + move.w #$E2E4,$A(a0) move.l #Map_SSZFloatingPlatform,$C(a0) loc_44BF8: @@ -90046,7 +90046,7 @@ Obj_SSZCollapsingBridge: move.b #$10,6(a0) move.b #$20,7(a0) move.w #$180,8(a0) - move.w #-$3D0C,$A(a0) + move.w #$C2F4,$A(a0) move.l #Map_SSZCollapsingBridge,$C(a0) bset #7,$2A(a0) @@ -90148,7 +90148,7 @@ Obj_SSZCollapsingBridgeDiagonal: move.b #$20,6(a0) move.b #$40,7(a0) move.w #$180,8(a0) - move.w #-$3D0C,$A(a0) + move.w #$C2F4,$A(a0) move.l #Map_SSZCollapsingBridge,$C(a0) move.b #3,$22(a0) bset #7,$2A(a0) @@ -90330,7 +90330,7 @@ Obj_77_2: move.b #$10,6(a0) move.b #$60,7(a0) move.w #$180,8(a0) - move.w #-$3D0C,$A(a0) + move.w #$C2F4,$A(a0) move.l #Map_SSZCollapsingBridge,$C(a0) move.w $10(a0),$12(a0) move.w #3,$16(a0) @@ -90417,7 +90417,7 @@ loc_45052: move.b #$10,6(a0) move.b #8,7(a0) move.w #$200,8(a0) - move.w #-$3D0C,$A(a0) + move.w #$C2F4,$A(a0) move.l #Map_SSZCollapsingBridge,$C(a0) loc_4507E: @@ -90447,7 +90447,7 @@ Obj_SSZBouncyCloud: move.b #$10,6(a0) move.b #$20,7(a0) move.w #$80,8(a0) - move.w #-$1C2A,$A(a0) + move.w #$E3D6,$A(a0) move.l #Map_SSZBouncyCloud,$C(a0) clr.b $2D(a0) move.w $14(a0),$1A(a0) @@ -90682,7 +90682,7 @@ loc_45304: move.b #4,6(a0) move.b #4,7(a0) move.w #$80,8(a0) - move.w #-$1C2A,$A(a0) + move.w #$E3D6,$A(a0) move.l #Map_SSZBouncyCloud,$C(a0) move.b #2,$20(a0) @@ -91170,7 +91170,7 @@ Obj_TeleporterBeam: move.b #-$80,6(a0) move.b #$18,7(a0) move.w #$80,8(a0) - move.w #-$1CA4,$A(a0) + move.w #$E35C,$A(a0) move.l #Map_SSZHPZTeleporter,$C(a0) move.w #1,$16(a0) move.w $14(a0),$44(a0) @@ -96137,7 +96137,7 @@ Map_DEZGravityPuzzle:include "Levels/DEZ/Misc Object Data/Map - Gravity Puzzle.a Obj_PachinkoTriangleBumper: move.l #Map_PachinkoTriangleBumper,$C(a0) - move.w #-$1D15,$A(a0) + move.w #$E2EB,$A(a0) ori.b #4,4(a0) move.b #$14,7(a0) move.b #$3C,6(a0) @@ -96257,7 +96257,7 @@ Map_PachinkoTriangleBumper:include "Levels/Pachinko/Misc Object Data/Map - Trian Obj_PachinkoFlipper: move.l #Map_PachinkoFlipper,$C(a0) - move.w #-$7CD1,$A(a0) + move.w #$832F,$A(a0) ori.b #4,4(a0) move.b #$20,7(a0) move.b #$1C,6(a0) @@ -96471,7 +96471,7 @@ loc_49EF4: loc_49F20: move.l #Map_PachinkoEnergyTrap,$C(a1) - move.w #-$5CAE,$A(a1) + move.w #$A352,$A(a1) ori.b #4,4(a1) move.b #8,7(a1) move.b #$18,6(a1) @@ -96590,7 +96590,7 @@ Map_PachinkoEnergyTrap:include "Levels/Pachinko/Misc Object Data/Map - Energy Tr Obj_PachinkoInvisibleUnknown: move.l #Map_PachinkoInvisibleUnknown,$C(a0) - move.w #-$1C9C,$A(a0) + move.w #$E364,$A(a0) ori.b #4,4(a0) move.b #-$78,7(a0) move.b #8,6(a0) @@ -96652,7 +96652,7 @@ Map_PachinkoPlatform:include "Levels/Pachinko/Misc Object Data/Map - Platform.as Obj_PachinkoItemOrb: move.l #Map_PachinkoItemOrb,$C(a0) - move.w #-$1C9C,$A(a0) + move.w #$E364,$A(a0) ori.b #4,4(a0) move.b #$10,7(a0) move.b #$10,6(a0) @@ -100555,7 +100555,7 @@ locret_4D03C: Obj_SpheresTitle_4D03E: move.l #Map_BlueSpheresText,$C(a0) - move.w #-$7AB2,$A(a0) + move.w #$854E,$A(a0) move.w #$120,$10(a0) move.w #$80,8(a0) move.b #$14,7(a0) @@ -100892,7 +100892,7 @@ Obj_SpheresTitle_4D302: loc_4D30E: move.l #Map_BlueSpheresText,$C(a0) - move.w #-$7AB2,$A(a0) + move.w #$854E,$A(a0) move.w #$D4,$10(a0) move.w #$80,8(a0) move.b #$14,7(a0) @@ -100971,7 +100971,7 @@ loc_4D3EA: addq.w #1,d0 mulu.w #object_size,d0 adda.w d0,a1 - move.w #-$7AB2,$A(a1) + move.w #$854E,$A(a1) move.b (Ctrl_1_pressed).w,d1 btst #0,d1 beq.s loc_4D414 @@ -101010,7 +101010,7 @@ loc_4D456: addq.w #1,d0 mulu.w #object_size,d0 adda.w d0,a1 - move.w #-$7A9E,$A(a1) + move.w #$8562,$A(a1) loc_4D470: move.b (Ctrl_1_pressed).w,d1 @@ -101158,7 +101158,7 @@ loc_4D5BC: sub_4D5C2: move.l #Map_BlueSpheresNum,$C(a0) - move.w #-$7AB2,$A(a0) + move.w #$854E,$A(a0) move.w #$80,8(a0) move.b #8,7(a0) move.b #8,6(a0) @@ -101197,7 +101197,7 @@ loc_4D60A: Obj_SpheresTitle_4D610: move.l #Map_BlueSpheresText,$C(a0) - move.w #-$7AB2,$A(a0) + move.w #$854E,$A(a0) move.w #$120,$10(a0) move.w #$128,$14(a0) move.w #$80,8(a0) @@ -101212,10 +101212,10 @@ loc_4D648: Obj_SpheresTitle_4D64E: move.l #Map_BlueSpheresIcon,$C(a0) - move.w #-$1A68,$A(a0) + move.w #$E598,$A(a0) cmpi.w #3,(Player_option).w bne.s loc_4D66A - move.w #-$7A68,$A(a0) + move.w #$8598,$A(a0) loc_4D66A: move.w #$100,$10(a0) @@ -101323,11 +101323,11 @@ loc_4D774: beq.s loc_4D7A0 move.w $A(a0),d0 move.w #3,(Player_option).w - move.w #-$7A68,$A(a0) - cmpi.w #-$7A68,d0 + move.w #$8598,$A(a0) + cmpi.w #$8598,d0 bne.s loc_4D7A0 move.w #1,(Player_option).w - move.w #-$1A68,$A(a0) + move.w #$E598,$A(a0) loc_4D7A0: jmp (Draw_Sprite).l @@ -101395,7 +101395,7 @@ Ani_BlueSphereCharSprite: include "General/Blue Sphere/Anim - Character Sprites. Obj_SpheresTitle_4DA30: move.l #Map_BlueSpheresCopyright,$C(a0) - move.w #-$7A4E,$A(a0) + move.w #$85B2,$A(a0) move.w #$180,$10(a0) move.w #$152,$14(a0) move.w #$80,8(a0) @@ -101758,7 +101758,7 @@ locret_4DF84: Obj_SphereResults_4DF86: move.l #Map_Sonic,$C(a0) - move.w #-$7980,$A(a0) + move.w #$8680,$A(a0) move.w #$120,$10(a0) move.w #$100,$14(a0) move.w #$80,8(a0) @@ -101842,7 +101842,7 @@ loc_4E074: Obj_SphereResults_4E0A4: move.l #Map_BlueSpheresText,$C(a0) - move.w #-$7AB2,$A(a0) + move.w #$854E,$A(a0) move.w #$120,$10(a0) move.w #$140,$14(a0) move.w #$80,8(a0) @@ -101939,7 +101939,7 @@ loc_4E1BE: Obj_DifficultySonic: move.l #Map_Sonic,$C(a0) - move.w #-$7980,$A(a0) + move.w #$8680,$A(a0) move.w #$120,$10(a0) move.w #$120,$14(a0) bset #0,4(a0) @@ -101980,7 +101980,7 @@ Obj_Difficulty_4E24C: Obj_Difficulty_Tails: move.l #Map_BSTailsPose,$C(a0) - move.w #-$5860,$A(a0) + move.w #$A7A0,$A(a0) move.w #$FC,$10(a0) move.w #$11B,$14(a0) bset #0,4(a0) @@ -101998,7 +101998,7 @@ Map_BSTailsPose: include "General/Blue Sphere/Map - Tails Pose.asm" Obj_Difficulty_Knuckles: move.l #Map_Knuckles,$C(a0) - move.w #-$5960,$A(a0) + move.w #$A6A0,$A(a0) move.w #$138,$10(a0) move.w #$118,$14(a0) move.w #$80,8(a0) @@ -103173,7 +103173,7 @@ loc_4EE22: sub.w (a4)+,d6 bmi.s loc_4EE32 move.w (a6)+,d0 - andi.w #-$10,d0 + andi.w #$FFF0,d0 move.w d0,(a6)+ subq.w #1,d5 bra.s loc_4EE22 @@ -103215,7 +103215,7 @@ loc_4EE74: subq.w #1,d5 beq.s locret_4EE82 move.w (a6)+,d0 - andi.w #-$10,d0 + andi.w #$FFF0,d0 move.w d0,(a6)+ bra.s loc_4EE74 ; --------------------------------------------------------------------------- @@ -103993,7 +103993,7 @@ Reset_TileOffsetPositionActual: Reset_TileOffsetPositionEff: move.w (Camera_X_pos_BG_copy).w,d0 move.w d0,d1 - andi.w #-$10,d0 + andi.w #$FFF0,d0 move.w d0,d2 move.w d0,(Camera_X_pos_BG_rounded).w move.w (Camera_Y_pos_BG_copy).w,d0 @@ -104837,7 +104837,7 @@ AIZ2SE_Normal: move.w #5,(Draw_delayed_rowcount).w clr.l (HScroll_table+$1F8).w move.w (Camera_X_pos_copy).w,d0 - andi.w #-$10,d0 + andi.w #$FFF0,d0 subi.w #$10,d0 move.w d0,(HScroll_table+$1FE).w st (Scroll_lock).w ; Camera doesn't follow Sonic @@ -104902,7 +104902,7 @@ AIZ2SE_EndRefresh: jsr Draw_PlaneVertBottomUp(pc) bpl.s loc_4FFF0 move.w (Camera_X_pos_copy).w,d0 - andi.w #-$10,d0 + andi.w #$FFF0,d0 subi.w #$10,d0 move.w d0,(Camera_X_pos_rounded).w move.w #$46C0,(Events_bg+$02).w ; Set level X start to 46C0 @@ -105150,7 +105150,7 @@ AIZ2_DoShipLoop: sub.w d1,(Player_2+x_pos).w ; Subtract $200 from X position of Sonic and Tails sub.w d1,d0 move.w d0,d1 - andi.w #-$10,d1 + andi.w #$FFF0,d1 subi.w #$10,d1 move.w d1,(Camera_X_pos_rounded).w move.w d1,(HScroll_table+$1FE).w @@ -105418,7 +105418,7 @@ loc_505B4: move.b #$20,7(a0) move.w #$500,$A(a0) move.l #Map_AIZ2BombExplode,$C(a0) - move.b #-$75,$28(a0) + move.b #$8B,$28(a0) bra.s loc_505E4 ; --------------------------------------------------------------------------- @@ -110317,7 +110317,7 @@ Obj_FBZBossPillar: move.b #-1,6(a0) move.b #$20,7(a0) move.w #$300,8(a0) - move.w #-$3C2B,$A(a0) + move.w #$C3D5,$A(a0) move.l #Map_FBZ2Preboss,$C(a0) move.w #2,$16(a0) ; 2 sprites @@ -113784,7 +113784,7 @@ loc_556F8: move.b #$18,6(a0) move.b #$18,7(a0) move.w #$80,8(a0) - move.w #-$1A80,$A(a0) + move.w #$E580,$A(a0) move.l #Map_MHZEndBossMisc,$C(a0) move.w #$4238,$10(a0) move.w #$2F0,$14(a0) @@ -113872,7 +113872,7 @@ locret_55812: loc_55814: move.l #loc_5582E,(a0) move.w #$380,8(a0) - move.w #-$5B00,$A(a0) + move.w #$A500,$A(a0) move.l #Map_MHZEndBossMisc,$C(a0) loc_5582E: @@ -114525,7 +114525,7 @@ loc_55FDA: move.b #4,4(a0) move.b #$24,7(a0) move.w #$380,8(a0) - move.w #-$3FD7,$A(a0) + move.w #$C029,$A(a0) move.l #Map_SOZ1EndDoor,$C(a0) move.w #$439C,$18(a0) move.w #$9D4,$1A(a0) @@ -115623,7 +115623,7 @@ LRZ1_ScreenEvent: beq.s loc_56B5E bmi.s loc_56B2C movea.w $40(a3),a1 - move.b #-$64,$A(a1) + move.b #$9C,$A(a1) bra.s loc_56B54 ; --------------------------------------------------------------------------- @@ -117189,7 +117189,7 @@ loc_57BB2: move.b #$10,6(a0) move.b #$30,7(a0) move.w #0,8(a0) - move.w #-$1CF0,$A(a0) + move.w #$E310,$A(a0) move.l #Map_SSZRoamingClouds,$C(a0) move.w $38(a0),$1A(a0) jsr (Random_Number).l @@ -117224,7 +117224,7 @@ loc_57C28: move.b #-$80,6(a1) move.b #$18,7(a1) move.w #$80,8(a1) - move.w #-$1CA4,$A(a1) + move.w #$E35C,$A(a1) move.l #Map_SSZHPZTeleporter,$C(a1) move.w $10(a0),$10(a1) move.w $14(a0),$14(a1) @@ -117752,7 +117752,7 @@ loc_581F2: move.b #4,4(a0) move.b #$1C,6(a0) move.w #$80,8(a0) - move.w #-$3CB8,$A(a0) + move.w #$C348,$A(a0) move.l #Map_SSZCollapsingBridge,$C(a0) move.b #9,$22(a0) @@ -117769,7 +117769,7 @@ loc_58234: move.b #4,4(a0) move.b #$18,6(a0) move.w #$80,8(a0) - move.w #-$3D0C,$A(a0) + move.w #$C2F4,$A(a0) move.l #Map_SSZCollapsingBridge,$C(a0) move.b #6,$22(a0) @@ -117876,7 +117876,7 @@ loc_58360: move.b #4,4(a0) move.b #$1C,6(a0) move.w #$100,8(a0) - move.w #-$3CB8,$A(a0) + move.w #$C348,$A(a0) move.l #Map_SSZCollapsingBridge,$C(a0) move.b #$A,$22(a0) @@ -121442,7 +121442,7 @@ Obj_5A872: move.b #$10,6(a0) move.b #$C,7(a0) move.w #$80,8(a0) - move.w #-$3FFF,$A(a0) + move.w #$C001,$A(a0) move.l #Map_DEZ3Blocks,$C(a0) move.w #$F0,$14(a0) move.w $10(a0),d0 @@ -124758,7 +124758,7 @@ loc_5DE80: move.b #2,$22(a0) tst.b $2C(a0) bne.s loc_5DEC6 - move.w #-$3AD2,$A(a0) + move.w #$C52E,$A(a0) move.w #$280,8(a0) tst.b (_unkFA88).w bpl.s locret_5DEC4 @@ -124961,7 +124961,7 @@ off_5E0F0: dc.w loc_5E0F8-off_5E0F0 loc_5E0F8: move.b #2,5(a0) move.l #Map_Knuckles,$C(a0) - move.w #-$7B26,$A(a0) + move.w #$84DA,$A(a0) move.w #$180,8(a0) move.b #7,$22(a0) move.w #$1E0,$10(a0) @@ -125546,7 +125546,7 @@ loc_5E890: bhi.w locret_5FF1A move.b #$A,5(a0) move.l #Map_SonicPlaneEnding,$C(a0) - move.w #-$7D92,$A(a0) + move.w #$826E,$A(a0) move.b #1,$22(a0) bset #0,4(a0) bset #7,$2A(a0) @@ -125772,21 +125772,21 @@ off_5EB6A: dc.w loc_5EB72-off_5EB6A loc_5EB72: move.l #Map_SonicPlane,$C(a0) - move.w #-$7E1D,$A(a0) + move.w #$81E3,$A(a0) move.b #$C,$22(a0) rts ; --------------------------------------------------------------------------- loc_5EB88: move.l #Map_SonicPlaneEnding,$C(a0) - move.w #-$7D92,$A(a0) + move.w #$826E,$A(a0) move.b #$B,$22(a0) rts ; --------------------------------------------------------------------------- loc_5EB9E: move.l #Map_SonicPlaneEnding,$C(a0) - move.w #-$7D92,$A(a0) + move.w #$826E,$A(a0) move.b #$12,$22(a0) rts ; --------------------------------------------------------------------------- @@ -130378,7 +130378,7 @@ sub_62800: movea.w d0,a1 cmpi.b #6,5(a1) bhs.s locret_627FE - move.b #-$7F,$2E(a1) + move.b #$81,$2E(a1) bclr #0,4(a1) bclr #0,$2A(a1) rts @@ -131295,7 +131295,7 @@ loc_632CA: cmpi.b #2,(Player_1+character_id).w bne.s loc_632F8 move.l #Sprite_OnScreen_Test,(a0) - move.w #-$7AD8,$A(a0) + move.w #$8528,$A(a0) movea.w $46(a0),a1 move.w $48(a1),$48(a0) @@ -138150,7 +138150,7 @@ loc_68956: loc_68962: move.l #Map_BossExplosion,$C(a0) - move.w #-$7B2E,$A(a0) + move.w #$84D2,$A(a0) move.l #byte_69164,$30(a0) move.l #Go_Delete_Sprite,$34(a0) cmpi.b #6,$2C(a0) @@ -139213,7 +139213,7 @@ loc_693C0: move.b #8,5(a0) move.w #$3F,$2E(a0) move.l #loc_693FA,$34(a0) - andi.b #-$B,$38(a0) + andi.b #$F5,$38(a0) rts ; --------------------------------------------------------------------------- @@ -141501,7 +141501,7 @@ sub_6ABA8: moveq #0,d0 move.b $3D(a2),d0 lsr.w #3,d0 - andi.w #-2,d0 + andi.w #$FFFE,d0 move.w word_6ABF8(pc,d0.w),8(a0) lea byte_6AC18(pc,d0.w),a1 move.b (a1)+,d1 @@ -146218,11 +146218,11 @@ CNZMiniboss_BlockExplosion: bne.s locret_6DE24 move.b #6,$2C(a1) move.w (Events_bg+$00).w,d0 - andi.w #-$20,d0 + andi.w #$FFE0,d0 addi.w #$10,d0 move.w d0,$10(a1) move.w (Events_bg+$02).w,d0 - andi.w #-$20,d0 + andi.w #$FFE0,d0 addi.w #$10,d0 move.w d0,$14(a1) @@ -146292,7 +146292,7 @@ Obj_CNZMinibossCoilOpen: loc_6DEDE: move.l #loc_6DEEC,(a0) - move.b #-$56,$28(a0) + move.b #$AA,$28(a0) rts ; --------------------------------------------------------------------------- @@ -148332,7 +148332,7 @@ loc_6F432: lea word_6FA52(pc),a1 move.w #3,$3E(a0) jsr (SetUp_ObjAttributes3).l - move.b #-$7A,$28(a0) + move.b #$86,$28(a0) movea.w $46(a0),a1 movea.w $46(a1),a1 movea.w $46(a1),a1 @@ -148608,7 +148608,7 @@ loc_6F74C: loc_6F764: bsr.w sub_6F786 move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.s loc_6F780 @@ -149395,7 +149395,7 @@ loc_7009A: subq.w #4,$14(a0) move.w #$200,$18(a0) move.l #Map_FBZRobotnikRun,$C(a0) - move.w #-$7B57,$A(a0) + move.w #$84A9,$A(a0) clr.b $22(a0) clr.b $24(a0) clr.b $23(a0) @@ -149513,7 +149513,7 @@ loc_70220: clr.b $28(a0) cmpi.b #8,$22(a0) bne.s loc_70232 - move.b #-$54,$28(a0) + move.b #$AC,$28(a0) loc_70232: lea (Player_1).w,a2 @@ -151082,7 +151082,7 @@ loc_7155A: loc_71566: move.b #8,5(a0) - move.b #-$75,$28(a0) + move.b #$8B,$28(a0) moveq #signextendB(sfx_BossRotate),d0 jsr (Play_Sound_2).l rts @@ -152110,7 +152110,7 @@ word_720BE: dc.w $FFF0, $20, $FFF0, $20 loc_720C6: move.l #loc_720D4,(a0) - move.b #-$65,$28(a0) + move.b #$9B,$28(a0) rts ; --------------------------------------------------------------------------- @@ -153933,7 +153933,7 @@ loc_733E2: addq.b #1,d0 move.b d0,$39(a0) andi.b #3,d0 - andi.b #-4,4(a0) + andi.b #$FC,4(a0) or.b d0,4(a0) rts @@ -155166,7 +155166,7 @@ loc_7403A: bclr #7,4(a0) move.w #$7F,$2E(a0) bset #4,$38(a0) - move.w #-$5BDB,$A(a0) + move.w #$A425,$A(a0) move.w #-$200,$1A(a0) move.l #loc_73A6A,$34(a0) lea (Child6_CreateBossExplosion).l,a2 @@ -155192,7 +155192,7 @@ loc_74098: loc_740AA: move.l #MoveChkDel,(a0) bset #7,$2A(a0) - move.w #-$5BDB,$A(a0) + move.w #$A425,$A(a0) moveq #0,d0 move.b $2C(a0),d0 move.w word_740E4(pc,d0.w),$18(a0) @@ -160271,7 +160271,7 @@ loc_77AB4: loc_77AB8: move.l #Map_SOZEndBoss,$C(a0) - move.w #-$1C5C,$A(a0) + move.w #$E3A4,$A(a0) moveq #0,d0 move.b $2C(a0),d0 move.w off_77AD4(pc,d0.w),d0 @@ -175466,7 +175466,7 @@ loc_821C2: Obj_DDZAsteroid: move.l #loc_821FC,(a0) move.l #Map_DDZMissileAsteroid,$C(a0) - move.w #-$5D25,$A(a0) + move.w #$A2DB,$A(a0) move.w #0,8(a0) bsr.w sub_83146 @@ -180157,7 +180157,7 @@ locret_8506E: Sprite_CheckDelete: move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.s loc_85088 @@ -180178,7 +180178,7 @@ loc_85094: Sprite_CheckDelete2: move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.s loc_850BA @@ -180199,7 +180199,7 @@ loc_850C6: Sprite_CheckDeleteXY: move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.w Go_Delete_Sprite @@ -180214,7 +180214,7 @@ Sprite_CheckDeleteXY: Obj_FlickerMove: jsr (MoveSprite).l move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.w Go_Delete_Sprite_3 @@ -180230,7 +180230,7 @@ Obj_FlickerMove: Sprite_CheckDeleteTouch: move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.w loc_85088 @@ -180240,7 +180240,7 @@ Sprite_CheckDeleteTouch: Sprite_CheckDeleteTouch2: move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.w loc_850BA @@ -180250,7 +180250,7 @@ Sprite_CheckDeleteTouch2: Sprite_CheckDeleteTouchXY: move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.w Go_Delete_Sprite @@ -180265,7 +180265,7 @@ Sprite_CheckDeleteTouchXY: Sprite_CheckDeleteSlotted: move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.s Go_Delete_SpriteSlotted @@ -180294,7 +180294,7 @@ Remove_From_TrackingSlot: ; --------------------------------------------------------------------------- move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.s Go_Delete_SpriteSlotted @@ -180305,7 +180305,7 @@ Sprite_CheckDeleteTouchSlotted: tst.b $2A(a0) bmi.s Go_Delete_SpriteSlotted3 move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.s Go_Delete_SpriteSlotted @@ -180320,7 +180320,7 @@ Go_Delete_SpriteSlotted3: tst.b $2A(a0) ; Unused, seems to be identical to the above bmi.s Go_Delete_SpriteSlotted3 move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.w Go_Delete_SpriteSlotted @@ -180328,21 +180328,21 @@ Go_Delete_SpriteSlotted3: jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- move.w $10(a0),d0 ; Next three are unused, virtually the same - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.w loc_85088 rts ; --------------------------------------------------------------------------- move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.w loc_85088 rts ; --------------------------------------------------------------------------- move.w $10(a0),d0 - andi.w #-$80,d0 + andi.w #$FF80,d0 sub.w (Camera_X_pos_coarse_back).w,d0 cmpi.w #$280,d0 bhi.w loc_85088 @@ -183170,7 +183170,7 @@ locret_869C4: Set_PlayerEndingPose: - move.b #-$7F,$2E(a1) + move.b #$81,$2E(a1) move.b #$13,$20(a1) clr.b $3D(a1) clr.w $18(a1) @@ -185589,7 +185589,7 @@ loc_88076: btst #2,$38(a0) beq.s loc_880AE move.w (Ctrl_1).w,d0 - andi.w #-$7374,d0 + andi.w #$8C8C,d0 move.w d0,(Ctrl_1_logical).w loc_880AE: @@ -185722,7 +185722,7 @@ sub_881FE: bne.s loc_88236 loc_88230: - ori.b #-$80,(Update_HUD_ring_count).w + ori.b #$80,(Update_HUD_ring_count).w loc_88236: move.w d0,(Ring_count).w @@ -185737,7 +185737,7 @@ loc_88242: loc_88246: bclr #7,$38(a0) beq.s loc_88242 - andi.b #-2,(Update_HUD_ring_count).w + andi.b #$FE,(Update_HUD_ring_count).w moveq #0,d0 rts ; --------------------------------------------------------------------------- @@ -185808,7 +185808,7 @@ loc_882E6: move.b #$A,$28(a0) cmpi.b #2,$22(a0) bne.s locret_8830C - move.b #-$7A,$28(a0) + move.b #$86,$28(a0) locret_8830C: rts @@ -185843,7 +185843,7 @@ Obj_BubblesBadnik: move.b #$12,$28(a0) cmpi.b #4,$22(a0) bne.s loc_8835E - move.b #-$7A,$28(a0) + move.b #$86,$28(a0) loc_8835E: lea PLCPtr_88436(pc),a2 @@ -186264,7 +186264,7 @@ loc_887DA: loc_887F6: move.l #loc_88804,(a0) - move.b #-$62,$28(a0) + move.b #$9E,$28(a0) rts ; --------------------------------------------------------------------------- @@ -186844,7 +186844,7 @@ loc_88D94: loc_88D98: move.b #2,5(a0) - move.b #-$36,$28(a0) + move.b #$CA,$28(a0) rts ; =============== S U B R O U T I N E ======================================= @@ -190737,7 +190737,7 @@ loc_8B1E0: loc_8B1EC: move.l #loc_8B1FA,(a0) - move.b #-$7E,$28(a0) + move.b #$82,$28(a0) rts ; --------------------------------------------------------------------------- @@ -190830,7 +190830,7 @@ loc_8B2C8: loc_8B2CC: move.l #loc_8B2EE,(a0) - move.b #-$6E,$28(a0) + move.b #$92,$28(a0) rts ; --------------------------------------------------------------------------- @@ -190875,7 +190875,7 @@ locret_8B32E: ; --------------------------------------------------------------------------- loc_8B330: - move.b #-$68,$28(a0) + move.b #$98,$28(a0) jsr (Add_SpriteToCollisionResponseList).l movea.w $46(a0),a1 btst #7,$2A(a1) @@ -198934,7 +198934,7 @@ loc_907A2: loc_907A8: move.l #loc_908DE,(a0) - move.w #-$7B89,$A(a0) + move.w #$8477,$A(a0) bset #0,$38(a0) bsr.w sub_9084E bsr.w sub_90832 @@ -199037,7 +199037,7 @@ loc_90880: beq.s loc_9089E move.l #loc_908DE,(a0) move.b #$1E,$22(a0) - move.w #-$7B89,$A(a0) + move.w #$8477,$A(a0) bra.w loc_908DE ; --------------------------------------------------------------------------- @@ -199048,7 +199048,7 @@ loc_9089E: cmp.b $2C(a0),d0 bne.s loc_908BE move.b #$1E,$22(a0) - move.w #-$7B89,$A(a0) + move.w #$8477,$A(a0) bra.w loc_908DE ; --------------------------------------------------------------------------- @@ -199058,7 +199058,7 @@ loc_908BE: btst #0,(V_int_run_count+3).w beq.s loc_908DE move.b #7,$22(a0) - move.w #-$7C4B,$A(a0) + move.w #$83B5,$A(a0) loc_908DE: move.w #$1B,d1 From a51f4513954b667cdc888279e97c67ccbaf83e25 Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Tue, 9 Nov 2021 20:25:39 +0000 Subject: [PATCH 37/72] Convert a few more constants to unsigned where it seems reasonable --- s3.asm | 156 ++++++++++++++++++++++++++-------------------------- sonic3k.asm | 142 +++++++++++++++++++++++------------------------ 2 files changed, 149 insertions(+), 149 deletions(-) diff --git a/s3.asm b/s3.asm index 7b15daf3..153a62e0 100644 --- a/s3.asm +++ b/s3.asm @@ -23286,7 +23286,7 @@ loc_14804: move.w d0,$3E(a0) move.b d0,$40(a0) move.b d0,$41(a0) - move.b #-$10,$25(a0) + move.b #$F0,$25(a0) bsr.w Tails_Set_Flying_Animation locret_148A0: @@ -23305,13 +23305,13 @@ Tails_FlySwim_Unknown: move.b #2,$2A(a0) move.w #0,$10(a0) move.w #0,$14(a0) - move.b #-$10,$25(a0) + move.b #$F0,$25(a0) bsr.w Tails_Set_Flying_Animation rts ; --------------------------------------------------------------------------- loc_148E4: - move.b #-$10,$25(a0) + move.b #$F0,$25(a0) ori.b #2,$2A(a0) bsr.w Tails_Set_Flying_Animation move.w #0,(Tails_CPU_flight_timer).w @@ -23652,7 +23652,7 @@ locret_14C46: loc_14C48: move.b #1,$2F(a0) - move.b #-$10,$25(a0) + move.b #$F0,$25(a0) move.b #2,$2A(a0) move.w #$100,$18(a0) move.w #0,$1A(a0) @@ -23702,7 +23702,7 @@ loc_14D08: loc_14D10: move.w #0,(Tails_CPU_idle_timer).w - move.b #-$10,$25(a0) + move.b #$F0,$25(a0) move.w #0,(Ctrl_2_logical).w move.b (Level_frame_counter+1).w,d0 andi.b #$F,d0 @@ -23727,7 +23727,7 @@ loc_14D4C: loc_14D54: move.b #1,$2F(a0) - move.b #-$10,$25(a0) + move.b #$F0,$25(a0) move.b #2,$2A(a0) move.w #0,$18(a0) move.w #0,$1A(a0) @@ -23739,7 +23739,7 @@ loc_14D54: loc_14D8C: move.w #0,(Tails_CPU_idle_timer).w - move.b #-$10,$25(a0) + move.b #$F0,$25(a0) move.w #0,(Ctrl_2_logical).w move.b (Level_frame_counter+1).w,d0 andi.b #7,d0 @@ -23761,7 +23761,7 @@ loc_14DC2: ; --------------------------------------------------------------------------- loc_14DD2: - move.b #-$10,$25(a0) + move.b #$F0,$25(a0) tst.w (Tails_CPU_idle_timer).w beq.s loc_14DEA tst.b (Flying_carrying_Sonic_flag).w @@ -23777,7 +23777,7 @@ loc_14DEA: btst #1,(Ctrl_1_held).w beq.s loc_14E1E addq.b #1,(Tails_CPU_auto_fly_timer).w - cmpi.b #-$40,(Tails_CPU_auto_fly_timer).w + cmpi.b #$C0,(Tails_CPU_auto_fly_timer).w bcs.s loc_14E58 move.b #0,(Tails_CPU_auto_fly_timer).w ori.w #$7070,(Ctrl_2_logical).w @@ -23817,7 +23817,7 @@ loc_14E68: loc_14E78: move.b #1,$2F(a0) - move.b #-$10,$25(a0) + move.b #$F0,$25(a0) move.b #2,$2A(a0) move.w #0,$18(a0) move.w #0,$1A(a0) @@ -23826,7 +23826,7 @@ loc_14E78: loc_14EA2: move.w #0,(Tails_CPU_idle_timer).w - move.b #-$10,$25(a0) + move.b #$F0,$25(a0) move.w #0,(Ctrl_2_logical).w move.b (Level_frame_counter+1).w,d0 andi.b #7,d0 @@ -23845,13 +23845,13 @@ locret_14ED8: ; --------------------------------------------------------------------------- loc_14EDA: - move.b #-$10,$25(a0) + move.b #$F0,$25(a0) rts ; --------------------------------------------------------------------------- loc_14EE2: move.b #1,$2F(a0) - move.b #-$10,$25(a0) + move.b #$F0,$25(a0) move.b #2,$2A(a0) move.w #$100,$18(a0) move.w #0,$1A(a0) @@ -43113,7 +43113,7 @@ Obj_LBZExplodingTrigger: move.b #$10,7(a0) move.b #$10,6(a0) move.w #$280,8(a0) - move.b #-$3A,$28(a0) + move.b #$C6,$28(a0) move.l #loc_24944,(a0) loc_24944: @@ -44312,7 +44312,7 @@ loc_25B34: move.w #6,$36(a0) btst #0,$2C(a0) beq.s loc_25B5A - addi.b #-$80,$27(a0) + addi.b #$80,$27(a0) loc_25B5A: move.l #Obj_LBZCupElevatorMain,(a0) @@ -47473,7 +47473,7 @@ Obj_LBZLoweringGrapple: move.b #4,4(a0) move.b #$10,7(a0) move.w #$80,8(a0) - move.b #-$80,6(a0) + move.b #$80,6(a0) move.w $14(a0),$3C(a0) move.l #Map_LBZLoweringGrapple,$C(a0) move.w #$42EA,$A(a0) @@ -47902,7 +47902,7 @@ word_2847A: dc.w $C0, $FFA0 Obj_23_1: move.b #4,4(a0) move.b #$10,7(a0) - move.b #-$80,6(a0) + move.b #$80,6(a0) move.b #0,8(a0) moveq #0,d0 move.b $2C(a0),d0 @@ -49675,7 +49675,7 @@ Map_LBZCorkFloor: Obj_AIZFlippingBridge: move.l #Map_AIZFlippingBridge,$C(a0) move.w #$42E9,$A(a0) - move.b #-$80,7(a0) + move.b #$80,7(a0) move.b #4,6(a0) move.b #4,4(a0) move.w #$200,8(a0) @@ -49707,7 +49707,7 @@ loc_29FEA: move.l #Map_AIZFlippingBridge,$C(a1) move.w #$42E9,$A(a1) move.b #4,4(a1) - move.b #-$80,7(a1) + move.b #$80,7(a1) move.b #$40,6(a1) move.w #$200,8(a1) move.w $10(a0),$10(a1) @@ -51370,7 +51370,7 @@ Obj_31_1: move.w d0,$32(a0) neg.w d0 move.w d0,$30(a0) - move.b #-$80,7(a0) + move.b #$80,7(a0) move.l #loc_2B9D2,(a0) loc_2B9D2: @@ -51479,7 +51479,7 @@ loc_2BAC2: add.w $14(a0),d1 move.w d1,$14(a1) move.b (a2),d0 - addi.b #-$80,d0 + addi.b #$80,d0 move.b d0,$27(a1) addq.b #2,(a2) move.b #$80,$2D(a1) @@ -53007,10 +53007,10 @@ loc_2CE14: lea (ArtKosM_ResultsTAILS).l,a1 loc_2CE4C: - move.w #-$5000,d2 + move.w #$B000,d2 tst.b (Apparent_act).w beq.s loc_2CE5A - move.w #-$4C00,d2 + move.w #$B400,d2 loc_2CE5A: jsr (Queue_Kos_Module).l @@ -53455,12 +53455,12 @@ SpecialStage_Results: move.w d0,(VDP_control_port).l jsr (Clear_DisplayData).l lea (VDP_control_port).l,a6 - move.w #-$7FFC,(a6) - move.w #-$7DD0,(a6) - move.w #-$7BF9,(a6) - move.w #-$7500,(a6) - move.w #-$737F,(a6) - move.w #-$6FEF,(a6) + move.w #$8004,(a6) + move.w #$8230,(a6) + move.w #$8407,(a6) + move.w #$8B00,(a6) + move.w #$8C81,(a6) + move.w #$9011,(a6) lea (Sprite_table_input).w,a1 moveq #0,d0 move.w #$FF,d1 @@ -53499,7 +53499,7 @@ loc_2D270: lea (ArtKosM_ResultsTAILS).l,a1 loc_2D2DE: - move.w #-$5000,d2 + move.w #$B000,d2 jsr (Queue_Kos_Module).l lea (ArtKosM_SSResults).l,a1 move.w #$20,d2 @@ -54594,7 +54594,7 @@ loc_2E794: loc_2E7A4: lea (ArtKosM_HCZGeyserHorz).l,a1 - move.w #-$6000,d2 + move.w #$A000,d2 jsr (Queue_Kos_Module).l move.l #loc_2E7BA,(a0) @@ -54609,7 +54609,7 @@ loc_2E7C2: move.w #$300,8(a0) move.l #Map_HCZWaterWall,$C(a0) move.w #$4500,$A(a0) - move.b #-$80,7(a0) + move.b #$80,7(a0) move.b #$20,6(a0) bset #6,4(a0) move.w #1,$16(a0) @@ -54872,7 +54872,7 @@ loc_2EB48: loc_2EB4E: lea (ArtKosM_HCZGeyserVert).l,a1 - move.w #-$6000,d2 + move.w #$A000,d2 jsr (Queue_Kos_Module).l move.b #1,$22(a0) move.b #$81,(Player_1+object_control).w @@ -55377,7 +55377,7 @@ loc_2F2F8: loc_2F304: lea (ArtKosM_HCZLargeFan).l,a1 - move.w #-$6000,d2 + move.w #$A000,d2 jsr (Queue_Kos_Module).l move.l #loc_2F31A,(a0) @@ -56345,7 +56345,7 @@ loc_300D8: loc_300DA: clr.w $1C(a1) move.b 4(a2),d0 - subi.b #-$80,d0 + subi.b #$80,d0 beq.s loc_30104 bpl.s loc_300F4 addi.b #6,d0 @@ -56362,7 +56362,7 @@ loc_300F4: moveq #0,d0 loc_300FC: - addi.b #-$80,d0 + addi.b #$80,d0 move.b d0,4(a2) loc_30104: @@ -56784,7 +56784,7 @@ loc_30844: subi.w #$18,$14(a1) move.b $1D(a0),d0 lsl.b #4,d0 - addi.b #-$80,d0 + addi.b #$80,d0 jsr (GetSineCosine).l asl.w #3,d1 asl.w #3,d0 @@ -56876,7 +56876,7 @@ loc_30960: loc_30966: move.b $1D(a0),d0 lsl.b #4,d0 - addi.b #-$80,d0 + addi.b #$80,d0 jsr (GetSineCosine).l asl.w #4,d1 asl.w #4,d0 @@ -56927,7 +56927,7 @@ sub_309D8: move.w (a2)+,d5 subq.w #1,d5 bmi.s locret_30A30 - move.w #-$7700,d4 + move.w #$8900,d4 loc_30A04: moveq #0,d1 @@ -57730,10 +57730,10 @@ loc_31546: bpl.s loc_31588 add.w d0,$26(a0) move.b $26(a0),d0 - cmpi.b #-$80,d0 + cmpi.b #$80,d0 bcc.s loc_31570 andi.b #$7F,d0 - addi.b #-$80,d0 + addi.b #$80,d0 move.b d0,$26(a0) subq.b #1,$44(a0) andi.b #3,$44(a0) @@ -57741,9 +57741,9 @@ loc_31546: loc_31570: move.w #$20,d2 move.b $26(a0),d0 - cmpi.b #-$80,d0 + cmpi.b #$80,d0 bcc.s loc_315B0 - move.b #-$80,d0 + move.b #$80,d0 move.b d0,$26(a0) bra.s loc_315B0 ; --------------------------------------------------------------------------- @@ -57751,10 +57751,10 @@ loc_31570: loc_31588: add.w d0,$26(a0) move.b $26(a0),d0 - cmpi.b #-$80,d0 + cmpi.b #$80,d0 bcc.s loc_315AC andi.b #$7F,d0 - addi.b #-$80,d0 + addi.b #$80,d0 move.b d0,$26(a0) addq.b #1,$44(a0) andi.b #3,$44(a0) @@ -57819,7 +57819,7 @@ sub_3161A: sub.w $10(a0),d0 bpl.s loc_3163C neg.w d0 - move.b #-$80,1(a2) + move.b #$80,1(a2) loc_3163C: move.b d0,2(a2) @@ -58081,7 +58081,7 @@ sub_319AE: sub.w $10(a0),d0 bpl.s loc_319D0 neg.w d0 - move.b #-$80,1(a2) + move.b #$80,1(a2) loc_319D0: move.b d0,2(a2) @@ -58543,7 +58543,7 @@ Obj_5D_1: andi.b #7,d0 move.b d0,$22(a0) beq.s loc_31F1C - move.b #-$80,6(a0) + move.b #$80,6(a0) loc_31F1C: move.l #loc_31F22,(a0) @@ -58921,7 +58921,7 @@ loc_3233C: cmpi.w #$40,d0 bcc.s loc_323AE neg.w d1 - move.b #-$80,1(a4) + move.b #$80,1(a4) loc_323AE: add.w $10(a0),d1 @@ -59732,7 +59732,7 @@ loc_32B86: loc_32B92: bsr.w sub_32E68 - move.b #-$80,(a2) + move.b #$80,(a2) move.b #-$40,$26(a1) move.w $10(a1),d0 sub.w $10(a0),d0 @@ -59836,7 +59836,7 @@ loc_32CA4: moveq #0,d0 move.b (a2),d0 andi.w #$7FFF,$A(a1) - cmpi.b #-$80,d0 + cmpi.b #$80,d0 bcs.s loc_32CDE ori.w #$8000,$A(a1) @@ -59938,7 +59938,7 @@ loc_32DF4: moveq #0,d0 move.b (a2),d0 andi.w #$7FFF,$A(a1) - cmpi.b #-$80,d0 + cmpi.b #$80,d0 bcs.s loc_32E2E ori.w #$8000,$A(a1) @@ -60075,7 +60075,7 @@ loc_32F38: sub.w $14(a0),d0 move.w d0,(a2) bsr.w sub_32E68 - move.b #-$40,$26(a1) + move.b #$C0,$26(a1) bclr #0,4(a1) move.b #$80,5(a2) move.w $10(a1),d0 @@ -60178,7 +60178,7 @@ loc_33088: loc_330C6: btst #0,$2A(a0) beq.s loc_330D4 - addi.b #-$80,$26(a1) + addi.b #$80,$26(a1) loc_330D4: bclr #2,$2A(a1) @@ -60240,7 +60240,7 @@ loc_33138: move.w d0,$14(a1) moveq #0,d0 andi.w #$7FFF,$A(a1) - cmpi.b #-$80,d2 + cmpi.b #$80,d2 bcc.s loc_33196 ori.w #$8000,$A(a1) @@ -60948,7 +60948,7 @@ Obj_MGZPulley: move.w $A(a0),$A(a1) move.b 4(a0),4(a1) move.b #$60,7(a1) - move.b #-$40,6(a1) + move.b #$C0,6(a1) move.w #$300,8(a1) move.w $10(a0),$12(a1) move.w $10(a0),$10(a1) @@ -62682,9 +62682,9 @@ loc_350A8: loc_350C0: add.w d1,$36(a0) - cmpi.w #-$8000,$36(a0) + cmpi.w #$8000,$36(a0) bcs.s loc_350D2 - move.w #-$8000,$36(a0) + move.w #$8000,$36(a0) loc_350D2: bra.s loc_350E8 @@ -64136,7 +64136,7 @@ loc_366CC: move.l #Map_2PNeonDisplay,$C(a0) move.w #$8756,$A(a0) move.w #0,8(a0) - move.b #-$80,7(a0) + move.b #$80,7(a0) move.b #$28,6(a0) move.l #loc_366FE,(a0) tst.b (Not_ghost_flag).w @@ -65053,8 +65053,8 @@ Obj_HCZWaterSplash: loc_379B4: ori.b #4,4(a0) move.w #$300,8(a0) - move.b #-$60,7(a0) - move.b #-$80,6(a0) + move.b #$A0,7(a0) + move.b #$80,6(a0) move.b #-1,$31(a0) move.b #0,$2A(a0) bset #6,4(a0) @@ -65318,7 +65318,7 @@ loc_37CDC: loc_37CEE: move.b #4,4(a0) - move.b #-$80,7(a0) + move.b #$80,7(a0) move.b #8,6(a0) move.w $14(a0),d2 move.w d2,$3C(a0) @@ -66726,7 +66726,7 @@ sub_38C7A: sub_38C8C: - move.w #-$3000,d4 + move.w #$D000,d4 move.l #ArtUnc_SonicSnowboard,d6 lea (DPLC_SonicSnowboard).l,a2 @@ -70523,7 +70523,7 @@ AIZ2BGE_FireRedraw: loc_3B480: addq.w #2,a3 - move.w #-$2000,d7 + move.w #$E000,d7 clr.w (Events_bg+$00).w addq.w #4,(Events_routine_bg).w @@ -81185,7 +81185,7 @@ loc_45888: move.w #$40,$2E(a0) move.l #loc_458F6,$34(a0) move.w #8,$40(a0) - move.w #-$16E8,(Events_fg_1).w + move.w #$E918,(Events_fg_1).w move.b #-1,(Player_prev_frame).w lea (Player_1).w,a1 move.b #0,$22(a1) @@ -81408,10 +81408,10 @@ loc_45B56: move.b #$20,7(a0) jsr Swing_Setup1(pc) lea (ArtKosM_AIZIntroPlane).l,a1 - move.w #-$5AE0,d2 + move.w #$A520,d2 jsr (Queue_Kos_Module).l lea (ArtKosM_AIZIntroEmeralds).l,a1 - move.w #-$49E0,d2 + move.w #$B620,d2 jsr (Queue_Kos_Module).l lea ChildObjDat_45E3E(pc),a2 jmp (CreateChild1_Normal).l @@ -88087,10 +88087,10 @@ loc_4A04A: moveq #$14,d0 jsr (Load_PLC).l lea (ArtKosM_Spiker).l,a1 - move.w #-$5A00,d2 + move.w #$A600,d2 jsr (Queue_Kos_Module).l lea (ArtKosM_Mantis).l,a1 - move.w #-$5620,d2 + move.w #$A9E0,d2 jsr (Queue_Kos_Module).l lea (PLC_MonitorsSpikesSprings).l,a1 jsr (Load_PLC_Raw).l @@ -89136,7 +89136,7 @@ loc_4ACFC: lea ObjDat3_4B3C8(pc),a1 jsr (SetUp_ObjAttributes).l move.l #loc_4AD68,(a0) - move.w #-$72E0,$3A(a0) + move.w #$8D20,$3A(a0) move.w (Camera_X_pos).w,d0 addi.w #$140,d0 move.w d0,$10(a0) @@ -97950,7 +97950,7 @@ loc_50444: moveq #$77,d0 jsr (Load_PLC).l lea (ArtKosM_LBZEndBoss).l,a1 - move.w #-$7B60,d2 + move.w #$84A0,d2 jsr (Queue_Kos_Module).l lea Pal_LBZEndBoss(pc),a1 jmp PalLoad_Line1(pc) @@ -103422,7 +103422,7 @@ Find_SonicTails8Way: divu.w d2,d3 tst.w d0 beq.s loc_53A9C - cmpi.w #-$8000,d2 + cmpi.w #$8000,d2 bcs.s loc_53AEC tst.w d0 beq.s loc_53AE8 @@ -103430,7 +103430,7 @@ Find_SonicTails8Way: ; --------------------------------------------------------------------------- loc_53A9C: - cmpi.w #-$8000,d2 + cmpi.w #$8000,d2 bcs.s loc_53AFC tst.w d1 bne.s loc_53AF8 @@ -103443,7 +103443,7 @@ loc_53AAA: divu.w d3,d2 tst.w d1 bne.s loc_53AC2 - cmpi.w #-$8000,d2 + cmpi.w #$8000,d2 bcs.s loc_53AE4 tst.w d0 bne.s loc_53AE8 @@ -103451,7 +103451,7 @@ loc_53AAA: ; --------------------------------------------------------------------------- loc_53AC2: - cmpi.w #-$8000,d2 + cmpi.w #$8000,d2 bcs.s loc_53AF4 tst.w d0 bne.s loc_53AF0 @@ -106067,7 +106067,7 @@ loc_550EA: btst #3,$38(a0) beq.s loc_55104 addq.b #4,d0 - cmpi.b #-$80,d0 + cmpi.b #$80,d0 bcc.s loc_55112 move.b d0,$3C(a0) rts @@ -106075,7 +106075,7 @@ loc_550EA: loc_55104: subq.b #4,d0 - cmpi.b #-$80,d0 + cmpi.b #$80,d0 bls.s loc_55112 move.b d0,$3C(a0) rts @@ -106110,7 +106110,7 @@ loc_5512C: loc_5514A: move.b $41(a0),d1 bsr.w sub_5533C - subi.b #-$80,d0 + subi.b #$80,d0 cmpi.b #$60,d0 bcs.s loc_55168 diff --git a/sonic3k.asm b/sonic3k.asm index 37606324..c0f96d7a 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -26228,7 +26228,7 @@ loc_13B78: move.w d0,$3E(a0) move.b d0,$40(a0) move.b d0,$41(a0) - move.b #-$10,$25(a0) + move.b #$F0,$25(a0) bsr.w Tails_Set_Flying_Animation locret_13BF6: @@ -26247,13 +26247,13 @@ Tails_FlySwim_Unknown: move.b #2,$2A(a0) move.w #0,$10(a0) move.w #0,$14(a0) - move.b #-$10,$25(a0) + move.b #$F0,$25(a0) bsr.w Tails_Set_Flying_Animation rts ; --------------------------------------------------------------------------- loc_13C3A: - move.b #-$10,$25(a0) + move.b #$F0,$25(a0) ori.b #2,$2A(a0) bsr.w Tails_Set_Flying_Animation move.w #0,(Tails_CPU_flight_timer).w @@ -26606,7 +26606,7 @@ locret_13FC0: loc_13FC2: move.b #1,double_jump_flag(a0) - move.b #-$10,$25(a0) + move.b #$F0,$25(a0) move.b #2,$2A(a0) move.w #$100,$18(a0) move.w #0,$1A(a0) @@ -26683,7 +26683,7 @@ loc_140C6: loc_140CE: move.b #1,double_jump_flag(a0) - move.b #-$10,$25(a0) + move.b #$F0,$25(a0) move.b #2,$2A(a0) move.w #0,$18(a0) move.w #0,$1A(a0) @@ -26733,7 +26733,7 @@ loc_14164: btst #1,(Ctrl_1).w beq.s loc_14198 addq.b #1,(Tails_CPU_auto_fly_timer).w - cmpi.b #-$40,(Tails_CPU_auto_fly_timer).w + cmpi.b #$C0,(Tails_CPU_auto_fly_timer).w blo.s loc_141D2 move.b #0,(Tails_CPU_auto_fly_timer).w ori.w #$7070,(Ctrl_2_logical).w @@ -26773,7 +26773,7 @@ loc_141E2: loc_141F2: move.b #1,double_jump_flag(a0) - move.b #-$10,$25(a0) + move.b #$F0,$25(a0) move.b #2,$2A(a0) move.w #0,$18(a0) move.w #0,$1A(a0) @@ -26801,13 +26801,13 @@ locret_14252: ; --------------------------------------------------------------------------- loc_14254: - move.b #-$10,$25(a0) + move.b #$F0,$25(a0) rts ; --------------------------------------------------------------------------- loc_1425C: move.b #1,double_jump_flag(a0) - move.b #-$10,$25(a0) + move.b #$F0,$25(a0) move.b #2,$2A(a0) move.w #$100,$18(a0) move.w #0,$1A(a0) @@ -56429,7 +56429,7 @@ Obj_LBZLoweringGrapple: move.b #4,4(a0) move.b #$10,7(a0) move.w #$80,8(a0) - move.b #-$80,6(a0) + move.b #$80,6(a0) move.w $14(a0),$3C(a0) move.l #Map_LBZLoweringGrapple,$C(a0) move.w #$42EA,$A(a0) @@ -56854,7 +56854,7 @@ word_29508: dc.w $C0, $FFA0 Obj_23_1: move.b #4,4(a0) move.b #$10,7(a0) - move.b #-$80,6(a0) + move.b #$80,6(a0) move.b #0,8(a0) moveq #0,d0 move.b $2C(a0),d0 @@ -58624,7 +58624,7 @@ Map_FBZCorkFloor:include "Levels/FBZ/Misc Object Data/Map - Cork Floor.asm" Obj_AIZFlippingBridge: move.l #Map_AIZFlippingBridge,$C(a0) move.w #$42E9,$A(a0) - move.b #-$80,7(a0) + move.b #$80,7(a0) move.b #4,6(a0) move.b #4,4(a0) move.w #$200,8(a0) @@ -58656,7 +58656,7 @@ loc_2A9B6: move.l #Map_AIZFlippingBridge,$C(a1) move.w #$42E9,$A(a1) move.b #4,4(a1) - move.b #-$80,7(a1) + move.b #$80,7(a1) move.b #$40,6(a1) move.w #$200,8(a1) move.w $10(a0),$10(a1) @@ -60404,7 +60404,7 @@ Obj_31_1: move.w d0,$32(a0) neg.w d0 move.w d0,$30(a0) - move.b #-$80,7(a0) + move.b #$80,7(a0) move.l #loc_2C3CA,(a0) loc_2C3CA: @@ -60513,7 +60513,7 @@ loc_2C4BA: add.w $14(a0),d1 move.w d1,$14(a1) move.b (a2),d0 - addi.b #-$80,d0 + addi.b #$80,d0 move.b d0,$27(a1) addq.b #2,(a2) move.b #$80,$2D(a1) @@ -64771,7 +64771,7 @@ loc_2FF04: loc_2FF14: lea (ArtKosM_HCZGeyserHorz).l,a1 - move.w #-$6000,d2 + move.w #$A000,d2 jsr (Queue_Kos_Module).l move.l #loc_2FF2A,(a0) @@ -64786,7 +64786,7 @@ loc_2FF32: move.w #$300,8(a0) move.l #Map_HCZWaterWall,$C(a0) move.w #$4500,$A(a0) - move.b #-$80,7(a0) + move.b #$80,7(a0) move.b #$20,6(a0) bset #6,4(a0) move.w #1,$16(a0) @@ -65049,7 +65049,7 @@ loc_302B8: loc_302BE: lea (ArtKosM_HCZGeyserVert).l,a1 - move.w #-$6000,d2 + move.w #$A000,d2 jsr (Queue_Kos_Module).l move.b #1,$22(a0) move.b #$81,(Player_1+object_control).w @@ -65545,7 +65545,7 @@ loc_3091A: loc_30926: lea (ArtKosM_HCZLargeFan).l,a1 - move.w #-$6000,d2 + move.w #$A000,d2 jsr (Queue_Kos_Module).l move.l #loc_3093C,(a0) @@ -66520,7 +66520,7 @@ loc_3147E: loc_31480: clr.w $1C(a1) move.b 4(a2),d0 - subi.b #-$80,d0 + subi.b #$80,d0 beq.s loc_314AA bpl.s loc_3149A addi.b #6,d0 @@ -66537,7 +66537,7 @@ loc_3149A: moveq #0,d0 loc_314A2: - addi.b #-$80,d0 + addi.b #$80,d0 move.b d0,4(a2) loc_314AA: @@ -66959,7 +66959,7 @@ loc_31984: subi.w #$18,$14(a1) move.b $1D(a0),d0 lsl.b #4,d0 - addi.b #-$80,d0 + addi.b #$80,d0 jsr (GetSineCosine).l asl.w #3,d1 asl.w #3,d0 @@ -67051,7 +67051,7 @@ loc_31AA0: loc_31AA6: move.b $1D(a0),d0 lsl.b #4,d0 - addi.b #-$80,d0 + addi.b #$80,d0 jsr (GetSineCosine).l asl.w #4,d1 asl.w #4,d0 @@ -67102,7 +67102,7 @@ sub_31B18: move.w (a2)+,d5 subq.w #1,d5 bmi.s locret_31B70 - move.w #-$7700,d4 + move.w #$8900,d4 loc_31B44: moveq #0,d1 @@ -67907,10 +67907,10 @@ loc_323EC: bpl.s loc_3242E add.w d0,$26(a0) move.b $26(a0),d0 - cmpi.b #-$80,d0 + cmpi.b #$80,d0 bhs.s loc_32416 andi.b #$7F,d0 - addi.b #-$80,d0 + addi.b #$80,d0 move.b d0,$26(a0) subq.b #1,$44(a0) andi.b #3,$44(a0) @@ -67918,9 +67918,9 @@ loc_323EC: loc_32416: move.w #$20,d2 move.b $26(a0),d0 - cmpi.b #-$80,d0 + cmpi.b #$80,d0 bhs.s loc_32456 - move.b #-$80,d0 + move.b #$80,d0 move.b d0,$26(a0) bra.s loc_32456 ; --------------------------------------------------------------------------- @@ -67928,10 +67928,10 @@ loc_32416: loc_3242E: add.w d0,$26(a0) move.b $26(a0),d0 - cmpi.b #-$80,d0 + cmpi.b #$80,d0 bhs.s loc_32452 andi.b #$7F,d0 - addi.b #-$80,d0 + addi.b #$80,d0 move.b d0,$26(a0) addq.b #1,$44(a0) andi.b #3,$44(a0) @@ -67996,7 +67996,7 @@ sub_324C0: sub.w $10(a0),d0 bpl.s loc_324E2 neg.w d0 - move.b #-$80,1(a2) + move.b #$80,1(a2) loc_324E2: move.b d0,2(a2) @@ -68257,7 +68257,7 @@ sub_32784: sub.w $10(a0),d0 bpl.s loc_327A6 neg.w d0 - move.b #-$80,1(a2) + move.b #$80,1(a2) loc_327A6: move.b d0,2(a2) @@ -68716,7 +68716,7 @@ Obj_5D_1: andi.b #7,d0 move.b d0,$22(a0) beq.s loc_32C8C - move.b #-$80,6(a0) + move.b #$80,6(a0) loc_32C8C: move.l #loc_32C92,(a0) @@ -69138,7 +69138,7 @@ loc_33102: cmpi.w #$40,d0 bhs.s loc_33174 neg.w d1 - move.b #-$80,1(a4) + move.b #$80,1(a4) loc_33174: add.w $10(a0),d1 @@ -69647,7 +69647,7 @@ loc_33622: loc_33648: bsr.w sub_337D8 - move.b #-$20,$26(a1) + move.b #$E0,$26(a1) move.b #3,$2D(a1) locret_33658: @@ -69694,7 +69694,7 @@ loc_336A0: loc_336D2: bsr.w sub_337D8 - move.b #-$20,$26(a1) + move.b #$E0,$26(a1) move.b #3,$2D(a1) locret_336E2: @@ -69949,7 +69949,7 @@ loc_3394C: loc_33958: bsr.w sub_33C34 - move.b #-$80,(a2) + move.b #$80,(a2) move.b #-$40,$26(a1) move.w $10(a1),d0 sub.w $10(a0),d0 @@ -70053,7 +70053,7 @@ loc_33A6A: moveq #0,d0 move.b (a2),d0 andi.w #$7FFF,$A(a1) - cmpi.b #-$80,d0 + cmpi.b #$80,d0 blo.s loc_33AA4 ori.w #$8000,$A(a1) @@ -70155,7 +70155,7 @@ loc_33BBA: moveq #0,d0 move.b (a2),d0 andi.w #$7FFF,$A(a1) - cmpi.b #-$80,d0 + cmpi.b #$80,d0 blo.s loc_33BF4 ori.w #$8000,$A(a1) @@ -70281,9 +70281,9 @@ loc_33CE6: sub.w $14(a0),d0 move.w d0,(a2) bsr.w sub_33C34 - move.b #-$40,$26(a1) + move.b #$C0,$26(a1) bclr #0,4(a1) - move.b #-$80,5(a2) + move.b #$80,5(a2) move.w $10(a1),d0 sub.w $10(a0),d0 bcs.s loc_33D70 @@ -70385,7 +70385,7 @@ loc_33E3C: loc_33E7A: btst #0,$2A(a0) beq.s loc_33E88 - addi.b #-$80,$26(a1) + addi.b #$80,$26(a1) loc_33E88: bclr #2,$2A(a1) @@ -70447,7 +70447,7 @@ loc_33EEC: move.w d0,$14(a1) moveq #0,d0 andi.w #$7FFF,$A(a1) - cmpi.b #-$80,d2 + cmpi.b #$80,d2 bhs.s loc_33F4A ori.w #$8000,$A(a1) @@ -70614,7 +70614,7 @@ loc_34180: beq.s loc_341A6 move.w #2,-2(a2) move.b #2,$22(a1) - move.w #-$8000,$34(a0) + move.w #$8000,$34(a0) move.w #$100,$36(a0) move.l #loc_341FA,(a0) bra.s loc_341FA @@ -71158,7 +71158,7 @@ Obj_MGZPulley: move.w $A(a0),$A(a1) move.b 4(a0),4(a1) move.b #$60,7(a1) - move.b #-$40,6(a1) + move.b #$C0,6(a1) move.w #$300,8(a1) move.w $10(a0),$12(a1) move.w $10(a0),$10(a1) @@ -72892,9 +72892,9 @@ loc_35B16: loc_35B2E: add.w d1,$36(a0) - cmpi.w #-$8000,$36(a0) + cmpi.w #$8000,$36(a0) blo.s loc_35B40 - move.w #-$8000,$36(a0) + move.w #$8000,$36(a0) loc_35B40: bra.s loc_35B56 @@ -75270,8 +75270,8 @@ Obj_HCZWaterSplash: loc_383DC: ori.b #4,4(a0) move.w #$300,8(a0) - move.b #-$60,7(a0) - move.b #-$80,6(a0) + move.b #$A0,7(a0) + move.b #$80,6(a0) move.b #-1,$31(a0) move.b #0,$2A(a0) bset #6,4(a0) @@ -75535,7 +75535,7 @@ loc_386DE: loc_386F0: move.b #4,4(a0) - move.b #-$80,7(a0) + move.b #$80,7(a0) move.b #8,6(a0) move.w $14(a0),d2 move.w d2,$3C(a0) @@ -91167,7 +91167,7 @@ locret_458B2: Obj_TeleporterBeam: move.l #Obj_TeleporterBeamSpawn,(a0) move.b #$44,4(a0) ; Multisprite mode - move.b #-$80,6(a0) + move.b #$80,6(a0) move.b #$18,7(a0) move.w #$80,8(a0) move.w #$E35C,$A(a0) @@ -96592,7 +96592,7 @@ Obj_PachinkoInvisibleUnknown: move.l #Map_PachinkoInvisibleUnknown,$C(a0) move.w #$E364,$A(a0) ori.b #4,4(a0) - move.b #-$78,7(a0) + move.b #$88,7(a0) move.b #8,6(a0) move.w #$80,8(a0) move.l #loc_4A0C6,(a0) @@ -104983,7 +104983,7 @@ AIZ2BGE_FireRedraw: loc_50110: addq.w #2,a3 - move.w #-$2000,d7 + move.w #$E000,d7 clr.w (Events_bg+$00).w addq.w #4,(Events_routine_bg).w @@ -110314,7 +110314,7 @@ loc_533B8: Obj_FBZBossPillar: move.l #Obj_FBZBossPillarMain,(a0) move.b #$44,4(a0) ; Set up boss pillar object - move.b #-1,6(a0) + move.b #$FF,6(a0) move.b #$20,7(a0) move.w #$300,8(a0) move.w #$C3D5,$A(a0) @@ -113418,7 +113418,7 @@ loc_5535A: move.w #$C,(Special_events_routine).w movem.l d7-a0/a2-a3,-(sp) lea (ArtKosM_MHZEndBossPillar).l,a1 - move.w #-$5000,d2 + move.w #$B000,d2 jsr (Queue_Kos_Module).l movem.l (sp)+,d7-a0/a2-a3 @@ -117221,7 +117221,7 @@ loc_57C28: move.w a1,$3C(a0) move.l #Obj_TeleporterBeamExpand,(a1) move.b #$44,4(a1) - move.b #-$80,6(a1) + move.b #$80,6(a1) move.b #$18,7(a1) move.w #$80,8(a1) move.w #$E35C,$A(a1) @@ -131301,7 +131301,7 @@ loc_632CA: loc_632F8: lea (ArtKosM_MHZKnuxSwitch).l,a1 - move.w #-$5B00,d2 + move.w #$A500,d2 jmp (Queue_Kos_Module).l ; --------------------------------------------------------------------------- @@ -136537,7 +136537,7 @@ loc_674AC: move.w #$40,$2E(a0) move.l #loc_6751A,$34(a0) move.w #8,$40(a0) - move.w #-$16E8,(Events_fg_1).w + move.w #$E918,(Events_fg_1).w move.b #-1,(Player_prev_frame).w lea (Player_1).w,a1 move.b #0,$22(a1) @@ -136760,10 +136760,10 @@ loc_6777A: move.b #$20,7(a0) jsr Swing_Setup1(pc) lea (ArtKosM_AIZIntroPlane).l,a1 - move.w #-$5AE0,d2 + move.w #$A520,d2 jsr (Queue_Kos_Module).l lea (ArtKosM_AIZIntroEmeralds).l,a1 - move.w #-$49E0,d2 + move.w #$B620,d2 jsr (Queue_Kos_Module).l lea ChildObjDat_67A62(pc),a2 jmp (CreateChild1_Normal).l @@ -143668,10 +143668,10 @@ loc_6C200: moveq #$14,d0 jsr (Load_PLC).l lea (ArtKosM_Spiker).l,a1 - move.w #-$5A00,d2 + move.w #$A600,d2 jsr (Queue_Kos_Module).l lea (ArtKosM_Mantis).l,a1 - move.w #-$5620,d2 + move.w #$A9E0,d2 jsr (Queue_Kos_Module).l lea (PLC_MonitorsSpikesSprings).l,a1 jsr (Load_PLC_Raw).l @@ -144799,7 +144799,7 @@ loc_6CFF4: lea ObjDat3_6D7B4(pc),a1 jsr (SetUp_ObjAttributes).l move.l #loc_6D060,(a0) - move.w #-$72E0,$3A(a0) + move.w #$8D20,$3A(a0) move.w (Camera_X_pos).w,d0 addi.w #$140,d0 move.w d0,$10(a0) @@ -154489,7 +154489,7 @@ loc_73906: moveq #$77,d0 jsr (Load_PLC).l lea (ArtKosM_LBZEndBoss).l,a1 - move.w #-$7B60,d2 + move.w #$84A0,d2 jsr (Queue_Kos_Module).l lea Pal_LBZEndBoss(pc),a1 jmp (PalLoad_Line1).l @@ -180447,7 +180447,7 @@ Find_SonicTails8Way: divu.w d2,d3 tst.w d0 beq.s loc_853AE - cmpi.w #-$8000,d2 ; If Y was closer and Sonic is to right of object + cmpi.w #$8000,d2 ; If Y was closer and Sonic is to right of object blo.s loc_853FE tst.w d0 beq.s loc_853FA @@ -180455,7 +180455,7 @@ Find_SonicTails8Way: ; --------------------------------------------------------------------------- loc_853AE: - cmpi.w #-$8000,d2 ; If Y was closer and Sonic is to left of object + cmpi.w #$8000,d2 ; If Y was closer and Sonic is to left of object blo.s loc_8540E tst.w d1 bne.s loc_8540A @@ -180468,7 +180468,7 @@ loc_853BC: divu.w d3,d2 tst.w d1 bne.s loc_853D4 - cmpi.w #-$8000,d2 + cmpi.w #$8000,d2 blo.s loc_853F6 tst.w d0 bne.s loc_853FA @@ -180476,7 +180476,7 @@ loc_853BC: ; --------------------------------------------------------------------------- loc_853D4: - cmpi.w #-$8000,d2 + cmpi.w #$8000,d2 blo.s loc_85406 tst.w d0 bne.s loc_85402 @@ -184056,7 +184056,7 @@ loc_872EE: btst #3,$38(a0) beq.s loc_87308 addq.b #4,d0 - cmpi.b #-$80,d0 + cmpi.b #$80,d0 bhs.s loc_87316 move.b d0,$3C(a0) rts @@ -184064,7 +184064,7 @@ loc_872EE: loc_87308: subq.b #4,d0 - cmpi.b #-$80,d0 + cmpi.b #$80,d0 bls.s loc_87316 move.b d0,$3C(a0) rts @@ -184099,7 +184099,7 @@ loc_87330: loc_8734E: move.b $41(a0),d1 bsr.w sub_87540 - subi.b #-$80,d0 + subi.b #$80,d0 cmpi.b #$60,d0 blo.s loc_8736C From 6a7044a2cc8246a3fd2743e1a66acb9cd43e8546 Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Tue, 9 Nov 2021 21:05:09 +0000 Subject: [PATCH 38/72] Finally fix AIZ1 water BG deformation after breaking it in 127fb71 --- Lockon S3/Screen Events.asm | 79 +---- s3.asm | 8 +- sonic3k.asm | 558 +++--------------------------------- 3 files changed, 52 insertions(+), 593 deletions(-) diff --git a/Lockon S3/Screen Events.asm b/Lockon S3/Screen Events.asm index 55b873d4..f85594b8 100644 --- a/Lockon S3/Screen Events.asm +++ b/Lockon S3/Screen Events.asm @@ -1,32 +1,3 @@ - -AIZ1_WaterFGDeformDelta: - dc.w 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0 - dc.w 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 - dc.w -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0 - dc.w 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 - dc.w 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0 - dc.w 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 - dc.w -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0 - dc.w 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 - dc.w 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0 - dc.w 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 - dc.w -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0 - dc.w 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 - dc.w 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0 - dc.w 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 - dc.w -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0 - dc.w 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 - dc.w 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0 - dc.w 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 -AIZ1_WaterBGDeformDelta: - dc.w 0, 0, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 1, 1, 1, 1 - dc.w 1, 0, 0, 0, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 1, 1 - dc.w 1, 1, 1, 0, 0, 0, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1 - dc.w 1, 1, 1, 1, 1, 0, -1, -2, -2, -1, 0, 2, 2, 2, 2, 0 - dc.w 0, 0, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 1, 1, 1, 1 - dc.w 1, 0, 0, 0, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 1, 1 -; --------------------------------------------------------------------------- - Comp_ScreenInit: jsr (Update_CameraPositionP2).l move.w (Camera_X_pos_copy).w,d0 @@ -209,7 +180,7 @@ ALZ_Deformation: move.w d0,(_unkEE74).w addq.w #3,(Events_bg+$00).w addi.l #$1000,(Events_bg+$02).w - lea ALZ_AIZ2_BGDeformDelta(pc),a4 + lea (AIZ2_ALZ_BGDeformDelta).l,a4 lea (HScroll_table).w,a1 move.w (Events_fg_1).w,d0 bsr.s sub_23A81E @@ -677,7 +648,7 @@ loc_23B0EE: jsr (ApplyDeformation3).l move.l a1,-(sp) lea (HScroll_table+$040).w,a1 - lea AIZ1_WaterFGDeformDelta(pc),a6 + lea (AIZ1_WaterFGDeformDelta).l,a6 move.w (Water_level).w,d0 subi.w #$DE,d1 neg.w d1 @@ -693,7 +664,7 @@ loc_23B0EE: lea (HScroll_table+$040).w,a2 lea AIZ1_DeformArray(pc),a4 lea (HScroll_table+$008).w,a5 - lea AIZ1_WaterBGDeformDelta(pc),a6 + lea (AIZ1_WaterBGDeformDelta).l,a6 move.w (Water_level).w,d0 sub.w (Camera_Y_pos_copy).w,d0 add.w (Camera_Y_pos_BG_copy).w,d0 @@ -811,7 +782,7 @@ locret_23B67E: AIZ2_ApplyDeform: lea (HScroll_table).w,a1 - lea AIZ2_FGDeformDelta(pc),a6 + lea (AIZ2_SOZ1_LRZ3_FGDeformDelta).l,a6 move.w (Camera_Y_pos_copy).w,d0 move.w #$DF,d1 move.w (Level_frame_counter).w,d2 @@ -838,7 +809,7 @@ AIZ2_ApplyDeform: add.w d0,d2 loc_23B6CA: - lea AIZ1_WaterFGDeformDelta(pc),a6 + lea (AIZ1_WaterFGDeformDelta).l,a6 moveq #$7E,d3 loc_23B6D0: @@ -849,7 +820,7 @@ loc_23B6D0: lea (HScroll_table).w,a2 lea AIZ2_BGDeformArray(pc),a4 lea (HScroll_table+$1C0).w,a5 - lea ALZ_AIZ2_BGDeformDelta(pc),a6 + lea (AIZ2_ALZ_BGDeformDelta).l,a6 move.w (Camera_Y_pos_BG_copy).w,d0 move.w #$DF,d1 move.w (Level_frame_counter).w,d2 @@ -880,7 +851,7 @@ loc_23B6D0: add.w d0,d2 loc_23B73E: - lea AIZ1_WaterBGDeformDelta(pc),a6 + lea (AIZ1_WaterBGDeformDelta).l,a6 moveq #$7E,d3 loc_23B744: @@ -920,40 +891,6 @@ AIZ2_BGDeformMake: dc.b 3, 4, 8, $1C, $20 dc.b 1, 6, $1E dc.b $FF, 0 -AIZ2_FGDeformDelta: - dc.w 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 - dc.w 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0 - dc.w 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 - dc.w 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0 - dc.w 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 - dc.w 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0 - dc.w 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 - dc.w 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0 - dc.w 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 - dc.w 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0 - dc.w 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 - dc.w 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0 - dc.w 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 - dc.w 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0 - dc.w 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 - dc.w 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0 -ALZ_AIZ2_BGDeformDelta: - dc.w -2, 1, 2, 2, -1, 2, 2, 1, 2, -1, -2, -2, -2, 1, -1, -1 - dc.w -1, 0, -2, 0, 0, 0, -2, 0, -2, 2, 0, -2, 2, 2, -1, -2 - dc.w -2, 1, 2, 2, -1, 2, 2, 1, 2, -1, -2, -2, -2, 1, -1, -1 - dc.w -1, 0, -2, 0, 0, 0, -2, 0, -2, 2, 0, -2, 2, 2, -1, -2 - dc.w -2, 1, 2, 2, -1, 2, 2, 1, 2, -1, -2, -2, -2, 1, -1, -1 - dc.w -1, 0, -2, 0, 0, 0, -2, 0, -2, 2, 0, -2, 2, 2, -1, -2 - dc.w -2, 1, 2, 2, -1, 2, 2, 1, 2, -1, -2, -2, -2, 1, -1, -1 - dc.w -1, 0, -2, 0, 0, 0, -2, 0, -2, 2, 0, -2, 2, 2, -1, -2 - dc.w -2, 1, 2, 2, -1, 2, 2, 1, 2, -1, -2, -2, -2, 1, -1, -1 - dc.w -1, 0, -2, 0, 0, 0, -2, 0, -2, 2, 0, -2, 2, 2, -1, -2 - dc.w -2, 1, 2, 2, -1, 2, 2, 1, 2, -1, -2, -2, -2, 1, -1, -1 - dc.w -1, 0, -2, 0, 0, 0, -2, 0, -2, 2, 0, -2, 2, 2, -1, -2 - dc.w -2, 1, 2, 2, -1, 2, 2, 1, 2, -1, -2, -2, -2, 1, -1, -1 - dc.w -1, 0, -2, 0, 0, 0, -2, 0, -2, 2, 0, -2, 2, 2, -1, -2 - dc.w -2, 1, 2, 2, -1, 2, 2, 1, 2, -1, -2, -2, -2, 1, -1, -1 - dc.w -1, 0, -2, 0, 0, 0, -2, 0, -2, 2, 0, -2, 2, 2, -1, -2 Pal_AIZBattleship: binclude "Levels/AIZ/Palettes/Battleship.bin" even @@ -1346,7 +1283,7 @@ loc_23E0E8: move.w (Level_frame_counter).w,d1 lsr.w #2,d1 andi.w #$3E,d1 - lea ALZ_AIZ2_BGDeformDelta(pc),a5 + lea (AIZ2_ALZ_BGDeformDelta).l,a5 adda.w d1,a5 moveq #7,d1 diff --git a/s3.asm b/s3.asm index 153a62e0..2cf156d4 100644 --- a/s3.asm +++ b/s3.asm @@ -69296,7 +69296,7 @@ ALZ_Deformation: move.w d0,(_unkEE74).w addq.w #3,(Events_bg+$00).w addi.l #$1000,(Events_bg+$02).w - lea ALZ_AIZ2_BGDeformDelta(pc),a4 + lea AIZ2_ALZ_BGDeformDelta(pc),a4 lea (HScroll_table).w,a1 move.w (Events_fg_1).w,d0 bsr.s sub_3A81E @@ -70770,7 +70770,7 @@ loc_3B6D0: lea (HScroll_table).w,a2 lea AIZ2_BGDeformArray(pc),a4 lea (HScroll_table+$1C0).w,a5 - lea ALZ_AIZ2_BGDeformDelta(pc),a6 + lea AIZ2_ALZ_BGDeformDelta(pc),a6 move.w (Camera_Y_pos_BG_copy).w,d0 move.w #$DF,d1 move.w (Level_frame_counter).w,d2 @@ -71279,7 +71279,7 @@ AIZ2_FGDeformDelta: dc.w 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0 dc.w 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 dc.w 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0 -ALZ_AIZ2_BGDeformDelta: +AIZ2_ALZ_BGDeformDelta: dc.w -2, 1, 2, 2, -1, 2, 2, 1, 2, -1, -2, -2, -2, 1, -1, -1 dc.w -1, 0, -2, 0, 0, 0, -2, 0, -2, 2, 0, -2, 2, 2, -1, -2 dc.w -2, 1, 2, 2, -1, 2, 2, 1, 2, -1, -2, -2, -2, 1, -1, -1 @@ -74418,7 +74418,7 @@ loc_3E0E8: move.w (Level_frame_counter).w,d1 lsr.w #2,d1 andi.w #$3E,d1 - lea ALZ_AIZ2_BGDeformDelta(pc),a5 + lea AIZ2_ALZ_BGDeformDelta(pc),a5 adda.w d1,a5 moveq #7,d1 diff --git a/sonic3k.asm b/sonic3k.asm index c0f96d7a..46bbc86e 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -104173,7 +104173,7 @@ ScreenShakeArray2: dc.b 2, 0, 3, 2, 2, 3, 2, 2, 1, 3, 0, 0, 1, 0, 1, 3 dc.b 1, 2, 1, 3, 1, 2, 2, 1, 2, 3, 1, 2, 1, 2, 0, 0 dc.b 2, 0, 3, 2, 2, 3, 2, 2, 1, 3, 0, 0, 1, 0, 1, 3 - +AIZ1_WaterFGDeformDelta: dc.w 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0 dc.w 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 dc.w -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0 @@ -104192,7 +104192,7 @@ ScreenShakeArray2: dc.w 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 dc.w 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0 dc.w 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 - +AIZ1_WaterBGDeformDelta: dc.w 0, 0, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 1, 1, 1, 1 dc.w 1, 0, 0, 0, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 1, 1 dc.w 1, 1, 1, 0, 0, 0, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1 @@ -105573,518 +105573,40 @@ loc_5075E: locret_5077C: rts ; --------------------------------------------------------------------------- -word_5077E: dc.w 0 - dc.w 0 - dc.w 1 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w 1 - dc.w 1 - dc.w 0 - dc.w 0 - dc.w $FFFE - dc.w 1 - dc.w 2 - dc.w 2 - dc.w $FFFF - dc.w 2 - dc.w 2 - dc.w 1 - dc.w 2 - dc.w $FFFF - dc.w $FFFE - dc.w $FFFE - dc.w $FFFE - dc.w 1 - dc.w $FFFF - dc.w $FFFF - dc.w $FFFF - dc.w 0 - dc.w $FFFE - dc.w 0 - dc.w 0 - dc.w 0 - dc.w $FFFE - dc.w 0 - dc.w $FFFE - dc.w 2 - dc.w 0 - dc.w $FFFE - dc.w 2 - dc.w 2 - dc.w $FFFF - dc.w $FFFE - dc.w $FFFE - dc.w 1 - dc.w 2 - dc.w 2 - dc.w $FFFF - dc.w 2 - dc.w 2 - dc.w 1 - dc.w 2 - dc.w $FFFF - dc.w $FFFE - dc.w $FFFE - dc.w $FFFE - dc.w 1 - dc.w $FFFF - dc.w $FFFF - dc.w $FFFF - dc.w 0 - dc.w $FFFE - dc.w 0 - dc.w 0 - dc.w 0 - dc.w $FFFE - dc.w 0 - dc.w $FFFE - dc.w 2 - dc.w 0 - dc.w $FFFE - dc.w 2 - dc.w 2 - dc.w $FFFF - dc.w $FFFE - dc.w $FFFE - dc.w 1 - dc.w 2 - dc.w 2 - dc.w $FFFF - dc.w 2 - dc.w 2 - dc.w 1 - dc.w 2 - dc.w $FFFF - dc.w $FFFE - dc.w $FFFE - dc.w $FFFE - dc.w 1 - dc.w $FFFF - dc.w $FFFF - dc.w $FFFF - dc.w 0 - dc.w $FFFE - dc.w 0 - dc.w 0 - dc.w 0 - dc.w $FFFE - dc.w 0 - dc.w $FFFE - dc.w 2 - dc.w 0 - dc.w $FFFE - dc.w 2 - dc.w 2 - dc.w $FFFF - dc.w $FFFE - dc.w $FFFE - dc.w 1 - dc.w 2 - dc.w 2 - dc.w $FFFF - dc.w 2 - dc.w 2 - dc.w 1 - dc.w 2 - dc.w $FFFF - dc.w $FFFE - dc.w $FFFE - dc.w $FFFE - dc.w 1 - dc.w $FFFF - dc.w $FFFF - dc.w $FFFF - dc.w 0 - dc.w $FFFE - dc.w 0 - dc.w 0 - dc.w 0 - dc.w $FFFE - dc.w 0 - dc.w $FFFE - dc.w 2 - dc.w 0 - dc.w $FFFE - dc.w 2 - dc.w 2 - dc.w $FFFF - dc.w $FFFE - dc.w $FFFE - dc.w 1 - dc.w 2 - dc.w 2 - dc.w $FFFF - dc.w 2 - dc.w 2 - dc.w 1 - dc.w 2 - dc.w $FFFF - dc.w $FFFE - dc.w $FFFE - dc.w $FFFE - dc.w 1 - dc.w $FFFF - dc.w $FFFF - dc.w $FFFF - dc.w 0 - dc.w $FFFE - dc.w 0 - dc.w 0 - dc.w 0 - dc.w $FFFE - dc.w 0 - dc.w $FFFE - dc.w 2 - dc.w 0 - dc.w $FFFE - dc.w 2 - dc.w 2 - dc.w $FFFF - dc.w $FFFE - dc.w $FFFE - dc.w 1 - dc.w 2 - dc.w 2 - dc.w $FFFF - dc.w 2 - dc.w 2 - dc.w 1 - dc.w 2 - dc.w $FFFF - dc.w $FFFE - dc.w $FFFE - dc.w $FFFE - dc.w 1 - dc.w $FFFF - dc.w $FFFF - dc.w $FFFF - dc.w 0 - dc.w $FFFE - dc.w 0 - dc.w 0 - dc.w 0 - dc.w $FFFE - dc.w 0 - dc.w $FFFE - dc.w 2 - dc.w 0 - dc.w $FFFE - dc.w 2 - dc.w 2 - dc.w $FFFF - dc.w $FFFE - dc.w $FFFE - dc.w 1 - dc.w 2 - dc.w 2 - dc.w $FFFF - dc.w 2 - dc.w 2 - dc.w 1 - dc.w 2 - dc.w $FFFF - dc.w $FFFE - dc.w $FFFE - dc.w $FFFE - dc.w 1 - dc.w $FFFF - dc.w $FFFF - dc.w $FFFF - dc.w 0 - dc.w $FFFE - dc.w 0 - dc.w 0 - dc.w 0 - dc.w $FFFE - dc.w 0 - dc.w $FFFE - dc.w 2 - dc.w 0 - dc.w $FFFE - dc.w 2 - dc.w 2 - dc.w $FFFF - dc.w $FFFE - dc.w $FFFE - dc.w 1 - dc.w 2 - dc.w 2 - dc.w $FFFF - dc.w 2 - dc.w 2 - dc.w 1 - dc.w 2 - dc.w $FFFF - dc.w $FFFE - dc.w $FFFE - dc.w $FFFE - dc.w 1 - dc.w $FFFF - dc.w $FFFF - dc.w $FFFF - dc.w 0 - dc.w $FFFE - dc.w 0 - dc.w 0 - dc.w 0 - dc.w $FFFE - dc.w 0 - dc.w $FFFE - dc.w 2 - dc.w 0 - dc.w $FFFE - dc.w 2 - dc.w 2 - dc.w $FFFF - dc.w $FFFE +AIZ2_SOZ1_LRZ3_FGDeformDelta: + dc.w 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 + dc.w 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0 + dc.w 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 + dc.w 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0 + dc.w 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 + dc.w 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0 + dc.w 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 + dc.w 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0 + dc.w 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 + dc.w 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0 + dc.w 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 + dc.w 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0 + dc.w 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 + dc.w 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0 + dc.w 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 + dc.w 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0 +AIZ2_ALZ_BGDeformDelta: + dc.w -2, 1, 2, 2, -1, 2, 2, 1, 2, -1, -2, -2, -2, 1, -1, -1 + dc.w -1, 0, -2, 0, 0, 0, -2, 0, -2, 2, 0, -2, 2, 2, -1, -2 + dc.w -2, 1, 2, 2, -1, 2, 2, 1, 2, -1, -2, -2, -2, 1, -1, -1 + dc.w -1, 0, -2, 0, 0, 0, -2, 0, -2, 2, 0, -2, 2, 2, -1, -2 + dc.w -2, 1, 2, 2, -1, 2, 2, 1, 2, -1, -2, -2, -2, 1, -1, -1 + dc.w -1, 0, -2, 0, 0, 0, -2, 0, -2, 2, 0, -2, 2, 2, -1, -2 + dc.w -2, 1, 2, 2, -1, 2, 2, 1, 2, -1, -2, -2, -2, 1, -1, -1 + dc.w -1, 0, -2, 0, 0, 0, -2, 0, -2, 2, 0, -2, 2, 2, -1, -2 + dc.w -2, 1, 2, 2, -1, 2, 2, 1, 2, -1, -2, -2, -2, 1, -1, -1 + dc.w -1, 0, -2, 0, 0, 0, -2, 0, -2, 2, 0, -2, 2, 2, -1, -2 + dc.w -2, 1, 2, 2, -1, 2, 2, 1, 2, -1, -2, -2, -2, 1, -1, -1 + dc.w -1, 0, -2, 0, 0, 0, -2, 0, -2, 2, 0, -2, 2, 2, -1, -2 + dc.w -2, 1, 2, 2, -1, 2, 2, 1, 2, -1, -2, -2, -2, 1, -1, -1 + dc.w -1, 0, -2, 0, 0, 0, -2, 0, -2, 2, 0, -2, 2, 2, -1, -2 + dc.w -2, 1, 2, 2, -1, 2, 2, 1, 2, -1, -2, -2, -2, 1, -1, -1 + dc.w -1, 0, -2, 0, 0, 0, -2, 0, -2, 2, 0, -2, 2, 2, -1, -2 ; --------------------------------------------------------------------------- HCZ1_ScreenInit: @@ -114315,7 +113837,7 @@ loc_55DD0: loc_55DF2: lea (HScroll_table+$010).w,a1 - lea word_5077E(pc),a6 + lea AIZ2_SOZ1_LRZ3_FGDeformDelta(pc),a6 move.w (Camera_Y_pos_copy).w,d0 move.w #$DF,d1 move.w (Level_frame_counter).w,d2 @@ -114331,7 +113853,7 @@ loc_55DF2: lea (HScroll_table+$010).w,a2 lea word_560DC(pc),a4 lea (HScroll_table).w,a5 - lea word_5077E(pc),a6 + lea AIZ2_SOZ1_LRZ3_FGDeformDelta(pc),a6 move.w (Camera_Y_pos_BG_copy).w,d0 move.w #$DF,d1 move.w (Level_frame_counter).w,d2 @@ -114347,7 +113869,7 @@ loc_55DF2: sub_55E4C: lea (H_scroll_buffer).w,a1 - lea word_5077E(pc),a6 + lea AIZ2_SOZ1_LRZ3_FGDeformDelta(pc),a6 move.w (Camera_Y_pos_copy).w,d0 move.w (Level_frame_counter).w,d1 asr.w #1,d1 @@ -120380,7 +119902,7 @@ loc_59DF2: loc_59DF8: lea (H_scroll_buffer).w,a1 - lea (word_5077E).l,a5 + lea (AIZ2_SOZ1_LRZ3_FGDeformDelta).l,a5 lea (a5),a6 move.w (Camera_Y_pos_copy).w,d0 move.w (Level_frame_counter).w,d1 From 02aed468889f1e3002755034702fa92b0239e463 Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Sun, 26 Dec 2021 01:01:31 +0000 Subject: [PATCH 39/72] Did we really need to repeat this stupid message everywhere? Uh... no --- s3.constants.asm | 72 +++++++++++++++++++------------------- sonic3k.constants.asm | 80 +++++++++++++++++++++---------------------- 2 files changed, 76 insertions(+), 76 deletions(-) diff --git a/s3.constants.asm b/s3.constants.asm index 4535850c..2f35222e 100644 --- a/s3.constants.asm +++ b/s3.constants.asm @@ -1,13 +1,13 @@ phase Level_layout_header+$400 -SStage_extra_sprites := * ; some extra sprite info for special stages - ds.b $70 ; Sonic & Knuckles has a different address... So uh... Yes +SStage_extra_sprites := * ; Sonic & Knuckles uses a different address + ds.b $70 ; some extra sprite info for special stages ds.b $390 ; unused -SStage_collision_response_list := * ; some extra sprite info for special stages - ds.b $100 ; unused -SStage_unkA500 := * ; unknown special stage array - ds.b $100 ; Sonic & Knuckles has a different address... So uh... Yes -SStage_unkA600 := * ; unknown special stage array - ds.b $100 ; Sonic & Knuckles has a different address... So uh... Yes +SStage_collision_response_list := * ; Sonic & Knuckles uses a different address + ds.b $100 ; some extra sprite info for special stages +SStage_unkA500 := * ; Sonic & Knuckles uses a different address + ds.b $100 ; unknown special stage array +SStage_unkA600 := * ; Sonic & Knuckles uses a different address + ds.b $100 ; unknown special stage array dephase phase Stat_table+$12 @@ -39,22 +39,22 @@ _unkFF98 = _tempFF98 ; word ; unused dephase phase Demo_mode_flag -Level_select_flag := * - ds.b 1 ; Sonic & Knuckles has a different address... So uh... Yes -Slow_motion_flag := * - ds.b 1 ; Sonic & Knuckles has a different address... So uh... Yes -Debug_cheat_flag := * ; set if the debug cheat's been entered - ds.w 1 ; Sonic & Knuckles has a different address... So uh... Yes -Level_select_cheat_counter := * ; progress entering level select cheat, unused - ds.w 1 ; Sonic & Knuckles has a different address... So uh... Yes -Debug_mode_cheat_counter := * ; progress entering debug mode cheat, unused - ds.w 1 ; Sonic & Knuckles has a different address... So uh... Yes -Competition_mode := * - ds.w 1 ; Sonic & Knuckles has a different address... So uh... Yes -P1_character := * ; 0 := Sonic, 1 := Tails, 2 := Knuckles - ds.b 1 ; Sonic & Knuckles has a different address... So uh... Yes -P2_character := * - ds.b 1 ; Sonic & Knuckles has a different address... So uh... Yes +Level_select_flag := * ; Sonic & Knuckles uses a different address + ds.b 1 +Slow_motion_flag := * ; Sonic & Knuckles uses a different address + ds.b 1 +Debug_cheat_flag := * ; Sonic & Knuckles uses a different address + ds.w 1 ; set if the debug cheat's been entered +Level_select_cheat_counter := * ; Sonic & Knuckles uses a different address + ds.w 1 ; progress entering level select cheat, unused +Debug_mode_cheat_counter := * ; Sonic & Knuckles uses a different address + ds.w 1 ; progress entering debug mode cheat, unused +Competition_mode := * ; Sonic & Knuckles uses a different address + ds.w 1 +P1_character := * ; Sonic & Knuckles uses a different address + ds.b 1 ; 0 = Sonic, 1 = Tails, 2 = Knuckles +P2_character := * ; Sonic & Knuckles uses a different address + ds.b 1 _dbgFFDC ds.b 1 ; seems like a leftover constant. Existed in Sonic 1 and Sonic 2 as well _dbgFFDD ds.b 1 ; seems like a leftover constant. Existed in Sonic 1 and Sonic 2 as well _dbgFFDE ds.b 1 ; seems like a leftover constant. Existed in Sonic 1 and Sonic 2 as well @@ -62,20 +62,20 @@ _dbgFFDF ds.b 1 ; seems like a leftover constant. Existed in Sonic 1 and Son dephase phase V_int_jump -Demo_mode_flag := * - ds.w 1 ; Sonic & Knuckles has a different address... So uh... Yes -Next_demo_number := * - ds.w 1 ; Sonic & Knuckles has a different address... So uh... Yes +Demo_mode_flag := * ; Sonic & Knuckles uses a different address + ds.w 1 +Next_demo_number := * ; Sonic & Knuckles uses a different address + ds.w 1 Ending_demo_number ds.w 1 ; zone for the ending demos, unused -V_blank_cycles := * ; the number of cycles between V-blanks - ds.w 1 ; Sonic & Knuckles has a different address... So uh... Yes -Graphics_flags := * ; bit 7 set := English system, bit 6 set := PAL system - ds.b 1 ; Sonic & Knuckles has a different address... So uh... Yes +V_blank_cycles := * ; Sonic & Knuckles uses a different address + ds.w 1 ; the number of cycles between V-blanks +Graphics_flags := * ; Sonic & Knuckles uses a different address + ds.b 1 ; bit 7 set = English system, bit 6 set = PAL system ds.b 1 ; unused -Debug_mode_flag := * - ds.w 1 ; Sonic 3 has a different address... So uh... Yes -Checksum_string := * ; set to 'init' once the checksum routine has run - ds.l 1 ; Sonic & Knuckles has a different address... So uh... Yes +Debug_mode_flag := * ; Sonic & Knuckles uses a different address + ds.w 1 +Checksum_string := * ; Sonic & Knuckles uses a different address + ds.l 1 ; set to 'init' once the checksum routine has run dephase !org 0 diff --git a/sonic3k.constants.asm b/sonic3k.constants.asm index 902de5d9..84e49017 100644 --- a/sonic3k.constants.asm +++ b/sonic3k.constants.asm @@ -289,13 +289,13 @@ Pos_table_P2 ds.b $100 ; used by Player 2 in competition mode Pos_table ds.b $100 ; Competition_saved_data ds.b $54 ; saved data from Competition Mode ds.b $C ; unused -Save_pointer := * ; pointer to the active save slot in 1 player mode - ds.l 1 ; Sonic 3 has a different address... So uh... Yes +Save_pointer := * ; S3 uses a different address + ds.l 1 ; pointer to the active save slot in 1 player mode ds.w 1 ; unused Emerald_flicker_flag ds.w 1 ; controls the emerald flicker in save screen and special stage results. ds.b $44 ; unused -Saved_data := * ; saved data from 1 player mode - ds.b $54 ; Sonic 3 has a different address... So uh... Yes +Saved_data := * ; S3 uses a different address + ds.b $54 ; saved data from 1 player mode Ring_status_table ds.b $400 ; 1 word per ring Object_respawn_table ds.b $300 ; 1 byte per object, every object in the level gets an entry @@ -906,47 +906,47 @@ Next_extra_life_score_P2 ds.l 1 ; left over from Sonic 2 ds.w 1 ; unused Debug_P1_mappings ds.l 1 ; player 1 mappings while in debug mode Debug_P2_mappings ds.w 1 ; long! ; player 2 mappings while in debug mode -Demo_mode_flag := * - ds.w 1 ; Sonic 3 has a different address... So uh... Yes -Next_demo_number := * - ds.w 1 ; Sonic 3 has a different address... So uh... Yes -Blue_spheres_stage_flag := * ; set if a Blue Sphere special stage is being run - ds.b 1 ; Sonic 3 has a different address... So uh... Yes +Demo_mode_flag := * ; S3 uses a different address + ds.w 1 +Next_demo_number := * ; S3 uses a different address + ds.w 1 +Blue_spheres_stage_flag := * ; S3 uses a different address + ds.b 1 ; set if a Blue Sphere special stage is being run ds.b 1 ; unused -V_blank_cycles := * ; the number of cycles between V-blanks - ds.w 1 ; Sonic 3 has a different address... So uh... Yes -Graphics_flags := * ; bit 7 set := English system, bit 6 set := PAL system - ds.b 1 ; Sonic 3 has a different address... So uh... Yes +V_blank_cycles := * ; S3 uses a different address + ds.w 1 ; the number of cycles between V-blanks +Graphics_flags := * ; S3 uses a different address + ds.b 1 ; bit 7 set = English system, bit 6 set = PAL system ds.b 1 ; unused -Debug_mode_flag := * - ds.w 1 ; Sonic 3 has a different address... So uh... Yes +Debug_mode_flag := * ; S3 uses a different address + ds.w 1 ds.l 1 ; unused -Level_select_flag := * - ds.b 1 ; Sonic 3 has a different address... So uh... Yes -Slow_motion_flag := * - ds.b 1 ; Sonic 3 has a different address... So uh... Yes -Debug_cheat_flag := * ; set if the debug cheat's been entered - ds.w 1 ; Sonic 3 has a different address... So uh... Yes -Level_select_cheat_counter := * ; progress entering level select cheat, unused - ds.w 1 ; Sonic 3 has a different address... So uh... Yes -Debug_mode_cheat_counter := * ; progress entering debug mode cheat, unused - ds.w 1 ; Sonic 3 has a different address... So uh... Yes -Competition_mode := * - ds.w 1 ; Sonic 3 has a different address... So uh... Yes -P1_character := * ; 0 := Sonic, 1 := Tails, 2 := Knuckles - ds.b 1 ; Sonic 3 has a different address... So uh... Yes -P2_character := * - ds.b 1 ; Sonic 3 has a different address... So uh... Yes +Level_select_flag := * ; S3 uses a different address + ds.b 1 +Slow_motion_flag := * ; S3 uses a different address + ds.b 1 +Debug_cheat_flag := * ; S3 uses a different address + ds.w 1 ; set if the debug cheat's been entered +Level_select_cheat_counter := * ; S3 uses a different address + ds.w 1 ; progress entering level select cheat, unused +Debug_mode_cheat_counter := * ; S3 uses a different address + ds.w 1 ; progress entering debug mode cheat, unused +Competition_mode := * ; S3 uses a different address + ds.w 1 +P1_character := * ; S3 uses a different address + ds.b 1 ; 0 := Sonic, 1 := Tails, 2 := Knuckles +P2_character := * ; S3 uses a different address + ds.b 1 ds.l 1 ; unused -V_int_jump := * ; contains an instruction to jump to the V-int handler - ds.b 6 ; Sonic 3 has a different address... So uh... Yes +V_int_jump := * ; S3 uses a different address + ds.b 6 ; contains an instruction to jump to the V-int handler V_int_addr := V_int_jump+2 ; long -H_int_jump := * ; contains an instruction to jump to the H-int handler - ds.b 6 ; Sonic 3 has a different address... So uh... Yes +H_int_jump := * ; S3 uses a different address + ds.b 6 ; contains an instruction to jump to the H-int handler H_int_addr := H_int_jump+2 ; long -Checksum_string := * ; set to 'SM&K' once the checksum routine has run - ds.l 1 ; Sonic 3 has a different address... So uh... Yes +Checksum_string := * ; S3 uses a different address + ds.l 1 ; set to 'SM&K' once the checksum routine has run .check = (*)&$FFFFFF if (.check>0)&(.check<$FF0000) @@ -997,8 +997,8 @@ Special_stage_emerald_timer ds.b 1 ; counts down when the emerald appears, whe Special_stage_interact ds.w 1 ; address of the last bumper touched, or the emerald at the end of the stage Special_stage_started ds.b 1 ; set when the player begins moving at the start of the stage ds.b $2F ; unused -SStage_extra_sprites := * ; some extra sprite info for special stages - ds.b $70 ; Sonic 3 has a different address... So uh... Yes +SStage_extra_sprites := * ; S3 uses a different address + ds.b $70 ; some extra sprite info for special stages dephase ; --------------------------------------------------------------------------- ; Art tile stuff From f84877c691652e04f7ae5255e665d5a56e6a1af0 Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Mon, 27 Dec 2021 00:51:08 +0000 Subject: [PATCH 40/72] Fix up a bunch of constants --- Sound/Z80 Sound Driver.asm | 22 +- s3.asm | 236 ++++++++++----------- s3.constants.asm | 3 +- sonic3k.asm | 424 ++++++++++++++++++------------------- sonic3k.constants.asm | 62 +++--- 5 files changed, 375 insertions(+), 372 deletions(-) diff --git a/Sound/Z80 Sound Driver.asm b/Sound/Z80 Sound Driver.asm index fc09f850..f1433abd 100644 --- a/Sound/Z80 Sound Driver.asm +++ b/Sound/Z80 Sound Driver.asm @@ -888,12 +888,12 @@ zUpdateMusic: call zDoMusicFadeOut ; Check if music should be faded out and fade if needed call zDoMusicFadeIn ; Check if music should be faded in and fade if needed ld a, (zFadeToPrevFlag) ; Get fade-to-prev flag - cp mus_ExtraLife-Mus__First ; Is it still 1-Up? + cp mus_ExtraLife-mus__First ; Is it still 1-Up? jr nz, .check_fade_in ; Branch if not ld a, (zMusicNumber) ; Get next music to play cp mus_ExtraLife ; Is it another 1-Up? jr z, .clr_queue ; Branch if yes - cp Mus__End-Mus__First ; Is it music (except credits song)? + cp mus__End-mus__First ; Is it music (except credits song)? jr c, .clr_sfx ; Branch if not .clr_queue: @@ -1860,13 +1860,13 @@ zPlaySoundByIndex: jp z, zPlayMusicCredits ; Branch if yes cp mus_SEGA ; Is this the SEGA sound? jp z, zPlaySegaSound ; Branch if yes - cp Mus__End ; Is this a music? + cp mus__End ; Is this a music? jp c, zPlayMusic ; Branch if yes cp sfx__End ; Is this a sound effect? jp c, zPlaySound_CheckRing ; Branch if yes cp mus__FirstCmd ; Is it before the first fade effect? jp c, zStopAllSound ; Branch if yes - cp Mus__EndCmd ; Is this after the last fade effect? + cp mus__EndCmd ; Is this after the last fade effect? jp nc, zStopAllSound ; Branch if yes sub mus__FirstCmd ; If none of the checks passed, do fade effects. ld hl, zFadeEffects ; hl = switch table pointer @@ -1929,10 +1929,10 @@ zPlayMusicCredits: ;loc_558 zPlayMusic: - sub Mus__First ; Remap index from 1h-32h to 0h-31h (see also credits music, above) + sub mus__First ; Remap index from 1h-32h to 0h-31h (see also credits music, above) ret m ; Return if negative (id = 0) push af ; Save af - cp mus_ExtraLife-Mus__First ; Is it the 1-up music? + cp mus_ExtraLife-mus__First ; Is it the 1-up music? jp nz, zPlayMusic_DoFade ; Branch if not ld a, (zFadeInTimeout) ; Fading timeout or a ; Is music being faded? @@ -1950,7 +1950,7 @@ zPlayMusic: ; --------------------------------------------------------------------------- .no_fade: ld a, (zFadeToPrevFlag) ; Get fade-to-prev flag - cp mus_ExtraLife-Mus__First ; Was it triggered by the 1-up song? + cp mus_ExtraLife-mus__First ; Was it triggered by the 1-up song? jp z, zBGMLoad ; Branch if yes xor a ; a = 0 ld (zMusicNumber), a ; Clear M68K input queue... @@ -1988,7 +1988,7 @@ zPlayMusic: add hl, de ; Advance to next track djnz .loop ; Loop for all tracks - ld a, mus_ExtraLife-Mus__First ; a = 1-up id-1 + ld a, mus_ExtraLife-mus__First ; a = 1-up id-1 ld (zFadeToPrevFlag), a ; Set fade-to-prev flag to it ld a, (zCurrentTempo) ; Get current tempo ld (zCurrentTempoSave), a ; Save it @@ -2126,7 +2126,7 @@ zPSGInitBytes: ; --------------------------------------------------------------------------- ;loc_6A9 zPlaySound_CheckRing: - sub sfx_First ; Make it a 0-based index + sub sfx__First ; Make it a 0-based index or a ; Is it the ring sound? jp nz, zPlaySound_Bankswitch ; Branch if not ld a, (zRingSpeaker) ; Get speaker on which ring sound is played @@ -2142,9 +2142,9 @@ zPlaySound_Bankswitch: ld c, zID_SFXPointers ; SFX table index ld (zUpdatingSFX), a ; Clear flag to update SFX ex af, af' ; Restore af - cp sfx_Spindash-sfx_First ; Is this the spindash sound? + cp sfx_Spindash-sfx__First ; Is this the spindash sound? jp z, zPlaySound ; Branch if yes - cp sfx__FirstContinuous-sfx_First ; Is this before sound 0BCh? + cp sfx__FirstContinuous-sfx__First ; Is this before sound 0BCh? jp c, zPlaySound_Normal ; Branch if yes push af ; Save af ld b, a ; b = sound index diff --git a/s3.asm b/s3.asm index 2cf156d4..3561d3e2 100644 --- a/s3.asm +++ b/s3.asm @@ -406,7 +406,7 @@ Test_Checksum: bne.s Test_Checksum btst #6,(HW_Expansion_Control).l beq.s loc_6BC - cmpi.l #"init",(Checksum_string).w + cmpi.l #Ref_Checksum_String,(Checksum_string).w beq.w Test_Checksum_Done loc_6BC: @@ -432,7 +432,7 @@ loc_6EA: move.b (HW_Version).l,d0 andi.b #-$40,d0 move.b d0,(Graphics_flags).w - move.l #"init",(Checksum_string).w + move.l #Ref_Checksum_String,(Checksum_string).w Test_Checksum_Done: bsr.w DetectPAL @@ -1855,7 +1855,7 @@ Pause_NoSlowMo: bcs.s Pause_ChkStart cmpi.b #$12,(Current_zone).w bhi.s Pause_ChkStart - tst.b (Competition_mode_type).w + tst.b (Competition_type).w bpl.s Pause_ChkStart btst #4,(Ctrl_1_pressed).w beq.s Pause_ChkStart @@ -5228,15 +5228,15 @@ Map_TitleTailsPlane: include "General/Title/Map - S3 Tails Plane.asm" LevelMusic_Playlist: dc.b mus_AIZ1, mus_AIZ2 ; ANGEL ISLAND ZONE - dc.b mus_HCZ1, mus_HCZ2 ; HYDROCITY ZONE ACT + dc.b mus_HCZ1, mus_HCZ2 ; HYDROCITY ZONE dc.b mus_MGZ1, mus_MGZ2 ; MARBLE GARDEN ZONE dc.b mus_CNZ1, mus_CNZ2 ; CARNIVAL NIGHT ZONE dc.b mus_FBZ1, mus_FBZ2 ; FLYING BATTERY ZONE - dc.b mus_ICZ1, mus_ICZ2 ; ICE CAP ZONE + dc.b mus_ICZ1, mus_ICZ2 ; ICECAP ZONE dc.b mus_LBZ1, mus_LBZ2 ; LAUNCH BASE ZONE dc.b mus_MHZ1, mus_MHZ2 ; MUSHROOM HILL ZONE dc.b mus_SOZ1, mus_SOZ2 ; SANDOPOLIS ZONE - dc.b mus_LRZ1, mus_HPZ ; LAVA REEF ZONE + dc.b mus_LRZ1, mus_LRZ2 ; LAVA REEF ZONE dc.b mus_SSZ, mus_DEZ1 ; SKY SANCTUARY ZONE dc.b mus_DEZ2, mus_DEZ2 ; DEATH EGG ZONE dc.b mus_DDZ, mus_DDZ ; DOOMSDAY ZONE @@ -5247,10 +5247,10 @@ LevelMusic_Playlist: dc.b mus_CGZ, mus_CGZ ; CHROME GADGET ZONE dc.b mus_EMZ, mus_EMZ ; ENDLESS MINE ZONE dc.b mus_Gumball, mus_Gumball ; GUMBALL - dc.b mus_SlotMachine, mus_SlotMachine ; PACHINKO? - dc.b mus_Gumball, mus_Gumball ; SLOTS? + dc.b mus_Slots, mus_Slots ; PACHINKO + dc.b mus_Gumball, mus_Gumball ; SLOTS dc.b mus_SpecialStage, mus_SpecialStage; LAVA REEF ZONE BOSS & HIDDEN PALACE ZONE - dc.b mus_SpecialStage, mus_SpecialStage; FINAL BOSS & SPECIAL STAGE? + dc.b mus_SpecialStage, mus_SpecialStage; FINAL BOSS & SPECIAL STAGE HUB even ; --------------------------------------------------------------------------- @@ -5452,7 +5452,7 @@ loc_48BA: lsr.w #7,d0 lea (LevelMusic_Playlist).l,a1 move.b (a1,d0.w),d0 - move.w d0,(Level_music).w + move.w d0,(Current_music).w bsr.w Play_Sound tst.w (Current_zone_and_act).w bne.s loc_48F2 @@ -7444,7 +7444,7 @@ loc_63BE: move.b #$10,(Game_mode).w moveq #1,d0 move.w d0,(Competition_mode).w - move.w d0,(Competition_mode_monitors).w + move.w d0,(Competition_settings).w rts ; --------------------------------------------------------------------------- LevelSelect2P_LevelOrder: @@ -7671,7 +7671,7 @@ OptionScreen_Select: bne.s OptionScreen_Select_Not1P moveq #0,d0 move.w d0,(Competition_mode).w - move.w d0,(Competition_mode_monitors).w + move.w d0,(Competition_settings).w move.w d0,(Current_zone_and_act).w move.w d0,(Apparent_zone_and_act).w move.w d0,(Saved_zone_and_act).w @@ -7684,7 +7684,7 @@ OptionScreen_Select_Not1P: bne.s OptionScreen_Select_Other moveq #1,d0 move.w d0,(Competition_mode).w - move.w d0,(Competition_mode_monitors).w + move.w d0,(Competition_settings).w move.b #$1C,(Game_mode).w move.b #0,(Current_zone_2P).w move.w #0,(Player_mode).w @@ -8133,7 +8133,7 @@ LevelSelect_StartZone: moveq #signextendB(mus_FadeOut),d0 jsr (Play_Sound_2).l moveq #0,d0 - move.w d0,(Competition_mode_monitors).w + move.w d0,(Competition_settings).w move.w d0,(Competition_mode).w cmpi.b #$E,(Current_zone).w bcs.s locret_6B48 @@ -8540,7 +8540,7 @@ loc_6E8E: ; --------------------------------------------------------------------------- loc_6EBA: - move.w #7,(Emerald_count).w + move.w #7,(Chaos_emerald_count).w moveq #signextendB(mus_Emerald),d0 jsr (Play_Sound).l @@ -8754,7 +8754,7 @@ loc_7546: loc_7692: moveq #0,d0 move.b (Current_special_stage).w,d0 - cmpi.w #7,(Emerald_count).w + cmpi.w #7,(Chaos_emerald_count).w bcc.s loc_76B6 lea (Collected_emeralds_array).w,a1 @@ -10350,9 +10350,9 @@ loc_8ADA: or.w (Special_stage_Y_pos).w,d0 andi.w #$E0,d0 bne.s locret_8B58 - cmpi.w #7,(Emerald_count).w + cmpi.w #7,(Chaos_emerald_count).w bcc.s loc_8B2E - addq.w #1,(Emerald_count).w + addq.w #1,(Chaos_emerald_count).w lea (Collected_emeralds_array).w,a1 moveq #0,d0 move.b (Current_special_stage).w,d0 @@ -11134,8 +11134,8 @@ loc_96FE: ; --------------------------------------------------------------------------- loc_9706: - clr.b (Competition_mode_type).w - move.b (Competition_menu_monitors).w,(Competition_mode_monitors).w + clr.b (Competition_type).w + move.b (Competition_menu_items).w,(Competition_items).w move.b (Ctrl_2_pressed).w,d0 andi.b #-$20,d0 sne (Not_ghost_flag).w @@ -11144,8 +11144,8 @@ loc_9706: ; --------------------------------------------------------------------------- loc_9724: - move.b #3,(Competition_mode_type).w - move.b (Competition_menu_monitors).w,(Competition_mode_monitors).w + move.b #3,(Competition_type).w + move.b (Competition_menu_items).w,(Competition_items).w move.b (Ctrl_2_pressed).w,d0 andi.b #-$20,d0 sne (Not_ghost_flag).w @@ -11157,7 +11157,7 @@ loc_9744: move.b (Ctrl_1_pressed).w,d2 andi.w #$E0,d2 beq.s loc_9776 - move.w #-1,(Competition_mode_monitors).w + move.w #-1,(Competition_settings).w clr.b (Not_ghost_flag).w move.b #-$40,(Game_mode).w @@ -11227,14 +11227,14 @@ Obj_Competition_97D0: or.b (Ctrl_2_pressed).w,d0 andi.w #$C,d0 beq.s loc_97F6 - tst.b (Competition_menu_monitors).w - seq (Competition_menu_monitors).w + tst.b (Competition_menu_items).w + seq (Competition_menu_items).w moveq #signextendB(sfx_Switch),d0 jsr (Play_Sound_2).l loc_97F6: move.w #$15C,d0 - tst.b (Competition_menu_monitors).w + tst.b (Competition_menu_items).w beq.s loc_9804 addi.w #$20,d0 @@ -13649,7 +13649,7 @@ SaveGame_SpecialStage: beq.s locret_B858 movea.l d0,a1 move.b (Current_special_stage).w,4(a1) - move.b (Emerald_count+1).w,5(a1) + move.b (Chaos_emerald_count+1).w,5(a1) lea (Collected_emeralds_array).w,a2 moveq #0,d0 moveq #6,d1 @@ -14246,7 +14246,7 @@ Obj_SaveScreen_NoSave_Slot: clr.w (Current_zone_and_act).w clr.w (Apparent_zone_and_act).w clr.w (Current_special_stage).w - clr.w (Emerald_count).w + clr.w (Chaos_emerald_count).w clr.l (Collected_emeralds_array).w clr.w (Collected_emeralds_array+4).w clr.b (Collected_emeralds_array+6).w @@ -14424,7 +14424,7 @@ loc_C3C0: move.b 4(a1),(Current_special_stage).w moveq #0,d0 move.b 5(a1),d0 - move.w d0,(Emerald_count).w + move.w d0,(Chaos_emerald_count).w move.b 6(a1),d0 lea (Collected_emeralds_array).w,a3 moveq #6,d1 @@ -14461,7 +14461,7 @@ loc_C40A: clr.w (Current_zone_and_act).w clr.w (Apparent_zone_and_act).w clr.w (Current_special_stage).w - clr.w (Emerald_count).w + clr.w (Chaos_emerald_count).w clr.l (Collected_emeralds_array).w clr.w (Collected_emeralds_array+4).w clr.b (Collected_emeralds_array+6).w @@ -19433,7 +19433,7 @@ loc_11DB6: bne.s Sonic_RmvInvin cmpi.b #$C,$2C(a0) bcs.s Sonic_RmvInvin - move.w (Level_music).w,d0 + move.w (Current_music).w,d0 jsr (Play_Sound).l Sonic_RmvInvin: @@ -20637,7 +20637,7 @@ Sonic_BubbleShield: ; --------------------------------------------------------------------------- Sonic_CheckTransform: - cmpi.w #7,(Emerald_count).w + cmpi.w #7,(Chaos_emerald_count).w bcs.s Sonic_InstaShield cmpi.w #50,(Ring_count).w bcs.s Sonic_InstaShield @@ -23103,7 +23103,7 @@ loc_1463A: bne.s loc_14670 cmpi.b #$C,$2C(a0) bcs.s loc_14670 - move.w (Level_music).w,d0 + move.w (Current_music).w,d0 jsr (Play_Sound).l loc_14670: @@ -23921,7 +23921,7 @@ loc_14FC6: move.w d1,d2 lsr.w #1,d2 add.w d2,d1 - move.w d1,(Target_camera_min_X_pos).w + move.w d1,(Camera_stored_min_X_pos).w move.w $10(a1),d1 sub.w $10(a0),d1 bpl.s loc_14FDE @@ -23929,7 +23929,7 @@ loc_14FC6: loc_14FDE: lsr.w #2,d1 - move.w d1,(Target_camera_max_X_pos).w + move.w d1,(Camera_stored_max_X_pos).w bra.w loc_15030 ; --------------------------------------------------------------------------- @@ -23939,7 +23939,7 @@ loc_14FE8: move.w $10(a0),d0 move.w $14(a0),d1 subi.w #$10,d1 - move.w (Target_camera_max_X_pos).w,d2 + move.w (Camera_stored_max_X_pos).w,d2 bclr #0,$2A(a0) cmp.w $10(a1),d0 bcs.s loc_15016 @@ -23950,7 +23950,7 @@ loc_15016: add.w d2,$18(a0) cmp.w $14(a1),d1 bcc.s loc_15030 - move.w (Target_camera_min_X_pos).w,d2 + move.w (Camera_stored_min_X_pos).w,d2 cmp.w $14(a1),d1 bcs.s loc_1502C neg.w d2 @@ -27251,7 +27251,7 @@ Player_ResetAirTimer: bhi.s loc_1744C cmpa.w #Player_1,a1 bne.s loc_1744C - move.w (Level_music).w,d0 + move.w (Current_music).w,d0 btst #1,$2B(a1) beq.s loc_17430 move.w #mus_Invincibility,d0 @@ -32880,7 +32880,7 @@ Monitor_Give_Lightning_Shield: andi.b #$8E,$2B(a1) bset #0,$2B(a1) bset #5,$2B(a1) - moveq #signextendB(sfx_ElectricShield),d0 + moveq #signextendB(sfx_LightningShield),d0 jsr (Play_Sound).l tst.b $43(a0) bne.s loc_1B7E0 @@ -32960,7 +32960,7 @@ Monitor_Give_SuperSonic: move.w #$100,(Deceleration).w move.b #0,(Player_1+invincibility_timer).w bset #1,$2B(a1) - moveq #signextendB(sfx_SuperAlt),d0 + moveq #signextendB(sfx_Whistle),d0 jsr (Play_Sound_2).l moveq #signextendB(mus_Invincibility),d0 jmp (Play_Sound).l @@ -47678,7 +47678,7 @@ loc_2817A: moveq #signextendB(sfx_Crash),d0 cmpi.b #2,(Current_zone).w beq.s loc_281BE - moveq #signextendB(sfx_MetalLand),d0 + moveq #signextendB(sfx_MechaLand),d0 loc_281BE: jsr (Play_Sound_2).l @@ -53672,7 +53672,7 @@ loc_2D546: bhi.s loc_2D588 tst.w (Special_stage_spheres_left).w bne.s loc_2D588 - cmpi.b #7,(Emerald_count+1).w + cmpi.b #7,(Chaos_emerald_count+1).w bcs.s loc_2D588 lea (Dynamic_object_RAM+(object_size*16)).w,a1 moveq #4,d0 @@ -53931,7 +53931,7 @@ loc_2D776: add.w d0,$10(a0) add.w d0,$46(a0) add.b d1,$22(a0) - cmpi.b #7,(Emerald_count+1).w + cmpi.b #7,(Chaos_emerald_count+1).w bcs.s loc_2D7A2 subi.w #$10,$10(a0) subi.w #$10,$46(a0) @@ -53948,7 +53948,7 @@ loc_2D7AC: jsr sub_2D8A4(pc) sub.w d0,$10(a0) sub.w d0,$46(a0) - cmpi.b #7,(Emerald_count+1).w + cmpi.b #7,(Chaos_emerald_count+1).w bcs.s loc_2D7D4 subi.w #$10,$10(a0) subi.w #$10,$46(a0) @@ -53962,7 +53962,7 @@ loc_2D7D4: loc_2D7DE: tst.w (Special_stage_spheres_left).w bne.w loc_2D89E - cmpi.b #7,(Emerald_count+1).w + cmpi.b #7,(Chaos_emerald_count+1).w bcs.s loc_2D7F6 subq.w #8,$10(a0) subq.w #8,$46(a0) @@ -53976,7 +53976,7 @@ loc_2D7F6: loc_2D800: tst.w (Special_stage_spheres_left).w bne.w loc_2D89E - cmpi.b #7,(Emerald_count+1).w + cmpi.b #7,(Chaos_emerald_count+1).w bcs.w loc_2D89E jsr sub_2D8A4(pc) sub.w d0,$10(a0) @@ -53989,7 +53989,7 @@ loc_2D800: loc_2D828: tst.w (Special_stage_spheres_left).w bne.w loc_2D89E - cmpi.b #7,(Emerald_count+1).w + cmpi.b #7,(Chaos_emerald_count+1).w bcs.s loc_2D89E bra.w loc_2D710 ; --------------------------------------------------------------------------- @@ -64046,7 +64046,7 @@ loc_3652E: sub_3653C: - tst.b (Competition_mode_monitors).w + tst.b (Competition_items).w bne.s locret_3656A lea (byte_3656C).l,a4 adda.w d0,a4 @@ -64227,7 +64227,7 @@ loc_367C4: move.w #$78,(Events_bg+$16).w tst.b (Not_ghost_flag).w beq.s loc_367E8 - tst.b (Competition_mode_type).w + tst.b (Competition_type).w bne.s loc_367E8 move.w #$168,(Events_bg+$16).w @@ -64258,7 +64258,7 @@ loc_36824: bset #4,4(a0) move.b #2,$3A(a0) move.w #$78,(Events_bg+$16).w - tst.b (Competition_mode_type).w + tst.b (Competition_type).w bne.s loc_3684E move.w #$168,(Events_bg+$16).w @@ -64275,7 +64275,7 @@ locret_36860: loc_36862: subq.b #1,d0 bne.w loc_36936 - tst.b (Competition_mode_type).w + tst.b (Competition_type).w beq.s loc_3689A tst.b (Update_HUD_timer).w bpl.s locret_36898 @@ -64288,7 +64288,7 @@ loc_36880: subq.w #1,(Events_bg+$16).w bpl.s locret_36898 move.b #$40,(Game_mode).w - tst.b (Competition_mode_type).w + tst.b (Competition_type).w bpl.s locret_36898 move.b #$50,(Game_mode).w @@ -64415,7 +64415,7 @@ locret_369C0: sub_369C2: - tst.b (Competition_mode_type).w + tst.b (Competition_type).w bpl.w locret_36A48 moveq #0,d0 move.b (Current_zone).w,d0 @@ -71244,7 +71244,7 @@ loc_3BBE6: subq.w #1,d0 andi.w #$F,d0 bne.s locret_3BC04 - moveq #signextendB(sfx_EggmanSiren),d0 + moveq #signextendB(sfx_RobotnikSiren),d0 jsr (Play_Sound_2).l locret_3BC04: @@ -76859,7 +76859,7 @@ loc_405FA: jsr (Pal_FadeToBlack).l move.w #4,(_unkFA86).w lea Pal_EndingEyecatchKnuckles(pc),a1 - cmpi.w #7,(Emerald_count).w + cmpi.w #7,(Chaos_emerald_count).w bne.s loc_40616 lea Pal_EndingS3Logo(pc),a1 @@ -76880,7 +76880,7 @@ loc_4062E: bset #0,(_unkFA88).w clr.l (V_scroll_value).w lea Child6_EndingS3Logo(pc),a1 - cmpi.w #7,(Emerald_count).w + cmpi.w #7,(Chaos_emerald_count).w beq.s loc_40656 lea S3CreditsText_TryAgain(pc),a1 bsr.w sub_40A4A @@ -79096,7 +79096,7 @@ loc_43DF6: bset #0,$2B(a1) moveq #5,d0 bsr.w sub_43E20 - moveq #signextendB(sfx_ElectricShield),d0 + moveq #signextendB(sfx_LightningShield),d0 jmp (Play_Sound).l ; =============== S U B R O U T I N E ======================================= @@ -79461,7 +79461,7 @@ loc_4429C: lea (Player_1).w,a1 cmpi.b #6,5(a1) bcc.s locret_4429A - cmpi.w #7,(Emerald_count).w + cmpi.w #7,(Chaos_emerald_count).w beq.s loc_442FE move.b #4,5(a0) move.b #-1,(Player_prev_frame).w @@ -79545,7 +79545,7 @@ SSEntryFlash_Finished: ; --------------------------------------------------------------------------- SSEntryFlash_GoSS: - cmpi.w #7,(Emerald_count).w + cmpi.w #7,(Chaos_emerald_count).w beq.s loc_443E4 moveq #signextendB(sfx_EnterSS),d0 jsr (Play_Sound_2).l @@ -80009,8 +80009,8 @@ word_44ADA: dc.w $540 loc_44AE2: lea ObjDat4_456DC(pc),a1 jsr (SetUp_ObjAttributesSlotted).l - move.w (Camera_min_Y_pos).w,(Target_camera_min_Y_pos).w - move.w (Camera_max_X_pos).w,(Target_camera_max_X_pos).w + move.w (Camera_min_Y_pos).w,(Camera_stored_min_Y_pos).w + move.w (Camera_max_X_pos).w,(Camera_stored_max_X_pos).w move.w #$3940,(Camera_max_X_pos).w rts ; --------------------------------------------------------------------------- @@ -80123,10 +80123,10 @@ loc_44C36: jsr (Play_Sound).l move.w #$78,$2E(a0) move.b #mus_Knuckles,$26(a0) - move.w (Camera_min_Y_pos).w,(Target_camera_min_Y_pos).w - move.w (Camera_target_max_Y_pos).w,(Target_camera_max_Y_pos).w - move.w (Camera_min_X_pos).w,(Target_camera_min_X_pos).w - move.w (Camera_max_X_pos).w,(Target_camera_max_X_pos).w + move.w (Camera_min_Y_pos).w,(Camera_stored_min_Y_pos).w + move.w (Camera_target_max_Y_pos).w,(Camera_stored_max_Y_pos).w + move.w (Camera_min_X_pos).w,(Camera_stored_min_X_pos).w + move.w (Camera_max_X_pos).w,(Camera_stored_max_X_pos).w move.w #$280,(Camera_target_max_Y_pos).w move.w #$1D00,$1C(a0) move.w #$1D00,(Camera_max_X_pos).w @@ -80214,7 +80214,7 @@ loc_44D6E: jsr (Load_PLC_Raw).l lea ChildObjDat_44DC4(pc),a2 jsr (CreateChild1_Normal).l - move.w (Target_camera_max_Y_pos).w,(Camera_target_max_Y_pos).w + move.w (Camera_stored_max_Y_pos).w,(Camera_target_max_Y_pos).w jsr (Create_New_Sprite).l bne.s loc_44DB8 move.l #Obj_Song_Fade_ToLevelMusic,(a1) @@ -80534,7 +80534,7 @@ loc_450FA: clr.b (_unkFAA9).w clr.b (Player_1+object_control).w clr.b (Player_2+object_control).w - move.w #$3B60,(Target_camera_max_X_pos).w + move.w #$3B60,(Camera_stored_max_X_pos).w lea (Child6_IncLevX).l,a2 jsr (CreateChild6_Simple).l move.w #$148,(Camera_target_max_Y_pos).w @@ -80894,7 +80894,7 @@ loc_4552E: loc_45534: clr.b (Ctrl_1_locked).w move.w #$1000,d0 - move.w d0,(Target_camera_max_Y_pos).w + move.w d0,(Camera_stored_max_Y_pos).w move.w d0,(Camera_target_max_Y_pos).w lea (Child6_IncLevY).l,a2 jmp (CreateChild6_Simple).l @@ -82277,7 +82277,7 @@ loc_4645E: lea ObjDat3_46F14(pc),a1 jsr (SetUp_ObjAttributes).l move.b #$60,$29(a0) - move.w (Camera_max_X_pos).w,(Target_camera_max_X_pos).w + move.w (Camera_max_X_pos).w,(Camera_stored_max_X_pos).w move.b #1,(Boss_flag).w moveq #$5A,d0 jmp (Load_PLC).l @@ -83781,7 +83781,7 @@ loc_473C6: jsr (Restore_PlayerControl2).l clr.w (Ctrl_1_logical).w st (Ctrl_1_locked).w - move.w #$4A38,(Target_camera_max_X_pos).w + move.w #$4A38,(Camera_stored_max_X_pos).w lea (Child6_IncLevX).l,a2 jmp (CreateChild6_Simple).l ; --------------------------------------------------------------------------- @@ -84725,7 +84725,7 @@ loc_47D78: ; --------------------------------------------------------------------------- loc_47D82: - move.w (Camera_max_X_pos).w,(Target_camera_max_X_pos).w + move.w (Camera_max_X_pos).w,(Camera_stored_max_X_pos).w move.w $14(a0),$44(a0) move.l #Obj_Wait,(a0) move.w #$78,$2E(a0) @@ -85523,7 +85523,7 @@ loc_486DA: loc_486F2: jsr (Restore_PlayerControl).l - move.w #0,(Target_camera_min_Y_pos).w + move.w #0,(Camera_stored_min_Y_pos).w jsr (Make_LevelSizeObj).l loc_48704: @@ -86239,7 +86239,7 @@ Obj_HCZEndBoss: jsr (Play_Sound).l move.w #$78,$2E(a0) move.b #mus_EndBoss,$26(a0) - move.w (Camera_target_max_Y_pos).w,(Target_camera_max_Y_pos).w + move.w (Camera_target_max_Y_pos).w,(Camera_stored_max_Y_pos).w move.w #$738,(Camera_target_max_Y_pos).w move.w #$4000,$1C(a0) move.l #loc_48D34,$34(a0) @@ -86420,7 +86420,7 @@ loc_48F3C: st (_unkFAA8).w clr.b (Boss_flag).w jsr (Obj_PlayLevelMusic).l - move.w #$4230,(Target_camera_max_X_pos).w + move.w #$4230,(Camera_stored_max_X_pos).w lea (Child6_IncLevX).l,a2 jmp (CreateChild6_Simple).l ; --------------------------------------------------------------------------- @@ -88099,13 +88099,13 @@ loc_4A04A: btst #0,4(a0) bne.s loc_4A0DA lea (Child6_IncLevX).l,a2 - move.w #$6000,(Target_camera_max_X_pos).w + move.w #$6000,(Camera_stored_max_X_pos).w jmp (CreateChild6_Simple).l ; --------------------------------------------------------------------------- loc_4A0DA: lea (Child6_DecLevX).l,a2 - move.w #0,(Target_camera_min_X_pos).w + move.w #0,(Camera_stored_min_X_pos).w jmp (CreateChild6_Simple).l ; --------------------------------------------------------------------------- @@ -88412,7 +88412,7 @@ loc_4A488: loc_4A49A: move.b #4,5(a0) - move.w (Camera_max_X_pos).w,(Target_camera_max_X_pos).w + move.w (Camera_max_X_pos).w,(Camera_stored_max_X_pos).w move.w d0,(Camera_min_X_pos).w move.w d0,(Camera_max_X_pos).w move.w #$B4,$30(a0) @@ -90092,7 +90092,7 @@ Obj_CNZMiniboss: ; --------------------------------------------------------------------------- loc_4B5B4: - move.w (Camera_max_X_pos).w,(Target_camera_max_X_pos).w + move.w (Camera_max_X_pos).w,(Camera_stored_max_X_pos).w move.w #$1A0,(Camera_min_Y_pos).w move.w d0,(Camera_min_X_pos).w addi.w #$80,d0 @@ -91029,7 +91029,7 @@ Obj_CNZEndBoss: jsr (Play_Sound).l move.w #$78,$2E(a0) move.b #mus_EndBoss,$26(a0) - move.w (Camera_target_max_Y_pos).w,(Target_camera_max_Y_pos).w + move.w (Camera_target_max_Y_pos).w,(Camera_stored_max_Y_pos).w move.w #$240,(Camera_target_max_Y_pos).w move.w #$4760,$1C(a0) move.w #$47E0,(Camera_max_X_pos).w @@ -91255,7 +91255,7 @@ loc_4C21A: st (_unkFAA8).w clr.b (Boss_flag).w jsr (Obj_PlayLevelMusic).l - move.w #$48F0,(Target_camera_max_X_pos).w + move.w #$48F0,(Camera_stored_max_X_pos).w lea (Child6_IncLevX).l,a2 jmp (CreateChild6_Simple).l ; --------------------------------------------------------------------------- @@ -91269,10 +91269,10 @@ loc_4C240: jsr (Restore_PlayerControl).l lea (Player_2).w,a1 jsr (Restore_PlayerControl2).l - move.w #$200,(Target_camera_min_Y_pos).w + move.w #$200,(Camera_stored_min_Y_pos).w lea (Child6_DecLevY).l,a2 jsr (CreateChild6_Simple).l - move.w #$4A70,(Target_camera_max_X_pos).w + move.w #$4A70,(Camera_stored_max_X_pos).w lea (Child6_IncLevX).l,a2 jmp (CreateChild6_Simple).l ; --------------------------------------------------------------------------- @@ -92005,8 +92005,8 @@ loc_4C976: jsr SetUp_ObjAttributes(pc) move.b #6,$29(a0) move.b #1,(Boss_flag).w - move.w (Camera_max_X_pos).w,(Target_camera_max_X_pos).w - move.w (Camera_max_Y_pos).w,(Target_camera_max_Y_pos).w + move.w (Camera_max_X_pos).w,(Camera_stored_max_X_pos).w + move.w (Camera_max_Y_pos).w,(Camera_stored_max_Y_pos).w move.w #$540,(Camera_target_max_Y_pos).w move.w #$2E20,$3A(a0) move.l #loc_4C9CA,$34(a0) @@ -92024,7 +92024,7 @@ loc_4C9C4: loc_4C9CA: move.b #4,5(a0) - move.w (Camera_max_X_pos).w,(Target_camera_max_X_pos).w + move.w (Camera_max_X_pos).w,(Camera_stored_max_X_pos).w move.w d0,(Camera_min_X_pos).w addi.w #$40,d0 move.w d0,(Camera_max_X_pos).w @@ -93275,7 +93275,7 @@ loc_4D57A: jsr SetUp_ObjAttributes(pc) move.b #$7F,$29(a0) move.b #6,$39(a0) - move.w (Camera_target_max_Y_pos).w,(Target_camera_max_Y_pos).w + move.w (Camera_target_max_Y_pos).w,(Camera_stored_max_Y_pos).w move.w #$240,(Camera_target_max_Y_pos).w move.w #$78,$2E(a0) move.l #loc_4D5EC,$34(a0) @@ -93869,7 +93869,7 @@ loc_4DBC0: jsr SetUp_ObjAttributes(pc) move.b #8,$29(a0) move.b #1,(Boss_flag).w - move.w (Camera_max_X_pos).w,(Target_camera_max_X_pos).w + move.w (Camera_max_X_pos).w,(Camera_stored_max_X_pos).w move.w #$3090,(Camera_max_X_pos).w moveq #$6F,d0 jsr (Load_PLC).l @@ -94014,7 +94014,7 @@ loc_4DD66: loc_4DD8A: move.l #loc_4DDA6,(a0) clr.b (Boss_flag).w - move.w #$3170,(Target_camera_max_X_pos).w + move.w #$3170,(Camera_stored_max_X_pos).w lea (Child6_IncLevX).l,a2 jmp (CreateChild6_Simple).l ; --------------------------------------------------------------------------- @@ -94027,7 +94027,7 @@ loc_4DDA6: jsr Restore_PlayerControl(pc) lea (Player_2).w,a1 jsr Restore_PlayerControl2(pc) - move.w #$6000,(Target_camera_max_X_pos).w + move.w #$6000,(Camera_stored_max_X_pos).w lea (Child6_IncLevX).l,a2 jsr (CreateChild6_Simple).l jmp (Go_Delete_Sprite_2).l @@ -94649,8 +94649,8 @@ Obj_ICZMiniboss: jsr (Play_Sound).l move.w #$78,$2E(a0) move.b #mus_Miniboss,$26(a0) - move.w (Camera_max_X_pos).w,(Target_camera_max_X_pos).w - move.w (Camera_target_max_Y_pos).w,(Target_camera_max_Y_pos).w + move.w (Camera_max_X_pos).w,(Camera_stored_max_X_pos).w + move.w (Camera_target_max_Y_pos).w,(Camera_stored_max_Y_pos).w move.w #$2B8,(Camera_target_max_Y_pos).w move.w #$6F0,$1C(a0) move.w #$6F0,(Camera_max_X_pos).w @@ -95542,7 +95542,7 @@ Obj_ICZEndBoss: jsr (Play_Sound).l move.w #$78,$2E(a0) move.b #mus_EndBoss,$26(a0) - move.w (Camera_target_max_Y_pos).w,(Target_camera_max_Y_pos).w + move.w (Camera_target_max_Y_pos).w,(Camera_stored_max_Y_pos).w move.w #$5F8,(Camera_target_max_Y_pos).w move.w #$4390,$1C(a0) move.w #$4390,(Camera_max_X_pos).w @@ -95692,7 +95692,7 @@ loc_4EEA4: st (_unkFAA8).w clr.b (Boss_flag).w jsr (Obj_PlayLevelMusic).l - move.w #$44C0,(Target_camera_max_X_pos).w + move.w #$44C0,(Camera_stored_max_X_pos).w jsr (Create_New_Sprite).l bne.s locret_4EECC move.l #Obj_IncLevEndXGradual,(a1) @@ -95709,8 +95709,8 @@ loc_4EECE: jsr Restore_PlayerControl(pc) lea (Player_2).w,a1 jsr Restore_PlayerControl2(pc) - move.w (Target_camera_max_Y_pos).w,(Camera_target_max_Y_pos).w - move.w #$47C0,(Target_camera_max_X_pos).w + move.w (Camera_stored_max_Y_pos).w,(Camera_target_max_Y_pos).w + move.w #$47C0,(Camera_stored_max_X_pos).w lea (Child6_IncLevX).l,a2 jsr (CreateChild6_Simple).l jmp (Go_Delete_Sprite_2).l @@ -98599,7 +98599,7 @@ loc_50AD2: move.b #4,$2C(a1) loc_50B18: - move.w #$3AB8,(Target_camera_max_X_pos).w + move.w #$3AB8,(Camera_stored_max_X_pos).w lea Child6_IncLevX(pc),a2 jmp CreateChild6_Simple(pc) ; End of function sub_50A7A @@ -102430,14 +102430,14 @@ Obj_IncLevEndXGradual: move.l d1,$30(a0) swap d1 add.w d1,d0 - cmp.w (Target_camera_max_X_pos).w,d0 + cmp.w (Camera_stored_max_X_pos).w,d0 bcc.s loc_531BC move.w d0,(Camera_max_X_pos).w rts ; --------------------------------------------------------------------------- loc_531BC: - move.w (Target_camera_max_X_pos).w,(Camera_max_X_pos).w + move.w (Camera_stored_max_X_pos).w,(Camera_max_X_pos).w loc_531C2: jmp (Delete_Current_Sprite).l @@ -102450,14 +102450,14 @@ Obj_DecLevStartXGradual: move.l d1,$30(a0) swap d1 sub.w d1,d0 - cmp.w (Target_camera_min_X_pos).w,d0 + cmp.w (Camera_stored_min_X_pos).w,d0 ble.s loc_531EA move.w d0,(Camera_min_X_pos).w rts ; --------------------------------------------------------------------------- loc_531EA: - move.w (Target_camera_min_X_pos).w,(Camera_min_X_pos).w + move.w (Camera_stored_min_X_pos).w,(Camera_min_X_pos).w jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- @@ -102468,14 +102468,14 @@ Obj_DecLevStartYGradual: move.l d1,$30(a0) swap d1 sub.w d1,d0 - cmp.w (Target_camera_min_Y_pos).w,d0 + cmp.w (Camera_stored_min_Y_pos).w,d0 ble.s loc_53218 move.w d0,(Camera_min_Y_pos).w rts ; --------------------------------------------------------------------------- loc_53218: - move.w (Target_camera_min_Y_pos).w,(Camera_min_Y_pos).w + move.w (Camera_stored_min_Y_pos).w,(Camera_min_Y_pos).w jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- @@ -102486,14 +102486,14 @@ Obj_IncLevEndYGradual: move.l d1,$30(a0) swap d1 add.w d1,d0 - cmp.w (Target_camera_max_Y_pos).w,d0 + cmp.w (Camera_stored_max_Y_pos).w,d0 bgt.s loc_53246 move.w d0,(Camera_max_Y_pos).w rts ; --------------------------------------------------------------------------- loc_53246: - move.w (Target_camera_max_Y_pos).w,(Camera_max_Y_pos).w + move.w (Camera_stored_max_Y_pos).w,(Camera_max_Y_pos).w jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- Child6_IncLevX: dc.w 0 @@ -104271,7 +104271,7 @@ Obj_PlayLevelMusic: add.b d0,d0 add.b (a1),d0 move.b PlayLevelMusic_Playlist(pc,d0.w),d0 - move.w d0,(Level_music).w + move.w d0,(Current_music).w btst #1,(Player_1+status_secondary).w beq.s loc_540A4 moveq #signextendB(mus_Invincibility),d0 @@ -104455,11 +104455,11 @@ Change_Act2Sizes: lsl.w #4,d0 lea (LevelSizes).l,a1 lea 8(a1,d0.w),a1 - move.w (a1)+,(Target_camera_min_X_pos).w - move.w (a1)+,(Target_camera_max_X_pos).w - move.w (a1)+,(Target_camera_min_Y_pos).w + move.w (a1)+,(Camera_stored_min_X_pos).w + move.w (a1)+,(Camera_stored_max_X_pos).w + move.w (a1)+,(Camera_stored_min_Y_pos).w move.w (a1)+,d1 - move.w d1,(Target_camera_max_Y_pos).w + move.w d1,(Camera_stored_max_Y_pos).w move.w d1,(Camera_target_max_Y_pos).w cmpi.b #$10,d0 beq.w locret_529CE @@ -104627,7 +104627,7 @@ sub_5439C: move.w (Player_mode).w,d0 cmpi.w #2,d0 beq.s loc_543B2 - cmpi.w #7,(Emerald_count).w + cmpi.w #7,(Chaos_emerald_count).w beq.s loc_543B6 moveq #0,d0 rts @@ -110856,7 +110856,7 @@ loc_57D38: move.b #$10,5(a0) move.w #$1F,$2E(a0) move.l #loc_57D92,$34(a0) - moveq #signextendB(sfx_MetalLand),d0 + moveq #signextendB(sfx_MechaLand),d0 jsr (Play_Sound_2).l rts ; --------------------------------------------------------------------------- @@ -111572,7 +111572,7 @@ loc_5840C: move.l #loc_5836E,(a0) bclr #0,$38(a0) move.w #$10,(Screen_shake_flag).w - moveq #signextendB(sfx_MetalLand),d0 + moveq #signextendB(sfx_MechaLand),d0 jsr (Play_Sound_2).l rts @@ -115109,7 +115109,7 @@ loc_5A3DE: lea (ArtKosM_LBZMinibossBox).l,a1 move.w #-$7540,d2 jsr (Queue_Kos_Module).l - move.w #$3EA0,(Target_camera_max_X_pos).w + move.w #$3EA0,(Camera_stored_max_X_pos).w lea (Child6_IncLevX).l,a2 jmp (CreateChild6_Simple).l ; --------------------------------------------------------------------------- @@ -115549,7 +115549,7 @@ loc_5A84E: moveq #signextendB(sfx_Rising),d0 jsr (Play_Sound_2).l st (Anim_Counters+$F).w - move.w #$6000,(Target_camera_max_X_pos).w + move.w #$6000,(Camera_stored_max_X_pos).w lea Child6_IncLevX(pc),a2 jsr CreateChild6_Simple(pc) lea (Child1_MakeRoboShipFlame).l,a2 @@ -116284,8 +116284,8 @@ off_5B52E: dc.w loc_5B532-off_5B52E loc_5B532: addq.b #2,(Debug_placement_routine).w - move.l $C(a0),(Debug_P1_mappings).w - move.w $A(a0),(Debug_P2_mappings).w + move.l $C(a0),(Debug_saved_mappings).w + move.w $A(a0),(Debug_saved_art_tile).w move.w (Screen_Y_wrap_value).w,d0 and.w d0,(Player_1+y_pos).w and.w d0,(Camera_Y_pos).w @@ -116456,8 +116456,8 @@ loc_5B708: moveq #0,d0 move.w d0,(Debug_placement_mode).w lea (Player_1).w,a1 - move.l (Debug_P1_mappings).w,$C(a1) - move.w (Debug_P2_mappings).w,$A(a1) + move.l (Debug_saved_mappings).w,$C(a1) + move.w (Debug_saved_art_tile).w,$A(a1) bsr.s sub_5B736 move.b #$13,$1E(a1) move.b #9,$1F(a1) diff --git a/s3.constants.asm b/s3.constants.asm index 2f35222e..fba72d08 100644 --- a/s3.constants.asm +++ b/s3.constants.asm @@ -75,7 +75,8 @@ Graphics_flags := * ; Sonic & Knuckles uses a different address Debug_mode_flag := * ; Sonic & Knuckles uses a different address ds.w 1 Checksum_string := * ; Sonic & Knuckles uses a different address - ds.l 1 ; set to 'init' once the checksum routine has run + ds.l 1 ; set to Ref_Checksum_String once the checksum routine has run +Ref_Checksum_String := 'init' dephase !org 0 diff --git a/sonic3k.asm b/sonic3k.asm index 46bbc86e..af561bae 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -369,7 +369,7 @@ BlueSpheresStartup: Test_Checksum: btst #6,(HW_Expansion_Control).l beq.s + - cmpi.l #'SM&K',(Checksum_string).w + cmpi.l #Ref_Checksum_String,(Checksum_string).w beq.w Test_Checksum_Done + movea.l #ErrorTrap,a6 @@ -391,7 +391,7 @@ Test_Checksum: move.b (HW_Version).l,d6 andi.b #$C0,d6 move.b d6,(Graphics_flags).w - move.l #'SM&K',(Checksum_string).w + move.l #Ref_Checksum_String,(Checksum_string).w Test_Checksum_Done: rts @@ -1491,7 +1491,7 @@ Pause_NoSlowMo: blo.s Pause_ChkStart ; if the zone is below ALZ cmpi.b #$12,(Current_zone).w bhi.s Pause_ChkStart ; if the zone is above EMZ - tst.b (Competition_mode_type).w + tst.b (Competition_type).w bpl.s Pause_ChkStart btst #4,(Ctrl_1_pressed).w beq.s Pause_ChkStart @@ -5102,7 +5102,7 @@ loc_42C8: move.b #1,(Current_special_stage).w move.b #1,(SK_special_stage_flag).w move.b #7,(Current_zone).w - clr.w (Emerald_count).w + clr.w (Emerald_counts).w clr.l (Collected_emeralds_array).w clr.w (Collected_emeralds_array+4).w clr.b (Collected_emeralds_array+6).w @@ -5997,7 +5997,7 @@ loc_539A: move.w d0,(Apparent_zone_and_act).w move.w d0,(Saved_zone_and_act).w clr.w (Current_special_stage).w - clr.w (Emerald_count).w + clr.w (Emerald_counts).w clr.l (Collected_emeralds_array).w clr.w (Collected_emeralds_array+4).w clr.b (Collected_emeralds_array+6).w @@ -6047,7 +6047,7 @@ loc_54AE: move.b #1,(Current_special_stage).w move.b #1,(SK_special_stage_flag).w move.b #7,(Current_zone).w - clr.w (Emerald_count).w + clr.w (Emerald_counts).w clr.l (Collected_emeralds_array).w clr.w (Collected_emeralds_array+4).w clr.b (Collected_emeralds_array+6).w @@ -6867,15 +6867,15 @@ Map_SKTitle_Copyright: include "General/Title/Map - SK Copyright.asm" ;5F6C.asm" LevelMusic_Playlist: dc.b mus_AIZ1, mus_AIZ2 ; ANGEL ISLAND ZONE - dc.b mus_HCZ1, mus_HCZ2 ; HYDROCITY ZONE ACT + dc.b mus_HCZ1, mus_HCZ2 ; HYDROCITY ZONE dc.b mus_MGZ1, mus_MGZ2 ; MARBLE GARDEN ZONE dc.b mus_CNZ1, mus_CNZ2 ; CARNIVAL NIGHT ZONE dc.b mus_FBZ1, mus_FBZ2 ; FLYING BATTERY ZONE - dc.b mus_ICZ1, mus_ICZ2 ; ICE CAP ZONE + dc.b mus_ICZ1, mus_ICZ2 ; ICECAP ZONE dc.b mus_LBZ1, mus_LBZ2 ; LAUNCH BASE ZONE dc.b mus_MHZ1, mus_MHZ2 ; MUSHROOM HILL ZONE dc.b mus_SOZ1, mus_SOZ2 ; SANDOPOLIS ZONE - dc.b mus_LRZ1, mus_HPZ ; LAVA REEF ZONE + dc.b mus_LRZ1, mus_LRZ2 ; LAVA REEF ZONE dc.b mus_SSZ, mus_SSZ ; SKY SANCTUARY ZONE dc.b mus_DEZ1, mus_DEZ2 ; DEATH EGG ZONE dc.b mus_DDZ, mus_DDZ ; DOOMSDAY ZONE @@ -6886,10 +6886,10 @@ LevelMusic_Playlist: dc.b mus_CGZ, mus_CGZ ; CHROME GADGET ZONE dc.b mus_EMZ, mus_EMZ ; ENDLESS MINE ZONE dc.b mus_Gumball, mus_Gumball ; GUMBALL - dc.b mus_MagneticOrbs, mus_MagneticOrbs; PACHINKO - dc.b mus_SlotMachine, mus_SlotMachine ; SLOTS - dc.b mus_EndBoss, mus_HPZ ; LAVA REEF ZONE BOSS & HIDDEN PALACE ZONE - dc.b mus_DEZ2, mus_HPZ ; FINAL BOSS & SPECIAL STAGE? + dc.b mus_Pachinko, mus_Pachinko ; PACHINKO + dc.b mus_Slots, mus_Slots ; SLOTS + dc.b mus_EndBoss, mus_LRZ2 ; LAVA REEF ZONE BOSS & HIDDEN PALACE ZONE + dc.b mus_DEZ2, mus_LRZ2 ; FINAL BOSS & SPECIAL STAGE HUB even ; --------------------------------------------------------------------------- @@ -7135,7 +7135,7 @@ loc_622A: moveq #signextendB(mus_Knuckles),d0 loc_6248: - move.w d0,(Level_music).w + move.w d0,(Current_music).w bsr.w Play_Sound tst.w (Current_zone_and_act).w bne.s loc_6268 @@ -9674,7 +9674,7 @@ LevelSelect_StartZone: moveq #signextendB(mus_FadeOut),d0 jsr (Play_Sound_2).l moveq #0,d0 - move.w d0,(Competition_mode_monitors).w + move.w d0,(Competition_settings).w move.w d0,(Competition_mode).w cmpi.b #$E,(Current_zone).w blo.s locret_7E62 @@ -10279,7 +10279,7 @@ sub_85B0: lea (RAM_start).l,a1 bsr.w Kos_Decomp lea (SStageLayoutPtrs).l,a2 - move.b (Emerald_count).w,d3 + move.b (Chaos_emerald_count).w,d3 tst.w (SK_alone_flag).w beq.s loc_85E4 lea (SSLayoutOffs_RAM).l,a2 @@ -12106,7 +12106,7 @@ loc_9C80: bne.s locret_9D1C tst.b (Blue_spheres_stage_flag).w bne.s loc_9CE6 - lea (Emerald_count).w,a2 + lea (Chaos_emerald_count).w,a2 move.b (SK_special_stage_flag).w,d2 beq.s loc_9CCE lea (Super_emerald_count).w,a2 @@ -12947,8 +12947,8 @@ loc_AA2E: ; --------------------------------------------------------------------------- loc_AA36: - clr.b (Competition_mode_type).w - move.b (Competition_menu_monitors).w,(Competition_mode_monitors).w + clr.b (Competition_type).w + move.b (Competition_menu_items).w,(Competition_items).w move.b (Ctrl_2_pressed).w,d0 andi.b #$E0,d0 sne (Not_ghost_flag).w @@ -12957,8 +12957,8 @@ loc_AA36: ; --------------------------------------------------------------------------- loc_AA54: - move.b #3,(Competition_mode_type).w - move.b (Competition_menu_monitors).w,(Competition_mode_monitors).w + move.b #3,(Competition_type).w + move.b (Competition_menu_items).w,(Competition_items).w move.b (Ctrl_2_pressed).w,d0 andi.b #$E0,d0 sne (Not_ghost_flag).w @@ -12970,7 +12970,7 @@ loc_AA74: move.b (Ctrl_1_pressed).w,d2 andi.w #$E0,d2 beq.s loc_AAA6 - move.w #-1,(Competition_mode_monitors).w + move.w #-1,(Competition_settings).w clr.b (Not_ghost_flag).w move.b #-$40,(Game_mode).w @@ -13040,14 +13040,14 @@ Obj_Competition_AB00: or.b (Ctrl_2_pressed).w,d0 andi.w #$C,d0 beq.s loc_AB26 - tst.b (Competition_menu_monitors).w - seq (Competition_menu_monitors).w + tst.b (Competition_menu_items).w + seq (Competition_menu_items).w moveq #signextendB(sfx_Switch),d0 jsr (Play_Sound_2).l loc_AB26: move.w #$15C,d0 - tst.b (Competition_menu_monitors).w + tst.b (Competition_menu_items).w beq.s loc_AB34 addi.w #$20,d0 @@ -15504,14 +15504,14 @@ loc_C478: loc_C488: cmpi.b #$D,d0 - bhi.s loc_C498 ; If next level above Doomsday's code, make it a completed save file + bhi.s loc_C498 ; If next level above Doomsday's code, make it a completed save file bne.s loc_C4B0 - cmpi.b #7,(Emerald_count).w ; If next level IS Doomsday but the emeralds aren't collected, make it a completed save file + cmpi.b #7,(Chaos_emerald_count).w ; If next level IS Doomsday but the emeralds aren't collected, make it a completed save file bhs.s loc_C4B0 loc_C498: moveq #1,d0 - cmpi.b #7,(Emerald_count).w + cmpi.b #7,(Chaos_emerald_count).w blo.s loc_C4AE ; code 1 is completed without all emeralds addq.b #1,d0 cmpi.b #7,(Super_emerald_count).w @@ -16442,7 +16442,7 @@ Obj_SaveScreen_NoSave_Slot: clr.w (Current_zone_and_act).w clr.w (Apparent_zone_and_act).w clr.w (Current_special_stage).w - clr.w (Emerald_count).w + clr.w (Emerald_counts).w clr.l (Collected_emeralds_array).w clr.w (Collected_emeralds_array+4).w clr.b (Collected_emeralds_array+6).w @@ -16652,7 +16652,7 @@ loc_D57A: move.w 6(a1),d0 lea (Collected_emeralds_array).w,a2 jsr sub_DA1E(pc) - move.b d1,(Emerald_count).w + move.b d1,(Chaos_emerald_count).w move.b d2,(Super_emerald_count).w move.l a1,(Save_pointer).w jsr (Set_Lives_and_Continues).l @@ -16698,7 +16698,7 @@ loc_D5FE: clr.w (Current_zone_and_act).w clr.w (Apparent_zone_and_act).w clr.w (Current_special_stage).w - clr.w (Emerald_count).w + clr.w (Emerald_counts).w clr.l (Collected_emeralds_array).w clr.w (Collected_emeralds_array+4).w clr.b (Collected_emeralds_array+6).w @@ -20893,7 +20893,7 @@ loc_1036E: move.w #0,$18(a0) move.w #0,$1C(a0) move.b #$18,$20(a0) - move.w $A(a0),(Debug_P2_mappings).w + move.w $A(a0),(Debug_saved_art_tile).w bset #7,$A(a0) jsr (Play_Sound_2).l @@ -21795,7 +21795,7 @@ Sonic_ChkInvin: ; Checks if invincibility has expired and disables it if it has. bne.s Sonic_RmvInvin cmpi.b #$C,air_left(a0) ; Don't change music if drowning blo.s Sonic_RmvInvin - move.w (Level_music).w,d0 + move.w (Current_music).w,d0 jsr (Play_Sound).l ; stop playing invincibility theme and resume normal level music Sonic_RmvInvin: @@ -23175,7 +23175,7 @@ Sonic_BubbleShield: Sonic_CheckTransform: cmpi.b #7,(Super_emerald_count).w ; does Sonic have all 7 Super Emeralds? bhs.s loc_119E8 ; if yes, branch - cmpi.b #7,(Emerald_count).w ; does Sonic have all 7 Chaos Emeralds? + cmpi.b #7,(Chaos_emerald_count).w ; does Sonic have all 7 Chaos Emeralds? blo.s Sonic_InstaShield ; if not, branch tst.b (Emeralds_converted_flag).w bne.s Sonic_InstaShield @@ -26004,7 +26004,7 @@ loc_13912: bne.s loc_13948 cmpi.b #$C,$2C(a0) blo.s loc_13948 - move.w (Level_music).w,d0 + move.w (Current_music).w,d0 jsr (Play_Sound).l loc_13948: @@ -26877,7 +26877,7 @@ loc_14340: move.w d1,d2 lsr.w #1,d2 add.w d2,d1 - move.w d1,(Target_camera_min_X_pos).w + move.w d1,(Camera_stored_min_X_pos).w move.w $10(a1),d1 sub.w $10(a0),d1 bpl.s loc_14358 @@ -26885,7 +26885,7 @@ loc_14340: loc_14358: lsr.w #2,d1 - move.w d1,(Target_camera_max_X_pos).w + move.w d1,(Camera_stored_max_X_pos).w bra.w loc_143AA ; --------------------------------------------------------------------------- @@ -26895,7 +26895,7 @@ loc_14362: move.w $10(a0),d0 move.w $14(a0),d1 subi.w #$10,d1 - move.w (Target_camera_max_X_pos).w,d2 + move.w (Camera_stored_max_X_pos).w,d2 bclr #0,$2A(a0) cmp.w $10(a1),d0 blo.s loc_14390 @@ -26906,7 +26906,7 @@ loc_14390: add.w d2,$18(a0) cmp.w $14(a1),d1 bhs.s loc_143AA - move.w (Target_camera_min_X_pos).w,d2 + move.w (Camera_stored_min_X_pos).w,d2 cmp.w $14(a1),d1 blo.s loc_143A6 neg.w d2 @@ -30174,7 +30174,7 @@ loc_1665E: bne.s loc_16694 cmpi.b #$C,$2C(a0) blo.s loc_16694 - move.w (Level_music).w,d0 + move.w (Current_music).w,d0 jsr (Play_Sound).l loc_16694: @@ -31920,7 +31920,7 @@ Knux_Test_For_Glide: bne.s loc_1786C cmpi.b #7,(Super_emerald_count).w bhs.s loc_1785E - cmpi.b #7,(Emerald_count).w + cmpi.b #7,(Chaos_emerald_count).w blo.s loc_1786C tst.b (Emeralds_converted_flag).w bne.s loc_1786C @@ -33040,7 +33040,7 @@ Player_ResetAirTimer: bhi.s loc_186BC ; branch if countdown hasn't started yet cmpa.w #Player_1,a1 bne.s loc_186BC ; branch if it isn't player 1 - move.w (Level_music).w,d0 ; prepare to play current level's music + move.w (Current_music).w,d0 ; prepare to play current level's music btst #Status_Invincible,status_secondary(a1) beq.s loc_186A0 ; branch if Sonic is not invincible move.w #mus_Invincibility,d0 ; prepare to play invincibility music @@ -33904,8 +33904,8 @@ Map_HyperSonicStars:include "General/Sprites/Sonic/Map - Hyper Sonic Stars.asm" Obj_Insta_Shield: ; Init move.l #Map_InstaShield,mappings(a0) - move.l #DPLC_InstaShield,DPLC_Address(a0) ; Used by PLCLoad_Shields - move.l #ArtUnc_InstaShield,Art_Address(a0) ; Used by PLCLoad_Shields + move.l #DPLC_InstaShield,shield_plc(a0) ; Used by PLCLoad_Shields + move.l #ArtUnc_InstaShield,shield_art(a0) ; Used by PLCLoad_Shields move.b #4,render_flags(a0) move.w #$80,priority(a0) move.b #$18,width_pixels(a0) @@ -33918,7 +33918,7 @@ Obj_Insta_Shield: .nothighpriority: move.w #1,anim(a0) ; Clear anim and set prev_anim to 1 - move.b #-1,LastLoadedDPLC(a0) ; Reset LastLoadedDPLC (used by PLCLoad_Shields) + move.b #-1,shield_prev_frame(a0) ; Reset shield_prev_frame (used by PLCLoad_Shields) move.l #Obj_Insta_Shield_Main,(a0) Obj_Insta_Shield_Main: @@ -33968,8 +33968,8 @@ locret_195A4: Obj_Fire_Shield: ; Init move.l #Map_FireShield,mappings(a0) - move.l #DPLC_FireShield,DPLC_Address(a0) ; Used by PLCLoad_Shields - move.l #ArtUnc_FireShield,Art_Address(a0) ; Used by PLCLoad_Shields + move.l #DPLC_FireShield,shield_plc(a0) ; Used by PLCLoad_Shields + move.l #ArtUnc_FireShield,shield_art(a0) ; Used by PLCLoad_Shields move.b #4,render_flags(a0) move.w #$80,priority(a0) move.b #$18,width_pixels(a0) @@ -33982,7 +33982,7 @@ Obj_Fire_Shield: loc_195F0: move.w #1,anim(a0) ; Clear anim and set prev_anim to 1 - move.b #-1,LastLoadedDPLC(a0) ; Reset LastLoadedDPLC (used by PLCLoad_Shields) + move.b #-1,shield_prev_frame(a0) ; Reset shield_prev_frame (used by PLCLoad_Shields) move.l #Obj_Fire_Shield_Main,(a0) Obj_Fire_Shield_Main: @@ -34051,8 +34051,8 @@ Obj_Lightning_Shield: jsr (Add_To_DMA_Queue).l move.l #Map_LightningShield,mappings(a0) - move.l #DPLC_LightningShield,DPLC_Address(a0) ; Used by PLCLoad_Shields - move.l #ArtUnc_LightningShield,Art_Address(a0) ; Used by PLCLoad_Shields + move.l #DPLC_LightningShield,shield_plc(a0) ; Used by PLCLoad_Shields + move.l #ArtUnc_LightningShield,shield_art(a0) ; Used by PLCLoad_Shields move.b #4,render_flags(a0) move.w #$80,priority(a0) move.b #$18,width_pixels(a0) @@ -34065,7 +34065,7 @@ Obj_Lightning_Shield: .nothighpriority: move.w #1,anim(a0) ; Clear anim and set prev_anim to 1 - move.b #-1,LastLoadedDPLC(a0) ; Reset LastLoadedDPLC (used by PLCLoad_Shields) + move.b #-1,shield_prev_frame(a0) ; Reset shield_prev_frame (used by PLCLoad_Shields) move.l #Obj_Lightning_Shield_Main,(a0) Obj_Lightning_Shield_Main: @@ -34214,8 +34214,8 @@ locret_198BC: Obj_Bubble_Shield: ; Init move.l #Map_BubbleShield,mappings(a0) - move.l #DPLC_BubbleShield,DPLC_Address(a0) ; Used by PLCLoad_Shields - move.l #ArtUnc_BubbleShield,Art_Address(a0) ; Used by PLCLoad_Shields + move.l #DPLC_BubbleShield,shield_plc(a0) ; Used by PLCLoad_Shields + move.l #ArtUnc_BubbleShield,shield_art(a0) ; Used by PLCLoad_Shields move.b #4,render_flags(a0) move.w #$80,priority(a0) move.b #$18,width_pixels(a0) @@ -34228,7 +34228,7 @@ Obj_Bubble_Shield: .nothighpriority: move.w #1,anim(a0) ; Clear anim and set prev_anim to 1 - move.b #-1,LastLoadedDPLC(a0) ; Reset LastLoadedDPLC (used by PLCLoad_Shields) + move.b #-1,shield_prev_frame(a0) ; Reset shield_prev_frame (used by PLCLoad_Shields) movea.w parent(a0),a1 bsr.w Player_ResetAirTimer move.l #Obj_Bubble_Shield_Main,(a0) @@ -34277,10 +34277,10 @@ Obj_Bubble_Shield_Destroy: PLCLoad_Shields: moveq #0,d0 move.b mapping_frame(a0),d0 - cmp.b LastLoadedDPLC(a0),d0 + cmp.b shield_prev_frame(a0),d0 beq.s locret_199E8 - move.b d0,LastLoadedDPLC(a0) - movea.l DPLC_Address(a0),a2 + move.b d0,shield_prev_frame(a0) + movea.l shield_plc(a0),a2 add.w d0,d0 adda.w (a2,d0.w),a2 move.w (a2)+,d5 @@ -34297,7 +34297,7 @@ PLCLoad_Shields_ReadEntry: addi.w #$10,d3 andi.w #$FFF,d1 lsl.l #5,d1 - add.l Art_Address(a0),d1 + add.l shield_art(a0),d1 move.w d4,d2 add.w d3,d4 add.w d3,d4 @@ -40180,7 +40180,7 @@ Monitor_Give_Lightning_Shield: andi.b #$8E,$2B(a1) bset #0,$2B(a1) bset #5,$2B(a1) - moveq #signextendB(sfx_ElectricShield),d0 + moveq #signextendB(sfx_LightningShield),d0 jsr (Play_Sound).l tst.b $43(a0) bne.s loc_1D9C2 @@ -56638,7 +56638,7 @@ loc_2927C: moveq #signextendB(sfx_Crash),d0 cmpi.b #2,(Current_zone).w beq.s loc_292C0 - moveq #signextendB(sfx_MetalLand),d0 + moveq #signextendB(sfx_MechaLand),d0 loc_292C0: jsr (Play_Sound_2).l @@ -63256,7 +63256,7 @@ loc_2E534: loc_2E540: tst.w (Special_stage_spheres_left).w bne.s loc_2E5B8 - cmpi.b #7,(Emerald_count).w + cmpi.b #7,(Chaos_emerald_count).w blo.s loc_2E5B8 cmpi.w #3,(Player_mode).w beq.s loc_2E570 @@ -63913,7 +63913,7 @@ loc_2EB64: bne.s loc_2EB88 loc_2EB7C: - cmpi.b #7,(Emerald_count).w + cmpi.b #7,(Chaos_emerald_count).w blo.w loc_2EA4A bra.s loc_2EB98 ; --------------------------------------------------------------------------- @@ -64052,7 +64052,7 @@ locret_2ECA6: sub_2ECA8: - lea (Emerald_count).w,a1 + lea (Chaos_emerald_count).w,a1 tst.w (SK_alone_flag).w bne.s locret_2ECBA tst.b (SK_special_stage_flag).w @@ -74261,7 +74261,7 @@ loc_36F9C: sub_36FAA: - tst.b (Competition_mode_monitors).w + tst.b (Competition_items).w bne.s locret_36FD8 lea (byte_36FDA).l,a4 adda.w d0,a4 @@ -74443,7 +74443,7 @@ loc_37232: move.w #$78,(Events_bg+$16).w tst.b (Not_ghost_flag).w beq.s loc_37256 - tst.b (Competition_mode_type).w + tst.b (Competition_type).w bne.s loc_37256 move.w #$168,(Events_bg+$16).w @@ -74474,7 +74474,7 @@ loc_37292: bset #4,4(a0) move.b #2,$3A(a0) move.w #$78,(Events_bg+$16).w - tst.b (Competition_mode_type).w + tst.b (Competition_type).w bne.s loc_372BC move.w #$168,(Events_bg+$16).w @@ -74491,7 +74491,7 @@ locret_372CE: loc_372D0: subq.b #1,d0 bne.w loc_373A4 - tst.b (Competition_mode_type).w + tst.b (Competition_type).w beq.s loc_37308 tst.b (Update_HUD_timer).w bpl.s locret_37306 @@ -74504,7 +74504,7 @@ loc_372EE: subq.w #1,(Events_bg+$16).w bpl.s locret_37306 move.b #$40,(Game_mode).w - tst.b (Competition_mode_type).w + tst.b (Competition_type).w bpl.s locret_37306 move.b #$50,(Game_mode).w @@ -74631,7 +74631,7 @@ locret_3742E: sub_37430: - tst.b (Competition_mode_type).w + tst.b (Competition_type).w bpl.w locret_374B6 moveq #0,d0 move.b (Current_zone).w,d0 @@ -88860,7 +88860,7 @@ loc_438CC: move.b (Level_frame_counter+1).w,d0 andi.b #$F,d0 bne.s loc_438FA - moveq #signextendB(sfx_MetalLand),d0 + moveq #signextendB(sfx_MechaLand),d0 jsr (Play_Sound_2).l loc_438FA: @@ -88929,7 +88929,7 @@ loc_439A4: move.b (Level_frame_counter+1).w,d0 andi.b #$F,d0 bne.s loc_439BC - moveq #signextendB(sfx_MetalLand),d0 + moveq #signextendB(sfx_MechaLand),d0 jsr (Play_Sound_2).l loc_439BC: @@ -105567,7 +105567,7 @@ loc_5075E: subq.w #1,d0 andi.w #$F,d0 bne.s locret_5077C - moveq #signextendB(sfx_EggmanSiren),d0 ; Every sixteenth frame, play alarm sound + moveq #signextendB(sfx_RobotnikSiren),d0 ; Every sixteenth frame, play alarm sound jsr (Play_Sound_2).l locret_5077C: @@ -107895,7 +107895,7 @@ loc_521D2: jsr (Create_New_Sprite).l bne.s CNZ2SE_Normal move.l #Obj_IncLevEndXGradual,(a1) - move.w #$49A0,(Target_camera_max_X_pos).w + move.w #$49A0,(Camera_stored_max_X_pos).w lea (a2),a6 jsr (Obj_PlayLevelMusic).l lea (a6),a2 @@ -117998,7 +117998,7 @@ loc_58B9E: movem.l (sp)+,d7-a0/a2-a3 cmpi.b #7,(Super_emerald_count).w bhs.s loc_58BBC - cmpi.b #7,(Emerald_count).w + cmpi.b #7,(Chaos_emerald_count).w blo.s loc_58C1A loc_58BBC: @@ -118562,7 +118562,7 @@ loc_590D6: loc_590E4: cmpi.b #7,(Super_emerald_count).w bhs.s loc_590F4 - cmpi.b #7,(Emerald_count).w + cmpi.b #7,(Chaos_emerald_count).w blo.s loc_59146 loc_590F4: @@ -121066,7 +121066,7 @@ Map_DEZ3Blocks: include "Levels/DEZ/Misc Object Data/Map - Act 3 Blocks.asm" ; --------------------------------------------------------------------------- HPZS_ScreenInit: - tst.b (Emerald_count).w + tst.b (Chaos_emerald_count).w beq.s loc_5AA14 move.b (Current_special_stage).w,d0 ori.b #$80,d0 @@ -121202,7 +121202,7 @@ loc_5AB66: loc_5AB6E: jsr sub_5AEEA(pc) - cmpi.b #7,(Emerald_count).w + cmpi.b #7,(Chaos_emerald_count).w blo.s loc_5AB96 moveq #0,d0 move.w (Events_bg+$06).w,d0 @@ -124637,7 +124637,7 @@ loc_5E2C2: moveq #8,d0 loc_5E316: - move.w d0,(Target_camera_max_X_pos).w + move.w d0,(Camera_stored_max_X_pos).w movea.l off_5E328(pc,d0.w),a1 move.w #$68E0,d2 jmp (Queue_Kos_Module).l @@ -124663,7 +124663,7 @@ loc_5E334: move.b #3,$22(a0) loc_5E37A: - move.w (Target_camera_max_X_pos).w,d0 + move.w (Camera_stored_max_X_pos).w,d0 movea.l off_5E3B4(pc,d0.w),a1 lea (Normal_palette_line_3).w,a2 moveq #7,d0 @@ -126459,7 +126459,7 @@ loc_5F85A: move.b #$C,5(a0) move.w #$CC,$14(a0) move.l #loc_5F89A,$34(a0) - moveq #signextendB(sfx_MetalLand),d0 + moveq #signextendB(sfx_MechaLand),d0 jsr (Play_Sound_2).l lea (byte_7D5AB).l,a1 jmp (Set_Raw_Animation).l @@ -127028,7 +127028,7 @@ sub_5FE82: cmpi.b #7,(Super_emerald_count).w beq.s loc_5FEA2 moveq #0,d0 - cmpi.b #7,(Emerald_count).w + cmpi.b #7,(Chaos_emerald_count).w beq.s loc_5FEA2 moveq #-2,d0 @@ -128239,7 +128239,7 @@ loc_6122A: bset #0,$2B(a1) moveq #5,d0 bsr.w sub_61254 - moveq #signextendB(sfx_ElectricShield),d0 + moveq #signextendB(sfx_LightningShield),d0 jmp (Play_Sound).l ; =============== S U B R O U T I N E ======================================= @@ -128590,7 +128590,7 @@ SSEntryRing_Init: bne.s SSEntryRing_Main ; If only Sonic and Knuckles, skip ahead bsr.w SSEntry_CheckLevel beq.s SSEntryRing_Main ; If in an S3 level, skip ahead since it's a normal ring - cmpi.b #7,(Emerald_count).w + cmpi.b #7,(Chaos_emerald_count).w bne.s SSEntryRing_Main ; Only make this a super emerald ring if you actually have 7 chaos emeralds loc_616C6: @@ -128625,7 +128625,7 @@ loc_6170A: bhs.s locret_61708 ; If player has died for whatever reason, don't do anything moveq #signextendB(sfx_BigRing),d0 jsr (Play_Sound_2).l ; Play the ring swish sound - cmpi.b #7,(Emerald_count).w + cmpi.b #7,(Chaos_emerald_count).w bne.s loc_6173A ; If chaos emeralds aren't collected, branch tst.w (SK_alone_flag).w bne.s loc_61794 ; If only Sonic and Knuckles and the emeralds are collected, go claim 50 rings @@ -128743,7 +128743,7 @@ SSEntryFlash_GoSS: bne.s loc_61892 ; If SK alone, go directly to special stage bsr.w SSEntry_CheckLevel beq.s loc_61892 ; Otherwise, do so if S3 levels - cmpi.b #7,(Emerald_count).w + cmpi.b #7,(Chaos_emerald_count).w bne.s loc_61892 ; or if chaos emeralds aren't collected bra.w loc_618AC ; When conditions are met, go to HPZ ; --------------------------------------------------------------------------- @@ -129315,8 +129315,8 @@ loc_62158: loc_6215E: lea ObjDat4_663BA(pc),a1 jsr (SetUp_ObjAttributesSlotted).l - move.w (Camera_min_Y_pos).w,(Target_camera_min_Y_pos).w - move.w (Camera_max_X_pos).w,(Target_camera_max_X_pos).w + move.w (Camera_min_Y_pos).w,(Camera_stored_min_Y_pos).w + move.w (Camera_max_X_pos).w,(Camera_stored_max_X_pos).w move.w #$3940,(Camera_max_X_pos).w lea ChildObjDat_665A2(pc),a2 jsr (CreateChild1_Normal).l @@ -129532,7 +129532,7 @@ loc_623FE: bmi.w locret_6206C lea ChildObjDat_66568(pc),a2 jsr (CreateChild1_Normal).l - move.w (Target_camera_max_Y_pos).w,(Camera_target_max_Y_pos).w + move.w (Camera_stored_max_Y_pos).w,(Camera_target_max_Y_pos).w loc_62422: lea (Target_palette_line_2).w,a1 @@ -129859,7 +129859,7 @@ loc_6278A: clr.b (_unkFAA9).w clr.b (Player_1+object_control).w clr.b (Player_2+object_control).w - move.w #$3B60,(Target_camera_max_X_pos).w + move.w #$3B60,(Camera_stored_max_X_pos).w lea (Child6_IncLevX).l,a2 jsr (CreateChild6_Simple).l move.w #$148,(Camera_target_max_Y_pos).w @@ -130671,7 +130671,7 @@ loc_63134: lea ObjDat4_663CC(pc),a1 jsr (SetUp_ObjAttributesSlotted).l move.l #loc_63182,$34(a0) - move.w (Camera_min_X_pos).w,(Target_camera_min_X_pos).w + move.w (Camera_min_X_pos).w,(Camera_stored_min_X_pos).w move.w (word_630DC).l,(_unkFAB4).w bsr.w sub_65DD6 st (Events_bg+$16).w @@ -132164,11 +132164,11 @@ loc_64310: move.l #Map_HPZKnucklesGrab,$C(a0) move.b #2,$22(a0) bset #4,$38(a0) - move.b #mus_HPZ,(Level_music+1).w + move.b #mus_LRZ2,(Current_music+1).w jsr (Create_New_Sprite).l bne.s locret_6434E move.l #Obj_Song_Fade_Transition,(a1) - move.b #mus_HPZ,$2C(a1) + move.b #mus_LRZ2,$2C(a1) locret_6434E: rts @@ -132312,7 +132312,7 @@ loc_644DA: move.l #Obj_DecLevStartYGradual,(a1) loc_644E8: - move.w (Target_camera_max_Y_pos).w,(Camera_target_max_Y_pos).w + move.w (Camera_stored_max_Y_pos).w,(Camera_target_max_Y_pos).w jsr (Create_New_Sprite).l bne.s loc_644FC move.l #Obj_IncLevEndYGradual,(a1) @@ -132664,7 +132664,7 @@ loc_648FA: clr.b (Scroll_lock).w move.w #$5C0,d0 move.w d0,(Camera_target_max_Y_pos).w - move.w d0,(Target_camera_max_Y_pos).w + move.w d0,(Camera_stored_max_Y_pos).w moveq #signextendB(sfx_BigRumble),d0 jsr (Play_Sound_2).l jsr (Create_New_Sprite).l @@ -132838,7 +132838,7 @@ loc_64B22: bclr #0,4(a0) move.w #$161C,$10(a0) move.w #$62C,$14(a0) - move.w #$1520,(Target_camera_min_X_pos).w + move.w #$1520,(Camera_stored_min_X_pos).w jsr (Create_New_Sprite).l bne.s loc_64B60 move.l #Obj_DecLevStartXGradual,(a1) @@ -134316,7 +134316,7 @@ loc_65C50: loc_65C56: clr.b (Ctrl_1_locked).w move.w #$1000,d0 - move.w d0,(Target_camera_max_Y_pos).w + move.w d0,(Camera_stored_max_Y_pos).w move.w d0,(Camera_target_max_Y_pos).w lea (Child6_IncLevY).l,a2 jmp (CreateChild6_Simple).l @@ -137279,7 +137279,7 @@ loc_68508: lea ObjDat3_68FFE(pc),a1 jsr (SetUp_ObjAttributes).l move.b #$60,$29(a0) - move.w (Camera_max_X_pos).w,(Target_camera_max_X_pos).w + move.w (Camera_max_X_pos).w,(Camera_stored_max_X_pos).w move.b #1,(Boss_flag).w moveq #$5A,d0 jmp (Load_PLC).l @@ -137332,7 +137332,7 @@ sub_6859C: move.w #$AF,$2E(a0) moveq #signextendB(mus_Miniboss),d0 jsr (Play_Sound).l - move.b #mus_Miniboss,(Level_music+1).w + move.b #mus_Miniboss,(Current_music+1).w rts ; End of function sub_6859C @@ -138605,7 +138605,7 @@ Obj_AIZ_EndBossMusic: move.l #Obj_AIZ_EndBossMain,(a0) moveq #signextendB(mus_EndBoss),d0 ; Play the boss music jsr (Play_Sound).l - move.b #mus_EndBoss,(Level_music+1).w + move.b #mus_EndBoss,(Current_music+1).w rts ; --------------------------------------------------------------------------- @@ -138838,7 +138838,7 @@ loc_694D4: loc_6950E: move.w (_unkFA84).w,d0 addi.w #$158,d0 - move.w d0,(Target_camera_max_X_pos).w + move.w d0,(Camera_stored_max_X_pos).w lea (Child6_IncLevX).l,a2 jmp (CreateChild6_Simple).l ; --------------------------------------------------------------------------- @@ -138913,7 +138913,7 @@ loc_695CE: move.b #-$35,$22(a1) jsr (Player_Load_PLC).l move.w #$1000,d0 - move.w d0,(Target_camera_max_Y_pos).w + move.w d0,(Camera_stored_max_Y_pos).w move.w d0,(Camera_target_max_Y_pos).w lea (Child6_IncLevY).l,a2 jmp (CreateChild6_Simple).l @@ -139817,7 +139817,7 @@ loc_69F22: ; --------------------------------------------------------------------------- loc_69F2C: - move.w (Camera_max_X_pos).w,(Target_camera_max_X_pos).w + move.w (Camera_max_X_pos).w,(Camera_stored_max_X_pos).w move.w $14(a0),$44(a0) move.l #Obj_Wait,(a0) move.w #$78,$2E(a0) @@ -139833,7 +139833,7 @@ loc_69F64: move.l #Obj_HCZ_MinibossLoop,(a0) moveq #signextendB(mus_Miniboss),d0 jsr (Play_Sound).l - move.b #mus_Miniboss,(Level_music+1).w + move.b #mus_Miniboss,(Current_music+1).w locret_69F78: rts @@ -140618,7 +140618,7 @@ loc_6A896: loc_6A8AE: jsr (Restore_PlayerControl).l - move.w #0,(Target_camera_min_Y_pos).w + move.w #0,(Camera_stored_min_Y_pos).w jsr (Make_LevelSizeObj).l loc_6A8C0: @@ -141521,7 +141521,7 @@ loc_6B0E8: clr.b (Boss_flag).w move.w (_unkFAB4).w,d0 addi.w #$180,d0 - move.w d0,(Target_camera_max_X_pos).w + move.w d0,(Camera_stored_max_X_pos).w lea (Child6_IncLevX).l,a2 jsr (CreateChild6_Simple).l cmpi.b #2,(Player_1+character_id).w @@ -142953,7 +142953,7 @@ Obj_MGZ2DrillingEggmanGo: move.l #Obj_MGZ2DrillingEggmanStart,(a0) moveq #signextendB(mus_EndBoss),d0 ; Play boss music jsr (Play_Sound).l - move.b #mus_EndBoss,(Level_music+1).w + move.b #mus_EndBoss,(Current_music+1).w locret_6BF96: rts @@ -143203,7 +143203,7 @@ loc_6C200: st (Events_fg_2).w btst #0,4(a0) bne.s loc_6C29E - move.w #$6000,(Target_camera_max_X_pos).w + move.w #$6000,(Camera_stored_max_X_pos).w jsr (Create_New_Sprite).l bne.s locret_6C29C move.l #Obj_IncLevEndXGradual,(a1) @@ -143213,7 +143213,7 @@ locret_6C29C: ; --------------------------------------------------------------------------- loc_6C29E: - clr.w (Target_camera_min_X_pos).w + clr.w (Camera_stored_min_X_pos).w jsr (Create_New_Sprite).l bne.s locret_6C2B0 move.l #Obj_DecLevStartXGradual,(a1) @@ -143327,7 +143327,7 @@ loc_6C3EC: move.b #4,5(a0) moveq #signextendB(mus_EndBoss),d0 jsr (Play_Sound).l - move.b #mus_EndBoss,(Level_music+1).w + move.b #mus_EndBoss,(Current_music+1).w move.w #$80,$1A(a0) move.w #$BF,$2E(a0) move.l #loc_6C422,$34(a0) @@ -143717,7 +143717,7 @@ loc_6C8B4: loc_6C8DC: move.w (_unkFAB4).w,d0 addi.w #$118,d0 - move.w d0,(Target_camera_max_X_pos).w + move.w d0,(Camera_stored_max_X_pos).w lea (Child6_IncLevX).l,a2 jmp (CreateChild6_Simple).l ; --------------------------------------------------------------------------- @@ -145364,7 +145364,7 @@ Obj_CNZMiniboss: ; --------------------------------------------------------------------------- loc_6D9A8: - move.w (Camera_max_X_pos).w,(Target_camera_max_X_pos).w ; X end to FFFA92 + move.w (Camera_max_X_pos).w,(Camera_stored_max_X_pos).w ; X end to FFFA92 move.w #$1C0,(Camera_min_Y_pos).w move.w d0,(Camera_min_X_pos).w ; Set X start addi.w #$80,d0 @@ -145387,7 +145387,7 @@ Obj_CNZMinibossGo: move.l #Obj_CNZMinibossStart,(a0) moveq #signextendB(mus_Miniboss),d0 jsr (Play_Sound).l ; Play miniboss music - move.b #mus_Miniboss,(Level_music+1).w + move.b #mus_Miniboss,(Current_music+1).w jsr (Create_New_Sprite).l bne.s locret_6DA22 move.l #Obj_CNZMinibossScrollControl,(a1) @@ -146586,7 +146586,7 @@ loc_6E6E4: clr.b (Boss_flag).w move.w (_unkFAB4).w,d0 addi.w #$190,d0 - move.w d0,(Target_camera_max_X_pos).w + move.w d0,(Camera_stored_max_X_pos).w jsr (Create_New_Sprite).l bne.s loc_6E718 move.l #Obj_81,(a1) @@ -146607,12 +146607,12 @@ loc_6E724: lea (Player_2).w,a1 jsr (Restore_PlayerControl2).l jsr (Obj_PlayLevelMusic).l - move.w #$200,(Target_camera_min_Y_pos).w + move.w #$200,(Camera_stored_min_Y_pos).w lea (Child6_DecLevY).l,a2 jsr (CreateChild6_Simple).l move.w (_unkFAB4).w,d0 addi.w #$310,d0 - move.w d0,(Target_camera_max_X_pos).w + move.w d0,(Camera_stored_max_X_pos).w lea (Child6_IncLevX).l,a2 jmp (CreateChild6_Simple).l ; --------------------------------------------------------------------------- @@ -147349,8 +147349,8 @@ loc_6EEA8: jsr (SetUp_ObjAttributes).l move.b #6,$29(a0) move.b #1,(Boss_flag).w - move.w (Camera_max_X_pos).w,(Target_camera_max_X_pos).w - move.w (Camera_max_Y_pos).w,(Target_camera_max_Y_pos).w + move.w (Camera_max_X_pos).w,(Camera_stored_max_X_pos).w + move.w (Camera_max_Y_pos).w,(Camera_stored_max_Y_pos).w move.w #$540,(Camera_target_max_Y_pos).w move.w #$2E20,$3A(a0) move.l #loc_6EF14,$34(a0) @@ -147371,7 +147371,7 @@ loc_6EF0E: loc_6EF14: move.b #4,5(a0) - move.w (Camera_max_X_pos).w,(Target_camera_max_X_pos).w + move.w (Camera_max_X_pos).w,(Camera_stored_max_X_pos).w move.w $3A(a0),d0 move.w d0,(Camera_min_X_pos).w addi.w #$80,d0 @@ -147404,7 +147404,7 @@ loc_6EF60: move.b #8,5(a0) moveq #signextendB(mus_Miniboss),d0 jsr (Play_Sound).l - move.b #mus_Miniboss,(Level_music+1).w + move.b #mus_Miniboss,(Current_music+1).w rts ; --------------------------------------------------------------------------- @@ -148099,7 +148099,7 @@ loc_6F702: move.b #$1E,5(a0) move.w #$1F,$2E(a0) move.l #loc_6F72E,$34(a0) - moveq #signextendB(sfx_MetalLand),d0 + moveq #signextendB(sfx_MechaLand),d0 jsr (Play_Sound_2).l rts ; --------------------------------------------------------------------------- @@ -148626,7 +148626,7 @@ loc_6FD38: move.b #$7F,$29(a0) move.b #6,$39(a0) move.b #1,(Boss_flag).w - move.w (Camera_target_max_Y_pos).w,(Target_camera_max_Y_pos).w + move.w (Camera_target_max_Y_pos).w,(Camera_stored_max_Y_pos).w move.w #$2900,(Camera_min_X_pos).w move.w #$5E0,(Camera_target_max_Y_pos).w lea PLC_705B6(pc),a1 @@ -149494,7 +149494,7 @@ loc_70870: move.w #$660,$14(a1) loc_70898: - move.w #$2FDC,(Target_camera_max_X_pos).w + move.w #$2FDC,(Camera_stored_max_X_pos).w lea (Child6_IncLevX).l,a2 jmp (CreateChild6_Simple).l ; --------------------------------------------------------------------------- @@ -149517,7 +149517,7 @@ loc_708AA: loc_708EE: move.w #$1000,(Camera_target_max_Y_pos).w - move.w #$3738,(Target_camera_max_X_pos).w + move.w #$3738,(Camera_stored_max_X_pos).w lea (Child6_IncLevX).l,a2 jsr (CreateChild6_Simple).l lea word_7091C(pc),a6 @@ -151357,7 +151357,7 @@ loc_71D9E: loc_71DC6: move.w (_unkFAB4).w,d0 addi.w #$130,d0 - move.w d0,(Target_camera_max_X_pos).w + move.w d0,(Camera_stored_max_X_pos).w jsr (Create_New_Sprite).l bne.s locret_71DE0 move.l #Obj_IncLevEndXGradual,(a1) @@ -151375,8 +151375,8 @@ loc_71DE2: lea (Player_2).w,a1 jsr (Restore_PlayerControl2).l jsr (Obj_PlayLevelMusic).l - move.w (Target_camera_max_Y_pos).w,(Camera_target_max_Y_pos).w - move.w #$47C0,(Target_camera_max_X_pos).w + move.w (Camera_stored_max_Y_pos).w,(Camera_target_max_Y_pos).w + move.w #$47C0,(Camera_stored_max_X_pos).w lea (Child6_IncLevX).l,a2 jsr (CreateChild6_Simple).l jmp (Go_Delete_Sprite_2).l @@ -154697,7 +154697,7 @@ loc_7403A: move.b #4,$2C(a1) loc_74086: - move.w #$3AB8,(Target_camera_max_X_pos).w + move.w #$3AB8,(Camera_stored_max_X_pos).w lea (Child6_IncLevX).l,a2 jmp (CreateChild6_Simple).l ; End of function sub_73FE2 @@ -155854,10 +155854,10 @@ loc_74DA4: lea (ChildObjDat_690D8).l,a2 jsr (CreateChild1_Normal).l move.w #$1000,d0 - move.w d0,(Target_camera_max_Y_pos).w + move.w d0,(Camera_stored_max_Y_pos).w move.w d0,(Camera_target_max_Y_pos).w - move.w #$6000,(Target_camera_max_X_pos).w - move.w #0,(Target_camera_min_Y_pos).w + move.w #$6000,(Camera_stored_max_X_pos).w + move.w #0,(Camera_stored_min_Y_pos).w lea (Child1_Act2LevelSize).l,a2 jmp (CreateChild1_Normal).l ; --------------------------------------------------------------------------- @@ -156387,7 +156387,7 @@ loc_75356: move.w #$4F,$2E(a0) move.l #loc_753A4,$34(a0) move.w #$6000,(Camera_target_max_X_pos).w - move.w #$6000,(Target_camera_max_X_pos).w + move.w #$6000,(Camera_stored_max_X_pos).w jsr (Create_New_Sprite).l bne.s locret_75390 move.l #loc_75E1A,(a1) @@ -157425,7 +157425,7 @@ loc_75E1A: move.l d1,$30(a0) swap d1 add.w d1,d0 - cmp.w (Target_camera_max_X_pos).w,d0 + cmp.w (Camera_stored_max_X_pos).w,d0 bhs.s loc_75E46 move.w d0,(Camera_max_X_pos).w move.w d0,$34(a0) @@ -157433,7 +157433,7 @@ loc_75E1A: ; --------------------------------------------------------------------------- loc_75E46: - move.w (Target_camera_max_X_pos).w,(Camera_max_X_pos).w + move.w (Camera_stored_max_X_pos).w,(Camera_max_X_pos).w loc_75E4C: jmp (Delete_Current_Sprite).l @@ -157680,7 +157680,7 @@ loc_760C4: move.l #loc_76896,(a1) loc_760F4: - move.w #$45A0,(Target_camera_max_X_pos).w + move.w #$45A0,(Camera_stored_max_X_pos).w lea (Child6_IncLevX).l,a2 jmp (CreateChild6_Simple).l ; --------------------------------------------------------------------------- @@ -157818,7 +157818,7 @@ loc_76270: jsr (sub_8638A).l move.w #$1BF,$2E(a0) move.w #$55,(Events_fg_4).w - move.w #$5000,(Target_camera_max_X_pos).w + move.w #$5000,(Camera_stored_max_X_pos).w bclr #5,$38(a0) lea ChildObjDat_7699C(pc),a2 jsr (CreateChild1_Normal).l @@ -157849,7 +157849,7 @@ loc_76318: ; --------------------------------------------------------------------------- loc_76356: - moveq #signextendB(sfx_EggmanSiren),d0 + moveq #signextendB(sfx_RobotnikSiren),d0 jsr (sub_85E52).l jsr (sub_8638A).l moveq #0,d1 @@ -158539,7 +158539,7 @@ loc_76AC8: move.l #loc_76B30,$34(a0) moveq #signextendB(mus_Miniboss),d0 jsr (Play_Sound).l - move.b #mus_Miniboss,(Level_music+1).w + move.b #mus_Miniboss,(Current_music+1).w move.w #$3F,$2E(a0) move.l #loc_76B30,$34(a0) jsr (Create_New_Sprite).l @@ -159308,8 +159308,8 @@ loc_77364: move.w #$40,$1A(a0) move.w #$BF,$2E(a0) clr.b (Update_HUD_timer).w - move.w (Camera_min_X_pos).w,(Target_camera_min_X_pos).w - move.w (Camera_max_X_pos).w,(Target_camera_max_X_pos).w + move.w (Camera_min_X_pos).w,(Camera_stored_min_X_pos).w + move.w (Camera_max_X_pos).w,(Camera_stored_max_X_pos).w move.w (Camera_X_pos).w,(Camera_min_X_pos).w move.w (Camera_X_pos).w,(Camera_max_X_pos).w lea (Child6_CreateBossExplosion).l,a2 @@ -159496,7 +159496,7 @@ loc_77710: move.b #6,5(a0) moveq #signextendB(mus_EndBoss),d0 jsr (Play_Sound).l - move.b #mus_EndBoss,(Level_music+1).w + move.b #mus_EndBoss,(Current_music+1).w loc_7772C: lea word_7775A(pc),a1 @@ -159670,7 +159670,7 @@ loc_77936: loc_77944: move.w #-$100,(Camera_min_Y_pos).w move.w #$800,(Camera_target_max_Y_pos).w - move.w #$5440,(Target_camera_max_X_pos).w + move.w #$5440,(Camera_stored_max_X_pos).w jsr (Create_New_Sprite).l bne.s locret_77964 move.l #Obj_IncLevEndXGradual,(a1) @@ -161615,7 +161615,7 @@ off_79016: dc.w loc_7901A-off_79016 ; --------------------------------------------------------------------------- loc_7901A: - moveq #signextendB(sfx_EggmanSiren),d0 + moveq #signextendB(sfx_RobotnikSiren),d0 jsr (sub_85E52).l loc_79022: @@ -161645,7 +161645,7 @@ loc_79054: loc_79072: tst.b 4(a0) bpl.s loc_790A6 - moveq #signextendB(sfx_EggmanSiren),d0 + moveq #signextendB(sfx_RobotnikSiren),d0 jsr (sub_85E52).l jsr (Swing_UpAndDown).l jsr (MoveSprite2).l @@ -162305,7 +162305,7 @@ loc_797C6: loc_797EC: move.l #loc_797FA,(a0) - move.b #mus_EndBoss,(Level_music+1).w + move.b #mus_EndBoss,(Current_music+1).w locret_797F8: rts @@ -162486,14 +162486,14 @@ loc_799E0: jsr (Create_New_Sprite).l bne.s loc_79A08 move.l #Obj_Song_Fade_Transition,(a1) - move.b #mus_HPZ,$2C(a1) + move.b #mus_LRZ2,$2C(a1) loc_79A08: jsr (Restore_PlayerControl).l lea (Player_2).w,a1 jsr (Restore_PlayerControl2).l clr.w (Ctrl_1_logical).w - move.w #$EC0,(Target_camera_max_X_pos).w + move.w #$EC0,(Camera_stored_max_X_pos).w jsr (Create_New_Sprite).l bne.s loc_79A30 move.l #Obj_IncLevEndXGradual,(a1) @@ -165047,7 +165047,7 @@ loc_7B4EC: clr.w $16(a0) clr.b $23(a0) clr.b $24(a0) - moveq #signextendB(sfx_MetalLand),d0 + moveq #signextendB(sfx_MechaLand),d0 jsr (Play_Sound_2).l btst #3,$38(a0) bne.s loc_7B520 @@ -165244,7 +165244,7 @@ loc_7B70E: move.w #$F,$2E(a0) move.l #loc_7B754,$34(a0) bset #2,$38(a0) - moveq #signextendB(sfx_MetalLand),d0 + moveq #signextendB(sfx_MechaLand),d0 jsr (Play_Sound_2).l lea ChildObjDat_7D480(pc),a2 jsr (CreateChild6_Simple).l @@ -165379,7 +165379,7 @@ loc_7B888: bsr.w sub_7C678 lea ChildObjDat_7D48C(pc),a2 jsr (CreateChild6_Simple).l - moveq #signextendB(sfx_MetalLand),d0 + moveq #signextendB(sfx_MechaLand),d0 jsr (Play_Sound_2).l tst.b (Current_act).w bne.s loc_7B8E6 @@ -165603,7 +165603,7 @@ loc_7BB20: loc_7BB7C: clr.b $38(a0) bset #7,$38(a0) - moveq #signextendB(sfx_MetalLand),d0 + moveq #signextendB(sfx_MechaLand),d0 jsr (Play_Sound_2).l lea (word_7D9EA).l,a1 bsr.w sub_7C678 @@ -165617,7 +165617,7 @@ locret_7BBAA: ; --------------------------------------------------------------------------- loc_7BBAC: - moveq #signextendB(sfx_MetalTransform),d0 + moveq #signextendB(sfx_MechaTransform),d0 jsr (sub_85E52).l jsr (Run_PalRotationScript).l bchg #6,(_unkFAB8).w @@ -165799,7 +165799,7 @@ off_7BD76: dc.w loc_7BDBE-off_7BD76 ; --------------------------------------------------------------------------- loc_7BDBE: - moveq #signextendB(sfx_MetalTransform),d0 + moveq #signextendB(sfx_MechaTransform),d0 jsr (sub_85E52).l jsr (Run_PalRotationScript).l bchg #6,(_unkFAB8).w @@ -166178,7 +166178,7 @@ loc_7C232: move.b #$20,5(a0) move.b #$1F,$1E(a0) move.l #loc_7C274,$34(a0) - moveq #signextendB(sfx_MetalLand),d0 + moveq #signextendB(sfx_MechaLand),d0 jsr (Play_Sound_2).l rts ; --------------------------------------------------------------------------- @@ -166201,7 +166201,7 @@ loc_7C274: move.w d0,$40(a0) clr.w $1A(a0) move.l #loc_7C2BE,$34(a0) - moveq #signextendB(sfx_MetalLand),d0 + moveq #signextendB(sfx_MechaLand),d0 jsr (Play_Sound_2).l lea byte_7D556(pc),a1 jmp (Set_Raw_Animation).l @@ -166318,7 +166318,7 @@ loc_7C3F8: loc_7C410: move.b #$30,5(a0) move.l #loc_7C436,$34(a0) - moveq #signextendB(sfx_MetalLand),d0 + moveq #signextendB(sfx_MechaLand),d0 jsr (Play_Sound_2).l lea byte_7D510(pc),a1 jmp (Set_Raw_Animation).l @@ -166345,7 +166345,7 @@ loc_7C458: loc_7C46A: move.b #$34,5(a0) - moveq #signextendB(sfx_MetalLand),d0 + moveq #signextendB(sfx_MechaLand),d0 jsr (Play_Sound_2).l bset #0,4(a0) move.w #$400,d0 @@ -166400,7 +166400,7 @@ loc_7C4F8: add.w d1,$14(a0) move.b #$38,5(a0) move.l #loc_7C522,$34(a0) - moveq #signextendB(sfx_MetalLand),d0 + moveq #signextendB(sfx_MechaLand),d0 jsr (Play_Sound_2).l lea byte_7D5C1(pc),a1 jmp (Set_Raw_Animation).l @@ -166438,7 +166438,7 @@ loc_7C55E: loc_7C578: move.b #0,5(a0) move.l #loc_7BDD8,$34(a0) - moveq #signextendB(sfx_MetalLand),d0 + moveq #signextendB(sfx_MechaLand),d0 jsr (Play_Sound_2).l lea byte_7D5B6(pc),a1 jsr Set_Raw_Animation(pc) @@ -166779,7 +166779,7 @@ loc_7C942: jmp (Go_Delete_Sprite).l ; --------------------------------------------------------------------------- -Obj_MetalSonic_Sparks: +Obj_MechaSonic_Sparks: lea ObjDat3_7D40E(pc),a1 jsr SetUp_ObjAttributes(pc) move.l #loc_7C964,(a0) @@ -166793,7 +166793,7 @@ loc_7C964: bne.w loc_7C8F8 cmpi.w #$E88,(Normal_palette_line_2+$12).w bne.w locret_7B448 - moveq #signextendB(sfx_MetalSpark),d0 + moveq #signextendB(sfx_MechaSpark),d0 jsr (Play_Sound_2).l moveq #0,d0 bchg #0,$39(a0) @@ -167932,7 +167932,7 @@ ChildObjDat_7D480:dc.b 0 ChildObjDat_7D486:dc.w 1 dc.l loc_7C8FE ChildObjDat_7D48C:dc.w 0 - dc.l Obj_MetalSonic_Sparks + dc.l Obj_MechaSonic_Sparks ChildObjDat_7D492:dc.w 0 dc.l loc_7C886 dc.b $FC @@ -168851,13 +168851,13 @@ loc_7E342: bpl.s locret_7E382 move.l #loc_7E384,(a0) st (Events_fg_4).w - move.w #0,(Target_camera_min_Y_pos).w + move.w #0,(Camera_stored_min_Y_pos).w jsr (Create_New_Sprite).l bne.s loc_7E366 move.l #Obj_DecLevStartYGradual,(a1) loc_7E366: - move.w #$2000,(Target_camera_max_Y_pos).w + move.w #$2000,(Camera_stored_max_Y_pos).w jsr (Create_New_Sprite).l bne.s loc_7E37A move.l #Obj_IncLevEndYGradual,(a1) @@ -170443,7 +170443,7 @@ loc_7F2B4: clr.b (Boss_flag).w moveq #signextendB(mus_DEZ2),d0 jsr (Play_Sound).l - move.w #$3620,(Target_camera_max_X_pos).w + move.w #$3620,(Camera_stored_max_X_pos).w jsr (Create_New_Sprite).l bne.s locret_7F2DA move.l #Obj_IncLevEndXGradual,(a1) @@ -172229,7 +172229,7 @@ loc_803D6: jsr (Go_Delete_Sprite).l cmpi.w #2,(Player_mode).w bhs.s loc_8040C - cmpi.b #7,(Emerald_count).w + cmpi.b #7,(Chaos_emerald_count).w bne.s loc_8040C move.w #$C00,d0 jmp (StartNewLevel).l @@ -173880,11 +173880,11 @@ loc_814B8: move.l (Camera_X_pos).w,d0 move.l d0,(_unkFA86).w swap d0 - move.w d0,(Target_camera_min_X_pos).w + move.w d0,(Camera_stored_min_X_pos).w move.w d0,(Camera_min_X_pos).w move.w d0,(Camera_max_X_pos).w addi.w #$140,d0 - move.w d0,(Target_camera_max_X_pos).w + move.w d0,(Camera_stored_max_X_pos).w jsr (Create_New_Sprite).l bne.s loc_81504 move.l #Obj_DecLevStartXGradual,(a1) @@ -173993,7 +173993,7 @@ loc_8160A: move.w #$100,(Deceleration).w move.b #0,(Player_1+invincibility_timer).w bset #Status_Invincible,(Player_1+status_secondary).w - moveq #signextendB(sfx_SuperAlt),d0 ; This is not the normal Super transformation SFX + moveq #signextendB(sfx_Whistle),d0 ; This is not the normal Super transformation SFX jmp (Play_Sound_2).l ; --------------------------------------------------------------------------- @@ -174155,7 +174155,7 @@ loc_81856: bset #3,$38(a0) move.w (Camera_min_X_pos).w,d0 subi.w #$100,d0 - move.w d0,(Target_camera_min_X_pos).w + move.w d0,(Camera_stored_min_X_pos).w jsr (Create_New_Sprite).l bne.s loc_81890 move.l #Obj_DecLevStartXGradual,(a1) @@ -174333,7 +174333,7 @@ loc_81A9C: clr.w $18(a0) jsr (Swing_Setup1).l move.w #0,d0 - move.w d0,(Target_camera_min_Y_pos).w + move.w d0,(Camera_stored_min_Y_pos).w addi.w #$C0,d0 move.w d0,$14(a0) jsr (Create_New_Sprite).l @@ -174342,7 +174342,7 @@ loc_81A9C: loc_81AFC: move.w #$120,d0 - move.w d0,(Target_camera_max_Y_pos).w + move.w d0,(Camera_stored_max_Y_pos).w move.w d0,(Camera_target_max_Y_pos).w jsr (Create_New_Sprite).l bne.s loc_81B16 @@ -178915,14 +178915,14 @@ Obj_IncLevEndXGradual: move.l d1,$30(a0) swap d1 add.w d1,d0 - cmp.w (Target_camera_max_X_pos).w,d0 + cmp.w (Camera_stored_max_X_pos).w,d0 bhs.s loc_84A6A move.w d0,(Camera_max_X_pos).w rts ; --------------------------------------------------------------------------- loc_84A6A: - move.w (Target_camera_max_X_pos).w,(Camera_max_X_pos).w + move.w (Camera_stored_max_X_pos).w,(Camera_max_X_pos).w jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- @@ -178933,14 +178933,14 @@ Obj_DecLevStartXGradual: move.l d1,$30(a0) swap d1 sub.w d1,d0 - cmp.w (Target_camera_min_X_pos).w,d0 + cmp.w (Camera_stored_min_X_pos).w,d0 ble.s loc_84A98 move.w d0,(Camera_min_X_pos).w rts ; --------------------------------------------------------------------------- loc_84A98: - move.w (Target_camera_min_X_pos).w,(Camera_min_X_pos).w + move.w (Camera_stored_min_X_pos).w,(Camera_min_X_pos).w jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- @@ -178951,14 +178951,14 @@ Obj_DecLevStartYGradual: move.l d1,$30(a0) swap d1 sub.w d1,d0 - cmp.w (Target_camera_min_Y_pos).w,d0 + cmp.w (Camera_stored_min_Y_pos).w,d0 ble.s loc_84AC6 move.w d0,(Camera_min_Y_pos).w rts ; --------------------------------------------------------------------------- loc_84AC6: - move.w (Target_camera_min_Y_pos).w,(Camera_min_Y_pos).w + move.w (Camera_stored_min_Y_pos).w,(Camera_min_Y_pos).w jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- @@ -178969,14 +178969,14 @@ Obj_IncLevEndYGradual: move.l d1,$30(a0) swap d1 add.w d1,d0 - cmp.w (Target_camera_max_Y_pos).w,d0 + cmp.w (Camera_stored_max_Y_pos).w,d0 bgt.s loc_84AF4 move.w d0,(Camera_max_Y_pos).w rts ; --------------------------------------------------------------------------- loc_84AF4: - move.w (Target_camera_max_Y_pos).w,(Camera_max_Y_pos).w + move.w (Camera_stored_max_Y_pos).w,(Camera_max_Y_pos).w jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- Child6_IncLevX: dc.w 0 @@ -181055,7 +181055,7 @@ loc_85B44: subq.w #1,$2E(a0) bpl.w locret_8405E move.b $2C(a0),d0 - move.b d0,(Level_music+1).w + move.b d0,(Current_music+1).w jsr (Play_Sound).l jmp (Delete_Current_Sprite).l @@ -181070,7 +181070,7 @@ Obj_PlayLevelMusic: add.b (a1),d0 lea (LevelMusic_Playlist).l,a2 move.b (a2,d0.w),d0 - move.w d0,(Level_music).w + move.w d0,(Current_music).w btst #Status_Invincible,(Player_1+status_secondary).w beq.s loc_85B84 moveq #signextendB(mus_Invincibility),d0 ; If invincible, play invincibility @@ -181211,7 +181211,7 @@ loc_85CA4: subq.w #1,$2E(a0) bpl.s loc_85CC6 move.b $26(a0),d0 - move.b d0,(Level_music+1).w + move.b d0,(Current_music+1).w jsr (Play_Sound).l bset #0,$27(a0) @@ -181286,10 +181286,10 @@ loc_85D70: move.w #$78,$2E(a0) loc_85D7E: - move.w (Camera_min_Y_pos).w,(Target_camera_min_Y_pos).w - move.w (Camera_target_max_Y_pos).w,(Target_camera_max_Y_pos).w - move.w (Camera_min_X_pos).w,(Target_camera_min_X_pos).w - move.w (Camera_max_X_pos).w,(Target_camera_max_X_pos).w + move.w (Camera_min_Y_pos).w,(Camera_stored_min_Y_pos).w + move.w (Camera_target_max_Y_pos).w,(Camera_stored_max_Y_pos).w + move.w (Camera_min_X_pos).w,(Camera_stored_min_X_pos).w + move.w (Camera_max_X_pos).w,(Camera_stored_max_X_pos).w move.w (a1)+,(_unkFAB0).w move.w (a1)+,(_unkFAB2).w move.w (a1)+,(_unkFAB4).w @@ -181309,11 +181309,11 @@ Change_Act2Sizes: lsl.w #4,d0 lea (LevelSizes).l,a1 lea 8(a1,d0.w),a1 ; Get level sizes for act 2 - move.w (a1)+,(Target_camera_min_X_pos).w - move.w (a1)+,(Target_camera_max_X_pos).w - move.w (a1)+,(Target_camera_min_Y_pos).w + move.w (a1)+,(Camera_stored_min_X_pos).w + move.w (a1)+,(Camera_stored_max_X_pos).w + move.w (a1)+,(Camera_stored_min_Y_pos).w move.w (a1)+,d1 - move.w d1,(Target_camera_max_Y_pos).w ; Put level sizes into the target size memory + move.w d1,(Camera_stored_max_Y_pos).w ; Put level sizes into the target size memory move.w d1,(Camera_target_max_Y_pos).w cmpi.b #$10,d0 beq.w locret_8405E ; If we're in HCZ, don't immediately apply these changes. There's another event to do. @@ -181350,11 +181350,11 @@ loc_85E0E: add.w d1,d0 lea (LevelSizes).l,a1 lea (a1,d0.w),a1 - move.w (a1)+,(Target_camera_min_X_pos).w - move.w (a1)+,(Target_camera_max_X_pos).w - move.w (a1)+,(Target_camera_min_Y_pos).w + move.w (a1)+,(Camera_stored_min_X_pos).w + move.w (a1)+,(Camera_stored_max_X_pos).w + move.w (a1)+,(Camera_stored_min_Y_pos).w move.w (a1)+,d1 - move.w d1,(Target_camera_max_Y_pos).w + move.w d1,(Camera_stored_max_Y_pos).w move.w d1,(Camera_target_max_Y_pos).w lea (Child7_ChangeLevSize).l,a2 jmp CreateChild7_Normal2(pc) @@ -181515,7 +181515,7 @@ loc_85F62: move.w (Player_mode).w,d0 cmpi.w #2,d0 beq.s loc_85F7E - cmpi.w #7,(Emerald_count).w + cmpi.w #7,(Emerald_counts).w beq.s loc_85F82 moveq #0,d0 rts @@ -188844,7 +188844,7 @@ loc_8A540: move.b #$12,5(a0) move.w #$1F,$2E(a0) move.l #loc_8A59A,$34(a0) - moveq #signextendB(sfx_MetalLand),d0 + moveq #signextendB(sfx_MechaLand),d0 jsr (Play_Sound_2).l rts ; --------------------------------------------------------------------------- @@ -189591,7 +189591,7 @@ loc_8AC54: move.l #loc_8ABB0,(a0) bclr #0,$38(a0) move.w #$10,(Screen_shake_flag).w - moveq #signextendB(sfx_MetalLand),d0 + moveq #signextendB(sfx_MechaLand),d0 jsr (Play_Sound_2).l rts @@ -193148,7 +193148,7 @@ loc_8CC8C: lea (ArtKosM_LBZMinibossBox).l,a1 move.w #-$7540,d2 jsr (Queue_Kos_Module).l - move.w #$3EA0,(Target_camera_max_X_pos).w + move.w #$3EA0,(Camera_stored_max_X_pos).w lea (Child6_IncLevX).l,a2 jmp (CreateChild6_Simple).l ; --------------------------------------------------------------------------- @@ -193449,7 +193449,7 @@ loc_8CFC8: move.l #loc_8D018,(a0) move.w #$1F,$2E(a0) move.w #$A80,d0 - move.w d0,(Target_camera_max_Y_pos).w + move.w d0,(Camera_stored_max_Y_pos).w move.w d0,(Camera_target_max_Y_pos).w jsr (Create_New_Sprite).l bne.s loc_8CFFE @@ -193751,7 +193751,7 @@ loc_8D2B6: moveq #signextendB(sfx_Rising),d0 jsr (Play_Sound_2).l st (Anim_Counters+$F).w - move.w #$6000,(Target_camera_max_X_pos).w + move.w #$6000,(Camera_stored_max_X_pos).w lea (Child6_IncLevX).l,a2 jsr (CreateChild6_Simple).l lea (Child1_MakeRoboShipFlame).l,a2 @@ -197877,10 +197877,10 @@ Obj_LRZRockCrusher: loc_900FE: jsr (Check_CameraInRange).l move.l #loc_901D0,(a0) - move.w (Camera_min_Y_pos).w,(Target_camera_min_Y_pos).w - move.w (Camera_target_max_Y_pos).w,(Target_camera_max_Y_pos).w - move.w (Camera_min_X_pos).w,(Target_camera_min_X_pos).w - move.w (Camera_max_X_pos).w,(Target_camera_max_X_pos).w + move.w (Camera_min_Y_pos).w,(Camera_stored_min_Y_pos).w + move.w (Camera_target_max_Y_pos).w,(Camera_stored_max_Y_pos).w + move.w (Camera_min_X_pos).w,(Camera_stored_min_X_pos).w + move.w (Camera_max_X_pos).w,(Camera_stored_max_X_pos).w move.w (a1),$1C(a0) move.w (a1)+,(Camera_max_X_pos).w move.w (a1)+,(Camera_target_max_Y_pos).w @@ -198023,7 +198023,7 @@ loc_902BE: moveq #0,d0 move.b $2C(a0),d0 move.w word_902EC(pc,d0.w),$3A(a0) - move.w (Target_camera_max_Y_pos).w,(Camera_target_max_Y_pos).w + move.w (Camera_stored_max_Y_pos).w,(Camera_target_max_Y_pos).w lea Child7_ChangeLevSize(pc),a2 jmp (CreateChild7_Normal2).l ; --------------------------------------------------------------------------- @@ -198263,7 +198263,7 @@ loc_9056E: move.w #$860,$14(a1) loc_90592: - move.w (Target_camera_max_Y_pos).w,(Camera_target_max_Y_pos).w + move.w (Camera_stored_max_Y_pos).w,(Camera_target_max_Y_pos).w lea Child7_ChangeLevSize(pc),a2 jsr (CreateChild7_Normal2).l jmp (Delete_Current_Sprite).l @@ -200362,8 +200362,8 @@ LevelLoadBlock: levartptrs $18, $19, $11, CNZ_8x8_KosM, CNZ_8x8_KosM, CNZ_16x16_Kos, CNZ_16x16_Kos, CNZ_128x128_Kos, CNZ_128x128_Kos ; CARNIVAL NIGHT ZONE ACT 2 levartptrs $1A, $1A, $12, ArtKosM_FBZ, ArtKosM_FBZ, FBZ_16x16_Kos, FBZ_16x16_Kos, FBZ_128x128_Kos, FBZ_128x128_Kos ; FLYING BATTERY ZONE ACT 1 levartptrs $1C, $1C, $13, ArtKosM_FBZ, ArtKosM_FBZ, FBZ_16x16_Kos, FBZ_16x16_Kos, FBZ_128x128_Kos, FBZ_128x128_Kos ; FLYING BATTERY ZONE ACT 2 - levartptrs $1E, $1E, $14, ICZ_8x8_Primary_KosM, ICZ1_8x8_Secondary_KosM, ICZ_16x16_Primary_Kos, ICZ1_16x16_Secondary_Kos, ICZ_128x128_Primary_Kos, ICZ1_128x128_Secondary_Kos ; ICE CAP ZONE ACT 1 - levartptrs $20, $20, $15, ICZ_8x8_Primary_KosM, ICZ2_8x8_Secondary_KosM, ICZ_16x16_Primary_Kos, ICZ2_16x16_Secondary_Kos, ICZ_128x128_Primary_Kos, ICZ2_128x128_Secondary_Kos ; ICE CAP ZONE ACT 2 + levartptrs $1E, $1E, $14, ICZ_8x8_Primary_KosM, ICZ1_8x8_Secondary_KosM, ICZ_16x16_Primary_Kos, ICZ1_16x16_Secondary_Kos, ICZ_128x128_Primary_Kos, ICZ1_128x128_Secondary_Kos ; ICECAP ZONE ACT 1 + levartptrs $20, $20, $15, ICZ_8x8_Primary_KosM, ICZ2_8x8_Secondary_KosM, ICZ_16x16_Primary_Kos, ICZ2_16x16_Secondary_Kos, ICZ_128x128_Primary_Kos, ICZ2_128x128_Secondary_Kos ; ICECAP ZONE ACT 2 levartptrs $22, $22, $16, LBZ_8x8_Primary_KosM, LBZ1_8x8_Secondary_KosM, LBZ_16x16_Primary_Kos, LBZ1_16x16_Secondary_Kos, LBZ1_128x128_Kos, LBZ1_128x128_Kos ; LAUNCH BASE ZONE ACT 1 levartptrs $24, $25, $17, LBZ_8x8_Primary_KosM, LBZ2_8x8_Secondary_KosM, LBZ_16x16_Primary_Kos, LBZ2_16x16_Secondary_Kos, LBZ2_128x128_Kos, LBZ2_128x128_Kos ; LAUNCH BASE ZONE ACT 2 levartptrs $26, $26, $18, ArtKosM_MHZ_Primary, ArtKosM_MHZ_Secondary, MHZ_16x16_Primary_Kos, MHZ_16x16_Secondary_Kos, MHZ_128x128_Primary_Kos, MHZ_128x128_Secondary_Kos ; MUSHROOM HILL ZONE ACT 1 @@ -200964,10 +200964,10 @@ off_92A1C: dc.w loc_92A20-off_92A1C loc_92A20: addq.b #2,(Debug_placement_routine).w - move.l $C(a0),(Debug_P1_mappings).w + move.l $C(a0),(Debug_saved_mappings).w cmpi.b #6,5(a0) bhs.s loc_92A38 - move.w $A(a0),(Debug_P2_mappings).w + move.w $A(a0),(Debug_saved_art_tile).w loc_92A38: move.w (Screen_Y_wrap_value).w,d0 @@ -201150,8 +201150,8 @@ loc_92C0C: move.b #-$80,(Update_HUD_ring_count).w move #$2300,sr lea (Player_1).w,a1 - move.l (Debug_P1_mappings).w,$C(a1) - move.w (Debug_P2_mappings).w,$A(a1) + move.l (Debug_saved_mappings).w,$C(a1) + move.w (Debug_saved_art_tile).w,$A(a1) bsr.s sub_92C54 move.b #$13,$1E(a1) move.b #9,$1F(a1) diff --git a/sonic3k.constants.asm b/sonic3k.constants.asm index 84e49017..1e93f037 100644 --- a/sonic3k.constants.asm +++ b/sonic3k.constants.asm @@ -189,9 +189,9 @@ Status_BublShield = 6 ; --------------------------------------------------------------------------- ; Elemental Shield DPLC variables -LastLoadedDPLC = $34 -Art_Address = $38 -DPLC_Address = $3C +shield_prev_frame = $34 +shield_art = $38 +shield_plc = $3C ; --------------------------------------------------------------------------- ; Address equates @@ -434,7 +434,7 @@ Not_ghost_flag ds.b 1 ; set if Player 2 in competition mode isn't a ghost of Competition_menu_zone ds.b 1 ; competition mode zone id. This is different from the zone order in game Dataselect_entry ds.b 1 ; the selected save entry in data select menu. This includes no save and delete options, too Dataselect_nosave_player ds.w 1 ; Player mode for NO SAVE option in data select menu -Competition_menu_monitors ds.b 1 ; 0 = Enabled, FF = Disabled +Competition_menu_items ds.b 1 ; 0 = Enabled, FF = Disabled ds.b 1 ; unused Demo_start_button ds.b 1 ; keeps track of whether controller 1 has pressed the start button. May be used by the demo data itself ds.b 1 ; unused @@ -661,10 +661,10 @@ _unkFA8A ds.w 1 _unkFA8C ds.w 1 ; unused? _unkFA8E ds.w 1 _unkFA90 ds.w 1 -Target_camera_max_X_pos ds.w 1 ; the target camera maximum x-position -Target_camera_min_X_pos ds.w 1 ; the target camera minimum x-position -Target_camera_min_Y_pos ds.w 1 ; the target camera minimum y-position -Target_camera_max_Y_pos ds.w 1 ; the target camera maximum y-position +Camera_stored_max_X_pos ds.w 1 ; the target camera maximum x-position +Camera_stored_min_X_pos ds.w 1 ; the target camera minimum x-position +Camera_stored_min_Y_pos ds.w 1 ; the target camera minimum y-position +Camera_stored_max_Y_pos ds.w 1 ; the target camera maximum y-position Slotted_object_bits ds.w 1 ; bits to determine which slots are used for slotted objects ds.b 6 ; unused _unkFAA2 ds.b 1 @@ -865,12 +865,13 @@ Sound_test_sound ds.w 1 Title_screen_option ds.b 1 ds.b 1 ; unused _tempFF88 ds.w 1 ; this is used in Sonic 3 Alone, but unused in Sonic & Knuckles and Sonic 3 Complete -Competition_mode_monitors ds.b 1 ; 0 = Enabled, FF = Disabled. -Competition_mode_type ds.b 1 ; 0 = grand prix, 3 = match race, -1 = time attack +Competition_settings = * ; both items and game type +Competition_items ds.b 1 ; 0 = Enabled, FF = Disabled. +Competition_type ds.b 1 ; 0 = grand prix, 3 = match race, -1 = time attack _tempFF8C ds.b 1 ; this is used in Sonic 3 Alone, but unused in Sonic & Knuckles and Sonic 3 Complete ds.b 1 ; unused Total_bonus_countup ds.w 1 ; the total points to be added due to various bonuses this frame in the end of level results screen -Level_music ds.w 1 +Current_music ds.w 1 Collected_special_ring_array ds.l 1 ; each bit indicates a special stage entry ring in the current zone Saved2_status_secondary ds.b 1 Respawn_table_keep ds.b 1 ; if set, respawn table is not reset during level load @@ -887,9 +888,9 @@ Blue_spheres_current_level ds.l 1 ; number shown at the top of the full game m Blue_spheres_option ds.b 1 ; 0 = level, 1 = start, 2 = code Blue_spheres_progress_flag ds.b 1 ; 0 = normal, -1 = disabled (single stage mode or using a code from single stage mode) Blue_spheres_difficulty ds.b 1 ; value currently displayed -Blue_spheres_target_difficulty ds.b 1 ; byte ; value read from the layout +Blue_spheres_target_difficulty ds.b 1 ; value read from the layout SK_alone_flag ds.w 1 ; -1 if Sonic 3 isn't locked on -Emerald_count = * ; both chaos and super emeralds +Emerald_counts = * ; both chaos and super emeralds Chaos_emerald_count ds.b 1 Super_emerald_count ds.b 1 Collected_emeralds_array ds.b 7 ; 1 byte per emerald, 0 = not collected, 1 = chaos emerald collected, 2 = grey super emerald, 3 = super emerald collected @@ -904,8 +905,8 @@ Title_anim_frame ds.b 1 ; title animation frame number Next_extra_life_score ds.l 1 Next_extra_life_score_P2 ds.l 1 ; left over from Sonic 2 ds.w 1 ; unused -Debug_P1_mappings ds.l 1 ; player 1 mappings while in debug mode -Debug_P2_mappings ds.w 1 ; long! ; player 2 mappings while in debug mode +Debug_saved_mappings ds.l 1 ; player 1 mappings before entering debug mode +Debug_saved_art_tile ds.w 1 ; player 1 art_tile before entering debug mode Demo_mode_flag := * ; S3 uses a different address ds.w 1 Next_demo_number := * ; S3 uses a different address @@ -946,7 +947,8 @@ H_int_jump := * ; S3 uses a different address ds.b 6 ; contains an instruction to jump to the H-int handler H_int_addr := H_int_jump+2 ; long Checksum_string := * ; S3 uses a different address - ds.l 1 ; set to 'SM&K' once the checksum routine has run + ds.l 1 ; set to Ref_Checksum_String once the checksum routine has run +Ref_Checksum_String := 'SM&K' .check = (*)&$FFFFFF if (.check>0)&(.check<$FF0000) @@ -984,7 +986,7 @@ Special_stage_prev_Y_pos ds.w 1 Special_stage_spheres_left ds.w 1 Special_stage_ring_count ds.w 1 Special_stage_sphere_HUD_flag ds.b 1 -Special_stage_extra_life_flags ds.b 1 ; byte ; when bit 7 is set, the ring HUD is updated +Special_stage_extra_life_flags ds.b 1 ; when bit 7 is set, the ring HUD is updated Special_stage_rate_timer ds.w 1 ; when this reaches 0, the special stage speeds up Special_stage_jumping_P2 ds.b 1 ; $80 = normal jump, $81 = spring ds.b 1 ; unused @@ -1054,7 +1056,7 @@ mus_Stop ds.b 1 ; $E2 - stop music and sound effects mus_MutePSG ds.b 1 ; $E3 - mute all PSG channels mus_StopSFX ds.b 1 ; $E4 - stop all sound effects mus_FadeOut2 ds.b 1 ; $E5 - fade out music (duplicate) -Mus__EndCmd = * ; next ID after last sound command +mus__EndCmd = * ; next ID after last sound command mus_S2SEGA = $FA ; $FA - SEGA sound ID in Sonic 2 mus_StopSEGA = $FE ; $FE - Stop SEGA sound @@ -1064,7 +1066,7 @@ mus_SEGA = $FF ; $FF - Play SEGA sound ; Music ID's list. These do not affect the sound driver, be careful. phase $01 -Mus__First = * ; ID of the first music +mus__First = * ; ID of the first music mus_AIZ1 ds.b 1 ; $01 mus_AIZ2 ds.b 1 ; $02 mus_HCZ1 ds.b 1 ; $03 @@ -1084,16 +1086,16 @@ mus_MHZ2 ds.b 1 ; $10 mus_SOZ1 ds.b 1 ; $11 mus_SOZ2 ds.b 1 ; $12 mus_LRZ1 ds.b 1 ; $13 -mus_HPZ ds.b 1 ; $14 +mus_LRZ2 ds.b 1 ; $14 mus_SSZ ds.b 1 ; $15 mus_DEZ1 ds.b 1 ; $16 mus_DEZ2 ds.b 1 ; $17 mus_MinibossK ds.b 1 ; $18 mus_EndBoss ds.b 1 ; $19 mus_DDZ ds.b 1 ; $1A -mus_MagneticOrbs ds.b 1 ; $1B +mus_Pachinko ds.b 1 ; $1B mus_SpecialStage ds.b 1 ; $1C -mus_SlotMachine ds.b 1 ; $1D +mus_Slots ds.b 1 ; $1D mus_Gumball ds.b 1 ; $1E mus_Knuckles ds.b 1 ; $1F mus_ALZ ds.b 1 ; $20 @@ -1115,14 +1117,14 @@ mus_DataSelect ds.b 1 ; $2F mus_FinalBoss ds.b 1 ; $30 mus_Drowning ds.b 1 ; $31 mus_Ending ds.b 1 ; $32 -Mus__End = * ; next ID after last music +mus__End = * ; next ID after last music dephase ; --------------------------------------------------------------------------- ; Sound effect ID's list. These do not affect the sound driver, be careful. phase $33 -sfx_First = * ; ID of the first sound effect +sfx__First = * ; ID of the first sound effect sfx_RingRight ds.b 1 ; $33 sfx_RingLeft ds.b 1 ; $34 sfx_Death ds.b 1 ; $35 @@ -1137,12 +1139,12 @@ sfx_Break ds.b 1 ; $3D sfx_FireShield ds.b 1 ; $3E sfx_BubbleShield ds.b 1 ; $3F sfx_UnknownShield ds.b 1 ; $40 -sfx_ElectricShield ds.b 1 ; $41 +sfx_LightningShield ds.b 1 ; $41 sfx_InstaAttack ds.b 1 ; $42 sfx_FireAttack ds.b 1 ; $43 sfx_BubbleAttack ds.b 1 ; $44 sfx_ElectricAttack ds.b 1 ; $45 -sfx_SuperAlt ds.b 1 ; $46 +sfx_Whistle ds.b 1 ; $46 sfx_SandwallRise ds.b 1 ; $47 sfx_Blast ds.b 1 ; $48 sfx_Thump ds.b 1 ; $49 @@ -1164,7 +1166,7 @@ sfx_FanLatch ds.b 1 ; $58 sfx_Collapse ds.b 1 ; $59 sfx_UnknownCharge ds.b 1 ; $5A sfx_Switch ds.b 1 ; $5B -sfx_MetalSpark ds.b 1 ; $5C +sfx_MechaSpark ds.b 1 ; $5C sfx_FloorThump ds.b 1 ; $5D sfx_Lazer ds.b 1 ; $5E sfx_Crash ds.b 1 ; $5F @@ -1222,7 +1224,7 @@ sfx_GhostAppear ds.b 1 ; $92 sfx_BossRecovery ds.b 1 ; $93 sfx_ChainTick ds.b 1 ; $94 sfx_BossHand ds.b 1 ; $95 -sfx_MetalLand ds.b 1 ; $96 +sfx_MechaLand ds.b 1 ; $96 sfx_EnemyBreath ds.b 1 ; $97 sfx_BossProjectile ds.b 1 ; $98 sfx_UnknownPlink ds.b 1 ; $99 @@ -1236,7 +1238,7 @@ sfx_MissileShoot ds.b 1 ; $A0 sfx_UnknownOminous ds.b 1 ; $A1 sfx_FloorLauncher ds.b 1 ; $A2 sfx_GravityLift ds.b 1 ; $A3 -sfx_MetalTransform ds.b 1 ; $A4 +sfx_MechaTransform ds.b 1 ; $A4 sfx_UnknownRise ds.b 1 ; $A5 sfx_LaunchGrab ds.b 1 ; $A6 sfx_LaunchReady ds.b 1 ; $A7 @@ -1263,7 +1265,7 @@ sfx_FlyTired ds.b 1 ; $BB sfx__FirstContinuous = * ; ID of the first continuous sound effect sfx_SlideSkidLoud ds.b 1 ; $BC sfx_LargeShip ds.b 1 ; $BD -sfx_EggmanSiren ds.b 1 ; $BE +sfx_RobotnikSiren ds.b 1 ; $BE sfx_BossRotate ds.b 1 ; $BF sfx_FanBig ds.b 1 ; $C0 sfx_FanSmall ds.b 1 ; $C1 From fc967dc834347b2368e28e48fbdff586550ee6ac Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Sun, 26 Dec 2021 01:04:43 +0000 Subject: [PATCH 41/72] Rename shield labels --- s3.asm | 126 ++++++++++++++++++++++++------------------------ sonic3k.asm | 136 ++++++++++++++++++++++++++-------------------------- 2 files changed, 131 insertions(+), 131 deletions(-) diff --git a/s3.asm b/s3.asm index 3561d3e2..d2ff95f9 100644 --- a/s3.asm +++ b/s3.asm @@ -5927,7 +5927,7 @@ loc_4EF2: andi.b #$8E,$2B(a1) bset #0,$2B(a1) bset #4,$2B(a1) - move.l #Obj_Fire_Shield,(Shield).w + move.l #Obj_FireShield,(Shield).w move.w a1,(Shield+parent).w rts ; --------------------------------------------------------------------------- @@ -5938,7 +5938,7 @@ loc_4F18: andi.b #$8E,$2B(a1) bset #0,$2B(a1) bset #5,$2B(a1) - move.l #Obj_Lightning_Shield,(Shield).w + move.l #Obj_LightningShield,(Shield).w move.w a1,(Shield+parent).w rts ; --------------------------------------------------------------------------- @@ -5949,7 +5949,7 @@ loc_4F3E: andi.b #$8E,$2B(a1) bset #0,$2B(a1) bset #6,$2B(a1) - move.l #Obj_Bubble_Shield,(Shield).w + move.l #Obj_BubbleShield,(Shield).w move.w a1,(Shield+parent).w rts ; --------------------------------------------------------------------------- @@ -5969,7 +5969,7 @@ SpawnLevelMainSprites_SpawnPlayers: bne.s loc_4FC2 move.l #Obj_Sonic,(Player_1).w move.l #Obj_DashDust,(Dust).w - move.l #Obj_Insta_Shield,(Shield).w + move.l #Obj_InstaShield,(Shield).w move.w #Player_1,(Shield+parent).w move.l #Obj_Tails,(Player_2).w move.w (Player_1+x_pos).w,(Player_2+x_pos).w @@ -5986,7 +5986,7 @@ loc_4FC2: bne.s loc_4FE6 move.l #Obj_Sonic,(Player_1).w move.l #Obj_DashDust,(Dust).w - move.l #Obj_Insta_Shield,(Shield).w + move.l #Obj_InstaShield,(Shield).w move.w #Player_1,(Shield+parent).w rts ; --------------------------------------------------------------------------- @@ -27963,7 +27963,7 @@ Map_SuperSonic_Stars: include "General/Sprites/Shields/Map - Super Sonic Stars.asm" ; --------------------------------------------------------------------------- -Obj_Insta_Shield: +Obj_InstaShield: move.l #Map_InstaShield,$C(a0) move.l #DPLC_InstaShield,$3C(a0) move.l #ArtUnc_InstaShield,$38(a0) @@ -27980,9 +27980,9 @@ Obj_Insta_Shield: loc_180DE: move.w #1,$20(a0) move.b #-1,$34(a0) - move.l #Obj_Insta_Shield_Main,(a0) + move.l #Obj_InstaShield_Main,(a0) -Obj_Insta_Shield_Main: +Obj_InstaShield_Main: movea.w $42(a0),a2 btst #1,$2B(a2) bne.s locret_18158 @@ -28019,7 +28019,7 @@ locret_18158: rts ; --------------------------------------------------------------------------- -Obj_Fire_Shield: +Obj_FireShield: move.l #Map_FireShield,$C(a0) move.l #DPLC_FireShield,$3C(a0) move.l #ArtUnc_FireShield,$38(a0) @@ -28036,18 +28036,18 @@ Obj_Fire_Shield: loc_181A4: move.w #1,$20(a0) move.b #-1,$34(a0) - move.l #Obj_Fire_Shield_Main,(a0) + move.l #Obj_FireShield_Main,(a0) -Obj_Fire_Shield_Main: +Obj_FireShield_Main: movea.w $42(a0),a2 btst #1,$2B(a2) bne.s locret_18236 cmpi.b #$1C,$20(a2) beq.s locret_18236 btst #0,$2B(a2) - beq.w Obj_Fire_Shield_Destroy + beq.w Obj_FireShield_Destroy btst #6,$2A(a2) - bne.s Obj_Fire_Shield_DestroyUnderwater + bne.s Obj_FireShield_DestroyUnderwater move.w $10(a2),$10(a0) move.w $14(a2),$14(a0) tst.b $20(a0) @@ -28076,22 +28076,22 @@ locret_18236: rts ; --------------------------------------------------------------------------- -Obj_Fire_Shield_DestroyUnderwater: +Obj_FireShield_DestroyUnderwater: andi.b #-$72,$2B(a2) jsr (Create_New_Sprite).l - bne.w Obj_Fire_Shield_Destroy + bne.w Obj_FireShield_Destroy move.l #Obj_FireShield_Dissipate,(a1) move.w $10(a0),$10(a1) move.w $14(a0),$14(a1) -Obj_Fire_Shield_Destroy: +Obj_FireShield_Destroy: andi.b #$8E,$2B(a2) - move.l #Obj_Insta_Shield,(a0) + move.l #Obj_InstaShield,(a0) rts ; --------------------------------------------------------------------------- -Obj_Lightning_Shield: - move.l #ArtUnc_Obj_Lightning_Shield_Sparks,d1 +Obj_LightningShield: + move.l #ArtUnc_LightningShield_Sparks,d1 move.w #tiles_to_bytes(ArtTile_Shield_Sparks),d2 move.w #$50,d3 jsr (Add_To_DMA_Queue).l @@ -28111,18 +28111,18 @@ Obj_Lightning_Shield: loc_182C6: move.w #1,$20(a0) move.b #-1,$34(a0) - move.l #Obj_Lightning_Shield_Main,(a0) + move.l #Obj_LightningShield_Main,(a0) -Obj_Lightning_Shield_Main: +Obj_LightningShield_Main: movea.w $42(a0),a2 btst #1,$2B(a2) bne.s locret_1835E cmpi.b #$1C,$20(a2) beq.s locret_1835E btst #0,$2B(a2) - beq.w Obj_Lightning_Shield_Destroy + beq.w Obj_LightningShield_Destroy btst #6,$2A(a2) - bne.s Obj_Lightning_Shield_DestroyUnderwater + bne.s Obj_LightningShield_DestroyUnderwater move.w $10(a2),$10(a0) move.w $14(a2),$14(a0) move.b $2A(a2),$2A(a0) @@ -28134,11 +28134,11 @@ Obj_Lightning_Shield_Main: loc_18328: tst.b $20(a0) - beq.s Obj_Lightning_Shield_Display - bsr.s Obj_Lightning_Shield_Create_Spark + beq.s Obj_LightningShield_Display + bsr.s Obj_LightningShield_CreateSpark clr.b $20(a0) -Obj_Lightning_Shield_Display: +Obj_LightningShield_Display: lea (Ani_LightningShield).l,a1 jsr (Animate_Sprite).l move.w #$80,8(a0) @@ -28155,9 +28155,9 @@ locret_1835E: rts ; --------------------------------------------------------------------------- -Obj_Lightning_Shield_DestroyUnderwater: +Obj_LightningShield_DestroyUnderwater: tst.w (Palette_fade_timer).w - bne.s Obj_Lightning_Shield_Destroy + bne.s Obj_LightningShield_Destroy andi.b #$8E,$2B(a2) lea (Water_palette).w,a1 lea (Target_water_palette).w,a2 @@ -28169,26 +28169,26 @@ loc_18378: dbf d0,loc_18378 move.w #0,(Water_palette_line_3).w move.b #3,$24(a0) - move.l #Obj_Lightning_Shield_DestroyUnderwater2,(a0) + move.l #Obj_LightningShield_DestroyUnderwater2,(a0) rts ; --------------------------------------------------------------------------- -Obj_Lightning_Shield_Destroy: +Obj_LightningShield_Destroy: andi.b #$8E,$2B(a2) - move.l #Obj_Insta_Shield,(a0) + move.l #Obj_InstaShield,(a0) rts ; =============== S U B R O U T I N E ======================================= -Obj_Lightning_Shield_Create_Spark: +Obj_LightningShield_CreateSpark: lea (SparkVelocities).l,a2 moveq #3,d1 loc_183AE: bsr.w Create_New_Sprite bne.s locret_183FC - move.l #Obj_Lightning_Shield_Spark,(a1) + move.l #Obj_LightningShield_Spark,(a1) move.w $10(a0),$10(a1) move.w $14(a0),$14(a1) move.l $C(a0),$C(a1) @@ -28204,7 +28204,7 @@ loc_183AE: locret_183FC: rts -; End of function Obj_Lightning_Shield_Create_Spark +; End of function Obj_LightningShield_CreateSpark ; --------------------------------------------------------------------------- SparkVelocities:dc.w -$200, -$200 @@ -28213,21 +28213,21 @@ SparkVelocities:dc.w -$200, -$200 dc.w $200, $200 ; --------------------------------------------------------------------------- -Obj_Lightning_Shield_Spark: +Obj_LightningShield_Spark: jsr (MoveSprite2).l addi.w #$18,$1A(a0) lea (Ani_LightningShield).l,a1 jsr (Animate_Sprite).l tst.b 5(a0) - bne.s Obj_Lightning_Shield_Spark_Delete + bne.s Obj_LightningShield_Spark_Delete jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -Obj_Lightning_Shield_Spark_Delete: +Obj_LightningShield_Spark_Delete: jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- -Obj_Lightning_Shield_DestroyUnderwater2: +Obj_LightningShield_DestroyUnderwater2: subq.b #1,$24(a0) bpl.s locret_18456 lea (Target_water_palette).w,a1 @@ -28237,13 +28237,13 @@ Obj_Lightning_Shield_DestroyUnderwater2: loc_1844A: move.l (a1)+,(a2)+ dbf d0,loc_1844A - move.l #Obj_Insta_Shield,(a0) + move.l #Obj_InstaShield,(a0) locret_18456: rts ; --------------------------------------------------------------------------- -Obj_Bubble_Shield: +Obj_BubbleShield: move.l #Map_BubbleShield,$C(a0) move.l #DPLC_BubbleShield,$3C(a0) move.l #ArtUnc_BubbleShield,$38(a0) @@ -28262,16 +28262,16 @@ loc_184A2: move.b #-1,$34(a0) movea.w $42(a0),a1 bsr.w Player_ResetAirTimer - move.l #Obj_Bubble_Shield_Main,(a0) + move.l #Obj_BubbleShield_Main,(a0) -Obj_Bubble_Shield_Main: +Obj_BubbleShield_Main: movea.w $42(a0),a2 btst #1,$2B(a2) bne.s locret_18518 cmpi.b #$1C,$20(a2) beq.s locret_18518 btst #0,$2B(a2) - beq.s Obj_Bubble_Shield_Destroy + beq.s Obj_BubbleShield_Destroy move.w $10(a2),$10(a0) move.w $14(a2),$14(a0) move.b $2A(a2),$2A(a0) @@ -28292,9 +28292,9 @@ locret_18518: rts ; --------------------------------------------------------------------------- -Obj_Bubble_Shield_Destroy: +Obj_BubbleShield_Destroy: andi.b #$8E,$2B(a2) - move.l #Obj_Insta_Shield,(a0) + move.l #Obj_InstaShield,(a0) rts ; =============== S U B R O U T I N E ======================================= @@ -32771,10 +32771,10 @@ off_1B69C: dc.w Monitor_Give_Eggman-off_1B69C dc.w Monitor_Give_1up-off_1B69C dc.w Monitor_Give_Eggman-off_1B69C dc.w Monitor_Give_Rings-off_1B69C - dc.w Monitor_Give_Super_Sneakers-off_1B69C - dc.w Monitor_Give_Fire_Shield-off_1B69C - dc.w Monitor_Give_Lightning_Shield-off_1B69C - dc.w Monitor_Give_Bubble_Shield-off_1B69C + dc.w Monitor_Give_SpeedShoes-off_1B69C + dc.w Monitor_Give_FireShield-off_1B69C + dc.w Monitor_Give_LightningShield-off_1B69C + dc.w Monitor_Give_BubbleShield-off_1B69C dc.w Monitor_Give_Invincibility-off_1B69C dc.w Monitor_Give_SuperSonic-off_1B69C ; --------------------------------------------------------------------------- @@ -32831,7 +32831,7 @@ loc_1B71C: bra.w Monitor_Give_Eggman ; --------------------------------------------------------------------------- -Monitor_Give_Super_Sneakers: +Monitor_Give_SpeedShoes: addq.w #1,(a2) bset #2,$2B(a1) move.b #$96,$36(a1) @@ -32855,7 +32855,7 @@ loc_1B76A: jmp (Change_Music_Tempo).l ; --------------------------------------------------------------------------- -Monitor_Give_Fire_Shield: +Monitor_Give_FireShield: addq.w #1,(a2) andi.b #$8E,$2B(a1) bset #0,$2B(a1) @@ -32864,18 +32864,18 @@ Monitor_Give_Fire_Shield: jsr (Play_Sound).l tst.b $43(a0) bne.s loc_1B7A2 - move.l #Obj_Fire_Shield,(Shield).w + move.l #Obj_FireShield,(Shield).w move.w a1,(Shield+parent).w rts ; --------------------------------------------------------------------------- loc_1B7A2: - move.l #Obj_Fire_Shield,(Shield_P2).w + move.l #Obj_FireShield,(Shield_P2).w move.w a1,(Shield_P2+parent).w rts ; --------------------------------------------------------------------------- -Monitor_Give_Lightning_Shield: +Monitor_Give_LightningShield: addq.w #1,(a2) andi.b #$8E,$2B(a1) bset #0,$2B(a1) @@ -32884,18 +32884,18 @@ Monitor_Give_Lightning_Shield: jsr (Play_Sound).l tst.b $43(a0) bne.s loc_1B7E0 - move.l #Obj_Lightning_Shield,(Shield).w + move.l #Obj_LightningShield,(Shield).w move.w a1,(Shield+parent).w rts ; --------------------------------------------------------------------------- loc_1B7E0: - move.l #Obj_Lightning_Shield,(Shield_P2).w + move.l #Obj_LightningShield,(Shield_P2).w move.w a1,(Shield_P2+parent).w rts ; --------------------------------------------------------------------------- -Monitor_Give_Bubble_Shield: +Monitor_Give_BubbleShield: addq.w #1,(a2) andi.b #$8E,$2B(a1) bset #0,$2B(a1) @@ -32904,13 +32904,13 @@ Monitor_Give_Bubble_Shield: jsr (Play_Sound).l tst.b $43(a0) bne.s loc_1B81E - move.l #Obj_Bubble_Shield,(Shield).w + move.l #Obj_BubbleShield,(Shield).w move.w a1,(Shield+parent).w rts ; --------------------------------------------------------------------------- loc_1B81E: - move.l #Obj_Bubble_Shield,(Shield_P2).w + move.l #Obj_BubbleShield,(Shield_P2).w move.w a1,(Shield_P2+parent).w rts ; --------------------------------------------------------------------------- @@ -79066,7 +79066,7 @@ sub_43D42: loc_43DA2: lea (Player_1).w,a1 - move.l #Obj_Fire_Shield,(Shield).w + move.l #Obj_FireShield,(Shield).w move.w a1,(Shield+parent).w andi.b #-$72,$2B(a1) bset #0,$2B(a1) @@ -79078,7 +79078,7 @@ loc_43DA2: loc_43DCC: lea (Player_1).w,a1 - move.l #Obj_Bubble_Shield,(Shield).w + move.l #Obj_BubbleShield,(Shield).w move.w a1,(Shield+parent).w andi.b #-$72,$2B(a1) bset #0,$2B(a1) @@ -79090,7 +79090,7 @@ loc_43DCC: loc_43DF6: lea (Player_1).w,a1 - move.l #Obj_Lightning_Shield,(Shield).w + move.l #Obj_LightningShield,(Shield).w move.w a1,(Shield+parent).w andi.b #-$72,$2B(a1) bset #0,$2B(a1) @@ -118876,7 +118876,7 @@ ArtUnc_FireShield: ArtUnc_LightningShield: binclude "General/Sprites/Shields/Lightning Shield.bin" even -ArtUnc_Obj_Lightning_Shield_Sparks: +ArtUnc_LightningShield_Sparks: binclude "General/Sprites/Shields/Sparks.bin" even ArtUnc_BubbleShield: diff --git a/sonic3k.asm b/sonic3k.asm index af561bae..6788473a 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -7737,7 +7737,7 @@ loc_6A02: andi.b #$8E,$2B(a1) bset #0,$2B(a1) bset #4,$2B(a1) - move.l #Obj_Fire_Shield,(Shield).w + move.l #Obj_FireShield,(Shield).w move.w a1,(Shield+parent).w rts ; --------------------------------------------------------------------------- @@ -7748,7 +7748,7 @@ loc_6A28: andi.b #$8E,$2B(a1) bset #0,$2B(a1) bset #5,$2B(a1) - move.l #Obj_Lightning_Shield,(Shield).w + move.l #Obj_LightningShield,(Shield).w move.w a1,(Shield+parent).w rts ; --------------------------------------------------------------------------- @@ -7759,7 +7759,7 @@ loc_6A4E: andi.b #$8E,$2B(a1) bset #0,$2B(a1) bset #6,$2B(a1) - move.l #Obj_Bubble_Shield,(Shield).w + move.l #Obj_BubbleShield,(Shield).w move.w a1,(Shield+parent).w rts ; --------------------------------------------------------------------------- @@ -7798,7 +7798,7 @@ loc_6AB8: bne.s loc_6B1E move.l #Obj_Sonic,(Player_1).w move.l #Obj_DashDust,(Dust).w - move.l #Obj_Insta_Shield,(Shield).w + move.l #Obj_InstaShield,(Shield).w move.w #Player_1,(Shield+parent).w move.l #Obj_Tails,(Player_2).w move.w (Player_1+x_pos).w,(Player_2+x_pos).w @@ -7815,7 +7815,7 @@ loc_6B1E: bne.s loc_6B42 move.l #Obj_Sonic,(Player_1).w move.l #Obj_DashDust,(Dust).w - move.l #Obj_Insta_Shield,(Shield).w + move.l #Obj_InstaShield,(Shield).w move.w #Player_1,(Shield+parent).w rts ; --------------------------------------------------------------------------- @@ -33843,7 +33843,7 @@ Obj_HyperSonic_Stars_Main: move.w (Player_1+x_pos).w,x_pos(a0) move.w (Player_1+y_pos).w,y_pos(a0) moveq #2,d2 - bsr.w Obj_Lightning_Shield_Create_Spark_Part2 + bsr.w Obj_LightningShield_CreateSpark_Part2 move.b #4,(Hyper_Sonic_flash_timer).w .child: @@ -33901,7 +33901,7 @@ Map_HyperSonicStars:include "General/Sprites/Sonic/Map - Hyper Sonic Stars.asm" ; --------------------------------------------------------------------------- -Obj_Insta_Shield: +Obj_InstaShield: ; Init move.l #Map_InstaShield,mappings(a0) move.l #DPLC_InstaShield,shield_plc(a0) ; Used by PLCLoad_Shields @@ -33919,9 +33919,9 @@ Obj_Insta_Shield: .nothighpriority: move.w #1,anim(a0) ; Clear anim and set prev_anim to 1 move.b #-1,shield_prev_frame(a0) ; Reset shield_prev_frame (used by PLCLoad_Shields) - move.l #Obj_Insta_Shield_Main,(a0) + move.l #Obj_InstaShield_Main,(a0) -Obj_Insta_Shield_Main: +Obj_InstaShield_Main: movea.w parent(a0),a2 btst #Status_Invincible,status_secondary(a2) ; Is the player invincible? bne.s locret_195A4 ; If so, return @@ -33965,7 +33965,7 @@ locret_195A4: rts ; --------------------------------------------------------------------------- -Obj_Fire_Shield: +Obj_FireShield: ; Init move.l #Map_FireShield,mappings(a0) move.l #DPLC_FireShield,shield_plc(a0) ; Used by PLCLoad_Shields @@ -33983,18 +33983,18 @@ Obj_Fire_Shield: loc_195F0: move.w #1,anim(a0) ; Clear anim and set prev_anim to 1 move.b #-1,shield_prev_frame(a0) ; Reset shield_prev_frame (used by PLCLoad_Shields) - move.l #Obj_Fire_Shield_Main,(a0) + move.l #Obj_FireShield_Main,(a0) -Obj_Fire_Shield_Main: +Obj_FireShield_Main: movea.w parent(a0),a2 btst #Status_Invincible,status_secondary(a2) ; Is player invincible? bne.w locret_19690 ; If so, do not display and do not update variables cmpi.b #$1C,anim(a2) ; Is player in their 'blank' animation? beq.s locret_19690 ; If so, do not display and do not update variables btst #Status_Shield,status_secondary(a2) ; Should the player still have a shield? - beq.w Obj_Fire_Shield_Destroy ; If not, change to Insta-Shield + beq.w Obj_FireShield_Destroy ; If not, change to Insta-Shield btst #Status_Underwater,status(a2) ; Is player underwater? - bne.s Obj_Fire_Shield_DestroyUnderwater ; If so, branch + bne.s Obj_FireShield_DestroyUnderwater ; If so, branch move.w x_pos(a2),x_pos(a0) move.w y_pos(a2),y_pos(a0) tst.b anim(a0) ; Is shield in its 'dashing' state? @@ -34028,26 +34028,26 @@ locret_19690: rts ; --------------------------------------------------------------------------- -Obj_Fire_Shield_DestroyUnderwater: +Obj_FireShield_DestroyUnderwater: andi.b #$8E,status_secondary(a2) ; Sets Status_Shield, Status_FireShield, Status_LtngShield, and Status_BublShield to 0 jsr (Create_New_Sprite).l ; Set up for a new object - bne.w Obj_Fire_Shield_Destroy ; If that can't happen, branch + bne.w Obj_FireShield_Destroy ; If that can't happen, branch move.l #Obj_FireShield_Dissipate,(a1) ; Create dissipate object move.w x_pos(a0),x_pos(a1) ; Put it at shields' x_pos move.w y_pos(a0),y_pos(a1) ; Put it at shields' y_pos -Obj_Fire_Shield_Destroy: +Obj_FireShield_Destroy: andi.b #$8E,status_secondary(a2) ; Sets Status_Shield, Status_FireShield, Status_LtngShield, and Status_BublShield to 0 - move.l #Obj_Insta_Shield,(a0) ; Replace the Fire Shield with the Insta-Shield + move.l #Obj_InstaShield,(a0) ; Replace the Fire Shield with the Insta-Shield rts ; --------------------------------------------------------------------------- -Obj_Lightning_Shield: +Obj_LightningShield: ; init ; Load Spark art - move.l #ArtUnc_Obj_Lightning_Shield_Sparks,d1 ; Load art source + move.l #ArtUnc_LightningShield_Sparks,d1 ; Load art source move.w #tiles_to_bytes(ArtTile_Shield_Sparks),d2 ; Load art destination - move.w #(ArtUnc_Obj_Lightning_Shield_Sparks_end-ArtUnc_Obj_Lightning_Shield_Sparks)/2,d3 ; Size of art (in words) + move.w #(ArtUnc_LightningShield_Sparks_end-ArtUnc_LightningShield_Sparks)/2,d3 ; Size of art (in words) jsr (Add_To_DMA_Queue).l move.l #Map_LightningShield,mappings(a0) @@ -34066,18 +34066,18 @@ Obj_Lightning_Shield: .nothighpriority: move.w #1,anim(a0) ; Clear anim and set prev_anim to 1 move.b #-1,shield_prev_frame(a0) ; Reset shield_prev_frame (used by PLCLoad_Shields) - move.l #Obj_Lightning_Shield_Main,(a0) + move.l #Obj_LightningShield_Main,(a0) -Obj_Lightning_Shield_Main: +Obj_LightningShield_Main: movea.w parent(a0),a2 btst #Status_Invincible,status_secondary(a2) ; Is player invincible? bne.w locret_197C4 ; If so, do not display and do not update variables cmpi.b #$1C,anim(a2) ; Is player in their 'blank' animation? beq.s locret_197C4 ; If so, do not display and do not update variables btst #Status_Shield,status_secondary(a2) ; Should the player still have a shield? - beq.s Obj_Lightning_Shield_Destroy ; If not, change to Insta-Shield + beq.s Obj_LightningShield_Destroy ; If not, change to Insta-Shield btst #Status_Underwater,status(a2) ; Is player underwater? - bne.s Obj_Lightning_Shield_DestroyUnderwater ; If so, branch + bne.s Obj_LightningShield_DestroyUnderwater ; If so, branch move.w x_pos(a2),x_pos(a0) move.w y_pos(a2),y_pos(a0) move.b status(a2),status(a0) ; Inherit status @@ -34094,11 +34094,11 @@ Obj_Lightning_Shield_Main: .nothighpriority: tst.b anim(a0) ; Is shield in its 'double jump' state? - beq.s Obj_Lightning_Shield_Display ; Is not, branch and display - bsr.s Obj_Lightning_Shield_Create_Spark ; Create sparks + beq.s Obj_LightningShield_Display ; Is not, branch and display + bsr.s Obj_LightningShield_CreateSpark ; Create sparks clr.b anim(a0) ; Once done, return to non-'double jump' state -Obj_Lightning_Shield_Display: +Obj_LightningShield_Display: lea (Ani_LightningShield).l,a1 jsr (Animate_Sprite).l move.w #$80,priority(a0) ; Layer shield over player sprite @@ -34115,18 +34115,18 @@ locret_197C4: rts ; --------------------------------------------------------------------------- -Obj_Lightning_Shield_DestroyUnderwater: +Obj_LightningShield_DestroyUnderwater: tst.w (Palette_fade_timer).w - beq.s Obj_Lightning_Shield_FlashWater + beq.s Obj_LightningShield_FlashWater -Obj_Lightning_Shield_Destroy: +Obj_LightningShield_Destroy: andi.b #$8E,status_secondary(a2) ; Sets Status_Shield, Status_FireShield, Status_LtngShield, and Status_BublShield to 0 - move.l #Obj_Insta_Shield,(a0) ; Replace the Lightning Shield with the Insta-Shield + move.l #Obj_InstaShield,(a0) ; Replace the Lightning Shield with the Insta-Shield rts ; --------------------------------------------------------------------------- -Obj_Lightning_Shield_FlashWater: - move.l #Obj_Lightning_Shield_DestroyUnderwater2,(a0) +Obj_LightningShield_FlashWater: + move.l #Obj_LightningShield_DestroyUnderwater2,(a0) andi.b #$8E,status_secondary(a2) ; Sets Status_Shield, Status_FireShield, Status_LtngShield, and Status_BublShield to 0 ; Flashes the underwater palette white @@ -34146,17 +34146,17 @@ loc_197F2: ; =============== S U B R O U T I N E ======================================= -Obj_Lightning_Shield_Create_Spark: +Obj_LightningShield_CreateSpark: moveq #1,d2 -Obj_Lightning_Shield_Create_Spark_Part2: +Obj_LightningShield_CreateSpark_Part2: lea (SparkVelocities).l,a2 moveq #3,d1 loc_19816: bsr.w Create_New_Sprite ; Find free object slot bne.s locret_19862 ; If one can't be found, return - move.l #Obj_Lightning_Shield_Spark,(a1) ; Make new object a Spark + move.l #Obj_LightningShield_Spark,(a1) ; Make new object a Spark move.w x_pos(a0),x_pos(a1) ; (Spark) Inherit x_pos from source object (Lightning Shield, Hyper Sonic Stars) move.w y_pos(a0),y_pos(a1) ; (Spark) Inherit y_pos from source object (Lightning Shield, Hyper Sonic Stars) move.l mappings(a0),mappings(a1) ; (Spark) Inherit mappings from source object (Lightning Shield, Hyper Sonic Stars) @@ -34172,7 +34172,7 @@ loc_19816: locret_19862: rts -; End of function Obj_Lightning_Shield_Create_Spark +; End of function Obj_LightningShield_CreateSpark ; --------------------------------------------------------------------------- SparkVelocities:dc.w -$200, -$200 @@ -34181,24 +34181,24 @@ SparkVelocities:dc.w -$200, -$200 dc.w $200, $200 ; --------------------------------------------------------------------------- -Obj_Lightning_Shield_Spark: +Obj_LightningShield_Spark: jsr (MoveSprite2).l addi.w #$18,y_vel(a0) lea (Ani_LightningShield).l,a1 jsr (Animate_Sprite).l tst.b routine(a0) ; Changed by Animate_Sprite - bne.s Obj_Lightning_Shield_Spark_Delete + bne.s Obj_LightningShield_Spark_Delete jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -Obj_Lightning_Shield_Spark_Delete: +Obj_LightningShield_Spark_Delete: jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- -Obj_Lightning_Shield_DestroyUnderwater2: +Obj_LightningShield_DestroyUnderwater2: subq.b #1,anim_frame_timer(a0) ; Is it time to end the white flash? bpl.s locret_198BC ; If not, return - move.l #Obj_Insta_Shield,(a0) ; Replace Lightning Shield with Insta-Shield + move.l #Obj_InstaShield,(a0) ; Replace Lightning Shield with Insta-Shield lea (Target_water_palette).w,a1 lea (Water_palette).w,a2 move.w #($80/4)-1,d0 ; Size of Water_palette/4-1 @@ -34211,7 +34211,7 @@ locret_198BC: rts ; --------------------------------------------------------------------------- -Obj_Bubble_Shield: +Obj_BubbleShield: ; Init move.l #Map_BubbleShield,mappings(a0) move.l #DPLC_BubbleShield,shield_plc(a0) ; Used by PLCLoad_Shields @@ -34231,16 +34231,16 @@ Obj_Bubble_Shield: move.b #-1,shield_prev_frame(a0) ; Reset shield_prev_frame (used by PLCLoad_Shields) movea.w parent(a0),a1 bsr.w Player_ResetAirTimer - move.l #Obj_Bubble_Shield_Main,(a0) + move.l #Obj_BubbleShield_Main,(a0) -Obj_Bubble_Shield_Main: +Obj_BubbleShield_Main: movea.w parent(a0),a2 btst #Status_Invincible,status_secondary(a2) ; Is player invincible? bne.s locret_1998A ; If so, do not display and do not update variables cmpi.b #$1C,anim(a2) ; Is player in their 'blank' animation? beq.s locret_1998A ; If so, do not display and do not update variables btst #Status_Shield,status_secondary(a2) ; Should the player still have a shield? - beq.s Obj_Bubble_Shield_Destroy ; If not, change to Insta-Shield + beq.s Obj_BubbleShield_Destroy ; If not, change to Insta-Shield move.w x_pos(a2),x_pos(a0) move.w y_pos(a2),y_pos(a0) move.b status(a2),status(a0) ; Inherit status @@ -34266,9 +34266,9 @@ locret_1998A: rts ; --------------------------------------------------------------------------- -Obj_Bubble_Shield_Destroy: +Obj_BubbleShield_Destroy: andi.b #$8E,status_secondary(a2) ; Sets Status_Shield, Status_FireShield, Status_LtngShield, and Status_BublShield to 0 - move.l #Obj_Insta_Shield,(a0) ; Replace the Bubble Shield with the Insta-Shield + move.l #Obj_InstaShield,(a0) ; Replace the Bubble Shield with the Insta-Shield rts ; =============== S U B R O U T I N E ======================================= @@ -40071,10 +40071,10 @@ off_1D87C: dc.w Monitor_Give_Eggman-off_1D87C dc.w Monitor_Give_1up-off_1D87C dc.w Monitor_Give_Eggman-off_1D87C dc.w Monitor_Give_Rings-off_1D87C - dc.w Monitor_Give_Super_Sneakers-off_1D87C - dc.w Monitor_Give_Fire_Shield-off_1D87C - dc.w Monitor_Give_Lightning_Shield-off_1D87C - dc.w Monitor_Give_Bubble_Shield-off_1D87C + dc.w Monitor_Give_SpeedShoes-off_1D87C + dc.w Monitor_Give_FireShield-off_1D87C + dc.w Monitor_Give_LightningShield-off_1D87C + dc.w Monitor_Give_BubbleShield-off_1D87C dc.w Monitor_Give_Invincibility-off_1D87C dc.w Monitor_Give_SuperSonic-off_1D87C ; --------------------------------------------------------------------------- @@ -40131,7 +40131,7 @@ loc_1D8FE: bra.w Monitor_Give_Eggman ; --------------------------------------------------------------------------- -Monitor_Give_Super_Sneakers: +Monitor_Give_SpeedShoes: addq.w #1,(a2) bset #2,$2B(a1) move.b #$96,$36(a1) @@ -40155,7 +40155,7 @@ loc_1D94C: jmp (Change_Music_Tempo).l ; --------------------------------------------------------------------------- -Monitor_Give_Fire_Shield: +Monitor_Give_FireShield: addq.w #1,(a2) andi.b #$8E,$2B(a1) bset #0,$2B(a1) @@ -40164,18 +40164,18 @@ Monitor_Give_Fire_Shield: jsr (Play_Sound).l tst.b $43(a0) bne.s loc_1D984 - move.l #Obj_Fire_Shield,(Shield).w + move.l #Obj_FireShield,(Shield).w move.w a1,(Shield+parent).w rts ; --------------------------------------------------------------------------- loc_1D984: - move.l #Obj_Fire_Shield,(Shield_P2).w + move.l #Obj_FireShield,(Shield_P2).w move.w a1,(Shield_P2+parent).w rts ; --------------------------------------------------------------------------- -Monitor_Give_Lightning_Shield: +Monitor_Give_LightningShield: addq.w #1,(a2) andi.b #$8E,$2B(a1) bset #0,$2B(a1) @@ -40184,18 +40184,18 @@ Monitor_Give_Lightning_Shield: jsr (Play_Sound).l tst.b $43(a0) bne.s loc_1D9C2 - move.l #Obj_Lightning_Shield,(Shield).w + move.l #Obj_LightningShield,(Shield).w move.w a1,(Shield+parent).w rts ; --------------------------------------------------------------------------- loc_1D9C2: - move.l #Obj_Lightning_Shield,(Shield_P2).w + move.l #Obj_LightningShield,(Shield_P2).w move.w a1,(Shield_P2+parent).w rts ; --------------------------------------------------------------------------- -Monitor_Give_Bubble_Shield: +Monitor_Give_BubbleShield: addq.w #1,(a2) andi.b #$8E,$2B(a1) bset #0,$2B(a1) @@ -40204,13 +40204,13 @@ Monitor_Give_Bubble_Shield: jsr (Play_Sound).l tst.b $43(a0) bne.s loc_1DA00 - move.l #Obj_Bubble_Shield,(Shield).w + move.l #Obj_BubbleShield,(Shield).w move.w a1,(Shield+parent).w rts ; --------------------------------------------------------------------------- loc_1DA00: - move.l #Obj_Bubble_Shield,(Shield_P2).w + move.l #Obj_BubbleShield,(Shield_P2).w move.w a1,(Shield_P2+parent).w rts ; --------------------------------------------------------------------------- @@ -128209,7 +128209,7 @@ sub_61176: loc_611D6: lea (Player_1).w,a1 - move.l #Obj_Fire_Shield,(Shield).w + move.l #Obj_FireShield,(Shield).w move.w a1,(Shield+parent).w andi.b #-$72,$2B(a1) bset #0,$2B(a1) @@ -128221,7 +128221,7 @@ loc_611D6: loc_61200: lea (Player_1).w,a1 - move.l #Obj_Bubble_Shield,(Shield).w + move.l #Obj_BubbleShield,(Shield).w move.w a1,(Shield+parent).w andi.b #-$72,$2B(a1) bset #0,$2B(a1) @@ -128233,7 +128233,7 @@ loc_61200: loc_6122A: lea (Player_1).w,a1 - move.l #Obj_Lightning_Shield,(Shield).w + move.l #Obj_LightningShield,(Shield).w move.w a1,(Shield+parent).w andi.b #-$72,$2B(a1) bset #0,$2B(a1) @@ -202452,9 +202452,9 @@ ArtUnc_FireShield:binclude "General/Sprites/Shields/Fire Shield.bin" ArtUnc_LightningShield:binclude "General/Sprites/Shields/Lightning Shield.bin" even -ArtUnc_Obj_Lightning_Shield_Sparks: +ArtUnc_LightningShield_Sparks: binclude "General/Sprites/Shields/Sparks.bin" -ArtUnc_Obj_Lightning_Shield_Sparks_end +ArtUnc_LightningShield_Sparks_end: even ArtUnc_BubbleShield:binclude "General/Sprites/Shields/Bubble Shield.bin" From e3956efee9dff9ea18292afb6175d0b6c2cf338c Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Sun, 26 Dec 2021 01:06:30 +0000 Subject: [PATCH 42/72] Move a bunch of files --- Build Scripts/s3.txt | 4 +- Build Scripts/sk.txt | 6 +-- .../Kosinski Art/ANDKnuckles Subtitle.bin} | Bin .../Ending}/Kosinski Art/Master Emerald.bin | Bin ... Ending Pose.bin => Sonic Ending Pose.bin} | Bin .../Map - ANDKnuckles Subtitle.asm | 0 .../Enigma Map/Menu BG.bin} | Bin ...s life icon.bin => Knuckles Life icon.bin} | Bin ...onic life icon.bin => Sonic Life icon.bin} | Bin .../Palettes/Fade to CNZ.bin} | Bin Lockon S3/LockOn Data.asm | 4 +- SonLVL INI Files/SSZ/EggMobile.cs | 2 +- SonLVL INI Files/SonPLN.ini | 2 +- s3.asm | 8 ++-- sonic3k.asm | 36 +++++++++--------- 15 files changed, 31 insertions(+), 31 deletions(-) rename General/{Title/Kosinski Art/SK ANDKnuckles Subtitle.bin => Ending/Kosinski Art/ANDKnuckles Subtitle.bin} (100%) rename {Levels/HPZ => General/Ending}/Kosinski Art/Master Emerald.bin (100%) rename General/Ending/KosinskiM Art/{Normal Sonic Ending Pose.bin => Sonic Ending Pose.bin} (100%) rename General/{Title => Ending}/Map - ANDKnuckles Subtitle.asm (100%) rename General/{Title/Enigma Map/S3 Menu BG.bin => Save Menu/Enigma Map/Menu BG.bin} (100%) rename General/Sprites/HUD Icon/{Knuckles life icon.bin => Knuckles Life icon.bin} (100%) rename General/Sprites/HUD Icon/{Sonic life icon.bin => Sonic Life icon.bin} (100%) rename Levels/{Misc/Palettes/MGZ Fade to CNZ.bin => MGZ/Palettes/Fade to CNZ.bin} (100%) diff --git a/Build Scripts/s3.txt b/Build Scripts/s3.txt index a8650011..bf8d7354 100644 --- a/Build Scripts/s3.txt +++ b/Build Scripts/s3.txt @@ -52,7 +52,7 @@ #split 0x0008C1D4,0x0008C234,General\Sprites\S2Menu\Palettes\Proto Level Select.bin #split 0x0008CDB4,0x0008CE14,Levels\Pachinko\Palettes\S3.bin #split 0x0008CE14,0x0008CE74,Levels\Slots\Palettes\S3.bin -#split 0x00164896,0x00164A96,Levels\Misc\Palettes\MGZ Fade to CNZ.bin +#split 0x00164896,0x00164A96,Levels\MGZ\Palettes\Fade to CNZ.bin #split 0x0019D262,0x0019D282,General\Save Menu\Palettes\BG.bin #split 0x0019D282,0x0019D2A2,General\Competition Menu\Palettes\BG.bin @@ -381,7 +381,7 @@ #split 0x0014FF48,0x00150018,General\Title\Enigma Map\S3 Sonic C.bin #split 0x00150018,0x00150112,General\Title\Enigma Map\S3 Sonic D.bin #split 0x00150112,0x001501E0,General\Title\Enigma Map\S3 BG.bin -#split 0x0019D2A2,0x0019D4A4,General\Title\Enigma Map\S3 Menu BG.bin +#split 0x0019D2A2,0x0019D4A4,General\Save Menu\Enigma Map\Menu BG.bin #split 0x0019F104,0x0019F150,General\Competition Menu\Enigma Map\Level Border.bin #split 0x0019F24C,0x0019F36C,General\Competition Menu\Enigma Map\Level Images.bin #split 0x0019F36C,0x0019F46E,General\Competition Menu\Enigma Map\Level Names.bin diff --git a/Build Scripts/sk.txt b/Build Scripts/sk.txt index dbef522e..accf5f8e 100644 --- a/Build Scripts/sk.txt +++ b/Build Scripts/sk.txt @@ -396,7 +396,7 @@ #split 0x000D33E4,0x000D3A64,General\Title\Kosinski Art\SK Death Egg.bin #split 0x000D3A64,0x000D3BB4,General\Title\Kosinski Art\SK Mountain Sprite.bin #split 0x000D4BA6,0x000D5CC6,General\Title\Kosinski Art\SK Sonic and Knuckles Hands.bin -#split 0x000DE364,0x000DE684,General\Title\Kosinski Art\SK ANDKnuckles Subtitle.bin +#split 0x000DE364,0x000DE684,General\Ending\Kosinski Art\ANDKnuckles Subtitle.bin #split 0x00156C08,0x001574E8,Levels\Pachinko\Kosinski Art\Animated BG 1.bin #split 0x001574E8,0x001578F8,Levels\Pachinko\Kosinski Art\Animated BG 2.bin #split 0x0015BAC0,0x0015C130,General\Special Stage\Kosinski Art\SSResults General.bin @@ -407,7 +407,7 @@ #split 0x0015FDDE,0x0015FFBE,General\Sprites\Robotnik\Egg Robo Head.bin #split 0x00163248,0x00163418,General\Ending\Kosinski Art\Robotnik Standing Smug.bin #split 0x0016416E,0x0016461E,General\Ending\Kosinski Art\Sonic Knuckles Pose Banner.bin -#split 0x0017FCBC,0x0018008C,Levels\HPZ\Kosinski Art\Master Emerald.bin +#split 0x0017FCBC,0x0018008C,General\Ending\Kosinski Art\Master Emerald.bin #split 0x00187D1C,0x00188E7C,General\Blue Sphere\Kosinski Art\Characters.bin #split 0x00188F1E,0x001897DE,General\Blue Sphere\Kosinski Art\Character Sprites.bin #split 0x001897DE,0x00189C4E,General\Blue Sphere\Kosinski Art\Normal Text.bin @@ -454,7 +454,7 @@ #split 0x00160AAA,0x00160D8C,General\Ending\KosinskiM Art\Island Lift Animated Tiles.bin #split 0x00160D8C,0x0016118E,General\Ending\KosinskiM Art\Pelican and Dolphin.bin #split 0x0016118E,0x00161660,General\Ending\KosinskiM Art\Egg Robo.bin -#split 0x00161660,0x001620D2,General\Ending\KosinskiM Art\Normal Sonic Ending Pose.bin +#split 0x00161660,0x001620D2,General\Ending\KosinskiM Art\Sonic Ending Pose.bin #split 0x001620D2,0x00162914,General\Ending\KosinskiM Art\Super Sonic Ending Pose.bin #split 0x00162914,0x00163246,General\Ending\KosinskiM Art\Sonic Plane Ending.bin #split 0x00163418,0x00163B9A,General\Ending\KosinskiM Art\Sonic Plane.bin diff --git a/General/Title/Kosinski Art/SK ANDKnuckles Subtitle.bin b/General/Ending/Kosinski Art/ANDKnuckles Subtitle.bin similarity index 100% rename from General/Title/Kosinski Art/SK ANDKnuckles Subtitle.bin rename to General/Ending/Kosinski Art/ANDKnuckles Subtitle.bin diff --git a/Levels/HPZ/Kosinski Art/Master Emerald.bin b/General/Ending/Kosinski Art/Master Emerald.bin similarity index 100% rename from Levels/HPZ/Kosinski Art/Master Emerald.bin rename to General/Ending/Kosinski Art/Master Emerald.bin diff --git a/General/Ending/KosinskiM Art/Normal Sonic Ending Pose.bin b/General/Ending/KosinskiM Art/Sonic Ending Pose.bin similarity index 100% rename from General/Ending/KosinskiM Art/Normal Sonic Ending Pose.bin rename to General/Ending/KosinskiM Art/Sonic Ending Pose.bin diff --git a/General/Title/Map - ANDKnuckles Subtitle.asm b/General/Ending/Map - ANDKnuckles Subtitle.asm similarity index 100% rename from General/Title/Map - ANDKnuckles Subtitle.asm rename to General/Ending/Map - ANDKnuckles Subtitle.asm diff --git a/General/Title/Enigma Map/S3 Menu BG.bin b/General/Save Menu/Enigma Map/Menu BG.bin similarity index 100% rename from General/Title/Enigma Map/S3 Menu BG.bin rename to General/Save Menu/Enigma Map/Menu BG.bin diff --git a/General/Sprites/HUD Icon/Knuckles life icon.bin b/General/Sprites/HUD Icon/Knuckles Life icon.bin similarity index 100% rename from General/Sprites/HUD Icon/Knuckles life icon.bin rename to General/Sprites/HUD Icon/Knuckles Life icon.bin diff --git a/General/Sprites/HUD Icon/Sonic life icon.bin b/General/Sprites/HUD Icon/Sonic Life icon.bin similarity index 100% rename from General/Sprites/HUD Icon/Sonic life icon.bin rename to General/Sprites/HUD Icon/Sonic Life icon.bin diff --git a/Levels/Misc/Palettes/MGZ Fade to CNZ.bin b/Levels/MGZ/Palettes/Fade to CNZ.bin similarity index 100% rename from Levels/Misc/Palettes/MGZ Fade to CNZ.bin rename to Levels/MGZ/Palettes/Fade to CNZ.bin diff --git a/Lockon S3/LockOn Data.asm b/Lockon S3/LockOn Data.asm index dd91c790..75d22fff 100644 --- a/Lockon S3/LockOn Data.asm +++ b/Lockon S3/LockOn Data.asm @@ -690,7 +690,7 @@ Map_LBZFinalBoss1: include "Levels/LBZ/Misc Object Data/Map - Final Boss 1.asm" Map_LBZDeathEggSmall: include "Levels/LBZ/Misc Object Data/Map - Death Egg Small.asm" -Pal_MGZFadeCNZ: binclude "Levels/Misc/Palettes/MGZ Fade to CNZ.bin" +Pal_MGZFadeCNZ: binclude "Levels/MGZ/Palettes/Fade to CNZ.bin" even Map_LBZFinalBoss2: include "Levels/LBZ/Misc Object Data/Map - Final Boss 2.asm" @@ -920,7 +920,7 @@ Pal_SaveMenuBG: binclude "General/Save Menu/Palettes/BG.bin" even Pal_CompetitionMenuBG: binclude "General/Competition Menu/Palettes/BG.bin" even -MapEni_S3MenuBG: binclude "General/Title/Enigma Map/S3 Menu BG.bin" +MapEni_S3MenuBG: binclude "General/Save Menu/Enigma Map/Menu BG.bin" even ArtKos_S3MenuBG: binclude "General/Save Menu/Kosinski Art/Menu BG.bin" even diff --git a/SonLVL INI Files/SSZ/EggMobile.cs b/SonLVL INI Files/SSZ/EggMobile.cs index 93f58211..e575a032 100644 --- a/SonLVL INI Files/SSZ/EggMobile.cs +++ b/SonLVL INI Files/SSZ/EggMobile.cs @@ -80,7 +80,7 @@ public override void Init(ObjectData data) "../General/Sprites/Mecha Sonic/Map - Mecha Sonic.asm", 0, 1, true); var emerald = ObjectHelper.MapASMToBmp(LevelData.ReadFile( - "../Levels/HPZ/Kosinski Art/Master Emerald.bin", CompressionType.Kosinski), + "../General/Ending/Kosinski Art/Master Emerald.bin", CompressionType.Kosinski), "../Levels/SSZ/Misc Object Data/Map - Master Emerald.asm", 0, 0, true); subtypes = new ReadOnlyCollection(new byte[0]); diff --git a/SonLVL INI Files/SonPLN.ini b/SonLVL INI Files/SonPLN.ini index fa7f5b9d..a0d5e041 100644 --- a/SonLVL INI Files/SonPLN.ini +++ b/SonLVL INI Files/SonPLN.ini @@ -221,7 +221,7 @@ height=32 displayname=Data Select - Background tiles=../General/Save Menu/Kosinski Art/Menu BG.bin tilecmp=Kosinski -mappings=../General/Title/Enigma Map/S3 Menu BG.bin +mappings=../General/Save Menu/Enigma Map/Menu BG.bin palette=../General/Save Menu/Palettes/BG.bin:0:0:16 palette2=Competition|../General/Competition Menu/Palettes/BG.bin:0:0:16 width=40 diff --git a/s3.asm b/s3.asm index d2ff95f9..dcbfd410 100644 --- a/s3.asm +++ b/s3.asm @@ -118968,13 +118968,13 @@ ArtNem_DiagonalSpring: ArtNem_HUDText: binclude "General/Sprites/HUD Icon/HUD Text.bin" even ArtNem_SonicLifeIcon: - binclude "General/Sprites/HUD Icon/Sonic life icon.bin" + binclude "General/Sprites/HUD Icon/Sonic Life icon.bin" even ArtNem_TailsLifeIcon: binclude "General/Sprites/HUD Icon/Tails Life Icon.bin" even ArtNem_KnucklesLifeIcon: - binclude "General/Sprites/HUD Icon/Knuckles life icon.bin" + binclude "General/Sprites/HUD Icon/Knuckles Life icon.bin" even ArtNem_Ring: binclude "General/Sprites/Ring/Ring.bin" even @@ -119330,7 +119330,7 @@ Map_LBZFinalBoss1: include "Levels/LBZ/Misc Object Data/Map - Final Boss 1.asm" Map_LBZDeathEggSmall: include "Levels/LBZ/Misc Object Data/Map - Death Egg Small.asm" -Pal_MGZFadeCNZ: binclude "Levels/Misc/Palettes/MGZ Fade to CNZ.bin" +Pal_MGZFadeCNZ: binclude "Levels/MGZ/Palettes/Fade to CNZ.bin" even Map_LBZFinalBoss2: include "Levels/LBZ/Misc Object Data/Map - Final Boss 2.asm" @@ -119737,7 +119737,7 @@ Pal_SaveMenuBG: binclude "General/Save Menu/Palettes/BG.bin" Pal_CompetitionMenuBG: binclude "General/Competition Menu/Palettes/BG.bin" even -MapEni_S3MenuBG:binclude "General/Title/Enigma Map/S3 Menu BG.bin" +MapEni_S3MenuBG:binclude "General/Save Menu/Enigma Map/Menu BG.bin" even ArtKos_S3MenuBG:binclude "General/Save Menu/Kosinski Art/Menu BG.bin" even diff --git a/sonic3k.asm b/sonic3k.asm index 6788473a..92034f3b 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -101555,7 +101555,7 @@ loc_4DC7E: jsr (Kos_Decomp).l lea (ArtKos_ANDKnuckles).l,a0 jsr (Kos_Decomp).l - lea (ArtKos_HPZMasterEmerald).l,a0 + lea (ArtKos_EndingMasterEmerald).l,a0 jsr (Kos_Decomp).l lea (ArtKos_RobotnikSmug).l,a0 jsr (Kos_Decomp).l @@ -122169,7 +122169,7 @@ PLC_5B504: dc.w 0 dc.l ArtNem_S3EndingGraphics dc.w $8BA0 PLC_5B50C: dc.w 0 - dc.l ArtNem_Knux_Ending_Pose + dc.l ArtNem_KnuxEndPose dc.w $5820 ; =============== S U B R O U T I N E ======================================= @@ -123886,7 +123886,7 @@ loc_5D96A: loc_5D9B8: move.l (a1)+,(a2)+ dbf d6,loc_5D9B8 - lea (ArtKosM_HPZMasterEmerald).l,a1 + lea (ArtKosM_EndingMasterEmerald).l,a1 move.w #-$5A40,d2 jsr (Queue_Kos_Module).l lea (ArtKosM_SonicPlane).l,a1 @@ -124643,7 +124643,7 @@ loc_5E316: jmp (Queue_Kos_Module).l ; --------------------------------------------------------------------------- off_5E328: dc.l ArtKosM_TailsEndPose - dc.l ArtKosM_NormalSonicEndPose + dc.l ArtKosM_SonicEndPose dc.l ArtKosM_SuperSonicEndPose ; --------------------------------------------------------------------------- @@ -124983,7 +124983,7 @@ loc_5E70E: move.l #byte_6023F,$30(a0) lea ChildObjDat_601B2(pc),a2 jsr (CreateChild1_Normal).l - lea (ArtKosM_HPZMasterEmerald).l,a1 + lea (ArtKosM_EndingMasterEmerald).l,a1 move.w #-$5A40,d2 jsr (Queue_Kos_Module).l tst.b (_unkFA88).w @@ -126515,7 +126515,7 @@ loc_5F8FA: move.w #Target_palette,$32(a1) loc_5F92E: - lea (ArtKosM_HPZMasterEmerald).l,a1 + lea (ArtKosM_EndingMasterEmerald).l,a1 move.w #-$5A40,d2 jmp (Queue_Kos_Module).l ; --------------------------------------------------------------------------- @@ -127653,7 +127653,7 @@ Map_EndingAnimals: include "General/Ending/Map - Ending Pelican and Dolphin.asm" Map_SonicTailsEndPoses: include "General/Ending/Map - Sonic Tails Ending Poses.asm" -Map_ANDKnuckles: include "General/Title/Map - ANDKnuckles Subtitle.asm" +Map_ANDKnuckles: include "General/Ending/Map - ANDKnuckles Subtitle.asm" Map_EndingEyecatchEggRobo: include "General/Ending/Map - Ending Egg Robo Eyecatch.asm" @@ -165462,7 +165462,7 @@ loc_7B996: jsr (Play_Sound).l lea ChildObjDat_7D492(pc),a2 jsr (CreateChild1_Normal).l - lea (ArtKosM_HPZMasterEmerald).l,a1 + lea (ArtKosM_EndingMasterEmerald).l,a1 move.w #-$5A40,d2 jmp (Queue_Kos_Module).l ; --------------------------------------------------------------------------- @@ -171959,7 +171959,7 @@ loc_80082: move.w a0,$46(a1) loc_800C0: - lea (ArtKosM_MasterEmerald).l,a1 + lea (ArtKosM_BossMasterEmerald).l,a1 move.w #-$6600,d2 jsr (Queue_Kos_Module).l @@ -174269,7 +174269,7 @@ loc_819DA: loc_819EA: move.l (a1)+,(a2)+ dbf d6,loc_819EA - lea (ArtKosM_MasterEmerald).l,a1 + lea (ArtKosM_BossMasterEmerald).l,a1 move.w #-$6600,d2 jmp (Queue_Kos_Module).l ; --------------------------------------------------------------------------- @@ -201938,14 +201938,14 @@ ArtNem_BlueSphereText: binclude "General/Blue Sphere/Nemesis Art/Large Text.bin" ArtNem_FBZEndBossFlame: binclude "Levels/FBZ/Nemesis Art/End Boss Flame.bin" even ArtKosM_ANDKnuckles:dc.w $4C0 -ArtKos_ANDKnuckles: binclude "General/Title/Kosinski Art/SK ANDKnuckles Subtitle.bin" +ArtKos_ANDKnuckles: binclude "General/Ending/Kosinski Art/ANDKnuckles Subtitle.bin" even if ~~strip_padding cnop -$600,$1000 endif -ArtNem_Knux_Ending_Pose:binclude "General/Ending/Nemesis Art/Knuckles Ending Pose.bin" +ArtNem_KnuxEndPose:binclude "General/Ending/Nemesis Art/Knuckles Ending Pose.bin" even if Sonic3_Complete=0 @@ -202179,7 +202179,7 @@ ArtKosM_EndingAnimals: binclude "General/Ending/KosinskiM Art/Pelican and Dolph even ArtKosM_EggRoboSKEnding: binclude "General/Ending/KosinskiM Art/Egg Robo.bin" even -ArtKosM_NormalSonicEndPose: binclude "General/Ending/KosinskiM Art/Normal Sonic Ending Pose.bin" +ArtKosM_SonicEndPose: binclude "General/Ending/KosinskiM Art/Sonic Ending Pose.bin" even ArtKosM_SuperSonicEndPose: binclude "General/Ending/KosinskiM Art/Super Sonic Ending Pose.bin" even @@ -202315,9 +202315,9 @@ ArtKosM_SSZMTZOrbs: binclude "Levels/SSZ/KosinskiM Art/MTZ Orbs.bin" even ArtKosM_MechaSonicExtra: binclude "General/Sprites/Mecha Sonic/Mecha Sonic Extra Art.bin" even -ArtKosM_HPZMasterEmerald: dc.w $880 +ArtKosM_EndingMasterEmerald: dc.w $880 even -ArtKos_HPZMasterEmerald: binclude "Levels/HPZ/Kosinski Art/Master Emerald.bin" +ArtKos_EndingMasterEmerald: binclude "General/Ending/Kosinski Art/Master Emerald.bin" even ArtKosM_Spikebonker:binclude "General/Sprites/Spikebonker/Spikebonker.bin" even @@ -202329,7 +202329,7 @@ ArtKosM_DEZEndBoss: binclude "Levels/DEZ/KosinskiM Art/End Boss.bin" even ArtKosM_DEZFinalBossMisc: binclude "Levels/DEZ/KosinskiM Art/Final Boss Misc Art.bin" even -ArtKosM_MasterEmerald: binclude "General/Sprites/Master Emerald/Master Emerald.bin" +ArtKosM_BossMasterEmerald: binclude "General/Sprites/Master Emerald/Master Emerald.bin" even ArtKosM_DEZFinalBossDebris: binclude "Levels/DEZ/KosinskiM Art/Final Boss Debris.bin" even @@ -202465,10 +202465,10 @@ ArtNem_GrayButton:binclude "General/Sprites/Buttons/Gray Button.bin" ArtNem_DiagonalSpring: binclude "General/Sprites/Level Misc/Diagonal Spring.bin" even -ArtNem_SonicLifeIcon:binclude "General/Sprites/HUD Icon/Sonic life icon.bin" +ArtNem_SonicLifeIcon:binclude "General/Sprites/HUD Icon/Sonic Life icon.bin" even -ArtNem_KnucklesLifeIcon:binclude "General/Sprites/HUD Icon/Knuckles life icon.bin" +ArtNem_KnucklesLifeIcon:binclude "General/Sprites/HUD Icon/Knuckles Life icon.bin" even ArtNem_Monitors:binclude "General/Sprites/Monitors/Monitors.bin" even From 13b0ec6c6e46e3375cf205705766e82d03d072b9 Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Sat, 25 Dec 2021 23:47:52 +0000 Subject: [PATCH 43/72] Clean up direct addressing of KosM modules (where possible) --- Build Scripts/sk.txt | 10 +++---- .../Ending/Kosinski Art/Master Emerald.bin | Bin 976 -> 0 bytes .../ANDKnuckles Subtitle.bin | Bin 800 -> 802 bytes .../Ending/KosinskiM Art/Master Emerald.bin | Bin 0 -> 978 bytes .../Robotnik Standing Smug.bin | Bin 464 -> 466 bytes .../Sonic Knuckles Pose Banner.bin | Bin 1200 -> 1202 bytes General/Sprites/Robotnik/Egg Robo Head.bin | Bin 480 -> 482 bytes SonLVL INI Files/SSZ/EggMobile.cs | 2 +- s3.asm | 1 - sonic3k.asm | 28 +++++++----------- 10 files changed, 16 insertions(+), 25 deletions(-) delete mode 100644 General/Ending/Kosinski Art/Master Emerald.bin rename General/Ending/{Kosinski Art => KosinskiM Art}/ANDKnuckles Subtitle.bin (75%) create mode 100644 General/Ending/KosinskiM Art/Master Emerald.bin rename General/Ending/{Kosinski Art => KosinskiM Art}/Robotnik Standing Smug.bin (72%) rename General/Ending/{Kosinski Art => KosinskiM Art}/Sonic Knuckles Pose Banner.bin (78%) diff --git a/Build Scripts/sk.txt b/Build Scripts/sk.txt index accf5f8e..01137eba 100644 --- a/Build Scripts/sk.txt +++ b/Build Scripts/sk.txt @@ -396,7 +396,6 @@ #split 0x000D33E4,0x000D3A64,General\Title\Kosinski Art\SK Death Egg.bin #split 0x000D3A64,0x000D3BB4,General\Title\Kosinski Art\SK Mountain Sprite.bin #split 0x000D4BA6,0x000D5CC6,General\Title\Kosinski Art\SK Sonic and Knuckles Hands.bin -#split 0x000DE364,0x000DE684,General\Ending\Kosinski Art\ANDKnuckles Subtitle.bin #split 0x00156C08,0x001574E8,Levels\Pachinko\Kosinski Art\Animated BG 1.bin #split 0x001574E8,0x001578F8,Levels\Pachinko\Kosinski Art\Animated BG 2.bin #split 0x0015BAC0,0x0015C130,General\Special Stage\Kosinski Art\SSResults General.bin @@ -404,10 +403,6 @@ #split 0x0015CD62,0x0015EDB2,General\Save Menu\Kosinski Art\SK Zone Art.bin #split 0x0015EDB2,0x0015FC12,General\Save Menu\Kosinski Art\Portraits.bin #split 0x0015A774,0x0015B374,General\Save Menu\Kosinski Art\SK Extra.bin -#split 0x0015FDDE,0x0015FFBE,General\Sprites\Robotnik\Egg Robo Head.bin -#split 0x00163248,0x00163418,General\Ending\Kosinski Art\Robotnik Standing Smug.bin -#split 0x0016416E,0x0016461E,General\Ending\Kosinski Art\Sonic Knuckles Pose Banner.bin -#split 0x0017FCBC,0x0018008C,General\Ending\Kosinski Art\Master Emerald.bin #split 0x00187D1C,0x00188E7C,General\Blue Sphere\Kosinski Art\Characters.bin #split 0x00188F1E,0x001897DE,General\Blue Sphere\Kosinski Art\Character Sprites.bin #split 0x001897DE,0x00189C4E,General\Blue Sphere\Kosinski Art\Normal Text.bin @@ -429,6 +424,7 @@ #split 0x000DB406,0x000DB818,General\Sprites\SS Entry\Badnik Explosion.bin #split 0x000DC6C2,0x000DC9C4,General\Sprites\Blaster\Blaster.bin #split 0x000DC9C4,0x000DCC76,General\Sprites\Technosqueek\Technosqueek.bin +#split 0x000DE362,0x000DE684,General\Ending\KosinskiM Art\ANDKnuckles Subtitle.bin #split 0x0014C652,0x0014C7D4,General\Sprites\Sonic\Art\Hyper Sonic Stars.bin #split 0x0014C7D4,0x0014C926,General\Sprites\Tails\Art\Super Tails birds.bin #split 0x001541B0,0x00154552,Levels\SSZ\KosinskiM Art\Spiral Ramp.bin @@ -450,6 +446,7 @@ #split 0x0015C9BC,0x0015CA9E,Levels\DEZ\KosinskiM Art\Title Card.bin #split 0x0015CA9E,0x0015CC30,Levels\DDZ\KosinskiM Art\Title Card.bin #split 0x0015CC30,0x0015CD62,Levels\HPZ\KosinskiM Art\Title Card.bin +#split 0x0015FDDC,0x0015FFBE,General\Sprites\Robotnik\Egg Robo Head.bin #split 0x001607D8,0x00160AAA,General\Sprites\Robotnik\Robotnik Ship Crane.bin #split 0x00160AAA,0x00160D8C,General\Ending\KosinskiM Art\Island Lift Animated Tiles.bin #split 0x00160D8C,0x0016118E,General\Ending\KosinskiM Art\Pelican and Dolphin.bin @@ -457,8 +454,10 @@ #split 0x00161660,0x001620D2,General\Ending\KosinskiM Art\Sonic Ending Pose.bin #split 0x001620D2,0x00162914,General\Ending\KosinskiM Art\Super Sonic Ending Pose.bin #split 0x00162914,0x00163246,General\Ending\KosinskiM Art\Sonic Plane Ending.bin +#split 0x00163246,0x00163418,General\Ending\KosinskiM Art\Robotnik Standing Smug.bin #split 0x00163418,0x00163B9A,General\Ending\KosinskiM Art\Sonic Plane.bin #split 0x00163B9A,0x0016416C,General\Sprites\Knuckles\Cutscene\Knuckles Ending Cutscene.bin +#split 0x0016416C,0x0016461E,General\Ending\KosinskiM Art\Sonic Knuckles Pose Banner.bin #split 0x0016461E,0x001649A0,General\Ending\KosinskiM Art\Sonic 3 Pose Banner.bin #split 0x00165000,0x001651D2,General\Sprites\Knuckles\Cutscene\Knuckles Intro Bomb.bin #split 0x001651D2,0x001652B4,Levels\FBZ\KosinskiM Art\Exit Hall.bin @@ -502,6 +501,7 @@ #split 0x0017EDB4,0x0017EFA6,Levels\SSZ\KosinskiM Art\GHZ Ball and Chain.bin #split 0x0017EFA6,0x0017F738,Levels\SSZ\KosinskiM Art\MTZ Orbs.bin #split 0x0017F738,0x0017FCBA,General\Sprites\Mecha Sonic\Mecha Sonic Extra Art.bin +#split 0x0017FCBA,0x0018008C,General\Ending\KosinskiM Art\Master Emerald.bin #split 0x0018008C,0x001803EE,General\Sprites\Spikebonker\Spikebonker.bin #split 0x001803EE,0x001805A0,General\Sprites\Chainspike\Chainspike.bin #split 0x001805A0,0x00181002,Levels\DEZ\KosinskiM Art\Miniboss Misc Art.bin diff --git a/General/Ending/Kosinski Art/Master Emerald.bin b/General/Ending/Kosinski Art/Master Emerald.bin deleted file mode 100644 index edf04b171ccc69286bd1250bc289a519be0862cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 976 zcmX}qZA@Eb6bJC9h0Q{F>D_#}X1FlmgISzGqS5G*F*hSqvQWb^OibJsM~sOCKWJEt zNtpz0bV(Cdj3#mj#kACj204c@V73bQYwi}yHnv?50#foJ z4g_c&WMJ>JSbA6R3bCACIEfq?z6d&Tz(5CBti7lkV*vt`8T$EB)Y*4iLaD2+e~VcI z{ZPp8Gd9mE+vz>2^=9i$2Z0I+!BHKg0Tr?0oy(|VUiGmoT*EGPTlM)QgNONxe09#V zS}T?orCdF^3q$t)pIAjzHpEx{FZH-tD))T6D*m4HHXK-ULl&WbH$2K?EvvkDi~=b#;hG@&CUtejv35{5 zJzbGqXUq8IH`RW`7gcxpb{s~ck|RIh0OSq6v|jgwJe_KTA^~-vm+wP8{v%y{8qP!kk=#j`M>(4R>W+dI21h zx%)Rle0W2)0rTdpxZhNky2VX?$`Eq&v8%t^Ni8w`TI$} z`FtPF_5L}+fOlZphkoHz4IJQ$Q(&`^ukHx$Id?O{vq|x>&}^Zy@4r>$P1AO=#WD;;U_4rn_qM+ znzgiw)}8iLsd?|h<0lxQ6Rl2YRxlp4eJh`7h?|>a`w`Xak9aE&s)MsJoLSrVs|Oqg z6~0k-tfPC+DbXzncJz~M4QSCT*~vtTQlonhNyQUmiQyZw2C=qv$JeMa5PBXh|B@m0 zp>LVf(3GjIZQVUW*%)RKlei5uiYq*$#y}JQ!I`nCtk^xMlPFS9SC^>&2ZOHf!3xvk-yhtCEgpN0^XlGhQZ(|=-9x?}HLJrt^)+Q0a0 zuV~TtQwu(u)2E}QTpxW}U&x^38cukUul=55{o_G;tM>3Bw^&R2J;z@DPkADP`Zjx0 z=JSMCO*!klbFtOg_{^Hcnt#KiKGwV{ct&^pUgy;~TDVVr)`ZM+~b6 z49n9M-gUM_SbkIMLwr$lmu|-)BpNyL1NKACz)R~jPbgE#Rwxi*7lY>%<)d}HA415_ z?ZQE1%5f4KEC^vb`Xjs7xjQo~p|TO$cpz+bNeDUJQm_B3PpT!%^h$#vRIayUD3p?< zp`W{cBgBWdRbpqLV}`v@jc);;e+LU<`;X#Ww{LprZf^KmAkA3+r63e`lbs_UVe2JNfeZhtci~to%1JeKi delta 8 Pcmcb_e1Ul*(*;HV5C;P- diff --git a/General/Ending/Kosinski Art/Sonic Knuckles Pose Banner.bin b/General/Ending/KosinskiM Art/Sonic Knuckles Pose Banner.bin similarity index 78% rename from General/Ending/Kosinski Art/Sonic Knuckles Pose Banner.bin rename to General/Ending/KosinskiM Art/Sonic Knuckles Pose Banner.bin index e795354a4223d0a0452bdde10c8013cb732941de..f7d30e790baa92f8925ec21fda5ff4506dfc7e74 100644 GIT binary patch delta 10 RcmdnMxrvjBlVQUK761^p0^|Sy delta 8 PcmdnQxq)*d(*_m*4pIW# diff --git a/General/Sprites/Robotnik/Egg Robo Head.bin b/General/Sprites/Robotnik/Egg Robo Head.bin index 8fd33684954f01d2e486df9da9b47f99c0305915..3ab5a66ff9b82fc1071d91e77997a311d7de6448 100644 GIT binary patch delta 10 RcmaFB{D_%}g<-=3MgSB017H9E delta 8 PcmaFF{D65Q(*s5T5eEZZ diff --git a/SonLVL INI Files/SSZ/EggMobile.cs b/SonLVL INI Files/SSZ/EggMobile.cs index e575a032..3af27493 100644 --- a/SonLVL INI Files/SSZ/EggMobile.cs +++ b/SonLVL INI Files/SSZ/EggMobile.cs @@ -80,7 +80,7 @@ public override void Init(ObjectData data) "../General/Sprites/Mecha Sonic/Map - Mecha Sonic.asm", 0, 1, true); var emerald = ObjectHelper.MapASMToBmp(LevelData.ReadFile( - "../General/Ending/Kosinski Art/Master Emerald.bin", CompressionType.Kosinski), + "../General/Ending/KosinskiM Art/Master Emerald.bin", CompressionType.KosinskiM), "../Levels/SSZ/Misc Object Data/Map - Master Emerald.asm", 0, 0, true); subtypes = new ReadOnlyCollection(new byte[0]); diff --git a/s3.asm b/s3.asm index dcbfd410..40e1760b 100644 --- a/s3.asm +++ b/s3.asm @@ -119686,7 +119686,6 @@ ArtKosM_SSResults: dc.w $1220 ArtKos_SSResultsGeneral: binclude "General/Special Stage/Kosinski Art/S3 SSResults General.bin" - even ArtKos_SSResultsTKIcons: binclude "General/Special Stage/Kosinski Art/S3 SSResults Tails Knuckles Icons.bin" even diff --git a/sonic3k.asm b/sonic3k.asm index 92034f3b..e0a6bdea 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -101551,15 +101551,15 @@ loc_4DC7E: lea PLC_SphereResults_4DDE8(pc),a1 jsr (Load_PLC_Immediate).l lea (RAM_start).l,a1 - lea (ArtKos_SKPoseBanner).l,a0 + lea (ArtKosM_SKPoseBanner+2).l,a0 jsr (Kos_Decomp).l - lea (ArtKos_ANDKnuckles).l,a0 + lea (ArtKosM_ANDKnuckles+2).l,a0 jsr (Kos_Decomp).l - lea (ArtKos_EndingMasterEmerald).l,a0 + lea (ArtKosM_EndingMasterEmerald+2).l,a0 jsr (Kos_Decomp).l - lea (ArtKos_RobotnikSmug).l,a0 + lea (ArtKosM_RobotnikSmug+2).l,a0 jsr (Kos_Decomp).l - lea (ArtKos_EggRoboHead).l,a0 + lea (ArtKosM_EggRoboHead+2).l,a0 jsr (Kos_Decomp).l move.w a1,d3 lsr.w #1,d3 @@ -201937,8 +201937,7 @@ ArtNem_BlueSphereText: binclude "General/Blue Sphere/Nemesis Art/Large Text.bin" ArtNem_FBZEndBossFlame: binclude "Levels/FBZ/Nemesis Art/End Boss Flame.bin" even -ArtKosM_ANDKnuckles:dc.w $4C0 -ArtKos_ANDKnuckles: binclude "General/Ending/Kosinski Art/ANDKnuckles Subtitle.bin" +ArtKosM_ANDKnuckles: binclude "General/Ending/KosinskiM Art/ANDKnuckles Subtitle.bin" even if ~~strip_padding @@ -202127,7 +202126,6 @@ ArtKosM_ResultsSONIC: binclude "General/Sprites/Results/Results SONIC.bin" even ArtKosM_SSResults: dc.w $12A0 ArtKos_SSResultsGeneral: binclude "General/Special Stage/Kosinski Art/SSResults General.bin" - even ArtKos_SSResultsTKIcons: binclude "General/Special Stage/Kosinski Art/SSResults Tails Knuckles Icons.bin" even ArtKosM_TitleCardSKZone:binclude "General/Sprites/Title Card/Title Card SK Zone.bin" @@ -202163,9 +202161,7 @@ DemoDat_SOZ: binclude "Levels/SOZ/Demodata/1.bin" DemoDat_SpecialStage: binclude "General/Special Stage/Demodata/1.bin" even -ArtKosM_EggRoboHead:dc.w $400 - even -ArtKos_EggRoboHead: binclude "General/Sprites/Robotnik/Egg Robo Head.bin" +ArtKosM_EggRoboHead: binclude "General/Sprites/Robotnik/Egg Robo Head.bin" even ArtNem_EggRoboRun: binclude "General/Sprites/Robotnik/Egg Robo Run.bin" even @@ -202185,15 +202181,13 @@ ArtKosM_SuperSonicEndPose: binclude "General/Ending/KosinskiM Art/Super Sonic En even ArtKosM_SonicPlaneEnding: binclude "General/Ending/KosinskiM Art/Sonic Plane Ending.bin" even -ArtKosM_RobotnikSmug: dc.w $7A0 -ArtKos_RobotnikSmug: binclude "General/Ending/Kosinski Art/Robotnik Standing Smug.bin" +ArtKosM_RobotnikSmug: binclude "General/Ending/KosinskiM Art/Robotnik Standing Smug.bin" even ArtKosM_SonicPlane: binclude "General/Ending/KosinskiM Art/Sonic Plane.bin" even ArtKosM_KnuxEnding: binclude "General/Sprites/Knuckles/Cutscene/Knuckles Ending Cutscene.bin" even -ArtKosM_SKPoseBanner: dc.w $900 -ArtKos_SKPoseBanner: binclude "General/Ending/Kosinski Art/Sonic Knuckles Pose Banner.bin" +ArtKosM_SKPoseBanner: binclude "General/Ending/KosinskiM Art/Sonic Knuckles Pose Banner.bin" even ArtKosM_S3PoseBanner: binclude "General/Ending/KosinskiM Art/Sonic 3 Pose Banner.bin" even @@ -202315,9 +202309,7 @@ ArtKosM_SSZMTZOrbs: binclude "Levels/SSZ/KosinskiM Art/MTZ Orbs.bin" even ArtKosM_MechaSonicExtra: binclude "General/Sprites/Mecha Sonic/Mecha Sonic Extra Art.bin" even -ArtKosM_EndingMasterEmerald: dc.w $880 - even -ArtKos_EndingMasterEmerald: binclude "General/Ending/Kosinski Art/Master Emerald.bin" +ArtKosM_EndingMasterEmerald: binclude "General/Ending/KosinskiM Art/Master Emerald.bin" even ArtKosM_Spikebonker:binclude "General/Sprites/Spikebonker/Spikebonker.bin" even From 025574aa2a49b8b938147883418d0cb752803728 Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Sun, 26 Dec 2021 01:09:19 +0000 Subject: [PATCH 44/72] Format ending data --- sonic3k.asm | 595 +++++++++++++++++++++++++++------------------------- 1 file changed, 312 insertions(+), 283 deletions(-) diff --git a/sonic3k.asm b/sonic3k.asm index e0a6bdea..f0485dc3 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -122387,109 +122387,144 @@ off_5B6E6: dc.w byte_5B72E-off_5B6E6 dc.w byte_5B9A2-off_5B6E6 byte_5B72E: dc.b $F dc.b 7 - dc.b "EXECUTIVE PRODUCER",0,0 + dc.b "EXECUTIVE PRODUCER",0 + even byte_5B744: dc.b $11 dc.b $E - dc.b "HAYAO NAKAYAMA",0,0 + dc.b "HAYAO NAKAYAMA",0 + even byte_5B756: dc.b $21 dc.b $B - dc.b "PROJECT MANAGERS",0,0 + dc.b "PROJECT MANAGERS",0 + even byte_5B76A: dc.b $23 dc.b $10 - dc.b "HISASHI SUZUKI",0,0 + dc.b "HISASHI SUZUKI",0 + even byte_5B77C: dc.b $24 dc.b $E - dc.b "SHINOBU TOYODA",0,0 + dc.b "SHINOBU TOYODA",0 + even byte_5B78E: dc.b $25 dc.b $E dc.b "MASAHARU YOSHII",0 + even byte_5B7A0: dc.b $35 dc.b $19 - dc.b "PRODUCER",0,0 + dc.b "PRODUCER",0 + even byte_5B7AC: dc.b $37 dc.b $18 dc.b "YUJI NAKA",0 + even byte_5B7B8: dc.b $47 dc.b $1B - dc.b "DIRECTOR",0,0 + dc.b "DIRECTOR",0 + even byte_5B7C4: dc.b $49 dc.b 8 dc.b "HIROKAZU YASUHARA",0 + even byte_5B7D8: dc.b $59 dc.b 9 - dc.b "LEAD GAME DESIGNER",0,0 + dc.b "LEAD GAME DESIGNER",0 + even byte_5B7EE: dc.b $5B dc.b 8 dc.b "HIROKAZU YASUHARA",0 + even byte_5B802: dc.b $6B dc.b 3 dc.b "SENIOR GAME DESIGNERS",0 + even byte_5B81A: dc.b $6D dc.b $A dc.b "HISAYOSHI YOSHIDA",0 + even byte_5B82E: dc.b $6E dc.b $10 - dc.b "TAKASHI IIZUKA",0,0 + dc.b "TAKASHI IIZUKA",0 + even byte_5B840: dc.b $7E dc.b $B dc.b "LEAD PROGRAMMER",0 + even byte_5B852: dc.b $80 dc.b $18 dc.b "YUJI NAKA",0 + even byte_5B85E: dc.b $90 dc.b 7 - dc.b "SENIOR PROGRAMMERS",0,0 + dc.b "SENIOR PROGRAMMERS",0 + even byte_5B874: dc.b $92 dc.b $C dc.b "TAKAHIRO HAMANO",0 + even byte_5B886: dc.b $93 dc.b 8 dc.b "MASANOBU YAMAMOTO",0 + even byte_5B89A: dc.b $A3 dc.b 7 - dc.b "CHARACTER DESIGNER",0,0 + dc.b "CHARACTER DESIGNER",0 + even byte_5B8B0: dc.b $A5 dc.b 6 dc.b "TAKASHI THOMAS YUDA",0 + even byte_5B8C6: dc.b $B5 dc.b $17 dc.b "C.G. ARTIST",0 + even byte_5B8D4: dc.b $B7 dc.b $12 dc.b "KUNITAKE AOKI",0 + even byte_5B8E4: dc.b $C7 dc.b $13 - dc.b "ENEMY ARTIST",0,0 + dc.b "ENEMY ARTIST",0 + even byte_5B8F4: dc.b $C9 dc.b $A - dc.b "SATOSHI YOKOKAWA",0,0 + dc.b "SATOSHI YOKOKAWA",0 + even byte_5B908: dc.b $D9 dc.b $11 dc.b "SCENE ARTISTS",0 + even byte_5B918: dc.b $DB dc.b $12 dc.b "KUNITAKE AOKI",0 + even byte_5B928: dc.b $DC dc.b $14 - dc.b "CHIE YOSHIDA",0,0 + dc.b "CHIE YOSHIDA",0 + even byte_5B938: dc.b $DD dc.b $12 - dc.b "TSUNEKO AOKI",0,0 + dc.b "TSUNEKO AOKI",0 + even byte_5B948: dc.b $DE dc.b $10 dc.b "SHIGERU OKADA",0 + even byte_5B958: dc.b $DF dc.b 6 dc.b "TAKASHI THOMAS YUDA",0 + even byte_5B96E: dc.b $E0 dc.b $A - dc.b "SATOSHI YOKOKAWA",0,0 + dc.b "SATOSHI YOKOKAWA",0 + even byte_5B982: dc.b $F0 dc.b $11 dc.b "ART ASSISTANT",0 + even byte_5B992: dc.b $F2 dc.b $12 - dc.b "OSAMU OHASHI",0,0 + dc.b "OSAMU OHASHI",0 + even byte_5B9A2: dc.b $FF dc.b $F8 off_5B9A4: dc.w byte_5B9F6-off_5B9A4 @@ -122536,124 +122571,164 @@ off_5B9A4: dc.w byte_5B9F6-off_5B9A4 byte_5B9F6: dc.b 2 dc.b $D dc.b "MUSIC COMPOSERS",0 + even byte_5BA08: dc.b 4 dc.b $E - dc.b "HOWARD DROSSIN",0,0 + dc.b "HOWARD DROSSIN",0 + even byte_5BA1A: dc.b $14 dc.b $D dc.b "SEGA SOUND TEAM",0 + even byte_5BA2C: dc.b $16 dc.b $24 - dc.b "BO",0,0 + dc.b "BO",0 + even byte_5BA32: dc.b $17 dc.b $12 - dc.b "SACHIO OGAWA",0,0 + dc.b "SACHIO OGAWA",0 + even byte_5BA42: dc.b $18 dc.b $20 dc.b "MILPO",0 + even byte_5BA4A: dc.b $19 dc.b $A - dc.b "MASARU SETSUMARU",0,0 + dc.b "MASARU SETSUMARU",0 + even byte_5BA5E: dc.b $1A dc.b $C dc.b "TATSUYUKI MAEDA",0 + even byte_5BA70: dc.b $1B dc.b $C dc.b "TOMONORI SAWADA",0 + even byte_5BA82: dc.b $1C dc.b $E - dc.b "MASAYUKI NAGAO",0,0 + dc.b "MASAYUKI NAGAO",0 + even byte_5BA94: dc.b $1D dc.b $16 - dc.b "JUN SENOUE",0,0 + dc.b "JUN SENOUE",0 + even byte_5BAA2: dc.b $2D dc.b 3 - dc.b "EXECUTIVE MANAGEMENT",0,0 + dc.b "EXECUTIVE MANAGEMENT",0 + even byte_5BABA: dc.b $2F dc.b 6 dc.b $53 dc.b "HOUICHIROU IRIMAJIRI",0 + even byte_5BAD2: dc.b $30 dc.b $12 - dc.b "TOM KALINSKE",0,0 + dc.b "TOM KALINSKE",0 + even byte_5BAE2: dc.b $31 dc.b $16 - dc.b "PAUL RIOUX",0,0 + dc.b "PAUL RIOUX",0 + even byte_5BAF0: dc.b $41 dc.b $D dc.b "PRODUCT MANAGER",0 + even byte_5BB02: dc.b $43 dc.b $12 - dc.b "PAMELA KELLY",0,0 + dc.b "PAMELA KELLY",0 + even byte_5BB12: dc.b $53 dc.b 3 dc.b "EXECUTIVE COORDINATOR",0 + even byte_5BB2A: dc.b $55 dc.b $E - dc.b "MAMORU SHIGETA",0,0 + dc.b "MAMORU SHIGETA",0 + even byte_5BB3C: dc.b $56 dc.b $14 - dc.b "TOMIO TAKAMI",0,0 + dc.b "TOMIO TAKAMI",0 + even byte_5BB4C: dc.b $57 dc.b $A dc.b "DIANE A. FORNASIER ",0 + even byte_5BB62: dc.b $58 dc.b $12 - dc.b "ROGER HECTOR",0,0 + dc.b "ROGER HECTOR",0 + even byte_5BB72: dc.b $59 dc.b 4 dc.b "TAKAHARU UTSUNOMIYA",0 + even byte_5BB88: dc.b $69 dc.b $1B dc.b "TESTERS",0 + even byte_5BB92: dc.b $6B dc.b $16 dc.b "JASON KUO",0 + even byte_5BB9E: dc.b $6C dc.b $16 - dc.b "RICK GREER",0,0 + dc.b "RICK GREER",0 + even byte_5BBAC: dc.b $6D dc.b $12 dc.b "MIKE WILLIAMS",0 + even byte_5BBBC: dc.b $7D dc.b 5 - dc.b "SOUND SPECIAL THANKS",0,0 + dc.b "SOUND SPECIAL THANKS",0 + even byte_5BBD4: dc.b $7F dc.b $16 - dc.b "CUBE CORP.",0,0 + dc.b "CUBE CORP.",0 + even byte_5BBE2: dc.b $80 dc.b $16 - dc.b "OPUS CORP.",0,0 + dc.b "OPUS CORP.",0 + even byte_5BBF0: dc.b $81 dc.b 8 dc.b "MASANORI NAKAYAMA",0 + even byte_5BC04: dc.b $82 dc.b $14 - dc.b "(STUDIO WHO)",0,0 + dc.b "(STUDIO WHO)",0 + even byte_5BC14: dc.b $92 dc.b $F - dc.b "SPECIAL THANKS",0,0 + dc.b "SPECIAL THANKS",0 + even byte_5BC26: dc.b $94 dc.b $10 dc.b "JINA ISHIWATARI",0 + even byte_5BC38: dc.b $95 dc.b $12 - dc.b "EMI KAWAMURA",0,0 + dc.b "EMI KAWAMURA",0 + even byte_5BC48: dc.b $96 dc.b 8 dc.b "DEBORAH MCCRACKEN",0 + even byte_5BC5C: dc.b $97 dc.b $14 dc.b "TAKU MAKINO",0 + even byte_5BC6A: dc.b $AB dc.b $13 - dc.b "PRESENTED BY",0,0 + dc.b "PRESENTED BY",0 + even byte_5BC7A: dc.b $AD dc.b $20 - dc.b "SEGA",0,0 + dc.b "SEGA",0 + even byte_5BC82: dc.b $BD dc.b $20 - dc.b " ",0,0 + dc.b " ",0 + even byte_5BC88: dc.b $FF dc.b $F4 off_5BC8A: dc.w byte_5BCD2-off_5BC8A @@ -122694,109 +122769,144 @@ off_5BC8A: dc.w byte_5BCD2-off_5BC8A dc.w byte_5BF46-off_5BC8A byte_5BCD2: dc.b $F dc.b 7 - dc.b "EXECUTIVE PRODUCER",0,0 + dc.b "EXECUTIVE PRODUCER",0 + even byte_5BCE8: dc.b $11 dc.b $E - dc.b "HAYAO NAKAYAMA",0,0 + dc.b "HAYAO NAKAYAMA",0 + even byte_5BCFA: dc.b $21 dc.b $B - dc.b "PROJECT MANAGERS",0,0 + dc.b "PROJECT MANAGERS",0 + even byte_5BD0E: dc.b $23 dc.b $10 - dc.b "HISASHI SUZUKI",0,0 + dc.b "HISASHI SUZUKI",0 + even byte_5BD20: dc.b $24 dc.b $E - dc.b "SHINOBU TOYODA",0,0 + dc.b "SHINOBU TOYODA",0 + even byte_5BD32: dc.b $25 dc.b $E dc.b "MASAHARU YOSHII",0 + even byte_5BD44: dc.b $35 dc.b $19 - dc.b "PRODUCER",0,0 + dc.b "PRODUCER",0 + even byte_5BD50: dc.b $37 dc.b $18 dc.b "YUJI NAKA",0 + even byte_5BD5C: dc.b $47 dc.b $1B - dc.b "DIRECTOR",0,0 + dc.b "DIRECTOR",0 + even byte_5BD68: dc.b $49 dc.b 8 dc.b "HIROKAZU YASUHARA",0 + even byte_5BD7C: dc.b $59 dc.b 9 - dc.b "LEAD GAME DESIGNER",0,0 + dc.b "LEAD GAME DESIGNER",0 + even byte_5BD92: dc.b $5B dc.b 8 dc.b "HIROKAZU YASUHARA",0 + even byte_5BDA6: dc.b $6B dc.b 3 dc.b "SENIOR GAME DESIGNERS",0 + even byte_5BDBE: dc.b $6D dc.b $A dc.b "HISAYOSHI YOSHIDA",0 + even byte_5BDD2: dc.b $6E dc.b $10 - dc.b "TAKASHI IIZUKA",0,0 + dc.b "TAKASHI IIZUKA",0 + even byte_5BDE4: dc.b $7E dc.b $B dc.b "LEAD PROGRAMMER",0 + even byte_5BDF6: dc.b $80 dc.b $18 dc.b "YUJI NAKA",0 + even byte_5BE02: dc.b $90 dc.b 7 - dc.b "SENIOR PROGRAMMERS",0,0 + dc.b "SENIOR PROGRAMMERS",0 + even byte_5BE18: dc.b $92 dc.b $C dc.b "TAKAHIRO HAMANO",0 + even byte_5BE2A: dc.b $93 dc.b 8 dc.b "MASANOBU YAMAMOTO",0 + even byte_5BE3E: dc.b $A3 dc.b 7 - dc.b "CHARACTER DESIGNER",0,0 + dc.b "CHARACTER DESIGNER",0 + even byte_5BE54: dc.b $A5 dc.b 6 dc.b "TAKASHI THOMAS YUDA",0 + even byte_5BE6A: dc.b $B5 dc.b $17 dc.b "C.G. ARTIST",0 + even byte_5BE78: dc.b $B7 dc.b $12 dc.b "KUNITAKE AOKI",0 + even byte_5BE88: dc.b $C7 dc.b $13 - dc.b "ENEMY ARTIST",0,0 + dc.b "ENEMY ARTIST",0 + even byte_5BE98: dc.b $C9 dc.b $A - dc.b "SATOSHI YOKOKAWA",0,0 + dc.b "SATOSHI YOKOKAWA",0 + even byte_5BEAC: dc.b $D9 dc.b $11 dc.b "SCENE ARTISTS",0 + even byte_5BEBC: dc.b $DB dc.b $12 dc.b "KUNITAKE AOKI",0 + even byte_5BECC: dc.b $DC dc.b $14 - dc.b "CHIE YOSHIDA",0,0 + dc.b "CHIE YOSHIDA",0 + even byte_5BEDC: dc.b $DD dc.b $12 - dc.b "TSUNEKO AOKI",0,0 + dc.b "TSUNEKO AOKI",0 + even byte_5BEEC: dc.b $DE dc.b $10 dc.b "SHIGERU OKADA",0 + even byte_5BEFC: dc.b $DF dc.b 6 dc.b "TAKASHI THOMAS YUDA",0 + even byte_5BF12: dc.b $E0 dc.b $A - dc.b "SATOSHI YOKOKAWA",0,0 + dc.b "SATOSHI YOKOKAWA",0 + even byte_5BF26: dc.b $F0 dc.b $11 dc.b "ART ASSISTANT",0 + even byte_5BF36: dc.b $F2 dc.b $12 - dc.b "OSAMU OHASHI",0,0 + dc.b "OSAMU OHASHI",0 + even byte_5BF46: dc.b $FF dc.b $F8 off_5BF48: dc.w byte_5BFAE-off_5BF48 @@ -122853,153 +122963,203 @@ off_5BF48: dc.w byte_5BFAE-off_5BF48 byte_5BFAE: dc.b 2 dc.b $D dc.b "MUSIC COMPOSERS",0 + even byte_5BFC0: dc.b 4 dc.b $16 - dc.b "BRAD BUXER",0,0 + dc.b "BRAD BUXER",0 + even byte_5BFCE: dc.b 5 dc.b $12 - dc.b "BOBBY BROOKS",0,0 + dc.b "BOBBY BROOKS",0 + even byte_5BFDE: dc.b 6 dc.b $14 dc.b "DARRYL ROSS",0 + even byte_5BFEC: dc.b 7 dc.b $14 dc.b "GEOFF GRACE",0 + even byte_5BFFA: dc.b 8 dc.b $E - dc.b "DOUG GRIGSBY III",0,0 + dc.b "DOUG GRIGSBY III",0 + even byte_5C00E: dc.b 9 dc.b $1A - dc.b "SCIROCCO",0,0 + dc.b "SCIROCCO",0 + even byte_5C01A: dc.b $A dc.b $E - dc.b "HOWARD DROSSIN",0,0 + dc.b "HOWARD DROSSIN",0 + even byte_5C02C: dc.b $1A dc.b $D dc.b "SEGA SOUND TEAM",0 + even byte_5C03E: dc.b $1C dc.b $24 - dc.b "BO",0,0 + dc.b "BO",0 + even byte_5C044: dc.b $1D dc.b $12 - dc.b "SACHIO OGAWA",0,0 + dc.b "SACHIO OGAWA",0 + even byte_5C054: dc.b $1E dc.b $20 dc.b "MILPO",0 + even byte_5C05C: dc.b $1F dc.b $A - dc.b "MASARU SETSUMARU",0,0 + dc.b "MASARU SETSUMARU",0 + even byte_5C070: dc.b $20 dc.b $C dc.b "TATSUYUKI MAEDA",0 + even byte_5C082: dc.b $21 dc.b $C dc.b "TOMONORI SAWADA",0 + even byte_5C094: dc.b $22 dc.b $E - dc.b "MASAYUKI NAGAO",0,0 + dc.b "MASAYUKI NAGAO",0 + even byte_5C0A6: dc.b $23 dc.b $16 - dc.b "JUN SENOUE",0,0 + dc.b "JUN SENOUE",0 + even byte_5C0B4: dc.b $33 dc.b 9 dc.b "SOUND COORDINATOR",0 + even byte_5C0C8: dc.b $35 dc.b $14 dc.b "HISAKI NIMIYA",0 + even byte_5C0D8: dc.b $45 dc.b 3 - dc.b "EXECUTIVE MANAGEMENT",0,0 + dc.b "EXECUTIVE MANAGEMENT",0 + even byte_5C0F0: dc.b $47 dc.b 6 dc.b "SHOUICHIROU IRIMAJIRI",0 + even byte_5C108: dc.b $48 dc.b $12 - dc.b "TOM KALINSKE",0,0 + dc.b "TOM KALINSKE",0 + even byte_5C118: dc.b $49 dc.b $16 - dc.b "PAUL RIOUX",0,0 + dc.b "PAUL RIOUX",0 + even byte_5C126: dc.b $59 dc.b $D dc.b "PRODUCT MANAGER",0 + even byte_5C138: dc.b $5B dc.b $12 - dc.b "PAMELA KELLY",0,0 + dc.b "PAMELA KELLY",0 + even byte_5C148: dc.b $6B dc.b 3 dc.b "EXECUTIVE COORDINATOR",0 + even byte_5C160: dc.b $6D dc.b $E - dc.b "MAMORU SHIGETA",0,0 + dc.b "MAMORU SHIGETA",0 + even byte_5C172: dc.b $6E dc.b $14 - dc.b "TOMIO TAKAMI",0,0 + dc.b "TOMIO TAKAMI",0 + even byte_5C182: dc.b $6F dc.b $A dc.b "DIANE A. FORNASIER ",0 + even byte_5C198: dc.b $70 dc.b $12 - dc.b "ROGER HECTOR",0,0 + dc.b "ROGER HECTOR",0 + even byte_5C1A8: dc.b $71 dc.b 4 dc.b "TAKAHARU UTSUNOMIYA",0 + even byte_5C1BE: dc.b $81 dc.b $1B dc.b "TESTERS",0 + even byte_5C1C8: dc.b $83 dc.b $16 dc.b "JASON KUO",0 + even byte_5C1D4: dc.b $84 dc.b $16 - dc.b "RICK GREER",0,0 + dc.b "RICK GREER",0 + even byte_5C1E2: dc.b $85 dc.b $12 dc.b "MIKE WILLIAMS",0 + even byte_5C1F2: dc.b $95 dc.b 5 - dc.b "SOUND SPECIAL THANKS",0,0 + dc.b "SOUND SPECIAL THANKS",0 + even byte_5C20A: dc.b $97 dc.b 6 - dc.b "MAYUMI NINA SAKAZAKI",0,0 + dc.b "MAYUMI NINA SAKAZAKI",0 + even byte_5C222: dc.b $98 dc.b $20 dc.b "(MRM)",0 + even byte_5C22A: dc.b $99 dc.b $16 - dc.b "CUBE CORP.",0,0 + dc.b "CUBE CORP.",0 + even byte_5C238: dc.b $9A dc.b $16 - dc.b "OPUS CORP.",0,0 + dc.b "OPUS CORP.",0 + even byte_5C246: dc.b $9B dc.b 8 dc.b "MASANORI NAKAYAMA",0 + even byte_5C25A: dc.b $9C dc.b $14 - dc.b "(STUDIO WHO)",0,0 + dc.b "(STUDIO WHO)",0 + even byte_5C26A: dc.b $AC dc.b $F - dc.b "SPECIAL THANKS",0,0 + dc.b "SPECIAL THANKS",0 + even byte_5C27C: dc.b $AE dc.b $10 dc.b "JINA ISHIWATARI",0 + even byte_5C28E: dc.b $AF dc.b $12 - dc.b "EMI KAWAMURA",0,0 + dc.b "EMI KAWAMURA",0 + even byte_5C29E: dc.b $B0 dc.b 8 dc.b "DEBORAH MCCRACKEN",0 + even byte_5C2B2: dc.b $B1 dc.b $14 dc.b "TAKU MAKINO",0 + even byte_5C2C0: dc.b $C5 dc.b $13 - dc.b "PRESENTED BY",0,0 + dc.b "PRESENTED BY",0 + even byte_5C2D0: dc.b $C7 dc.b $20 - dc.b "SEGA",0,0 + dc.b "SEGA",0 + even byte_5C2D8: dc.b $D7 dc.b $20 - dc.b " ",0,0 + dc.b " ",0 + even byte_5C2DE: dc.b $FF dc.b $F4 ; --------------------------------------------------------------------------- @@ -123732,6 +123892,7 @@ off_5CB8E: dc.l byte_5CBAE dc.l byte_5CBB0 dc.l byte_5CBB2 aCONTINUE: dc.b "C O N T I N U E",0 + even byte_5CBAE: dc.b 0 dc.b 1 byte_5CBB0: dc.b 2 @@ -124127,7 +124288,7 @@ loc_5DCA6: jsr (MoveSprite2).l cmpi.w #$140,$10(a0) blo.s loc_5DCC4 - lea word_60253(pc),a1 + lea AniRaw_60253(pc),a1 jsr (Animate_RawNoSSTMultiDelay).l loc_5DCC4: @@ -124830,7 +124991,7 @@ word_5E554: dc.w $170, $B0 loc_5E568: btst #3,(_unkFAB8).w bne.w loc_5EC36 - lea byte_602A1(pc),a1 + lea AniRaw_602A1(pc),a1 jsr (Animate_RawNoSST).l subq.w #1,$2E(a0) bpl.s loc_5E58E @@ -124846,7 +125007,7 @@ loc_5E594: bne.w loc_5EC36 jsr (Swing_UpAndDown).l jsr (MoveSprite2).l - lea byte_602A1(pc),a1 + lea AniRaw_602A1(pc),a1 jsr (Animate_RawNoSST).l move.w $3A(a0),d0 sub.w $10(a0),d0 @@ -124975,12 +125136,12 @@ loc_5E70E: move.w d0,$14(a0) lea ChildObjDat_601BA(pc),a2 jsr (CreateChild1_Normal).l - move.l #byte_60236,$30(a0) + move.l #AniRaw_60236,$30(a0) bsr.w sub_5FE82 tst.b (_unkFA88).w bmi.s loc_5E7C0 move.b #4,$22(a0) - move.l #byte_6023F,$30(a0) + move.l #AniRaw_6023F,$30(a0) lea ChildObjDat_601B2(pc),a2 jsr (CreateChild1_Normal).l lea (ArtKosM_EndingMasterEmerald).l,a1 @@ -125038,7 +125199,7 @@ loc_5E832: move.w #$B3,$2E(a0) tst.b (_unkFA88).w bmi.s locret_5E868 - lea (word_60244).l,a1 + lea (AniRaw_60244).l,a1 jsr (Set_Raw_Animation).l locret_5E868: @@ -125077,7 +125238,7 @@ loc_5E890: move.w d0,$14(a0) move.w #-$200,$18(a0) bsr.w sub_6001E - lea word_60253(pc),a1 + lea AniRaw_60253(pc),a1 jsr (Set_Raw_Animation).l lea ChildObjDat_601D8(pc),a2 jsr (CreateChild1_Normal).l @@ -125433,10 +125594,14 @@ loc_5ECFC: addq.b #1,d0 loc_5ED06: - move.b RawAni_5ED0E(pc,d0.w),$22(a0) + move.b byte_5ED0E(pc,d0.w),$22(a0) rts ; --------------------------------------------------------------------------- -RawAni_5ED0E: dc.b $C, $E, $C, $E, $D, $F, $13, $14, $13, $15 +byte_5ED0E: dc.b $C, $E + dc.b $C, $E + dc.b $D, $F + dc.b $13, $14 + dc.b $13, $15 ; --------------------------------------------------------------------------- loc_5ED18: @@ -125537,7 +125702,7 @@ locret_5EE3A: loc_5EE3C: move.l #loc_5EF5C,(a0) move.b #$1A,$22(a0) - move.l #byte_60281,$30(a0) + move.l #AniRaw_60281,$30(a0) tst.b $2D(a0) beq.s locret_5EE5C move.b #$18,$24(a0) @@ -125549,7 +125714,7 @@ locret_5EE5C: loc_5EE5E: move.l #loc_5EF5C,(a0) move.b #$1A,$22(a0) - move.l #byte_60289,$30(a0) + move.l #AniRaw_60289,$30(a0) tst.b $2C(a0) cmpi.b #8,$2D(a0) blo.s locret_5EE84 @@ -125575,9 +125740,9 @@ loc_5EE86: locret_5EEB6: rts ; --------------------------------------------------------------------------- -off_5EEB8: dc.l byte_6028F - dc.l byte_60295 - dc.l byte_6029B +off_5EEB8: dc.l AniRaw_6028F + dc.l AniRaw_60295 + dc.l AniRaw_6029B ; --------------------------------------------------------------------------- loc_5EEC4: @@ -125605,7 +125770,7 @@ loc_5EF08: jsr (MoveSprite2).l loc_5EF0E: - lea byte_60276(pc),a1 + lea AniRaw_60276(pc),a1 jsr (Animate_RawNoSST).l btst #0,(V_int_run_count+3).w bne.w locret_5FF1A @@ -125613,7 +125778,7 @@ loc_5EF0E: ; --------------------------------------------------------------------------- loc_5EF28: - lea byte_6027C(pc),a1 + lea AniRaw_6027C(pc),a1 jsr (Animate_RawNoSST).l cmpi.w #3,(Player_mode).w beq.s loc_5EF3E @@ -126020,23 +126185,19 @@ loc_5F346: locret_5F36C: rts ; --------------------------------------------------------------------------- -byte_5F36E: dc.b 0 - dc.b $40 - dc.b 0 - dc.b $40 - dc.b $E4 - dc.b $2C - dc.b $E4 - dc.b $2C +byte_5F36E: dc.b 0, $40 + dc.b 0, $40 + dc.b $E4, $2C + dc.b $E4, $2C ; --------------------------------------------------------------------------- loc_5F376: - lea byte_6025C(pc),a1 + lea AniRaw_6025C(pc),a1 jsr (Animate_RawNoSST).l btst #2,(_unkFAB8).w beq.s loc_5F398 move.l #loc_5F39E,(a0) - lea byte_60260(pc),a1 + lea AniRaw_60260(pc),a1 jsr (Set_Raw_Animation).l loc_5F398: @@ -126058,18 +126219,14 @@ loc_5F3AA: lea ChildObjDat_60204(pc),a2 jmp (CreateChild1_Normal).l ; --------------------------------------------------------------------------- -byte_5F3D2: dc.b $24 - dc.b $2C - dc.b $24 - dc.b $2C - dc.b 8 - dc.b $40 - dc.b $24 - dc.b $2C +byte_5F3D2: dc.b $24, $2C + dc.b $24, $2C + dc.b 8, $40 + dc.b $24, $2C ; --------------------------------------------------------------------------- loc_5F3DA: - lea byte_6026B(pc),a1 + lea AniRaw_6026B(pc),a1 jsr (Animate_RawNoSST).l jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- @@ -126081,7 +126238,7 @@ loc_5F3EA: move.l #loc_5F400,(a0) loc_5F400: - lea byte_6026F(pc),a1 + lea AniRaw_6026F(pc),a1 jsr (Animate_RawNoSST).l jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- @@ -126110,14 +126267,10 @@ loc_5F43A: locret_5F460: rts ; --------------------------------------------------------------------------- -byte_5F462: dc.b $E4 - dc.b $2C - dc.b $E4 - dc.b $2C - dc.b $1C - dc.b $2C - dc.b 0 - dc.b $40 +byte_5F462: dc.b $E4, $2C + dc.b $E4, $2C + dc.b $1C, $2C + dc.b 0, $40 ; --------------------------------------------------------------------------- loc_5F46A: @@ -126136,7 +126289,7 @@ loc_5F480: move.b #$40,6(a0) move.w #$120,$10(a0) move.w #$108,$14(a0) - move.l #word_602CA,$30(a0) + move.l #AniRaw_602CA,$30(a0) lea (Pal_KnuxEndPose).l,a1 lea (Normal_palette).w,a2 moveq #7,d6 @@ -126172,12 +126325,9 @@ loc_5F4FA: lea byte_5F520(pc),a1 bra.w loc_5FFD4 ; --------------------------------------------------------------------------- -byte_5F520: dc.b $48 - dc.b 8 - dc.b $34 - dc.b $F0 - dc.b $48 - dc.b $CC +byte_5F520: dc.b $48, 8 + dc.b $34, $F0 + dc.b $48, $CC ; --------------------------------------------------------------------------- loc_5F526: @@ -126224,7 +126374,7 @@ loc_5F59A: ; --------------------------------------------------------------------------- loc_5F5B4: - lea byte_602C6(pc),a1 + lea AniRaw_602C6(pc),a1 jsr (Animate_RawNoSST).l bra.w loc_5F2F8 ; --------------------------------------------------------------------------- @@ -126295,7 +126445,7 @@ locret_5F680: ; --------------------------------------------------------------------------- loc_5F682: - lea byte_602C2(pc),a1 + lea AniRaw_602C2(pc),a1 jsr (Animate_RawNoSST).l bra.w loc_5F2F8 ; --------------------------------------------------------------------------- @@ -126326,7 +126476,7 @@ locret_5F6D8: ; --------------------------------------------------------------------------- loc_5F6DA: - lea byte_602A7(pc),a1 + lea AniRaw_602A7(pc),a1 jsr (Animate_RawNoSSTMultiDelay).l jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- @@ -126731,7 +126881,7 @@ Obj_Difficulty_Eggman: ; --------------------------------------------------------------------------- loc_5FB90: - lea byte_602C6(pc),a1 + lea AniRaw_602C6(pc),a1 jsr (Animate_RawNoSST).l jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- @@ -127494,149 +127644,28 @@ ChildObjDat_60220:dc.w 1 ChildObjDat_6022E:dc.w 0 dc.l loc_5ED6A dc.w $FA07 -byte_60236: dc.b 5 - dc.b $B - dc.b 6 - dc.b 5 - dc.b 7 - dc.b $B - dc.b 6 - dc.b $B - dc.b $FC -byte_6023F: dc.b 4 - dc.b $7F - dc.b 4 - dc.b $7F - dc.b $FC -word_60244: dc.w $400 - dc.w $43F - dc.w $105 - dc.w $205 - dc.w $33F - dc.w $47F - dc.w $47F - dc.b $FC -word_60253: dc.w $10F - dc.w $20F - dc.w $37F - dc.w $37F - dc.b $FC -byte_6025C: dc.b $F - dc.b 1 - dc.b 2 - dc.b $FC -byte_60260: dc.b 7 - dc.b 1 - dc.b 1 - dc.b 3 - dc.b 4 - dc.b $F8 - dc.b 7 - dc.b $7F - dc.b 4 - dc.b 4 - dc.b $FC -byte_6026B: dc.b $F - dc.b $A - dc.b $B - dc.b $FC -byte_6026F: dc.b $B - dc.b 5 - dc.b 6 - dc.b 7 - dc.b 8 - dc.b 9 - dc.b $FC -byte_60276: dc.b 7 - dc.b 0 - dc.b 1 - dc.b 2 - dc.b 3 - dc.b $FC -byte_6027C: dc.b 7 - dc.b 4 - dc.b 5 - dc.b 6 - dc.b $FC -byte_60281: dc.b 7 - dc.b 7 - dc.b 8 - dc.b 9 - dc.b $1A - dc.b $1A - dc.b $1A - dc.b $FC -byte_60289: dc.b 7 - dc.b $A - dc.b $B - dc.b $C - dc.b $D - dc.b $FC -byte_6028F: dc.b $B - dc.b $E - dc.b $F - dc.b $10 - dc.b $11 - dc.b $FC -byte_60295: dc.b $B - dc.b $12 - dc.b $13 - dc.b $14 - dc.b $15 - dc.b $FC -byte_6029B: dc.b $B - dc.b $16 - dc.b $17 - dc.b $18 - dc.b $19 - dc.b $FC -byte_602A1: dc.b 5 - dc.b 2 - dc.b 3 - dc.b 4 - dc.b 3 - dc.b $FC -byte_602A7: dc.b 2 - dc.b 0 - dc.b 2 - dc.b 1 - dc.b 6 - dc.b $F - dc.b 2 - dc.b 1 - dc.b 6 - dc.b 7 - dc.b 2 - dc.b 1 - dc.b 6 - dc.b 3 - dc.b 2 - dc.b 1 - dc.b 6 - dc.b 1 - dc.b 2 - dc.b 1 - dc.b 6 - dc.b 1 - dc.b 2 - dc.b $13 - dc.b 3 - dc.b $3F - dc.b $F4 -byte_602C2: dc.b $E - dc.b 0 - dc.b 1 - dc.b $FC -byte_602C6: dc.b $B - dc.b 0 - dc.b 1 - dc.b $FC -word_602CA: dc.w $500 - dc.w 1 - dc.w $2F8 - dc.w $77F - dc.w $202 - dc.w $FC00 +AniRaw_60236: dc.b 5, $B, 6, 5, 7, $B, 6, $B, $FC +AniRaw_6023F: dc.b 4, $7F, 4, $7F, $FC +AniRaw_60244: dc.b 4, 0, 4, $3F, 1, 5, 2, 5, 3, $3F, 4, $7F, 4, $7F, $FC +AniRaw_60253: dc.b 1, $F, 2, $F, 3, $7F, 3, $7F, $FC +AniRaw_6025C: dc.b $F, 1, 2, $FC +AniRaw_60260: dc.b 7, 1, 1, 3, 4, $F8, 7, $7F, 4, 4, $FC +AniRaw_6026B: dc.b $F, $A, $B, $FC +AniRaw_6026F: dc.b $B, 5, 6, 7, 8, 9, $FC +AniRaw_60276: dc.b 7, 0, 1, 2, 3, $FC +AniRaw_6027C: dc.b 7, 4, 5, 6, $FC +AniRaw_60281: dc.b 7, 7, 8, 9, $1A, $1A, $1A, $FC +AniRaw_60289: dc.b 7, $A, $B, $C, $D, $FC +AniRaw_6028F: dc.b $B, $E, $F, $10, $11, $FC +AniRaw_60295: dc.b $B, $12, $13, $14, $15, $FC +AniRaw_6029B: dc.b $B, $16, $17, $18, $19, $FC +AniRaw_602A1: dc.b 5, 2, 3, 4, 3, $FC +AniRaw_602A7: dc.b 2, 0, 2, 1, 6, $F, 2, 1, 6, 7, 2, 1, 6, 3, 2, 1 + dc.b 6, 1, 2, 1, 6, 1, 2, $13, 3, $3F, $F4 +AniRaw_602C2: dc.b $E, 0, 1, $FC +AniRaw_602C6: dc.b $B, 0, 1, $FC +AniRaw_602CA: dc.b 5, 0, 0, 1, 2, $F8, 7, $7F, 2, 2, $FC + even Map_KnuxEnding: include "General/Sprites/Knuckles/Cutscene/Map - Ending Cutscene.asm" Map_SonicPlane: include "General/Ending/Map - Sonic Plane.asm" From a0afc9b53aa74e6a1079be604b5800bc3d4ff0f4 Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Sat, 25 Dec 2021 23:54:51 +0000 Subject: [PATCH 45/72] Label player object base routines --- s3.asm | 64 ++++++++++++++-------------- sonic3k.asm | 118 ++++++++++++++++++++++++++-------------------------- 2 files changed, 91 insertions(+), 91 deletions(-) diff --git a/s3.asm b/s3.asm index 40e1760b..0f6fb0e1 100644 --- a/s3.asm +++ b/s3.asm @@ -22519,7 +22519,7 @@ loc_1400A: move.w (Ctrl_2).w,(Ctrl_2_logical).w loc_14016: - bsr.w sub_14626 + bsr.w Tails_Display btst #0,$2E(a0) bne.s loc_14034 moveq #0,d0 @@ -22880,9 +22880,9 @@ Obj_Tails: lea (Distance_from_top_P2).w,a5 lea (Dust_P2).w,a6 cmpi.w #2,(Player_mode).w - bne.s loc_14404 + bne.s Tails_Normal tst.w (Debug_placement_mode).w - beq.s loc_14404 + beq.s Tails_Normal cmpi.b #1,(Debug_placement_type).w beq.s loc_143FE btst #4,(Ctrl_1_pressed).w @@ -22904,22 +22904,22 @@ loc_143FE: jmp (DebugMode).l ; --------------------------------------------------------------------------- -loc_14404: +Tails_Normal: moveq #0,d0 move.b 5(a0),d0 - move.w off_14412(pc,d0.w),d1 - jmp off_14412(pc,d1.w) + move.w Tails_Index(pc,d0.w),d1 + jmp Tails_Index(pc,d1.w) ; --------------------------------------------------------------------------- -off_14412: dc.w loc_14420-off_14412 - dc.w loc_14514-off_14412 - dc.w loc_1620A-off_14412 - dc.w loc_162C4-off_14412 - dc.w loc_162F4-off_14412 - dc.w loc_16308-off_14412 - dc.w loc_16324-off_14412 +Tails_Index: dc.w Tails_Init-Tails_Index + dc.w Tails_Control-Tails_Index + dc.w loc_1620A-Tails_Index + dc.w loc_162C4-Tails_Index + dc.w loc_162F4-Tails_Index + dc.w loc_16308-Tails_Index + dc.w loc_16324-Tails_Index ; --------------------------------------------------------------------------- -loc_14420: +Tails_Init: addq.b #2,5(a0) move.b #$F,$1E(a0) move.b #9,$1F(a0) @@ -22937,27 +22937,27 @@ loc_14420: cmpi.w #2,(Player_mode).w bne.s loc_144B4 tst.b (Last_star_post_hit).w - bne.s loc_144CC + bne.s Tails_Init_Continued move.w #ArtTile_Player_2,$A(a0) move.b #$C,$46(a0) move.b #$D,$47(a0) cmpi.b #2,(Special_bonus_entry_flag).w - beq.s loc_144CC + beq.s Tails_Init_Continued move.w $10(a0),(Saved_X_pos).w move.w $14(a0),(Saved_Y_pos).w move.w $A(a0),(Saved_art_tile).w move.w $46(a0),(Saved_solid_bits).w - bra.s loc_144CC + bra.s Tails_Init_Continued ; --------------------------------------------------------------------------- loc_144B4: move.w #ArtTile_Player_2,$A(a0) move.w (Player_1+top_solid_bit).w,$46(a0) tst.w (Player_1+art_tile).w - bpl.s loc_144CC + bpl.s Tails_Init_Continued ori.w #$8000,$A(a0) -loc_144CC: +Tails_Init_Continued: move.b #0,$30(a0) move.b #4,$31(a0) move.b #$1E,$2C(a0) @@ -22976,7 +22976,7 @@ loc_144F4: rts ; --------------------------------------------------------------------------- -loc_14514: +Tails_Control: cmpi.w #2,(Player_mode).w bne.s loc_14544 tst.w (Debug_mode_flag).w @@ -23034,8 +23034,8 @@ loc_145AA: moveq #0,d0 move.b $2A(a0),d0 andi.w #6,d0 - move.w off_1461E(pc,d0.w),d1 - jsr off_1461E(pc,d1.w) + move.w Tails_Modes(pc,d0.w),d1 + jsr Tails_Modes(pc,d1.w) movem.l (sp)+,a4-a6 loc_145C4: @@ -23045,9 +23045,9 @@ loc_145C4: and.w d0,$14(a0) loc_145D4: - bsr.s sub_14626 + bsr.s Tails_Display bsr.w Sonic_RecordPos - bsr.w sub_15284 + bsr.w Tails_Water move.b (Primary_Angle).w,$3A(a0) move.b (Secondary_Angle).w,$3B(a0) tst.b (WindTunnel_flag_P2).w @@ -23071,15 +23071,15 @@ loc_1460C: locret_1461C: rts ; --------------------------------------------------------------------------- -off_1461E: dc.w Tails_Stand_Path-off_1461E - dc.w Tails_Stand_Freespace-off_1461E - dc.w Tails_Spin_Path-off_1461E - dc.w Tails_Spin_Freespace-off_1461E +Tails_Modes: dc.w Tails_Stand_Path-Tails_Modes + dc.w Tails_Stand_Freespace-Tails_Modes + dc.w Tails_Spin_Path-Tails_Modes + dc.w Tails_Spin_Freespace-Tails_Modes ; =============== S U B R O U T I N E ======================================= -sub_14626: +Tails_Display: move.b $34(a0),d0 beq.s loc_14634 subq.b #1,$34(a0) @@ -23144,7 +23144,7 @@ loc_146BA: move.w (a1)+,4(a4) bclr #2,$2B(a0) rts -; End of function sub_14626 +; End of function Tails_Display ; =============== S U B R O U T I N E ======================================= @@ -24144,7 +24144,7 @@ sub_15202: ; =============== S U B R O U T I N E ======================================= -sub_15284: +Tails_Water: tst.b (Water_flag).w bne.s loc_1528C @@ -24217,7 +24217,7 @@ loc_1533C: loc_15362: move.w #sfx_Splash,d0 jmp (Play_Sound_2).l -; End of function sub_15284 +; End of function Tails_Water ; --------------------------------------------------------------------------- diff --git a/sonic3k.asm b/sonic3k.asm index f0485dc3..86e7b679 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -25404,7 +25404,7 @@ loc_132B4: move.w (Ctrl_2).w,(Ctrl_2_logical).w loc_132C0: - bsr.w loc_138FE + bsr.w Tails_Display btst #0,$2E(a0) bne.s loc_132DE moveq #0,d0 @@ -25765,9 +25765,9 @@ Obj_Tails: lea (Distance_from_top_P2).w,a5 lea (Dust_P2).w,a6 cmpi.w #2,(Player_mode).w - bne.s loc_136AE + bne.s Tails_Normal tst.w (Debug_placement_mode).w - beq.s loc_136AE + beq.s Tails_Normal cmpi.b #1,(Debug_placement_type).w beq.s loc_136A8 btst #4,(Ctrl_1_pressed).w @@ -25789,22 +25789,22 @@ loc_136A8: jmp (DebugMode).l ; --------------------------------------------------------------------------- -loc_136AE: +Tails_Normal: moveq #0,d0 move.b routine(a0),d0 - move.w off_136BC(pc,d0.w),d1 - jmp off_136BC(pc,d1.w) + move.w Tails_Index(pc,d0.w),d1 + jmp Tails_Index(pc,d1.w) ; --------------------------------------------------------------------------- -off_136BC: dc.w loc_136CA-off_136BC - dc.w loc_137C4-off_136BC - dc.w loc_1569C-off_136BC - dc.w loc_1578E-off_136BC - dc.w loc_157E0-off_136BC - dc.w loc_157F4-off_136BC - dc.w loc_15810-off_136BC +Tails_Index: dc.w Tails_Init-Tails_Index + dc.w Tails_Control-Tails_Index + dc.w loc_1569C-Tails_Index + dc.w loc_1578E-Tails_Index + dc.w loc_157E0-Tails_Index + dc.w loc_157F4-Tails_Index + dc.w loc_15810-Tails_Index ; --------------------------------------------------------------------------- -loc_136CA: +Tails_Init: addq.b #2,routine(a0) move.b #$F,y_radius(a0) move.b #9,x_radius(a0) @@ -25822,27 +25822,27 @@ loc_136CA: cmpi.w #2,(Player_mode).w bne.s loc_1375E tst.b (Last_star_post_hit).w - bne.s loc_13776 + bne.s Tails_Init_Continued move.w #ArtTile_Player_2,art_tile(a0) move.b #$C,top_solid_bit(a0) move.b #$D,lrb_solid_bit(a0) cmpi.b #2,(Special_bonus_entry_flag).w - beq.s loc_13776 + beq.s Tails_Init_Continued move.w x_pos(a0),(Saved_X_pos).w move.w y_pos(a0),(Saved_Y_pos).w move.w art_tile(a0),(Saved_art_tile).w move.w top_solid_bit(a0),(Saved_solid_bits).w - bra.s loc_13776 + bra.s Tails_Init_Continued ; --------------------------------------------------------------------------- loc_1375E: move.w #ArtTile_Player_2,art_tile(a0) move.w (Player_1+top_solid_bit).w,top_solid_bit(a0) tst.w (Player_1+art_tile).w - bpl.s loc_13776 + bpl.s Tails_Init_Continued ori.w #$8000,art_tile(a0) -loc_13776: +Tails_Init_Continued: move.b #0,flips_remaining(a0) move.b #4,flip_speed(a0) move.b #0,(Super_Tails_flag).w @@ -25862,7 +25862,7 @@ loc_137A4: rts ; --------------------------------------------------------------------------- -loc_137C4: +Tails_Control: cmpi.w #2,(Player_mode).w bne.s loc_13808 tst.w (Debug_mode_flag).w @@ -25931,8 +25931,8 @@ loc_13872: moveq #0,d0 move.b $2A(a0),d0 andi.w #6,d0 - move.w off_138F6(pc,d0.w),d1 - jsr off_138F6(pc,d1.w) + move.w Tails_Modes(pc,d0.w),d1 + jsr Tails_Modes(pc,d1.w) movem.l (sp)+,a4-a6 loc_1388C: @@ -25942,10 +25942,10 @@ loc_1388C: and.w d0,$14(a0) loc_1389C: - bsr.s loc_138FE + bsr.s Tails_Display bsr.w Tails_Super bsr.w Sonic_RecordPos - bsr.w sub_14632 + bsr.w Tails_Water move.b (Primary_Angle).w,$3A(a0) move.b (Secondary_Angle).w,$3B(a0) tst.b (WindTunnel_flag_P2).w @@ -25974,13 +25974,13 @@ loc_138E4: locret_138F4: rts ; --------------------------------------------------------------------------- -off_138F6: dc.w Tails_Stand_Path-off_138F6 - dc.w Tails_Stand_Freespace-off_138F6 - dc.w Tails_Spin_Path-off_138F6 - dc.w Tails_Spin_Freespace-off_138F6 +Tails_Modes: dc.w Tails_Stand_Path-Tails_Modes + dc.w Tails_Stand_Freespace-Tails_Modes + dc.w Tails_Spin_Path-Tails_Modes + dc.w Tails_Spin_Freespace-Tails_Modes ; --------------------------------------------------------------------------- -loc_138FE: +Tails_Display: move.b $34(a0),d0 beq.s loc_1390C subq.b #1,$34(a0) @@ -27120,7 +27120,7 @@ locret_14630: ; =============== S U B R O U T I N E ======================================= -sub_14632: +Tails_Water: tst.b (Water_flag).w bne.s loc_1463A @@ -27207,7 +27207,7 @@ loc_14718: loc_1473E: move.w #sfx_Splash,d0 jmp (Play_Sound_2).l -; End of function sub_14632 +; End of function Tails_Water ; --------------------------------------------------------------------------- @@ -29985,7 +29985,7 @@ Obj_Knuckles: lea (Distance_from_top).w,a5 lea (Dust).w,a6 tst.w (Debug_placement_mode).w - beq.s loc_1648E + beq.s Knuckles_Normal cmpi.b #1,(Debug_placement_type).w beq.s loc_16488 btst #4,(Ctrl_1_pressed).w @@ -30007,22 +30007,22 @@ loc_16488: jmp (DebugMode).l ; --------------------------------------------------------------------------- -loc_1648E: +Knuckles_Normal: moveq #0,d0 move.b routine(a0),d0 - move.w off_1649C(pc,d0.w),d1 - jmp off_1649C(pc,d1.w) + move.w Knuckles_Index(pc,d0.w),d1 + jmp Knuckles_Index(pc,d1.w) ; --------------------------------------------------------------------------- -off_1649C: dc.w loc_164AA-off_1649C - dc.w loc_1656C-off_1649C; 1 - dc.w loc_17BB6-off_1649C; 2 - dc.w loc_17C88-off_1649C; 3 - dc.w loc_17CBA-off_1649C; 4 - dc.w loc_17CCE-off_1649C; 5 - dc.w loc_17CEA-off_1649C; 6 +Knuckles_Index: dc.w Knuckles_Init-Knuckles_Index + dc.w Knuckles_Control-Knuckles_Index; 1 + dc.w loc_17BB6-Knuckles_Index; 2 + dc.w loc_17C88-Knuckles_Index; 3 + dc.w loc_17CBA-Knuckles_Index; 4 + dc.w loc_17CCE-Knuckles_Index; 5 + dc.w loc_17CEA-Knuckles_Index; 6 ; --------------------------------------------------------------------------- -loc_164AA: +Knuckles_Init: addq.b #2,routine(a0) move.b #$13,y_radius(a0) move.b #9,x_radius(a0) @@ -30038,18 +30038,18 @@ loc_164AA: move.w #$C,Acceleration-Max_speed(a4) move.w #$80,Deceleration-Max_speed(a4) tst.b (Last_star_post_hit).w - bne.s loc_16534 + bne.s Knuckles_Init_Continued move.w #ArtTile_Player_1,art_tile(a0) move.b #$C,top_solid_bit(a0) move.b #$D,lrb_solid_bit(a0) cmpi.b #2,(Special_bonus_entry_flag).w - beq.s loc_16534 + beq.s Knuckles_Init_Continued move.w x_pos(a0),(Saved_X_pos).w move.w y_pos(a0),(Saved_Y_pos).w move.w art_tile(a0),(Saved_art_tile).w move.w top_solid_bit(a0),(Saved_solid_bits).w -loc_16534: +Knuckles_Init_Continued: move.b #0,flips_remaining(a0) move.b #4,flip_speed(a0) move.b #0,(Super_Sonic_Knux_flag).w @@ -30062,7 +30062,7 @@ loc_16534: rts ; --------------------------------------------------------------------------- -loc_1656C: +Knuckles_Control: tst.w (Debug_mode_flag).w beq.s loc_165A2 bclr #6,(Ctrl_1_pressed).w @@ -30099,8 +30099,8 @@ loc_165BE: moveq #0,d0 move.b $2A(a0),d0 andi.w #6,d0 - move.w off_16642(pc,d0.w),d1 - jsr off_16642(pc,d1.w) + move.w Knux_Modes(pc,d0.w),d1 + jsr Knux_Modes(pc,d1.w) movem.l (sp)+,a4-a6 loc_165D8: @@ -30110,10 +30110,10 @@ loc_165D8: and.w d0,$14(a0) loc_165E8: - bsr.s sub_1664A + bsr.s Knuckles_Display bsr.w SonicKnux_SuperHyper bsr.w Sonic_RecordPos - bsr.w sub_166EE + bsr.w Knuckles_Water move.b (Primary_Angle).w,$3A(a0) move.b (Secondary_Angle).w,$3B(a0) tst.b (WindTunnel_flag).w @@ -30142,15 +30142,15 @@ loc_16630: locret_16640: rts ; --------------------------------------------------------------------------- -off_16642: dc.w Knux_Stand_Path-off_16642 - dc.w Knux_Stand_Freespace-off_16642 - dc.w Knux_Spin_Path-off_16642 - dc.w Knux_Spin_Freespace-off_16642 +Knux_Modes: dc.w Knux_Stand_Path-Knux_Modes + dc.w Knux_Stand_Freespace-Knux_Modes + dc.w Knux_Spin_Path-Knux_Modes + dc.w Knux_Spin_Freespace-Knux_Modes ; =============== S U B R O U T I N E ======================================= -sub_1664A: +Knuckles_Display: move.b $34(a0),d0 beq.s loc_16658 subq.b #1,$34(a0) @@ -30207,13 +30207,13 @@ loc_166DE: locret_166EC: rts -; End of function sub_1664A +; End of function Knuckles_Display ; =============== S U B R O U T I N E ======================================= -sub_166EE: +Knuckles_Water: tst.b (Water_flag).w bne.s loc_166F6 @@ -30292,7 +30292,7 @@ loc_167C4: loc_167EA: move.w #sfx_Splash,d0 jmp (Play_Sound_2).l -; End of function sub_166EE +; End of function Knuckles_Water ; --------------------------------------------------------------------------- From b2e38130fd595ec41f645532371f3c5a9ab0e075 Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Mon, 27 Dec 2021 00:52:18 +0000 Subject: [PATCH 46/72] Fix up a couple of labels --- Lockon S3/Screen Events.asm | 17 ++++++----- s3.asm | 61 +++++++++++++++++++------------------ sonic3k.asm | 61 ++++++++++++++++++------------------- 3 files changed, 72 insertions(+), 67 deletions(-) diff --git a/Lockon S3/Screen Events.asm b/Lockon S3/Screen Events.asm index f85594b8..8b7b0d19 100644 --- a/Lockon S3/Screen Events.asm +++ b/Lockon S3/Screen Events.asm @@ -110,19 +110,19 @@ ALZ_BackgroundEvent: BPZ_BackgroundEvent: jsr BPZ_Deformation(pc) - lea BPZ_DeformArray(pc),a4 + lea BPZ_BGDeformArray(pc),a4 bra.s loc_23A764 ; --------------------------------------------------------------------------- CGZ_BackgroundEvent: jsr CGZ_Deformation(pc) - lea CGZ_DeformArray(pc),a4 + lea CGZ_BGDeformArray(pc),a4 bra.s loc_23A764 ; --------------------------------------------------------------------------- EMZ_BackgroundEvent: jsr EMZ_Deformation(pc) - lea EMZ_DeformArray(pc),a4 + lea EMZ_BGDeformArray(pc),a4 loc_23A764: lea (H_scroll_buffer).w,a1 @@ -438,9 +438,12 @@ Comp_ScreenInitArray: dc.w $3FF, $1FF, $1F0, $C, $100, $100, $F, $40 ALZ_BGDeformArray: dc.w $18, 8, 8, 8, 8, 8, $2E, 6, $D,$803F,$7FFF -BPZ_DeformArray:dc.w $88, $16, $A, $28, $10, 8,$7FFF -CGZ_DeformArray:dc.w $50, 8, $10, $10,$7FFF -EMZ_DeformArray:dc.w $10, $10, $10, $10, 8, $C, $24, $38, $20,$7FFF +BPZ_BGDeformArray: + dc.w $88, $16, $A, $28, $10, 8,$7FFF +CGZ_BGDeformArray: + dc.w $50, 8, $10, $10,$7FFF +EMZ_BGDeformArray: + dc.w $10, $10, $10, $10, 8, $C, $24, $38, $20,$7FFF ; --------------------------------------------------------------------------- AIZ_TreeReveal: @@ -1615,7 +1618,7 @@ Gumball_ScreenInit: lea Gumball_VScrollArray(pc),a4 lea (HScroll_table).w,a5 move.w (Camera_X_pos_rounded).w,d0 - jmp (RefreshPlaneDirectVScroll).l + jmp (Refresh_PlaneDirectVScroll).l ; --------------------------------------------------------------------------- Gumball_ScreenEvent: diff --git a/s3.asm b/s3.asm index 0f6fb0e1..1243b2d3 100644 --- a/s3.asm +++ b/s3.asm @@ -4088,7 +4088,7 @@ loc_33B8: ; =============== S U B R O U T I N E ======================================= -Pal_FromBlackWhite: +Pal_FadeFromWhite: move.w #$3F,(Palette_fade_info).w moveq #0,d0 lea (Normal_palette).w,a0 @@ -4109,7 +4109,7 @@ loc_33E0: bsr.w Process_Nem_Queue_Init dbf d4,loc_33E0 rts -; End of function Pal_FromBlackWhite +; End of function Pal_FadeFromWhite ; =============== S U B R O U T I N E ======================================= @@ -8831,7 +8831,7 @@ loc_7770: move.w (VDP_reg_1_command).w,d0 ori.b #$40,d0 move.w d0,(VDP_control_port).l - bsr.w Pal_FromBlackWhite + bsr.w Pal_FadeFromWhite loc_77D2: bsr.w Pause_Game @@ -52746,7 +52746,7 @@ loc_2CB84: st (Update_HUD_ring_count).w move.b #$1E,(Player_1+air_left).w move.b #$1E,(Player_2+air_left).w - jsr (Obj_PlayLevelMusic).l + jsr (Restore_LevelMusic).l loc_2CBC0: clr.w $48(a0) @@ -68139,7 +68139,7 @@ loc_39B8C: ; --------------------------------------------------------------------------- -RefreshPlaneDirectVScroll: +Refresh_PlaneDirectVScroll: move.w (a4)+,d2 moveq #$1F,d3 @@ -68163,13 +68163,13 @@ loc_39BB8: rts ; --------------------------------------------------------------------------- -loc_39BD6: +Refresh_PlaneFull_Competition: movem.l d0-d2/d6/a0,-(sp) jsr sub_39B20(pc) jsr sub_39690(pc) movem.l (sp)+,d0-d2/d6/a0 addi.w #$10,d0 - dbf d2,loc_39BD6 + dbf d2,Refresh_PlaneFull_Competition rts ; --------------------------------------------------------------------------- @@ -69119,7 +69119,7 @@ Comp_ScreenInit: move.w (a1)+,d6 moveq #0,d1 move.w #$8000,d7 - jmp loc_39BD6(pc) + jmp Refresh_PlaneFull_Competition(pc) ; =============== S U B R O U T I N E ======================================= @@ -69201,7 +69201,7 @@ Comp_BackgroundInit: moveq #0,d0 moveq #0,d1 move.w #$A000,d7 - jmp loc_39BD6(pc) + jmp Refresh_PlaneFull_Competition(pc) ; =============== S U B R O U T I N E ======================================= @@ -69214,19 +69214,19 @@ ALZ_BackgroundEvent: BPZ_BackgroundEvent: jsr BPZ_Deformation(pc) - lea BPZ_DeformArray(pc),a4 + lea BPZ_BGDeformArray(pc),a4 bra.s loc_3A764 ; --------------------------------------------------------------------------- CGZ_BackgroundEvent: jsr CGZ_Deformation(pc) - lea CGZ_DeformArray(pc),a4 + lea CGZ_BGDeformArray(pc),a4 bra.s loc_3A764 ; --------------------------------------------------------------------------- EMZ_BackgroundEvent: jsr EMZ_Deformation(pc) - lea EMZ_DeformArray(pc),a4 + lea EMZ_BGDeformArray(pc),a4 loc_3A764: lea (H_scroll_buffer).w,a1 @@ -69615,9 +69615,12 @@ Comp_ScreenInitArray: dc.w $3FF, $1FF, $1F0, $C, $100, $100, $F, $40 ALZ_BGDeformArray: dc.w $18, 8, 8, 8, 8, 8, $2E, 6, $D,$803F,$7FFF -BPZ_DeformArray:dc.w $88, $16, $A, $28, $10, 8,$7FFF -CGZ_DeformArray:dc.w $50, 8, $10, $10,$7FFF -EMZ_DeformArray:dc.w $10, $10, $10, $10, 8, $C, $24, $38, $20,$7FFF +BPZ_BGDeformArray: + dc.w $88, $16, $A, $28, $10, 8,$7FFF +CGZ_BGDeformArray: + dc.w $50, 8, $10, $10,$7FFF +EMZ_BGDeformArray: + dc.w $10, $10, $10, $10, 8, $C, $24, $38, $20,$7FFF ; --------------------------------------------------------------------------- AIZ1_ScreenInit: @@ -76002,7 +76005,7 @@ Gumball_ScreenInit: lea Gumball_VScrollArray(pc),a4 lea (HScroll_table).w,a5 move.w (Camera_X_pos_rounded).w,d0 - jmp RefreshPlaneDirectVScroll(pc) + jmp Refresh_PlaneDirectVScroll(pc) ; --------------------------------------------------------------------------- Gumball_ScreenEvent: @@ -82415,7 +82418,7 @@ loc_465E0: loc_465F2: clr.b (Boss_flag).w - jsr (Obj_PlayLevelMusic).l + jsr (Restore_LevelMusic).l lea (PLC_Monitors).l,a1 jsr (Load_PLC_Raw).l jmp (Go_Delete_Sprite_2).l @@ -83762,7 +83765,7 @@ loc_47390: loc_47396: st (_unkFAA8).w clr.b (Boss_flag).w - jsr (Obj_PlayLevelMusic).l + jsr (Restore_LevelMusic).l lea (PLC_EggCapsule).l,a1 jsr (Load_PLC_Raw).l lea ChildObjDat_47BE2(pc),a2 @@ -86419,7 +86422,7 @@ loc_48F3C: bclr #7,4(a0) st (_unkFAA8).w clr.b (Boss_flag).w - jsr (Obj_PlayLevelMusic).l + jsr (Restore_LevelMusic).l move.w #$4230,(Camera_stored_max_X_pos).w lea (Child6_IncLevX).l,a2 jmp (CreateChild6_Simple).l @@ -88077,7 +88080,7 @@ loc_4A04A: bset #5,$38(a0) clr.b (Boss_flag).w move.l #Delete_Current_Sprite,(a0) - jsr (Obj_PlayLevelMusic).l + jsr (Restore_LevelMusic).l lea (MGZ_8x8_Primary_KosM).l,a1 move.w #0,d2 jsr (Queue_Kos_Module).l @@ -90261,7 +90264,7 @@ Obj_CNZMinibossEnd: Obj_CNZMinibossEndGo: move.l #Obj_EndSignControlAwaitStart,(a0) clr.b (Boss_flag).w - jsr (Obj_PlayLevelMusic).l + jsr (Restore_LevelMusic).l jsr AfterBoss_Cleanup(pc) lea (PLC_EndSignStuff).l,a1 jmp (Load_PLC_Raw).l @@ -91254,7 +91257,7 @@ loc_4C21A: move.l #loc_4C240,(a0) st (_unkFAA8).w clr.b (Boss_flag).w - jsr (Obj_PlayLevelMusic).l + jsr (Restore_LevelMusic).l move.w #$48F0,(Camera_stored_max_X_pos).w lea (Child6_IncLevX).l,a2 jmp (CreateChild6_Simple).l @@ -94008,7 +94011,7 @@ loc_4DD66: st (_unkFAA8).w move.w #$7F,$2E(a0) move.l #loc_4DD8A,$34(a0) - jmp (Obj_PlayLevelMusic).l + jmp (Restore_LevelMusic).l ; --------------------------------------------------------------------------- loc_4DD8A: @@ -95691,7 +95694,7 @@ loc_4EEA4: move.l #loc_4EECE,(a0) st (_unkFAA8).w clr.b (Boss_flag).w - jsr (Obj_PlayLevelMusic).l + jsr (Restore_LevelMusic).l move.w #$44C0,(Camera_stored_max_X_pos).w jsr (Create_New_Sprite).l bne.s locret_4EECC @@ -98053,7 +98056,7 @@ loc_50594: bset #5,$38(a0) bclr #7,4(a0) clr.b (Boss_flag).w - jsr Obj_PlayLevelMusic(pc) + jsr Restore_LevelMusic(pc) lea (Player_2).w,a1 bclr #4,$2A(a1) move.l #Go_Delete_Sprite_2,(a0) @@ -104244,7 +104247,7 @@ Obj_Song_Fade_ToLevelMusic: loc_54048: subq.w #1,$2E(a0) bpl.w locret_529CE - bsr.w Obj_PlayLevelMusic + bsr.w Restore_LevelMusic jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- @@ -104264,7 +104267,7 @@ loc_5406E: ; =============== S U B R O U T I N E ======================================= -Obj_PlayLevelMusic: +Restore_LevelMusic: moveq #0,d0 lea (Apparent_zone_and_act).w,a1 move.b (a1)+,d0 @@ -104278,7 +104281,7 @@ Obj_PlayLevelMusic: loc_540A4: jmp (Play_Sound).l -; End of function Obj_PlayLevelMusic +; End of function Restore_LevelMusic ; --------------------------------------------------------------------------- PlayLevelMusic_Playlist: @@ -104337,7 +104340,7 @@ Obj_EndSignControlWait: Obj_EndSignControlDoSign: move.l #Obj_EndSignControlAwaitStart,(a0) clr.b (Boss_flag).w - jsr Obj_PlayLevelMusic(pc) + jsr Restore_LevelMusic(pc) lea Child6_EndSign(pc),a2 jsr CreateChild6_Simple(pc) lea PLC_EndSignStuff(pc),a1 diff --git a/sonic3k.asm b/sonic3k.asm index 86e7b679..8f82834b 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -4508,7 +4508,7 @@ loc_3C76: ; =============== S U B R O U T I N E ======================================= -Pal_FromBlackWhite: +Pal_FadeFromWhite: move.w #$3F,(Palette_fade_info).w bsr.s Pal_FillWhite move.w #$15,d4 @@ -4520,7 +4520,7 @@ loc_3C8E: bsr.w Process_Nem_Queue_Init dbf d4,loc_3C8E rts -; End of function Pal_FromBlackWhite +; End of function Pal_FadeFromWhite ; =============== S U B R O U T I N E ======================================= @@ -7355,7 +7355,7 @@ Level_NotLRZ: jsr (Render_Sprites).l cmpi.b #$15,(Current_zone).w bne.s Level_NotSlots - jsr (Ending_4B356).l + jsr (Slots_RenderLayout).l jsr (Slots_CycleOptions).l Level_NotSlots: @@ -10198,7 +10198,7 @@ loc_8454: move.w (VDP_reg_1_command).w,d0 ori.b #$40,d0 move.w d0,(VDP_control_port).l - bsr.w Pal_FromBlackWhite + bsr.w Pal_FadeFromWhite loc_84C2: bsr.w Pause_Game @@ -62046,7 +62046,7 @@ loc_2D810: st (Update_HUD_ring_count).w ; Start updating timer and rings again move.b #$1E,(Player_1+air_left).w move.b #$1E,(Player_2+air_left).w ; Reset air - jsr (Obj_PlayLevelMusic).l ; Play music + jsr (Restore_LevelMusic).l ; Play music loc_2D84C: clr.w $48(a0) @@ -97990,7 +97990,7 @@ Map_SOZRapelWire:include "Levels/SOZ/Misc Object Data/Map - Rapel Wire.asm" ; =============== S U B R O U T I N E ======================================= -Ending_4B356: +Slots_RenderLayout: bsr.w sub_4B4C4 bsr.w sub_4B592 lea (Chunk_table+$7800).l,a1 @@ -98104,7 +98104,7 @@ loc_4B47C: dbf d7,loc_4B424 move.b d5,(Sprites_drawn).w rts -; End of function Ending_4B356 +; End of function Slots_RenderLayout ; =============== S U B R O U T I N E ======================================= @@ -101466,7 +101466,7 @@ loc_4DA96: move.w (VDP_reg_1_command).w,d0 ori.b #$40,d0 move.w d0,(VDP_control_port).l - jsr (Pal_FromBlackWhite).l + jsr (Pal_FadeFromWhite).l loc_4DB9E: move.b #$1A,(V_int_routine).w @@ -103038,12 +103038,11 @@ loc_4ECFA: ; End of function Refresh_PlaneTileDeform ; --------------------------------------------------------------------------- -; Dead code -RefreshPlaneDirectVScroll: + +Refresh_PlaneDirectVScroll: move.w (a4)+,d2 moveq #$1F,d3 -; Dead code loc_4ED1C: cmp.w d2,d0 bmi.s loc_4ED26 @@ -103051,7 +103050,7 @@ loc_4ED1C: addq.w #4,a5 bra.s loc_4ED1C ; --------------------------------------------------------------------------- -; Dead code + loc_4ED26: move.w (a5),d1 moveq #$10,d6 @@ -103063,7 +103062,7 @@ loc_4ED26: dbf d3,loc_4ED1C rts ; --------------------------------------------------------------------------- -; Dead code + Refresh_PlaneFull_Competition: movem.l d0-d2/d6/a0,-(sp) jsr Setup_TileRowDraw_Competition(pc) @@ -107897,7 +107896,7 @@ loc_521D2: move.l #Obj_IncLevEndXGradual,(a1) move.w #$49A0,(Camera_stored_max_X_pos).w lea (a2),a6 - jsr (Obj_PlayLevelMusic).l + jsr (Restore_LevelMusic).l lea (a6),a2 jsr (Restore_PlayerControl).l addq.w #4,(Events_routine_fg).w @@ -125183,7 +125182,7 @@ loc_5E80A: bpl.s locret_5E830 move.b #4,5(a0) move.w #-$6C0,$1A(a0) - jsr (Obj_PlayLevelMusic).l + jsr (Restore_LevelMusic).l locret_5E830: rts @@ -137447,7 +137446,7 @@ loc_68690: loc_686A2: clr.b (Boss_flag).w - jsr (Obj_PlayLevelMusic).l + jsr (Restore_LevelMusic).l lea (PLC_Monitors).l,a1 jsr (Load_PLC_Raw).l jmp (Go_Delete_Sprite_2).l @@ -138857,7 +138856,7 @@ loc_694D4: jsr (Restore_PlayerControl).l lea (Player_2).w,a1 jsr (Restore_PlayerControl2).l - jsr (Obj_PlayLevelMusic).l + jsr (Restore_LevelMusic).l st (Ctrl_1_locked).w clr.w (Ctrl_1_logical).w jsr (Create_New_Sprite).l @@ -141588,7 +141587,7 @@ loc_6B154: jsr (Restore_PlayerControl).l lea (Player_2).w,a1 jsr (Restore_PlayerControl2).l - jsr (Obj_PlayLevelMusic).l + jsr (Restore_LevelMusic).l jsr (Create_New_Sprite).l bne.s loc_6B19C move.l #loc_6B7BC,(a1) @@ -143209,7 +143208,7 @@ loc_6C200: bset #5,$38(a0) clr.b (Boss_flag).w move.l #Delete_Current_Sprite,(a0) - jsr (Obj_PlayLevelMusic).l + jsr (Restore_LevelMusic).l lea (MGZ_8x8_Primary_KosM).l,a1 move.w #0,d2 jsr (Queue_Kos_Module).l @@ -143275,7 +143274,7 @@ loc_6C2EE: bne.w locret_6BF96 move.l #locret_6C318,(a0) bset #4,$38(a0) - jsr (Obj_PlayLevelMusic).l + jsr (Restore_LevelMusic).l jsr (Create_New_Sprite).l bne.s locret_6C316 move.l #loc_6D104,(a1) @@ -143758,7 +143757,7 @@ loc_6C8F4: move.l #loc_6C932,(a0) clr.b (_unkFAA8).w jsr (Restore_PlayerControl).l - jsr (Obj_PlayLevelMusic).l + jsr (Restore_LevelMusic).l clr.w (Ctrl_1_logical).w st (Ctrl_1_locked).w clr.w $2E(a0) @@ -146635,7 +146634,7 @@ loc_6E724: jsr (Restore_PlayerControl).l lea (Player_2).w,a1 jsr (Restore_PlayerControl2).l - jsr (Obj_PlayLevelMusic).l + jsr (Restore_LevelMusic).l move.w #$200,(Camera_stored_min_Y_pos).w lea (Child6_DecLevY).l,a2 jsr (CreateChild6_Simple).l @@ -149539,7 +149538,7 @@ loc_708AA: clr.w $2E(a0) lea (Player_2).w,a1 jsr (Restore_PlayerControl2).l - jsr (Obj_PlayLevelMusic).l + jsr (Restore_LevelMusic).l jsr (Create_New_Sprite).l bne.s loc_708EE move.l #loc_863C0,(a1) @@ -151403,7 +151402,7 @@ loc_71DE2: jsr (Restore_PlayerControl).l lea (Player_2).w,a1 jsr (Restore_PlayerControl2).l - jsr (Obj_PlayLevelMusic).l + jsr (Restore_LevelMusic).l move.w (Camera_stored_max_Y_pos).w,(Camera_target_max_Y_pos).w move.w #$47C0,(Camera_stored_max_X_pos).w lea (Child6_IncLevX).l,a2 @@ -152766,7 +152765,7 @@ loc_72B96: tst.b (End_of_level_flag).w beq.w locret_72B02 move.l #loc_72BBC,(a0) - jsr (Obj_PlayLevelMusic).l + jsr (Restore_LevelMusic).l move.w #$1F,$2E(a0) lea (PLC_BossExplosion).l,a1 jmp (Load_PLC_Raw).l @@ -154150,7 +154149,7 @@ loc_73A6A: bset #5,$38(a0) bclr #7,4(a0) clr.b (Boss_flag).w - jsr (Obj_PlayLevelMusic).l + jsr (Restore_LevelMusic).l lea (Player_2).w,a1 bclr #4,$2A(a1) move.l #Go_Delete_Sprite_2,(a0) @@ -157839,7 +157838,7 @@ loc_76270: lea (Player_2).w,a1 bset #7,$A(a1) jsr (Restore_PlayerControl2).l - jsr (Obj_PlayLevelMusic).l + jsr (Restore_LevelMusic).l st (Ctrl_1_locked).w move.w #$101,(Ctrl_1_logical).w st (Ctrl_2_locked).w @@ -159681,7 +159680,7 @@ loc_778F2: bne.w locret_77AF6 move.l #loc_77966,(a0) jsr (Restore_PlayerControl).l - jsr (Obj_PlayLevelMusic).l + jsr (Restore_LevelMusic).l clr.w (Ctrl_1_logical).w st (Ctrl_1_locked).w clr.w $2E(a0) @@ -181070,7 +181069,7 @@ Obj_Song_Fade_ToLevelMusic: loc_85B1E: subq.w #1,$2E(a0) bpl.w locret_8405E - bsr.w Obj_PlayLevelMusic + bsr.w Restore_LevelMusic jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- @@ -181091,7 +181090,7 @@ loc_85B44: ; =============== S U B R O U T I N E ======================================= -Obj_PlayLevelMusic: +Restore_LevelMusic: moveq #0,d0 lea (Apparent_zone_and_act).w,a1 move.b (a1)+,d0 @@ -181106,7 +181105,7 @@ Obj_PlayLevelMusic: loc_85B84: jmp (Play_Sound).l -; End of function Obj_PlayLevelMusic +; End of function Restore_LevelMusic ; =============== S U B R O U T I N E ======================================= From f287a032459b855816345c47d738e3e27af3df68 Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Sun, 26 Dec 2021 01:13:33 +0000 Subject: [PATCH 47/72] Rename Play_Sound subroutines --- s3.asm | 814 +++++++++++++-------------- sonic3k.asm | 1538 +++++++++++++++++++++++++-------------------------- 2 files changed, 1176 insertions(+), 1176 deletions(-) diff --git a/s3.asm b/s3.asm index 1243b2d3..b3018f36 100644 --- a/s3.asm +++ b/s3.asm @@ -1747,7 +1747,7 @@ Z80_DefaultVariables: ; =============== S U B R O U T I N E ======================================= -Play_Sound: +Play_Music: move.w #$100,(Z80_bus_request).l loc_15EA: @@ -1756,18 +1756,18 @@ loc_15EA: move.b d0,(Z80_RAM+$1C0A).l move.w #0,(Z80_bus_request).l rts -; End of function Play_Sound +; End of function Play_Music ; --------------------------------------------------------------------------- -Play_Sound_Local: +Play_SFX_Local: tst.b 4(a0) bpl.s locret_164A ; =============== S U B R O U T I N E ======================================= -Play_Sound_2: +Play_SFX: move.w #$100,(Z80_bus_request).l loc_1612: @@ -1790,7 +1790,7 @@ loc_1642: locret_164A: rts -; End of function Play_Sound_2 +; End of function Play_SFX ; =============== S U B R O U T I N E ======================================= @@ -4349,7 +4349,7 @@ Sega_Screen: Title_Screen: moveq #signextendB(mus_FadeOut),d0 - bsr.w Play_Sound + bsr.w Play_Music bsr.w Clear_Nem_Queue bsr.w Pal_FadeToBlack move #$2700,sr @@ -4445,7 +4445,7 @@ loc_36AE: move.w d0,(VDP_control_port).l bsr.w Pal_FadeFromBlack moveq #signextendB(mus_SEGA),d0 - bsr.w Play_Sound + bsr.w Play_Music move.w #$B4,(Demo_timer).w Wait_Sega: @@ -4460,7 +4460,7 @@ Wait_Sega: loc_36F8: moveq #signextendB(mus_StopSEGA),d0 - bsr.w Play_Sound + bsr.w Play_Music lea (Pal_Title).l,a1 loc_3704: @@ -4485,7 +4485,7 @@ loc_3704: lea (RAM_start).l,a2 jsr (Queue_Kos).l moveq #signextendB(mus_TitleScreen),d0 - bsr.w Play_Sound + bsr.w Play_Music Wait_Title: move.b #4,(V_int_routine).w @@ -4602,7 +4602,7 @@ loc_38D8: move.l #5000,(Next_extra_life_score).w move.l #5000,(Next_extra_life_score_P2).w moveq #signextendB(mus_FadeOut),d0 - bsr.w Play_Sound_2 + bsr.w Play_SFX moveq #0,d0 move.b (Title_screen_option).w,d0 bne.w loc_3964 @@ -4624,7 +4624,7 @@ loc_3970: loc_3978: moveq #signextendB(mus_FadeOut),d0 - bsr.w Play_Sound_2 + bsr.w Play_SFX move.w (Next_demo_number).w,d0 andi.w #7,d0 add.w d0,d0 @@ -5015,7 +5015,7 @@ OldDebugCode: bne.s locret_406C move.w #$101,(Debug_cheat_flag).w moveq #signextendB(sfx_RingLoss),d0 - bsr.w Play_Sound_2 + bsr.w Play_SFX loc_4066: move.w #0,(Debug_mode_cheat_counter).w @@ -5094,7 +5094,7 @@ loc_4124: andi.b #3,d0 beq.s loc_413A moveq #signextendB(sfx_Switch),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_413A: jmp (Draw_Sprite).l @@ -5197,7 +5197,7 @@ S3_Level_Select_Code: move.w #$101,(Level_select_flag).w move.w #$101,(Debug_cheat_flag).w moveq #signextendB(sfx_RingRight),d0 - bsr.w Play_Sound_2 + bsr.w Play_SFX loc_42C2: move.w #0,(Level_select_cheat_counter).w @@ -5259,7 +5259,7 @@ Level: tst.w (Demo_mode_flag).w bmi.s loc_46C2 moveq #signextendB(mus_FadeOut),d0 - bsr.w Play_Sound_2 + bsr.w Play_SFX loc_46C2: clr.w (Kos_decomp_queue_count).w @@ -5453,7 +5453,7 @@ loc_48BA: lea (LevelMusic_Playlist).l,a1 move.b (a1,d0.w),d0 move.w d0,(Current_music).w - bsr.w Play_Sound + bsr.w Play_Music tst.w (Current_zone_and_act).w bne.s loc_48F2 cmpi.w #2,(Player_mode).w @@ -7378,7 +7378,7 @@ loc_62E0: clr.l (a1)+ dbf d1,loc_62E0 moveq #signextendB(mus_DataSelect),d0 - bsr.w Play_Sound + bsr.w Play_Music move.w #$707,(Demo_timer).w clr.w (Competition_mode).w clr.l (Camera_X_pos).w @@ -7411,7 +7411,7 @@ LevelSelect2P_PressStart: bsr.w Chk2PZoneCompletion bmi.s loc_6368 moveq #signextendB(sfx_Error),d0 - bsr.w Play_Sound_2 + bsr.w Play_SFX bra.w LevelSelect2P_Main ; --------------------------------------------------------------------------- @@ -7636,7 +7636,7 @@ MenuScreen_Options: moveq #4,d0 bsr.w LoadPalette moveq #signextendB(mus_DataSelect),d0 - bsr.w Play_Sound + bsr.w Play_Music clr.w (Competition_mode).w clr.l (Camera_X_pos).w clr.l (Camera_Y_pos).w @@ -7752,7 +7752,7 @@ loc_66D0: andi.w #$30,d0 beq.s locret_66FE move.w (Sound_test_sound).w,d0 - bsr.w Play_Sound + bsr.w Play_Music lea (S2LevelSelectCodeDat).l,a0 lea (S2ContinueCodeDat).l,a2 lea (Level_select_flag).w,a1 @@ -8002,7 +8002,7 @@ loc_696C: clr.l (a1)+ dbf d1,loc_696C moveq #signextendB(mus_DataSelect),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.w #$707,(Demo_timer).w clr.w (Competition_mode).w clr.l (Camera_X_pos).w @@ -8131,7 +8131,7 @@ LevelSelect_StartZone: move.l #5000,(Next_extra_life_score).w move.l #5000,(Next_extra_life_score_P2).w moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l moveq #0,d0 move.w d0,(Competition_settings).w move.w d0,(Competition_mode).w @@ -8209,7 +8209,7 @@ loc_6BCA: btst #5,d1 beq.s loc_6BF4 move.w (Sound_test_sound).w,d0 - jsr (Play_Sound).l + jsr (Play_Music).l lea (DebugCodeDat).l,a0 lea (AllEmeraldsCodeDat).l,a2 lea (Debug_cheat_flag).w,a1 @@ -8221,7 +8221,7 @@ loc_6BF4: btst #4,d1 beq.s locret_6C02 moveq #signextendB(mus_MutePSG),d0 - jsr (Play_Sound).l + jsr (Play_Music).l locret_6C02: rts @@ -8517,7 +8517,7 @@ CheckCheats: bne.s loc_6E8E move.w #$101,(a1) moveq #signextendB(sfx_RingRight),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_6E88: move.w #0,(Level_select_cheat_counter).w @@ -8535,14 +8535,14 @@ loc_6E8E: bne.s loc_6EBA move.b #$F,(Continue_count).w moveq #signextendB(mus_Continue),d0 - jsr (Play_Sound).l + jsr (Play_Music).l bra.s loc_6EC8 ; --------------------------------------------------------------------------- loc_6EBA: move.w #7,(Chaos_emerald_count).w moveq #signextendB(mus_Emerald),d0 - jsr (Play_Sound).l + jsr (Play_Music).l loc_6EC8: move.w #0,(Debug_mode_cheat_counter).w @@ -8644,7 +8644,7 @@ AniPLC_SONICMILES:dc.w 0 SpecialStage: moveq #signextendB(mus_Stop),d0 - bsr.w Play_Sound + bsr.w Play_Music bsr.w Clear_Nem_Queue bsr.w Pal_FadeToWhite move #$2700,sr @@ -8827,7 +8827,7 @@ loc_7770: move.b #0,(Special_stage_fade_timer).w move.w #$8C89,(VDP_control_port).l moveq #signextendB(mus_SpecialStage),d0 - bsr.w Play_Sound + bsr.w Play_Music move.w (VDP_reg_1_command).w,d0 ori.b #$40,d0 move.w d0,(VDP_control_port).l @@ -9330,7 +9330,7 @@ loc_803E: move.b #-$80,(Special_stage_jumping).w move.b #0,(Special_stage_turning).w moveq #signextendB(sfx_Jump),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_806E: tst.b (Special_stage_jumping).w @@ -9462,7 +9462,7 @@ loc_81FA: move.l #-$100000,$40(a0) move.b #1,(Special_stage_jumping_P2).w moveq #signextendB(sfx_Jump),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_8226: move.l $3C(a0),d0 @@ -9864,7 +9864,7 @@ sub_85FE: loc_8664: moveq #signextendB(sfx_Goal),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_866C: rts @@ -9880,7 +9880,7 @@ loc_866E: loc_8682: moveq #signextendB(sfx_BlueSphere),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -9893,7 +9893,7 @@ loc_868C: move.b #1,(Special_stage_bumper_lock).w move.b #0,(Special_stage_advancing).w moveq #signextendB(sfx_Bumper),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -9909,7 +9909,7 @@ loc_86C6: subq.w #1,(Special_stage_rings_left).w bne.s loc_86D4 moveq #signextendB(sfx_Perfect),d0 - jsr (Play_Sound).l + jsr (Play_Music).l loc_86D4: addi.w #1,(Special_stage_ring_count).w @@ -9920,7 +9920,7 @@ loc_86D4: bne.s loc_86FE addq.b #1,(Continue_count).w move.w #$FF00|sfx_Continue,d0 - jmp (Play_Sound).l + jmp (Play_Music).l ; --------------------------------------------------------------------------- loc_86FE: @@ -9939,7 +9939,7 @@ loc_8720: moveq #signextendB(sfx_RingLoss),d0 loc_8726: - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -10257,7 +10257,7 @@ sub_89E2: cmpi.w #2,(Special_stage_clear_timer).w bne.s loc_8A0C moveq #signextendB(sfx_AllSpheres),d0 - jsr (Play_Sound).l + jsr (Play_Music).l loc_8A0C: cmpi.w #$40,(Special_stage_clear_timer).w @@ -10325,7 +10325,7 @@ loc_8AB6: bne.s locret_8AD8 addq.b #1,(Special_stage_clear_routine).w moveq #signextendB(mus_Emerald),d0 - jsr (Play_Sound).l + jsr (Play_Music).l locret_8AD8: rts @@ -10369,7 +10369,7 @@ loc_8B2E: loc_8B50: moveq #signextendB(sfx_Goal),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_8B58: rts @@ -10619,7 +10619,7 @@ loc_8D64: subq.w #2,d1 bne.s loc_8D46 moveq #signextendB(sfx_RingLoss),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l moveq #1,d1 locret_8D76: @@ -11093,7 +11093,7 @@ loc_9658: jsr (Process_Sprites).l jsr (Render_Sprites).l moveq #signextendB(mus_CompetitionMenu),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.b #$1E,(V_int_routine).w jsr (Wait_VSync).l move.w (VDP_reg_1_command).w,d0 @@ -11170,7 +11170,7 @@ loc_9768: move.l d0,(a1)+ dbf d1,loc_9768 moveq #signextendB(sfx_Starpost),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- loc_9776: @@ -11198,7 +11198,7 @@ loc_979A: move.b d1,(Competition_menu_selection).w move.w d2,d0 beq.s loc_97A8 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_97A8: bra.w loc_96B8 @@ -11230,7 +11230,7 @@ Obj_Competition_97D0: tst.b (Competition_menu_items).w seq (Competition_menu_items).w moveq #signextendB(sfx_Switch),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_97F6: move.w #$15C,d0 @@ -11435,7 +11435,7 @@ loc_9BF4: addi.w #$C29F,$A(a0) move.w #$B0,$10(a0) moveq #signextendB(mus_CompetitionMenu),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.b #$1E,(V_int_routine).w jsr (Wait_VSync).l move.w (VDP_reg_1_command).w,d0 @@ -11527,7 +11527,7 @@ loc_9D04: cmpi.b #4,(a0) beq.s loc_9D5C moveq #signextendB(sfx_Switch),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l addq.b #1,(a0) cmpi.b #4,(a0) beq.s loc_9D5C @@ -11541,7 +11541,7 @@ loc_9D3C: tst.b (a0) beq.s loc_9D5C moveq #signextendB(sfx_Switch),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l subq.b #1,(a0) beq.s loc_9D5C cmpi.b #3,(a0) @@ -11554,7 +11554,7 @@ loc_9D5C: andi.w #$E0,d1 beq.w loc_9C5C moveq #signextendB(sfx_Starpost),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l moveq #0,d0 move.b (Competition_menu_zone).w,d0 move.b Comp_ZoneList(pc,d0.w),(Current_zone_and_act).w @@ -12127,7 +12127,7 @@ loc_A29C: jsr (Process_Sprites).l jsr (Render_Sprites).l moveq #signextendB(mus_CompetitionMenu),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.b #$1E,(V_int_routine).w jsr (Wait_VSync).l move.w (VDP_reg_1_command).w,d0 @@ -12211,7 +12211,7 @@ loc_A3EE: beq.w loc_A498 move.l d0,-(sp) moveq #signextendB(sfx_GravityTunnel),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.l (sp)+,d0 clr.b $34(a0) move.b $2E(a0),$35(a0) @@ -12294,7 +12294,7 @@ loc_A4A6: st $2F(a0) sf (a2) moveq #signextendB(sfx_Starpost),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_A4BC: moveq #1,d0 @@ -12549,7 +12549,7 @@ loc_AAF4: jsr (Process_Sprites).l jsr (Render_Sprites).l moveq #signextendB(mus_Continue),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.b #$1E,(V_int_routine).w jsr (Wait_VSync).l move.w (VDP_reg_1_command).w,d0 @@ -13047,7 +13047,7 @@ loc_B0FC: jsr (Process_Sprites).l jsr (Render_Sprites).l moveq #signextendB(mus_Continue),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.b #$1E,(V_int_routine).w jsr (Wait_VSync).l move.w (VDP_reg_1_command).w,d0 @@ -13808,7 +13808,7 @@ loc_BA3E: lea (RAM_start).l,a1 jsr (Kos_Decomp).l moveq #signextendB(mus_DataSelect),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.l #loc_BB0A,(_unkEF44_1).w move.b #$1E,(V_int_routine).w jsr (Wait_VSync).l @@ -13846,7 +13846,7 @@ loc_BAD0: cmpi.b #$4C,(Game_mode).w beq.s SaveScreen_MainLoop moveq #signextendB(sfx_EnterSS),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; =============== S U B R O U T I N E ======================================= @@ -14137,7 +14137,7 @@ loc_C0EA: moveq #signextendB(sfx_SmallBumpers),d0 loc_C0FE: - jsr (Play_Sound_2).l + jsr (Play_SFX).l moveq #-8,d0 loc_C106: @@ -14152,7 +14152,7 @@ loc_C106: moveq #signextendB(sfx_SmallBumpers),d0 loc_C124: - jsr (Play_Sound_2).l + jsr (Play_SFX).l moveq #8,d0 loc_C12C: @@ -14374,7 +14374,7 @@ loc_C33C: loc_C344: move.w d1,$36(a0) move.l d2,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b #$1A,$1D(a0) btst #4,(Level_frame_counter+1).w beq.s loc_C368 @@ -14530,7 +14530,7 @@ loc_C4F6: beq.s locret_C506 move.l d0,-(sp) move.l d2,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.l (sp)+,d0 locret_C506: @@ -14605,7 +14605,7 @@ loc_C5AA: andi.w #$E0,d0 beq.w loc_C688 moveq #signextendB(sfx_Starpost),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l st (Events_bg+$12).w addq.b #4,5(a0) bra.w loc_C688 @@ -14633,7 +14633,7 @@ loc_C5D4: tst.b (a1) bmi.s loc_C63C moveq #signextendB(sfx_Starpost),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l st (Events_bg+$10).w addq.b #8,5(a0) @@ -14695,7 +14695,7 @@ loc_C6AC: btst #2,(Ctrl_1_pressed).w beq.s loc_C6E8 moveq #signextendB(sfx_Perfect),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l movea.l $2E(a0),a1 clr.l (a1) clr.l 4(a1) @@ -14926,7 +14926,7 @@ loc_EA5E: addq.b #1,(Life_count).w addq.b #1,(Update_HUD_life_count).w move.w #mus_ExtraLife,d0 - jmp (Play_Sound).l + jmp (Play_Music).l ; --------------------------------------------------------------------------- locret_EA80: @@ -16382,7 +16382,7 @@ loc_FCFC: bclr #5,$2A(a0) clr.b $40(a0) move.w #sfx_MagneticSpike,d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function Check_CNZ_Bumpers ; --------------------------------------------------------------------------- @@ -18636,7 +18636,7 @@ loc_11544: move.b #$1A,$20(a0) move.b #$78,$34(a0) moveq #signextendB(sfx_Death),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l moveq #-1,d0 rts ; End of function HurtCharacter @@ -18659,7 +18659,7 @@ Kill_Character: move.b #$18,$20(a0) bset #7,$A(a0) moveq #signextendB(sfx_Death),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_115A8: moveq #-1,d0 @@ -19111,7 +19111,7 @@ loc_11A30: move.b #2,$20(a0) addq.w #4,$14(a0) move.w #sfx_Roll,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l tst.w $1C(a0) bne.s locret_11A62 move.w #$200,$1C(a0) @@ -19134,7 +19134,7 @@ sub_11A64: beq.w locret_11AAE move.b #9,$20(a0) move.w #$FF00|sfx_Spindash,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l addq.l #4,sp move.b #1,$3D(a0) move.w #0,$3E(a0) @@ -19188,7 +19188,7 @@ loc_11B22: bset #2,$2A(a0) move.b #0,$20(a6) moveq #signextendB(sfx_Dash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bra.s loc_11BA4 ; --------------------------------------------------------------------------- word_11B38: dc.w $800 @@ -19226,7 +19226,7 @@ loc_11B74: beq.w loc_11BA4 move.w #$900,$20(a0) move.w #$FF00|sfx_Spindash,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l addi.w #$200,$3E(a0) cmpi.w #$800,$3E(a0) bcs.s loc_11BA4 @@ -19434,7 +19434,7 @@ loc_11DB6: cmpi.b #$C,$2C(a0) bcs.s Sonic_RmvInvin move.w (Current_music).w,d0 - jsr (Play_Sound).l + jsr (Play_Music).l Sonic_RmvInvin: bclr #1,$2B(a0) @@ -19605,7 +19605,7 @@ loc_11F88: beq.s locret_11F32 move.w #$100,$20(a6) move.w #sfx_Splash,d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- Sonic_OutWater: @@ -19645,7 +19645,7 @@ loc_12002: loc_12028: move.w #sfx_Splash,d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function Sonic_Water ; --------------------------------------------------------------------------- @@ -20097,7 +20097,7 @@ loc_124C2: tst.b $2D(a0) bmi.s locret_1250A move.w #sfx_Skid,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b #$D,$20(a0) bclr #0,$2A(a0) cmpi.b #$C,$2C(a0) @@ -20152,7 +20152,7 @@ loc_12548: tst.b $2D(a0) bmi.s locret_12590 move.w #sfx_Skid,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b #$D,$20(a0) bset #0,$2A(a0) cmpi.b #$C,$2C(a0) @@ -20468,7 +20468,7 @@ Player_DoRoll: move.b #2,$20(a0) addq.w #5,$14(a0) move.w #sfx_Roll,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l tst.w $1C(a0) bne.s locret_1280E move.w #$200,$1C(a0) @@ -20520,7 +20520,7 @@ loc_12854: move.b #1,$40(a0) clr.b $3C(a0) move.w #sfx_Jump,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b $44(a0),$1E(a0) move.b $45(a0),$1F(a0) btst #2,$2A(a0) @@ -20610,7 +20610,7 @@ loc_12972: move.w #$2000,(H_scroll_frame_offset).w bsr.w Reset_Player_Position_Array move.w #sfx_FireAttack,d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- Sonic_LightningShield: @@ -20621,7 +20621,7 @@ Sonic_LightningShield: move.w #-$580,$1A(a0) clr.b $40(a0) move.w #sfx_ElectricAttack,d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- Sonic_BubbleShield: @@ -20633,7 +20633,7 @@ Sonic_BubbleShield: move.w #0,$1C(a0) move.w #$800,$1A(a0) move.w #sfx_BubbleAttack,d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- Sonic_CheckTransform: @@ -20650,7 +20650,7 @@ Sonic_InstaShield: move.b #1,(Shield+anim).w move.b #1,$2F(a0) move.w #sfx_InstaAttack,d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- locret_12A20: @@ -20672,9 +20672,9 @@ Sonic_Transform: move.b #0,$35(a0) bset #1,$2B(a0) move.w #$FF00|sfx_SuperTransform,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w #mus_Invincibility,d0 - jmp (Play_Sound).l + jmp (Play_Music).l ; End of function Sonic_JumpHeight @@ -20741,7 +20741,7 @@ Sonic_Spindash: beq.w locret_12B9A move.b #9,$20(a0) move.w #$FF00|sfx_Spindash,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l addq.l #4,sp move.b #1,$3D(a0) move.w #0,$3E(a0) @@ -20807,7 +20807,7 @@ loc_12C0E: bset #2,$2A(a0) move.b #0,$20(a6) moveq #signextendB(sfx_Dash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bra.s loc_12C90 ; --------------------------------------------------------------------------- word_12C24: dc.w $800 @@ -20845,7 +20845,7 @@ loc_12C60: beq.w loc_12C90 move.w #$900,$20(a0) move.w #$FF00|sfx_Spindash,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l addi.w #$200,$3E(a0) cmpi.w #$800,$3E(a0) bcs.s loc_12C90 @@ -21379,7 +21379,7 @@ loc_130D2: sub.w d0,$14(a0) move.b #2,(Shield+anim).w move.w #sfx_BubbleAttack,d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function BubbleShield_Bounce ; --------------------------------------------------------------------------- @@ -21524,7 +21524,7 @@ loc_132D0: clr.b (_unkFEC7).w move.b #8,5(a0) move.w #mus_GameOver,d0 - jsr (Play_Sound).l + jsr (Play_Music).l moveq #3,d0 jmp (Load_PLC_2).l ; --------------------------------------------------------------------------- @@ -22665,7 +22665,7 @@ loc_1418E: andi.b #$F,d0 bne.s locret_141A8 moveq #signextendB(sfx_FlyTired),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_141A8: rts @@ -22677,7 +22677,7 @@ loc_141AA: andi.b #$F,d0 bne.s locret_141BE moveq #signextendB(sfx_Flying),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_141BE: rts @@ -22750,7 +22750,7 @@ loc_14242: move.b #2,$20(a0) addq.w #4,$14(a0) move.w #sfx_Roll,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l tst.w $1C(a0) bne.s locret_14274 move.w #$200,$1C(a0) @@ -22773,7 +22773,7 @@ sub_14276: beq.w locret_142C4 move.b #9,$20(a0) move.w #$FF00|sfx_Spindash,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l addq.l #4,sp move.b #1,$3D(a0) move.w #0,$3E(a0) @@ -22823,7 +22823,7 @@ loc_1432C: bset #2,$2A(a0) move.b #0,$20(a6) move.w #$FF00|sfx_Dash,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bra.s loc_1439E ; --------------------------------------------------------------------------- word_14344: dc.w $800 @@ -22852,7 +22852,7 @@ loc_1436E: beq.w loc_1439E move.w #$900,$20(a0) move.w #$FF00|sfx_Spindash,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l addi.w #$200,$3E(a0) cmpi.w #$800,$3E(a0) bcs.s loc_1439E @@ -23104,7 +23104,7 @@ loc_1463A: cmpi.b #$C,$2C(a0) bcs.s loc_14670 move.w (Current_music).w,d0 - jsr (Play_Sound).l + jsr (Play_Music).l loc_14670: bclr #1,$2B(a0) @@ -24101,7 +24101,7 @@ loc_151B0: bne.s locret_15200 bsr.s sub_15202 moveq #signextendB(sfx_Grab),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b #1,(a2) locret_15200: @@ -24179,7 +24179,7 @@ loc_152D8: beq.s locret_1528A move.w #$100,$20(a6) move.w #sfx_Splash,d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- loc_152F6: @@ -24216,7 +24216,7 @@ loc_1533C: loc_15362: move.w #sfx_Splash,d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function Tails_Water ; --------------------------------------------------------------------------- @@ -24379,7 +24379,7 @@ loc_154E4: andi.b #$F,d0 bne.s locret_1550A moveq #signextendB(sfx_FlyTired),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_1550A: rts @@ -24394,7 +24394,7 @@ loc_1550C: andi.b #$F,d0 bne.s locret_1552A moveq #signextendB(sfx_Flying),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_1552A: rts @@ -24734,7 +24734,7 @@ loc_15828: tst.b $2D(a0) bmi.s locret_15870 move.w #sfx_Skid,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b #$D,$20(a0) bclr #0,$2A(a0) cmpi.b #$C,$2C(a0) @@ -24789,7 +24789,7 @@ loc_158AE: tst.b $2D(a0) bmi.s locret_158F6 move.w #sfx_Skid,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b #$D,$20(a0) bset #0,$2A(a0) cmpi.b #$C,$2C(a0) @@ -25106,7 +25106,7 @@ loc_15B44: move.b #2,$20(a0) addq.w #1,$14(a0) move.w #sfx_Roll,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l tst.w $1C(a0) bne.s locret_15B76 move.w #$200,$1C(a0) @@ -25153,7 +25153,7 @@ loc_15BB2: move.b #1,$40(a0) clr.b $3C(a0) move.w #sfx_Jump,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b $44(a0),$1E(a0) move.b $45(a0),$1F(a0) btst #2,$2A(a0) @@ -25257,7 +25257,7 @@ Tails_Spindash: beq.w locret_15D4E move.b #9,$20(a0) move.w #$FF00|sfx_Spindash,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l addq.l #4,sp move.b #1,$3D(a0) move.w #0,$3E(a0) @@ -25318,7 +25318,7 @@ loc_15DB6: bset #2,$2A(a0) move.b #0,$20(a6) move.w #$FF00|sfx_Dash,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bra.s loc_15E28 ; --------------------------------------------------------------------------- word_15DCE: dc.w $800 @@ -25347,7 +25347,7 @@ loc_15DF8: beq.w loc_15E28 move.w #$900,$20(a0) move.w #$FF00|sfx_Spindash,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l addi.w #$200,$3E(a0) cmpi.w #$800,$3E(a0) bcs.s loc_15E28 @@ -27107,7 +27107,7 @@ AirCountdown_Countdown: tst.b $43(a0) bne.s loc_17278 moveq #signextendB(mus_Drowning),d0 - jsr (Play_Sound).l + jsr (Play_Music).l loc_17278: subq.b #1,$36(a0) @@ -27121,14 +27121,14 @@ AirCountdown_WarnSound: tst.b $43(a0) bne.s AirCountdown_ReduceAir moveq #signextendB(sfx_AirDing),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l AirCountdown_ReduceAir: subq.b #1,$2C(a2) bcc.w loc_17322 move.b #-$7F,$2E(a2) move.w #sfx_Drown,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b #$A,$38(a0) move.w #1,$3A(a0) move.w #$78,$30(a0) @@ -27267,7 +27267,7 @@ loc_1743C: move.w #mus_MinibossK,d0 loc_17446: - jsr (Play_Sound).l + jsr (Play_Music).l loc_1744C: move.b #$1E,$2C(a1) @@ -28417,27 +28417,27 @@ GiveRing: GiveRing_1P: move.w #sfx_RingRight,d0 cmpi.w #999,(Ring_count).w - bcc.s JmpTo_Play_Sound_2 + bcc.s JmpTo_Play_SFX addq.w #1,(Ring_count).w ori.b #1,(Update_HUD_ring_count).w cmpi.w #100,(Ring_count).w - bcs.s JmpTo_Play_Sound_2 + bcs.s JmpTo_Play_SFX bset #1,(Extra_life_flags).w beq.s loc_18DB4 cmpi.w #200,(Ring_count).w - bcs.s JmpTo_Play_Sound_2 + bcs.s JmpTo_Play_SFX bset #2,(Extra_life_flags).w - bne.s JmpTo_Play_Sound_2 + bne.s JmpTo_Play_SFX loc_18DB4: addq.b #1,(Life_count).w addq.b #1,(Update_HUD_life_count).w moveq #signextendB(mus_ExtraLife),d0 - jmp (Play_Sound).l + jmp (Play_Music).l ; --------------------------------------------------------------------------- -JmpTo_Play_Sound_2: - jmp (Play_Sound_2).l +JmpTo_Play_SFX: + jmp (Play_SFX).l ; --------------------------------------------------------------------------- rts ; --------------------------------------------------------------------------- @@ -28469,11 +28469,11 @@ loc_18DE4: loc_18E14: addq.b #1,(Life_count_P2).w moveq #signextendB(mus_ExtraLife),d0 - jmp (Play_Sound).l + jmp (Play_Music).l ; --------------------------------------------------------------------------- loc_18E20: - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function GiveRing ; --------------------------------------------------------------------------- @@ -28554,7 +28554,7 @@ loc_18EDE: loc_18EEE: move.w #$FF00|sfx_RingLoss,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w #0,(Ring_count).w move.b #$80,(Update_HUD_ring_count).w move.b #0,(Extra_life_flags).w @@ -32789,7 +32789,7 @@ Monitor_Give_1up: addq.b #1,(Life_count).w addq.b #1,(Update_HUD_life_count).w moveq #signextendB(mus_ExtraLife),d0 - jmp (Play_Sound).l + jmp (Play_Music).l ; --------------------------------------------------------------------------- Monitor_Give_Rings: @@ -32822,7 +32822,7 @@ loc_1B6F8: loc_1B714: moveq #signextendB(sfx_RingRight),d0 - jmp (Play_Sound).l + jmp (Play_Music).l ; --------------------------------------------------------------------------- loc_1B71C: @@ -32861,7 +32861,7 @@ Monitor_Give_FireShield: bset #0,$2B(a1) bset #4,$2B(a1) moveq #signextendB(sfx_FireShield),d0 - jsr (Play_Sound).l + jsr (Play_Music).l tst.b $43(a0) bne.s loc_1B7A2 move.l #Obj_FireShield,(Shield).w @@ -32881,7 +32881,7 @@ Monitor_Give_LightningShield: bset #0,$2B(a1) bset #5,$2B(a1) moveq #signextendB(sfx_LightningShield),d0 - jsr (Play_Sound).l + jsr (Play_Music).l tst.b $43(a0) bne.s loc_1B7E0 move.l #Obj_LightningShield,(Shield).w @@ -32901,7 +32901,7 @@ Monitor_Give_BubbleShield: bset #0,$2B(a1) bset #6,$2B(a1) moveq #signextendB(sfx_BubbleShield),d0 - jsr (Play_Sound).l + jsr (Play_Music).l tst.b $43(a0) bne.s loc_1B81E move.l #Obj_BubbleShield,(Shield).w @@ -32926,7 +32926,7 @@ Monitor_Give_Invincibility: cmpi.b #$C,$2C(a1) bls.s loc_1B856 moveq #signextendB(mus_Invincibility),d0 - jsr (Play_Sound).l + jsr (Play_Music).l loc_1B856: tst.b $43(a0) @@ -32961,9 +32961,9 @@ Monitor_Give_SuperSonic: move.b #0,(Player_1+invincibility_timer).w bset #1,$2B(a1) moveq #signextendB(sfx_Whistle),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l moveq #signextendB(mus_Invincibility),d0 - jmp (Play_Sound).l + jmp (Play_Music).l ; --------------------------------------------------------------------------- rts ; --------------------------------------------------------------------------- @@ -33992,7 +33992,7 @@ loc_1C24C: move.b #3,$24(a0) move.b #0,$22(a0) moveq #signextendB(sfx_Break),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.l #loc_1C2A0,(a0) loc_1C2A0: @@ -34247,7 +34247,7 @@ loc_1C5D4: move.b #2,$20(a1) addq.w #5,$14(a1) moveq #signextendB(sfx_Roll),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; End of function sub_1C518 @@ -34904,7 +34904,7 @@ loc_1CD68: loc_1CDC2: moveq #signextendB(sfx_Collapse),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_1CD50 ; --------------------------------------------------------------------------- @@ -36082,7 +36082,7 @@ loc_1DBDE: loc_1DBE2: moveq #signextendB(sfx_Collapse),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_1DB60 ; --------------------------------------------------------------------------- @@ -36820,7 +36820,7 @@ loc_1E47E: loc_1E494: moveq #signextendB(sfx_Collapse),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- byte_1E49C: dc.b $30, $2C, $28, $24, $20, $1C, $2E, $2A, $26, $22, $1E, $1A, $2C, $28, $24, $20, $1C, $18, $2A, $26 dc.b $22, $1E, $1A, $16, $28, $24, $20, $1C, $18, $14 @@ -37125,7 +37125,7 @@ loc_1F9BA: loc_1F9FA: moveq #signextendB(sfx_Collapse),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_1F98C ; --------------------------------------------------------------------------- @@ -38089,7 +38089,7 @@ loc_206EC: andi.b #$FD,4(a1) move.b #1,(a2) moveq #signextendB(sfx_Grab),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_20766: rts @@ -39043,7 +39043,7 @@ loc_216DC: loc_216EE: moveq #signextendB(sfx_Spring),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_2164A ; --------------------------------------------------------------------------- @@ -39226,7 +39226,7 @@ loc_218F2: bclr #6,$2A(a0) bclr #5,$2A(a1) moveq #signextendB(sfx_Spring),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_21836 @@ -39417,7 +39417,7 @@ loc_21B00: clr.b $40(a1) move.b #2,5(a1) moveq #signextendB(sfx_Spring),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_21A6A ; --------------------------------------------------------------------------- @@ -39523,7 +39523,7 @@ loc_21C46: loc_21C58: moveq #signextendB(sfx_Spring),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_21B74 ; --------------------------------------------------------------------------- @@ -39611,7 +39611,7 @@ loc_21D5E: loc_21D70: moveq #signextendB(sfx_Spring),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_21CB2 ; --------------------------------------------------------------------------- @@ -39777,7 +39777,7 @@ sub_22146: tst.b 4(a0) bpl.s locret_221A4 moveq #signextendB(sfx_SpikeMove),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bra.s locret_221A4 ; --------------------------------------------------------------------------- @@ -39987,7 +39987,7 @@ sub_2236A: tst.b 4(a0) bpl.s locret_223CE moveq #signextendB(sfx_SpikeMove),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bra.s locret_223CE ; --------------------------------------------------------------------------- @@ -40518,7 +40518,7 @@ sub_22960: tst.b 4(a0) bpl.s locret_229BE moveq #signextendB(sfx_SpikeMove),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bra.s locret_229BE ; --------------------------------------------------------------------------- @@ -40590,7 +40590,7 @@ sub_229FC: tst.b 4(a0) bpl.s locret_22A5A moveq #signextendB(sfx_SpikeMove),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bra.s locret_22A5A ; --------------------------------------------------------------------------- @@ -43294,7 +43294,7 @@ loc_24B18: clr.b $40(a1) clr.b $3D(a1) moveq #signextendB(sfx_SmallBumpers),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; End of function sub_24B04 @@ -43619,7 +43619,7 @@ loc_25218: loc_25236: moveq #signextendB(sfx_Spring),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_25194 ; --------------------------------------------------------------------------- @@ -43771,7 +43771,7 @@ loc_253F0: tst.b 4(a0) bpl.s loc_253FE moveq #signextendB(sfx_FireAttack),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_253FE: moveq #0,d1 @@ -44414,7 +44414,7 @@ loc_25C26: bpl.s locret_25C64 move.w #$80,8(a0) moveq #signextendB(sfx_Hoverpad),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_25C64: rts @@ -44425,7 +44425,7 @@ loc_25C66: bmi.s locret_25C7A move.w #$200,8(a0) moveq #signextendB(sfx_Hoverpad),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_25C7A: rts @@ -44474,7 +44474,7 @@ loc_25CB6: bpl.s locret_25CF4 move.w #$80,8(a0) moveq #signextendB(sfx_Hoverpad),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_25CF4: rts @@ -44485,7 +44485,7 @@ loc_25CF6: bmi.s locret_25D0A move.w #$200,8(a0) moveq #signextendB(sfx_Hoverpad),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_25D0A: rts @@ -44540,7 +44540,7 @@ loc_25D78: bpl.s locret_25D9C move.w #$80,8(a0) moveq #signextendB(sfx_Hoverpad),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_25D9C: rts @@ -44551,7 +44551,7 @@ loc_25D9E: bmi.s locret_25DB2 move.w #$200,8(a0) moveq #signextendB(sfx_Hoverpad),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_25DB2: rts @@ -44583,7 +44583,7 @@ loc_25DE6: bpl.s locret_25E0A move.w #$80,8(a0) moveq #signextendB(sfx_Hoverpad),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_25E0A: rts @@ -44594,7 +44594,7 @@ loc_25E0C: bmi.s locret_25E20 move.w #$200,8(a0) moveq #signextendB(sfx_Hoverpad),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_25E20: rts @@ -44645,7 +44645,7 @@ loc_25E86: loc_25E8E: move.l #Obj_LBZElevatorCupFlicker,(a0) moveq #signextendB(sfx_Death),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea $3C(a0),a2 lea (Player_1).w,a1 move.w #-$300,d0 @@ -45429,7 +45429,7 @@ loc_26798: loc_267CC: moveq #signextendB(sfx_Collapse),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_266EE ; --------------------------------------------------------------------------- @@ -47625,7 +47625,7 @@ loc_27D48: move.b #1,$2E(a1) move.b #1,(a2) moveq #signextendB(sfx_Switch),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_27DBA: rts @@ -47681,7 +47681,7 @@ loc_2817A: moveq #signextendB(sfx_MechaLand),d0 loc_281BE: - jsr (Play_Sound_2).l + jsr (Play_SFX).l bra.s loc_281DA ; --------------------------------------------------------------------------- @@ -47772,7 +47772,7 @@ loc_282D4: move.b #$98,$28(a1) move.l #loc_28364,(a1) moveq #signextendB(sfx_EnergyZap),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_28318: jmp (Delete_Sprite_If_Not_In_Range).l @@ -47883,7 +47883,7 @@ loc_2845A: andi.b #$1F,d0 bne.s locret_2846C moveq #signextendB(sfx_Alarm),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_2846C: rts @@ -48033,7 +48033,7 @@ Obj_AutoTunnelInit: clr.b 1(a4) bsr.w AutoTunnel_GetPath moveq #signextendB(sfx_Roll),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l btst #5,$2C(a0) beq.s locret_28644 tst.b (Current_act).w @@ -48084,7 +48084,7 @@ loc_2867C: loc_2869E: moveq #signextendB(sfx_TubeLauncher),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l btst #5,$2C(a0) beq.s loc_286DA movea.l a1,a2 @@ -48725,7 +48725,7 @@ LBZTubeElevator_WaitPlayer: loc_28DC4: addq.b #2,(a4) moveq #signextendB(sfx_Roll),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bra.s LBZTubeElevator_StartSpin ; --------------------------------------------------------------------------- @@ -49172,7 +49172,7 @@ loc_293BA: tst.b 4(a0) bpl.s loc_293E4 moveq #signextendB(sfx_WaterfallSplash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_293E4: lea (Ani_AIZDisappearingFloor).l,a1 @@ -49788,7 +49788,7 @@ loc_2A0DC: andi.b #7,d0 bne.s locret_2A0FC moveq #signextendB(sfx_GlideLand),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_2A0FC: rts @@ -49809,7 +49809,7 @@ loc_2A104: andi.b #7,d0 bne.s locret_2A124 moveq #signextendB(sfx_GlideLand),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_2A124: rts @@ -50280,7 +50280,7 @@ loc_2A724: move.w #0,$18(a3) move.w #0,$1A(a3) moveq #signextendB(sfx_Collapse),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_2A6C6 ; --------------------------------------------------------------------------- @@ -50378,7 +50378,7 @@ loc_2A934: bne.s loc_2A978 move.b #1,$36(a0) moveq #signextendB(sfx_FlipBridge),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w #$68,d1 btst #0,$2A(a0) beq.s loc_2A95C @@ -50402,7 +50402,7 @@ loc_2A978: loc_2A98C: move.b #0,$36(a0) moveq #signextendB(sfx_FlipBridge),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.l #loc_2A9B0,(a0) bra.s loc_2A9AA ; --------------------------------------------------------------------------- @@ -50648,7 +50648,7 @@ loc_2ABFC: move.w #0,$18(a3) move.w #0,$1A(a3) moveq #signextendB(sfx_BridgeCollapse),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_2AB76 ; --------------------------------------------------------------------------- @@ -51562,7 +51562,7 @@ loc_2BBE4: tst.b (a3) bne.s loc_2BBF0 moveq #signextendB(sfx_Switch),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_2BBF0: bset d3,(a3) @@ -51603,7 +51603,7 @@ loc_2BC4E: tst.b (a3) bne.s loc_2BC5A moveq #signextendB(sfx_Switch),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_2BC5A: bset d3,(a3) @@ -51647,7 +51647,7 @@ loc_2BCD6: tst.b (a3) bne.s loc_2BCE2 moveq #signextendB(sfx_Switch),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_2BCE2: bset d3,(a3) @@ -52221,7 +52221,7 @@ sub_2C49E: cmpi.w #$68,d0 bcc.w locret_2C55E moveq #signextendB(sfx_Starpost),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l jsr (Create_New_Sprite).l bne.s loc_2C546 move.l #Obj_StarPost,(a1) @@ -53094,7 +53094,7 @@ Obj_LevelResultsWait: move.b #$1E,(Player_1+air_left).w move.b #$1E,(Player_2+air_left).w moveq #signextendB(mus_GotThroughAct),d0 - jmp (Play_Sound).l + jmp (Play_Music).l ; --------------------------------------------------------------------------- loc_2CF4C: @@ -53119,7 +53119,7 @@ loc_2CF6E: andi.w #3,d0 bne.s locret_2CF8E moveq #signextendB(sfx_Switch),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- locret_2CF8E: @@ -53128,7 +53128,7 @@ locret_2CF8E: loc_2CF90: moveq #signextendB(sfx_Register),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l jsr (SaveGame).l move.w #$5A,$2E(a0) addq.b #2,5(a0) @@ -53448,7 +53448,7 @@ locret_2D216: SpecialStage_Results: moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move #$2700,sr move.w (VDP_reg_1_command).w,d0 andi.b #-$41,d0 @@ -53603,7 +53603,7 @@ loc_2D49A: cmpi.w #$121,$2E(a0) bne.s locret_2D4F2 moveq #signextendB(mus_GotThroughAct),d0 - jmp (Play_Sound).l + jmp (Play_Music).l ; --------------------------------------------------------------------------- loc_2D4B4: @@ -53627,7 +53627,7 @@ loc_2D4D6: andi.w #3,d0 bne.s locret_2D4F2 moveq #signextendB(sfx_Switch),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- locret_2D4F2: @@ -53636,7 +53636,7 @@ locret_2D4F2: loc_2D4F4: moveq #signextendB(sfx_Register),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w #$78,$2E(a0) addq.b #2,5(a0) @@ -53655,7 +53655,7 @@ loc_2D512: move.l #loc_2D83C,(a1) move.w #$10E,$2E(a0) moveq #signextendB(sfx_Continue),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_2D536: addq.b #2,5(a0) @@ -54441,7 +54441,7 @@ sub_2E2C8: bne.w locret_2E392 jsr (Player_ResetAirTimer).l moveq #signextendB(sfx_Bubble),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l clr.w $18(a1) clr.w $1A(a1) clr.w $1C(a1) @@ -54626,7 +54626,7 @@ loc_2E80C: bcs.w loc_2E896 move.l #loc_2E8CC,(a0) moveq #signextendB(sfx_Geyser),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea (byte_2E89C).l,a3 move.w $10(a0),d2 addi.w #$60,d2 @@ -54737,9 +54737,9 @@ loc_2E958: bmi.s loc_2E990 clr.b (Palette_cycle_counters+$00).w move.w #$FF00|mus_MutePSG,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w #$FF00|mus_StopSFX,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w #$96,$30(a0) move.l #loc_2E996,(a0) rts @@ -54914,7 +54914,7 @@ loc_2EBD6: move.b #$1A,(Player_2+anim).w move.l #loc_2ECAA,(a0) moveq #signextendB(sfx_Geyser),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b #1,(Palette_cycle_counters+$00).w lea (byte_2EC7A).l,a3 move.w $10(a0),d2 @@ -55059,11 +55059,11 @@ loc_2EDBA: tst.b 4(a0) bmi.s loc_2EDFE move.w #$FF00|mus_StopSFX,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w #$FF00|mus_MutePSG,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w #$FF00|mus_StopSFX,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b #0,(Palette_cycle_counters+$00).w move.w $48(a0),d0 beq.s loc_2EDF0 @@ -55195,7 +55195,7 @@ loc_2F0D0: andi.b #$F,d0 bne.s loc_2F0EA moveq #signextendB(sfx_FanSmall),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_2F0EA: btst #6,$2C(a0) @@ -55311,7 +55311,7 @@ loc_2F22E: move.b #1,$42(a1) move.w #0,$34(a1) moveq #signextendB(sfx_FanLatch),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_2F25C: move.w $3A(a0),d1 @@ -55329,7 +55329,7 @@ loc_2F26C: move.b #0,$42(a1) move.b #0,$24(a1) moveq #signextendB(sfx_FanLatch),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_2F28C: tst.w $30(a0) @@ -55396,7 +55396,7 @@ loc_2F322: move.b #$20,6(a0) move.w #8,$30(a0) moveq #signextendB(sfx_FanLatch),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.l #loc_2F35C,(a0) loc_2F35C: @@ -55412,7 +55412,7 @@ loc_2F372: andi.b #$F,d0 bne.s loc_2F384 moveq #signextendB(sfx_FanBig),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_2F384: subq.b #1,$24(a0) @@ -55619,7 +55619,7 @@ loc_2F796: move.b #0,$34(a0) move.l #loc_2F6D8,(a0) moveq #signextendB(sfx_Dash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bra.s loc_2F7D0 ; --------------------------------------------------------------------------- @@ -55754,7 +55754,7 @@ loc_2F8EE: bne.s locret_2F96A bset d6,$35(a0) moveq #signextendB(sfx_Roll),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b #0,$20(a1) move.b #$13,$1E(a1) move.b #9,$1F(a1) @@ -55877,7 +55877,7 @@ loc_2FB46: cmpi.w #$40,$30(a0) bne.s loc_2FB9E moveq #signextendB(sfx_FanLatch),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bra.s loc_2FB9E ; --------------------------------------------------------------------------- @@ -55887,7 +55887,7 @@ loc_2FB8A: subq.w #8,$30(a0) bne.s loc_2FB9E moveq #signextendB(sfx_FanLatch),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_2FB9E: move.w $32(a0),d0 @@ -56661,7 +56661,7 @@ loc_30466: tst.b $34(a0) bne.s locret_3047A moveq #signextendB(sfx_Balloon),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b #1,$34(a0) locret_3047A: @@ -56759,7 +56759,7 @@ loc_30804: andi.b #$1F,d0 bne.s locret_30832 moveq #signextendB(sfx_CannonTurn),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_30832: rts @@ -57031,7 +57031,7 @@ loc_30CC4: subi.w #$80,$1A(a0) move.b #0,$30(a0) moveq #signextendB(sfx_BalloonPlatform),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_30C48 ; --------------------------------------------------------------------------- @@ -57077,7 +57077,7 @@ sub_30D8C: bcc.s locret_30DBE move.b #1,$20(a0) moveq #signextendB(sfx_TrapDoor),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_30DBE: rts @@ -57180,7 +57180,7 @@ loc_30F24: andi.b #$1F,d0 bne.s loc_30F4C moveq #signextendB(sfx_Hoverpad),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_30F4C: move.w $30(a0),d0 @@ -57199,7 +57199,7 @@ loc_30F56: andi.b #$1F,d0 bne.s loc_30F7E moveq #signextendB(sfx_Hoverpad),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_30F7E: jmp (Delete_Sprite_If_Not_In_Range).l @@ -57325,7 +57325,7 @@ loc_31142: move.w $36(a0),d0 bne.s loc_31158 moveq #signextendB(sfx_TunnelBooster),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_31158: addq.w #1,$36(a0) @@ -57374,7 +57374,7 @@ sub_31180: move.b $34(a0),2(a2) move.w d0,-(sp) moveq #signextendB(sfx_Transporter),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w (sp)+,d0 loc_311DA: @@ -58341,7 +58341,7 @@ loc_31CEA: bclr #4,$2A(a1) bclr #5,$2A(a1) moveq #signextendB(sfx_SmallBumpers),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_31C48 ; --------------------------------------------------------------------------- @@ -58664,7 +58664,7 @@ loc_32062: bclr #5,$2A(a1) bclr #4,$2A(a1) moveq #signextendB(sfx_SmallBumpers),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_31FA6 ; --------------------------------------------------------------------------- @@ -58753,7 +58753,7 @@ sub_32146: clr.b $40(a1) move.b #1,$20(a0) moveq #signextendB(sfx_Bumper),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w $48(a0),d0 beq.s loc_321B4 movea.w d0,a2 @@ -58843,7 +58843,7 @@ sub_32248: clr.b $40(a1) move.b #1,$20(a0) moveq #signextendB(sfx_SmallBumpers),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; End of function sub_32248 @@ -58928,7 +58928,7 @@ loc_323AE: move.w d1,$10(a1) move.w $14(a0),$14(a1) move.w #sfx_Roll,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_323C6: rts @@ -59671,7 +59671,7 @@ loc_32A98: cmp.w d1,d0 bcc.s loc_32AF8 moveq #signextendB(sfx_WaveHover),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_32AF8: jmp (Delete_Sprite_If_Not_In_Range).l @@ -60441,7 +60441,7 @@ loc_3342C: andi.b #$40,d0 beq.s loc_33460 moveq #signextendB(sfx_SpikeBalls),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_33460: move.w $30(a0),d0 @@ -60472,7 +60472,7 @@ loc_33486: andi.b #$40,d0 beq.s loc_334AE moveq #signextendB(sfx_SpikeBalls),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_334AE: jmp (loc_19CC4).l @@ -60654,7 +60654,7 @@ loc_336DC: loc_3371E: moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_33726: lea (Ani_MGZHeadTrigger).l,a1 @@ -60686,7 +60686,7 @@ loc_33726: loc_337B4: moveq #signextendB(sfx_LevelProjectile),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_337BC: jmp (loc_19CC4).l @@ -61182,7 +61182,7 @@ loc_33FD6: move.w #$10,$34(a0) move.b #1,(a2) moveq #signextendB(sfx_PulleyGrab),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_33FE8: rts @@ -61664,7 +61664,7 @@ loc_34554: move.b #2,$20(a1) bset #2,$2A(a1) move.w #sfx_Jump,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_3459C: bclr #0,$2E(a1) @@ -62210,7 +62210,7 @@ loc_34B30: move.b #$D,$20(a0) bclr #0,$2A(a0) move.w #sfx_Skid,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l movea.l a0,a2 suba.w #Player_1,a2 adda.w #Dust,a2 @@ -62264,7 +62264,7 @@ loc_34BB2: move.b #$D,$20(a0) bset #0,$2A(a0) move.w #sfx_Skid,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l movea.l a0,a2 suba.w #Player_1,a2 adda.w #Dust,a2 @@ -62914,7 +62914,7 @@ loc_353C0: bclr #5,$2A(a1) clr.b $40(a1) moveq #signextendB(sfx_SmallBumpers),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_35370 ; --------------------------------------------------------------------------- @@ -63046,7 +63046,7 @@ loc_358A2: tst.b (a3) bne.s loc_358B4 moveq #signextendB(sfx_Switch),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b #0,$24(a0) loc_358B4: @@ -63457,7 +63457,7 @@ loc_35CFC: loc_35D4C: moveq #signextendB(sfx_SmallBumpers),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_35CF0 ; --------------------------------------------------------------------------- @@ -63942,7 +63942,7 @@ loc_3642E: loc_36484: moveq #signextendB(sfx_Error),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- locret_3648C: @@ -64163,7 +64163,7 @@ loc_366FE: bne.s loc_36740 loc_3673A: - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_36740: bsr.s sub_36750 @@ -64235,7 +64235,7 @@ loc_367E8: move.b #$80,(Update_HUD_timer).w jsr sub_369C2(pc) moveq #signextendB(sfx_Goal),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b (Competition_total_laps).w,d0 cmp.b (Competition_current_lap_2P).w,d0 bcc.s loc_3681E @@ -64266,7 +64266,7 @@ loc_3684E: move.b #$80,(_unkFEC7).w bsr.w sub_36998 moveq #signextendB(sfx_Goal),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_36860: rts @@ -64374,7 +64374,7 @@ loc_36936: move.b #-$80,(Update_HUD_timer).w move.w #$78,(Events_bg+$16).w moveq #signextendB(sfx_Goal),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_36966: move.b (Competition_total_laps).w,d0 @@ -64387,7 +64387,7 @@ loc_36966: move.b #-$80,(_unkFEC7).w move.w #$78,(Events_bg+$16).w moveq #signextendB(sfx_Goal),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_36996: rts @@ -65119,7 +65119,7 @@ loc_37A8A: andi.b #$F,d0 bne.s loc_37AB2 moveq #signextendB(sfx_WaterSkid),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_37AB2: subq.b #1,$24(a0) @@ -65673,7 +65673,7 @@ loc_38062: move.w #0,$18(a3) move.w #0,$1A(a3) moveq #signextendB(sfx_BridgeCollapse),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_37FDC ; --------------------------------------------------------------------------- @@ -66596,7 +66596,7 @@ loc_38B00: andi.b #$F,d0 bne.s loc_38B12 moveq #signextendB(sfx_SlideSkidQuiet),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_38B12: cmpi.w #$1310,$10(a2) @@ -66647,7 +66647,7 @@ loc_38B84: move.b #0,$2E(a2) move.w #$14,(Screen_shake_flag).w moveq #signextendB(sfx_Crash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w #2,(Tails_CPU_routine).w loc_38BCA: @@ -66663,7 +66663,7 @@ loc_38BCA: loc_38BE8: moveq #signextendB(sfx_GroundSlide),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_38BF0: jsr (sub_38C8C).l @@ -66701,7 +66701,7 @@ loc_38C56: cmp.b $32(a0),d0 beq.s loc_38C68 moveq #signextendB(sfx_GroundSlide),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_38C68: jsr (sub_38C8C).l @@ -67069,7 +67069,7 @@ loc_390D0: loc_39120: moveq #signextendB(sfx_SandSplash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b #0,(Ctrl_1_locked).w move.b #0,(Ctrl_2_locked).w jmp (Delete_Current_Sprite).l @@ -67147,7 +67147,7 @@ loc_391EC: move.b #0,(Ctrl_1_locked).w move.w #$14,(Screen_shake_flag).w moveq #signextendB(sfx_Crash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- @@ -70939,7 +70939,7 @@ loc_3B87A: andi.w #$F,d0 bne.s loc_3B88E moveq #signextendB(sfx_LargeShip),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_3B88E: subq.w #1,$32(a0) @@ -71018,7 +71018,7 @@ AIZShipBomb_Delay: bne.s loc_3B97C addq.b #4,5(a0) moveq #signextendB(sfx_MissileThrow),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_3B97C: jsr Translate_Camera2ObjPosition(pc) @@ -71038,7 +71038,7 @@ AIZShipBomb_Drop: bgt.s locret_3BA04 move.w #$10,(Screen_shake_flag).w moveq #signextendB(sfx_MissileExplode),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l jsr (Create_New_Sprite3).l bne.s loc_3B9FE lea AIZBombExplodeDat(pc),a2 @@ -71248,7 +71248,7 @@ loc_3BBE6: andi.w #$F,d0 bne.s locret_3BC04 moveq #signextendB(sfx_RobotnikSiren),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_3BC04: rts @@ -71838,7 +71838,7 @@ loc_3C70E: bpl.s loc_3C754 move.w #$E,(Screen_shake_flag).w moveq #signextendB(sfx_Crash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bra.s loc_3C754 ; --------------------------------------------------------------------------- @@ -71854,7 +71854,7 @@ loc_3C73C: andi.w #$F,d0 bne.s loc_3C754 moveq #signextendB(sfx_Rumble2),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_3C754: move.w (Camera_Y_pos_copy).w,d0 @@ -72095,7 +72095,7 @@ Do_ShakeSound: andi.w #$F,d0 bne.s locret_3C9F6 moveq #signextendB(sfx_Rumble2),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_3C9F6: rts @@ -72270,7 +72270,7 @@ loc_3CBA4: andi.w #$F,d0 bne.s loc_3CBC8 moveq #signextendB(sfx_BigRumble),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_3CBC8: tst.w d1 @@ -73138,7 +73138,7 @@ loc_3D426: cmp.w $2E(a0),d0 bcs.s loc_3D444 moveq #signextendB(sfx_Crash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w #$E,(Screen_shake_flag).w jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- @@ -74094,7 +74094,7 @@ ICZ1_BigSnowFall: andi.w #$F,d0 bne.s loc_3DE42 moveq #signextendB(sfx_Rumble2),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bra.s loc_3DE42 ; --------------------------------------------------------------------------- @@ -74748,7 +74748,7 @@ loc_3E3EA: tst.w d2 beq.s loc_3E40A moveq #signextendB(sfx_BigRumble),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_3E40A: tst.w d2 @@ -74764,7 +74764,7 @@ loc_3E426: clr.l (a1)+ dbf d0,loc_3E426 moveq #signextendB(sfx_Crash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_3E434: lea (HScroll_table+$100).w,a1 @@ -75319,7 +75319,7 @@ loc_3E95A: andi.w #$F,d0 bne.s loc_3E96E moveq #signextendB(sfx_DeathEggRiseLoud),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_3E96E: tst.w (Events_fg_5).w @@ -76143,7 +76143,7 @@ loc_3F0F4: ori.b #$40,d0 move.w d0,(VDP_control_port).l moveq #signextendB(mus_Continue),d0 - jsr (Play_Sound).l + jsr (Play_Music).l jsr (Pal_FadeFromBlack).l loc_3F168: @@ -76645,7 +76645,7 @@ ArtNem_ContinueDigits: S3Credits: moveq #signextendB(mus_Stop),d0 - jsr (Play_Sound).l + jsr (Play_Music).l jsr (Clear_Nem_Queue).l jsr (Pal_FadeToBlack).l lea (VDP_control_port).l,a6 @@ -76744,7 +76744,7 @@ loc_404AC: move.l (a1)+,(a2)+ dbf d6,loc_404AC moveq #signextendB(mus_Credits3),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.w #$B4,(_unkFA82).w move.b #$18,(V_int_routine).w jsr (Wait_VSync).l @@ -78086,7 +78086,7 @@ loc_4332E: addq.b #2,5(a0) st (_unkF660).w move.b #mus_S2SEGA,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_43340: rts @@ -78637,7 +78637,7 @@ loc_438D2: loc_438E2: moveq #signextendB(sfx_GumballTab),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_438EA: jmp (Draw_Sprite).l @@ -78886,7 +78886,7 @@ loc_43B8E: movea.w (_unkFAA4).w,a1 bset #0,$38(a1) moveq #signextendB(sfx_Spring),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; End of function sub_43B6E @@ -78997,7 +78997,7 @@ loc_43CEC: addq.b #1,(Life_count).w addq.b #1,(Update_HUD_life_count).w moveq #signextendB(mus_ExtraLife),d0 - jmp (Play_Sound).l + jmp (Play_Music).l ; --------------------------------------------------------------------------- loc_43CFC: @@ -79062,7 +79062,7 @@ sub_43D42: clr.b $40(a1) move.b #1,$20(a0) moveq #signextendB(sfx_SmallBumpers),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_43D42 ; --------------------------------------------------------------------------- @@ -79076,7 +79076,7 @@ loc_43DA2: moveq #4,d0 bsr.w sub_43E20 moveq #signextendB(sfx_FireShield),d0 - jmp (Play_Sound).l + jmp (Play_Music).l ; --------------------------------------------------------------------------- loc_43DCC: @@ -79088,7 +79088,7 @@ loc_43DCC: moveq #6,d0 bsr.w sub_43E20 moveq #signextendB(sfx_BubbleShield),d0 - jmp (Play_Sound).l + jmp (Play_Music).l ; --------------------------------------------------------------------------- loc_43DF6: @@ -79100,7 +79100,7 @@ loc_43DF6: moveq #5,d0 bsr.w sub_43E20 moveq #signextendB(sfx_LightningShield),d0 - jmp (Play_Sound).l + jmp (Play_Music).l ; =============== S U B R O U T I N E ======================================= @@ -79479,7 +79479,7 @@ loc_4429C: bcs.s locret_4429A bset #0,4(a1) moveq #signextendB(sfx_BigRing),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- SSEntry_Range: dc.w $FFE8 @@ -79490,7 +79490,7 @@ SSEntry_Range: dc.w $FFE8 loc_442FE: moveq #signextendB(sfx_BigRing),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b $2C(a0),d0 move.l (Collected_special_ring_array).w,d1 bset d0,d1 @@ -79551,7 +79551,7 @@ SSEntryFlash_GoSS: cmpi.w #7,(Chaos_emerald_count).w beq.s loc_443E4 moveq #signextendB(sfx_EnterSS),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l jsr (Clear_SpriteRingMem).l jsr (Save_Level_Data2).l move.b #1,(Special_bonus_entry_flag).w @@ -80123,7 +80123,7 @@ loc_44C36: jsr (SetUp_ObjAttributesSlotted).l move.l #word_4578B,$30(a0) moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.w #$78,$2E(a0) move.b #mus_Knuckles,$26(a0) move.w (Camera_min_Y_pos).w,(Camera_stored_min_Y_pos).w @@ -80495,7 +80495,7 @@ loc_45064: move.w #$F,$2E(a0) move.l #loc_45096,$34(a0) moveq #signextendB(sfx_MissileThrow),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_45740(pc),a2 jsr (CreateChild1_Normal).l lea (PLC_BossExplosion).l,a1 @@ -80599,7 +80599,7 @@ loc_4519E: move.w #-$200,$18(a0) move.w #-$400,$1A(a0) moveq #signextendB(sfx_MissileThrow),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_451C2: jsr (MoveSprite_LightGravity).l @@ -80721,7 +80721,7 @@ loc_4530A: cmp.w (Water_level).w,d0 bcs.s loc_45322 moveq #signextendB(sfx_Splash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b #$C,5(a0) loc_45322: @@ -80916,7 +80916,7 @@ loc_45556: move.w #$350,(Target_water_level).w st (_unkFAA3).w moveq #signextendB(sfx_Geyser),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l jsr (Create_New_Sprite).l bne.s locret_45588 move.l #loc_44E04,(a1) @@ -81009,7 +81009,7 @@ loc_4566A: clr.b (_unkFAA3).w move.w #$A58,(Target_water_level).w moveq #signextendB(sfx_Geyser),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l jsr (Create_New_Sprite).l bne.s loc_456C0 move.l #loc_44E04,(a1) @@ -82307,7 +82307,7 @@ loc_464AC: move.w d5,(Camera_min_X_pos).w move.w d5,(Camera_max_X_pos).w moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l locret_464C8: rts @@ -82332,7 +82332,7 @@ sub_464F2: move.w #$100,$1A(a0) move.w #$AF,$2E(a0) moveq #signextendB(mus_Miniboss),d0 - jsr (Play_Sound).l + jsr (Play_Music).l rts ; End of function sub_464F2 @@ -82377,7 +82377,7 @@ loc_4654C: loc_46566: move.w #$40,$2E(a0) moveq #signextendB(sfx_FlamethrowerQuiet),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea Child1_AIZ_MinibossFlames(pc),a2 jmp (CreateChild1_Normal).l ; --------------------------------------------------------------------------- @@ -82395,7 +82395,7 @@ loc_46596: jsr (PalLoad_Line1).l move.b #$F,$28(a0) moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.w #$400,$18(a0) clr.w $1A(a0) move.w #$40,$2E(a0) @@ -82586,7 +82586,7 @@ sub_467AA: lea word_46F40(pc),a1 jsr (SetUp_ObjAttributes2).l moveq #signextendB(sfx_Projectile),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.l #byte_47062,$30(a0) move.l #loc_467EA,$34(a0) move.w #-$400,$1A(a0) @@ -82611,7 +82611,7 @@ loc_467EA: loc_46800: move.b #6,5(a0) moveq #signextendB(sfx_MissileThrow),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w #$80,8(a0) bset #1,4(a0) move.l #Go_Delete_Sprite,$34(a0) @@ -82816,7 +82816,7 @@ loc_46A40: move.b #$A,5(a0) move.b #8,$39(a0) moveq #signextendB(sfx_FlamethrowerQuiet),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea Child1_AIZ_MinibossFlames(pc),a2 jmp (CreateChild1_Normal).l ; --------------------------------------------------------------------------- @@ -83027,7 +83027,7 @@ loc_46C84: loc_46C96: moveq #signextendB(sfx_MissileExplode),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_46FEE(pc),a2 jsr (CreateChild1_Normal).l jmp (Go_Delete_Sprite).l @@ -83267,7 +83267,7 @@ loc_46E80: bne.s loc_46EA6 move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bset #6,$2A(a0) loc_46EA6: @@ -83541,7 +83541,7 @@ loc_470BE: move.w #$78,$2E(a0) move.l #Obj_AIZ_EndBossMusic,$34(a0) moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.b #1,(Boss_flag).w clr.b (_unkFAA3).w moveq #$6B,d0 @@ -83556,7 +83556,7 @@ loc_470BE: Obj_AIZ_EndBossMusic: move.l #Obj_AIZ_EndBossMain,(a0) moveq #signextendB(mus_EndBoss),d0 - jsr (Play_Sound).l + jsr (Play_Music).l rts ; --------------------------------------------------------------------------- @@ -83596,7 +83596,7 @@ loc_47176: loc_47180: move.b #2,5(a0) moveq #signextendB(sfx_WaterfallSplash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l ori.b #$48,$38(a0) move.l #loc_471E2,$34(a0) clr.b $28(a0) @@ -83699,7 +83699,7 @@ loc_472C2: loc_472CC: move.b #$A,5(a0) moveq #signextendB(sfx_WaterfallSplash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.l #loc_472FC,$34(a0) clr.b $28(a0) bsr.w sub_47AEA @@ -83754,7 +83754,7 @@ loc_47360: bset #4,$38(a0) move.w #$7F,$2E(a0) moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l lea ChildObjDat_47BBC(pc),a2 jmp (CreateChild1_Normal).l ; --------------------------------------------------------------------------- @@ -84083,7 +84083,7 @@ loc_47718: jsr (SetUp_ObjAttributes3).l bset #4,$2B(a0) moveq #signextendB(sfx_Projectile),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b #$C,$1E(a0) move.w #$9F,$2E(a0) move.l #loc_4774E,(a0) @@ -84361,7 +84361,7 @@ sub_47A20: bne.s loc_47A40 move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_47A40: bset #6,$2A(a0) @@ -84734,7 +84734,7 @@ loc_47D82: move.w #$78,$2E(a0) move.l #loc_47DBA,$34(a0) moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l bset #3,$38(a0) lea Pal_HCZMiniboss(pc),a1 jmp (PalLoad_Line1).l @@ -84743,7 +84743,7 @@ loc_47D82: loc_47DBA: move.l #Obj_HCZ_MinibossLoop,(a0) moveq #signextendB(mus_EndBoss),d0 - jsr (Play_Sound).l + jsr (Play_Music).l locret_47DC8: rts @@ -84822,7 +84822,7 @@ loc_47E92: loc_47E96: move.b #$A,5(a0) moveq #signextendB(sfx_Roll),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bset #6,$38(a0) bclr #7,$38(a0) move.w #$400,$1A(a0) @@ -84920,7 +84920,7 @@ loc_47FAA: loc_47FBC: move.b #$14,5(a0) moveq #signextendB(sfx_DoorClose),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bclr #3,$38(a0) move.w #$9F,$2E(a0) move.l #loc_47FE4,$34(a0) @@ -84963,7 +84963,7 @@ loc_4804A: bclr #6,$38(a0) move.w #-$400,$1A(a0) moveq #signextendB(sfx_LavaBall),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -85110,7 +85110,7 @@ loc_481F0: move.l #loc_48266,$34(a0) bclr #6,$38(a0) moveq #signextendB(sfx_LevelProjectile),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -85280,7 +85280,7 @@ loc_483C0: move.l #byte_48C30,$30(a0) move.l #loc_48400,$34(a0) moveq #signextendB(sfx_FanBig),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_48BD6(pc),a2 jmp (CreateChild6_Simple).l ; --------------------------------------------------------------------------- @@ -85304,7 +85304,7 @@ loc_4841C: btst #2,$38(a1) beq.s loc_4843E moveq #signextendB(sfx_BossRotate),d0 - jsr (sub_542A6).l + jsr (Play_SFX_Continuous).l lea byte_48C55(pc),a1 jmp (Animate_RawNoSST).l ; --------------------------------------------------------------------------- @@ -85793,7 +85793,7 @@ sub_488E4: sub_488FA: bset #7,$38(a0) moveq #signextendB(sfx_Splash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l clr.w (Slotted_object_bits).w lea ChildObjDat_48BC2(pc),a2 jmp (CreateChild1_Normal).l @@ -86010,7 +86010,7 @@ sub_48A8C: bne.s loc_48AAC move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_48AAC: bset #6,$2A(a0) @@ -86239,7 +86239,7 @@ Obj_HCZEndBoss: move.l #loc_48D2E,(a0) move.b #1,(Boss_flag).w moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.w #$78,$2E(a0) move.b #mus_EndBoss,$26(a0) move.w (Camera_target_max_Y_pos).w,(Camera_stored_max_Y_pos).w @@ -86404,7 +86404,7 @@ loc_48EF6: move.w #$7F,$2E(a0) move.l #loc_48F3C,$34(a0) moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l moveq #$C,d0 jmp (Set_IndexedVelocity).l ; --------------------------------------------------------------------------- @@ -86484,7 +86484,7 @@ loc_48FF0: loc_4900E: moveq #signextendB(sfx_FanBig),d0 - jsr (sub_542A6).l + jsr (Play_SFX_Continuous).l jmp (Animate_RawGetFaster).l ; --------------------------------------------------------------------------- @@ -86501,7 +86501,7 @@ loc_49034: btst #3,$38(a1) beq.s loc_4904E moveq #signextendB(sfx_FanBig),d0 - jmp (sub_542A6).l + jmp (Play_SFX_Continuous).l ; --------------------------------------------------------------------------- loc_4904E: @@ -86939,7 +86939,7 @@ loc_49544: lea ChildObjDat_49C22(pc),a2 jsr (CreateChild6_Simple).l moveq #signextendB(sfx_MissileExplode),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_49BF4(pc),a2 jsr (CreateChild1_Normal).l jmp (Go_Delete_Sprite).l @@ -86998,7 +86998,7 @@ loc_495FE: andi.b #7,d0 bne.s loc_49610 moveq #signextendB(sfx_Rumble2),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_49610: jmp (Obj_Wait).l @@ -87012,7 +87012,7 @@ loc_4961C: jsr (SetUp_ObjAttributes).l st (Screen_shake_flag).w moveq #signextendB(sfx_Geyser),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea (Player_1).w,a1 move.w $10(a1),d0 move.w d0,$10(a0) @@ -87458,7 +87458,7 @@ sub_49A06: bne.s loc_49A2A move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_49A2A: bset #6,$2A(a0) @@ -87835,7 +87835,7 @@ Obj_MGZ2DrillingEggman: move.l #Obj_MGZ2DrillingEggmanGo,$34(a0) clr.b $2C(a0) moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l lea (ArtKosM_MGZEndBoss).l,a1 move.w #$67E0,d2 jsr (Queue_Kos_Module).l @@ -87851,7 +87851,7 @@ Obj_MGZ2DrillingEggman: Obj_MGZ2DrillingEggmanGo: move.l #Obj_MGZ2DrillingEggmanStart,(a0) moveq #signextendB(mus_EndBoss),d0 - jsr (Play_Sound).l + jsr (Play_Music).l locret_49DD8: rts @@ -87904,7 +87904,7 @@ loc_49E56: bne.w locret_49DD8 move.b #4,5(a0) moveq #signextendB(sfx_Collapse),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -88154,7 +88154,7 @@ loc_4A132: move.b #$1C,$1E(a0) move.w #$C,$26(a0) moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.w #$78,$2E(a0) move.l #loc_4A1C8,$34(a0) lea (ArtKosM_MGZEndBoss).l,a1 @@ -88181,7 +88181,7 @@ loc_4A1C2: loc_4A1C8: move.b #4,5(a0) moveq #signextendB(mus_EndBoss),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.w #$80,$1A(a0) move.w #$BF,$2E(a0) move.l #loc_4A1F8,$34(a0) @@ -88253,7 +88253,7 @@ loc_4A294: st (Events_fg_4).w st (Disable_death_plane).w moveq #signextendB(sfx_BossHitFloor),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l jsr (Create_New_Sprite).l bne.s locret_4A2C6 move.l #Obj_MGZ2_BossTransition,(a1) @@ -88358,7 +88358,7 @@ loc_4A3D4: loc_4A3EA: move.b #$1E,5(a0) moveq #signextendB(sfx_BossZoom),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bclr #3,$38(a0) bclr #2,$38(a0) move.w #$9F,$2E(a0) @@ -88499,7 +88499,7 @@ loc_4A592: bclr #7,4(a0) bset #4,$38(a0) moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.w #$7F,$2E(a0) move.l #loc_4A5CA,$34(a0) move.w #$200,8(a0) @@ -89676,7 +89676,7 @@ loc_4B21C: bne.s loc_4B230 move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_4B230: bset #6,$2A(a0) @@ -90106,7 +90106,7 @@ loc_4B5B4: move.w #$78,$2E(a0) move.l #Obj_CNZMinibossGo,$34(a0) moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.b #1,(Boss_flag).w moveq #$5D,d0 jsr (Load_PLC).l @@ -90117,7 +90117,7 @@ loc_4B5B4: Obj_CNZMinibossGo: move.l #Obj_CNZMinibossStart,(a0) moveq #signextendB(mus_Miniboss),d0 - jsr (Play_Sound).l + jsr (Play_Music).l jsr (Create_New_Sprite).l bne.s locret_4B628 move.l #Obj_CNZMinibossScrollControl,(a1) @@ -90254,7 +90254,7 @@ Obj_CNZMinibossEnd: move.w #$7F,$2E(a0) move.l #Obj_CNZMinibossEndGo,$34(a0) moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l lea Child6_CNZMinibossMakeDebris(pc),a2 jmp (CreateChild6_Simple).l ; --------------------------------------------------------------------------- @@ -90706,7 +90706,7 @@ CNZMiniboss_CheckTopHit: bset #6,$2A(a0) move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_4BCDA: moveq #0,d0 @@ -91029,7 +91029,7 @@ Obj_CNZEndBoss: move.l #loc_4BFF4,(a0) move.b #1,(Boss_flag).w moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.w #$78,$2E(a0) move.b #mus_EndBoss,$26(a0) move.w (Camera_target_max_Y_pos).w,(Camera_stored_max_Y_pos).w @@ -91248,7 +91248,7 @@ loc_4C1EA: move.w #$7F,$2E(a0) move.l #loc_4C21A,$34(a0) moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l lea ChildObjDat_4C8D6(pc),a2 jmp CreateChild1_Normal(pc) ; --------------------------------------------------------------------------- @@ -91387,7 +91387,7 @@ loc_4C3AA: loc_4C3BC: moveq #signextendB(sfx_FloorThump),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w $1A(a0),d0 cmpi.w #$80,d0 bcs.s loc_4C3D8 @@ -91615,7 +91615,7 @@ loc_4C5F6: loc_4C600: moveq #signextendB(sfx_GravityMachine),d0 - jsr (sub_542A6).l + jsr (Play_SFX_Continuous).l jsr Refresh_ChildPosition(pc) jsr Animate_Raw(pc) bsr.w sub_4C6F8 @@ -91802,7 +91802,7 @@ sub_4C778: bne.s loc_4C79C move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_4C79C: bset #6,$2A(a0) @@ -92045,7 +92045,7 @@ loc_4C9EE: move.l #loc_4CA10,$34(a0) move.w #$78,$2E(a0) moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l locret_4CA0A: rts @@ -92058,7 +92058,7 @@ loc_4CA0C: loc_4CA10: move.b #8,5(a0) moveq #signextendB(mus_Miniboss),d0 - jsr (Play_Sound).l + jsr (Play_Music).l rts ; --------------------------------------------------------------------------- @@ -93094,7 +93094,7 @@ sub_4D3C6: beq.s loc_4D40E move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_4D3E8: moveq #0,d0 @@ -93283,7 +93283,7 @@ loc_4D57A: move.w #$78,$2E(a0) move.l #loc_4D5EC,$34(a0) moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.b #1,(Boss_flag).w moveq #$6A,d0 jsr (Load_PLC).l @@ -93310,7 +93310,7 @@ loc_4D5EC: move.b #4,5(a0) move.w #$3F,$2E(a0) moveq #signextendB(mus_Miniboss),d0 - jsr (Play_Sound).l + jsr (Play_Music).l locret_4D600: rts @@ -93748,7 +93748,7 @@ sub_4DA98: bne.s loc_4DAB2 move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_4DAB2: bset #6,$2A(a0) @@ -93881,7 +93881,7 @@ loc_4DBC0: move.w #$78,$2E(a0) move.l #loc_4DC30,$34(a0) moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l lea (ChildObjDat_4642E).l,a2 jsr CreateChild1_Normal(pc) bne.s loc_4DC1E @@ -93901,7 +93901,7 @@ loc_4DC26: loc_4DC30: move.b #4,5(a0) moveq #signextendB(mus_EndBoss),d0 - jsr (Play_Sound).l + jsr (Play_Music).l locret_4DC3E: rts @@ -94000,7 +94000,7 @@ loc_4DD3C: move.w #$7F,$2E(a0) move.l #loc_4DD66,$34(a0) moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l lea ChildObjDat_4E2EA(pc),a2 jmp CreateChild1_Normal(pc) ; --------------------------------------------------------------------------- @@ -94492,7 +94492,7 @@ sub_4E200: bne.s loc_4E224 move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_4E224: bset #6,$2A(a0) @@ -94649,7 +94649,7 @@ Obj_ICZMiniboss: move.l #loc_4E3F4,(a0) move.b #1,(Boss_flag).w moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.w #$78,$2E(a0) move.b #mus_Miniboss,$26(a0) move.w (Camera_max_X_pos).w,(Camera_stored_max_X_pos).w @@ -94760,7 +94760,7 @@ loc_4E4BE: move.w #$7F,$2E(a0) move.l #loc_4E4DC,$34(a0) moveq #signextendB(sfx_TunnelBooster),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -94788,7 +94788,7 @@ loc_4E50A: move.w $3E(a0),$18(a0) move.w #$5F,$2E(a0) moveq #signextendB(sfx_BossRotate),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -95022,7 +95022,7 @@ loc_4E768: move.b #8,5(a0) move.b #$8B,$28(a0) moveq #signextendB(sfx_BossRotate),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -95114,7 +95114,7 @@ loc_4E84C: loc_4E850: move.b #$14,5(a0) moveq #signextendB(sfx_LevelProjectile),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w #$400,$1A(a0) clr.w $18(a0) move.w #$45,$2E(a0) @@ -95406,7 +95406,7 @@ sub_4EAC2: bne.s loc_4EAE2 move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_4EAE2: bset #6,$2A(a0) @@ -95542,7 +95542,7 @@ Obj_ICZEndBoss: move.l #loc_4ED30,(a0) move.b #1,(Boss_flag).w moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.w #$78,$2E(a0) move.b #mus_EndBoss,$26(a0) move.w (Camera_target_max_Y_pos).w,(Camera_stored_max_Y_pos).w @@ -95648,7 +95648,7 @@ loc_4EDFA: loc_4EE16: move.l #loc_4EE3C,$34(a0) moveq #signextendB(sfx_FrostPuff),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bsr.w sub_4F1D2 cmpi.w #2,$26(a0) bne.w locret_4ED3A @@ -95685,7 +95685,7 @@ loc_4EE74: move.w #$7F,$2E(a0) move.l #loc_4EEA4,$34(a0) moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l lea ChildObjDat_4F400(pc),a2 jmp CreateChild1_Normal(pc) ; --------------------------------------------------------------------------- @@ -96149,7 +96149,7 @@ sub_4F2F4: loc_4F31C: move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_4F32A: bset #6,$2A(a0) @@ -96728,7 +96728,7 @@ loc_4F866: move.b #$A,5(a0) move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_4F886: jsr BossFlash(pc) @@ -97290,7 +97290,7 @@ loc_4FE2E: tst.b 4(a0) bpl.s loc_4FE42 moveq #signextendB(sfx_Lazer),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_4FE42: move.b #-$64,$28(a0) @@ -97587,7 +97587,7 @@ sub_500DA: move.b #$20,$20(a0) bset #6,$2A(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w $1A(a0),d0 asl.w #1,d0 cmpi.w #-$800,d0 @@ -97941,7 +97941,7 @@ loc_50444: move.b #8,$29(a0) move.b #1,(Boss_flag).w moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.w #$78,$2E(a0) move.b #mus_EndBoss,$26(a0) move.w #$5A0,(Camera_target_max_Y_pos).w @@ -97997,7 +97997,7 @@ loc_504DC: loc_504F2: move.b #8,5(a0) moveq #signextendB(sfx_Rising),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w #-$40,$1A(a0) move.w #$DF,$2E(a0) move.l #loc_50526,$34(a0) @@ -98035,7 +98035,7 @@ loc_5054C: loc_50562: move.b #$C,5(a0) moveq #signextendB(sfx_TubeLauncher),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bra.w loc_509B6 ; --------------------------------------------------------------------------- @@ -98140,7 +98140,7 @@ loc_50690: move.l #Delete_Current_Sprite,(a0) bset #7,$2A(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_50C2C(pc),a2 jmp CreateChild1_Normal(pc) ; --------------------------------------------------------------------------- @@ -98564,7 +98564,7 @@ sub_50A7A: bne.s loc_50A9E move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_50A9E: bset #6,$2A(a0) @@ -99144,7 +99144,7 @@ loc_51042: move.w #$14,(Screen_shake_flag).w move.w #3,$2E(a0) moveq #signextendB(sfx_BossHitFloor),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -99767,7 +99767,7 @@ sub_5174A: cmp.w $14(a0),d0 bcc.s locret_51762 moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.l (sp),(a0) locret_51762: @@ -99790,9 +99790,9 @@ loc_5177E: dbf d0,loc_5177E move.l #loc_517BA,(a0) moveq #signextendB(sfx_FlamethrowerQuiet),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l moveq #signextendB(mus_Ending),d0 - jsr (Play_Sound).l + jsr (Play_Music).l jsr sub_5439C(pc) lsl.w #2,d0 movea.l off_517AE(pc,d0.w),a1 @@ -100259,7 +100259,7 @@ sub_51CDE: loc_51D06: move.b #$3C,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l movea.w $44(a0),a1 clr.b $28(a1) @@ -100782,7 +100782,7 @@ Obj_HiddenMonitorMain: loc_52352: moveq #signextendB(sfx_GroundSlide),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.l #Sprite_OnScreen_Test,(a0) loc_52360: @@ -100796,7 +100796,7 @@ loc_52366: move.b #4,$3C(a0) move.w #-$500,$1A(a0) moveq #signextendB(sfx_BubbleAttack),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l jmp (Sprite_OnScreen_Test).l ; --------------------------------------------------------------------------- word_52392: dc.w $FFF2, $1C, $FF80, $C0 @@ -100841,7 +100841,7 @@ loc_523FA: subi.w #$20,d0 move.w d0,$14(a0) moveq #signextendB(sfx_Signpost),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea Child1_EndSignStub(pc),a2 jmp CreateChild1_Normal(pc) ; --------------------------------------------------------------------------- @@ -101028,7 +101028,7 @@ loc_525E8: move.w d0,$18(a0) move.w #-$200,$1A(a0) moveq #signextendB(sfx_Signpost),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea Child6_EndSignScore(pc),a2 jsr CreateChild6_Simple(pc) moveq #$A,d0 @@ -101299,7 +101299,7 @@ Obj_NormalExpControl: sub_52850: moveq #signextendB(sfx_Explode),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea Child6_MakeBossExplosion1(pc),a2 jsr CreateChild1_Normal(pc) bne.w locret_5293E @@ -104241,7 +104241,7 @@ Map_Offscreen: dc.w 0 Obj_Song_Fade_ToLevelMusic: move.w #$78,$2E(a0) moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.l #loc_54048,(a0) loc_54048: @@ -104254,14 +104254,14 @@ loc_54048: Obj_Song_Fade_Transition: move.w #$78,$2E(a0) moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.l #loc_5406E,(a0) loc_5406E: subq.w #1,$2E(a0) bpl.w locret_529CE move.b $2C(a0),d0 - jsr (Play_Sound).l + jsr (Play_Music).l jmp (Delete_Current_Sprite).l ; =============== S U B R O U T I N E ======================================= @@ -104280,7 +104280,7 @@ Restore_LevelMusic: moveq #signextendB(mus_Invincibility),d0 loc_540A4: - jmp (Play_Sound).l + jmp (Play_Music).l ; End of function Restore_LevelMusic ; --------------------------------------------------------------------------- @@ -104320,7 +104320,7 @@ Obj_EndSignControl: move.w #$7F,$2E(a0) move.l #Obj_EndSignControlDoSign,$34(a0) moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l rts ; End of function Obj_EndSignControl @@ -104417,7 +104417,7 @@ loc_541C8: subq.w #1,$2E(a0) bpl.s loc_541E6 move.b $26(a0),d0 - jsr (Play_Sound).l + jsr (Play_Music).l bset #0,$38(a0) loc_541E6: @@ -104502,12 +104502,12 @@ StartNewLevel: ; =============== S U B R O U T I N E ======================================= -sub_542A6: +Play_SFX_Continuous: move.b (V_int_run_count+3).w,d1 andi.b #$F,d1 bne.w locret_529CE - jmp (Play_Sound_2).l -; End of function sub_542A6 + jmp (Play_SFX).l +; End of function Play_SFX_Continuous ; --------------------------------------------------------------------------- @@ -104775,7 +104775,7 @@ loc_544A8: loc_544C4: moveq #signextendB(sfx_RingRight),d0 - jmp (Play_Sound).l + jmp (Play_Music).l ; --------------------------------------------------------------------------- loc_544CC: @@ -104783,7 +104783,7 @@ loc_544CC: addq.b #1,(Life_count).w addq.b #1,(Update_HUD_life_count).w moveq #signextendB(mus_ExtraLife),d0 - jmp (Play_Sound).l + jmp (Play_Music).l ; --------------------------------------------------------------------------- Obj_81: @@ -105530,7 +105530,7 @@ loc_54BC2: loc_54BD4: moveq #signextendB(sfx_Projectile),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_54C26(pc),a2 jsr CreateChild2_Complex(pc) bne.s locret_54BF6 @@ -105707,7 +105707,7 @@ loc_54D8E: move.l #loc_54DCA,$34(a0) bset #1,$38(a0) moveq #signextendB(sfx_Blast),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_54F26(pc),a2 jsr CreateChild1_Normal(pc) bne.s locret_54DC8 @@ -105807,7 +105807,7 @@ loc_54E7A: loc_54E80: move.b d1,$22(a0) moveq #signextendB(sfx_Blast),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_54F1E(pc),a2 jsr CreateChild1_Normal(pc) bne.s locret_54E9E @@ -106454,7 +106454,7 @@ loc_55406: bset #0,$38(a0) move.b #4,$22(a0) moveq #signextendB(sfx_MissileThrow),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea (ChildObjDat_55498).l,a2 jsr CreateChild2_Complex(pc) bne.s locret_553DA @@ -106845,7 +106845,7 @@ loc_55774: tst.b 4(a0) bpl.w locret_55772 moveq #signextendB(sfx_Projectile),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_557DE(pc),a2 jmp CreateChild5_ComplexAdjusted(pc) ; --------------------------------------------------------------------------- @@ -107278,7 +107278,7 @@ loc_55B6C: move.w d0,$18(a0) move.w #-$400,$1A(a0) moveq #signextendB(sfx_FloorLauncher),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_55CD4(pc),a2 jsr CreateChild1_Normal(pc) jmp Sprite_CheckDeleteTouchXY(pc) @@ -107355,7 +107355,7 @@ loc_55C2E: move.l #loc_55C4C,(a0) move.b $2C(a0),$2F(a0) moveq #signextendB(sfx_Splash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -107736,7 +107736,7 @@ loc_5601C: loc_56022: move.w d0,(Ring_count).w moveq #signextendB(sfx_RingRight),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_5602E: moveq #0,d0 @@ -107906,7 +107906,7 @@ loc_561D2: cmpi.b #4,$23(a0) bne.s loc_561E8 moveq #signextendB(sfx_ChainTick),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_561E8: jsr Swing_UpAndDown(pc) @@ -108040,7 +108040,7 @@ loc_5632C: andi.b #7,d1 bne.s loc_56342 moveq #signextendB(sfx_Rumble2),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bsr.w sub_567FE loc_56342: @@ -108186,7 +108186,7 @@ loc_564E6: andi.b #7,d1 bne.s loc_564FC moveq #signextendB(sfx_Rumble2),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bsr.w sub_567FE loc_564FC: @@ -108496,7 +108496,7 @@ sub_5682E: bne.s loc_56854 move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bset #6,$2A(a0) loc_56854: @@ -108783,7 +108783,7 @@ loc_56AC0: cmpi.b #4,$22(a0) bne.s locret_56AE4 moveq #signextendB(sfx_Projectile),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_56BF0(pc),a2 jsr CreateChild5_ComplexAdjusted(pc) @@ -108853,7 +108853,7 @@ sub_56B64: clr.b $40(a1) bclr #4,$2A(a1) moveq #signextendB(sfx_Spring),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; End of function sub_56B64 @@ -109231,7 +109231,7 @@ loc_56EA6: move.b #2,5(a1) clr.b $40(a1) moveq #signextendB(sfx_Spring),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; End of function sub_56E8C @@ -109361,7 +109361,7 @@ loc_56FD8: move.w #$20,$2E(a0) move.l #loc_57002,$34(a0) moveq #signextendB(sfx_Lightning),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l tst.b 4(a0) bpl.w locret_56FA0 lea ChildObjDat_5710E(pc),a2 @@ -110571,7 +110571,7 @@ loc_57AF8: jsr CreateChild6_Simple(pc) jsr Go_Delete_Sprite(pc) moveq #signextendB(sfx_Collapse),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l jmp (Sprite_OnScreen_Test).l ; --------------------------------------------------------------------------- word_57B12: dc.w $FFD0, $60, $FFC0, $80 @@ -110860,7 +110860,7 @@ loc_57D38: move.w #$1F,$2E(a0) move.l #loc_57D92,$34(a0) moveq #signextendB(sfx_MechaLand),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -110991,7 +110991,7 @@ loc_57E4E: clr.w $30(a0) clr.b $39(a0) moveq #signextendB(sfx_FrostPuff),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_57E72: jmp Sprite_CheckDeleteTouch(pc) @@ -111027,7 +111027,7 @@ loc_57EBE: move.l #loc_57E4E,(a0) bclr #1,$38(a0) moveq #signextendB(mus_StopSFX),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l jmp Sprite_CheckDeleteTouch(pc) ; --------------------------------------------------------------------------- word_57ED6: dc.w $40 @@ -111576,7 +111576,7 @@ loc_5840C: bclr #0,$38(a0) move.w #$10,(Screen_shake_flag).w moveq #signextendB(sfx_MechaLand),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; =============== S U B R O U T I N E ======================================= @@ -111617,7 +111617,7 @@ loc_58446: jsr Displace_PlayerOffObject(pc) jsr Go_Delete_Sprite(pc) moveq #signextendB(sfx_Collapse),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l addq.w #4,sp locret_58484: @@ -112257,7 +112257,7 @@ loc_589B2: lea ChildObjDat_58A4A(pc),a2 jsr CreateChild6_Simple(pc) moveq #signextendB(sfx_FloorThump),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_589DC: jmp Sprite_CheckDeleteTouch(pc) @@ -112452,7 +112452,7 @@ loc_58B8A: lea ChildObjDat_58C20(pc),a2 jsr CreateChild1_Normal(pc) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l jsr (Go_Delete_Sprite).l locret_58BD0: @@ -112548,7 +112548,7 @@ loc_58C98: jsr CreateChild6_Simple(pc) jsr Go_Delete_Sprite(pc) moveq #signextendB(sfx_IceSpikes),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- word_58CC4: dc.w Player_1 @@ -113487,7 +113487,7 @@ sub_5955A: andi.w #3,d0 bne.s locret_59502 moveq #signextendB(sfx_SlideSkidQuiet),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_59592(pc),a2 jmp CreateChild1_Normal(pc) ; End of function sub_5955A @@ -113908,7 +113908,7 @@ loc_5996C: tst.b 4(a0) bpl.s locret_599AE moveq #signextendB(sfx_Projectile),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_59A30(pc),a2 jsr CreateChild2_Complex(pc) movea.w $46(a0),a2 @@ -114710,7 +114710,7 @@ loc_5A03C: move.l #loc_5A05C,(a0) move.l #Go_Delete_Sprite,$34(a0) moveq #signextendB(sfx_Lazer),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_5A05C: addq.w #1,$3A(a0) @@ -115203,7 +115203,7 @@ loc_5A4E4: loc_5A4F8: bset #3,$38(a0) moveq #signextendB(sfx_BossActivate),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_5A810(pc),a2 jsr CreateChild1_Normal(pc) jmp Go_Delete_Sprite_2(pc) @@ -115456,7 +115456,7 @@ sub_5A7B4: bne.s loc_5A7D4 move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bset #6,$2A(a0) loc_5A7D4: @@ -115550,7 +115550,7 @@ loc_5A84E: move.w #$3F,$2E(a0) move.l #loc_5A8E6,$34(a0) moveq #signextendB(sfx_Rising),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l st (Anim_Counters+$F).w move.w #$6000,(Camera_stored_max_X_pos).w lea Child6_IncLevX(pc),a2 @@ -115626,7 +115626,7 @@ loc_5A990: move.w #-$200,$18(a0) move.w #-$200,$1A(a0) moveq #signextendB(sfx_Thump),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- diff --git a/sonic3k.asm b/sonic3k.asm index 8f82834b..3d4e9806 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -1392,20 +1392,20 @@ Z80_DefaultVariables_end: ; =============== S U B R O U T I N E ======================================= -Play_Sound: +Play_Music: stopZ80 move.b d0,(Z80_RAM+zMusicNumber).l startZ80 rts -; End of function Play_Sound +; End of function Play_Music ; --------------------------------------------------------------------------- ; plays a sound if the source object is on-screen ; unused/dead code, left over from Sonic 2 -Play_Sound_Local: +Play_SFX_Local: tst.b render_flags(a0) - bpl.s Play_Sound_2_Done + bpl.s Play_SFX_Done ; --------------------------------------------------------------------------- ; Can handle up to two different indexes in one frame @@ -1414,7 +1414,7 @@ Play_Sound_Local: ; =============== S U B R O U T I N E ======================================= -Play_Sound_2: +Play_SFX: stopZ80 cmp.b (Z80_RAM+zSFXNumber0).l,d0 beq.s ++ @@ -1428,9 +1428,9 @@ Play_Sound_2: + startZ80 -Play_Sound_2_Done: +Play_SFX_Done: rts -; End of function Play_Sound_2 +; End of function Play_SFX ; =============== S U B R O U T I N E ======================================= @@ -4763,7 +4763,7 @@ Sega_Screen: Title_Screen: moveq #signextendB(mus_FadeOut),d0 - bsr.w Play_Sound ; Fade music if any is playing + bsr.w Play_Music ; Fade music if any is playing clr.w (Kos_decomp_queue_count).w lea (Kos_decomp_stored_registers).w,a1 moveq #0,d0 @@ -4884,7 +4884,7 @@ loc_3F9E: move.w d0,(VDP_control_port).l ; Turn the display on bsr.w Pal_FadeFromBlack ; Fade in to logo moveq #signextendB(mus_SEGA),d0 - bsr.w Play_Sound + bsr.w Play_Music move.w #$B4,(Demo_timer).w ; Set to wait for 3 seconds Wait_SegaS3K: @@ -4898,7 +4898,7 @@ Wait_SegaS3K: loc_3FE4: moveq #signextendB(mus_StopSEGA),d0 - bsr.w Play_Sound ; Stop SEGA sound + bsr.w Play_Music ; Stop SEGA sound lea (Pal_Title).l,a1 loc_3FF0: @@ -4928,7 +4928,7 @@ loc_4040: lea (RAM_start).l,a2 jsr (Queue_Kos).l ; Queue frame 8 of data into a2 since frame 1 is already in VRAM moveq #signextendB(mus_TitleScreen),d0 - bsr.w Play_Sound ; Start playing the title screen music + bsr.w Play_Music ; Start playing the title screen music Wait_TitleS3K: move.b #4,(V_int_routine).w @@ -5040,7 +5040,7 @@ loc_41D4: move.l #5000,(Next_extra_life_score).w move.l #5000,(Next_extra_life_score_P2).w ;CHECKLATER moveq #signextendB(mus_FadeOut),d0 - bsr.w Play_Sound_2 ; Fade out the title screen music + bsr.w Play_SFX ; Fade out the title screen music moveq #0,d0 move.b (Title_screen_option).w,d0 ; Selection is stored here. bne.w loc_4264 @@ -5062,7 +5062,7 @@ loc_4270: loc_4278: moveq #signextendB(mus_FadeOut),d0 - bsr.w Play_Sound_2 ; Fade out music + bsr.w Play_SFX ; Fade out music move.w (Next_demo_number).w,d0 ; Get index of current demo to run move.w d0,(Demo_number).w andi.w #7,d0 @@ -5516,7 +5516,7 @@ OldDebugCode: bne.s locret_4A10 move.w #$101,(Debug_cheat_flag).w moveq #signextendB(sfx_RingLoss),d0 - bsr.w Play_Sound_2 + bsr.w Play_SFX loc_4A0A: move.w #0,(Debug_mode_cheat_counter).w @@ -5595,7 +5595,7 @@ loc_4AC8: andi.b #3,d0 beq.s loc_4ADE moveq #signextendB(sfx_Switch),d0 - jsr (Play_Sound_2).l ; Only play sound if selection was changed + jsr (Play_SFX).l ; Only play sound if selection was changed loc_4ADE: jmp (Draw_Sprite).l @@ -5713,7 +5713,7 @@ S3_Level_Select_Code: move.w #$101,(Level_select_flag).w move.w #$101,(Debug_cheat_flag).w moveq #signextendB(sfx_RingRight),d0 - bsr.w Play_Sound_2 + bsr.w Play_SFX loc_4C8A: move.w #0,(Level_select_cheat_counter).w @@ -5849,7 +5849,7 @@ loc_51F4: move.w d0,(VDP_control_port).l ; Turn the display on bsr.w Pal_FadeFromBlack ; Fade to Sega screen moveq #signextendB(mus_SEGA),d0 ; SEGA sound - bsr.w Play_Sound + bsr.w Play_Music loc_520C: move.b #$14,(V_int_routine).w @@ -5866,7 +5866,7 @@ loc_520C: loc_523A: moveq #signextendB(mus_StopSEGA),d0 - bsr.w Play_Sound ; Stop the SEGA sound if necessary + bsr.w Play_Music ; Stop the SEGA sound if necessary lea (Pal_SKTitle_Sonic).l,a0 lea (Target_palette).w,a1 moveq #$1F,d0 @@ -5883,7 +5883,7 @@ loc_524C: move.l #Obj_SKTitle_DeathEgg,(Player_2).w move.l #Obj_SKTitle_Mountain,(Reserved_object_3).w moveq #signextendB(mus_TitleScreen),d0 - bsr.w Play_Sound ; Play the title screen music + bsr.w Play_Music ; Play the title screen music move.b #3,(Life_count).w move.w #$438,(Demo_timer).w ; 18 second delay (1080 frames NTSC) btst #6,(Graphics_flags).w @@ -5984,7 +5984,7 @@ loc_539A: move.l #5000,(Next_extra_life_score).w move.l #5000,(Next_extra_life_score_P2).w moveq #signextendB(mus_FadeOut),d0 - bsr.w Play_Sound_2 + bsr.w Play_SFX moveq #0,d0 move.b (Title_screen_option).w,d0 cmpi.b #2,d0 @@ -6017,7 +6017,7 @@ locret_546A: loc_546C: moveq #signextendB(mus_FadeOut),d0 ; Start demo by fading out music - bsr.w Play_Sound_2 + bsr.w Play_SFX move.w (Next_demo_number).w,d0 ; Get demo number cmpi.w #3,d0 bhs.s loc_547E @@ -6536,7 +6536,7 @@ loc_5B8C: andi.b #3,d0 beq.s loc_5B9E moveq #signextendB(sfx_Switch),d0 - jsr (Play_Sound_2).l ; Only play sound if selection was made + jsr (Play_SFX).l ; Only play sound if selection was made loc_5B9E: move.b $26(a0),d0 @@ -6898,7 +6898,7 @@ Level: tst.w (Demo_mode_flag).w bmi.s loc_5FC4 moveq #signextendB(mus_FadeOut),d0 ; If a demo - bsr.w Play_Sound_2 + bsr.w Play_SFX loc_5FC4: clr.w (Ending_running_flag).w @@ -7136,7 +7136,7 @@ loc_622A: loc_6248: move.w d0,(Current_music).w - bsr.w Play_Sound + bsr.w Play_Music tst.w (Current_zone_and_act).w bne.s loc_6268 cmpi.w #2,(Player_mode).w @@ -8690,7 +8690,7 @@ loc_7402: andi.b #$F,d0 bne.s locret_7446 moveq #signextendB(sfx_SlideSkidQuiet),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_7446: rts @@ -9468,7 +9468,7 @@ loc_7BE4: clr.l (a1)+ dbf d1,loc_7BE4 moveq #signextendB(mus_DataSelect),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.w #$707,(Demo_timer).w clr.w (Competition_mode).w clr.l (Camera_X_pos).w @@ -9620,7 +9620,7 @@ LevelSelect_CheckKnuckles: LevelSelect_DenySelection: moveq #signextendB(sfx_Error),d0 ; Play error buzzer sound - jsr (Play_Sound_2).l + jsr (Play_SFX).l bra.w LevelSelect_Main ; --------------------------------------------------------------------------- @@ -9672,7 +9672,7 @@ LevelSelect_StartZone: move.l #5000,(Next_extra_life_score).w move.l #5000,(Next_extra_life_score_P2).w moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l moveq #0,d0 move.w d0,(Competition_settings).w move.w d0,(Competition_mode).w @@ -9750,13 +9750,13 @@ loc_7EE4: btst #5,d1 beq.s loc_7EF8 move.w (Sound_test_sound).w,d0 - jsr (Play_Sound).l + jsr (Play_Music).l loc_7EF8: btst #4,d1 beq.s locret_7F06 moveq #signextendB(mus_MutePSG),d0 - jsr (Play_Sound).l + jsr (Play_Music).l locret_7F06: rts @@ -10020,7 +10020,7 @@ AniPLC_SONICMILES: zoneanimstart SpecialStage: moveq #signextendB(mus_Stop),d0 - bsr.w Play_Sound + bsr.w Play_Music clr.w (Kos_decomp_queue_count).w lea (Kos_decomp_stored_registers).w,a1 moveq #0,d0 @@ -10194,7 +10194,7 @@ loc_8454: move.w #$708,(Demo_timer).w jsr (GetDemoPtr).l moveq #signextendB(mus_SpecialStage),d0 - bsr.w Play_Sound + bsr.w Play_Music move.w (VDP_reg_1_command).w,d0 ori.b #$40,d0 move.w d0,(VDP_control_port).l @@ -10970,7 +10970,7 @@ loc_90EE: move.b #$80,(Special_stage_jumping).w move.b #0,(Special_stage_turning).w moveq #signextendB(sfx_Jump),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_911E: tst.b (Special_stage_jumping).w @@ -11119,7 +11119,7 @@ loc_92C4: move.l #$FFE80000,$40(a0) move.b #$81,(Special_stage_jumping_P2).w moveq #signextendB(sfx_Spring),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_9304: bsr.w sub_937C @@ -11130,7 +11130,7 @@ loc_9304: move.l #$FFF00000,$40(a0) move.b #$80,(Special_stage_jumping_P2).w moveq #signextendB(sfx_Jump),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_932A: tst.b (Special_stage_jumping_P2).w @@ -11582,7 +11582,7 @@ loc_978E: loc_97A0: moveq #signextendB(sfx_Goal),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_97A8: rts @@ -11598,7 +11598,7 @@ loc_97AA: loc_97BE: moveq #signextendB(sfx_BlueSphere),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -11611,7 +11611,7 @@ loc_97C8: move.b #1,(Special_stage_bumper_lock).w move.b #0,(Special_stage_advancing).w moveq #signextendB(sfx_Bumper),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -11628,7 +11628,7 @@ loc_97EE: move.l #$FFE80000,$40(a0) move.b #$81,(Special_stage_jumping).w moveq #signextendB(sfx_Spring),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_9822: cmpi.b #4,d2 @@ -11644,7 +11644,7 @@ loc_9838: subq.w #1,(Special_stage_rings_left).w bne.s loc_984C moveq #signextendB(sfx_Perfect),d0 - jsr (Play_Sound).l + jsr (Play_Music).l loc_984C: addi.w #1,(Special_stage_ring_count).w @@ -11658,7 +11658,7 @@ loc_984C: bne.s loc_987E addq.b #1,(Continue_count).w move.w #$FF00|sfx_Continue,d0 - jmp (Play_Sound).l + jmp (Play_Music).l ; --------------------------------------------------------------------------- loc_987E: @@ -11677,7 +11677,7 @@ loc_98A0: moveq #signextendB(sfx_RingLoss),d0 loc_98A6: - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -11995,7 +11995,7 @@ sub_9B62: cmpi.w #2,(Special_stage_clear_timer).w bne.s loc_9B8C moveq #signextendB(sfx_AllSpheres),d0 - jsr (Play_Sound).l + jsr (Play_Music).l loc_9B8C: cmpi.w #$40,(Special_stage_clear_timer).w @@ -12079,7 +12079,7 @@ loc_9C5C: bne.s locret_9C7E addq.b #1,(Special_stage_clear_routine).w moveq #signextendB(mus_Emerald),d0 - jsr (Play_Sound).l + jsr (Play_Music).l locret_9C7E: rts @@ -12136,7 +12136,7 @@ loc_9D02: loc_9D14: moveq #signextendB(sfx_Goal),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_9D1C: rts @@ -12389,7 +12389,7 @@ loc_9F30: subq.w #2,d1 bne.s loc_9F0E moveq #signextendB(sfx_RingLoss),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l moveq #1,d1 locret_9F42: @@ -12906,7 +12906,7 @@ loc_A988: jsr (Process_Sprites).l jsr (Render_Sprites).l moveq #signextendB(mus_CompetitionMenu),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.b #$1E,(V_int_routine).w jsr (Wait_VSync).l move.w (VDP_reg_1_command).w,d0 @@ -12983,7 +12983,7 @@ loc_AA98: move.l d0,(a1)+ dbf d1,loc_AA98 moveq #signextendB(sfx_Starpost),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- loc_AAA6: @@ -13011,7 +13011,7 @@ loc_AACA: move.b d1,(Competition_menu_selection).w move.w d2,d0 beq.s loc_AAD8 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_AAD8: bra.w loc_A9E8 @@ -13043,7 +13043,7 @@ Obj_Competition_AB00: tst.b (Competition_menu_items).w seq (Competition_menu_items).w moveq #signextendB(sfx_Switch),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_AB26: move.w #$15C,d0 @@ -13243,7 +13243,7 @@ loc_AD8A: addi.w #$C29F,$A(a0) move.w #$B0,$10(a0) moveq #signextendB(mus_CompetitionMenu),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.b #$1E,(V_int_routine).w jsr (Wait_VSync).l move.w (VDP_reg_1_command).w,d0 @@ -13335,7 +13335,7 @@ loc_AE9A: cmpi.b #4,(a0) beq.s loc_AEF2 moveq #signextendB(sfx_Switch),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l addq.b #1,(a0) cmpi.b #4,(a0) beq.s loc_AEF2 @@ -13349,7 +13349,7 @@ loc_AED2: tst.b (a0) beq.s loc_AEF2 moveq #signextendB(sfx_Switch),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l subq.b #1,(a0) beq.s loc_AEF2 cmpi.b #3,(a0) @@ -13362,7 +13362,7 @@ loc_AEF2: andi.w #$E0,d1 beq.w loc_ADF2 moveq #signextendB(sfx_Starpost),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l moveq #0,d0 move.b (Competition_menu_zone).w,d0 move.b Comp_ZoneList(pc,d0.w),(Current_zone).w @@ -13937,7 +13937,7 @@ loc_B406: jsr (Process_Sprites).l jsr (Render_Sprites).l moveq #signextendB(mus_CompetitionMenu),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.b #$1E,(V_int_routine).w jsr (Wait_VSync).l move.w (VDP_reg_1_command).w,d0 @@ -14021,7 +14021,7 @@ loc_B558: beq.w loc_B602 move.l d0,-(sp) moveq #signextendB(sfx_GravityTunnel),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.l (sp)+,d0 clr.b $34(a0) move.b $2E(a0),$35(a0) @@ -14104,7 +14104,7 @@ loc_B610: st $2F(a0) sf (a2) moveq #signextendB(sfx_Starpost),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_B626: moveq #1,d0 @@ -14348,7 +14348,7 @@ loc_B8B4: jsr (Process_Sprites).l jsr (Render_Sprites).l moveq #signextendB(mus_Continue),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.b #$1E,(V_int_routine).w jsr (Wait_VSync).l move.w (VDP_reg_1_command).w,d0 @@ -14822,7 +14822,7 @@ loc_BDE8: jsr (Process_Sprites).l jsr (Render_Sprites).l moveq #signextendB(mus_Continue),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.b #$1E,(V_int_routine).w jsr (Wait_VSync).l move.w (VDP_reg_1_command).w,d0 @@ -15779,7 +15779,7 @@ loc_C7CC: move.l (a0)+,(a1)+ dbf d0,loc_C7CC moveq #signextendB(mus_DataSelect),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.l #loc_C890,(_unkEF44_1).w move.b #$1E,(V_int_routine).w jsr (Wait_VSync).l @@ -15824,7 +15824,7 @@ loc_C856: cmpi.b #$4C,(Game_mode).w ; are we still in the savescreen mode? beq.s SaveScreen_MainLoop ; if so, loop moveq #signextendB(sfx_EnterSS),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; =============== S U B R O U T I N E ======================================= @@ -16333,7 +16333,7 @@ loc_D238: moveq #signextendB(sfx_SmallBumpers),d0 loc_D24C: - jsr (Play_Sound_2).l + jsr (Play_SFX).l moveq #-8,d0 loc_D254: @@ -16348,7 +16348,7 @@ loc_D254: moveq #signextendB(sfx_SmallBumpers),d0 loc_D272: - jsr (Play_Sound_2).l + jsr (Play_SFX).l moveq #8,d0 loc_D27A: @@ -16608,7 +16608,7 @@ loc_D508: loc_D518: move.w d1,$36(a0) move.l d2,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b #$1A,$1D(a0) btst #4,(Level_frame_counter+1).w beq.s loc_D53C @@ -16769,7 +16769,7 @@ loc_D6FA: beq.s locret_D70A move.l d0,-(sp) move.l d2,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.l (sp)+,d0 locret_D70A: @@ -16853,7 +16853,7 @@ loc_D7C0: andi.w #$E0,d0 beq.w loc_D8A0 moveq #signextendB(sfx_Starpost),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l st (Events_bg+$12).w addq.b #4,5(a0) bra.w loc_D8A0 @@ -16881,7 +16881,7 @@ loc_D7EA: tst.b (a1) bmi.s loc_D854 moveq #signextendB(sfx_Starpost),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l st (Events_bg+$10).w addq.b #8,5(a0) @@ -16943,7 +16943,7 @@ loc_D8C4: btst #2,(Ctrl_1_pressed).w beq.s loc_D90C moveq #signextendB(sfx_Perfect),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l movea.l $2E(a0),a1 move.w #$8000,(a1) clr.l 2(a1) @@ -17342,7 +17342,7 @@ loc_DCE2: addq.b #1,(Life_count).w ; Give an additional extra life addq.b #1,(Update_HUD_life_count).w move.w #mus_ExtraLife,d0 ; Play the 1up song - jmp (Play_Sound).l + jmp (Play_Music).l ; --------------------------------------------------------------------------- locret_DD04: @@ -20859,7 +20859,7 @@ loc_10320: moveq #signextendB(sfx_SpikeHit),d0 loc_10346: - jsr (Play_Sound_2).l + jsr (Play_SFX).l moveq #-1,d0 rts ; --------------------------------------------------------------------------- @@ -20895,7 +20895,7 @@ loc_1036E: move.b #$18,$20(a0) move.w $A(a0),(Debug_saved_art_tile).w bset #7,$A(a0) - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_103B6: moveq #-1,d0 @@ -21455,7 +21455,7 @@ loc_10918: move.b #2,$20(a0) addq.w #4,$14(a0) move.w #sfx_Roll,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l tst.w $1C(a0) bne.s locret_1094A move.w #$200,$1C(a0) @@ -21478,7 +21478,7 @@ sub_1094C: beq.w locret_10996 move.b #9,$20(a0) move.w #$FF00|sfx_Spindash,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l addq.l #4,sp move.b #1,$3D(a0) move.w #0,$3E(a0) @@ -21527,7 +21527,7 @@ loc_109FE: bset #2,$2A(a0) move.b #0,$20(a6) moveq #signextendB(sfx_Dash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bra.s loc_10A80 ; --------------------------------------------------------------------------- word_10A14: dc.w $800 @@ -21565,7 +21565,7 @@ loc_10A50: beq.w loc_10A80 move.w #$900,$20(a0) move.w #$FF00|sfx_Spindash,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l addi.w #$200,$3E(a0) cmpi.w #$800,$3E(a0) blo.s loc_10A80 @@ -21796,7 +21796,7 @@ Sonic_ChkInvin: ; Checks if invincibility has expired and disables it if it has. cmpi.b #$C,air_left(a0) ; Don't change music if drowning blo.s Sonic_RmvInvin move.w (Current_music).w,d0 - jsr (Play_Sound).l ; stop playing invincibility theme and resume normal level music + jsr (Play_Music).l ; stop playing invincibility theme and resume normal level music Sonic_RmvInvin: bclr #Status_Invincible,status_secondary(a0) @@ -21977,7 +21977,7 @@ loc_10E82: beq.s locret_10E2C move.w #$100,anim(a6) ; splash animation, write 1 to anim and clear prev_anim move.w #sfx_Splash,d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- Sonic_OutWater: @@ -22018,7 +22018,7 @@ loc_10EFC: loc_10F22: move.w #sfx_Splash,d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function Sonic_Water ; --------------------------------------------------------------------------- @@ -22565,7 +22565,7 @@ loc_11438: tst.b $2D(a0) bmi.s locret_11480 move.w #sfx_Skid,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b #$D,$20(a0) bclr #0,$2A(a0) cmpi.b #$C,$2C(a0) @@ -22620,7 +22620,7 @@ loc_114BE: tst.b $2D(a0) bmi.s locret_11506 move.w #sfx_Skid,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b #$D,$20(a0) bset #0,$2A(a0) cmpi.b #$C,$2C(a0) @@ -22984,7 +22984,7 @@ Player_DoRoll: loc_117C2: move.w #sfx_Roll,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l tst.w ground_vel(a0) bne.s locret_117D8 move.w #$200,ground_vel(a0) @@ -23047,7 +23047,7 @@ loc_1182E: move.b #1,jumping(a0) clr.b stick_to_convex(a0) move.w #sfx_Jump,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b default_y_radius(a0),y_radius(a0) move.b default_x_radius(a0),x_radius(a0) btst #Status_Roll,status(a0) @@ -23143,7 +23143,7 @@ loc_11958: move.w #$2000,(H_scroll_frame_offset).w bsr.w Reset_Player_Position_Array move.w #sfx_FireAttack,d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- Sonic_LightningShield: @@ -23154,7 +23154,7 @@ Sonic_LightningShield: move.w #-$580,y_vel(a0) ; bounce Sonic up, creating the double jump effect clr.b jumping(a0) move.w #sfx_ElectricAttack,d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- Sonic_BubbleShield: @@ -23166,7 +23166,7 @@ Sonic_BubbleShield: move.w #0,ground_vel(a0) ; ...both ground and air move.w #$800,y_vel(a0) ; force Sonic down move.w #sfx_BubbleAttack,d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- ; Code that transforms Sonic into Super/Hyper Sonic ; if he has enough rings and emeralds @@ -23192,7 +23192,7 @@ Sonic_InstaShield: move.b #1,(Shield+anim).w move.b #1,double_jump_flag(a0) move.w #sfx_InstaAttack,d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- locret_11A14: @@ -23226,9 +23226,9 @@ Sonic_Transform: move.b #0,invincibility_timer(a0) bset #Status_Invincible,status_secondary(a0) moveq #signextendB(sfx_SuperTransform),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l moveq #signextendB(mus_Invincibility),d0 ; play invincibility theme - jmp (Play_Sound).l + jmp (Play_Music).l ; --------------------------------------------------------------------------- Sonic_HyperDash: @@ -23238,7 +23238,7 @@ Sonic_HyperDash: move.b #1,double_jump_flag(a0) move.b #1,(Invincibility_stars+anim).w ; This causes the screen flash, and sparks to come out of Sonic moveq #signextendB(sfx_Dash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b (Ctrl_1_logical).w,d0 andi.w #button_up_mask|button_down_mask|button_left_mask|button_right_mask,d0 ; Get D-pad input beq.s .noInput @@ -23364,7 +23364,7 @@ SonicKnux_Spindash: beq.w locret_11C5C move.b #9,$20(a0) move.w #$FF00|sfx_Spindash,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l addq.l #4,sp move.b #1,$3D(a0) move.w #0,$3E(a0) @@ -23443,7 +23443,7 @@ loc_11CDC: bset #2,$2A(a0) move.b #0,$20(a6) moveq #signextendB(sfx_Dash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bra.s loc_11D5E ; --------------------------------------------------------------------------- word_11CF2: dc.w $800 @@ -23481,7 +23481,7 @@ loc_11D2E: beq.w loc_11D5E move.w #$900,$20(a0) move.w #$FF00|sfx_Spindash,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l addi.w #$200,$3E(a0) cmpi.w #$800,$3E(a0) blo.s loc_11D5E @@ -24145,7 +24145,7 @@ loc_122AA: sub.w d0,$14(a0) move.b #2,(Shield+anim).w move.w #sfx_BubbleAttack,d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function BubbleShield_Bounce ; --------------------------------------------------------------------------- @@ -24312,7 +24312,7 @@ loc_12478: clr.b (_unkFEC7).w move.b #8,5(a0) move.w #mus_GameOver,d0 - jsr (Play_Sound).l + jsr (Play_Music).l moveq #3,d0 jmp (Load_PLC_2).l ; --------------------------------------------------------------------------- @@ -25550,7 +25550,7 @@ loc_13438: andi.b #$F,d0 bne.s locret_13452 moveq #signextendB(sfx_FlyTired),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_13452: rts @@ -25562,7 +25562,7 @@ loc_13454: andi.b #$F,d0 bne.s locret_13468 moveq #signextendB(sfx_Flying),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_13468: rts @@ -25635,7 +25635,7 @@ loc_134EC: move.b #2,$20(a0) addq.w #4,$14(a0) move.w #sfx_Roll,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l tst.w $1C(a0) bne.s locret_1351E move.w #$200,$1C(a0) @@ -25658,7 +25658,7 @@ sub_13520: beq.w locret_1356E move.b #9,$20(a0) move.w #$FF00|sfx_Spindash,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l addq.l #4,sp move.b #1,$3D(a0) move.w #0,$3E(a0) @@ -25708,7 +25708,7 @@ loc_135D6: bset #2,$2A(a0) move.b #0,$20(a6) move.w #$FF00|sfx_Dash,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bra.s loc_13648 ; --------------------------------------------------------------------------- word_135EE: dc.w $800 @@ -25737,7 +25737,7 @@ loc_13618: beq.w loc_13648 move.w #$900,$20(a0) move.w #$FF00|sfx_Spindash,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l addi.w #$200,$3E(a0) cmpi.w #$800,$3E(a0) blo.s loc_13648 @@ -26005,7 +26005,7 @@ loc_13912: cmpi.b #$C,$2C(a0) blo.s loc_13948 move.w (Current_music).w,d0 - jsr (Play_Sound).l + jsr (Play_Music).l loc_13948: bclr #1,$2B(a0) @@ -27071,7 +27071,7 @@ loc_1456C: bne.s locret_1459C bsr.s sub_1459E moveq #signextendB(sfx_Grab),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b #1,(a2) locret_1459C: @@ -27162,7 +27162,7 @@ loc_1469C: beq.s locret_14638 move.w #$100,anim(a6) move.w #sfx_Splash,d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- loc_146BA: @@ -27206,7 +27206,7 @@ loc_14718: loc_1473E: move.w #sfx_Splash,d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function Tails_Water ; --------------------------------------------------------------------------- @@ -27377,7 +27377,7 @@ loc_148CC: andi.b #$F,d0 bne.s locret_148F2 moveq #signextendB(sfx_FlyTired),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_148F2: rts @@ -27392,7 +27392,7 @@ loc_148F4: andi.b #$F,d0 bne.s locret_14912 moveq #signextendB(sfx_Flying),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_14912: rts @@ -27776,7 +27776,7 @@ loc_14C62: tst.b $2D(a0) bmi.s locret_14CAA move.w #sfx_Skid,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b #$D,$20(a0) bclr #0,$2A(a0) cmpi.b #$C,$2C(a0) @@ -27831,7 +27831,7 @@ loc_14CE8: tst.b $2D(a0) bmi.s locret_14D30 move.w #sfx_Skid,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b #$D,$20(a0) bset #0,$2A(a0) cmpi.b #$C,$2C(a0) @@ -28184,7 +28184,7 @@ loc_14FC4: loc_14FEA: move.w #sfx_Roll,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l tst.w $1C(a0) bne.s locret_15000 move.w #$200,$1C(a0) @@ -28238,7 +28238,7 @@ loc_1504C: move.b #1,$40(a0) clr.b $3C(a0) move.w #sfx_Jump,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b $44(a0),$1E(a0) move.b $45(a0),$1F(a0) btst #2,$2A(a0) @@ -28364,9 +28364,9 @@ Tails_Transform: move.b #0,invincibility_timer(a0) bset #Status_Invincible,status_secondary(a0) moveq #signextendB(sfx_SuperTransform),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l moveq #signextendB(mus_Invincibility),d0 ; play invincibility theme - jmp (Play_Sound).l + jmp (Play_Music).l ; End of function Tails_JumpHeight @@ -28383,7 +28383,7 @@ Tails_Spindash: beq.w locret_1527A move.b #9,$20(a0) move.w #$FF00|sfx_Spindash,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l addq.l #4,sp move.b #1,$3D(a0) move.w #0,$3E(a0) @@ -28462,7 +28462,7 @@ loc_152F8: bset #2,$2A(a0) move.b #0,$20(a6) moveq #signextendB(sfx_Dash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bra.s loc_1537A ; --------------------------------------------------------------------------- word_1530E: dc.w $800 @@ -28500,7 +28500,7 @@ loc_1534A: beq.w loc_1537A move.w #$900,$20(a0) move.w #$FF00|sfx_Spindash,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l addi.w #$200,$3E(a0) cmpi.w #$800,$3E(a0) blo.s loc_1537A @@ -30175,7 +30175,7 @@ loc_1665E: cmpi.b #$C,$2C(a0) blo.s loc_16694 move.w (Current_music).w,d0 - jsr (Play_Sound).l + jsr (Play_Music).l loc_16694: bclr #1,$2B(a0) @@ -30251,7 +30251,7 @@ loc_1674A: beq.s locret_166F4 move.w #$100,anim(a6) move.w #sfx_Splash,d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- loc_1676E: @@ -30291,7 +30291,7 @@ loc_167C4: loc_167EA: move.w #sfx_Splash,d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function Knuckles_Water ; --------------------------------------------------------------------------- @@ -30459,7 +30459,7 @@ loc_169A6: moveq #signextendB(sfx_Thump),d0 loc_169C2: - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w #0,$1C(a0) move.w #0,$18(a0) move.w #0,$1A(a0) @@ -30550,7 +30550,7 @@ loc_16AA6: loc_16AD6: add.w d0,$14(a0) moveq #signextendB(sfx_GlideLand),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b $26(a0),d0 addi.b #$20,d0 andi.b #$C0,d0 @@ -30621,7 +30621,7 @@ loc_16B7A: andi.b #7,d0 bne.s locret_16B94 moveq #signextendB(sfx_GroundSlide),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_16B94: rts @@ -31497,7 +31497,7 @@ loc_1746A: tst.b $2D(a0) bmi.s locret_174B2 move.w #sfx_Skid,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b #$D,$20(a0) bclr #0,$2A(a0) cmpi.b #$C,$2C(a0) @@ -31552,7 +31552,7 @@ loc_174F0: tst.b $2D(a0) bmi.s locret_17538 move.w #sfx_Skid,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b #$D,$20(a0) bset #0,$2A(a0) cmpi.b #$C,$2C(a0) @@ -31847,7 +31847,7 @@ loc_1775C: move.b #1,$40(a0) clr.b $3C(a0) move.w #sfx_Jump,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b $44(a0),$1E(a0) move.b $45(a0),$1F(a0) btst #2,$2A(a0) @@ -31987,9 +31987,9 @@ Knux_Transform: move.b #0,invincibility_timer(a0) bset #Status_Invincible,status_secondary(a0) moveq #signextendB(sfx_SuperTransform),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l moveq #signextendB(mus_Invincibility),d0 ; play invincibility theme - jmp (Play_Sound).l + jmp (Play_Music).l ; End of function Knux_JumpHeight @@ -32895,7 +32895,7 @@ AirCountdown_Countdown: tst.b parent+1(a0) bne.s loc_184E8 moveq #signextendB(mus_Drowning),d0 - jsr (Play_Sound).l + jsr (Play_Music).l loc_184E8: subq.b #1,$36(a0) @@ -32909,14 +32909,14 @@ AirCountdown_WarnSound: tst.b parent+1(a0) bne.s AirCountdown_ReduceAir moveq #signextendB(sfx_AirDing),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l AirCountdown_ReduceAir: subq.b #1,air_left(a2) bcc.w loc_18592 move.b #$81,object_control(a2) move.w #sfx_Drown,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b #$A,$38(a0) move.w #1,$3A(a0) move.w #$78,$30(a0) @@ -33056,7 +33056,7 @@ loc_186AC: move.w #mus_MinibossK,d0 ; prepare to play boss music loc_186B6: - jsr (Play_Sound).l + jsr (Play_Music).l loc_186BC: move.b #$1E,air_left(a1) ; reset air to full @@ -34781,29 +34781,29 @@ GiveRing: addq.w #1,(Total_ring_count).w ; add 1 to the number of collected rings GiveRing_1P: - move.w #sfx_RingRight,d0 ; prepare to play the ring sound + move.w #sfx_RingRight,d0 ; prepare to play the ring sound cmpi.w #999,(Ring_count).w ; does the player 1 have 999 or more rings? - bhs.s JmpTo_Play_Sound_2 ; if yes, play the ring sound + bhs.s JmpTo_Play_SFX ; if yes, play the ring sound addq.w #1,(Ring_count).w ; add 1 to the ring count ori.b #1,(Update_HUD_ring_count).w ; set flag to update the ring counter in the HUD cmpi.w #100,(Ring_count).w ; does the player 1 have less than 100 rings? - blo.s JmpTo_Play_Sound_2 ; if yes, play the ring sound + blo.s JmpTo_Play_SFX ; if yes, play the ring sound bset #1,(Extra_life_flags).w ; test and set the flag for the first extra life beq.s loc_1A5D8 ; if it was clear before, branch cmpi.w #200,(Ring_count).w ; does the player 1 have less than 200 rings? - blo.s JmpTo_Play_Sound_2 ; if yes, play the ring sound + blo.s JmpTo_Play_SFX ; if yes, play the ring sound bset #2,(Extra_life_flags).w ; test and set the flag for the second extra life - bne.s JmpTo_Play_Sound_2 ; if it was set before, play the ring sound + bne.s JmpTo_Play_SFX ; if it was set before, play the ring sound loc_1A5D8: addq.b #1,(Life_count).w ; add 1 to the life count addq.b #1,(Update_HUD_life_count).w ; add 1 to the displayed life count - moveq #signextendB(mus_ExtraLife),d0 ; prepare to play the extra life jingle - jmp (Play_Sound).l ; Sonic 2 wound up putting music in the stereo sound queue, this would have fixed it + moveq #signextendB(mus_ExtraLife),d0 ; prepare to play the extra life jingle + jmp (Play_Music).l ; Sonic 2 wound up putting music in the stereo sound queue, this would have fixed it ; --------------------------------------------------------------------------- -JmpTo_Play_Sound_2: - jmp (Play_Sound_2).l +JmpTo_Play_SFX: + jmp (Play_SFX).l ; --------------------------------------------------------------------------- rts ; --------------------------------------------------------------------------- @@ -34835,11 +34835,11 @@ loc_1A608: loc_1A638: addq.b #1,(Life_count_P2).w moveq #signextendB(mus_ExtraLife),d0 - jmp (Play_Sound).l + jmp (Play_Music).l ; --------------------------------------------------------------------------- loc_1A644: - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function GiveRing ; --------------------------------------------------------------------------- @@ -34939,7 +34939,7 @@ loc_1A728: loc_1A738: move.w #$FF00|sfx_RingLoss,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w #0,(Ring_count).w move.b #$80,(Update_HUD_ring_count).w move.b #0,(Extra_life_flags).w @@ -40089,7 +40089,7 @@ Monitor_Give_1up: addq.b #1,(Life_count).w addq.b #1,(Update_HUD_life_count).w moveq #signextendB(mus_ExtraLife),d0 - jmp (Play_Sound).l + jmp (Play_Music).l ; --------------------------------------------------------------------------- Monitor_Give_Rings: @@ -40122,7 +40122,7 @@ loc_1D8DA: loc_1D8F6: moveq #signextendB(sfx_RingRight),d0 - jmp (Play_Sound).l + jmp (Play_Music).l ; --------------------------------------------------------------------------- loc_1D8FE: @@ -40161,7 +40161,7 @@ Monitor_Give_FireShield: bset #0,$2B(a1) bset #4,$2B(a1) moveq #signextendB(sfx_FireShield),d0 - jsr (Play_Sound).l + jsr (Play_Music).l tst.b $43(a0) bne.s loc_1D984 move.l #Obj_FireShield,(Shield).w @@ -40181,7 +40181,7 @@ Monitor_Give_LightningShield: bset #0,$2B(a1) bset #5,$2B(a1) moveq #signextendB(sfx_LightningShield),d0 - jsr (Play_Sound).l + jsr (Play_Music).l tst.b $43(a0) bne.s loc_1D9C2 move.l #Obj_LightningShield,(Shield).w @@ -40201,7 +40201,7 @@ Monitor_Give_BubbleShield: bset #0,$2B(a1) bset #6,$2B(a1) moveq #signextendB(sfx_BubbleShield),d0 - jsr (Play_Sound).l + jsr (Play_Music).l tst.b $43(a0) bne.s loc_1DA00 move.l #Obj_BubbleShield,(Shield).w @@ -40228,7 +40228,7 @@ Monitor_Give_Invincibility: cmpi.b #$C,$2C(a1) bls.s loc_1DA3E moveq #signextendB(mus_Invincibility),d0 - jsr (Play_Sound).l + jsr (Play_Music).l loc_1DA3E: tst.b $43(a0) @@ -40292,9 +40292,9 @@ Monitor_Give_SuperSonic: move.b #0,(Player_1+invincibility_timer).w bset #Status_Invincible,status_secondary(a1) moveq #signextendB(sfx_SuperTransform),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l moveq #signextendB(mus_Invincibility),d0 ; play invincibility theme - jmp (Play_Sound).l + jmp (Play_Music).l ; --------------------------------------------------------------------------- rts ; --------------------------------------------------------------------------- @@ -41490,7 +41490,7 @@ loc_1E5F6: loc_1E61A: moveq #signextendB(sfx_Break),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l addq.b #2,5(a0) loc_1E626: @@ -41782,7 +41782,7 @@ loc_1E9C0: move.b #2,$20(a1) addq.w #5,$14(a1) moveq #signextendB(sfx_Roll),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; End of function sub_1E8C6 @@ -42469,7 +42469,7 @@ loc_1F1A0: loc_1F1FA: moveq #signextendB(sfx_Collapse),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_1F188 ; --------------------------------------------------------------------------- @@ -43865,7 +43865,7 @@ loc_201B8: loc_201BC: moveq #signextendB(sfx_Collapse),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_2013A ; --------------------------------------------------------------------------- @@ -43927,7 +43927,7 @@ loc_20206: loc_20266: moveq #signextendB(sfx_Collapse),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_201DE ; --------------------------------------------------------------------------- @@ -44836,7 +44836,7 @@ loc_20C98: loc_20CAE: moveq #signextendB(sfx_Collapse),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- byte_20CB6: dc.b $30, $2C, $28, $24, $20, $1C, $2E, $2A, $26, $22, $1E, $1A, $2C, $28, $24, $20, $1C, $18, $2A, $26 dc.b $22, $1E, $1A, $16, $28, $24, $20, $1C, $18, $14 @@ -45146,7 +45146,7 @@ loc_216AA: sub_216B0: moveq #signextendB(sfx_Collapse),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w #$80,8(a0) loc_216BE: @@ -46036,7 +46036,7 @@ sub_2219E: move.b d1,Slow_motion_flag-Level_select_flag(a4) move.w d0,d1 moveq #signextendB(sfx_RingRight),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w d1,d0 loc_221DA: @@ -46218,7 +46218,7 @@ loc_22302: andi.b #$FD,4(a1) move.b #1,(a2) moveq #signextendB(sfx_Grab),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_2237C: rts @@ -46531,7 +46531,7 @@ loc_226C2: cmpi.b #$40,d0 bne.s loc_226E0 moveq #signextendB(sfx_GroundSlide),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_226E0: move.w #$200,8(a0) @@ -46974,7 +46974,7 @@ loc_22B3C: blt.s loc_22B3C move.b #-$7F,(a2) moveq #signextendB(sfx_Grab),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_22B9C: rts @@ -47248,7 +47248,7 @@ loc_23036: loc_23048: moveq #signextendB(sfx_Spring),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_22F98 ; --------------------------------------------------------------------------- @@ -47432,7 +47432,7 @@ loc_2324C: bclr #5,$2A(a1) move.b #0,double_jump_flag(a1) moveq #signextendB(sfx_Spring),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_23190 @@ -47627,7 +47627,7 @@ loc_2346C: move.b #2,5(a1) move.b #0,double_jump_flag(a1) moveq #signextendB(sfx_Spring),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_233CA ; --------------------------------------------------------------------------- @@ -47733,7 +47733,7 @@ loc_235B8: loc_235CA: moveq #signextendB(sfx_Spring),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_234E6 ; --------------------------------------------------------------------------- @@ -47821,7 +47821,7 @@ loc_236D0: loc_236E2: moveq #signextendB(sfx_Spring),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_23624 ; --------------------------------------------------------------------------- @@ -47989,7 +47989,7 @@ sub_23AB8: tst.b 4(a0) bpl.s locret_23B16 moveq #signextendB(sfx_SpikeMove),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bra.s locret_23B16 ; --------------------------------------------------------------------------- @@ -48199,7 +48199,7 @@ sub_23CDC: tst.b 4(a0) bpl.s locret_23D40 moveq #signextendB(sfx_SpikeMove),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bra.s locret_23D40 ; --------------------------------------------------------------------------- @@ -48742,7 +48742,7 @@ sub_242F6: tst.b 4(a0) bpl.s locret_24354 moveq #signextendB(sfx_SpikeMove),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bra.s locret_24354 ; --------------------------------------------------------------------------- @@ -48858,7 +48858,7 @@ sub_243F6: tst.b 4(a0) bpl.s locret_24454 moveq #signextendB(sfx_SpikeMove),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bra.s locret_24454 ; --------------------------------------------------------------------------- @@ -51271,7 +51271,7 @@ loc_25EBA: clr.b $40(a1) clr.b $3D(a1) moveq #signextendB(sfx_SmallBumpers),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; End of function sub_25EA6 @@ -51592,7 +51592,7 @@ loc_26276: loc_26294: moveq #signextendB(sfx_Spring),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_261F2 ; --------------------------------------------------------------------------- @@ -51741,7 +51741,7 @@ loc_2642E: tst.b 4(a0) bpl.s loc_2643C moveq #signextendB(sfx_FireAttack),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_2643C: moveq #0,d1 @@ -52388,7 +52388,7 @@ loc_26B78: bpl.s locret_26BB6 move.w #$80,8(a0) moveq #signextendB(sfx_Hoverpad),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_26BB6: rts @@ -52399,7 +52399,7 @@ loc_26BB8: bmi.s locret_26BCC move.w #$200,8(a0) moveq #signextendB(sfx_Hoverpad),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_26BCC: rts @@ -52448,7 +52448,7 @@ loc_26C08: bpl.s locret_26C46 move.w #$80,8(a0) moveq #signextendB(sfx_Hoverpad),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_26C46: rts @@ -52459,7 +52459,7 @@ loc_26C48: bmi.s locret_26C5C move.w #$200,8(a0) moveq #signextendB(sfx_Hoverpad),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_26C5C: rts @@ -52514,7 +52514,7 @@ loc_26CCA: bpl.s locret_26CEE move.w #$80,8(a0) moveq #signextendB(sfx_Hoverpad),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_26CEE: rts @@ -52525,7 +52525,7 @@ loc_26CF0: bmi.s locret_26D04 move.w #$200,8(a0) moveq #signextendB(sfx_Hoverpad),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_26D04: rts @@ -52557,7 +52557,7 @@ loc_26D38: bpl.s locret_26D5C move.w #$80,8(a0) moveq #signextendB(sfx_Hoverpad),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_26D5C: rts @@ -52568,7 +52568,7 @@ loc_26D5E: bmi.s locret_26D72 move.w #$200,8(a0) moveq #signextendB(sfx_Hoverpad),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_26D72: rts @@ -52619,7 +52619,7 @@ loc_26DD8: loc_26DE0: move.l #Obj_LBZElevatorCupFlicker,(a0) moveq #signextendB(sfx_Death),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea $3C(a0),a2 lea (Player_1).w,a1 move.w #-$300,d0 @@ -53414,7 +53414,7 @@ loc_2769C: loc_276D0: moveq #signextendB(sfx_Collapse),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_275F2 ; --------------------------------------------------------------------------- @@ -56588,7 +56588,7 @@ loc_291A2: move.b #1,$2E(a1) move.b #1,(a2) moveq #signextendB(sfx_Switch),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_29214: rts @@ -56641,7 +56641,7 @@ loc_2927C: moveq #signextendB(sfx_MechaLand),d0 loc_292C0: - jsr (Play_Sound_2).l + jsr (Play_SFX).l bra.s loc_292DC ; --------------------------------------------------------------------------- @@ -56727,7 +56727,7 @@ loc_29386: move.b #$98,$28(a1) move.l #loc_29416,(a1) moveq #signextendB(sfx_EnergyZap),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_293CA: jmp (Delete_Sprite_If_Not_In_Range).l @@ -56835,7 +56835,7 @@ loc_294E8: andi.b #$1F,d0 bne.s locret_294FA moveq #signextendB(sfx_Alarm),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_294FA: rts @@ -56985,7 +56985,7 @@ Obj_AutoTunnelInit: clr.b 1(a4) bsr.w AutoTunnel_GetPath ; Get the first path of the tunnel moveq #signextendB(sfx_Roll),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l btst #5,$2C(a0) beq.s locret_296D2 tst.b (Current_act).w ; If bit 5 of object subtype is set and we're in an act 2 @@ -57036,7 +57036,7 @@ loc_2970A: loc_2972C: moveq #signextendB(sfx_TubeLauncher),d0 - jsr (Play_Sound_2).l ; Play that nifty little cannon shooting sound + jsr (Play_SFX).l ; Play that nifty little cannon shooting sound btst #5,$2C(a0) beq.s loc_29768 movea.l a1,a2 ; If bit 5 set (for LBZ2, again), make the waterfall @@ -57677,7 +57677,7 @@ LBZTubeElevator_WaitPlayer: loc_29E52: addq.b #2,(a4) moveq #signextendB(sfx_Roll),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bra.s LBZTubeElevator_StartSpin ; --------------------------------------------------------------------------- @@ -58122,7 +58122,7 @@ loc_2A2D6: tst.b 4(a0) bpl.s loc_2A300 moveq #signextendB(sfx_WaterfallSplash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_2A300: lea (Ani_AIZDisappearingFloor).l,a1 @@ -58737,7 +58737,7 @@ loc_2AAA8: andi.b #7,d0 bne.s locret_2AAC8 moveq #signextendB(sfx_GlideLand),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_2AAC8: rts @@ -58758,7 +58758,7 @@ loc_2AAD0: andi.b #7,d0 bne.s locret_2AAF0 moveq #signextendB(sfx_GlideLand),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_2AAF0: rts @@ -59226,7 +59226,7 @@ loc_2B05C: move.w #0,$18(a3) move.w #0,$1A(a3) moveq #signextendB(sfx_Collapse),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_2AFFE ; --------------------------------------------------------------------------- @@ -59325,7 +59325,7 @@ loc_2B26C: bne.s loc_2B2B0 move.b #1,$36(a0) moveq #signextendB(sfx_FlipBridge),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w #$68,d1 btst #0,$2A(a0) beq.s loc_2B294 @@ -59349,7 +59349,7 @@ loc_2B2B0: loc_2B2C4: move.b #0,$36(a0) moveq #signextendB(sfx_FlipBridge),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.l #loc_2B2E8,(a0) bra.s loc_2B2E2 ; --------------------------------------------------------------------------- @@ -59593,7 +59593,7 @@ loc_2B534: move.w #0,$18(a3) move.w #0,$1A(a3) moveq #signextendB(sfx_BridgeCollapse),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- byte_2B548: dc.b 8 dc.b $10 @@ -60611,7 +60611,7 @@ loc_2C612: tst.b (a3) bne.s loc_2C61E moveq #signextendB(sfx_Switch),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_2C61E: bset d3,(a3) @@ -60652,7 +60652,7 @@ loc_2C67C: tst.b (a3) bne.s loc_2C688 moveq #signextendB(sfx_Switch),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_2C688: bset d3,(a3) @@ -60696,7 +60696,7 @@ loc_2C704: tst.b (a3) bne.s loc_2C710 moveq #signextendB(sfx_Switch),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_2C710: bset d3,(a3) @@ -61430,7 +61430,7 @@ sub_2D028: cmpi.w #$68,d0 bhs.w locret_2D0E8 moveq #signextendB(sfx_Starpost),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l jsr (Create_New_Sprite).l bne.s loc_2D0D0 move.l #Obj_StarPost,(a1) @@ -62319,7 +62319,7 @@ LevelResults_Index: dc.w Obj_LevelResultsInit-LevelResults_Index Obj_LevelResultsInit: moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l ; Fade music + jsr (Play_Music).l ; Fade music lea (ArtKosM_ResultsGeneral).l,a1 move.w #$A400,d2 jsr (Queue_Kos_Module).l ; General art for @@ -62436,7 +62436,7 @@ Obj_LevelResultsWait: move.b #$1E,(Player_1+air_left).w ; Reset air for Hydrocity move.b #$1E,(Player_2+air_left).w moveq #signextendB(mus_GotThroughAct),d0 - jmp (Play_Sound).l ; Play level complete theme + jmp (Play_Music).l ; Play level complete theme ; --------------------------------------------------------------------------- loc_2DC5C: @@ -62461,7 +62461,7 @@ loc_2DC7E: andi.w #3,d0 bne.s locret_2DC9E moveq #signextendB(sfx_Switch),d0 ; Every four frames play the score countdown sound - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- locret_2DC9E: @@ -62470,7 +62470,7 @@ locret_2DC9E: loc_2DCA0: moveq #signextendB(sfx_Register),d0 ; Play the cash register sound - jsr (Play_Sound_2).l + jsr (Play_SFX).l cmpi.w #$A00,(Current_zone_and_act).w beq.s loc_2DCB6 tst.w $2C(a0) @@ -62815,7 +62815,7 @@ locret_2DF62: SpecialStage_Results: moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.b (Current_special_stage).w,d0 move.b d0,(Current_special_stage_2).w move.b (HPZ_current_special_stage).w,d1 @@ -63175,7 +63175,7 @@ loc_2E474: cmpi.w #$121,$2E(a0) bne.s locret_2E4C2 moveq #signextendB(mus_GotThroughAct),d0 - jmp (Play_Sound).l + jmp (Play_Music).l ; --------------------------------------------------------------------------- loc_2E484: @@ -63199,7 +63199,7 @@ loc_2E4A6: andi.w #3,d0 bne.s locret_2E4C2 moveq #signextendB(sfx_Switch),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- locret_2E4C2: @@ -63208,7 +63208,7 @@ locret_2E4C2: loc_2E4C4: moveq #signextendB(sfx_Register),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w #$78,$2E(a0) addq.b #2,5(a0) @@ -63229,7 +63229,7 @@ loc_2E4EA: move.l #loc_2EBE8,(a1) move.w #$10E,$2E(a0) moveq #signextendB(sfx_Continue),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_2E50E: addq.b #2,5(a0) @@ -63438,7 +63438,7 @@ loc_2E72E: clr.w $30(a0) addq.b #2,5(a0) moveq #signextendB(sfx_Signpost),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- locret_2E744: @@ -63451,7 +63451,7 @@ loc_2E746: bmi.s loc_2E75C st $30(a0) moveq #signextendB(sfx_SuperEmerald),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_2E75C: cmpi.b #7,(Super_emerald_count).w @@ -63502,7 +63502,7 @@ loc_2E7C6: move.w #$78,$2E(a0) addq.b #2,5(a0) moveq #signextendB(sfx_Signpost),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- locret_2E7D8: @@ -63762,7 +63762,7 @@ loc_2E9D8: bne.s locret_2E9F4 clr.b (_unkFAC1).w moveq #signextendB(sfx_Perfect),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- @@ -64623,7 +64623,7 @@ loc_2FBB2: bne.w locret_2FC7C jsr (Player_ResetAirTimer).l moveq #signextendB(sfx_Bubble),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l clr.w $18(a1) clr.w $1A(a1) clr.w $1C(a1) @@ -64803,7 +64803,7 @@ loc_2FF7C: blo.w loc_30006 move.l #loc_3003C,(a0) moveq #signextendB(sfx_Geyser),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea (byte_3000C).l,a3 move.w $10(a0),d2 addi.w #$60,d2 @@ -64914,9 +64914,9 @@ loc_300C8: bmi.s loc_30100 clr.b (Palette_cycle_counters+$00).w move.w #$FF00|mus_MutePSG,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w #$FF00|mus_StopSFX,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w #$96,$30(a0) move.l #loc_30106,(a0) rts @@ -65091,7 +65091,7 @@ loc_30346: move.b #$1A,(Player_2+anim).w move.l #loc_3041A,(a0) moveq #signextendB(sfx_Geyser),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b #1,(Palette_cycle_counters+$00).w lea (byte_303EA).l,a3 move.w $10(a0),d2 @@ -65236,11 +65236,11 @@ loc_3052A: tst.b 4(a0) bmi.s loc_3056E move.w #$FF00|mus_StopSFX,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w #$FF00|mus_MutePSG,d0 - jsr (Play_Sound_2).l ; this will actually never play... Why is any of this here? + jsr (Play_SFX).l ; this will actually never play... Why is any of this here? move.w #$FF00|mus_StopSFX,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b #0,(Palette_cycle_counters+$00).w move.w respawn_addr(a0),d0 beq.s loc_30560 @@ -65367,7 +65367,7 @@ loc_306F2: andi.b #$F,d0 bne.s loc_3070C moveq #signextendB(sfx_FanSmall),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_3070C: btst #6,$2C(a0) @@ -65479,7 +65479,7 @@ loc_30850: move.b #1,$42(a1) move.w #0,$34(a1) moveq #signextendB(sfx_FanLatch),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_3087E: move.w $3A(a0),d1 @@ -65497,7 +65497,7 @@ loc_3088E: move.b #0,$42(a1) move.b #0,$24(a1) moveq #signextendB(sfx_FanLatch),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_308AE: tst.w $30(a0) @@ -65564,7 +65564,7 @@ loc_30944: move.b #$20,6(a0) move.w #8,$30(a0) moveq #signextendB(sfx_FanLatch),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.l #loc_3097E,(a0) loc_3097E: @@ -65580,7 +65580,7 @@ loc_30994: andi.b #$F,d0 bne.s loc_309A6 moveq #signextendB(sfx_FanBig),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_309A6: subq.b #1,$24(a0) @@ -65782,7 +65782,7 @@ loc_30C16: move.b #0,$34(a0) move.l #loc_30B58,(a0) moveq #signextendB(sfx_Dash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bra.s loc_30C50 ; --------------------------------------------------------------------------- @@ -65917,7 +65917,7 @@ loc_30D6E: bne.s locret_30DEA bset d6,$35(a0) moveq #signextendB(sfx_Roll),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b #0,$20(a1) move.b #$13,$1E(a1) move.b #9,$1F(a1) @@ -66046,7 +66046,7 @@ loc_30EBA: moveq #signextendB(sfx_FanLatch),d0 ; this check and sfx selection is not really necessary? loc_30F02: - jsr (Play_Sound_2).l + jsr (Play_SFX).l bra.s loc_30F28 ; --------------------------------------------------------------------------- @@ -66061,7 +66061,7 @@ loc_30F0A: moveq #signextendB(sfx_FanLatch),d0 ; this check and sfx selection is not really necessary? loc_30F22: - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_30F28: move.w $32(a0),d0 @@ -66836,7 +66836,7 @@ loc_31808: tst.b $34(a0) bne.s locret_3181C moveq #signextendB(sfx_Balloon),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b #1,$34(a0) locret_3181C: @@ -66934,7 +66934,7 @@ loc_31944: andi.b #$1F,d0 bne.s locret_31972 moveq #signextendB(sfx_CannonTurn),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_31972: rts @@ -67206,7 +67206,7 @@ loc_31C86: subi.w #$80,$1A(a0) move.b #0,$30(a0) moveq #signextendB(sfx_BalloonPlatform),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_31C0A ; --------------------------------------------------------------------------- @@ -67249,7 +67249,7 @@ sub_31CFA: bhs.s locret_31D2C move.b #1,$20(a0) moveq #signextendB(sfx_TrapDoor),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_31D2C: rts @@ -67349,7 +67349,7 @@ loc_31E36: andi.b #$1F,d0 bne.s loc_31E5E moveq #signextendB(sfx_Hoverpad),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_31E5E: move.w $30(a0),d0 @@ -67368,7 +67368,7 @@ loc_31E68: andi.b #$1F,d0 bne.s loc_31E90 moveq #signextendB(sfx_Hoverpad),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_31E90: jmp (Delete_Sprite_If_Not_In_Range).l @@ -67494,7 +67494,7 @@ loc_31FD2: move.w $36(a0),d0 bne.s loc_31FE8 moveq #signextendB(sfx_TunnelBooster),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_31FE8: addq.w #1,$36(a0) @@ -67543,7 +67543,7 @@ sub_32010: move.b $34(a0),2(a2) move.w d0,-(sp) moveq #signextendB(sfx_Transporter),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w (sp)+,d0 loc_3206A: @@ -68514,7 +68514,7 @@ loc_32A5A: bclr #4,$2A(a1) bclr #5,$2A(a1) moveq #signextendB(sfx_SmallBumpers),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_329B8 ; --------------------------------------------------------------------------- @@ -68837,7 +68837,7 @@ loc_32DD2: bclr #5,$2A(a1) bclr #4,$2A(a1) moveq #signextendB(sfx_SmallBumpers),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_32D16 ; --------------------------------------------------------------------------- @@ -68991,7 +68991,7 @@ sub_32F56: clr.b $40(a1) move.b #1,$20(a0) moveq #signextendB(sfx_Bumper),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w respawn_addr(a0),d0 beq.s loc_32FC4 movea.w d0,a2 @@ -69059,7 +69059,7 @@ sub_3301C: clr.b $40(a1) move.b #1,$20(a0) moveq #signextendB(sfx_SmallBumpers),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; End of function sub_3301C @@ -69145,7 +69145,7 @@ loc_33174: move.w d1,$10(a1) move.w $14(a0),$14(a1) move.w #sfx_Roll,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_3318C: rts @@ -69888,7 +69888,7 @@ loc_3385E: cmp.w d1,d0 bhs.s loc_338BE moveq #signextendB(sfx_WaveHover),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_338BE: jmp (Delete_Sprite_If_Not_In_Range).l @@ -70645,7 +70645,7 @@ loc_341BC: andi.b #$40,d0 beq.s loc_341F0 moveq #signextendB(sfx_SpikeBalls),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_341F0: move.w $30(a0),d0 @@ -70676,7 +70676,7 @@ loc_34216: andi.b #$40,d0 beq.s loc_3423E moveq #signextendB(sfx_SpikeBalls),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_3423E: jmp (loc_1B662).l @@ -70855,7 +70855,7 @@ loc_34432: loc_34474: moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_3447C: lea (Ani_MGZHeadTrigger).l,a1 @@ -70887,7 +70887,7 @@ loc_3447C: loc_3450A: moveq #signextendB(sfx_LevelProjectile),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_34512: jmp (loc_1B662).l @@ -71392,7 +71392,7 @@ loc_34B0E: move.w #$10,$34(a0) move.b #1,(a2) moveq #signextendB(sfx_PulleyGrab),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_34B20: rts @@ -71874,7 +71874,7 @@ loc_34FBC: move.b #2,$20(a1) bset #2,$2A(a1) move.w #sfx_Jump,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_3500A: bclr #0,$2E(a1) @@ -72420,7 +72420,7 @@ loc_3559E: move.b #$D,$20(a0) bclr #0,$2A(a0) move.w #sfx_Skid,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l movea.l a0,a2 suba.w #Player_1,a2 adda.w #Dust,a2 @@ -72474,7 +72474,7 @@ loc_35620: move.b #$D,$20(a0) bset #0,$2A(a0) move.w #sfx_Skid,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l movea.l a0,a2 suba.w #Player_1,a2 adda.w #Dust,a2 @@ -73125,7 +73125,7 @@ loc_35E2E: bclr #5,$2A(a1) clr.b $40(a1) moveq #signextendB(sfx_SmallBumpers),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_35DDE ; --------------------------------------------------------------------------- @@ -73258,7 +73258,7 @@ loc_36310: tst.b (a3) bne.s loc_36322 moveq #signextendB(sfx_Switch),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b #0,$24(a0) loc_36322: @@ -73670,7 +73670,7 @@ loc_3676A: loc_367BA: moveq #signextendB(sfx_SmallBumpers),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_3675E ; --------------------------------------------------------------------------- @@ -74157,7 +74157,7 @@ loc_36E9C: loc_36EF2: moveq #signextendB(sfx_Error),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- locret_36EFA: @@ -74379,7 +74379,7 @@ loc_3716C: bne.s loc_371AE loc_371A8: - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_371AE: bsr.s sub_371BE @@ -74451,7 +74451,7 @@ loc_37256: move.b #$80,(Update_HUD_timer).w jsr sub_37430(pc) moveq #signextendB(sfx_Goal),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b (Competition_total_laps).w,d0 cmp.b (Competition_current_lap_2P).w,d0 bhs.s loc_3728C @@ -74482,7 +74482,7 @@ loc_372BC: move.b #$80,(_unkFEC7).w bsr.w sub_37406 moveq #signextendB(sfx_Goal),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_372CE: rts @@ -74590,7 +74590,7 @@ loc_373A4: move.b #-$80,(Update_HUD_timer).w move.w #$78,(Events_bg+$16).w moveq #signextendB(sfx_Goal),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_373D4: move.b (Competition_total_laps).w,d0 @@ -74603,7 +74603,7 @@ loc_373D4: move.b #-$80,(_unkFEC7).w move.w #$78,(Events_bg+$16).w moveq #signextendB(sfx_Goal),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_37404: rts @@ -75336,7 +75336,7 @@ loc_384B2: andi.b #$F,d0 bne.s loc_384DA moveq #signextendB(sfx_WaterSkid),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_384DA: subq.b #1,$24(a0) @@ -75890,7 +75890,7 @@ loc_38A64: move.w #0,$18(a3) move.w #0,$1A(a3) moveq #signextendB(sfx_BridgeCollapse),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_389DE ; --------------------------------------------------------------------------- @@ -76817,7 +76817,7 @@ loc_39502: andi.b #$F,d0 bne.s loc_39514 moveq #signextendB(sfx_SlideSkidQuiet),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_39514: cmpi.w #$1310,$10(a2) @@ -76868,7 +76868,7 @@ loc_39586: move.b #0,$2E(a2) move.w #$14,(Screen_shake_flag).w moveq #signextendB(sfx_Crash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w #2,(Tails_CPU_routine).w loc_395CC: @@ -76884,7 +76884,7 @@ loc_395CC: loc_395EA: moveq #signextendB(sfx_GroundSlide),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_395F2: jsr (sub_3968E).l @@ -76922,7 +76922,7 @@ loc_39658: cmp.b $32(a0),d0 beq.s loc_3966A moveq #signextendB(sfx_GroundSlide),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_3966A: jsr (sub_3968E).l @@ -77291,7 +77291,7 @@ loc_39AD2: loc_39B22: moveq #signextendB(sfx_SandSplash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b #0,(Ctrl_1_locked).w move.b #0,(Ctrl_2_locked).w jmp (Delete_Current_Sprite).l @@ -77373,7 +77373,7 @@ loc_39BEE: move.w d0,(Camera_target_min_Y_pos).w move.w d0,(Camera_min_Y_pos_P2).w moveq #signextendB(sfx_Crash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- @@ -77544,7 +77544,7 @@ loc_39E08: loc_39E18: moveq #signextendB(sfx_Collapse),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- word_39E20: dc.w $15 dc.b $E0, 4, 7, $24 @@ -78491,7 +78491,7 @@ loc_3AA18: move.b #1,$2E(a1) move.b #1,(a2) moveq #signextendB(sfx_Grab),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_3AA58: rts @@ -78616,7 +78616,7 @@ loc_3ABBE: cmpi.b #2,d1 bne.s loc_3ABE4 moveq #signextendB(sfx_Grab),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_3ABE4: subq.w #1,d1 @@ -78760,7 +78760,7 @@ loc_3AD10: jsr (Perform_Player_DPLC).l movea.l (sp)+,a2 moveq #signextendB(sfx_Grab),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_3AD88: rts @@ -78864,7 +78864,7 @@ loc_3B214: tst.b 4(a0) bpl.s loc_3B22C moveq #signextendB(sfx_MagneticSpike),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_3B22C: jmp (Sprite_OnScreen_Test).l @@ -78973,7 +78973,7 @@ loc_3B3FA: move.w #0,$1A(a0) move.l #loc_3B450,(a0) moveq #signextendB(sfx_ChainTension),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bra.s loc_3B450 ; --------------------------------------------------------------------------- @@ -79441,7 +79441,7 @@ loc_3BA1E: move.b #$C,$30(a0) move.b #4,$31(a0) moveq #signextendB(sfx_FloorLauncher),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_3BA48: rts @@ -79619,7 +79619,7 @@ loc_3BC72: beq.s loc_3BCF2 move.l #loc_3BC92,(a0) moveq #signextendB(sfx_DoorOpen),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_3BC92: addq.b #1,$2E(a0) @@ -80167,7 +80167,7 @@ loc_3C552: move.l d0,$36(a1) addq.b #2,$23(a0) moveq #signextendB(sfx_LevelProjectile),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_3C5F4: subq.b #1,$34(a0) @@ -80222,7 +80222,7 @@ loc_3C67C: move.w #$7F00,$10(a0) move.w $10(a0),$44(a0) moveq #signextendB(sfx_TubeLauncher),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_3C694: moveq #0,d1 @@ -80311,7 +80311,7 @@ loc_3C768: clr.b $28(a0) clr.b $29(a0) moveq #signextendB(sfx_Explode),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l jmp (Obj_Explosion).l ; --------------------------------------------------------------------------- Map_FBZMissileLauncher:include "Levels/FBZ/Misc Object Data/Map - Missile Launcher.asm" @@ -80357,7 +80357,7 @@ loc_3C828: loc_3C894: moveq #signextendB(sfx_LevelProjectile),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_3C89C: move.l #loc_3C8B6,(a0) @@ -80464,7 +80464,7 @@ loc_3C9E4: clr.b $28(a0) clr.b $29(a0) moveq #signextendB(sfx_Explode),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l jmp (Obj_Explosion).l ; --------------------------------------------------------------------------- Map_FBZMine: include "Levels/FBZ/Misc Object Data/Map - Mine.asm" @@ -80611,7 +80611,7 @@ loc_3CC34: loc_3CC44: moveq #signextendB(sfx_Spring),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_3CBCE ; --------------------------------------------------------------------------- @@ -80686,7 +80686,7 @@ loc_3CD4C: tst.b 4(a0) bpl.s loc_3CD6E moveq #signextendB(sfx_FlamethrowerLoud),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_3CD6E: tst.b 4(a0) @@ -80725,7 +80725,7 @@ loc_3CDD0: andi.b #$F,d1 bne.s loc_3CDEC moveq #signextendB(sfx_FlamethrowerLoud),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_3CDEC: tst.b 4(a0) @@ -81223,7 +81223,7 @@ loc_3D5C4: move.b d1,$2E(a0) clr.b $2F(a0) moveq #signextendB(sfx_Clank),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l tst.b $32(a0) beq.w loc_3D730 clr.b $32(a0) @@ -81344,7 +81344,7 @@ loc_3D6C4: sub.w d2,d0 move.w d0,$1A(a2) moveq #signextendB(sfx_Jump),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_3D730: jmp (Draw_Sprite).l @@ -82279,7 +82279,7 @@ MHZMushroomCap_BounceCharacter: move.b #$10,anim(a1) ; Set character to 'spring-jumping' animation move.b #2,routine(a1) moveq #signextendB(sfx_MushroomBounce),d0 - jmp (Play_Sound_2).l ; Play bounce sound + jmp (Play_SFX).l ; Play bounce sound .return: rts @@ -82614,7 +82614,7 @@ loc_3E5CC: move.b d1,1(a4) move.w d0,d1 moveq #signextendB(sfx_RingRight),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w d1,d0 loc_3E5E0: @@ -82665,7 +82665,7 @@ loc_3E632: tst.b $2C(a3) beq.s loc_3E646 moveq #signextendB(sfx_PulleyMove),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_3E646: move.w $10(a0),$10(a1) @@ -82729,7 +82729,7 @@ loc_3E690: move.b #1,(a2) move.b #-$70,d1 moveq #signextendB(sfx_Grab),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bra.w loc_3E658 ; --------------------------------------------------------------------------- @@ -83440,7 +83440,7 @@ loc_3EF9C: jsr (Perform_Player_DPLC).l movea.l (sp)+,a2 moveq #signextendB(sfx_Grab),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_3EFB8: rts @@ -83731,7 +83731,7 @@ loc_3F346: jsr (Perform_Player_DPLC).l movea.l (sp)+,a2 moveq #signextendB(sfx_Grab),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_3F35E: rts @@ -84030,7 +84030,7 @@ loc_3F70C: move.w $18(a0),$18(a1) move.w $1A(a0),$1A(a1) moveq #signextendB(sfx_Grab),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bra.w loc_3F6A6 ; --------------------------------------------------------------------------- @@ -84305,7 +84305,7 @@ loc_3FA66: move.b #$10,$20(a2) move.b #2,5(a2) moveq #signextendB(sfx_MushroomBounce),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_3FA5A ; --------------------------------------------------------------------------- @@ -84336,7 +84336,7 @@ loc_3FAC2: bne.s loc_3FB06 move.l #loc_3FB0C,(a0) moveq #signextendB(sfx_Flipper),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w #$18,$36(a1) move.w #-$800,$1A(a0) tst.w $3A(a1) @@ -84430,7 +84430,7 @@ loc_3FC0E: andi.b #$F,d0 bne.s loc_3FC4A moveq #signextendB(sfx_WindQuiet),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_3FC4A: tst.b $2C(a0) @@ -84599,7 +84599,7 @@ loc_3FE04: beq.s loc_3FE18 move.w #-$800,$1A(a1) moveq #signextendB(sfx_Jump),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_3FE18: tst.w $1A(a1) @@ -84715,7 +84715,7 @@ loc_3FF3C: bclr #3,$2A(a1) bclr d6,$2A(a0) moveq #signextendB(sfx_Jump),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -84953,7 +84953,7 @@ loc_4020A: move.b #0,double_jump_flag(a1) move.b #1,$40(a1) moveq #signextendB(sfx_Jump),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -85301,7 +85301,7 @@ loc_40654: andi.b #$1F,d0 bne.s loc_40672 moveq #signextendB(sfx_BlockConveyor),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_40672: tst.w $18(a0) @@ -85425,7 +85425,7 @@ loc_4075E: sub_4076E: moveq #signextendB(sfx_PushBlock),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_4076E ; --------------------------------------------------------------------------- @@ -85672,7 +85672,7 @@ loc_409DE: move.b #2,5(a1) move.b #0,double_jump_flag(a1) moveq #signextendB(sfx_Spring),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_4093E @@ -85811,7 +85811,7 @@ sub_40B62: move.w #0,(a2)+ move.b #3,$24(a0) moveq #signextendB(sfx_SandwallRise),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.l #loc_40BCA,(a0) locret_40BC8: @@ -85878,7 +85878,7 @@ loc_40C66: loc_40C80: moveq #signextendB(sfx_SandSplash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.l #loc_40CEC,(a0) move.b #5,$24(a0) move.b #1,$22(a0) @@ -86102,7 +86102,7 @@ loc_4101C: move.b #1,$2E(a1) move.b #1,(a2) moveq #signextendB(sfx_Switch),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_4108E: rts @@ -86596,7 +86596,7 @@ loc_417DE: loc_417F6: andi.b #-$19,$2A(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.l #loc_4180A,(a0) loc_4180A: @@ -86770,7 +86770,7 @@ sub_419FA: bne.s loc_41A34 subq.w #1,$10(a1) moveq #signextendB(sfx_PushBlock),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_41A34: moveq #1,d5 @@ -86790,7 +86790,7 @@ loc_41A38: bne.s loc_41A34 addq.w #1,$10(a1) moveq #signextendB(sfx_PushBlock),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l moveq #1,d5 locret_41A6A: @@ -86821,7 +86821,7 @@ loc_41A82: moveq #signextendB(sfx_DoorMove),d0 loc_41A9E: - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_41AA4: moveq #1,d4 @@ -87077,7 +87077,7 @@ loc_41D82: addq.b #1,$22(a0) move.w #0,8(a0) moveq #signextendB(sfx_Collapse),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l jsr (loc_216BE).l jsr (MoveSprite2).l addi.w #$18,$1A(a0) @@ -87159,7 +87159,7 @@ loc_41E78: tst.b 4(a0) bpl.s loc_41E90 moveq #signextendB(sfx_SlideSkidQuiet),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_41E90: jmp (Sprite_OnScreen_Test).l @@ -87265,7 +87265,7 @@ loc_42062: bne.s loc_42080 bsr.w loc_42180 moveq #signextendB(sfx_SandSplash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea (Player_2).w,a2 tst.l (a2) beq.s loc_42080 @@ -87348,7 +87348,7 @@ loc_420FC: loc_4213C: moveq #signextendB(sfx_SandSplash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b #0,(Ctrl_1_locked).w move.b #0,(Ctrl_2_locked).w jmp (Delete_Current_Sprite).l @@ -87926,7 +87926,7 @@ loc_428D6: move.b #0,$28(a0) move.l #loc_42904,(a0) moveq #signextendB(sfx_BossProjectile),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_428FE: jmp (loc_1B662).l @@ -87969,7 +87969,7 @@ loc_42974: beq.s loc_429BC move.l #loc_42994,(a0) moveq #signextendB(sfx_DoorOpen),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_42994: addq.b #1,$2E(a0) @@ -88034,7 +88034,7 @@ loc_42A68: move.l #loc_42AAE,(a0) move.w #-1,(Screen_shake_flag).w moveq #signextendB(sfx_BigRumble),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w respawn_addr(a0),d0 beq.s loc_42AAE movea.w d0,a2 @@ -88057,7 +88057,7 @@ loc_42AC6: andi.b #$F,d0 bne.s loc_42AEC moveq #signextendB(sfx_BigRumble),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_42AEC: move.w #$3B,d1 @@ -88122,7 +88122,7 @@ loc_42BF6: loc_42C72: moveq #signextendB(sfx_LevelProjectile),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_42C7A: jmp (Sprite_OnScreen_Test).l @@ -88195,7 +88195,7 @@ loc_42D62: tst.b (a3) bne.s loc_42D6E moveq #signextendB(sfx_Switch),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_42D6E: bset d3,(a3) @@ -88250,7 +88250,7 @@ loc_42E00: loc_42E7C: moveq #signextendB(sfx_Projectile),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_42E84: move.b $29(a0),d0 @@ -88389,7 +88389,7 @@ loc_42FEE: andi.b #$F,d0 bne.s loc_43000 moveq #signextendB(sfx_ConveyorPlatform),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_43000: move.w #$2B,d1 @@ -88499,7 +88499,7 @@ loc_43128: tst.b 4(a0) bpl.s loc_431E0 moveq #signextendB(sfx_Crash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bra.s loc_431E0 ; --------------------------------------------------------------------------- @@ -88528,7 +88528,7 @@ loc_431AA: andi.b #$1F,d0 bne.s loc_431E0 moveq #signextendB(sfx_Blast),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bra.s loc_431E0 ; --------------------------------------------------------------------------- @@ -88747,7 +88747,7 @@ loc_4374C: andi.b #$F,d0 bne.s loc_43764 moveq #signextendB(sfx_LavaFall),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_43764: subq.w #1,$2E(a0) @@ -88861,7 +88861,7 @@ loc_438CC: andi.b #$F,d0 bne.s loc_438FA moveq #signextendB(sfx_MechaLand),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_438FA: subi.w #4,$18(a0) @@ -88930,7 +88930,7 @@ loc_439A4: andi.b #$F,d0 bne.s loc_439BC moveq #signextendB(sfx_MechaLand),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_439BC: bsr.w sub_439EC @@ -89200,7 +89200,7 @@ loc_43DF8: move.w #$78,$30(a0) move.b #0,$2F(a0) moveq #signextendB(sfx_FlamethrowerLoud),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_43E14: subq.b #1,$24(a0) @@ -89219,7 +89219,7 @@ loc_43E2A: cmpi.w #$1E,$30(a0) blo.s loc_43E4E moveq #signextendB(sfx_FlamethrowerLoud),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_43E4E: move.b $26(a0),d0 @@ -89284,7 +89284,7 @@ loc_43F2E: move.w #$78,$30(a0) move.b #0,$2F(a0) moveq #signextendB(sfx_FlamethrowerLoud),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_43F4A: subq.b #1,$24(a0) @@ -89303,7 +89303,7 @@ loc_43F60: cmpi.w #$1E,$30(a0) blo.s loc_43F84 moveq #signextendB(sfx_FlamethrowerLoud),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_43F84: move.b $26(a0),d0 @@ -89432,7 +89432,7 @@ loc_44176: beq.s loc_441D6 move.l #loc_441D2,(a0) moveq #signextendB(sfx_DoorOpen),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w respawn_addr(a0),d0 beq.s loc_441A4 movea.w d0,a2 @@ -89450,7 +89450,7 @@ loc_441A6: bpl.s loc_441D6 move.l #loc_441D2,(a0) moveq #signextendB(sfx_DoorOpen),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w respawn_addr(a0),d0 beq.s loc_441D2 movea.w d0,a2 @@ -89576,7 +89576,7 @@ loc_442F2: andi.b #$F,d0 bne.s loc_44332 moveq #signextendB(sfx_FanBig),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_44332: jmp (Sprite_OnScreen_Test).l @@ -89805,7 +89805,7 @@ loc_448A8: tst.b 4(a0) bpl.s loc_448FA moveq #signextendB(sfx_Charging),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bra.s loc_448FA ; --------------------------------------------------------------------------- @@ -89813,7 +89813,7 @@ loc_448D4: tst.b 4(a0) bpl.s loc_448E2 moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_448E2: movea.w $3C(a0),a1 @@ -89970,7 +89970,7 @@ loc_44B50: loc_44B7E: moveq #signextendB(sfx_Collapse),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l clr.b $22(a0) move.l #loc_44B90,(a0) @@ -90353,7 +90353,7 @@ loc_44FA2: cmpi.w #$68,d1 bne.s loc_44FBA moveq #signextendB(sfx_DoorOpen),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_44FBA: subq.w #2,d1 @@ -90554,7 +90554,7 @@ loc_451C2: loc_451DC: moveq #signextendB(sfx_Bouncy),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w 2(a2),$18(a1) move.w 4(a2),$1C(a1) move.w #-$700,$1A(a1) @@ -90775,7 +90775,7 @@ loc_45400: tst.w (Debug_placement_mode).w bne.w locret_45526 moveq #signextendB(sfx_Grab),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l st (a2) move.w $14(a0),$14(a1) add.w d1,$14(a1) @@ -90841,7 +90841,7 @@ loc_454EA: move.b #2,$20(a1) bset #2,$2A(a1) moveq #signextendB(sfx_Jump),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_45526: rts @@ -90989,7 +90989,7 @@ loc_45660: move.l #loc_456F4,(a0) move.w #-$100,$38(a0) moveq #signextendB(sfx_Charging),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_456EE: jmp (Sprite_OnScreen_Test).l @@ -91049,7 +91049,7 @@ loc_4577E: loc_45790: clr.b (Events_bg+$05).w moveq #signextendB(sfx_Transporter),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l st (Scroll_lock).w bra.s loc_457B8 ; --------------------------------------------------------------------------- @@ -91382,7 +91382,7 @@ loc_45AD6: move.l #loc_45B1C,(a0) move.w #-$100,$38(a0) moveq #signextendB(sfx_Charging),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_45B16: jmp (Draw_Sprite).l @@ -91417,7 +91417,7 @@ loc_45B66: loc_45B6C: clr.l (a1) moveq #signextendB(sfx_Transporter),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.l #loc_45B8A,(a0) bra.s loc_45B84 ; --------------------------------------------------------------------------- @@ -91442,7 +91442,7 @@ loc_45B94: cmpi.w #$B00,(Player_1+x_pos).w blo.s locret_45BF2 moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l st (SRAM_mask_interrupts_flag).w jsr (SaveGame).l move.w #$A01,d0 @@ -91609,7 +91609,7 @@ loc_45D2E: clr.b $22(a1) clr.w (a2) moveq #signextendB(sfx_Transporter),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l tst.w d6 beq.s loc_45D6E st (a4) @@ -91636,7 +91636,7 @@ loc_45D8A: subq.b #1,2(a4) bne.s locret_45DAC moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l st (SRAM_mask_interrupts_flag).w jsr (SaveGame).l move.w #$A00,d0 @@ -91748,7 +91748,7 @@ loc_45E90: move.b #$E,$1E(a1) move.b #7,$1F(a1) moveq #signextendB(sfx_Jump),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- loc_45EEE: @@ -91882,7 +91882,7 @@ loc_45FE4: move.b #$E,$1E(a1) move.b #7,$1F(a1) moveq #signextendB(sfx_Jump),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- loc_46042: @@ -92159,7 +92159,7 @@ locret_46348: loc_4634A: moveq #signextendB(sfx_Roll),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l st (a3) move.b #1,$2E(a1) clr.w $1A(a1) @@ -92205,7 +92205,7 @@ loc_463EC: move.w d0,$18(a1) move.w d0,$1C(a1) moveq #signextendB(sfx_Dash),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- loc_463FC: @@ -92218,7 +92218,7 @@ loc_463FC: bset #1,$2A(a1) move.b #1,$40(a1) moveq #signextendB(sfx_Jump),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_46424: rts @@ -92275,7 +92275,7 @@ loc_464AE: tst.b d1 bne.s loc_464C0 moveq #signextendB(sfx_SpringLatch),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_464C0: addq.b #1,d1 @@ -92378,7 +92378,7 @@ loc_46586: move.b #3,$22(a0) addq.b #1,(a2) moveq #signextendB(sfx_Spring),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- loc_465B2: @@ -92858,7 +92858,7 @@ loc_470D2: andi.b #$F,d0 bne.s locret_470F6 moveq #signextendB(sfx_Rising),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_470F6: rts @@ -92899,7 +92899,7 @@ loc_47104: move.b #1,$2E(a1) move.b #1,(a2) moveq #signextendB(sfx_Switch),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_4717C: rts @@ -92950,7 +92950,7 @@ loc_471D6: loc_4724A: moveq #signextendB(sfx_ChainTension),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_47252: move.l #loc_4726C,(a0) @@ -93177,7 +93177,7 @@ loc_47592: bne.w loc_4760E move.b #1,$31(a0) moveq #signextendB(sfx_GravityLift),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_475B6: tst.b $30(a0) @@ -93327,7 +93327,7 @@ loc_47762: bne.s locret_47760 addq.b #1,$2C(a0) moveq #signextendB(sfx_FanBig),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- loc_47774: @@ -93347,7 +93347,7 @@ loc_4778C: bne.s loc_4779E addq.b #1,$2C(a0) moveq #signextendB(sfx_FanBig),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- loc_4779E: @@ -93478,7 +93478,7 @@ loc_478BE: tst.b 4(a0) bpl.s loc_478CC moveq #signextendB(sfx_Lightning),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_478CC: moveq #0,d0 @@ -93574,7 +93574,7 @@ loc_47A14: andi.b #$F,d0 bne.s loc_47A38 moveq #signextendB(sfx_ConveyorPlatform),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_47A38: bsr.w sub_47A88 @@ -93691,7 +93691,7 @@ loc_47B12: andi.b #$F,d0 bne.s loc_47B52 moveq #signextendB(sfx_ConveyorPlatform),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_47B52: jmp (Sprite_OnScreen_Test).l @@ -93867,7 +93867,7 @@ loc_47EBE: andi.b #7,d0 bne.s loc_47EE2 moveq #signextendB(sfx_EnergyZap),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_47EE2: jmp (Sprite_OnScreen_Test).l @@ -93940,7 +93940,7 @@ loc_47F62: andi.b #7,d0 bne.s loc_47F96 moveq #signextendB(sfx_EnergyZap),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_47F96: jmp (Sprite_OnScreen_Test).l @@ -94016,7 +94016,7 @@ loc_480D4: tst.w $34(a0) bne.s loc_480FC moveq #signextendB(sfx_SpringLatch),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_480FC: addq.w #8,$34(a0) @@ -94032,7 +94032,7 @@ loc_48102: cmp.w $34(a0),d1 bne.s loc_48120 moveq #signextendB(sfx_SpringLatch),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_48120: subq.w #8,$34(a0) @@ -94137,7 +94137,7 @@ Obj_DEZTunnelLauncher_Main: moveq #signextendB(sfx_LaunchReady),d0 loc_482B2: - jsr (Play_Sound_2).l + jsr (Play_SFX).l cmpi.b #7,$2F(a0) bne.s loc_482F4 jsr (Create_New_Sprite3).l @@ -94233,13 +94233,13 @@ sub_48370: tst.b $2F(a0) bne.s locret_48422 moveq #signextendB(sfx_LaunchGrab),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l cmpa.w #Player_1,a1 bne.s loc_48410 move.w #$3C0A,$2E(a0) move.b #$A,sub2_mapframe(a0) moveq #signextendB(sfx_LaunchReady),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l tst.b mapping_frame(a0) bne.s locret_4840E move.b #7,mapping_frame(a0) @@ -94661,7 +94661,7 @@ DEZTransRing_NormalAnim: loc_4888E: moveq #signextendB(sfx_LightTunnel),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_48896: tst.b object_control(a0) @@ -94728,7 +94728,7 @@ loc_48B16: move.w #$28,d3 bsr.s sub_48B40 moveq #signextendB(sfx_Transporter),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_48B3A: jmp (Sprite_OnScreen_Test).l @@ -94918,7 +94918,7 @@ loc_48D58: move.w d0,$1A(a1) addq.b #2,(a4) moveq #signextendB(sfx_SuperTransform),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_48D66: move.w 2(a4),d0 @@ -95214,7 +95214,7 @@ loc_49056: andi.b #$F,d0 bne.s locret_49068 moveq #signextendB(sfx_GravityTunnel),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_49068: rts @@ -95335,7 +95335,7 @@ loc_49194: andi.b #$F,d0 bne.s loc_491CE moveq #signextendB(sfx_GravityTunnel),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_491CE: moveq #0,d0 @@ -95509,7 +95509,7 @@ loc_4939C: andi.b #$F,d0 bne.s loc_493AE moveq #signextendB(sfx_GravityTunnel),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_493AE: moveq #0,d2 @@ -95672,7 +95672,7 @@ loc_49578: andi.b #$F,d0 bne.s loc_495B8 moveq #signextendB(sfx_MagneticSpike),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_495B8: tst.b $27(a1) @@ -95827,7 +95827,7 @@ loc_49730: andi.b #$F,d0 bne.s locret_49764 moveq #signextendB(sfx_TurbineHum),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_49764: rts @@ -95924,7 +95924,7 @@ loc_49842: sub_49848: moveq #signextendB(sfx_Bumper),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_49850: bclr #0,$2A(a1) @@ -96067,7 +96067,7 @@ loc_499FC: sub_49A02: moveq #signextendB(sfx_TunnelBooster),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bra.w loc_49850 ; End of function sub_49A02 @@ -96213,7 +96213,7 @@ loc_49B70: sub_49B76: moveq #signextendB(sfx_Bumper),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bclr #0,$2A(a1) move.w #$800,$18(a1) move.w $10(a1),d0 @@ -96389,7 +96389,7 @@ loc_49DBC: move.b #0,$2E(a1) move.b #0,(a3) moveq #signextendB(sfx_Flipper),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_49D72 ; --------------------------------------------------------------------------- @@ -96520,7 +96520,7 @@ loc_49FAE: andi.b #$3F,d0 bne.s loc_49FD6 moveq #signextendB(sfx_Transporter),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_49FD6: bsr.s sub_49FE4 @@ -96552,7 +96552,7 @@ loc_49FFC: tst.b $2E(a1) bne.s loc_4A024 moveq #signextendB(sfx_Bouncy),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_4A024: move.b #-$7F,$2E(a1) @@ -96677,7 +96677,7 @@ loc_4A238: bne.s loc_4A274 clr.b $22(a0) moveq #signextendB(sfx_BlueSphere),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b $14(a0),d1 andi.w #$F,d1 lsl.w #2,d1 @@ -96799,7 +96799,7 @@ sub_4A384: loc_4A3AC: moveq #signextendB(sfx_SmallBumpers),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -96878,7 +96878,7 @@ loc_4A464: andi.b #$F,d0 bne.s locret_4A4A2 moveq #signextendB(sfx_WaveHover),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_4A4A2: rts @@ -97141,7 +97141,7 @@ loc_4A798: andi.b #$F,d0 bne.s loc_4A7B0 moveq #signextendB(sfx_ChainTick),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_4A7B0: move.w $34(a0),d0 @@ -97354,7 +97354,7 @@ loc_4AAA4: cmpi.w #$C0,$32(a0) bne.s loc_4AAC4 moveq #signextendB(sfx_GlideLand),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.l #loc_4AAC8,(a0) move.w #1,$2E(a0) @@ -97373,7 +97373,7 @@ loc_4AAD8: andi.w #$70,d0 beq.w loc_4AB6A moveq #signextendB(sfx_Jump),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b $2C(a0),d1 andi.w #$F0,d1 bne.s loc_4AB16 @@ -97424,7 +97424,7 @@ loc_4AB7E: subq.w #1,$30(a0) bpl.s loc_4AB9A moveq #signextendB(sfx_GlideLand),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.l #loc_4AAC8,(a0) loc_4AB9A: @@ -97476,7 +97476,7 @@ loc_4AC02: bpl.s loc_4AC24 move.w #0,$18(a0) moveq #signextendB(sfx_GlideLand),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.l #loc_4AAC8,(a0) loc_4AC24: @@ -97855,7 +97855,7 @@ loc_4AFF6: move.b #2,$20(a1) bset #2,$2A(a1) moveq #signextendB(sfx_Jump),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -97977,7 +97977,7 @@ loc_4B13E: or.b d0,$2A(a1) move.b #1,(a2) moveq #signextendB(sfx_Grab),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_4B1CE: rts @@ -98761,7 +98761,7 @@ sub_4BBB2: move.w d0,$1A(a0) bset #1,$2A(a0) moveq #signextendB(sfx_Jump),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_4BBF2: rts @@ -99008,7 +99008,7 @@ loc_4BE10: bne.s loc_4BE32 addq.b #1,(Continue_count).w moveq #signextendB(sfx_Continue),d0 - jsr (Play_Sound).l + jsr (Play_Music).l loc_4BE32: moveq #0,d4 @@ -99073,7 +99073,7 @@ loc_4BE5A: loc_4BEC8: moveq #signextendB(sfx_Bumper),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- loc_4BED0: @@ -99081,7 +99081,7 @@ loc_4BED0: bne.s loc_4BEE4 addq.b #2,5(a0) moveq #signextendB(sfx_Goal),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -99101,7 +99101,7 @@ loc_4BEE4: loc_4BF0C: neg.w (SStage_scalar_index_1).w moveq #signextendB(sfx_LaunchGo),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- loc_4BF18: @@ -99133,7 +99133,7 @@ loc_4BF54: loc_4BF58: moveq #signextendB(sfx_Flipper),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- locret_4BF60: @@ -99347,7 +99347,7 @@ loc_4C21C: andi.w #$F,d0 bne.s locret_4C23C moveq #signextendB(sfx_SlotMachine),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_4C23C: rts @@ -99421,7 +99421,7 @@ Obj_SlotSpike: blo.s loc_4C3CA clr.w (SStage_scalar_index_2).w moveq #signextendB(sfx_SpikeHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_4C3CA: tst.w (Ring_count).w @@ -100087,7 +100087,7 @@ loc_4C966: BlueSpheresTitle: moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l jsr (Pal_FadeToBlack).l bsr.w sub_4C8E4 bsr.w sub_4CCA6 @@ -100156,7 +100156,7 @@ loc_4CAA8: jsr (Process_Sprites).l jsr (Render_Sprites).l moveq #signextendB(mus_Continue),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.w (VDP_reg_1_command).w,d0 ori.b #$40,d0 move.w d0,(VDP_control_port).l @@ -100448,7 +100448,7 @@ loc_4CEC8: move.w d0,(Special_stage_spheres_left).w move.w d0,(Special_stage_rings_left).w moveq #signextendB(sfx_Starpost),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move #$2700,sr lea aGetBlueSpheres(pc),a1 move.w #$100,d2 @@ -100518,7 +100518,7 @@ loc_4CFB2: beq.s loc_4CFD4 subq.b #1,(Blue_spheres_option).w moveq #signextendB(sfx_WeatherMachine),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_4CFD4: btst #1,d1 @@ -100527,7 +100527,7 @@ loc_4CFD4: bhs.s loc_4D000 addq.b #1,(Blue_spheres_option).w moveq #signextendB(sfx_WeatherMachine),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l cmpi.b #2,(Blue_spheres_option).w bne.s loc_4D000 ori.b #$80,(Blue_spheres_menu_flag).w @@ -101017,7 +101017,7 @@ loc_4D470: andi.b #$F,d1 beq.s loc_4D482 moveq #signextendB(sfx_WeatherMachine),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_4D482: jmp (Draw_Sprite).l @@ -101111,7 +101111,7 @@ loc_4D4FC: lea (Normal_palette).w,a2 bsr.w sub_4CB1A moveq #signextendB(sfx_Starpost),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l andi.b #$7F,(Blue_spheres_menu_flag).w move.b #1,(Blue_spheres_option).w rts @@ -101119,7 +101119,7 @@ loc_4D4FC: loc_4D58A: moveq #signextendB(sfx_Error),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l andi.b #$7F,(Blue_spheres_menu_flag).w move.b #1,(Blue_spheres_option).w rts @@ -101412,7 +101412,7 @@ Map_BlueSpheresCopyright: include "General/Blue Sphere/Map - Copyright.asm" BlueSpheresResults: moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l bsr.w sub_4C8E4 lea (Pal_SphereResults_012).l,a1 lea (Target_palette).w,a2 @@ -101462,7 +101462,7 @@ loc_4DA96: jsr (Process_Sprites).l jsr (Render_Sprites).l moveq #signextendB(mus_GotThroughAct),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.w (VDP_reg_1_command).w,d0 ori.b #$40,d0 move.w d0,(VDP_control_port).l @@ -101507,7 +101507,7 @@ locret_4DC18: loc_4DC1A: moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l jsr (Pal_FadeToBlack).l bsr.w sub_4C8E4 lea (_unkFA80).w,a1 @@ -101580,7 +101580,7 @@ loc_4DC7E: clr.b (Super_palette_status).w move.w #1,(Player_mode).w moveq #signextendB(mus_Invincibility),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.w (VDP_reg_1_command).w,d0 ori.b #$40,d0 move.w d0,(VDP_control_port).l @@ -101710,7 +101710,7 @@ loc_4DF04: jsr (sub_5B318).l move #$2300,sr moveq #signextendB(sfx_Continue),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w #$12C,$30(a0) loc_4DF38: @@ -101881,7 +101881,7 @@ loc_4E116: addq.b #1,(Blue_spheres_difficulty).w bsr.s Difficulty_Level_Sprites_Display moveq #signextendB(sfx_LaunchReady),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_4E146: move.b #4,$22(a0) @@ -105258,7 +105258,7 @@ loc_503EA: andi.w #$F,d0 bne.s loc_503FE moveq #signextendB(sfx_LargeShip),d0 ; Replay the battleship flying sound every 16th frame - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_503FE: subq.w #1,$32(a0) ; Wait for delay to finish @@ -105337,7 +105337,7 @@ AIZShipBomb_Delay: bne.s loc_504EE addq.b #4,5(a0) moveq #signextendB(sfx_MissileThrow),d0 - jsr (Play_Sound_2).l ; Play the drop sound after the delay + jsr (Play_SFX).l ; Play the drop sound after the delay loc_504EE: jsr Translate_Camera2ObjPosition(pc) @@ -105357,7 +105357,7 @@ AIZShipBomb_Drop: bgt.s locret_50578 move.w #$10,(Screen_shake_flag).w ; If touching the floor, set up a timed screen shake moveq #signextendB(sfx_MissileExplode),d0 - jsr (Play_Sound_2).l ; Play the bomb explosion sound + jsr (Play_SFX).l ; Play the bomb explosion sound jsr (Create_New_Sprite3).l bne.s loc_50572 lea (AIZBombExplodeDat).l,a2 @@ -105567,7 +105567,7 @@ loc_5075E: andi.w #$F,d0 bne.s locret_5077C moveq #signextendB(sfx_RobotnikSiren),d0 ; Every sixteenth frame, play alarm sound - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_5077C: rts @@ -106083,7 +106083,7 @@ loc_5100C: bpl.s loc_51052 move.w #$E,(Screen_shake_flag).w ; Set screen shake to timed moveq #signextendB(sfx_Crash),d0 - jsr (Play_Sound_2).l ; Play final crashing sound + jsr (Play_SFX).l ; Play final crashing sound bra.s loc_51052 ; --------------------------------------------------------------------------- @@ -106099,7 +106099,7 @@ loc_5103A: andi.w #$F,d0 bne.s loc_51052 moveq #signextendB(sfx_Rumble2),d0 - jsr (Play_Sound_2).l ; Play the screen shake sound every 16th frame + jsr (Play_SFX).l ; Play the screen shake sound every 16th frame loc_51052: move.w (Camera_Y_pos_copy).w,d0 ; Get BG camera Y @@ -106305,7 +106305,7 @@ Do_ShakeSound: andi.w #$F,d0 bne.s locret_512A4 moveq #signextendB(sfx_Rumble2),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_512A4: rts @@ -106485,7 +106485,7 @@ loc_5144C: andi.w #$F,d0 bne.s loc_51470 moveq #signextendB(sfx_BigRumble),d0 ; Play collapsing sound every 16 frames - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_51470: tst.w d1 @@ -107215,7 +107215,7 @@ loc_51B1C: cmp.w $2E(a0),d0 ; Wait for BG offset to match given value blo.s loc_51B44 moveq #signextendB(sfx_Crash),d0 ; Play final crashing sound - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w #$E,(Screen_shake_flag).w ; Do final screen shake clr.w (Events_fg_0).w ; Disable constant screen shaking bclr #7,(Disable_wall_grab).w ; Reenable Knuckles wall grab @@ -108016,7 +108016,7 @@ Obj_CNZTeleporterMain: move.w d0,$10(a1) move.w #$A38,$14(a1) ; Set teleporter position/attributes moveq #signextendB(sfx_Charging),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.l #loc_5234A,(a0) locret_52348: @@ -108056,7 +108056,7 @@ loc_5238E: move.b d0,$20(a1) move.b d0,$22(a1) moveq #signextendB(sfx_Transporter),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l st (Scroll_lock).w bra.s locret_523C8 ; --------------------------------------------------------------------------- @@ -108075,7 +108075,7 @@ loc_523CA: cmpi.w #$780,(Camera_Y_pos).w bhs.s locret_523EA moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.w #$500,d0 ; Start Ice Cap jmp (StartNewLevel).l ; --------------------------------------------------------------------------- @@ -109879,7 +109879,7 @@ loc_53456: subq.w #8,$2E(a0) ; If player is not in range, decrease pillar offset bne.s loc_5346A moveq #signextendB(sfx_SpikeBalls),d0 ; Play sound only when pillar hits ground - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_5346A: sub.w $2E(a0),d5 @@ -110315,7 +110315,7 @@ ICZ1_BigSnowFall: andi.w #$F,d0 bne.s loc_539F0 moveq #signextendB(sfx_Rumble2),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bra.s loc_539F0 ; --------------------------------------------------------------------------- @@ -110396,7 +110396,7 @@ loc_53A5A: move.b #2,$20(a1) bset #2,$2A(a1) moveq #signextendB(sfx_Jump),d0 - jsr (Play_Sound_2).l ; Perform jumping on player object manually + jsr (Play_SFX).l ; Perform jumping on player object manually locret_53AD2: rts @@ -110949,7 +110949,7 @@ loc_54062: tst.w d2 beq.s loc_54082 moveq #signextendB(sfx_BigRumble),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_54082: tst.w d2 @@ -110965,7 +110965,7 @@ loc_5409E: clr.l (a1)+ dbf d0,loc_5409E moveq #signextendB(sfx_Crash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_540AC: lea (HScroll_table+$100).w,a1 @@ -111422,7 +111422,7 @@ loc_5451A: andi.w #$F,d0 bne.s loc_5452E moveq #signextendB(sfx_DeathEggRiseLoud),d0 ; Play death egg rumbling sound - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_5452E: tst.w (Events_fg_5).w @@ -113442,7 +113442,7 @@ loc_558AC: andi.w #$F,d0 bne.s locret_558C0 moveq #signextendB(sfx_LargeShip),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_558C0: rts @@ -113818,7 +113818,7 @@ sub_55DB6: andi.w #$F,d0 bne.s loc_55DD0 moveq #signextendB(sfx_Rumble2),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_55DD0: move.w (Camera_Y_pos_copy).w,d0 @@ -114061,7 +114061,7 @@ loc_56012: loc_56020: moveq #signextendB(sfx_DoorOpen),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w #$F6,(Events_bg+$00).w move.l #loc_56034,(a0) @@ -114093,7 +114093,7 @@ loc_56062: loc_56070: moveq #signextendB(sfx_DoorOpen),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.l #loc_5607E,(a0) loc_5607E: @@ -114713,7 +114713,7 @@ loc_56770: subq.w #1,d0 dbf d1,loc_56770 moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w #3,(Events_bg+$06).w addq.w #4,(Events_bg+$08).w @@ -114763,7 +114763,7 @@ loc_567EE: dbf d1,loc_567EE clr.w (Events_bg+$00).w moveq #signextendB(sfx_Collapse),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l addq.w #4,(Events_bg+$08).w loc_5680A: @@ -114806,7 +114806,7 @@ loc_5683A: tst.w (Events_bg+$00).w bne.w loc_56936 moveq #signextendB(sfx_BossRecovery),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l st (Events_bg+$00).w bra.w loc_56936 ; --------------------------------------------------------------------------- @@ -116927,7 +116927,7 @@ Obj_57E96: andi.w #$F,d0 bne.s loc_57EB0 moveq #signextendB(sfx_BigRumble),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_57EB0: moveq #0,d0 @@ -116966,7 +116966,7 @@ loc_57F02: move.l (a5)+,(a1)+ dbf d0,loc_57F02 moveq #signextendB(sfx_Collapse),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l addq.b #4,5(a0) bra.w locret_57FBE ; --------------------------------------------------------------------------- @@ -117001,7 +117001,7 @@ loc_57F5E: andi.w #$F,d0 bne.s loc_57F7E moveq #signextendB(sfx_DeathEggRiseLoud),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_57F7E: move.w #$500,d0 @@ -117155,7 +117155,7 @@ sub_5806E: clr.w $12(a1) clr.w $16(a1) moveq #signextendB(sfx_Jump),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- loc_580CC: @@ -117257,7 +117257,7 @@ loc_581D2: subq.w #1,4(a2) bne.s locret_581F0 moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.w #$B00,d0 jmp (StartNewLevel).l ; --------------------------------------------------------------------------- @@ -117438,7 +117438,7 @@ loc_583D2: andi.w #$F,d0 bne.s loc_583E4 moveq #signextendB(sfx_BigRumble),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_583E4: tst.w $30(a0) @@ -123247,7 +123247,7 @@ loc_5C3FE: ori.b #$40,d0 move.w d0,(VDP_control_port).l moveq #signextendB(mus_Continue),d0 - jsr (Play_Sound).l + jsr (Play_Music).l jsr (Pal_FadeFromBlack).l loc_5C454: @@ -124410,7 +124410,7 @@ loc_5DE36: loc_5DE46: moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l clr.b (_unkFAC1).w clr.b (_unkFAB8).w st (Events_fg_4).w @@ -124583,7 +124583,7 @@ Obj_5DFEE: move.w #-$100,$18(a0) bsr.w sub_6001E moveq #signextendB(mus_CreditsK),d0 - jsr (Play_Sound).l + jsr (Play_Music).l lea ChildObjDat_601CA(pc),a2 jsr (CreateChild6_Simple).l lea ChildObjDat_601D0(pc),a2 @@ -124719,7 +124719,7 @@ loc_5E1C2: cmpi.b #2,(_unkFA88).w beq.s loc_5E1F0 moveq #signextendB(mus_CreditsK),d0 - jsr (Play_Sound).l + jsr (Play_Music).l loc_5E1F0: lea (Player_1).w,a1 @@ -125176,7 +125176,7 @@ loc_5E7CC: loc_5E80A: moveq #signextendB(sfx_WindQuiet),d0 - jsr (sub_85E52).l + jsr (Play_SFX_Continuous).l jsr (Animate_RawMultiDelay).l subq.w #1,$2E(a0) bpl.s locret_5E830 @@ -126609,7 +126609,7 @@ loc_5F85A: move.w #$CC,$14(a0) move.l #loc_5F89A,$34(a0) moveq #signextendB(sfx_MechaLand),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea (byte_7D5AB).l,a1 jmp (Set_Raw_Animation).l ; --------------------------------------------------------------------------- @@ -127795,7 +127795,7 @@ loc_60CF8: loc_60D08: moveq #signextendB(sfx_GumballTab),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_60D10: jmp (Draw_Sprite).l @@ -128044,7 +128044,7 @@ loc_60FB4: movea.w (_unkFAA4).w,a1 bset #0,$38(a1) moveq #signextendB(sfx_Spring),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; End of function sub_60F94 @@ -128165,7 +128165,7 @@ loc_61120: addq.b #1,(Life_count).w addq.b #1,(Update_HUD_life_count).w moveq #signextendB(mus_ExtraLife),d0 - jmp (Play_Sound).l + jmp (Play_Music).l ; --------------------------------------------------------------------------- loc_61130: @@ -128230,7 +128230,7 @@ sub_61176: clr.b $40(a1) move.b #1,$20(a0) moveq #signextendB(sfx_SmallBumpers),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_61176 ; --------------------------------------------------------------------------- @@ -128244,7 +128244,7 @@ loc_611D6: moveq #4,d0 bsr.w sub_61254 moveq #signextendB(sfx_FireShield),d0 - jmp (Play_Sound).l + jmp (Play_Music).l ; --------------------------------------------------------------------------- loc_61200: @@ -128256,7 +128256,7 @@ loc_61200: moveq #6,d0 bsr.w sub_61254 moveq #signextendB(sfx_BubbleShield),d0 - jmp (Play_Sound).l + jmp (Play_Music).l ; --------------------------------------------------------------------------- loc_6122A: @@ -128268,7 +128268,7 @@ loc_6122A: moveq #5,d0 bsr.w sub_61254 moveq #signextendB(sfx_LightningShield),d0 - jmp (Play_Sound).l + jmp (Play_Music).l ; =============== S U B R O U T I N E ======================================= @@ -128652,7 +128652,7 @@ loc_6170A: cmpi.b #6,5(a1) bhs.s locret_61708 ; If player has died for whatever reason, don't do anything moveq #signextendB(sfx_BigRing),d0 - jsr (Play_Sound_2).l ; Play the ring swish sound + jsr (Play_SFX).l ; Play the ring swish sound cmpi.b #7,(Chaos_emerald_count).w bne.s loc_6173A ; If chaos emeralds aren't collected, branch tst.w (SK_alone_flag).w @@ -128693,7 +128693,7 @@ SSEntry_Range: dc.w $FFE8 loc_61794: moveq #signextendB(sfx_BigRing),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b $2C(a0),d0 move.l (Collected_special_ring_array).w,d1 bset d0,d1 @@ -128761,7 +128761,7 @@ SSEntryFlash_Finished: SSEntryFlash_GoSS: moveq #signextendB(sfx_EnterSS),d0 - jsr (Play_Sound_2).l ; Play the special stage entry sound (you know the one) + jsr (Play_SFX).l ; Play the special stage entry sound (you know the one) jsr (Clear_SpriteRingMem).l jsr (Save_Level_Data2).l tst.b $2C(a0) @@ -129845,7 +129845,7 @@ loc_626F4: move.w #$F,$2E(a0) move.l #loc_62726,$34(a0) moveq #signextendB(sfx_MissileThrow),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_66584(pc),a2 jsr (CreateChild1_Normal).l lea (PLC_BossExplosion).l,a1 @@ -129945,7 +129945,7 @@ loc_6282A: move.w #-$200,$18(a0) move.w #-$400,$1A(a0) moveq #signextendB(sfx_MissileThrow),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_6284E: jsr (MoveSprite_LightGravity).l @@ -130071,7 +130071,7 @@ loc_629A8: cmp.w (Water_level).w,d0 blo.s loc_629C0 moveq #signextendB(sfx_Splash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b #$C,5(a0) loc_629C0: @@ -130497,7 +130497,7 @@ loc_62E92: bset #1,$38(a0) st (_unkFAA9).w moveq #signextendB(sfx_Switch),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_62ECA: jmp (Draw_Sprite).l @@ -130530,13 +130530,13 @@ loc_62F0A: move.l #loc_62F4C,(a0) move.b #1,$22(a0) moveq #signextendB(sfx_Switch),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l btst #2,$38(a0) bne.s loc_62F46 bset #1,$38(a0) not.b (_unkFAA9).w moveq #signextendB(sfx_Switch),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_62F46: jmp (Sprite_CheckDelete).l @@ -130786,7 +130786,7 @@ loc_63220: cmpi.b #8,$23(a0) blo.s loc_63238 moveq #signextendB(sfx_LeafBlower),d0 - jsr (sub_85E52).l + jsr (Play_SFX_Continuous).l bsr.w sub_65EB4 loc_63238: @@ -130808,7 +130808,7 @@ loc_63266: addq.b #1,$39(a0) subq.w #4,$3E(a0) moveq #signextendB(sfx_Switch),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_6327E: rts @@ -130923,7 +130923,7 @@ loc_6339C: loc_633D6: moveq #signextendB(sfx_LeafBlower),d0 - jsr (sub_85E52).l + jsr (Play_SFX_Continuous).l jsr (MoveSprite_LightGravity).l movea.w $44(a0),a1 move.w $10(a0),$10(a1) @@ -131233,7 +131233,7 @@ loc_63790: subi.w #$40,d0 move.w d0,$14(a0) moveq #signextendB(sfx_MissileThrow),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_6665C(pc),a2 jsr (CreateChild1_Normal).l lea (PLC_BossExplosion).l,a1 @@ -131255,7 +131255,7 @@ loc_637EC: add.w d1,$14(a0) bset #0,(_unkFAB8).w moveq #signextendB(sfx_FloorThump),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w $1A(a0),d0 asr.w #2,d0 neg.w d0 @@ -131265,7 +131265,7 @@ loc_637EC: move.l #loc_63846,(a0) move.w #$77,$2E(a0) moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l loc_63840: jmp (Draw_Sprite).l @@ -131278,7 +131278,7 @@ loc_63846: bset #7,$2A(a0) bset #1,(_unkFAB8).w moveq #signextendB(sfx_MissileExplode),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea (Normal_palette).w,a1 lea (Target_palette).w,a2 moveq #7,d6 @@ -131362,7 +131362,7 @@ loc_6395C: jsr (SetUp_ObjAttributes).l move.l #Go_Delete_Sprite,$34(a0) moveq #signextendB(sfx_Explode),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l moveq #0,d0 move.b $2C(a0),d0 lea byte_639A2(pc,d0.w),a1 @@ -131419,7 +131419,7 @@ loc_639C8: subi.w #$60,d0 move.w d0,$14(a0) moveq #signextendB(mus_EndBoss),d0 - jsr (Play_Sound).l + jsr (Play_Music).l lea (ChildObjDat_919D0).l,a2 jsr (CreateChild1_Normal).l lea (ArtKosM_EggRoboBadnik).l,a1 @@ -131621,7 +131621,7 @@ loc_63C7A: loc_63C80: moveq #signextendB(sfx_PushBlock),d0 - jsr (sub_85E52).l + jsr (Play_SFX_Continuous).l bsr.w sub_65ED4 bsr.w sub_65EFE jsr (MoveSprite2).l @@ -131636,7 +131636,7 @@ loc_63CA6: loc_63CAC: moveq #signextendB(sfx_PushBlock),d0 - jsr (sub_85E52).l + jsr (Play_SFX_Continuous).l bsr.w sub_65ED4 bsr.w sub_65EFE jsr (MoveSprite_LightGravity).l @@ -131648,7 +131648,7 @@ loc_63CAC: move.w #-$100,$1A(a0) move.w #$14,(Screen_shake_flag).w moveq #signextendB(sfx_Collapse),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_63CE6: jmp (Draw_Sprite).l @@ -131948,7 +131948,7 @@ loc_6401C: move.b #$A,5(a0) move.w #-$600,$1A(a0) moveq #signextendB(sfx_Jump),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea byte_667C1(pc),a1 jmp (Set_Raw_Animation).l ; --------------------------------------------------------------------------- @@ -132065,7 +132065,7 @@ loc_64184: andi.b #$F,d0 bne.s loc_64196 moveq #signextendB(sfx_Roll),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_64196: jsr (Animate_RawCheckResult).l @@ -132154,7 +132154,7 @@ loc_64292: loc_6429E: bset #0,$38(a0) moveq #signextendB(sfx_FloorThump),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w #$300,d3 move.w $10(a1),d1 sub.w $10(a0),d1 @@ -132211,7 +132211,7 @@ loc_64356: move.b #$1A,5(a0) move.l #loc_643A4,$34(a0) moveq #signextendB(sfx_DoorMove),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea byte_6680A(pc),a1 jsr (Set_Raw_Animation).l lea (ArtKosM_HPZKnuxDizzy).l,a1 @@ -132224,7 +132224,7 @@ loc_6438A: andi.b #$1F,d0 bne.s loc_6439C moveq #signextendB(sfx_Collapse),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_6439C: subq.w #1,$2E(a0) @@ -132378,7 +132378,7 @@ loc_6453C: move.w #$C0,$18(a0) move.w #-$600,$1A(a0) moveq #signextendB(sfx_Jump),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea byte_667C1(pc),a1 jmp (Set_Raw_Animation).l ; --------------------------------------------------------------------------- @@ -132414,7 +132414,7 @@ loc_645B0: move.w #-$C0,$18(a0) move.w #-$500,$1A(a0) moveq #signextendB(sfx_Jump),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea byte_667C1(pc),a1 jmp (Set_Raw_Animation).l ; --------------------------------------------------------------------------- @@ -132499,7 +132499,7 @@ loc_646B8: move.w #$300,$18(a0) move.w #-$500,$1A(a0) moveq #signextendB(sfx_Jump),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea byte_667C1(pc),a1 jmp (Set_Raw_Animation).l ; --------------------------------------------------------------------------- @@ -132527,7 +132527,7 @@ loc_6471A: move.w #-$200,$18(a0) move.w #-$200,$1A(a0) moveq #signextendB(sfx_Jump),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea byte_667C1(pc),a1 jmp (Set_Raw_Animation).l ; --------------------------------------------------------------------------- @@ -132580,7 +132580,7 @@ loc_647EC: move.b #$38,5(a0) move.w #-$600,$1A(a0) moveq #signextendB(sfx_Jump),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea byte_667C1(pc),a1 jmp (Set_Raw_Animation).l ; --------------------------------------------------------------------------- @@ -132620,7 +132620,7 @@ loc_6485A: andi.b #3,d1 beq.s loc_6486C moveq #signextendB(sfx_GravityMachine),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_6486C: bra.s loc_64812 @@ -132694,7 +132694,7 @@ loc_648FA: move.w d0,(Camera_target_max_Y_pos).w move.w d0,(Camera_stored_max_Y_pos).w moveq #signextendB(sfx_BigRumble),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l jsr (Create_New_Sprite).l bne.s loc_6492C move.l #Obj_IncLevEndYGradual,(a1) @@ -132812,7 +132812,7 @@ loc_64A6E: bne.w locret_64A8C st (_unkFAA2).w moveq #signextendB(sfx_Collapse),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_64A8C: rts @@ -132892,7 +132892,7 @@ loc_64B80: move.w #-$1E0,$18(a0) move.w #-$600,$1A(a0) moveq #signextendB(sfx_Jump),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea byte_667C1(pc),a1 jmp (Set_Raw_Animation).l ; --------------------------------------------------------------------------- @@ -133303,7 +133303,7 @@ loc_650A6: move.b #2,$22(a0) move.w #$14,(Screen_shake_flag).w moveq #signextendB(sfx_BigRumble),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_6661E(pc),a2 jsr (CreateChild6_Simple).l lea ChildObjDat_66638(pc),a2 @@ -133985,7 +133985,7 @@ loc_657C4: loc_657CE: moveq #signextendB(sfx_DeathEggRiseQuiet),d0 - jsr (sub_85E52).l + jsr (Play_SFX_Continuous).l subq.w #1,$2E(a0) bpl.w locret_6206C move.b #8,5(a0) @@ -133998,7 +133998,7 @@ loc_657CE: loc_657FE: moveq #signextendB(sfx_DeathEggRiseQuiet),d0 - jsr (sub_85E52).l + jsr (Play_SFX_Continuous).l btst #1,(_unkFAB8).w bne.s loc_65814 jmp (Animate_RawMultiDelay).l @@ -134081,7 +134081,7 @@ loc_658F2: move.b #1,$22(a0) st (Events_bg+$08).w moveq #signextendB(sfx_Switch),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea byte_6671F(pc),a1 jmp (Set_Raw_Animation).l ; --------------------------------------------------------------------------- @@ -134363,7 +134363,7 @@ loc_65C78: move.w #$350,(Target_water_level).w st (_unkFAA3).w moveq #signextendB(sfx_Geyser),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l jsr (Create_New_Sprite).l bne.s locret_65CAA move.l #loc_62480,(a1) @@ -134452,7 +134452,7 @@ loc_65D8C: clr.b (_unkFAA3).w move.w #$A58,(Target_water_level).w moveq #signextendB(sfx_Geyser),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l jsr (Create_New_Sprite).l bne.s loc_65DD0 move.l #loc_62480,(a1) @@ -134752,7 +134752,7 @@ sub_66054: andi.w #$1F,d0 bne.w locret_6206C moveq #signextendB(sfx_MissileShoot),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_665F0(pc),a2 jmp (CreateChild6_Simple).l ; End of function sub_66054 @@ -135113,7 +135113,7 @@ sub_66348: bne.s loc_66364 move.b #$30,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_66364: subq.b #1,$20(a0) @@ -135135,7 +135135,7 @@ sub_66372: bne.s loc_66392 move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bset #6,$2A(a0) loc_66392: @@ -137334,7 +137334,7 @@ loc_68556: move.w d5,(Camera_min_X_pos).w move.w d5,(Camera_max_X_pos).w moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l locret_68572: rts @@ -137359,7 +137359,7 @@ sub_6859C: move.w #$100,$1A(a0) move.w #$AF,$2E(a0) moveq #signextendB(mus_Miniboss),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.b #mus_Miniboss,(Current_music+1).w rts ; End of function sub_6859C @@ -137405,7 +137405,7 @@ loc_685FC: loc_68616: move.w #$40,$2E(a0) moveq #signextendB(sfx_FlamethrowerQuiet),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea Child1_AIZ_MinibossFlames(pc),a2 jmp (CreateChild1_Normal).l ; --------------------------------------------------------------------------- @@ -137423,7 +137423,7 @@ loc_68646: jsr (PalLoad_Line1).l move.b #$F,$28(a0) moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.w #$400,$18(a0) clr.w $1A(a0) move.w #$40,$2E(a0) @@ -137614,7 +137614,7 @@ sub_6885A: lea word_6902A(pc),a1 jsr (SetUp_ObjAttributes2).l moveq #signextendB(sfx_Projectile),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.l #byte_6914C,$30(a0) move.l #loc_6889A,$34(a0) move.w #-$400,$1A(a0) @@ -137637,7 +137637,7 @@ loc_6889A: loc_688B0: move.b #6,5(a0) moveq #signextendB(sfx_MissileThrow),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w #$80,8(a0) bset #1,4(a0) move.l #Go_Delete_Sprite,$34(a0) @@ -137849,7 +137849,7 @@ loc_68AFE: move.b #$A,5(a0) move.b #8,$39(a0) moveq #signextendB(sfx_FlamethrowerQuiet),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea Child1_AIZ_MinibossFlames(pc),a2 jmp (CreateChild1_Normal).l ; --------------------------------------------------------------------------- @@ -138069,7 +138069,7 @@ loc_68D5E: loc_68D70: moveq #signextendB(sfx_MissileExplode),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_690D8(pc),a2 jsr (CreateChild1_Normal).l jmp (Go_Delete_Sprite).l @@ -138317,7 +138317,7 @@ loc_68F62: bne.s loc_68F88 move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bset #6,$2A(a0) loc_68F88: @@ -138616,7 +138616,7 @@ loc_691D4: move.w #$78,$2E(a0) move.l #Obj_AIZ_EndBossMusic,$34(a0) moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.b #1,(Boss_flag).w ; Lock the screen clr.b (_unkFAA2).w clr.b (_unkFAA3).w @@ -138632,7 +138632,7 @@ loc_691D4: Obj_AIZ_EndBossMusic: move.l #Obj_AIZ_EndBossMain,(a0) moveq #signextendB(mus_EndBoss),d0 ; Play the boss music - jsr (Play_Sound).l + jsr (Play_Music).l move.b #mus_EndBoss,(Current_music+1).w rts ; --------------------------------------------------------------------------- @@ -138673,7 +138673,7 @@ loc_69296: loc_692A0: move.b #2,5(a0) moveq #signextendB(sfx_WaterfallSplash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l ori.b #$48,$38(a0) move.l #loc_69302,$34(a0) clr.b $28(a0) @@ -138782,7 +138782,7 @@ loc_693F0: loc_693FA: move.b #$A,5(a0) moveq #signextendB(sfx_WaterfallSplash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.l #loc_6942A,$34(a0) clr.b $28(a0) bsr.w sub_69C94 @@ -139212,7 +139212,7 @@ loc_698D2: jsr (SetUp_ObjAttributes3).l bset #4,$2B(a0) moveq #signextendB(sfx_Projectile),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b #$C,$1E(a0) move.w #$9F,$2E(a0) move.l #loc_69908,(a0) @@ -139492,7 +139492,7 @@ sub_69BE2: bne.s loc_69C02 move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_69C02: bset #6,$2A(a0) @@ -139851,7 +139851,7 @@ loc_69F2C: move.w #$78,$2E(a0) move.l #loc_69F64,$34(a0) moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l bset #3,$38(a0) lea Pal_HCZMiniboss(pc),a1 jmp (PalLoad_Line1).l @@ -139860,7 +139860,7 @@ loc_69F2C: loc_69F64: move.l #Obj_HCZ_MinibossLoop,(a0) moveq #signextendB(mus_Miniboss),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.b #mus_Miniboss,(Current_music+1).w locret_69F78: @@ -139940,7 +139940,7 @@ loc_6A042: loc_6A046: move.b #$A,5(a0) moveq #signextendB(sfx_Roll),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bset #6,$38(a0) bclr #7,$38(a0) move.w #$400,$1A(a0) @@ -140038,7 +140038,7 @@ loc_6A15A: loc_6A16C: move.b #$14,5(a0) moveq #signextendB(sfx_DoorClose),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bclr #3,$38(a0) move.w #$9F,$2E(a0) move.l #loc_6A194,$34(a0) @@ -140081,7 +140081,7 @@ loc_6A1FA: bclr #6,$38(a0) move.w #-$400,$1A(a0) moveq #signextendB(sfx_LavaBall),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -140228,7 +140228,7 @@ loc_6A3A0: move.l #loc_6A416,$34(a0) bclr #6,$38(a0) moveq #signextendB(sfx_LevelProjectile),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -140400,7 +140400,7 @@ loc_6A57C: move.l #byte_6ADEC,$30(a0) move.l #loc_6A5BC,$34(a0) moveq #signextendB(sfx_FanBig),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_6AD92(pc),a2 jmp (CreateChild6_Simple).l ; --------------------------------------------------------------------------- @@ -140424,7 +140424,7 @@ loc_6A5D8: btst #2,$38(a1) beq.s loc_6A5FA moveq #signextendB(sfx_BossRotate),d0 - jsr (sub_85E52).l + jsr (Play_SFX_Continuous).l lea byte_6AE11(pc),a1 jmp (Animate_RawNoSST).l ; --------------------------------------------------------------------------- @@ -140912,7 +140912,7 @@ sub_6AAA0: sub_6AAB6: bset #7,$38(a0) moveq #signextendB(sfx_Splash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l clr.w (Slotted_object_bits).w lea ChildObjDat_6AD7E(pc),a2 jmp (CreateChild1_Normal).l @@ -141129,7 +141129,7 @@ sub_6AC48: bne.s loc_6AC68 move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_6AC68: bset #6,$2A(a0) @@ -141635,7 +141635,7 @@ loc_6B1E6: loc_6B204: moveq #signextendB(sfx_FanBig),d0 - jsr (sub_85E52).l + jsr (Play_SFX_Continuous).l jmp (Animate_RawGetFaster).l ; --------------------------------------------------------------------------- @@ -141652,7 +141652,7 @@ loc_6B22A: btst #3,$38(a1) beq.s loc_6B244 moveq #signextendB(sfx_FanBig),d0 - jmp (sub_85E52).l + jmp (Play_SFX_Continuous).l ; --------------------------------------------------------------------------- loc_6B244: @@ -142090,7 +142090,7 @@ loc_6B73A: lea ChildObjDat_6BDE0(pc),a2 jsr (CreateChild6_Simple).l moveq #signextendB(sfx_MissileExplode),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_6BDB2(pc),a2 jsr (CreateChild1_Normal).l jmp (Go_Delete_Sprite).l @@ -142147,7 +142147,7 @@ loc_6B7EC: andi.b #7,d0 bne.s loc_6B7FE moveq #signextendB(sfx_Rumble2),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_6B7FE: jmp (Obj_Wait).l @@ -142180,7 +142180,7 @@ loc_6B832: st (Palette_cycle_counters+$00).w st (Screen_shake_flag).w moveq #signextendB(sfx_Geyser),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea (Player_1).w,a1 bra.w loc_6B864 ; --------------------------------------------------------------------------- @@ -142592,7 +142592,7 @@ sub_6BBC4: bne.s loc_6BBE8 move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_6BBE8: bset #6,$2A(a0) @@ -142964,7 +142964,7 @@ Obj_MGZ2DrillingEggman: move.l #Obj_MGZ2DrillingEggmanGo,$34(a0) clr.b $2C(a0) moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l lea (ArtKosM_MGZEndBoss).l,a1 move.w #$67E0,d2 jsr (Queue_Kos_Module).l @@ -142980,7 +142980,7 @@ Obj_MGZ2DrillingEggman: Obj_MGZ2DrillingEggmanGo: move.l #Obj_MGZ2DrillingEggmanStart,(a0) moveq #signextendB(mus_EndBoss),d0 ; Play boss music - jsr (Play_Sound).l + jsr (Play_Music).l move.b #mus_EndBoss,(Current_music+1).w locret_6BF96: @@ -143032,7 +143032,7 @@ loc_6C00A: loc_6C014: move.b #4,5(a0) moveq #signextendB(sfx_Collapse),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -143324,7 +143324,7 @@ loc_6C354: move.b #$1C,$1E(a0) move.w #$C,$26(a0) moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.w #$78,$2E(a0) move.l #loc_6C3EC,$34(a0) lea (ArtKosM_MGZEndBoss).l,a1 @@ -143354,7 +143354,7 @@ loc_6C3E6: loc_6C3EC: move.b #4,5(a0) moveq #signextendB(mus_EndBoss),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.b #mus_EndBoss,(Current_music+1).w move.w #$80,$1A(a0) move.w #$BF,$2E(a0) @@ -143427,7 +143427,7 @@ loc_6C4BE: st (Events_fg_4).w st (Disable_death_plane).w moveq #signextendB(sfx_BossHitFloor),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l jsr (Create_New_Sprite).l bne.s locret_6C4F0 move.l #Obj_MGZ2_BossTransition,(a1) @@ -143532,7 +143532,7 @@ loc_6C5FE: loc_6C614: move.b #$1E,5(a0) moveq #signextendB(sfx_BossZoom),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bclr #3,$38(a0) bclr #2,$38(a0) move.w #$9F,$2E(a0) @@ -143667,7 +143667,7 @@ loc_6C7D8: cmpi.w #$28,$2E(a0) bne.s loc_6C7F2 moveq #signextendB(sfx_Collapse),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_6D83E(pc),a2 jsr (CreateChild6_Simple).l @@ -143700,7 +143700,7 @@ loc_6C83C: cmpi.w #$48,$2E(a0) bne.s loc_6C856 moveq #signextendB(sfx_Collapse),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_6D83E(pc),a2 jsr (CreateChild6_Simple).l @@ -143922,7 +143922,7 @@ loc_6CACA: lea ChildObjDat_6D812(pc),a2 jsr (CreateChild1_Normal).l moveq #signextendB(sfx_Collapse),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_6D83E(pc),a2 jsr (CreateChild6_Simple).l @@ -144003,7 +144003,7 @@ loc_6CBCE: loc_6CBF8: moveq #signextendB(sfx_Collapse),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_6D83E(pc),a2 jsr (CreateChild6_Simple).l bra.w loc_6CB04 @@ -144906,7 +144906,7 @@ loc_6D51A: loc_6D576: moveq #signextendB(sfx_Collapse),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_6D83E(pc),a2 jmp (CreateChild6_Simple).l ; --------------------------------------------------------------------------- @@ -144949,7 +144949,7 @@ loc_6D5C2: bne.s loc_6D5D6 move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 ; Play hit sound - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_6D5D6: bset #6,$2A(a0) @@ -144988,7 +144988,7 @@ loc_6D61E: bne.s loc_6D644 move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bset #6,$2A(a0) loc_6D644: @@ -145403,7 +145403,7 @@ loc_6D9A8: move.w #$78,$2E(a0) ; Wait for 2 seconds move.l #Obj_CNZMinibossGo,$34(a0) moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l ; Fade out music + jsr (Play_Music).l ; Fade out music move.b #1,(Boss_flag).w ; Lock screen moveq #$5D,d0 jsr (Load_PLC).l ; Load CNZ Miniboss PLC @@ -145414,7 +145414,7 @@ loc_6D9A8: Obj_CNZMinibossGo: move.l #Obj_CNZMinibossStart,(a0) moveq #signextendB(mus_Miniboss),d0 - jsr (Play_Sound).l ; Play miniboss music + jsr (Play_Music).l ; Play miniboss music move.b #mus_Miniboss,(Current_music+1).w jsr (Create_New_Sprite).l bne.s locret_6DA22 @@ -145999,7 +145999,7 @@ CNZMiniboss_CheckTopHit: bset #6,$2A(a0) ; Set to indicate in hit stun move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l ; Play hit sound + jsr (Play_SFX).l ; Play hit sound loc_6E0D6: moveq #0,d0 @@ -146753,7 +146753,7 @@ loc_6E8A2: loc_6E8B6: moveq #signextendB(sfx_FloorThump),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w $1A(a0),d0 cmpi.w #$80,d0 blo.s loc_6E8D2 @@ -146981,7 +146981,7 @@ loc_6EB0C: loc_6EB16: moveq #signextendB(sfx_GravityMachine),d0 - jsr (sub_85E52).l + jsr (Play_SFX_Continuous).l jsr (Refresh_ChildPosition).l jsr (Animate_Raw).l bsr.w sub_6EC1E @@ -147168,7 +147168,7 @@ sub_6EC9E: bne.s loc_6ECC2 move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_6ECC2: bset #6,$2A(a0) @@ -147418,7 +147418,7 @@ loc_6EF3C: move.l #loc_6EF60,$34(a0) move.w #$78,$2E(a0) moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l locret_6EF58: rts @@ -147431,7 +147431,7 @@ loc_6EF5A: loc_6EF60: move.b #8,5(a0) moveq #signextendB(mus_Miniboss),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.b #mus_Miniboss,(Current_music+1).w rts ; --------------------------------------------------------------------------- @@ -148128,7 +148128,7 @@ loc_6F702: move.w #$1F,$2E(a0) move.l #loc_6F72E,$34(a0) moveq #signextendB(sfx_MechaLand),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -148482,7 +148482,7 @@ sub_6F994: beq.s loc_6F9DE move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_6F9B6: moveq #0,d0 @@ -149035,7 +149035,7 @@ loc_701B4: cmpi.b #4,$2E(a0) bne.s loc_701E8 moveq #signextendB(sfx_Charging),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_701D6: cmpi.b #$20,$2F(a0) @@ -149055,7 +149055,7 @@ loc_701EE: move.w #$1F,$2E(a0) move.l #loc_70262,$34(a0) moveq #signextendB(sfx_BossLazer),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -149169,7 +149169,7 @@ sub_70330: bne.s loc_7034A move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_7034A: bsr.w sub_70362 @@ -149310,7 +149310,7 @@ Obj_FBZEndBoss: move.w #$77,$2E(a0) move.l #loc_70632,$34(a0) moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l jsr (Create_New_Sprite).l bne.s loc_70620 move.l #Obj_Song_Fade_Transition,(a1) @@ -149800,7 +149800,7 @@ loc_70BA0: loc_70BB0: moveq #signextendB(sfx_FlamethrowerQuiet),d0 - jsr (sub_85E52).l + jsr (Play_SFX_Continuous).l jsr (Child_GetPriority).l jsr (Refresh_ChildPosition).l jsr (Animate_RawMultiDelay).l @@ -149852,7 +149852,7 @@ loc_70C4A: lea (Player_1).w,a1 subq.w #8,$10(a1) moveq #signextendB(sfx_FloorThump),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_70C66: jsr (MoveSprite_LightGravity).l @@ -149868,7 +149868,7 @@ sub_70C72: andi.b #$7F,d0 bne.s locret_70C8C moveq #signextendB(sfx_SpikeBalls),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_70C8C: rts @@ -150068,7 +150068,7 @@ sub_70E10: bne.s loc_70E34 move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_70E34: bset #6,$2A(a0) @@ -150368,7 +150368,7 @@ loc_7128A: move.w #$7F,$2E(a0) move.l #loc_712A8,$34(a0) moveq #signextendB(sfx_TunnelBooster),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -150396,7 +150396,7 @@ loc_712DA: move.w $3E(a0),$18(a0) move.w #$5F,$2E(a0) moveq #signextendB(sfx_BossRotate),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -150634,7 +150634,7 @@ loc_71566: move.b #8,5(a0) move.b #$8B,$28(a0) moveq #signextendB(sfx_BossRotate),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -150726,7 +150726,7 @@ loc_7164E: loc_71654: move.b #$14,5(a0) moveq #signextendB(sfx_LevelProjectile),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w #$400,$1A(a0) clr.w $18(a0) move.w #$45,$2E(a0) @@ -151022,7 +151022,7 @@ sub_718DA: bne.s loc_718FA move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_718FA: bset #6,$2A(a0) @@ -151334,7 +151334,7 @@ loc_71D02: loc_71D1E: move.l #loc_71D46,$34(a0) moveq #signextendB(sfx_FrostPuff),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bsr.w sub_7213A cmpi.w #2,$26(a0) bne.w locret_71C14 @@ -151844,7 +151844,7 @@ sub_7225C: loc_72284: move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_72292: bset #6,$2A(a0) @@ -152450,7 +152450,7 @@ loc_7285A: move.b #$A,5(a0) move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_7287A: jsr (BossFlash).l @@ -153389,7 +153389,7 @@ loc_732BA: tst.b 4(a0) bpl.s loc_732CE moveq #signextendB(sfx_Lazer),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_732CE: move.b #-$64,$28(a0) @@ -153624,7 +153624,7 @@ sub_734FA: move.b #$20,$20(a0) bset #6,$2A(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w $1A(a0),d0 asl.w #1,d0 cmpi.w #-$800,d0 @@ -154089,7 +154089,7 @@ loc_739B2: move.b #8,5(a0) clr.b (Scroll_lock).w moveq #signextendB(sfx_Rising),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w #-$40,$1A(a0) move.w #$DF,$2E(a0) move.l #loc_739F2,$34(a0) @@ -154128,7 +154128,7 @@ loc_73A20: loc_73A36: move.b #$C,5(a0) moveq #signextendB(sfx_TubeLauncher),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bra.w loc_73F1C ; --------------------------------------------------------------------------- @@ -154238,7 +154238,7 @@ loc_73B82: move.l #Delete_Current_Sprite,(a0) bset #7,$2A(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_741A0(pc),a2 jmp (CreateChild1_Normal).l ; --------------------------------------------------------------------------- @@ -154686,7 +154686,7 @@ sub_73FE2: bne.s loc_74006 move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_74006: bset #6,$2A(a0) @@ -155263,7 +155263,7 @@ loc_745F6: move.w #$14,(Screen_shake_flag).w move.w #3,$2E(a0) moveq #signextendB(sfx_BossHitFloor),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -155321,7 +155321,7 @@ loc_7468C: move.b #2,$20(a1) move.b #2,5(a1) moveq #signextendB(sfx_Spring),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- loc_746C8: @@ -156099,7 +156099,7 @@ sub_74FD2: loc_74FFA: move.b #$3C,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l movea.w $44(a0),a1 clr.b $28(a1) @@ -156484,7 +156484,7 @@ loc_7541A: bne.s locret_75442 subq.b #1,$42(a0) moveq #signextendB(sfx_ChopTree),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_75442: rts @@ -156552,7 +156552,7 @@ loc_754E0: cmpi.b #$12,$22(a0) bne.s loc_754F8 moveq #signextendB(sfx_ChopStuck),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_754F8: cmpi.b #$C,$23(a0) @@ -156570,7 +156570,7 @@ loc_75508: move.w #-$400,$18(a0) move.w #-$400,$1A(a0) moveq #signextendB(sfx_ChopStuck),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -157395,7 +157395,7 @@ sub_75D80: bne.s loc_75DA0 move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_75DA0: @@ -157661,7 +157661,7 @@ loc_7603E: move.w #$23,$2E(a0) move.l #loc_7606E,$34(a0) moveq #signextendB(sfx_Rising),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_76060: rts @@ -157692,7 +157692,7 @@ loc_7609A: move.w #$3F,$2E(a0) move.l #loc_760C4,$34(a0) moveq #signextendB(sfx_Dash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -157878,7 +157878,7 @@ loc_76318: loc_76356: moveq #signextendB(sfx_RobotnikSiren),d0 - jsr (sub_85E52).l + jsr (Play_SFX_Continuous).l jsr (sub_8638A).l moveq #0,d1 move.w (Camera_X_pos).w,d0 @@ -157944,7 +157944,7 @@ loc_76404: bset #0,$2A(a1) move.w #$5F,$2E(a0) moveq #signextendB(sfx_Grab),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l jsr (Create_New_Sprite).l bne.s loc_76456 move.l #loc_7646E,(a1) @@ -158040,7 +158040,7 @@ loc_7654A: addq.w #8,d0 move.w d0,$2E(a0) moveq #signextendB(sfx_WeatherMachine),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_7656E: jmp (Draw_And_Touch_Sprite).l @@ -158271,7 +158271,7 @@ loc_767B0: bne.s loc_767E8 move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bset #6,$2A(a0) clr.b $28(a0) clr.b $28(a4) @@ -158519,7 +158519,7 @@ loc_76A42: move.l #loc_76A8A,$34(a0) move.w #$78,$2E(a0) moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l lea (ArtKosM_SOZMiniboss).l,a1 move.w #$76A0,d2 jsr (Queue_Kos_Module).l @@ -158566,7 +158566,7 @@ loc_76AC8: move.b #$3B,$1E(a0) move.l #loc_76B30,$34(a0) moveq #signextendB(mus_Miniboss),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.b #mus_Miniboss,(Current_music+1).w move.w #$3F,$2E(a0) move.l #loc_76B30,$34(a0) @@ -158704,7 +158704,7 @@ loc_76C72: move.l #byte_7746A,$30(a0) move.w #$14,(Screen_shake_flag).w moveq #signextendB(sfx_BossHitFloor),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_77402(pc),a2 jmp (CreateChild3_NormalRepeated).l ; --------------------------------------------------------------------------- @@ -158722,7 +158722,7 @@ loc_76CA2: clr.w $1A(a0) move.w #8,(Screen_shake_flag).w moveq #signextendB(sfx_Crash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_7740A(pc),a2 jmp (CreateChild3_NormalRepeated).l ; --------------------------------------------------------------------------- @@ -159316,7 +159316,7 @@ sub_772F6: move.b d0,$3A(a0) move.b d0,$39(a0) moveq #signextendB(sfx_Collapse),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l movea.w $44(a0),a1 move.w #$200,d0 move.w $10(a1),d1 @@ -159512,7 +159512,7 @@ loc_776EA: move.b #4,5(a0) move.w #$3B,$2E(a0) moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l locret_7770E: rts @@ -159523,7 +159523,7 @@ loc_77710: bpl.w locret_77AF6 move.b #6,5(a0) moveq #signextendB(mus_EndBoss),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.b #mus_EndBoss,(Current_music+1).w loc_7772C: @@ -159571,7 +159571,7 @@ loc_77790: move.w $46(a0),$2E(a0) move.w #$14,(Screen_shake_flag).w moveq #signextendB(sfx_ThumpBoss),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_777CA: rts @@ -160138,7 +160138,7 @@ loc_77E56: move.l #loc_77E74,(a0) move.w #8,$2E(a0) moveq #signextendB(sfx_Lazer),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_7833A(pc),a2 jsr (CreateChild1_Normal).l @@ -160330,7 +160330,7 @@ sub_7806C: bpl.w locret_77AF6 move.w #$200,(_unkFA82).w moveq #signextendB(sfx_Charging),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_7832C(pc),a2 jmp (CreateChild1_Normal).l ; End of function sub_7806C @@ -160521,7 +160521,7 @@ loc_781E4: bset #6,$2A(a0) move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_7820A: moveq #0,d0 @@ -160792,7 +160792,7 @@ loc_78606: clr.w $18(a0) move.w #-$400,$1A(a0) moveq #signextendB(sfx_BossHand),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea byte_78DE2(pc),a1 jmp (Set_Raw_Animation).l ; --------------------------------------------------------------------------- @@ -160870,7 +160870,7 @@ loc_786EA: move.l #loc_7873A,$34(a0) move.w #$14,(Screen_shake_flag).w moveq #signextendB(sfx_ThumpBoss),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -161135,7 +161135,7 @@ loc_789CA: loc_789E6: moveq #signextendB(sfx_BossProjectile),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_78D90(pc),a2 jsr (CreateChild10_NormalAdjusted).l bne.s locret_78A00 @@ -161356,7 +161356,7 @@ sub_78C14: bne.s loc_78C3A move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bset #6,$2A(a0) loc_78C3A: @@ -161440,7 +161440,7 @@ sub_78CF4: bne.s loc_78D1E move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_78D98(pc),a2 jsr (CreateChild6_Simple).l @@ -161644,7 +161644,7 @@ off_79016: dc.w loc_7901A-off_79016 loc_7901A: moveq #signextendB(sfx_RobotnikSiren),d0 - jsr (sub_85E52).l + jsr (Play_SFX_Continuous).l loc_79022: jsr (Swing_UpAndDown).l @@ -161674,7 +161674,7 @@ loc_79072: tst.b 4(a0) bpl.s loc_790A6 moveq #signextendB(sfx_RobotnikSiren),d0 - jsr (sub_85E52).l + jsr (Play_SFX_Continuous).l jsr (Swing_UpAndDown).l jsr (MoveSprite2).l move.w $2E(a0),d0 @@ -161719,7 +161719,7 @@ loc_790D8: loc_790E8: move.l #loc_7910A,(a0) moveq #signextendB(sfx_Targeting),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_79672(pc),a2 jsr (CreateChild6_Simple).l lea ChildObjDat_79658(pc),a2 @@ -161738,7 +161738,7 @@ loc_79118: move.w d0,(Events_bg+$0C).w move.w #$480,(Events_bg+$0E).w moveq #signextendB(sfx_MissileExplode),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_79686(pc),a2 jsr (CreateChild6_Simple).l jmp (Go_Delete_Sprite).l @@ -161916,7 +161916,7 @@ loc_79334: loc_79346: move.l #loc_7935E,(a0) moveq #signextendB(sfx_MissileShoot),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_7964C(pc),a2 jmp (CreateChild6_Simple).l ; --------------------------------------------------------------------------- @@ -161976,7 +161976,7 @@ loc_79416: move.b #-$80,(Palette_cycle_counters+$00).w move.w #$F,$2E(a0) moveq #signextendB(sfx_SuperTransform),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea (Normal_palette).w,a1 lea (Target_palette).w,a2 moveq #7,d6 @@ -162013,7 +162013,7 @@ loc_79486: bset #0,(_unkFAB8).w st (Events_fg_4).w moveq #signextendB(sfx_SuperEmerald),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l jsr (Create_New_Sprite).l bne.s loc_794BE move.l #loc_85EE6,(a1) @@ -162364,7 +162364,7 @@ loc_7981E: move.w #-$12,$26(a0) move.w #-$580,$1A(a0) moveq #signextendB(sfx_BossMagma),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_7A18C(pc),a2 jmp (CreateChild1_Normal).l ; --------------------------------------------------------------------------- @@ -162417,7 +162417,7 @@ loc_798C6: subi.w #$10,$3A(a0) move.w $3A(a0),$2E(a0) moveq #signextendB(sfx_BossProjectile),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_7A19A(pc),a2 jmp (CreateChild1_Normal).l ; --------------------------------------------------------------------------- @@ -162474,7 +162474,7 @@ loc_7995E: loc_7997A: move.w d1,$10(a0) moveq #signextendB(sfx_BossMagma),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -162968,7 +162968,7 @@ loc_79EE6: loc_79EFA: jsr (Delete_Current_Sprite).l moveq #signextendB(sfx_ThumpBoss),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l addq.w #4,sp rts ; End of function sub_79EB6 @@ -163025,7 +163025,7 @@ sub_79F58: beq.s loc_79F9A move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_79F7A: moveq #0,d0 @@ -163091,7 +163091,7 @@ sub_79FFE: jsr (Go_Delete_Sprite).l jsr (Displace_PlayerOffObject).l moveq #signextendB(sfx_Clank),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l addq.w #4,sp rts ; End of function sub_79FFE @@ -163316,7 +163316,7 @@ Obj_SSZGHZBoss: move.w #$1F,$2E(a0) move.l #loc_7A294,$34(a0) moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l jsr (Create_New_Sprite).l bne.s loc_7A244 move.l #Obj_Song_Fade_Transition,(a1) @@ -163639,7 +163639,7 @@ sub_7A5A0: bne.s loc_7A5C6 move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bset #6,$2A(a0) loc_7A5C6: @@ -163754,7 +163754,7 @@ Obj_SSZMTZBoss: move.w #$1F,$2E(a0) move.l #loc_7A712,$34(a0) moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l jsr (Create_New_Sprite).l bne.s loc_7A6DC move.l #Obj_Song_Fade_Transition,(a1) @@ -164219,7 +164219,7 @@ loc_7ABCE: loc_7ABE2: move.w d0,$18(a0) moveq #signextendB(sfx_Lazer),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_7ABEE: jsr (MoveSprite2).l @@ -164330,7 +164330,7 @@ sub_7ACF2: bne.s loc_7AD1A move.b #$20,$1C(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_7AD1A: moveq #0,d0 @@ -164734,7 +164734,7 @@ word_7B10E: dc.w Player_1 loc_7B116: moveq #signextendB(sfx_Balloon),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l movea.l $34(a0),a1 subi.b #1,$30(a1) jmp (Delete_Current_Sprite).l @@ -165076,7 +165076,7 @@ loc_7B4EC: clr.b $23(a0) clr.b $24(a0) moveq #signextendB(sfx_MechaLand),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l btst #3,$38(a0) bne.s loc_7B520 move.l #byte_7D596,$30(a0) @@ -165204,7 +165204,7 @@ loc_7B666: move.w d1,$40(a0) clr.w $1A(a0) moveq #signextendB(sfx_Dash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -165241,7 +165241,7 @@ loc_7B6C0: move.b #$1C,5(a0) move.w #-$900,$1A(a0) moveq #signextendB(sfx_Thump),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -165273,7 +165273,7 @@ loc_7B70E: move.l #loc_7B754,$34(a0) bset #2,$38(a0) moveq #signextendB(sfx_MechaLand),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_7D480(pc),a2 jsr (CreateChild6_Simple).l bne.s locret_7B70C @@ -165320,7 +165320,7 @@ loc_7B7A8: move.w d0,$18(a0) move.w d1,$40(a0) moveq #signextendB(sfx_Dash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -165408,7 +165408,7 @@ loc_7B888: lea ChildObjDat_7D48C(pc),a2 jsr (CreateChild6_Simple).l moveq #signextendB(sfx_MechaLand),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l tst.b (Current_act).w bne.s loc_7B8E6 move.b #4,5(a0) @@ -165432,7 +165432,7 @@ loc_7B8E6: move.w #$BF,$2E(a0) move.l #loc_7B996,$34(a0) moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l st (Ctrl_2_locked).w rts ; --------------------------------------------------------------------------- @@ -165487,7 +165487,7 @@ loc_7B996: clr.b $38(a0) ori.b #$50,$38(a0) moveq #signextendB(mus_DDZ),d0 - jsr (Play_Sound).l + jsr (Play_Music).l lea ChildObjDat_7D492(pc),a2 jsr (CreateChild1_Normal).l lea (ArtKosM_EndingMasterEmerald).l,a1 @@ -165527,7 +165527,7 @@ loc_7BA22: loc_7BA28: moveq #signextendB(sfx_Spindash),d0 - jsr (sub_85E52).l + jsr (Play_SFX_Continuous).l subq.w #1,$2E(a0) bmi.s loc_7BA38 rts @@ -165632,7 +165632,7 @@ loc_7BB7C: clr.b $38(a0) bset #7,$38(a0) moveq #signextendB(sfx_MechaLand),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea (word_7D9EA).l,a1 bsr.w sub_7C678 lea ChildObjDat_7D48C(pc),a2 @@ -165646,7 +165646,7 @@ locret_7BBAA: loc_7BBAC: moveq #signextendB(sfx_MechaTransform),d0 - jsr (sub_85E52).l + jsr (Play_SFX_Continuous).l jsr (Run_PalRotationScript).l bchg #6,(_unkFAB8).w jmp (Animate_RawMultiDelay).l @@ -165694,7 +165694,7 @@ loc_7BC3E: move.l #loc_7BC70,$34(a0) bclr #7,4(a0) moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l addi.w #$20,$14(a0) lea ChildObjDat_7D4CA(pc),a2 jmp (CreateChild6_Simple).l @@ -165768,7 +165768,7 @@ sub_7BD30: subq.b #1,$39(a0) bmi.s locret_7BD4A moveq #signextendB(sfx_MissileExplode),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_7BD4A: rts @@ -165828,7 +165828,7 @@ off_7BD76: dc.w loc_7BDBE-off_7BD76 loc_7BDBE: moveq #signextendB(sfx_MechaTransform),d0 - jsr (sub_85E52).l + jsr (Play_SFX_Continuous).l jsr (Run_PalRotationScript).l bchg #6,(_unkFAB8).w jmp (Animate_RawMultiDelay).l @@ -165893,7 +165893,7 @@ loc_7BE7E: loc_7BE92: moveq #signextendB(sfx_SuperTransform),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -166068,7 +166068,7 @@ loc_7C06E: move.w #$1F,$2E(a0) move.l #loc_7C12E,$34(a0) moveq #signextendB(sfx_Roll),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea (Player_1).w,a1 moveq #0,d0 move.w $10(a1),d0 @@ -166097,7 +166097,7 @@ loc_7C0B6: loc_7C0E0: move.w d1,$40(a0) moveq #signextendB(sfx_MissileShoot),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea byte_7D652(pc),a1 jsr (Set_Raw_Animation).l bset #6,$38(a0) @@ -166138,7 +166138,7 @@ loc_7C15C: move.w #$3F,$2E(a0) move.l #loc_7C17A,$34(a0) moveq #signextendB(sfx_Crash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -166207,7 +166207,7 @@ loc_7C232: move.b #$1F,$1E(a0) move.l #loc_7C274,$34(a0) moveq #signextendB(sfx_MechaLand),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -166230,7 +166230,7 @@ loc_7C274: clr.w $1A(a0) move.l #loc_7C2BE,$34(a0) moveq #signextendB(sfx_MechaLand),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea byte_7D556(pc),a1 jmp (Set_Raw_Animation).l ; --------------------------------------------------------------------------- @@ -166347,7 +166347,7 @@ loc_7C410: move.b #$30,5(a0) move.l #loc_7C436,$34(a0) moveq #signextendB(sfx_MechaLand),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea byte_7D510(pc),a1 jmp (Set_Raw_Animation).l ; --------------------------------------------------------------------------- @@ -166374,7 +166374,7 @@ loc_7C458: loc_7C46A: move.b #$34,5(a0) moveq #signextendB(sfx_MechaLand),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bset #0,4(a0) move.w #$400,d0 move.w $10(a0),d1 @@ -166429,7 +166429,7 @@ loc_7C4F8: move.b #$38,5(a0) move.l #loc_7C522,$34(a0) moveq #signextendB(sfx_MechaLand),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea byte_7D5C1(pc),a1 jmp (Set_Raw_Animation).l ; --------------------------------------------------------------------------- @@ -166467,7 +166467,7 @@ loc_7C578: move.b #0,5(a0) move.l #loc_7BDD8,$34(a0) moveq #signextendB(sfx_MechaLand),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea byte_7D5B6(pc),a1 jsr Set_Raw_Animation(pc) bra.w loc_7BB7C @@ -166610,7 +166610,7 @@ loc_7C6F0: cmpi.b #8,$23(a0) bne.w locret_7B448 moveq #signextendB(sfx_BossProjectile),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_7D4A8(pc),a2 jmp CreateChild6_Simple(pc) ; --------------------------------------------------------------------------- @@ -166647,7 +166647,7 @@ loc_7C756: loc_7C764: move.l #loc_7C77A,(a0) moveq #signextendB(sfx_BossLazer),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l moveq #2,d5 jmp (loc_861C0).l ; --------------------------------------------------------------------------- @@ -166789,7 +166789,7 @@ loc_7C902: move.l #loc_7C91C,(a0) bsr.w sub_7D236 moveq #signextendB(sfx_Roll),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_7C91C: lea byte_7D65F(pc),a1 @@ -166822,7 +166822,7 @@ loc_7C964: cmpi.w #$E88,(Normal_palette_line_2+$12).w bne.w locret_7B448 moveq #signextendB(sfx_MechaSpark),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l moveq #0,d0 bchg #0,$39(a0) bne.s loc_7C990 @@ -167181,7 +167181,7 @@ loc_7CDD2: clr.b $3D(a1) jsr (Player_Load_PLC).l moveq #signextendB(sfx_Grab),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_7CE12: jsr (Refresh_ChildPositionAdjusted).l @@ -167797,7 +167797,7 @@ sub_7D312: bne.s loc_7D338 move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bset #6,$2A(a0) loc_7D338: @@ -168437,7 +168437,7 @@ loc_7DE6E: andi.b #$1F,d0 bne.s loc_7DE8E moveq #signextendB(sfx_GravityTunnel),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_7DE8E: bra.w loc_7EE36 @@ -168643,7 +168643,7 @@ loc_7E0A6: andi.b #$3F,d0 bne.s loc_7E0B8 moveq #signextendB(sfx_WaveHover),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_7E0B8: bsr.w sub_7EE88 @@ -168892,7 +168892,7 @@ loc_7E366: loc_7E37A: moveq #signextendB(sfx_BigRumble),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_7E382: rts @@ -168938,7 +168938,7 @@ loc_7E3EC: move.w $10(a1),$10(a0) move.w $14(a1),$14(a0) moveq #signextendB(sfx_SuperTransform),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_7E416: subi.w #$10,(Player_1+y_pos).w @@ -169536,7 +169536,7 @@ loc_7EA3C: andi.b #$1F,d0 bne.s loc_7EA5E moveq #signextendB(sfx_BossPanic),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_7EA5E: bsr.w sub_7EB34 @@ -170000,7 +170000,7 @@ sub_7EDD0: bne.s loc_7EDF2 move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l movea.w $46(a0),a1 addq.b #1,$29(a1) @@ -170315,7 +170315,7 @@ loc_7F0DA: andi.b #$3F,d0 bne.s loc_7F0FE moveq #signextendB(sfx_WaveHover),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_7F0FE: jmp Draw_And_Touch_Sprite(pc) @@ -170436,7 +170436,7 @@ loc_7F234: lea (Child6_CreateBossExplosion).l,a2 jsr (CreateChild6_Simple).l moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l rts ; --------------------------------------------------------------------------- @@ -170470,7 +170470,7 @@ loc_7F2B4: move.l #loc_7F2DC,(a0) clr.b (Boss_flag).w moveq #signextendB(mus_DEZ2),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.w #$3620,(Camera_stored_max_X_pos).w jsr (Create_New_Sprite).l bne.s locret_7F2DA @@ -170588,7 +170588,7 @@ loc_7F3F6: bpl.s loc_7F40A move.l #loc_7F414,(a0) moveq #signextendB(sfx_MushroomBounce),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_7F40A: movea.w $46(a0),a1 @@ -171290,7 +171290,7 @@ sub_7FA7E: clr.b $40(a1) move.b #1,$20(a0) moveq #signextendB(sfx_Bumper),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_7FACA: rts @@ -171420,7 +171420,7 @@ sub_7FB92: beq.s loc_7FBD6 move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_7FBB2: moveq #0,d0 @@ -171857,7 +171857,7 @@ loc_7FF6A: move.w #$1F,$2E(a0) move.w #$14,(Screen_shake_flag).w moveq #signextendB(sfx_ThumpBoss),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l moveq #0,d0 move.b $30(a0),d0 jmp loc_7FF8E(pc,d0.w) @@ -172614,7 +172614,7 @@ loc_807BC: move.l #loc_80802,$34(a0) move.b #$13,$39(a0) moveq #signextendB(sfx_Charging),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_807EE: bsr.w sub_80FFA @@ -172657,7 +172657,7 @@ loc_8083C: move.l #loc_80888,$34(a0) bclr #7,4(a0) moveq #signextendB(sfx_MissileExplode),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_8086C: jsr Animate_RawMultiDelay(pc) @@ -172750,7 +172750,7 @@ loc_80956: move.w #$B0,$42(a0) move.w #-$18,$44(a0) moveq #signextendB(sfx_Blast),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -173053,7 +173053,7 @@ loc_80C60: andi.w #$C,d0 move.w d0,(Screen_shake_flag).w moveq #signextendB(sfx_ThumpBoss),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_80C88: rts @@ -173207,7 +173207,7 @@ sub_80E2C: bne.s loc_80E70 move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bset #6,$2A(a0) btst #7,$38(a0) beq.s loc_80E70 @@ -173519,7 +173519,7 @@ sub_810FA: bne.s loc_81128 move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bset #6,$2A(a0) loc_81128: @@ -173583,7 +173583,7 @@ sub_8119A: bne.s loc_811DA move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea (Player_1).w,a1 tst.b $1C(a0) beq.s loc_811C8 @@ -174022,7 +174022,7 @@ loc_8160A: move.b #0,(Player_1+invincibility_timer).w bset #Status_Invincible,(Player_1+status_secondary).w moveq #signextendB(sfx_Whistle),d0 ; This is not the normal Super transformation SFX - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- loc_8167C: @@ -174264,7 +174264,7 @@ loc_81974: loc_8197C: moveq #signextendB(sfx_Rumble2),d0 - jsr (sub_85E52).l + jsr (Play_SFX_Continuous).l move.w #$160,d2 move.w #$130,d3 bsr.w sub_830C0 @@ -174277,7 +174277,7 @@ loc_8197C: ori.b #$30,$38(a0) move.w #$1F,$2E(a0) moveq #signextendB(sfx_MissileExplode),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l jsr (Create_New_Sprite).l bne.s loc_819CE move.l #loc_83108,(a1) @@ -174343,7 +174343,7 @@ loc_81A74: bset #7,$38(a0) bne.s loc_81A9C moveq #signextendB(sfx_Blast),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l clr.w $1A(a0) loc_81A9C: @@ -174493,7 +174493,7 @@ loc_81C2C: andi.b #7,d0 bne.s loc_81C3E moveq #signextendB(sfx_MissileExplode),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_81C3E: addi.w #$10,$1A(a0) @@ -174824,7 +174824,7 @@ loc_81FB0: addq.w #1,d2 dbf d1,loc_81FB0 moveq #signextendB(sfx_TubeLauncher),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_81FDA: movea.w $46(a0),a1 @@ -174866,7 +174866,7 @@ loc_82038: bpl.s loc_8204C move.l #loc_8204C,(a0) moveq #signextendB(sfx_Dash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_8204C: move.w (_unkFAAE).w,d0 @@ -175041,7 +175041,7 @@ loc_82224: loc_8222A: moveq #signextendB(sfx_Collapse),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w (_unkFA8E).w,d0 beq.s loc_82240 movea.w d0,a2 @@ -175327,7 +175327,7 @@ loc_824F4: addi.w #$20,d0 move.w d0,$14(a0) moveq #signextendB(sfx_TubeLauncher),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_83294(pc),a2 jmp CreateChild1_Normal(pc) ; --------------------------------------------------------------------------- @@ -176057,7 +176057,7 @@ sub_82BE4: beq.s locret_82C1E move.b #$3B,$34(a1) moveq #signextendB(sfx_Explode),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_82C18: jsr (Go_Delete_Sprite).l @@ -176195,7 +176195,7 @@ loc_82D18: bne.s loc_82D3E move.b #$20,$20(a0) moveq #signextendB(sfx_ThumpBoss),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_82D3E: moveq #0,d0 @@ -176259,7 +176259,7 @@ loc_82DCE: move.b #$20,$20(a0) move.b #$5A,(Player_1+invulnerability_timer).w moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bsr.w sub_82C6A move.w (_unkFA8E).w,d0 beq.s loc_82E14 @@ -176317,7 +176317,7 @@ loc_82E9A: moveq #$18,d0 bsr.w sub_82D72 moveq #signextendB(sfx_MissileExplode),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w #$1F,$2E(a0) moveq #0,d1 move.b $39(a0),d1 @@ -176362,7 +176362,7 @@ loc_82F1C: bpl.s locret_82F6A move.w #$1F,$2E(a0) moveq #signextendB(sfx_MissileExplode),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l moveq #0,d1 move.b $39(a0),d1 lea word_82F6C(pc,d1.w),a2 @@ -176496,7 +176496,7 @@ sub_8307C: cmp.w (Player_1+y_pos).w,d0 bhs.s loc_830B8 moveq #signextendB(sfx_BossProjectile),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_83288(pc),a2 jmp CreateChild6_Simple(pc) ; --------------------------------------------------------------------------- @@ -176831,7 +176831,7 @@ Obj_HiddenMonitorMain: loc_8374C: moveq #signextendB(sfx_GroundSlide),d0 ; If signpost has landed - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.l #Sprite_OnScreen_Test,(a0) loc_8375A: @@ -176845,7 +176845,7 @@ loc_83760: move.b #4,$3C(a0) move.w #-$500,$1A(a0) moveq #signextendB(sfx_BubbleAttack),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bclr #0,4(a0) beq.s loc_83798 bset #7,$A(a0) @@ -176901,7 +176901,7 @@ loc_83816: subi.w #$20,d0 move.w d0,$14(a0) ; Place vertical position at top of screen moveq #signextendB(sfx_Signpost),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea Child1_EndSignStub(pc),a2 ; Make the little stub at the bottom of the signpost jmp CreateChild1_Normal(pc) ; --------------------------------------------------------------------------- @@ -177140,7 +177140,7 @@ loc_83A92: move.w d0,$18(a0) ; Modify strength of X velocity based on how far to the left/right player is move.w #-$200,$1A(a0) ; New vertical velocity is always the same moveq #signextendB(sfx_Signpost),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea Child6_EndSignScore(pc),a2 jsr CreateChild6_Simple(pc) moveq #$A,d0 @@ -177585,7 +177585,7 @@ loc_83F52: move.l #Obj_BossExplosionAnim,(a0) move.l #Go_Delete_Sprite,$34(a0) moveq #signextendB(sfx_Explode),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l Obj_BossExplosionAnim: lea AniRaw_BossExplosion(pc),a1 @@ -177605,7 +177605,7 @@ Obj_BossExplosionOffset: move.l #Obj_BossExplosionOffsetAnim,(a0) move.l #Go_Delete_Sprite,$34(a0) moveq #signextendB(sfx_Explode),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l Obj_BossExplosionOffsetAnim: move.w (Level_repeat_offset).w,d0 @@ -181063,7 +181063,7 @@ Map_Offscreen: dc.w 0 Obj_Song_Fade_ToLevelMusic: move.w #$78,$2E(a0) moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.l #loc_85B1E,(a0) loc_85B1E: @@ -181076,7 +181076,7 @@ loc_85B1E: Obj_Song_Fade_Transition: move.w #$5A,$2E(a0) moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.l #loc_85B44,(a0) loc_85B44: @@ -181084,7 +181084,7 @@ loc_85B44: bpl.w locret_8405E move.b $2C(a0),d0 move.b d0,(Current_music+1).w - jsr (Play_Sound).l + jsr (Play_Music).l jmp (Delete_Current_Sprite).l ; =============== S U B R O U T I N E ======================================= @@ -181104,7 +181104,7 @@ Restore_LevelMusic: moveq #signextendB(mus_Invincibility),d0 ; If invincible, play invincibility loc_85B84: - jmp (Play_Sound).l + jmp (Play_Music).l ; End of function Restore_LevelMusic @@ -181240,7 +181240,7 @@ loc_85CA4: bpl.s loc_85CC6 move.b $26(a0),d0 move.b d0,(Current_music+1).w - jsr (Play_Sound).l + jsr (Play_Music).l bset #0,$27(a0) loc_85CC6: @@ -181310,7 +181310,7 @@ sub_85D6A: loc_85D70: moveq #signextendB(mus_FadeOut),d0 - jsr (Play_Sound).l + jsr (Play_Music).l move.w #$78,$2E(a0) loc_85D7E: @@ -181403,12 +181403,12 @@ StartNewLevel: ; =============== S U B R O U T I N E ======================================= -sub_85E52: +Play_SFX_Continuous: move.b (V_int_run_count+3).w,d1 andi.b #$F,d1 bne.w locret_8405E - jmp (Play_Sound_2).l -; End of function sub_85E52 + jmp (Play_SFX).l +; End of function Play_SFX_Continuous ; --------------------------------------------------------------------------- @@ -181759,7 +181759,7 @@ loc_86116: loc_86132: moveq #signextendB(sfx_RingRight),d0 - jmp (Play_Sound).l + jmp (Play_Music).l ; --------------------------------------------------------------------------- loc_8613A: @@ -181767,7 +181767,7 @@ loc_8613A: addq.b #1,(Life_count).w addq.b #1,(Update_HUD_life_count).w moveq #signextendB(mus_ExtraLife),d0 - jmp (Play_Sound).l + jmp (Play_Music).l ; =============== S U B R O U T I N E ======================================= @@ -182071,7 +182071,7 @@ sub_8635E: move.b #$10,$20(a1) move.b #2,5(a1) moveq #signextendB(sfx_Spring),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; End of function sub_8635E @@ -182159,7 +182159,7 @@ loc_86438: andi.b #$F,d1 bne.w locret_8405E moveq #signextendB(sfx_Rumble2),d0 - jmp (Play_Sound_2).l + jmp (Play_SFX).l ; --------------------------------------------------------------------------- loc_86452: @@ -183066,7 +183066,7 @@ loc_86DC6: loc_86DD8: moveq #signextendB(sfx_Projectile),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_86E2A(pc),a2 jsr CreateChild2_Complex(pc) bne.s locret_86DFA @@ -183243,7 +183243,7 @@ loc_86F92: move.l #loc_86FCE,$34(a0) bset #1,$38(a0) moveq #signextendB(sfx_Blast),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_8712A(pc),a2 jsr CreateChild1_Normal(pc) bne.s locret_86FCC @@ -183343,7 +183343,7 @@ loc_8707E: loc_87084: move.b d1,$22(a0) moveq #signextendB(sfx_Blast),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_87122(pc),a2 jsr CreateChild1_Normal(pc) bne.s locret_870A2 @@ -183990,7 +183990,7 @@ loc_8760A: bset #0,$38(a0) move.b #4,$22(a0) moveq #signextendB(sfx_MissileThrow),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea (ChildObjDat_8769C).l,a2 jsr CreateChild2_Complex(pc) bne.s locret_875DE @@ -184380,7 +184380,7 @@ loc_87976: tst.b 4(a0) bpl.w locret_87974 moveq #signextendB(sfx_Projectile),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_879F8(pc),a2 jmp CreateChild5_ComplexAdjusted(pc) ; --------------------------------------------------------------------------- @@ -184821,7 +184821,7 @@ loc_87D86: move.w d0,$18(a0) move.w #-$400,$1A(a0) moveq #signextendB(sfx_FloorLauncher),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_87EEE(pc),a2 jsr CreateChild1_Normal(pc) jmp Sprite_CheckDeleteTouchXY(pc) @@ -184898,7 +184898,7 @@ loc_87E48: move.l #loc_87E66,(a0) move.b $2C(a0),$2F(a0) moveq #signextendB(sfx_Splash),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -185277,7 +185277,7 @@ loc_88230: loc_88236: move.w d0,(Ring_count).w moveq #signextendB(sfx_RingRight),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_88242: moveq #0,d0 @@ -185447,7 +185447,7 @@ loc_883E6: cmpi.b #4,$23(a0) bne.s loc_883FC moveq #signextendB(sfx_ChainTick),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_883FC: jsr Swing_UpAndDown(pc) @@ -185581,7 +185581,7 @@ loc_88540: andi.b #7,d1 bne.s loc_88556 moveq #signextendB(sfx_Rumble2),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bsr.w sub_88A32 loc_88556: @@ -185727,7 +185727,7 @@ loc_886FC: andi.b #7,d1 bne.s loc_88712 moveq #signextendB(sfx_Rumble2),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bsr.w sub_88A32 loc_88712: @@ -186047,7 +186047,7 @@ sub_88A62: bne.s loc_88A88 move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bset #6,$2A(a0) loc_88A88: @@ -186338,7 +186338,7 @@ loc_88D02: cmpi.b #4,$22(a0) bne.s locret_88D26 moveq #signextendB(sfx_Projectile),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_88E32(pc),a2 jsr CreateChild5_ComplexAdjusted(pc) @@ -186408,7 +186408,7 @@ sub_88DA6: clr.b $40(a1) bclr #4,$2A(a1) moveq #signextendB(sfx_Spring),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; End of function sub_88DA6 @@ -186788,7 +186788,7 @@ loc_890F2: move.b #2,5(a1) clr.b $40(a1) moveq #signextendB(sfx_Spring),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; End of function sub_890D8 @@ -186918,7 +186918,7 @@ loc_89224: move.w #$20,$2E(a0) move.l #loc_8924E,$34(a0) moveq #signextendB(sfx_Lightning),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l tst.b 4(a0) bpl.w locret_891EC lea ChildObjDat_8935A(pc),a2 @@ -188025,7 +188025,7 @@ loc_89DC4: loc_89DCC: move.w #$FF00|sfx_RingLoss,d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_89EF0(pc),a2 jmp CreateChild1_Normal(pc) ; --------------------------------------------------------------------------- @@ -188567,7 +188567,7 @@ loc_8A2E2: jsr CreateChild6_Simple(pc) jsr Go_Delete_Sprite(pc) moveq #signextendB(sfx_Collapse),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l jmp (Sprite_OnScreen_Test).l ; --------------------------------------------------------------------------- word_8A2FC: dc.w $FFD0, $60, $FFC0, $80 @@ -188873,7 +188873,7 @@ loc_8A540: move.w #$1F,$2E(a0) move.l #loc_8A59A,$34(a0) moveq #signextendB(sfx_MechaLand),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -189004,7 +189004,7 @@ loc_8A656: clr.w $30(a0) clr.b $39(a0) moveq #signextendB(sfx_FrostPuff),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_8A67A: jmp Sprite_CheckDeleteTouch(pc) @@ -189040,7 +189040,7 @@ loc_8A6C6: move.l #loc_8A656,(a0) bclr #1,$38(a0) moveq #signextendB(mus_StopSFX),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l jmp Sprite_CheckDeleteTouch(pc) ; --------------------------------------------------------------------------- word_8A6DE: dc.w $40 @@ -189620,7 +189620,7 @@ loc_8AC54: bclr #0,$38(a0) move.w #$10,(Screen_shake_flag).w moveq #signextendB(sfx_MechaLand),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; =============== S U B R O U T I N E ======================================= @@ -189661,7 +189661,7 @@ loc_8AC8E: jsr Displace_PlayerOffObject(pc) jsr Go_Delete_Sprite(pc) moveq #signextendB(sfx_Collapse),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l addq.w #4,sp locret_8ACCC: @@ -190301,7 +190301,7 @@ loc_8B1FA: lea ChildObjDat_8B292(pc),a2 jsr CreateChild6_Simple(pc) moveq #signextendB(sfx_FloorThump),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_8B224: jmp Sprite_CheckDeleteTouch(pc) @@ -190503,7 +190503,7 @@ loc_8B41A: lea ChildObjDat_8B480(pc),a2 jsr CreateChild1_Normal(pc) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l jsr (Go_Delete_Sprite).l locret_8B430: @@ -190603,7 +190603,7 @@ loc_8B512: jsr CreateChild6_Simple(pc) jsr Go_Delete_Sprite(pc) moveq #signextendB(sfx_IceSpikes),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- word_8B52C: dc.w Player_1 @@ -191542,7 +191542,7 @@ sub_8BDC2: andi.w #3,d0 bne.s locret_8BD6A moveq #signextendB(sfx_SlideSkidQuiet),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_8BDFA(pc),a2 jmp CreateChild1_Normal(pc) ; End of function sub_8BDC2 @@ -191964,7 +191964,7 @@ loc_8C1D8: tst.b 4(a0) bpl.s locret_8C21C moveq #signextendB(sfx_Projectile),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_8C29E(pc),a2 jsr (CreateChild2_Complex).l movea.w $46(a0),a2 @@ -192767,7 +192767,7 @@ loc_8C8C6: move.l #loc_8C8E6,(a0) move.l #Go_Delete_Sprite,$34(a0) moveq #signextendB(sfx_Lazer),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_8C8E6: addq.w #1,$3A(a0) @@ -193264,7 +193264,7 @@ loc_8CD98: loc_8CD9C: bset #3,$38(a0) moveq #signextendB(sfx_BossActivate),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_8D264(pc),a2 jsr (CreateChild1_Normal).l jmp Go_Delete_Sprite_2(pc) @@ -193537,7 +193537,7 @@ locret_8D080: loc_8D082: bset #3,$38(a0) moveq #signextendB(sfx_BossActivate),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_8D264(pc),a2 jsr (CreateChild1_Normal).l bne.s loc_8D0AA @@ -193669,7 +193669,7 @@ sub_8D1FC: bne.s loc_8D21C move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bset #6,$2A(a0) loc_8D21C: @@ -193777,7 +193777,7 @@ loc_8D2B6: move.w #$3F,$2E(a0) move.l #loc_8D344,$34(a0) moveq #signextendB(sfx_Rising),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l st (Anim_Counters+$F).w move.w #$6000,(Camera_stored_max_X_pos).w lea (Child6_IncLevX).l,a2 @@ -193848,7 +193848,7 @@ loc_8D3F2: move.w #-$200,$18(a0) move.w #-$200,$1A(a0) moveq #signextendB(sfx_Thump),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -194106,7 +194106,7 @@ loc_8D680: move.l #byte_8D9DD,$30(a0) move.l #loc_8D6AE,$34(a0) moveq #signextendB(sfx_SpikeMove),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_8D9C8(pc),a2 btst #0,4(a0) beq.s loc_8D6A8 @@ -194274,7 +194274,7 @@ loc_8D846: bge.s loc_8D85E move.w #-$500,$1A(a0) moveq #signextendB(sfx_Flipper),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -194357,7 +194357,7 @@ sub_8D8E6: move.w a2,$44(a0) move.b #6,5(a0) moveq #signextendB(sfx_Flipper),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w $18(a0),d0 lsl.w #1,d0 move.w d0,$18(a2) @@ -194396,7 +194396,7 @@ sub_8D94A: move.w #0,8(a0) move.l #loc_8D846,$34(a0) moveq #signextendB(sfx_Flipper),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l bset #1,$2A(a2) move.b #1,$2E(a2) move.b #$1A,$20(a2) @@ -195074,7 +195074,7 @@ loc_8E1E2: bset #7,$38(a0) bne.s loc_8E1FA moveq #signextendB(sfx_EnemyBreath),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_8E1FA: bsr.w sub_8E37C @@ -195909,7 +195909,7 @@ loc_8EB0A: btst #7,$38(a0) beq.w locret_8EBE0 moveq #signextendB(sfx_Splash2),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_8ED74(pc),a2 jmp (CreateChild1_Normal).l ; --------------------------------------------------------------------------- @@ -195928,7 +195928,7 @@ loc_8EB2E: btst #7,$38(a0) beq.w locret_8EBE0 moveq #signextendB(sfx_Splash2),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_8ED74(pc),a2 jmp (CreateChild1_Normal).l ; --------------------------------------------------------------------------- @@ -196541,7 +196541,7 @@ loc_8F174: lea byte_8F6BF(pc),a1 jsr (Set_Raw_Animation).l moveq #signextendB(sfx_Bouncy),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- off_8F19A: dc.w loc_8F1AC-off_8F19A @@ -196564,7 +196564,7 @@ loc_8F1AC: move.b (_unkFAAD).w,$43(a0) bsr.w sub_8F538 moveq #signextendB(sfx_GhostAppear),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_8F1DA: jsr (Animate_RawMultiDelay).l @@ -197758,7 +197758,7 @@ sub_8FF5A: sub_8FF72: moveq #signextendB(sfx_EnemyBreath),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_90040(pc),a2 jsr (CreateChild10_NormalAdjusted).l bne.s locret_8FF8A @@ -198017,7 +198017,7 @@ locret_9026C: loc_9026E: moveq #signextendB(sfx_BigRumble),d0 - jsr (sub_85E52).l + jsr (Play_SFX_Continuous).l moveq #1,d0 bchg #0,$38(a0) beq.s loc_90282 @@ -198306,7 +198306,7 @@ sub_905A8: bne.s loc_905C8 move.b #$20,$20(a0) moveq #signextendB(sfx_BossHit),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b #-1,$29(a0) loc_905C8: @@ -198634,7 +198634,7 @@ loc_90926: subq.w #1,$2E(a0) bpl.s loc_9095E moveq #signextendB(sfx_EnterSS),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.b $2C(a0),(Current_special_stage).w move.b #1,(Special_bonus_entry_flag).w move.b #$34,(Game_mode).w @@ -198953,7 +198953,7 @@ loc_90C58: btst #5,$38(a0) beq.s locret_90CA0 moveq #signextendB(sfx_EnterSS),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l move.w #1,(Restart_level_flag).w move.b (Saved2_last_star_post_hit).w,(Last_star_post_hit).w move.w (Saved2_zone_and_act).w,(Current_zone_and_act).w @@ -199000,7 +199000,7 @@ loc_90CF4: move.w #$3F,$2E(a0) move.w #8,(Screen_shake_flag).w moveq #signextendB(sfx_BossLazer),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_90D20: btst #0,(V_int_run_count+3).w @@ -199044,7 +199044,7 @@ loc_90D78: move.w #-$80,$1A(a0) move.w #$7F,$2E(a0) moveq #signextendB(sfx_Signpost),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l lea ChildObjDat_90FF0(pc),a2 jsr (CreateChild6_Simple).l @@ -199086,7 +199086,7 @@ loc_90DDC: bset #7,$38(a0) bne.s locret_90DFA moveq #signextendB(sfx_SuperEmerald),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l locret_90DFA: rts @@ -199594,7 +199594,7 @@ loc_91778: loc_917A2: move.w d0,$18(a0) moveq #signextendB(sfx_Lazer),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l loc_917AE: jmp (Child_DrawTouch_Sprite).l @@ -199902,7 +199902,7 @@ loc_91A9A: move.b #4,5(a0) bset #3,$38(a0) moveq #signextendB(sfx_Bouncy),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -200124,7 +200124,7 @@ loc_91CA6: move.w $3E(a0),$18(a0) move.w $3C(a0),$40(a0) moveq #signextendB(sfx_TunnelBooster),d0 - jsr (Play_Sound_2).l + jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- From 25b5dd89009ff9d575e00de7ed0abc4f256b40b9 Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Fri, 31 Dec 2021 03:35:12 +0000 Subject: [PATCH 48/72] Normalize names of S3 enemies --- Build Scripts/s3.txt | 8 +-- .../Bloominator.bin} | Bin .../Map - Bloominator.asm} | 0 .../DPLC - Flybot767.asm} | 0 .../Flybot.bin => Flybot767/Flybot767.bin} | Bin .../Map - Flybot767.asm} | 0 .../Map - Mega Chopper.asm} | 0 .../DPLC - Rhinobot.asm} | 0 .../Map - Rhinobot.asm} | 0 .../Rhino.bin => Rhinobot/Rhinobot.bin} | Bin .../Map - Snale Blaster.asm} | 0 .../Snale Blaster.bin} | Bin .../Sprites/Sparkle/Map - Sparkle.asm | 0 Levels/AIZ/Debug/Act 1 S3.asm | 4 +- Levels/AIZ/Debug/Act 1.asm | 4 +- Levels/AIZ/Debug/Act 2 S3.asm | 4 +- Levels/AIZ/Debug/Act 2.asm | 4 +- Levels/CNZ/Debug/Main.asm | 2 +- Levels/CNZ/Debug/S3.asm | 2 +- Levels/HCZ/Debug/Main.asm | 2 +- Levels/HCZ/Debug/S3.asm | 2 +- Levels/Misc/Object pointers - S3 Set.asm | 8 +-- Levels/Misc/Object pointers - SK Set 1.asm | 8 +-- Lockon S3/LockOn Data.asm | 24 +++---- Lockon S3/LockOn Pointers.asm | 20 +++--- SonLVL INI Files/AIZ/Bloominator.xml | 9 +++ SonLVL INI Files/AIZ/E-S3.ini | 4 +- SonLVL INI Files/AIZ/E.ini | 4 +- .../AIZ/{RhinoBot.xml => Rhinobot.xml} | 4 +- SonLVL INI Files/AIZ/Tulipon.xml | 9 --- SonLVL INI Files/CNZ/E-S3.ini | 2 +- SonLVL INI Files/CNZ/E.ini | 2 +- .../CNZ/{Blastoid.xml => Sparkle.xml} | 2 +- SonLVL INI Files/HCZ/E-S3.ini | 4 +- SonLVL INI Files/HCZ/E.ini | 4 +- .../HCZ/{MegaChomper.xml => MegaChopper.xml} | 6 +- .../HCZ/{Poindexter.xml => Pointdexter.xml} | 0 SonLVL INI Files/LBZ/Flybot767.xml | 6 +- SonLVL INI Files/LBZ/SnaleBlaster.xml | 8 +-- s3.asm | 62 +++++++++--------- sonic3k.asm | 32 ++++----- 41 files changed, 126 insertions(+), 124 deletions(-) rename General/Sprites/{Tulipon/Tulipon.bin => Bloominator/Bloominator.bin} (100%) rename General/Sprites/{Tulipon/Map - Tulipon.asm => Bloominator/Map - Bloominator.asm} (100%) rename General/Sprites/{Flybot/DPLC - Flybot.asm => Flybot767/DPLC - Flybot767.asm} (100%) rename General/Sprites/{Flybot/Flybot.bin => Flybot767/Flybot767.bin} (100%) rename General/Sprites/{Flybot/Map - Flybot.asm => Flybot767/Map - Flybot767.asm} (100%) rename General/Sprites/{Mega Chomper/Map - Mega Chomper.asm => Mega Chopper/Map - Mega Chopper.asm} (100%) rename General/Sprites/{Rhino/DPLC - RhinoBot.asm => Rhinobot/DPLC - Rhinobot.asm} (100%) rename General/Sprites/{Rhino/Map - RhinoBot.asm => Rhinobot/Map - Rhinobot.asm} (100%) rename General/Sprites/{Rhino/Rhino.bin => Rhinobot/Rhinobot.bin} (100%) rename General/Sprites/{Snail Blaster/Map - Snail Blaster.asm => Snale Blaster/Map - Snale Blaster.asm} (100%) rename General/Sprites/{Snail Blaster/Snail Blaster.bin => Snale Blaster/Snale Blaster.bin} (100%) rename Levels/CNZ/Misc Object Data/Map - Blastoid.asm => General/Sprites/Sparkle/Map - Sparkle.asm (100%) create mode 100644 SonLVL INI Files/AIZ/Bloominator.xml rename SonLVL INI Files/AIZ/{RhinoBot.xml => Rhinobot.xml} (51%) delete mode 100644 SonLVL INI Files/AIZ/Tulipon.xml rename SonLVL INI Files/CNZ/{Blastoid.xml => Sparkle.xml} (75%) rename SonLVL INI Files/HCZ/{MegaChomper.xml => MegaChopper.xml} (68%) rename SonLVL INI Files/HCZ/{Poindexter.xml => Pointdexter.xml} (100%) diff --git a/Build Scripts/s3.txt b/Build Scripts/s3.txt index bf8d7354..019613df 100644 --- a/Build Scripts/s3.txt +++ b/Build Scripts/s3.txt @@ -126,11 +126,11 @@ #split 0x0013DB60,0x00140FE0,General\Sprites\Knuckles\Art\Knuckles 2P.bin #split 0x00145010,0x00147850,General\Sprites\Sonic\Art\Sonic Snowboarding.bin #split 0x00147850,0x00147E30,General\Sprites\Snowboard\Snowboard.bin -#split 0x0016732A,0x00167DCA,General\Sprites\Rhino\Rhino.bin +#split 0x0016732A,0x00167DCA,General\Sprites\Rhinobot\Rhinobot.bin #split 0x0016D6A4,0x0016E0C4,General\Sprites\Bubbles Badnik\Bubbles Badnik.bin #split 0x0016EF18,0x00170058,General\Sprites\Clamer\Clamer.bin #split 0x00174154,0x00175134,General\Sprites\Penguinator\Penguinator.bin -#split 0x00177EBE,0x001791DE,General\Sprites\Flybot\Flybot.bin +#split 0x00177EBE,0x001791DE,General\Sprites\Flybot767\Flybot767.bin #split 0x00182DC6,0x00187CA6,General\Sprites\Knuckles\Cutscene\Cutscene Main.bin #split 0x00192394,0x00192B14,Levels\HCZ\Animated Tiles\Water Splash 2.bin #split 0x00192B14,0x00193714,Levels\HCZ\Animated Tiles\Water Splash.bin @@ -231,7 +231,7 @@ /* Kosinski-Moduled-Compressed Art */ #split 0x00165260,0x001671A2,Levels\AIZ\KosinskiM Art\End Boss.bin -#split 0x00167DCA,0x0016800C,General\Sprites\Tulipon\Tulipon.bin +#split 0x00167DCA,0x0016800C,General\Sprites\Bloominator\Bloominator.bin #split 0x0016800C,0x001681FE,General\Sprites\Monkey Dude\Monkey Dude.bin #split 0x001681FE,0x00168400,General\Sprites\Caterkiller Jr\Caterkiller Jr.bin #split 0x0016A552,0x0016A6C4,General\Sprites\Jawz\Jawz.bin @@ -254,7 +254,7 @@ #split 0x0017567A,0x0017599C,Levels\LBZ\KosinskiM Art\Miniboss Box.bin #split 0x00176542,0x00176874,Levels\LBZ\KosinskiM Art\End Boss.bin #split 0x00176874,0x00177996,Levels\LBZ\KosinskiM Art\Final Boss 2.bin -#split 0x00177996,0x00177BE8,General\Sprites\Snail Blaster\Snail Blaster.bin +#split 0x00177996,0x00177BE8,General\Sprites\Snale Blaster\Snale Blaster.bin #split 0x00177BE8,0x00177D1A,General\Sprites\Ribot\Ribot.bin #split 0x00177D1A,0x00177DFC,General\Sprites\Orbinaut\Orbinaut.bin #split 0x00177DFC,0x00177EBE,General\Sprites\Corkey\Corkey.bin diff --git a/General/Sprites/Tulipon/Tulipon.bin b/General/Sprites/Bloominator/Bloominator.bin similarity index 100% rename from General/Sprites/Tulipon/Tulipon.bin rename to General/Sprites/Bloominator/Bloominator.bin diff --git a/General/Sprites/Tulipon/Map - Tulipon.asm b/General/Sprites/Bloominator/Map - Bloominator.asm similarity index 100% rename from General/Sprites/Tulipon/Map - Tulipon.asm rename to General/Sprites/Bloominator/Map - Bloominator.asm diff --git a/General/Sprites/Flybot/DPLC - Flybot.asm b/General/Sprites/Flybot767/DPLC - Flybot767.asm similarity index 100% rename from General/Sprites/Flybot/DPLC - Flybot.asm rename to General/Sprites/Flybot767/DPLC - Flybot767.asm diff --git a/General/Sprites/Flybot/Flybot.bin b/General/Sprites/Flybot767/Flybot767.bin similarity index 100% rename from General/Sprites/Flybot/Flybot.bin rename to General/Sprites/Flybot767/Flybot767.bin diff --git a/General/Sprites/Flybot/Map - Flybot.asm b/General/Sprites/Flybot767/Map - Flybot767.asm similarity index 100% rename from General/Sprites/Flybot/Map - Flybot.asm rename to General/Sprites/Flybot767/Map - Flybot767.asm diff --git a/General/Sprites/Mega Chomper/Map - Mega Chomper.asm b/General/Sprites/Mega Chopper/Map - Mega Chopper.asm similarity index 100% rename from General/Sprites/Mega Chomper/Map - Mega Chomper.asm rename to General/Sprites/Mega Chopper/Map - Mega Chopper.asm diff --git a/General/Sprites/Rhino/DPLC - RhinoBot.asm b/General/Sprites/Rhinobot/DPLC - Rhinobot.asm similarity index 100% rename from General/Sprites/Rhino/DPLC - RhinoBot.asm rename to General/Sprites/Rhinobot/DPLC - Rhinobot.asm diff --git a/General/Sprites/Rhino/Map - RhinoBot.asm b/General/Sprites/Rhinobot/Map - Rhinobot.asm similarity index 100% rename from General/Sprites/Rhino/Map - RhinoBot.asm rename to General/Sprites/Rhinobot/Map - Rhinobot.asm diff --git a/General/Sprites/Rhino/Rhino.bin b/General/Sprites/Rhinobot/Rhinobot.bin similarity index 100% rename from General/Sprites/Rhino/Rhino.bin rename to General/Sprites/Rhinobot/Rhinobot.bin diff --git a/General/Sprites/Snail Blaster/Map - Snail Blaster.asm b/General/Sprites/Snale Blaster/Map - Snale Blaster.asm similarity index 100% rename from General/Sprites/Snail Blaster/Map - Snail Blaster.asm rename to General/Sprites/Snale Blaster/Map - Snale Blaster.asm diff --git a/General/Sprites/Snail Blaster/Snail Blaster.bin b/General/Sprites/Snale Blaster/Snale Blaster.bin similarity index 100% rename from General/Sprites/Snail Blaster/Snail Blaster.bin rename to General/Sprites/Snale Blaster/Snale Blaster.bin diff --git a/Levels/CNZ/Misc Object Data/Map - Blastoid.asm b/General/Sprites/Sparkle/Map - Sparkle.asm similarity index 100% rename from Levels/CNZ/Misc Object Data/Map - Blastoid.asm rename to General/Sprites/Sparkle/Map - Sparkle.asm diff --git a/Levels/AIZ/Debug/Act 1 S3.asm b/Levels/AIZ/Debug/Act 1 S3.asm index f77fb83a..917f8449 100644 --- a/Levels/AIZ/Debug/Act 1 S3.asm +++ b/Levels/AIZ/Debug/Act 1 S3.asm @@ -14,8 +14,8 @@ dbglistobj Obj_AIZRideVine, Map_AIZRideVine, 8, $21, make_art_tile($41B,0,0) dbglistobj Obj_AIZGiantRideVine, Map_AIZRideVine, $F, $21, make_art_tile($41B,0,0) dbglistobj Obj_AIZFallingLog, Map_AIZFallingLog, 7, 0, make_art_tile($3CF,2,0) - dbglistobj Obj_RhinoBot, Map_RhinoBot, 0, 0, make_art_tile($500,1,0) - dbglistobj Obj_Tulipon, Map_Tulipon, 0, 0, make_art_tile($52A,1,0) + dbglistobj Obj_Rhinobot, Map_Rhinobot, 0, 0, make_art_tile($500,1,0) + dbglistobj Obj_Bloominator, Map_Bloominator, 0, 0, make_art_tile($52A,1,0) dbglistobj Obj_MonkeyDude, Map_MonkeyDude, $10, 0, make_art_tile($548,1,0) dbglistobj Obj_AIZSurfboardIntro, Map_SurfboardIntro, 1, 1, make_art_tile($680,0,0) dbglistobj Obj_SphereTest, Map_SphereTest, 0, 0, make_art_tile($4E0,1,0) diff --git a/Levels/AIZ/Debug/Act 1.asm b/Levels/AIZ/Debug/Act 1.asm index 3bde6e77..53a04e16 100644 --- a/Levels/AIZ/Debug/Act 1.asm +++ b/Levels/AIZ/Debug/Act 1.asm @@ -14,8 +14,8 @@ dbglistobj Obj_AIZRideVine, Map_AIZMHZRideVine, 8, $21, make_art_tile($41B,0,0) dbglistobj Obj_AIZGiantRideVine, Map_AIZMHZRideVine, $F, $21, make_art_tile($41B,0,0) dbglistobj Obj_AIZFallingLog, Map_AIZFallingLog, 7, 0, make_art_tile($3CF,2,0) - dbglistobj Obj_RhinoBot, Map_RhinoBot, 0, 0, make_art_tile($500,1,0) - dbglistobj Obj_Tulipon, Map_Tulipon, 0, 0, make_art_tile($52A,1,0) + dbglistobj Obj_Rhinobot, Map_Rhinobot, 0, 0, make_art_tile($500,1,0) + dbglistobj Obj_Bloominator, Map_Bloominator, 0, 0, make_art_tile($52A,1,0) dbglistobj Obj_MonkeyDude, Map_MonkeyDude, $10, 0, make_art_tile($548,1,0) dbglistobj Obj_StarPost, Map_StarPost, 1, 0, make_art_tile($5EC,0,0) dbglistobj Obj_Bubbler, Map_Bubbler, $81, $13, make_art_tile($45C,0,1) diff --git a/Levels/AIZ/Debug/Act 2 S3.asm b/Levels/AIZ/Debug/Act 2 S3.asm index d3f1efd5..a1783660 100644 --- a/Levels/AIZ/Debug/Act 2 S3.asm +++ b/Levels/AIZ/Debug/Act 2 S3.asm @@ -29,8 +29,8 @@ dbglistobj Obj_AIZGiantRideVine, Map_AIZRideVine, $F, $21, make_art_tile($41B,0,0) dbglistobj Obj_AIZDrawBridge, Map_AIZDrawBridge, 0, 1, make_art_tile($2E9,2,0) dbglistobj Obj_Button, Map_Button, $10, 2, make_art_tile($456,0,0) - dbglistobj Obj_RhinoBot, Map_RhinoBot, 0, 0, make_art_tile($500,1,0) - dbglistobj Obj_Tulipon, Map_Tulipon, 0, 0, make_art_tile($52A,1,0) + dbglistobj Obj_Rhinobot, Map_Rhinobot, 0, 0, make_art_tile($500,1,0) + dbglistobj Obj_Bloominator, Map_Bloominator, 0, 0, make_art_tile($52A,1,0) dbglistobj Obj_MonkeyDude, Map_MonkeyDude, 0, 0, make_art_tile($548,1,0) dbglistobj Obj_CaterKillerJr, Map_CaterKillerJr, 0, 0, make_art_tile($55F,1,0) dbglistobj Obj_StarPost, Map_StarPost, 1, 0, make_art_tile($5EC,0,0) diff --git a/Levels/AIZ/Debug/Act 2.asm b/Levels/AIZ/Debug/Act 2.asm index d8f23a40..26d9284b 100644 --- a/Levels/AIZ/Debug/Act 2.asm +++ b/Levels/AIZ/Debug/Act 2.asm @@ -29,8 +29,8 @@ dbglistobj Obj_AIZGiantRideVine, Map_AIZMHZRideVine, $F, $21, make_art_tile($41B,0,0) dbglistobj Obj_AIZDrawBridge, Map_AIZDrawBridge, 0, 1, make_art_tile($2E9,2,0) dbglistobj Obj_Button, Map_Button, $10, 2, make_art_tile($456,0,0) - dbglistobj Obj_RhinoBot, Map_RhinoBot, 0, 0, make_art_tile($500,1,0) - dbglistobj Obj_Tulipon, Map_Tulipon, 0, 0, make_art_tile($52A,1,0) + dbglistobj Obj_Rhinobot, Map_Rhinobot, 0, 0, make_art_tile($500,1,0) + dbglistobj Obj_Bloominator, Map_Bloominator, 0, 0, make_art_tile($52A,1,0) dbglistobj Obj_MonkeyDude, Map_MonkeyDude, 0, 0, make_art_tile($548,1,0) dbglistobj Obj_CaterKillerJr, Map_CaterKillerJr, 0, 0, make_art_tile($55F,1,0) dbglistobj Obj_StarPost, Map_StarPost, 1, 0, make_art_tile($5EC,0,0) diff --git a/Levels/CNZ/Debug/Main.asm b/Levels/CNZ/Debug/Main.asm index 2cbaf27c..bf288a3d 100644 --- a/Levels/CNZ/Debug/Main.asm +++ b/Levels/CNZ/Debug/Main.asm @@ -9,7 +9,7 @@ dbglistobj Obj_Spikes, Map_Spikes, 0, 0, make_art_tile($49C,0,0) dbglistobj Obj_Spikes, Map_Spikes, $40, 4, make_art_tile($494,0,0) dbglistobj Obj_Clamer, Map_Clamer, 0, 0, make_art_tile($500,1,0) - dbglistobj Obj_CNZBlastoid, Map_CNZBlastoid, 0, 0, make_art_tile($524,1,0) + dbglistobj Obj_Sparkle, Map_Sparkle, 0, 0, make_art_tile($524,1,0) dbglistobj Obj_Batbot, Map_Batbot, 0, 0, make_art_tile($552,1,0) dbglistobj Obj_Door, Map_HCZCNZDEZDoor, 1, 1, make_art_tile($416,2,0) dbglistobj Obj_Bumper, Map_Bumper, 0, 0, make_art_tile($364,2,0) diff --git a/Levels/CNZ/Debug/S3.asm b/Levels/CNZ/Debug/S3.asm index e1f86f4b..2caaac42 100644 --- a/Levels/CNZ/Debug/S3.asm +++ b/Levels/CNZ/Debug/S3.asm @@ -9,7 +9,7 @@ dbglistobj Obj_Spikes, Map_Spikes, 0, 0, make_art_tile($49C,0,0) dbglistobj Obj_Spikes, Map_Spikes, $40, 4, make_art_tile($494,0,0) dbglistobj Obj_Clamer, Map_Clamer, 0, 0, make_art_tile($500,1,0) - dbglistobj Obj_CNZBlastoid, Map_CNZBlastoid, 0, 0, make_art_tile($524,1,0) + dbglistobj Obj_Sparkle, Map_Sparkle, 0, 0, make_art_tile($524,1,0) dbglistobj Obj_Batbot, Map_Batbot, 0, 0, make_art_tile($552,1,0) dbglistobj Obj_Door, Map_HCZCNZDoor, 1, 1, make_art_tile($416,2,0) dbglistobj Obj_Bumper, Map_Bumper, 0, 0, make_art_tile($364,2,0) diff --git a/Levels/HCZ/Debug/Main.asm b/Levels/HCZ/Debug/Main.asm index 3af6e4b7..6026310c 100644 --- a/Levels/HCZ/Debug/Main.asm +++ b/Levels/HCZ/Debug/Main.asm @@ -10,7 +10,7 @@ dbglistobj Obj_Blastoid, Map_Blastoid, 0, 0, make_art_tile($539,1,0) dbglistobj Obj_Poindexter, Map_Poindexter, $20, 0, make_art_tile($559,1,0) dbglistobj Obj_Buggernaut, Map_Buggernaut, 0, 0, make_art_tile($44C,1,0) - dbglistobj Obj_MegaChomper, Map_MegaChomper, 0, 0, make_art_tile($54D,1,0) + dbglistobj Obj_MegaChopper, Map_MegaChopper, 0, 0, make_art_tile($54D,1,0) dbglistobj Obj_TurboSpiker, Map_TurboSpiker, 0, 0, make_art_tile($500,1,0) dbglistobj Obj_Jawz, Map_Jawz, 0, 0, make_art_tile($539,1,0) dbglistobj Obj_Button, Map_Button2, $20, 2, make_art_tile($426,1,0) diff --git a/Levels/HCZ/Debug/S3.asm b/Levels/HCZ/Debug/S3.asm index f248fab0..3c083524 100644 --- a/Levels/HCZ/Debug/S3.asm +++ b/Levels/HCZ/Debug/S3.asm @@ -10,7 +10,7 @@ dbglistobj Obj_Blastoid, Map_Blastoid, 0, 0, make_art_tile($539,1,0) dbglistobj Obj_Poindexter, Map_Poindexter, $20, 0, make_art_tile($559,1,0) dbglistobj Obj_Buggernaut, Map_Buggernaut, 0, 0, make_art_tile($44C,1,0) - dbglistobj Obj_MegaChomper, Map_MegaChomper, 0, 0, make_art_tile($54D,1,0) + dbglistobj Obj_MegaChopper, Map_MegaChopper, 0, 0, make_art_tile($54D,1,0) dbglistobj Obj_TurboSpiker, Map_TurboSpiker, 0, 0, make_art_tile($500,1,0) dbglistobj Obj_Jawz, Map_Jawz, 0, 0, make_art_tile($539,1,0) dbglistobj Obj_Button, Map_Button2, $20, 2, make_art_tile($426,1,0) diff --git a/Levels/Misc/Object pointers - S3 Set.asm b/Levels/Misc/Object pointers - S3 Set.asm index a59ad0d5..4151e178 100644 --- a/Levels/Misc/Object pointers - S3 Set.asm +++ b/Levels/Misc/Object pointers - S3 Set.asm @@ -127,8 +127,8 @@ dc.l Obj_Ring ; 126 dc.l Obj_Ring ; 127 dc.l Obj_AIZ_Miniboss_Cutscene ; 128 - dc.l Obj_Tulipon ; 129 - dc.l Obj_RhinoBot ; 130 + dc.l Obj_Bloominator ; 129 + dc.l Obj_Rhinobot ; 130 dc.l Obj_MonkeyDude ; 131 dc.l Delete_Current_Sprite ; 132 dc.l Obj_LBZMiniboss ; 133 @@ -155,11 +155,11 @@ dc.l Obj_Blastoid ; 154 dc.l Obj_Buggernaut ; 155 dc.l Obj_TurboSpiker ; 156 - dc.l Obj_MegaChomper ; 157 + dc.l Obj_MegaChopper ; 157 dc.l Obj_Poindexter ; 158 dc.l Obj_CaterKillerJr ; 159 dc.l Obj_Clamer ; 160 - dc.l Obj_CNZBlastoid ; 161 + dc.l Obj_Sparkle ; 161 dc.l Obj_Batbot ; 162 dc.l Obj_BubblesBadnik ; 163 dc.l Obj_MGZMiniBoss ; 164 diff --git a/Levels/Misc/Object pointers - SK Set 1.asm b/Levels/Misc/Object pointers - SK Set 1.asm index f43303a0..21b51cfb 100644 --- a/Levels/Misc/Object pointers - SK Set 1.asm +++ b/Levels/Misc/Object pointers - SK Set 1.asm @@ -138,8 +138,8 @@ dc.l Obj_89 ; 137 dc.l Obj_8A ; 138 dc.l Obj_8B ; 139 - dc.l Obj_Tulipon ; 140 - dc.l Obj_RhinoBot ; 141 + dc.l Obj_Bloominator ; 140 + dc.l Obj_Rhinobot ; 141 dc.l Obj_MonkeyDude ; 142 dc.l Obj_CaterKillerJr ; 143 dc.l Obj_AIZ_Miniboss_Cutscene ; 144 @@ -149,7 +149,7 @@ dc.l Obj_Blastoid ; 148 dc.l Obj_Buggernaut ; 149 dc.l Obj_TurboSpiker ; 150 - dc.l Obj_MegaChomper ; 151 + dc.l Obj_MegaChopper ; 151 dc.l Obj_Poindexter ; 152 dc.l Obj_HCZMiniboss ; 153 dc.l Obj_HCZEndBoss ; 154 @@ -162,7 +162,7 @@ dc.l Obj_A1_1_MGZ2_Boss ; 161 dc.l Obj_A2_1 ; 162 dc.l Obj_Clamer ; 163 - dc.l Obj_CNZBlastoid ; 164 + dc.l Obj_Sparkle ; 164 dc.l Obj_Batbot ; 165 dc.l Obj_CNZMiniboss ; 166 dc.l Obj_CNZEndBoss ; 167 diff --git a/Lockon S3/LockOn Data.asm b/Lockon S3/LockOn Data.asm index 75d22fff..3086c680 100644 --- a/Lockon S3/LockOn Data.asm +++ b/Lockon S3/LockOn Data.asm @@ -555,7 +555,7 @@ Map_LBZMiniboss: include "Levels/LBZ/Misc Object Data/Map - Miniboss.asm" Map_LBZMinibossBox: include "Levels/LBZ/Misc Object Data/Map - Miniboss Box.asm" -Map_SnaleBlaster: include "General/Sprites/Snail Blaster/Map - Snail Blaster.asm" +Map_SnaleBlaster: include "General/Sprites/Snale Blaster/Map - Snale Blaster.asm" Map_Orbinaut: include "General/Sprites/Orbinaut/Map - Orbinaut.asm" @@ -563,9 +563,9 @@ Map_Ribot: include "General/Sprites/Ribot/Map - Ribot.asm" Map_Corkey: include "General/Sprites/Corkey/Map - Corkey.asm" -Map_Flybot767: include "General/Sprites/Flybot/Map - Flybot.asm" +Map_Flybot767: include "General/Sprites/Flybot767/Map - Flybot767.asm" -DPLC_Flybot: include "General/Sprites/Flybot/DPLC - Flybot.asm" +DPLC_Flybot767: include "General/Sprites/Flybot767/DPLC - Flybot767.asm" Map_LBZEndBoss: include "Levels/LBZ/Misc Object Data/Map - End Boss.asm" @@ -586,19 +586,19 @@ Map_Poindexter: include "General/Sprites/Pointdexter/Map - Pointdexter.asm" Map_Buggernaut: include "General/Sprites/Buggernaut/Map - Buggernaut.asm" -Map_MegaChomper: include "General/Sprites/Mega Chomper/Map - Mega Chomper.asm" +Map_MegaChopper: include "General/Sprites/Mega Chopper/Map - Mega Chopper.asm" Map_TurboSpiker: include "General/Sprites/Turbo Spiker/Map - Turbo Spiker.asm" Map_Jawz: include "General/Sprites/Jawz/Map - Jawz.asm" -DPLC_RhinoBot: include "General/Sprites/Rhino/DPLC - RhinoBot.asm" +DPLC_Rhinobot: include "General/Sprites/Rhinobot/DPLC - Rhinobot.asm" -Map_RhinoBot: include "General/Sprites/Rhino/Map - RhinoBot.asm" +Map_Rhinobot: include "General/Sprites/Rhinobot/Map - Rhinobot.asm" Map_AIZMinibossFlame: include "Levels/AIZ/Misc Object Data/Map - Miniboss Flame.asm" -Map_Tulipon: include "General/Sprites/Tulipon/Map - Tulipon.asm" +Map_Bloominator: include "General/Sprites/Bloominator/Map - Bloominator.asm" Map_MonkeyDude: include "General/Sprites/Monkey Dude/Map - Monkey Dude.asm" @@ -610,7 +610,7 @@ DPLC_Clamer: include "General/Sprites/Clamer/DPLC - Clamer.asm" Map_Clamer: include "General/Sprites/Clamer/Map - Clamer.asm" -Map_CNZBlastoid: include "Levels/CNZ/Misc Object Data/Map - Blastoid.asm" +Map_Sparkle: include "General/Sprites/Sparkle/Map - Sparkle.asm" Map_Batbot: include "General/Sprites/Batbot/Map - Batbot.asm" @@ -700,9 +700,9 @@ ArtKosM_AIZEndBoss: binclude "Levels/AIZ/KosinskiM Art/End Boss.bin" even ArtNem_AIZMinibossSmall: binclude "Levels/AIZ/Nemesis Art/Miniboss Small.bin" even -ArtUnc_AIZRhino: binclude "General/Sprites/Rhino/Rhino.bin" +ArtUnc_AIZRhinobot: binclude "General/Sprites/Rhinobot/Rhinobot.bin" even -ArtKosM_AIZ_Tulipon: binclude "General/Sprites/Tulipon/Tulipon.bin" +ArtKosM_AIZ_Bloominator: binclude "General/Sprites/Bloominator/Bloominator.bin" even ArtKosM_AIZ_MonkeyDude: binclude "General/Sprites/Monkey Dude/Monkey Dude.bin" even @@ -780,7 +780,7 @@ ArtKosM_LBZEndBoss: binclude "Levels/LBZ/KosinskiM Art/End Boss.bin" even ArtKosM_LBZFinalBoss2: binclude "Levels/LBZ/KosinskiM Art/Final Boss 2.bin" even -ArtKosM_SnailBlaster: binclude "General/Sprites/Snail Blaster/Snail Blaster.bin" +ArtKosM_SnaleBlaster: binclude "General/Sprites/Snale Blaster/Snale Blaster.bin" even ArtKosM_Ribot: binclude "General/Sprites/Ribot/Ribot.bin" even @@ -788,7 +788,7 @@ ArtKosM_Orbinaut: binclude "General/Sprites/Orbinaut/Orbinaut.bin" even ArtKosM_Corkey: binclude "General/Sprites/Corkey/Corkey.bin" even -ArtUnc_Flybot: binclude "General/Sprites/Flybot/Flybot.bin" +ArtUnc_Flybot767: binclude "General/Sprites/Flybot767/Flybot767.bin" even ArtNem_LBZKnuxBomb: binclude "Levels/LBZ/Nemesis Art/Knuckles Bomb.bin" even diff --git a/Lockon S3/LockOn Pointers.asm b/Lockon S3/LockOn Pointers.asm index d47293f2..93dc6595 100644 --- a/Lockon S3/LockOn Pointers.asm +++ b/Lockon S3/LockOn Pointers.asm @@ -570,7 +570,7 @@ Map_Corkey: ds.b $98 Map_Flybot767: ds.b $192 -DPLC_Flybot: ds.b $AA +DPLC_Flybot767: ds.b $AA Map_LBZEndBoss: ds.b $114 Map_CNZEndBoss: ds.b $11E @@ -584,17 +584,17 @@ Map_Poindexter: ds.b $42 Map_Buggernaut: ds.b $72 -Map_MegaChomper:ds.b $2EC +Map_MegaChopper:ds.b $2EC Map_TurboSpiker:ds.b $152 Map_Jawz: ds.b $20A -DPLC_RhinoBot: ds.b $3A -Map_RhinoBot: ds.b $B4 +DPLC_Rhinobot: ds.b $3A +Map_Rhinobot: ds.b $B4 Map_AIZMinibossFlame: ds.b $64 -Map_Tulipon: ds.b $B6 +Map_Bloominator:ds.b $B6 Map_MonkeyDude: ds.b $1FC @@ -605,7 +605,7 @@ Map_CaterKillerJr:ds.b $60 DPLC_Clamer: ds.b $44 Map_Clamer: ds.b $78 -Map_CNZBlastoid:ds.b $9C +Map_Sparkle: ds.b $9C Map_Batbot: ds.b $70 @@ -691,8 +691,8 @@ Map_LBZFinalBoss2: ds.b $15C ArtNem_AIZMiniboss: ds.b $66E ArtKosM_AIZEndBoss: ds.b $1F42 ArtNem_AIZMinibossSmall: ds.b $188 -ArtUnc_AIZRhino: ds.b $AA0 -ArtKosM_AIZ_Tulipon:ds.b $242 +ArtUnc_AIZRhinobot: ds.b $AA0 +ArtKosM_AIZ_Bloominator:ds.b $242 ArtKosM_AIZ_MonkeyDude:ds.b $1F2 ArtKosM_AIZ_CaterkillerJr:ds.b $202 ArtNem_HCZMiniboss: ds.b $E9E @@ -741,11 +741,11 @@ ArtKosM_LBZMinibossBox: ds.b $322 ArtNem_LBZFinalBoss1: ds.b $BA6 ArtKosM_LBZEndBoss: ds.b $332 ArtKosM_LBZFinalBoss2: ds.b $1122 -ArtKosM_SnailBlaster:ds.b $252 +ArtKosM_SnaleBlaster:ds.b $252 ArtKosM_Ribot:ds.b $132 ArtKosM_Orbinaut:ds.b $E2 ArtKosM_Corkey:ds.b $C2 -ArtUnc_Flybot: ds.b $1320 +ArtUnc_Flybot767: ds.b $1320 ArtNem_LBZKnuxBomb: ds.b $3E ArtKosM_LBZ2DeathEggSmall: ds.b $64D2 ArtKosM_LBZ2DeathEgg2_8x8:ds.b $462 diff --git a/SonLVL INI Files/AIZ/Bloominator.xml b/SonLVL INI Files/AIZ/Bloominator.xml new file mode 100644 index 00000000..e26b2347 --- /dev/null +++ b/SonLVL INI Files/AIZ/Bloominator.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/SonLVL INI Files/AIZ/E-S3.ini b/SonLVL INI Files/AIZ/E-S3.ini index bdfa09a3..1a1f2c53 100644 --- a/SonLVL INI Files/AIZ/E-S3.ini +++ b/SonLVL INI Files/AIZ/E-S3.ini @@ -1,7 +1,7 @@ [81] -xmlfile=AIZ/Tulipon.xml +xmlfile=AIZ/Bloominator.xml [82] -xmlfile=AIZ/RhinoBot.xml +xmlfile=AIZ/Rhinobot.xml [83] xmlfile=AIZ/MonkeyDude.xml [9F] diff --git a/SonLVL INI Files/AIZ/E.ini b/SonLVL INI Files/AIZ/E.ini index edd94994..2f1746ae 100644 --- a/SonLVL INI Files/AIZ/E.ini +++ b/SonLVL INI Files/AIZ/E.ini @@ -1,9 +1,9 @@ [85] xmlfile=Common/SSEntryRing.xml [8C] -xmlfile=AIZ/Tulipon.xml +xmlfile=AIZ/Bloominator.xml [8D] -xmlfile=AIZ/RhinoBot.xml +xmlfile=AIZ/Rhinobot.xml [8E] xmlfile=AIZ/MonkeyDude.xml [8F] diff --git a/SonLVL INI Files/AIZ/RhinoBot.xml b/SonLVL INI Files/AIZ/Rhinobot.xml similarity index 51% rename from SonLVL INI Files/AIZ/RhinoBot.xml rename to SonLVL INI Files/AIZ/Rhinobot.xml index d70b8a20..8d81216a 100644 --- a/SonLVL INI Files/AIZ/RhinoBot.xml +++ b/SonLVL INI Files/AIZ/Rhinobot.xml @@ -2,8 +2,8 @@ - - + + \ No newline at end of file diff --git a/SonLVL INI Files/AIZ/Tulipon.xml b/SonLVL INI Files/AIZ/Tulipon.xml deleted file mode 100644 index fd32137c..00000000 --- a/SonLVL INI Files/AIZ/Tulipon.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/SonLVL INI Files/CNZ/E-S3.ini b/SonLVL INI Files/CNZ/E-S3.ini index 86358afd..c44905f4 100644 --- a/SonLVL INI Files/CNZ/E-S3.ini +++ b/SonLVL INI Files/CNZ/E-S3.ini @@ -1,7 +1,7 @@ [A0] xmlfile=CNZ/Clamer.xml [A1] -xmlfile=CNZ/Blastoid.xml +xmlfile=CNZ/Sparkle.xml [A2] xmlfile=CNZ/Batbot.xml [CB] diff --git a/SonLVL INI Files/CNZ/E.ini b/SonLVL INI Files/CNZ/E.ini index c800ec25..304e944f 100644 --- a/SonLVL INI Files/CNZ/E.ini +++ b/SonLVL INI Files/CNZ/E.ini @@ -3,6 +3,6 @@ xmlfile=Common/SSEntryRing.xml [A3] xmlfile=CNZ/Clamer.xml [A4] -xmlfile=CNZ/Blastoid.xml +xmlfile=CNZ/Sparkle.xml [A5] xmlfile=CNZ/Batbot.xml \ No newline at end of file diff --git a/SonLVL INI Files/CNZ/Blastoid.xml b/SonLVL INI Files/CNZ/Sparkle.xml similarity index 75% rename from SonLVL INI Files/CNZ/Blastoid.xml rename to SonLVL INI Files/CNZ/Sparkle.xml index c4bcc97f..dbc7d3ac 100644 --- a/SonLVL INI Files/CNZ/Blastoid.xml +++ b/SonLVL INI Files/CNZ/Sparkle.xml @@ -3,7 +3,7 @@ - + \ No newline at end of file diff --git a/SonLVL INI Files/HCZ/E-S3.ini b/SonLVL INI Files/HCZ/E-S3.ini index 853de770..759de610 100644 --- a/SonLVL INI Files/HCZ/E-S3.ini +++ b/SonLVL INI Files/HCZ/E-S3.ini @@ -3,8 +3,8 @@ xmlfile=HCZ/Buggernaut.xml [9C] xmlfile=HCZ/TurboSpiker.xml [9D] -xmlfile=HCZ/MegaChomper.xml +xmlfile=HCZ/MegaChopper.xml [9E] -xmlfile=HCZ/Poindexter.xml +xmlfile=HCZ/Pointdexter.xml [CB] xmlfile=Common/SSEntryRing.xml \ No newline at end of file diff --git a/SonLVL INI Files/HCZ/E.ini b/SonLVL INI Files/HCZ/E.ini index 56635869..4d67bb0a 100644 --- a/SonLVL INI Files/HCZ/E.ini +++ b/SonLVL INI Files/HCZ/E.ini @@ -5,6 +5,6 @@ xmlfile=HCZ/Buggernaut.xml [96] xmlfile=HCZ/TurboSpiker.xml [97] -xmlfile=HCZ/MegaChomper.xml +xmlfile=HCZ/MegaChopper.xml [98] -xmlfile=HCZ/Poindexter.xml \ No newline at end of file +xmlfile=HCZ/Pointdexter.xml \ No newline at end of file diff --git a/SonLVL INI Files/HCZ/MegaChomper.xml b/SonLVL INI Files/HCZ/MegaChopper.xml similarity index 68% rename from SonLVL INI Files/HCZ/MegaChomper.xml rename to SonLVL INI Files/HCZ/MegaChopper.xml index fb44a61b..a94b6970 100644 --- a/SonLVL INI Files/HCZ/MegaChomper.xml +++ b/SonLVL INI Files/HCZ/MegaChopper.xml @@ -1,13 +1,13 @@ - + - + - + diff --git a/SonLVL INI Files/HCZ/Poindexter.xml b/SonLVL INI Files/HCZ/Pointdexter.xml similarity index 100% rename from SonLVL INI Files/HCZ/Poindexter.xml rename to SonLVL INI Files/HCZ/Pointdexter.xml diff --git a/SonLVL INI Files/LBZ/Flybot767.xml b/SonLVL INI Files/LBZ/Flybot767.xml index 1dea3bb0..cb63a42c 100644 --- a/SonLVL INI Files/LBZ/Flybot767.xml +++ b/SonLVL INI Files/LBZ/Flybot767.xml @@ -2,9 +2,9 @@ - - + + \ No newline at end of file diff --git a/SonLVL INI Files/LBZ/SnaleBlaster.xml b/SonLVL INI Files/LBZ/SnaleBlaster.xml index 32742550..f83d6ee1 100644 --- a/SonLVL INI Files/LBZ/SnaleBlaster.xml +++ b/SonLVL INI Files/LBZ/SnaleBlaster.xml @@ -2,12 +2,12 @@ - - + + - - + + diff --git a/s3.asm b/s3.asm index b3018f36..78162078 100644 --- a/s3.asm +++ b/s3.asm @@ -54120,7 +54120,7 @@ off_2DF60: dc.w PLCKosM_AIZ-off_2DF60 PLCKosM_AIZ: dc.w 2 dc.l ArtKosM_AIZ_MonkeyDude dc.w $A900 - dc.l ArtKosM_AIZ_Tulipon + dc.l ArtKosM_AIZ_Bloominator dc.w $A540 dc.l ArtKosM_AIZ_CaterkillerJr dc.w $ABE0 @@ -54174,7 +54174,7 @@ PLCKosM_ICZ: dc.w 1 dc.l ArtKosM_StarPointer dc.w $A900 PLCKosM_LBZ: dc.w 3 - dc.l ArtKosM_SnailBlaster + dc.l ArtKosM_SnaleBlaster dc.w $A480 dc.l ArtKosM_Orbinaut dc.w $ADC0 @@ -105484,7 +105484,7 @@ loc_54B5A: jmp (Sprite_CheckDeleteTouchXY).l ; --------------------------------------------------------------------------- -Obj_Tulipon: +Obj_Bloominator: jsr (Obj_WaitOffscreen).l moveq #0,d0 move.b 5(a0),d0 @@ -105549,14 +105549,14 @@ loc_54BF8: move.l #loc_54BAA,$34(a0) rts ; --------------------------------------------------------------------------- -ObjDat3_54C0E: dc.l Map_Tulipon +ObjDat3_54C0E: dc.l Map_Bloominator dc.w $252A dc.w $200 dc.b $C dc.b $18 dc.b 0 dc.b $23 -ObjDat3_54C1A: dc.l Map_Tulipon +ObjDat3_54C1A: dc.l Map_Bloominator dc.w $252A dc.w $280 dc.b 8 @@ -105584,7 +105584,7 @@ byte_54C3E: dc.b 0, 7 dc.b $F4, 0 ; --------------------------------------------------------------------------- -Obj_RhinoBot: +Obj_Rhinobot: jsr (Obj_WaitOffscreen).l moveq #0,d0 move.b 5(a0),d0 @@ -105878,7 +105878,7 @@ ObjDat4_54EFA: dc.w 1 dc.w $2500 dc.w $15 dc.w 0 - dc.l Map_RhinoBot + dc.l Map_Rhinobot dc.w $280 dc.b $14 dc.b $10 @@ -105888,7 +105888,7 @@ ObjDat4_54F0C: dc.w 1 dc.w $44A dc.w 6 dc.w 2 - dc.l Map_RhinoBot + dc.l Map_Rhinobot dc.w $200 dc.b $C dc.b 8 @@ -105900,8 +105900,8 @@ ChildObjDat_54F1E:dc.w 0 ChildObjDat_54F26:dc.w 0 dc.l loc_54CF8 dc.w $1008 -DPLCPtr_54F2E: dc.l ArtUnc_AIZRhino - dc.l DPLC_RhinoBot +DPLCPtr_54F2E: dc.l ArtUnc_AIZRhinobot + dc.l DPLC_Rhinobot byte_54F36: dc.b 2, 4 dc.b 4, 5 dc.b 6, 7 @@ -107470,7 +107470,7 @@ Map_TurboSpikerHidden: include "General/Sprites/Turbo Spiker/Map - Turbo Spiker Hidden.asm" ; --------------------------------------------------------------------------- -Obj_MegaChomper: +Obj_MegaChopper: jsr (Obj_WaitOffscreen).l moveq #0,d0 move.b 5(a0),d0 @@ -107762,7 +107762,7 @@ loc_56044: ; End of function sub_55FEA ; --------------------------------------------------------------------------- -ObjDat3_56058: dc.l Map_MegaChomper +ObjDat3_56058: dc.l Map_MegaChopper dc.w $254D dc.w $280 dc.b $20 @@ -109295,7 +109295,7 @@ byte_56F39: dc.b 0, 2 dc.b $F4 ; --------------------------------------------------------------------------- -Obj_CNZBlastoid: +Obj_Sparkle: jsr (Obj_WaitOffscreen).l moveq #0,d0 move.b 5(a0),d0 @@ -109475,7 +109475,7 @@ loc_570DC: loc_570E8: jmp (MoveSprite2).l ; --------------------------------------------------------------------------- -ObjDat3_570EE: dc.l Map_CNZBlastoid +ObjDat3_570EE: dc.l Map_Sparkle dc.w $A524 dc.w $280 dc.b $C @@ -114957,8 +114957,8 @@ ObjDat4_5A27A: dc.w 2 dc.b $10 dc.b 0 dc.b $1A -DPLCPtr_5A28C: dc.l ArtUnc_Flybot - dc.l DPLC_Flybot +DPLCPtr_5A28C: dc.l ArtUnc_Flybot767 + dc.l DPLC_Flybot767 byte_5A294: dc.b 4 dc.b 0 dc.b 1 @@ -119048,12 +119048,12 @@ Map_LBZMiniboss: Map_LBZMinibossBox: include "Levels/LBZ/Misc Object Data/Map - Miniboss Box.asm" Map_SnaleBlaster: - include "General/Sprites/Snail Blaster/Map - Snail Blaster.asm" + include "General/Sprites/Snale Blaster/Map - Snale Blaster.asm" Map_Orbinaut: include "General/Sprites/Orbinaut/Map - Orbinaut.asm" Map_Ribot: include "General/Sprites/Ribot/Map - Ribot.asm" Map_Corkey: include "General/Sprites/Corkey/Map - Corkey.asm" -Map_Flybot767: include "General/Sprites/Flybot/Map - Flybot.asm" -DPLC_Flybot: include "General/Sprites/Flybot/DPLC - Flybot.asm" +Map_Flybot767: include "General/Sprites/Flybot767/Map - Flybot767.asm" +DPLC_Flybot767: include "General/Sprites/Flybot767/DPLC - Flybot767.asm" Map_LBZEndBoss: include "Levels/LBZ/Misc Object Data/Map - End Boss.asm" Map_CNZEndBoss: @@ -119075,7 +119075,7 @@ Map_Blastoid: include "General/Sprites/Blastoid/Map - Blastoid.asm" Map_Toxomister: include "General/Sprites/Toxomister/Map - Toxomister S3.asm" Map_Poindexter: include "General/Sprites/Pointdexter/Map - Pointdexter.asm" Map_Buggernaut: include "General/Sprites/Buggernaut/Map - Buggernaut.asm" -Map_MegaChomper:include "General/Sprites/Mega Chomper/Map - Mega Chomper.asm" +Map_MegaChopper:include "General/Sprites/Mega Chopper/Map - Mega Chopper.asm" Map_Dragonfly: include "General/Sprites/Dragonfly/Map - Dragonfly.asm" DPLC_Cluckoid: include "General/Sprites/Cluckoid/DPLC - Cluckoid.asm" Map_CluckoidArrow: @@ -119093,8 +119093,8 @@ Map_Jawz: include "General/Sprites/Jawz/Map - Jawz.asm" Map_Mushmeanie: include "General/Sprites/Mushmeanie/Map - Mushmeanie.asm" Map_Madmole: include "General/Sprites/Madmole/Map - Madmole S3.asm" Map_Iwamodoki: include "General/Sprites/Iwamodoki/Map - Iwamodoki S3.asm" -DPLC_RhinoBot: include "General/Sprites/Rhino/DPLC - RhinoBot.asm" -Map_RhinoBot: include "General/Sprites/Rhino/Map - RhinoBot.asm" +DPLC_Rhinobot: include "General/Sprites/Rhinobot/DPLC - Rhinobot.asm" +Map_Rhinobot: include "General/Sprites/Rhinobot/Map - Rhinobot.asm" dc.w $A dc.w $1C dc.w $24 @@ -119106,7 +119106,7 @@ Map_AIZMinibossFlame: include "Levels/AIZ/Misc Object Data/Map - Miniboss Flame.asm" Map_FBZEndBossFlame: include "Levels/FBZ/Misc Object Data/Map - End Boss Flame.asm" -Map_Tulipon: include "General/Sprites/Tulipon/Map - Tulipon.asm" +Map_Bloominator:include "General/Sprites/Bloominator/Map - Bloominator.asm" Map_MonkeyDude: include "General/Sprites/Monkey Dude/Map - Monkey Dude.asm" Map_SOZMiniboss:include "Levels/SOZ/Misc Object Data/Map - Miniboss.asm" Map_MGZMiniBoss:include "Levels/MGZ/Misc Object Data/Map - Miniboss.asm" @@ -119114,7 +119114,7 @@ Map_CaterKillerJr: include "General/Sprites/Caterkiller Jr/Map - Caterkiller Jr.asm" DPLC_Clamer: include "General/Sprites/Clamer/DPLC - Clamer.asm" Map_Clamer: include "General/Sprites/Clamer/Map - Clamer.asm" -Map_CNZBlastoid:include "Levels/CNZ/Misc Object Data/Map - Blastoid.asm" +Map_Sparkle: include "General/Sprites/Sparkle/Map - Sparkle.asm" Map_Batbot: include "General/Sprites/Batbot/Map - Batbot.asm" DPLC_BubblesBadnik: include "General/Sprites/Bubbles Badnik/DPLC - Bubbles Badnik.asm" @@ -119346,10 +119346,11 @@ ArtKosM_AIZEndBoss: ArtNem_AIZMinibossSmall: binclude "Levels/AIZ/Nemesis Art/Miniboss Small.bin" even -ArtUnc_AIZRhino:binclude "General/Sprites/Rhino/Rhino.bin" +ArtUnc_AIZRhinobot: + binclude "General/Sprites/Rhinobot/Rhinobot.bin" even -ArtKosM_AIZ_Tulipon: - binclude "General/Sprites/Tulipon/Tulipon.bin" +ArtKosM_AIZ_Bloominator: + binclude "General/Sprites/Bloominator/Bloominator.bin" even ArtKosM_AIZ_MonkeyDude: binclude "General/Sprites/Monkey Dude/Monkey Dude.bin" @@ -119470,8 +119471,8 @@ ArtKosM_LBZEndBoss: ArtKosM_LBZFinalBoss2: binclude "Levels/LBZ/KosinskiM Art/Final Boss 2.bin" even -ArtKosM_SnailBlaster: - binclude "General/Sprites/Snail Blaster/Snail Blaster.bin" +ArtKosM_SnaleBlaster: + binclude "General/Sprites/Snale Blaster/Snale Blaster.bin" even ArtKosM_Ribot: binclude "General/Sprites/Ribot/Ribot.bin" even @@ -119480,7 +119481,8 @@ ArtKosM_Orbinaut: even ArtKosM_Corkey: binclude "General/Sprites/Corkey/Corkey.bin" even -ArtUnc_Flybot: binclude "General/Sprites/Flybot/Flybot.bin" +ArtUnc_Flybot767: + binclude "General/Sprites/Flybot767/Flybot767.bin" even ArtNem_LBZKnuxBomb: binclude "Levels/LBZ/Nemesis Art/Knuckles Bomb.bin" diff --git a/sonic3k.asm b/sonic3k.asm index 3d4e9806..1ad5d428 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -64258,7 +64258,7 @@ off_2F7BE: dc.w PLCKosM_AIZ-off_2F7BE PLCKosM_AIZ: dc.w 2 dc.l ArtKosM_AIZ_MonkeyDude dc.w $A900 - dc.l ArtKosM_AIZ_Tulipon + dc.l ArtKosM_AIZ_Bloominator dc.w $A540 dc.l ArtKosM_AIZ_CaterkillerJr dc.w $ABE0 @@ -64314,7 +64314,7 @@ PLCKosM_ICZ: dc.w 1 dc.l ArtKosM_StarPointer dc.w $A900 PLCKosM_LBZ: dc.w 3 - dc.l ArtKosM_SnailBlaster + dc.l ArtKosM_SnaleBlaster dc.w $A480 dc.l ArtKosM_Orbinaut dc.w $ADC0 @@ -183020,7 +183020,7 @@ loc_86D5E: jmp (Sprite_CheckDeleteTouchXY).l ; --------------------------------------------------------------------------- -Obj_Tulipon: +Obj_Bloominator: jsr (Obj_WaitOffscreen).l moveq #0,d0 move.b 5(a0),d0 @@ -183085,14 +183085,14 @@ loc_86DFC: move.l #loc_86DAE,$34(a0) rts ; --------------------------------------------------------------------------- -ObjDat3_86E12: dc.l Map_Tulipon +ObjDat3_86E12: dc.l Map_Bloominator dc.w $252A dc.w $200 dc.b $C dc.b $18 dc.b 0 dc.b $23 -ObjDat3_86E1E: dc.l Map_Tulipon +ObjDat3_86E1E: dc.l Map_Bloominator dc.w $252A dc.w $280 dc.b 8 @@ -183120,7 +183120,7 @@ byte_86E42: dc.b 0, 7 dc.b $F4, 0 ; --------------------------------------------------------------------------- -Obj_RhinoBot: +Obj_Rhinobot: jsr (Obj_WaitOffscreen).l moveq #0,d0 move.b 5(a0),d0 @@ -183414,7 +183414,7 @@ ObjDat4_870FE: dc.w 1 dc.w $2500 dc.w $15 dc.w 0 - dc.l Map_RhinoBot + dc.l Map_Rhinobot dc.w $280 dc.b $14 dc.b $10 @@ -183424,7 +183424,7 @@ ObjDat4_87110: dc.w 1 dc.w $44A dc.w 6 dc.w 2 - dc.l Map_RhinoBot + dc.l Map_Rhinobot dc.w $200 dc.b $C dc.b 8 @@ -183436,8 +183436,8 @@ ChildObjDat_87122:dc.w 0 ChildObjDat_8712A:dc.w 0 dc.l loc_86EFC dc.w $1008 -DPLCPtr_87132: dc.l ArtUnc_AIZRhino - dc.l DPLC_RhinoBot +DPLCPtr_87132: dc.l ArtUnc_AIZRhinobot + dc.l DPLC_Rhinobot byte_8713A: dc.b 2, 4 dc.b 4, 5 dc.b 6, 7 @@ -185013,7 +185013,7 @@ Map_TurboSpikerHidden: include "General/Sprites/Turbo Spiker/Map - Turbo Spiker ; --------------------------------------------------------------------------- -Obj_MegaChomper: +Obj_MegaChopper: jsr (Obj_WaitOffscreen).l moveq #0,d0 move.b 5(a0),d0 @@ -185303,7 +185303,7 @@ loc_88258: ; End of function sub_881FE ; --------------------------------------------------------------------------- -ObjDat3_8826C: dc.l Map_MegaChomper +ObjDat3_8826C: dc.l Map_MegaChopper dc.w $254D dc.w $280 dc.b $20 @@ -186852,7 +186852,7 @@ byte_89185: dc.b 0, 2 dc.b $F4 ; --------------------------------------------------------------------------- -Obj_CNZBlastoid: +Obj_Sparkle: jsr (Obj_WaitOffscreen).l moveq #0,d0 move.b 5(a0),d0 @@ -187032,7 +187032,7 @@ loc_89328: loc_89334: jmp (MoveSprite2).l ; --------------------------------------------------------------------------- -ObjDat3_8933A: dc.l Map_CNZBlastoid +ObjDat3_8933A: dc.l Map_Sparkle dc.w $A524 dc.w $280 dc.b $C @@ -193014,8 +193014,8 @@ ObjDat4_8CB10: dc.w 2 dc.b $10 dc.b 0 dc.b $1A -DPLCPtr_8CB22: dc.l ArtUnc_Flybot - dc.l DPLC_Flybot +DPLCPtr_8CB22: dc.l ArtUnc_Flybot767 + dc.l DPLC_Flybot767 byte_8CB2A: dc.b 4 dc.b 0 dc.b 1 From 47fe88ae97cfeddad2a793056f3cf311d1d28d0e Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Fri, 31 Dec 2021 19:17:15 +0000 Subject: [PATCH 49/72] Normalize labels of layout objects --- .../Map - Lava Marker S2 Debug.asm} | 0 .../Map - Lava Marker S2.asm} | 0 Levels/DEZ/Debug/Act 1.asm | 6 +- Levels/DEZ/Debug/Act 2.asm | 6 +- .../Misc Object Data/Map - Tilting Bridge.asm | 2 +- Levels/FBZ/Debug/Act 1.asm | 2 +- Levels/FBZ/Debug/Act 2.asm | 2 +- Levels/HCZ/Debug/Main.asm | 4 +- Levels/HCZ/Debug/S3.asm | 4 +- Levels/ICZ/Debug/Act 2 S3.asm | 4 +- Levels/ICZ/Debug/Act 2.asm | 4 +- ...own 2.asm => Anim - Unused Solid Hurt.asm} | 2 +- ...sed).asm => Map - Unused Bar Platform.asm} | 0 ...nown 2.asm => Map - Unused Solid Hurt.asm} | 10 +- ...wn.asm => Map - Unused Tilting Bridge.asm} | 0 Levels/LRZ/Debug/Act 1.asm | 2 +- Levels/LRZ/Debug/Act 2.asm | 2 +- Levels/MGZ/Debug/Main.asm | 2 +- Levels/MGZ/Debug/S3.asm | 2 +- Levels/Misc/Object pointers - S3 Set.asm | 102 ++--- Levels/Misc/Object pointers - SK Set 1.asm | 116 +++--- Levels/Misc/Object pointers - SK Set 2.asm | 114 +++--- Lockon S3/LockOn Data.asm | 6 +- Lockon S3/LockOn Pointers.asm | 6 +- s3.asm | 210 +++++------ sonic3k.asm | 348 +++++++++--------- 26 files changed, 479 insertions(+), 477 deletions(-) rename General/Sprites/{Unused/Map - Obj27 Unused 2.asm => Level Misc/Map - Lava Marker S2 Debug.asm} (100%) rename General/Sprites/{Unused/Map - Obj27 Unused.asm => Level Misc/Map - Lava Marker S2.asm} (100%) rename Levels/LBZ/Misc Object Data/{Anim - Unused Unknown 2.asm => Anim - Unused Solid Hurt.asm} (62%) rename Levels/LBZ/Misc Object Data/{Map - Floating Platform Underside (Unused).asm => Map - Unused Bar Platform.asm} (100%) rename Levels/LBZ/Misc Object Data/{Map - Unused Unknown 2.asm => Map - Unused Solid Hurt.asm} (81%) rename Levels/LBZ/Misc Object Data/{Map - Unused Unknown.asm => Map - Unused Tilting Bridge.asm} (100%) diff --git a/General/Sprites/Unused/Map - Obj27 Unused 2.asm b/General/Sprites/Level Misc/Map - Lava Marker S2 Debug.asm similarity index 100% rename from General/Sprites/Unused/Map - Obj27 Unused 2.asm rename to General/Sprites/Level Misc/Map - Lava Marker S2 Debug.asm diff --git a/General/Sprites/Unused/Map - Obj27 Unused.asm b/General/Sprites/Level Misc/Map - Lava Marker S2.asm similarity index 100% rename from General/Sprites/Unused/Map - Obj27 Unused.asm rename to General/Sprites/Level Misc/Map - Lava Marker S2.asm diff --git a/Levels/DEZ/Debug/Act 1.asm b/Levels/DEZ/Debug/Act 1.asm index 2f84f2d3..8b94bd98 100644 --- a/Levels/DEZ/Debug/Act 1.asm +++ b/Levels/DEZ/Debug/Act 1.asm @@ -9,7 +9,7 @@ dbglistobj Obj_Spikes, Map_Spikes, 0, 0, make_art_tile($49C,0,0) dbglistobj Obj_Spikebonker, Map_Spikebonker, $20, 0, make_art_tile($500,0,0) dbglistobj Obj_Chainspike, Map_Chainspike, 0, 0, make_art_tile($542,0,0) - dbglistobj Obj_TiltingBridge, Map_TiltingBridge, 0, 0, make_art_tile($34D,1,0) + dbglistobj Obj_DEZTiltingBridge, Map_DEZTiltingBridge, 0, 0, make_art_tile($34D,1,0) dbglistobj Obj_DEZHangCarrier, Map_DEZHangCarrier, 8, 0, make_art_tile($35D,1,0) dbglistobj Obj_FBZDEZPlayerLauncher, Map_FBZDEZPlayerLauncher, 0, 1, make_art_tile($2FC,1,0) dbglistobj Obj_Door, Map_HCZCNZDEZDoor, 2, 2, make_art_tile($36B,1,0) @@ -24,8 +24,8 @@ dbglistobj Obj_StillSprite, Map_StillSprites, $31, $31, make_art_tile($3FF,1,0) dbglistobj Obj_StillSprite, Map_StillSprites, $32, $32, make_art_tile($385,1,0) dbglistobj Obj_DEZTunnelLauncher, Map_DEZTunnelLauncher, 0, 2, make_art_tile($385,0,0) - dbglistobj Obj_DEZStaircase, Map_TiltingBridge, 0, 0, make_art_tile($480,1,0) - dbglistobj Obj_DEZStaircase, Map_TiltingBridge, 4, 0, make_art_tile($480,1,0) + dbglistobj Obj_DEZStaircase, Map_DEZTiltingBridge, 0, 0, make_art_tile($480,1,0) + dbglistobj Obj_DEZStaircase, Map_DEZTiltingBridge, 4, 0, make_art_tile($480,1,0) dbglistobj Obj_DEZGravitySwitch, Map_DEZGravitySwitch, 0, 0, make_art_tile($490,1,0) dbglistobj Obj_DEZHoverMachine, Map_DEZHoverMachine, 0, 0, make_art_tile($30D,1,0) dbglistobj Obj_DEZBumperWall, Map_DEZBumperWall, 0, 0, make_art_tile($32D,1,0) diff --git a/Levels/DEZ/Debug/Act 2.asm b/Levels/DEZ/Debug/Act 2.asm index 9c34c7cf..821a997e 100644 --- a/Levels/DEZ/Debug/Act 2.asm +++ b/Levels/DEZ/Debug/Act 2.asm @@ -9,14 +9,14 @@ dbglistobj Obj_Spikes, Map_Spikes, 0, 0, make_art_tile($49C,0,0) dbglistobj Obj_Spikebonker, Map_Spikebonker, $20, 0, make_art_tile($500,0,0) dbglistobj Obj_Chainspike, Map_Chainspike, 0, 0, make_art_tile($542,0,0) - dbglistobj Obj_TiltingBridge, Map_TiltingBridge, 0, 0, make_art_tile($34D,1,0) + dbglistobj Obj_DEZTiltingBridge, Map_DEZTiltingBridge, 0, 0, make_art_tile($34D,1,0) dbglistobj Obj_DEZHangCarrier, Map_DEZHangCarrier, 8, 0, make_art_tile($35D,1,0) dbglistobj Obj_Door, Map_HCZCNZDEZDoor, 2, 2, make_art_tile($36B,1,0) dbglistobj Obj_DEZTorpedoLauncher, Map_TorpedoLauncher, $10, 0, make_art_tile($373,0,0) dbglistobj Obj_DEZFloatingPlatform, Map_DEZFloatingPlatform, 2, 0, make_art_tile($33A,1,0) dbglistobj Obj_DEZFloatingPlatform, Map_DEZFloatingPlatform, 5, 0, make_art_tile($33A,1,0) - dbglistobj Obj_DEZStaircase, Map_TiltingBridge, 0, 0, make_art_tile($480,1,0) - dbglistobj Obj_DEZStaircase, Map_TiltingBridge, 4, 0, make_art_tile($480,1,0) + dbglistobj Obj_DEZStaircase, Map_DEZTiltingBridge, 0, 0, make_art_tile($480,1,0) + dbglistobj Obj_DEZStaircase, Map_DEZTiltingBridge, 4, 0, make_art_tile($480,1,0) dbglistobj Obj_DEZLightning, Map_DEZLightning, $B4, 4, make_art_tile($379,0,0) dbglistobj Obj_DEZConveyorPad, Map_DEZConveyorPad, 0, 0, make_art_tile($408,1,0) dbglistobj Obj_DEZConveyorPad, Map_DEZConveyorPad, $28, 4, make_art_tile($408,1,0) diff --git a/Levels/DEZ/Misc Object Data/Map - Tilting Bridge.asm b/Levels/DEZ/Misc Object Data/Map - Tilting Bridge.asm index b94f82f0..7fa2e7a5 100644 --- a/Levels/DEZ/Misc Object Data/Map - Tilting Bridge.asm +++ b/Levels/DEZ/Misc Object Data/Map - Tilting Bridge.asm @@ -1,3 +1,3 @@ - dc.w word_46F7C-Map_TiltingBridge + dc.w word_46F7C-Map_DEZTiltingBridge word_46F7C: dc.w 1 ; DATA XREF: ROM:00046F7Ao dc.b $F0, $F, 0, 0, $FF, $F0 diff --git a/Levels/FBZ/Debug/Act 1.asm b/Levels/FBZ/Debug/Act 1.asm index 48323425..623b7a2a 100644 --- a/Levels/FBZ/Debug/Act 1.asm +++ b/Levels/FBZ/Debug/Act 1.asm @@ -18,7 +18,7 @@ dbglistobj Obj_FBZFloatingPlatform, Map_FBZFloatingPlatform, $10, 0, make_art_tile($383,1,0) dbglistobj Obj_FBZFloatingPlatform, Map_FBZFloatingPlatform, $30, 0, make_art_tile($383,1,0) dbglistobj Obj_FBZFloatingPlatform, Map_FBZFloatingPlatform, $40, 0, make_art_tile($383,1,0) - dbglistobj Obj_FBZ_ChainLink, Map_FBZChainLink, $1A, 0, make_art_tile($379,2,0) + dbglistobj Obj_FBZChainLink, Map_FBZChainLink, $1A, 0, make_art_tile($379,2,0) dbglistobj Obj_StillSprite, Map_StillSprites, $27, $27, make_art_tile($379,2,0) dbglistobj Obj_StillSprite, Map_StillSprites, $28, $28, make_art_tile($379,2,0) dbglistobj Obj_StillSprite, Map_StillSprites, $29, $29, make_art_tile($379,2,0) diff --git a/Levels/FBZ/Debug/Act 2.asm b/Levels/FBZ/Debug/Act 2.asm index ebd97496..240f13fb 100644 --- a/Levels/FBZ/Debug/Act 2.asm +++ b/Levels/FBZ/Debug/Act 2.asm @@ -18,7 +18,7 @@ dbglistobj Obj_FBZFloatingPlatform, Map_FBZFloatingPlatform, $10, 0, make_art_tile($383,1,0) dbglistobj Obj_FBZFloatingPlatform, Map_FBZFloatingPlatform, $30, 0, make_art_tile($383,1,0) dbglistobj Obj_FBZFloatingPlatform, Map_FBZFloatingPlatform, $40, 0, make_art_tile($383,1,0) - dbglistobj Obj_FBZ_ChainLink, Map_FBZChainLink, $1A, 0, make_art_tile($379,2,0) + dbglistobj Obj_FBZChainLink, Map_FBZChainLink, $1A, 0, make_art_tile($379,2,0) dbglistobj Obj_StillSprite, Map_StillSprites, $27, $27, make_art_tile($379,2,0) dbglistobj Obj_StillSprite, Map_StillSprites, $28, $28, make_art_tile($379,2,0) dbglistobj Obj_StillSprite, Map_StillSprites, $29, $29, make_art_tile($379,2,0) diff --git a/Levels/HCZ/Debug/Main.asm b/Levels/HCZ/Debug/Main.asm index 6026310c..2fe3e605 100644 --- a/Levels/HCZ/Debug/Main.asm +++ b/Levels/HCZ/Debug/Main.asm @@ -14,8 +14,8 @@ dbglistobj Obj_TurboSpiker, Map_TurboSpiker, 0, 0, make_art_tile($500,1,0) dbglistobj Obj_Jawz, Map_Jawz, 0, 0, make_art_tile($539,1,0) dbglistobj Obj_Button, Map_Button2, $20, 2, make_art_tile($426,1,0) - dbglistobj Obj_BreakableBar, Map_BreakableBar, 0, 0, make_art_tile($3CA,2,0) - dbglistobj Obj_BreakableBar, Map_BreakableBar, $80, 4, make_art_tile($3CA,2,0) + dbglistobj Obj_HCZBreakableBar, Map_HCZBreakableBar, 0, 0, make_art_tile($3CA,2,0) + dbglistobj Obj_HCZBreakableBar, Map_HCZBreakableBar, $80, 4, make_art_tile($3CA,2,0) dbglistobj Obj_HCZCGZFan, Map_HCZFan, $16, 0, make_art_tile($40B,1,0) dbglistobj Obj_HCZCGZFan, Map_HCZFan, $4C, 1, make_art_tile($40B,1,0) dbglistobj Obj_HCZLargeFan, Map_HCZLargeFan, 0, 0, make_art_tile($500,1,0) diff --git a/Levels/HCZ/Debug/S3.asm b/Levels/HCZ/Debug/S3.asm index 3c083524..177b7a64 100644 --- a/Levels/HCZ/Debug/S3.asm +++ b/Levels/HCZ/Debug/S3.asm @@ -14,8 +14,8 @@ dbglistobj Obj_TurboSpiker, Map_TurboSpiker, 0, 0, make_art_tile($500,1,0) dbglistobj Obj_Jawz, Map_Jawz, 0, 0, make_art_tile($539,1,0) dbglistobj Obj_Button, Map_Button2, $20, 2, make_art_tile($426,1,0) - dbglistobj Obj_BreakableBar, Map_BreakableBar, 0, 0, make_art_tile($3CA,2,0) - dbglistobj Obj_BreakableBar, Map_BreakableBar, $80, 4, make_art_tile($3CA,2,0) + dbglistobj Obj_HCZBreakableBar, Map_HCZBreakableBar, 0, 0, make_art_tile($3CA,2,0) + dbglistobj Obj_HCZBreakableBar, Map_HCZBreakableBar, $80, 4, make_art_tile($3CA,2,0) dbglistobj Obj_HCZCGZFan, Map_HCZFan, $16, 0, make_art_tile($40B,1,0) dbglistobj Obj_HCZCGZFan, Map_HCZFan, $4C, 1, make_art_tile($40B,1,0) dbglistobj Obj_HCZLargeFan, Map_HCZLargeFan, 0, 0, make_art_tile($500,1,0) diff --git a/Levels/ICZ/Debug/Act 2 S3.asm b/Levels/ICZ/Debug/Act 2 S3.asm index 8246a126..3ce74c47 100644 --- a/Levels/ICZ/Debug/Act 2 S3.asm +++ b/Levels/ICZ/Debug/Act 2 S3.asm @@ -25,8 +25,8 @@ dbglistobj Obj_ICZIceCube, Map_ICZPlatforms, 0, 3, make_art_tile($3B6,2,0) dbglistobj Obj_ICZHarmfulIce, Map_ICZPlatforms, 2, 5, make_art_tile($3B6,2,0) dbglistobj Obj_ICZHarmfulIce, Map_ICZPlatforms, 0, 4, make_art_tile($3B6,2,0) - dbglistobj Obj_ICZ_SnowPile, Map_ICZPlatforms, 0, $20, make_art_tile($377,2,0) - dbglistobj Obj_ICZ_TensionPlatform, Map_ICZPlatforms, 0, $1F, make_art_tile($377,2,0) + dbglistobj Obj_ICZSnowPile, Map_ICZPlatforms, 0, $20, make_art_tile($377,2,0) + dbglistobj Obj_ICZTensionPlatform, Map_ICZPlatforms, 0, $1F, make_art_tile($377,2,0) dbglistobj Obj_CollapsingPlatform, Map_ICZCollapsingBridge, 0, 0, make_art_tile($001,2,0) dbglistobj Obj_CollapsingBridge, Map_ICZCollapsingBridge, $80, 3, make_art_tile($001,2,0) dbglistobj Obj_CorkFloor, Map_ICZCorkFloor, 0, 0, make_art_tile($001,2,0) diff --git a/Levels/ICZ/Debug/Act 2.asm b/Levels/ICZ/Debug/Act 2.asm index 745bd792..9493b41e 100644 --- a/Levels/ICZ/Debug/Act 2.asm +++ b/Levels/ICZ/Debug/Act 2.asm @@ -26,8 +26,8 @@ dbglistobj Obj_ICZIceCube, Map_ICZPlatforms, 0, 3, make_art_tile($3B6,2,0) dbglistobj Obj_ICZHarmfulIce, Map_ICZPlatforms, 2, 5, make_art_tile($3B6,2,0) dbglistobj Obj_ICZHarmfulIce, Map_ICZPlatforms, 0, 4, make_art_tile($3B6,2,0) - dbglistobj Obj_ICZ_SnowPile, Map_ICZPlatforms, 0, $20, make_art_tile($377,2,0) - dbglistobj Obj_ICZ_TensionPlatform, Map_ICZPlatforms, 0, $1F, make_art_tile($377,2,0) + dbglistobj Obj_ICZSnowPile, Map_ICZPlatforms, 0, $20, make_art_tile($377,2,0) + dbglistobj Obj_ICZTensionPlatform, Map_ICZPlatforms, 0, $1F, make_art_tile($377,2,0) dbglistobj Obj_CollapsingPlatform, Map_ICZCollapsingBridge, 0, 0, make_art_tile($001,2,0) dbglistobj Obj_CollapsingBridge, Map_ICZCollapsingBridge, $80, 3, make_art_tile($001,2,0) dbglistobj Obj_CorkFloor, Map_ICZCorkFloor, 0, 0, make_art_tile($001,2,0) diff --git a/Levels/LBZ/Misc Object Data/Anim - Unused Unknown 2.asm b/Levels/LBZ/Misc Object Data/Anim - Unused Solid Hurt.asm similarity index 62% rename from Levels/LBZ/Misc Object Data/Anim - Unused Unknown 2.asm rename to Levels/LBZ/Misc Object Data/Anim - Unused Solid Hurt.asm index 5c3cfcb2..5fcc76e2 100644 --- a/Levels/LBZ/Misc Object Data/Anim - Unused Unknown 2.asm +++ b/Levels/LBZ/Misc Object Data/Anim - Unused Solid Hurt.asm @@ -1,3 +1,3 @@ - dc.w byte_269F0-Ani_LBZUnusedUnknown_2 +Ani_Obj1C_01: dc.w byte_269F0-Ani_Obj1C_01 byte_269F0: dc.b $B, 0, 1, 2, 1, 0, 3, 4, 3, $FF even diff --git a/Levels/LBZ/Misc Object Data/Map - Floating Platform Underside (Unused).asm b/Levels/LBZ/Misc Object Data/Map - Unused Bar Platform.asm similarity index 100% rename from Levels/LBZ/Misc Object Data/Map - Floating Platform Underside (Unused).asm rename to Levels/LBZ/Misc Object Data/Map - Unused Bar Platform.asm diff --git a/Levels/LBZ/Misc Object Data/Map - Unused Unknown 2.asm b/Levels/LBZ/Misc Object Data/Map - Unused Solid Hurt.asm similarity index 81% rename from Levels/LBZ/Misc Object Data/Map - Unused Unknown 2.asm rename to Levels/LBZ/Misc Object Data/Map - Unused Solid Hurt.asm index 7b5ceaf7..7d6401c0 100644 --- a/Levels/LBZ/Misc Object Data/Map - Unused Unknown 2.asm +++ b/Levels/LBZ/Misc Object Data/Map - Unused Solid Hurt.asm @@ -1,8 +1,8 @@ - dc.w word_26A04-Map_LBZUnusedUnknown_2 - dc.w word_26A1E-Map_LBZUnusedUnknown_2 - dc.w word_26A38-Map_LBZUnusedUnknown_2 - dc.w word_26A58-Map_LBZUnusedUnknown_2 - dc.w word_26A72-Map_LBZUnusedUnknown_2 +Map_Obj1C_01: dc.w word_26A04-Map_Obj1C_01 + dc.w word_26A1E-Map_Obj1C_01 + dc.w word_26A38-Map_Obj1C_01 + dc.w word_26A58-Map_Obj1C_01 + dc.w word_26A72-Map_Obj1C_01 word_26A04: dc.w 4 dc.b $E8, 7, 0, $10, $FF, $F0 dc.b $E8, 7, 8, $10, 0, 0 diff --git a/Levels/LBZ/Misc Object Data/Map - Unused Unknown.asm b/Levels/LBZ/Misc Object Data/Map - Unused Tilting Bridge.asm similarity index 100% rename from Levels/LBZ/Misc Object Data/Map - Unused Unknown.asm rename to Levels/LBZ/Misc Object Data/Map - Unused Tilting Bridge.asm diff --git a/Levels/LRZ/Debug/Act 1.asm b/Levels/LRZ/Debug/Act 1.asm index 4d0acd06..d0b94f3c 100644 --- a/Levels/LRZ/Debug/Act 1.asm +++ b/Levels/LRZ/Debug/Act 1.asm @@ -9,7 +9,7 @@ dbglistobj Obj_Spikes, Map_Spikes, 0, 0, make_art_tile($49C,0,0) dbglistobj Obj_Toxomister, Map_Toxomister, 0, 0, make_art_tile($562,0,0) dbglistobj Obj_Fireworm, Map_FirewormSegments, 0, 0, make_art_tile($512,3,0) - dbglistobj Obj_LRZExplodingRock, Map_Iwamodoki, 0, 0, make_art_tile($530,0,0) + dbglistobj Obj_Iwamodoki, Map_Iwamodoki, 0, 0, make_art_tile($530,0,0) dbglistobj Obj_LRZSpikeBall, Map_LRZSpikeBall, 0, 0, make_art_tile($442,1,1) dbglistobj Obj_LRZSinkingRock, Map_LRZSinkingRock, 0, 0, make_art_tile($0D3,2,0) dbglistobj Obj_LRZFallingSpike, Map_LRZFallingSpike, $60, 0, make_art_tile($3A1,2,0) diff --git a/Levels/LRZ/Debug/Act 2.asm b/Levels/LRZ/Debug/Act 2.asm index 4a64d4c9..4470a9ab 100644 --- a/Levels/LRZ/Debug/Act 2.asm +++ b/Levels/LRZ/Debug/Act 2.asm @@ -9,7 +9,7 @@ dbglistobj Obj_Spikes, Map_Spikes, 0, 0, make_art_tile($49C,0,0) dbglistobj Obj_Toxomister, Map_Toxomister, 0, 0, make_art_tile($562,0,0) dbglistobj Obj_Fireworm, Map_FirewormSegments, 0, 0, make_art_tile($512,3,0) - dbglistobj Obj_LRZExplodingRock, Map_Iwamodoki, 0, 0, make_art_tile($530,0,0) + dbglistobj Obj_Iwamodoki, Map_Iwamodoki, 0, 0, make_art_tile($530,0,0) dbglistobj Obj_LRZSinkingRock, Map_LRZSinkingRock, 0, 1, make_art_tile($090,2,0) dbglistobj Obj_LRZDoor, Map_LRZDoor, 0, 1, make_art_tile($090,2,0) dbglistobj Obj_LRZSwingingSpikeBall, Map_LRZSwingingSpikeBall, $88, 3, make_art_tile($40D,0,1) diff --git a/Levels/MGZ/Debug/Main.asm b/Levels/MGZ/Debug/Main.asm index 301e364d..08aa7513 100644 --- a/Levels/MGZ/Debug/Main.asm +++ b/Levels/MGZ/Debug/Main.asm @@ -10,7 +10,7 @@ dbglistobj Obj_Spring, Map_Spring, $40, $A, make_art_tile($478,0,0) dbglistobj Obj_Spikes, Map_Spikes, 0, 0, make_art_tile($49C,0,0) dbglistobj Obj_Spikes, Map_Spikes, $40, 4, make_art_tile($494,0,0) - dbglistobj Obj_MGZMiniBoss, Map_MGZMiniBoss, 0, 0, make_art_tile($54F,1,0) + dbglistobj Obj_Tunnelbot, Map_MGZMiniboss, 0, 0, make_art_tile($54F,1,0) dbglistobj Obj_BubblesBadnik, Map_BubblesBadnik, 0, 0, make_art_tile($500,1,0) dbglistobj Obj_Spiker, Map_Spiker, 0, 0, make_art_tile($530,1,0) dbglistobj Obj_Mantis, Map_Mantis, 0, 0, make_art_tile($54F,1,0) diff --git a/Levels/MGZ/Debug/S3.asm b/Levels/MGZ/Debug/S3.asm index cda75bd4..886769b9 100644 --- a/Levels/MGZ/Debug/S3.asm +++ b/Levels/MGZ/Debug/S3.asm @@ -10,7 +10,7 @@ dbglistobj Obj_Spring, Map_Spring, $40, $A, make_art_tile($478,0,0) dbglistobj Obj_Spikes, Map_Spikes, 0, 0, make_art_tile($49C,0,0) dbglistobj Obj_Spikes, Map_Spikes, $40, 4, make_art_tile($494,0,0) - dbglistobj Obj_MGZMiniBoss, Map_MGZMiniBoss, 0, 0, make_art_tile($54F,1,0) + dbglistobj Obj_Tunnelbot, Map_MGZMiniboss, 0, 0, make_art_tile($54F,1,0) dbglistobj Obj_BubblesBadnik, Map_BubblesBadnik, 0, 0, make_art_tile($500,1,0) dbglistobj Obj_Spiker, Map_Spiker, 0, 0, make_art_tile($530,1,0) dbglistobj Obj_Mantis, Map_Mantis, 0, 0, make_art_tile($54F,1,0) diff --git a/Levels/Misc/Object pointers - S3 Set.asm b/Levels/Misc/Object pointers - S3 Set.asm index 4151e178..5d4dca29 100644 --- a/Levels/Misc/Object pointers - S3 Set.asm +++ b/Levels/Misc/Object pointers - S3 Set.asm @@ -7,16 +7,16 @@ dc.l Obj_AIZRideVine ; 6 dc.l Obj_Spring ; 7 dc.l Obj_Spikes ; 8 - dc.l Obj_09_1 ; 9 - dc.l Obj_0A_1 ; 10 + dc.l Obj_AIZ1Tree ; 9 + dc.l Obj_AIZ1ZiplinePeg ; 10 dc.l Obj_SphereTest ; 11 dc.l Obj_AIZGiantRideVine ; 12 dc.l Obj_BreakableWall ; 13 - dc.l Obj_0E ; 14 + dc.l Obj_TwistedRamp ; 14 dc.l Obj_CollapsingBridge ; 15 dc.l Obj_LBZTubeElevator ; 16 dc.l Obj_LBZMovingPlatform ; 17 - dc.l Obj_12_1 ; 18 + dc.l Obj_LBZUnusedElevator ; 18 dc.l Obj_LBZExplodingTrigger ; 19 dc.l Obj_LBZTriggerBridge ; 20 dc.l Obj_LBZPlayerLauncher ; 21 @@ -24,21 +24,21 @@ dc.l Obj_LBZRideGrapple ; 23 dc.l Obj_LBZCupElevator ; 24 dc.l Obj_LBZCupElevatorPole ; 25 - dc.l Obj_1A_1 ; 26 + dc.l Obj_LBZUnusedTiltingBridge ; 26 dc.l Obj_LBZPipePlug ; 27 - dc.l Obj_1C_1 ; 28 - dc.l Obj_1D_1 ; 29 + dc.l Obj_LBZUnusedSolidHurt ; 28 + dc.l Obj_LBZUnusedBarPlatform ; 29 dc.l Obj_LBZSpinLauncher ; 30 dc.l Obj_LBZLoweringGrapple ; 31 dc.l Obj_MGZLBZSmashingPillar ; 32 dc.l Obj_LBZGateLaser ; 33 - dc.l Obj_22_1 ; 34 - dc.l Obj_23_1 ; 35 + dc.l Obj_LBZAlarm ; 34 + dc.l Obj_LBZUnusedForceFall ; 35 dc.l Obj_AutomaticTunnel ; 36 dc.l Obj_Ring ; 37 - dc.l Obj_26 ; 38 - dc.l Obj_27 ; 39 - dc.l Obj_28_Invisible_Barrier ; 40 + dc.l Obj_AutoSpin ; 38 + dc.l Obj_S2LavaMarker ; 39 + dc.l Obj_InvisibleBlock ; 40 dc.l Obj_AIZDisappearingFloor ; 41 dc.l Obj_CorkFloor ; 42 dc.l Obj_AIZFlippingBridge ; 43 @@ -47,13 +47,13 @@ dc.l Obj_AIZSpikedLog ; 46 dc.l Obj_StillSprite ; 47 dc.l Obj_AnimatedStillSprite ; 48 - dc.l Obj_31_1 ; 49 + dc.l Obj_LBZRollingDrum ; 49 dc.l Obj_AIZDrawBridge ; 50 dc.l Obj_Button ; 51 dc.l Obj_StarPost ; 52 dc.l Obj_AIZForegroundPlant ; 53 - dc.l Obj_BreakableBar ; 54 - dc.l Obj_37_1 ; 55 + dc.l Obj_HCZBreakableBar ; 54 + dc.l Obj_HCZWaterRush ; 55 dc.l Obj_HCZCGZFan ; 56 dc.l Obj_HCZLargeFan ; 57 dc.l Obj_HCZHandLauncher ; 58 @@ -70,15 +70,15 @@ dc.l Obj_CNZLightBulb ; 69 dc.l Obj_CNZHoverFan ; 70 dc.l Obj_CNZCylinder ; 71 - dc.l Obj_48_1 ; 72 - dc.l Obj_49_1 ; 73 + dc.l Obj_CNZVacuumTube ; 72 + dc.l Obj_CNZGiantWheel ; 73 dc.l Obj_Bumper ; 74 - dc.l Obj_4B_1 ; 75 - dc.l Obj_4C_1 ; 76 + dc.l Obj_CNZTriangleBumpers ; 75 + dc.l Obj_CNZSpiralTube ; 76 dc.l Obj_CNZBarberPoleSprite ; 77 - dc.l Obj_4E_1 ; 78 - dc.l Obj_4F_1 ; 79 - dc.l Obj_50_1 ; 80 + dc.l Obj_CNZWireCage ; 78 + dc.l Obj_SinkingMud ; 79 + dc.l Obj_MGZTwistingLoop ; 80 dc.l Obj_FloatingPlatform ; 81 dc.l Obj_MGZLBZSmashingPillar ; 82 dc.l Obj_MGZSwingingPlatform ; 83 @@ -91,7 +91,7 @@ dc.l Obj_MGZPulley ; 90 dc.l Obj_MGZTopPlatform ; 91 dc.l Obj_MGZTopLauncher ; 92 - dc.l Obj_5D_1 ; 93 + dc.l Obj_CGZTriangleBumpers ; 93 dc.l Obj_CGZBladePlatform ; 94 dc.l Obj_2PRetractingSpring ; 95 dc.l Obj_BPZElephantBlock ; 96 @@ -103,7 +103,7 @@ dc.l Obj_EMZDripper ; 102 dc.l Obj_HCZSnakeBlocks ; 103 dc.l Obj_HCZSpinningColumn ; 104 - dc.l Obj_69_1 ; 105 + dc.l Obj_HCZTwistingLoop ; 105 dc.l Obj_InvisibleHurtBlockHorizontal ; 106 dc.l Obj_InvisibleHurtBlockVertical ; 107 dc.l Obj_TensionBridge ; 108 @@ -126,22 +126,22 @@ dc.l Obj_Ring ; 125 dc.l Obj_Ring ; 126 dc.l Obj_Ring ; 127 - dc.l Obj_AIZ_Miniboss_Cutscene ; 128 + dc.l Obj_AIZMinibossCutscene ; 128 dc.l Obj_Bloominator ; 129 dc.l Obj_Rhinobot ; 130 dc.l Obj_MonkeyDude ; 131 dc.l Delete_Current_Sprite ; 132 dc.l Obj_LBZMiniboss ; 133 - dc.l Obj_LBZ_FinalBoss1 ; 134 + dc.l Obj_LBZFinalBoss1 ; 134 dc.l Obj_SnaleBlaster ; 135 dc.l Obj_Ribot ; 136 dc.l Obj_Orbinaut ; 137 dc.l Obj_Corkey ; 138 dc.l Obj_Flybot767 ; 139 - dc.l Obj_LBZ_EndBoss ; 140 + dc.l Obj_LBZEndBoss ; 140 dc.l Obj_CNZEndBoss ; 141 dc.l Obj_CNZMiniboss ; 142 - dc.l Obj_AA_1_FBZ1_Boss ; 143 + dc.l Obj_FBZMiniboss ; 143 dc.l Delete_Current_Sprite ; 144 dc.l Delete_Current_Sprite ; 145 dc.l Delete_Current_Sprite ; 146 @@ -162,26 +162,26 @@ dc.l Obj_Sparkle ; 161 dc.l Obj_Batbot ; 162 dc.l Obj_BubblesBadnik ; 163 - dc.l Obj_MGZMiniBoss ; 164 + dc.l Obj_Tunnelbot ; 164 dc.l Obj_Spiker ; 165 dc.l Obj_Mantis ; 166 dc.l Obj_Blaster ; 167 dc.l Obj_TechnoSqueek ; 168 - dc.l Obj_AIZ_EndBoss ; 169 + dc.l Obj_AIZEndBoss ; 169 dc.l Obj_Penguinator ; 170 dc.l Obj_StarPointer ; 171 - dc.l Obj_AIZ_Miniboss ; 172 + dc.l Obj_AIZMiniboss ; 172 dc.l Obj_HCZMiniboss ; 173 - dc.l Obj_C3_1 ; 174 - dc.l Obj_MGZ2DrillingEggman ; 175 - dc.l Obj_A1_1_MGZ2_Boss ; 176 - dc.l Obj_A2_1 ; 177 + dc.l Obj_LBZ1Robotnik ; 174 + dc.l Obj_MGZ2DrillingRobotnik ; 175 + dc.l Obj_MGZEndBoss ; 176 + dc.l Obj_MGZEndBossKnux ; 177 dc.l Obj_ICZEndBoss ; 178 dc.l Obj_ICZMiniboss ; 179 dc.l Obj_FBZEndBoss ; 180 dc.l Obj_HCZEndBoss ; 181 - dc.l Obj_AB_1_FBZ_Laser_Boss ; 182 - dc.l Obj_C6_1 ; 183 + dc.l Obj_FBZ2Subboss ; 182 + dc.l Obj_LBZ2RobotnikShip ; 183 dc.l Obj_ICZCrushingColumn ; 184 dc.l Obj_ICZPathFollowPlatform ; 185 dc.l Obj_ICZBreakableWall ; 186 @@ -192,21 +192,21 @@ dc.l Obj_ICZIceCube ; 191 dc.l Obj_ICZIceSpikes ; 192 dc.l Obj_ICZHarmfulIce ; 193 - dc.l Obj_ICZ_SnowPile ; 194 - dc.l Obj_ICZ_TensionPlatform ; 195 - dc.l Obj_9F_1 ; 196 + dc.l Obj_ICZSnowPile ; 194 + dc.l Obj_ICZTensionPlatform ; 195 + dc.l Obj_MGZMiniboss ; 196 dc.l Obj_HiddenMonitor ; 197 - dc.l Obj_81 ; 198 + dc.l Obj_EggCapsule ; 198 dc.l Obj_CutsceneKnuckles ; 199 - dc.l Obj_BB_1 ; 200 - dc.l Obj_83 ; 201 + dc.l Obj_ICZIceBlock ; 200 + dc.l Obj_CutsceneButton ; 201 dc.l Obj_AIZPlaneIntro ; 202 dc.l Obj_SSEntryRing ; 203 - dc.l Obj_C4_1 ; 204 - dc.l Obj_FleeingRobotnik_Unused ; 205 - dc.l Obj_86 ; 206 - dc.l Obj_87 ; 207 - dc.l Obj_LBZ_FinalBoss2 ; 208 - dc.l Obj_88 ; 209 - dc.l Obj_89 ; 210 - dc.l Obj_C8_1 ; 211 + dc.l Obj_LBZMinibossBox ; 204 + dc.l Obj_LBZ2UnusedRobotnik ; 205 + dc.l Obj_GumballMachine ; 206 + dc.l Obj_GumballTriangleBumper ; 207 + dc.l Obj_LBZFinalBoss2 ; 208 + dc.l Obj_CNZWaterLevelCorkFloor ; 209 + dc.l Obj_CNZWaterLevelButton ; 210 + dc.l Obj_LBZKnuxPillar ; 211 diff --git a/Levels/Misc/Object pointers - SK Set 1.asm b/Levels/Misc/Object pointers - SK Set 1.asm index 21b51cfb..dc070086 100644 --- a/Levels/Misc/Object pointers - SK Set 1.asm +++ b/Levels/Misc/Object pointers - SK Set 1.asm @@ -7,16 +7,16 @@ dc.l Obj_AIZRideVine ; 6 dc.l Obj_Spring ; 7 dc.l Obj_Spikes ; 8 - dc.l Obj_09_1 ; 9 - dc.l Obj_0A_1 ; 10 + dc.l Obj_AIZ1Tree ; 9 + dc.l Obj_AIZ1ZiplinePeg ; 10 dc.l Obj_Ring ; 11 dc.l Obj_AIZGiantRideVine ; 12 dc.l Obj_BreakableWall ; 13 - dc.l Obj_0E ; 14 + dc.l Obj_TwistedRamp ; 14 dc.l Obj_CollapsingBridge ; 15 dc.l Obj_LBZTubeElevator ; 16 dc.l Obj_LBZMovingPlatform ; 17 - dc.l Obj_12_1 ; 18 + dc.l Obj_LBZUnusedElevator ; 18 dc.l Obj_LBZExplodingTrigger ; 19 dc.l Obj_LBZTriggerBridge ; 20 dc.l Obj_LBZPlayerLauncher ; 21 @@ -24,21 +24,21 @@ dc.l Obj_LBZRideGrapple ; 23 dc.l Obj_LBZCupElevator ; 24 dc.l Obj_LBZCupElevatorPole ; 25 - dc.l Obj_1A_1 ; 26 + dc.l Obj_LBZUnusedTiltingBridge ; 26 dc.l Obj_LBZPipePlug ; 27 dc.l Obj_Ring ; 28 - dc.l Obj_1D_1 ; 29 + dc.l Obj_LBZUnusedBarPlatform ; 29 dc.l Obj_LBZSpinLauncher ; 30 dc.l Obj_LBZLoweringGrapple ; 31 dc.l Obj_MGZLBZSmashingPillar ; 32 dc.l Obj_LBZGateLaser ; 33 - dc.l Obj_22_1 ; 34 - dc.l Obj_23_1 ; 35 + dc.l Obj_LBZAlarm ; 34 + dc.l Obj_LBZUnusedForceFall ; 35 dc.l Obj_AutomaticTunnel ; 36 dc.l Obj_Ring ; 37 - dc.l Obj_26 ; 38 - dc.l Obj_27 ; 39 - dc.l Obj_28_Invisible_Barrier ; 40 + dc.l Obj_AutoSpin ; 38 + dc.l Obj_S2LavaMarker ; 39 + dc.l Obj_InvisibleBlock ; 40 dc.l Obj_AIZDisappearingFloor ; 41 dc.l Obj_CorkFloor ; 42 dc.l Obj_AIZFlippingBridge ; 43 @@ -47,13 +47,13 @@ dc.l Obj_AIZSpikedLog ; 46 dc.l Obj_StillSprite ; 47 dc.l Obj_AnimatedStillSprite ; 48 - dc.l Obj_31_1 ; 49 + dc.l Obj_LBZRollingDrum ; 49 dc.l Obj_AIZDrawBridge ; 50 dc.l Obj_Button ; 51 dc.l Obj_StarPost ; 52 dc.l Obj_AIZForegroundPlant ; 53 - dc.l Obj_BreakableBar ; 54 - dc.l Obj_37_1 ; 55 + dc.l Obj_HCZBreakableBar ; 54 + dc.l Obj_HCZWaterRush ; 55 dc.l Obj_HCZCGZFan ; 56 dc.l Obj_HCZLargeFan ; 57 dc.l Obj_HCZHandLauncher ; 58 @@ -70,15 +70,15 @@ dc.l Obj_CNZLightBulb ; 69 dc.l Obj_CNZHoverFan ; 70 dc.l Obj_CNZCylinder ; 71 - dc.l Obj_48_1 ; 72 - dc.l Obj_49_1 ; 73 + dc.l Obj_CNZVacuumTube ; 72 + dc.l Obj_CNZGiantWheel ; 73 dc.l Obj_Bumper ; 74 - dc.l Obj_4B_1 ; 75 - dc.l Obj_4C_1 ; 76 + dc.l Obj_CNZTriangleBumpers ; 75 + dc.l Obj_CNZSpiralTube ; 76 dc.l Obj_CNZBarberPoleSprite ; 77 - dc.l Obj_4E_1 ; 78 - dc.l Obj_4F_1 ; 79 - dc.l Obj_50_1 ; 80 + dc.l Obj_CNZWireCage ; 78 + dc.l Obj_SinkingMud ; 79 + dc.l Obj_MGZTwistingLoop ; 80 dc.l Obj_FloatingPlatform ; 81 dc.l Obj_MGZLBZSmashingPillar ; 82 dc.l Obj_MGZSwingingPlatform ; 83 @@ -91,7 +91,7 @@ dc.l Obj_MGZPulley ; 90 dc.l Obj_MGZTopPlatform ; 91 dc.l Obj_MGZTopLauncher ; 92 - dc.l Obj_5D_1 ; 93 + dc.l Obj_CGZTriangleBumpers ; 93 dc.l Obj_CGZBladePlatform ; 94 dc.l Obj_2PRetractingSpring ; 95 dc.l Obj_BPZElephantBlock ; 96 @@ -103,16 +103,16 @@ dc.l Obj_EMZDripper ; 102 dc.l Obj_HCZSnakeBlocks ; 103 dc.l Obj_HCZSpinningColumn ; 104 - dc.l Obj_69_1 ; 105 + dc.l Obj_HCZTwistingLoop ; 105 dc.l Obj_InvisibleHurtBlockHorizontal ; 106 dc.l Obj_InvisibleHurtBlockVertical ; 107 dc.l Obj_TensionBridge ; 108 dc.l Obj_HCZWaterSplash ; 109 dc.l Obj_WaterDrop ; 110 - dc.l Obj_6F_1 ; 111 - dc.l Obj_70_1_FBZ_Twisting_Cylinders ; 112 + dc.l Obj_FBZWireCage ; 111 + dc.l Obj_FBZWireCageStationary ; 112 dc.l Obj_FBZFloatingPlatform ; 113 - dc.l Obj_FBZ_ChainLink ; 114 + dc.l Obj_FBZChainLink ; 114 dc.l Obj_FBZMagneticSpikeBall ; 115 dc.l Obj_FBZMagneticPlatform ; 116 dc.l Obj_FBZSnakePlatform ; 117 @@ -121,30 +121,30 @@ dc.l Obj_FBZDEZPlayerLauncher ; 120 dc.l Obj_FBZDisappearingPlatform ; 121 dc.l Obj_FBZScrewDoor ; 122 - dc.l Obj_7B_1 ; 123 + dc.l Obj_FBZSpinningPole ; 123 dc.l Obj_FBZPropeller ; 124 dc.l Obj_FBZPiston ; 125 dc.l Obj_FBZPlatformBlocks ; 126 dc.l Obj_FBZMissileLauncher ; 127 dc.l Obj_HiddenMonitor ; 128 - dc.l Obj_81 ; 129 + dc.l Obj_EggCapsule ; 129 dc.l Obj_CutsceneKnuckles ; 130 - dc.l Obj_83 ; 131 + dc.l Obj_CutsceneButton ; 131 dc.l Obj_AIZPlaneIntro ; 132 dc.l Obj_SSEntryRing ; 133 - dc.l Obj_86 ; 134 - dc.l Obj_87 ; 135 - dc.l Obj_88 ; 136 - dc.l Obj_89 ; 137 - dc.l Obj_8A ; 138 - dc.l Obj_8B ; 139 + dc.l Obj_GumballMachine ; 134 + dc.l Obj_GumballTriangleBumper ; 135 + dc.l Obj_CNZWaterLevelCorkFloor ; 136 + dc.l Obj_CNZWaterLevelButton ; 137 + dc.l Obj_FBZExitHall ; 138 + dc.l Obj_SpriteMask ; 139 dc.l Obj_Bloominator ; 140 dc.l Obj_Rhinobot ; 141 dc.l Obj_MonkeyDude ; 142 dc.l Obj_CaterKillerJr ; 143 - dc.l Obj_AIZ_Miniboss_Cutscene ; 144 - dc.l Obj_AIZ_Miniboss ; 145 - dc.l Obj_AIZ_EndBoss ; 146 + dc.l Obj_AIZMinibossCutscene ; 144 + dc.l Obj_AIZMiniboss ; 145 + dc.l Obj_AIZEndBoss ; 146 dc.l Obj_Jawz ; 147 dc.l Obj_Blastoid ; 148 dc.l Obj_Buggernaut ; 149 @@ -156,11 +156,11 @@ dc.l Obj_BubblesBadnik ; 155 dc.l Obj_Spiker ; 156 dc.l Obj_Mantis ; 157 - dc.l Obj_MGZMiniBoss ; 158 - dc.l Obj_9F_1 ; 159 - dc.l Obj_MGZ2DrillingEggman ; 160 - dc.l Obj_A1_1_MGZ2_Boss ; 161 - dc.l Obj_A2_1 ; 162 + dc.l Obj_Tunnelbot ; 158 + dc.l Obj_MGZMiniboss ; 159 + dc.l Obj_MGZ2DrillingRobotnik ; 160 + dc.l Obj_MGZEndBoss ; 161 + dc.l Obj_MGZEndBossKnux ; 162 dc.l Obj_Clamer ; 163 dc.l Obj_Sparkle ; 164 dc.l Obj_Batbot ; 165 @@ -168,8 +168,8 @@ dc.l Obj_CNZEndBoss ; 167 dc.l Obj_Blaster ; 168 dc.l Obj_TechnoSqueek ; 169 - dc.l Obj_AA_1_FBZ1_Boss ; 170 - dc.l Obj_AB_1_FBZ_Laser_Boss ; 171 + dc.l Obj_FBZMiniboss ; 170 + dc.l Obj_FBZ2Subboss ; 171 dc.l Obj_FBZEndBoss ; 172 dc.l Obj_Penguinator ; 173 dc.l Obj_StarPointer ; 174 @@ -183,9 +183,9 @@ dc.l Obj_ICZIceCube ; 182 dc.l Obj_ICZIceSpikes ; 183 dc.l Obj_ICZHarmfulIce ; 184 - dc.l Obj_ICZ_SnowPile ; 185 - dc.l Obj_ICZ_TensionPlatform ; 186 - dc.l Obj_BB_1 ; 187 + dc.l Obj_ICZSnowPile ; 185 + dc.l Obj_ICZTensionPlatform ; 186 + dc.l Obj_ICZIceBlock ; 187 dc.l Obj_ICZMiniboss ; 188 dc.l Obj_ICZEndBoss ; 189 dc.l Obj_SnaleBlaster ; 190 @@ -193,17 +193,17 @@ dc.l Obj_Orbinaut ; 192 dc.l Obj_Corkey ; 193 dc.l Obj_Flybot767 ; 194 - dc.l Obj_C3_1 ; 195 - dc.l Obj_C4_1 ; 196 - dc.l Obj_C5_1 ; 197 - dc.l Obj_C6_1 ; 198 + dc.l Obj_LBZ1Robotnik ; 195 + dc.l Obj_LBZMinibossBox ; 196 + dc.l Obj_LBZMinibossBoxKnux ; 197 + dc.l Obj_LBZ2RobotnikShip ; 198 dc.l Obj_Ring ; 199 - dc.l Obj_C8_1 ; 200 + dc.l Obj_LBZKnuxPillar ; 200 dc.l Obj_LBZMiniboss ; 201 - dc.l Obj_LBZ_FinalBoss1 ; 202 - dc.l Obj_LBZ_EndBoss ; 203 - dc.l Obj_LBZ_FinalBoss2 ; 204 - dc.l Obj_CD_1_LBZ2_TallBoss ; 205 + dc.l Obj_LBZFinalBoss1 ; 202 + dc.l Obj_LBZEndBoss ; 203 + dc.l Obj_LBZFinalBoss2 ; 204 + dc.l Obj_LBZFinalBossKnux ; 205 dc.l Obj_FBZExitDoor ; 206 dc.l Obj_FBZEggPrison ; 207 dc.l Obj_FBZSpringPlunger ; 208 @@ -234,7 +234,7 @@ dc.l Obj_PachinkoInvisibleUnknown ; 233 dc.l Obj_Pachinko_Platform ; 234 dc.l Obj_GumballItem ; 235 - dc.l Obj_EC_1 ; 236 + dc.l Obj_PachinkoMagnetOrb ; 236 dc.l Obj_PachinkoItemOrb ; 237 dc.l Obj_Ring ; 238 dc.l Obj_Ring ; 239 diff --git a/Levels/Misc/Object pointers - SK Set 2.asm b/Levels/Misc/Object pointers - SK Set 2.asm index c8ea8ee4..a13ea130 100644 --- a/Levels/Misc/Object pointers - SK Set 2.asm +++ b/Levels/Misc/Object pointers - SK Set 2.asm @@ -1,7 +1,7 @@ dc.l Obj_Ring ; 0 dc.l Obj_Monitor ; 1 dc.l Obj_PathSwap ; 2 - dc.l Obj_03_2 ; 3 + dc.l Obj_MHZTwistedVine ; 3 dc.l Obj_CollapsingPlatform ; 4 dc.l Obj_AIZLRZEMZRock ; 5 dc.l Obj_MHZPulleyLift ; 6 @@ -12,15 +12,15 @@ dc.l Obj_MHZSwingBarHorizontal ; 11 dc.l Obj_MHZSwingBarVertical ; 12 dc.l Obj_BreakableWall ; 13 - dc.l Obj_0E ; 14 + dc.l Obj_TwistedRamp ; 14 dc.l Obj_CollapsingBridge ; 15 dc.l Obj_MHZSwingVine ; 16 dc.l Obj_MHZMushroomPlatform ; 17 dc.l Obj_MHZMushroomParachute ; 18 dc.l Obj_MHZMushroomCatapult ; 19 - dc.l Obj_14_2 ; 20 - dc.l Obj_15_2 ; 21 - dc.l Obj_16_2 ; 22 + dc.l Obj_Updraft ; 20 + dc.l Obj_LRZCorkscrew ; 21 + dc.l Obj_LRZWallRide ; 22 dc.l Obj_LRZSinkingRock ; 23 dc.l Obj_LRZFallingSpike ; 24 dc.l Obj_LRZDoor ; 25 @@ -36,9 +36,9 @@ dc.l Obj_MHZMushroomCap ; 35 dc.l Obj_AutomaticTunnel ; 36 dc.l Obj_LRZChainedPlatforms ; 37 - dc.l Obj_26 ; 38 - dc.l Obj_27 ; 39 - dc.l Obj_28_Invisible_Barrier ; 40 + dc.l Obj_AutoSpin ; 38 + dc.l Obj_S2LavaMarker ; 39 + dc.l Obj_InvisibleBlock ; 40 dc.l Obj_LRZFlameThrower ; 41 dc.l Obj_CorkFloor ; 42 dc.l Obj_LRZOrbitingSpikeBallHorizontal ; 43 @@ -52,12 +52,12 @@ dc.l Obj_Button ; 51 dc.l Obj_StarPost ; 52 dc.l Obj_AIZForegroundPlant ; 53 - dc.l Obj_BreakableBar ; 54 + dc.l Obj_HCZBreakableBar ; 54 dc.l Obj_LRZSpikeBallLauncher ; 55 - dc.l Obj_38_2 ; 56 + dc.l Obj_SOZQuicksand ; 56 dc.l Obj_SOZSpawningSandBlocks ; 57 - dc.l Obj_3A_2 ; 58 - dc.l Obj_3B_2 ; 59 + dc.l Obj_SOZPathSwap ; 58 + dc.l Obj_SOZLoopFallthrough ; 59 dc.l Obj_Door ; 60 dc.l Obj_RetractingSpring ; 61 dc.l Obj_SOZPushableRock ; 62 @@ -73,27 +73,27 @@ dc.l Obj_SOZRapelWire ; 72 dc.l Obj_SOZSolidSprites ; 73 dc.l Obj_DEZFloatingPlatform ; 74 - dc.l Obj_TiltingBridge ; 75 + dc.l Obj_DEZTiltingBridge ; 75 dc.l Obj_DEZHangCarrier ; 76 dc.l Obj_DEZTorpedoLauncher ; 77 dc.l Obj_DEZLiftPad ; 78 dc.l Obj_DEZStaircase ; 79 - dc.l Obj_50_2 ; 80 + dc.l Obj_DEZConveyorBelt ; 80 dc.l Obj_FloatingPlatform ; 81 dc.l Obj_DEZLightning ; 82 dc.l Obj_DEZConveyorPad ; 83 dc.l Obj_Bubbler ; 84 dc.l Obj_DEZEnergyBridge ; 85 - dc.l Obj_56_2 ; 86 + dc.l Obj_DEZEnergyBridgeCurved ; 86 dc.l Obj_DEZTunnelLauncher ; 87 dc.l Obj_DEZGravitySwitch ; 88 - dc.l Obj_59_2 ; 89 - dc.l Obj_5A_2 ; 90 - dc.l Obj_5B_2 ; 91 - dc.l Obj_5C_2 ; 92 + dc.l Obj_DEZTeleporter ; 89 + dc.l Obj_DEZGravityTube ; 90 + dc.l Obj_DEZGravitySwap ; 91 + dc.l Obj_DEZGravityHub ; 92 dc.l Obj_DEZRetractingSpring ; 93 dc.l Obj_DEZHoverMachine ; 94 - dc.l Obj_5F_2 ; 95 + dc.l Obj_DEZGravityRoom ; 95 dc.l Obj_DEZBumperWall ; 96 dc.l Obj_DEZGravityPuzzle ; 97 dc.l Obj_Ring ; 98 @@ -107,8 +107,8 @@ dc.l Obj_InvisibleHurtBlockHorizontal ; 106 dc.l Obj_InvisibleHurtBlockVertical ; 107 dc.l Obj_TensionBridge ; 108 - dc.l Obj_6D_2 ; 109 - dc.l Obj_6E_2 ; 110 + dc.l Obj_InvisibleShockBlock ; 109 + dc.l Obj_InvisibleLavaBlock ; 110 dc.l Obj_Ring ; 111 dc.l Obj_Ring ; 112 dc.l Obj_Ring ; 113 @@ -117,7 +117,7 @@ dc.l Obj_SSZRetractingSpring ; 116 dc.l Obj_SSZSwingingCarrier ; 117 dc.l Obj_SSZRotatingPlatform ; 118 - dc.l Obj_77_2 ; 119 + dc.l Obj_SSZCutsceneBridge ; 119 dc.l Obj_FBZDEZPlayerLauncher ; 120 dc.l Obj_SSZHPZTeleporter ; 121 dc.l Obj_SSZElevatorBar ; 122 @@ -127,59 +127,59 @@ dc.l Obj_SSZCollapsingColumn ; 126 dc.l Obj_SSZFloatingPlatform ; 127 dc.l Obj_HiddenMonitor ; 128 - dc.l Obj_81 ; 129 + dc.l Obj_EggCapsule ; 129 dc.l Obj_CutsceneKnuckles ; 130 - dc.l Obj_83 ; 131 + dc.l Obj_CutsceneButton ; 131 dc.l Obj_AIZPlaneIntro ; 132 dc.l Obj_SSEntryRing ; 133 - dc.l Obj_86 ; 134 - dc.l Obj_87 ; 135 - dc.l Obj_88 ; 136 - dc.l Obj_89 ; 137 - dc.l Obj_8A ; 138 - dc.l Obj_8B ; 139 + dc.l Obj_GumballMachine ; 134 + dc.l Obj_GumballTriangleBumper ; 135 + dc.l Obj_CNZWaterLevelCorkFloor ; 136 + dc.l Obj_CNZWaterLevelButton ; 137 + dc.l Obj_FBZExitHall ; 138 + dc.l Obj_SpriteMask ; 139 dc.l Obj_Madmole ; 140 dc.l Obj_Mushmeanie ; 141 dc.l Obj_Dragonfly ; 142 dc.l Obj_Butterdroid ; 143 dc.l Obj_Cluckoid ; 144 - dc.l Obj_91_2 ; 145 - dc.l Obj_MHZ_Miniboss ; 146 - dc.l Obj_MHZ_EndBoss ; 147 + dc.l Obj_MHZMinibossTree ; 145 + dc.l Obj_MHZMiniboss ; 146 + dc.l Obj_MHZEndBoss ; 147 dc.l Obj_Skorp ; 148 dc.l Obj_Sandworm ; 149 dc.l Obj_Rockn ; 150 - dc.l Obj_SOZ_Miniboss ; 151 - dc.l Obj_SOZ_EndBoss ; 152 + dc.l Obj_SOZMiniboss ; 151 + dc.l Obj_SOZEndBoss ; 152 dc.l Obj_Fireworm ; 153 - dc.l Obj_LRZExplodingRock ; 154 + dc.l Obj_Iwamodoki ; 154 dc.l Obj_Toxomister ; 155 dc.l Obj_LRZRockCrusher ; 156 - dc.l Obj_LRZ_Miniboss ; 157 - dc.l Obj_9E_2 ; 158 + dc.l Obj_LRZMiniboss ; 157 + dc.l Obj_LRZ3Autoscroll ; 158 dc.l Obj_Ring ; 159 dc.l Obj_EggRobo ; 160 dc.l Obj_SSZGHZBoss ; 161 dc.l Obj_SSZMTZBoss ; 162 - dc.l Obj_A3_2 ; 163 + dc.l Obj_SSZEndBoss ; 163 dc.l Obj_Spikebonker ; 164 dc.l Obj_Chainspike ; 165 - dc.l Obj_DEZ_Miniboss ; 166 - dc.l Obj_DEZ_EndBoss ; 167 - dc.l Obj_A8_2 ; 168 - dc.l Obj_A9_2 ; 169 - dc.l Obj_SOZ_Ghosts ; 170 - dc.l Obj_AB_2 ; 171 - dc.l Obj_AC_2_SOZ2_Ghost_Capsule ; 172 - dc.l Obj_AD_2 ; 173 - dc.l Obj_AE_2 ; 174 - dc.l Obj_AF_2 ; 175 - dc.l Obj_B0_2 ; 176 - dc.l Obj_B1_2 ; 177 - dc.l Obj_B2_2 ; 178 - dc.l Obj_B3_2 ; 179 - dc.l Obj_B4_2 ; 180 - dc.l Obj_B5_2 ; 181 - dc.l Obj_B6_2 ; 182 + dc.l Obj_DEZMiniboss ; 166 + dc.l Obj_DEZEndBoss ; 167 + dc.l Obj_MHZ1CutsceneKnuckles ; 168 + dc.l Obj_MHZ1CutsceneButton ; 169 + dc.l Obj_SOZGhosts ; 170 + dc.l Obj_SOZGhostCapsuleLoadArt ; 171 + dc.l Obj_SOZGhostCapsule ; 172 + dc.l Obj_LRZ3Platform ; 173 + dc.l Obj_LRZ2CutsceneKnuckles ; 174 + dc.l Obj_SSZCutsceneButton ; 175 + dc.l Obj_HPZMasterEmerald ; 176 + dc.l Obj_HPZPaletteControl ; 177 + dc.l Obj_KnuxFinalBossCrane ; 178 + dc.l Obj_StartNewLevel ; 179 + dc.l Obj_HPZSuperEmerald ; 180 + dc.l Obj_HPZSSEntryControl ; 181 + dc.l Obj_DDZEndBoss ; 182 dc.l Obj_DDZAsteroid ; 183 dc.l Obj_DDZMissile ; 184 diff --git a/Lockon S3/LockOn Data.asm b/Lockon S3/LockOn Data.asm index 3086c680..81ae19b7 100644 --- a/Lockon S3/LockOn Data.asm +++ b/Lockon S3/LockOn Data.asm @@ -62,7 +62,7 @@ Map_AIZ1Tree: include "Levels/AIZ/Misc Object Data/Map - Act 1 Tree.asm" Map_AIZ1ZiplinePeg: include "Levels/AIZ/Misc Object Data/Map - Act 1 Zipline Peg.asm" -Map_BreakableBar: include "Levels/HCZ/Misc Object Data/Map - Breakable Bar.asm" +Map_HCZBreakableBar: include "Levels/HCZ/Misc Object Data/Map - Breakable Bar.asm" Map_HCZBlock: include "Levels/HCZ/Misc Object Data/Map - Block.asm" @@ -110,7 +110,7 @@ Map_LBZFlameThrower: include "Levels/LBZ/Misc Object Data/Map - Flame Thrower.a Map_LBZCupElevator: include "Levels/LBZ/Misc Object Data/Map - Cup Elevator.asm" -Map_LBZUnusedUnknown: include "Levels/LBZ/Misc Object Data/Map - Unused Unknown.asm" +Map_LBZUnusedTiltingBridge: include "Levels/LBZ/Misc Object Data/Map - Unused Tilting Bridge.asm" Map_LBZPipePlug: include "Levels/LBZ/Misc Object Data/Map - PipePlug.asm" @@ -602,7 +602,7 @@ Map_Bloominator: include "General/Sprites/Bloominator/Map - Bloominator.asm" Map_MonkeyDude: include "General/Sprites/Monkey Dude/Map - Monkey Dude.asm" -Map_MGZMiniBoss: include "Levels/MGZ/Misc Object Data/Map - Miniboss.asm" +Map_MGZMiniboss: include "Levels/MGZ/Misc Object Data/Map - Miniboss.asm" Map_CaterKillerJr: include "General/Sprites/Caterkiller Jr/Map - Caterkiller Jr.asm" diff --git a/Lockon S3/LockOn Pointers.asm b/Lockon S3/LockOn Pointers.asm index 93dc6595..cad482da 100644 --- a/Lockon S3/LockOn Pointers.asm +++ b/Lockon S3/LockOn Pointers.asm @@ -57,7 +57,7 @@ MapUnc_CompetitionENDLESSMINE:ds.b $1326 ArtKos_SaveScreenS3Zone:ds.b $FC08 Map_AIZ1Tree: ds.b $42 Map_AIZ1ZiplinePeg: ds.b $9A0 -Map_BreakableBar:ds.b $280 +Map_HCZBreakableBar: ds.b $280 Map_HCZBlock: ds.b $C92 @@ -102,7 +102,7 @@ Map_LBZPlayerLauncher:ds.b $102 Map_LBZFlameThrower:ds.b $D4C Map_LBZCupElevator:ds.b $346 -Map_LBZUnusedUnknown: ds.b $374 +Map_LBZUnusedTiltingBridge:ds.b $374 Map_LBZPipePlug:ds.b $136E @@ -598,7 +598,7 @@ Map_Bloominator:ds.b $B6 Map_MonkeyDude: ds.b $1FC -Map_MGZMiniBoss:ds.b $A6 +Map_MGZMiniboss:ds.b $A6 Map_CaterKillerJr:ds.b $60 diff --git a/s3.asm b/s3.asm index 78162078..830f32f3 100644 --- a/s3.asm +++ b/s3.asm @@ -31655,7 +31655,7 @@ loc_1AB0C: bne.s loc_1AB42 jsr (Create_New_Sprite).l bne.s loc_1AB42 - move.l #Obj_AIZ_Miniboss,(a1) + move.l #Obj_AIZMiniboss,(a1) move.w #$11F0,$10(a1) move.w #$289,$14(a1) @@ -31895,7 +31895,7 @@ loc_1AD2A: move.w d0,(Camera_target_min_X_pos).w jsr (Create_New_Sprite).l bne.s loc_1AD5E - move.l #Obj_A1_1_MGZ2_Boss,(a1) + move.l #Obj_MGZEndBoss,(a1) move.w #$3D20,$10(a1) move.w #$668,$14(a1) @@ -34066,7 +34066,7 @@ loc_1C384: Map_Explosion: include "General/Sprites/Enemy Misc/Map - Explosion S3.asm" ; --------------------------------------------------------------------------- -Obj_09_1: +Obj_AIZ1Tree: move.l #Map_AIZ1Tree,$C(a0) move.w #$180,8(a0) move.b #8,7(a0) @@ -34080,7 +34080,7 @@ loc_1C3E2: Map_AIZ1Tree: include "Levels/AIZ/Misc Object Data/Map - Act 1 Tree.asm" ; --------------------------------------------------------------------------- -Obj_0A_1: +Obj_AIZ1ZiplinePeg: move.l #Map_AIZ1ZiplinePeg,$C(a0) move.w #$380,8(a0) move.b #$20,7(a0) @@ -34095,7 +34095,7 @@ Map_AIZ1ZiplinePeg: include "Levels/AIZ/Misc Object Data/Map - Act 1 Zipline Peg.asm" ; --------------------------------------------------------------------------- -Obj_26: +Obj_AutoSpin: move.l #Map_PathSwap,$C(a0) move.w #ArtTile_Ring,$A(a0) ori.b #4,4(a0) @@ -34354,14 +34354,14 @@ byte_1C700: dc.b $96 dc.b 0 ; --------------------------------------------------------------------------- -Obj_27: +Obj_S2LavaMarker: moveq #0,d0 move.b $2C(a0),d0 move.b byte_1C700(pc,d0.w),$28(a0) - move.l #Map_Obj27,$C(a0) + move.l #Map_S2LavaMarker,$C(a0) tst.w (Debug_placement_mode).w beq.s loc_1C726 - move.l #Map_Obj27_2,$C(a0) + move.l #Map_S2LavaMarkerDebug,$C(a0) loc_1C726: move.w #make_art_tile(ArtTile_Ring,0,1),$A(a0) @@ -34399,11 +34399,13 @@ loc_1C778: loc_1C784: jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- -Map_Obj27: include "General/Sprites/Unused/Map - Obj27 Unused.asm" -Map_Obj27_2: include "General/Sprites/Unused/Map - Obj27 Unused 2.asm" +Map_S2LavaMarker: + include "General/Sprites/Level Misc/Map - Lava Marker S2.asm" +Map_S2LavaMarkerDebug: + include "General/Sprites/Level Misc/Map - Lava Marker S2 Debug.asm" ; --------------------------------------------------------------------------- -Obj_28_Invisible_Barrier: +Obj_InvisibleBlock: move.l #Map_InvisibleBlock,$C(a0) move.w #make_art_tile(ArtTile_Ring,0,1),$A(a0) ori.b #4,4(a0) @@ -34478,8 +34480,8 @@ byte_1C8E2: dc.b $14 dc.b 2 ; --------------------------------------------------------------------------- -Obj_BreakableBar: - move.l #Map_BreakableBar,$C(a0) +Obj_HCZBreakableBar: + move.l #Map_HCZBreakableBar,$C(a0) move.w #$43CA,$A(a0) move.b #4,4(a0) move.w #$200,8(a0) @@ -34908,7 +34910,7 @@ loc_1CDC2: ; End of function sub_1CD50 ; --------------------------------------------------------------------------- -Map_BreakableBar: +Map_HCZBreakableBar: include "Levels/HCZ/Misc Object Data/Map - Breakable Bar.asm" ; --------------------------------------------------------------------------- @@ -41909,7 +41911,7 @@ Map_SphereTest: include "General/Special Stage/Map - Eosian Spheres.asm" ; --------------------------------------------------------------------------- -Obj_0E: +Obj_TwistedRamp: lea (Player_1).w,a1 bsr.s sub_23CA2 lea (Player_2).w,a1 @@ -42530,13 +42532,13 @@ Map_LBZMovingPlatform: include "Levels/LBZ/Misc Object Data/Map - Moving Platform.asm" ; --------------------------------------------------------------------------- -Obj_1D_1: +Obj_LBZUnusedBarPlatform: jsr (Create_New_Sprite3).l bne.w loc_242B4 move.w $10(a0),$10(a1) move.w $14(a0),$14(a1) move.b $2A(a0),$2A(a1) - move.l #Map_LBZPlatformUndersideUnused,$C(a1) + move.l #Map_LBZUnusedBarPlatform,$C(a1) move.w #$42EA,$A(a1) move.b #4,4(a1) move.w #$180,8(a1) @@ -42660,8 +42662,8 @@ locret_243DE: ; End of function sub_242F0 ; --------------------------------------------------------------------------- -Map_LBZPlatformUndersideUnused: - include "Levels/LBZ/Misc Object Data/Map - Floating Platform Underside (Unused).asm" +Map_LBZUnusedBarPlatform: + include "Levels/LBZ/Misc Object Data/Map - Unused Bar Platform.asm" byte_243F0: dc.b $20 dc.b $20 dc.b 0 @@ -42926,7 +42928,7 @@ byte_2471C: dc.b $10 dc.b $68 ; --------------------------------------------------------------------------- -Obj_12_1: +Obj_LBZUnusedElevator: move.l #Map_LBZUnusedElevator,$C(a0) move.w #$43C3,$A(a0) move.b #4,4(a0) @@ -44909,8 +44911,8 @@ Map_LBZCupElevator: include "Levels/LBZ/Misc Object Data/Map - Cup Elevator.asm" ; --------------------------------------------------------------------------- -Obj_1A_1: - move.l #Map_LBZUnusedUnknown,$C(a0) +Obj_LBZUnusedTiltingBridge: + move.l #Map_LBZUnusedTiltingBridge,$C(a0) move.w #$43C3,$A(a0) ori.b #4,4(a0) move.b #$40,7(a0) @@ -44921,7 +44923,7 @@ Obj_1A_1: jsr (Create_New_Sprite3).l bne.w loc_2628C move.l #loc_262DC,(a1) - move.l #Map_LBZUnusedUnknown,$C(a1) + move.l #Map_LBZUnusedTiltingBridge,$C(a1) move.w #$43C3,$A(a1) ori.b #4,4(a1) move.b #$40,7(a1) @@ -45198,8 +45200,8 @@ loc_264C4: locret_264DE: rts ; --------------------------------------------------------------------------- -Map_LBZUnusedUnknown: - include "Levels/LBZ/Misc Object Data/Map - Unused Unknown.asm" +Map_LBZUnusedTiltingBridge: + include "Levels/LBZ/Misc Object Data/Map - Unused Tilting Bridge.asm" ; --------------------------------------------------------------------------- Obj_LBZPipePlug: @@ -45468,8 +45470,8 @@ word_26814: dc.w $100, $FDC0 Map_LBZPipePlug:include "Levels/LBZ/Misc Object Data/Map - PipePlug.asm" ; --------------------------------------------------------------------------- -Obj_1C_1: - move.l #Map_LBZUnusedUnknown_2,$C(a0) +Obj_LBZUnusedSolidHurt: + move.l #Map_LBZUnusedSolidHurt,$C(a0) move.w #$42EA,$A(a0) move.b #$10,7(a0) move.b #$10,6(a0) @@ -45534,7 +45536,7 @@ loc_269C0: bsr.w sub_228EC loc_269CE: - lea (Ani_LBZUnusedUnknown_2).l,a1 + lea (Ani_LBZUnusedSolidHurt).l,a1 jsr (Animate_Sprite).l jmp (Sprite_OnScreen_Test).l @@ -45548,10 +45550,10 @@ sub_269E0: ; End of function sub_269E0 ; --------------------------------------------------------------------------- -Ani_LBZUnusedUnknown_2: - include "Levels/LBZ/Misc Object Data/Anim - Unused Unknown 2.asm" -Map_LBZUnusedUnknown_2: - include "Levels/LBZ/Misc Object Data/Map - Unused Unknown 2.asm" +Ani_LBZUnusedSolidHurt: + include "Levels/LBZ/Misc Object Data/Anim - Unused Solid Hurt.asm" +Map_LBZUnusedSolidHurt: + include "Levels/LBZ/Misc Object Data/Map - Unused Solid Hurt.asm" ; =============== S U B R O U T I N E ======================================= @@ -47820,7 +47822,7 @@ Map_LBZGateLaser: include "Levels/LBZ/Misc Object Data/Map - Gate Laser.asm" ; --------------------------------------------------------------------------- -Obj_22_1: +Obj_LBZAlarm: move.b #4,4(a0) move.b #$10,7(a0) move.b #$10,6(a0) @@ -47899,7 +47901,7 @@ word_2847A: dc.w $C0, $FFA0 dc.w $FF40, $FFA0 ; --------------------------------------------------------------------------- -Obj_23_1: +Obj_LBZUnusedForceFall: move.b #4,4(a0) move.b #$10,7(a0) move.b #$80,6(a0) @@ -51364,7 +51366,7 @@ word_2B994: dc.w $4438 Map_AIZ2FGTree: include "Levels/AIZ/Misc Object Data/Map - Act 2 Foreground Tree.asm" ; --------------------------------------------------------------------------- -Obj_31_1: +Obj_LBZRollingDrum: moveq #0,d0 move.b $2C(a0),d0 move.w d0,$32(a0) @@ -54481,7 +54483,7 @@ Ani_Bubbler: include "General/Sprites/Bubbles/Anim - Bubbler.asm" Map_Bubbler: include "General/Sprites/Bubbles/Map - Bubbler.asm" ; --------------------------------------------------------------------------- -Obj_37_1: +Obj_HCZWaterRush: move.l #Map_HCZWaterRush,$C(a0) ori.b #4,4(a0) move.w #$437A,$A(a0) @@ -57255,7 +57257,7 @@ locret_3100E: Map_CNZHoverFan:include "Levels/CNZ/Misc Object Data/Map - Hover Fan.asm" ; --------------------------------------------------------------------------- -Obj_48_1: +Obj_CNZVacuumTube: move.b $2C(a0),d0 beq.s loc_310B6 add.b d0,d0 @@ -58170,7 +58172,7 @@ Map_HCZSpinningColumn: include "Levels/HCZ/Misc Object Data/Map - Spinning Column.asm" ; --------------------------------------------------------------------------- -Obj_49_1: +Obj_CNZGiantWheel: move.b #$60,$32(a0) move.l #loc_31B60,(a0) @@ -58267,7 +58269,7 @@ locret_31C1E: ; --------------------------------------------------------------------------- -Obj_4B_1: +Obj_CNZTriangleBumpers: moveq #0,d0 move.b $2C(a0),d0 move.w d0,$34(a0) @@ -58346,7 +58348,7 @@ loc_31CEA: ; --------------------------------------------------------------------------- -Obj_4F_1: +Obj_SinkingMud: move.b $2C(a0),d0 lsl.w #3,d0 move.b d0,7(a0) @@ -58535,7 +58537,7 @@ loc_31EE4: rts ; --------------------------------------------------------------------------- -Obj_5D_1: +Obj_CGZTriangleBumpers: move.b #8,7(a0) move.b #$40,6(a0) move.b $2C(a0),d0 @@ -58860,7 +58862,7 @@ Map_Bumper: include "General/Sprites/Level Misc/Map - Bumper.asm" Map_2PBumper: include "General/2P Zone/Map - 2P Bumper.asm" ; --------------------------------------------------------------------------- -Obj_4C_1: +Obj_CNZSpiralTube: lea (Player_1).w,a1 lea $30(a0),a4 bsr.s sub_32328 @@ -59625,7 +59627,7 @@ loc_32A5E: ; --------------------------------------------------------------------------- -Obj_4E_1: +Obj_CNZWireCage: moveq #0,d0 move.b $2C(a0),d0 lsl.w #3,d0 @@ -59999,7 +60001,7 @@ loc_32EAE: ; --------------------------------------------------------------------------- -Obj_50_1: +Obj_MGZTwistingLoop: moveq #0,d0 move.b $2C(a0),d0 lsl.w #4,d0 @@ -66207,7 +66209,7 @@ word_3863A: dc.w $840 dc.l byte_3860C ; --------------------------------------------------------------------------- -Obj_69_1: +Obj_HCZTwistingLoop: move.b $2C(a0),d0 andi.w #$7F,d0 lsl.w #3,d0 @@ -72382,7 +72384,7 @@ MGZ2_QuakeEvent1: st (Screen_shake_flag).w jsr (Create_New_Sprite).l bne.s locret_3CCD2 - move.l #Obj_MGZ2DrillingEggman,(a1) + move.l #Obj_MGZ2DrillingRobotnik,(a1) move.w #$8E0,$10(a1) move.w #$690,$14(a1) @@ -72403,7 +72405,7 @@ MGZ2_QuakeEvent2: st (Screen_shake_flag).w jsr (Create_New_Sprite).l bne.s locret_3CD1C - move.l #Obj_MGZ2DrillingEggman,(a1) + move.l #Obj_MGZ2DrillingRobotnik,(a1) bset #0,4(a1) move.w #$2FA0,$10(a1) move.w #$2D0,$14(a1) @@ -72425,7 +72427,7 @@ MGZ2_QuakeEvent3: st (Screen_shake_flag).w jsr (Create_New_Sprite).l bne.s locret_3CD64 - move.l #Obj_MGZ2DrillingEggman,(a1) + move.l #Obj_MGZ2DrillingRobotnik,(a1) bset #0,4(a1) move.w #$3300,$10(a1) move.w #$790,$14(a1) @@ -78583,7 +78585,7 @@ loc_4380A: ; --------------------------------------------------------------------------- -Obj_86: +Obj_GumballMachine: lea ObjDat3_43F7C(pc),a1 jsr (SetUp_ObjAttributes).l move.l #loc_43892,(a0) @@ -78820,7 +78822,7 @@ loc_43B02: jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- -Obj_87: +Obj_GumballTriangleBumper: lea ObjDat3_43F70(pc),a1 jsr (SetUp_ObjAttributes).l move.l #loc_43B18,(a0) @@ -80813,7 +80815,7 @@ loc_45410: jmp (Sprite_CheckDeleteXY).l ; --------------------------------------------------------------------------- -Obj_C8_1: +Obj_LBZKnuxPillar: lea ObjDat3_45712(pc),a1 jsr (SetUp_ObjAttributes).l bclr #1,4(a0) @@ -80837,7 +80839,7 @@ Map_LBZKnuxPillar: include "Levels/LBZ/Misc Object Data/Map - Knuckles Pillar.asm" ; --------------------------------------------------------------------------- -Obj_83: +Obj_CutsceneButton: lea ObjDat3_456EE(pc),a1 jsr (SetUp_ObjAttributes).l move.l #loc_454C2,(a0) @@ -80939,7 +80941,7 @@ loc_4558A: move.b #-$78,(a1) jsr (Create_New_Sprite).l bne.s loc_455D2 - move.l #Obj_48_1,(a1) + move.l #Obj_CNZVacuumTube,(a1) move.w #$4740,$10(a1) move.w #$828,$14(a1) move.b #$4C,$2C(a1) @@ -80947,7 +80949,7 @@ loc_4558A: loc_455D2: jsr (Create_New_Sprite).l bne.s locret_455F2 - move.l #Obj_48_1,(a1) + move.l #Obj_CNZVacuumTube,(a1) move.w #$4740,$10(a1) move.w #$A28,$14(a1) move.b #$20,$2C(a1) @@ -80956,7 +80958,7 @@ locret_455F2: rts ; --------------------------------------------------------------------------- -Obj_88: +Obj_CNZWaterLevelCorkFloor: jsr (Obj_WaitOffscreen).l move.l #loc_45624,(a0) jsr (Create_New_Sprite3).l @@ -80984,7 +80986,7 @@ loc_45646: jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- -Obj_89: +Obj_CNZWaterLevelButton: lea ObjDat3_456EE(pc),a1 jsr (SetUp_ObjAttributes).l move.l #loc_4566A,(a0) @@ -82262,7 +82264,7 @@ AniRaw_RobotnikHead:dc.b 5 dc.b $FC ; --------------------------------------------------------------------------- -Obj_AIZ_Miniboss_Cutscene: +Obj_AIZMinibossCutscene: moveq #0,d0 move.b 5(a0),d0 move.w off_46454(pc,d0.w),d1 @@ -82740,7 +82742,7 @@ word_46968: dc.w 0 dc.w 8 ; --------------------------------------------------------------------------- -Obj_AIZ_Miniboss: +Obj_AIZMiniboss: moveq #0,d0 move.b 5(a0),d0 move.w off_46986(pc,d0.w),d1 @@ -83527,7 +83529,7 @@ Pal_AIZMiniboss:binclude "Levels/AIZ/Palettes/Miniboss.bin" even ; --------------------------------------------------------------------------- -Obj_AIZ_EndBoss: +Obj_AIZEndBoss: move.w #$4880,d0 cmp.w (Camera_X_pos).w,d0 bls.s loc_470BE @@ -83539,7 +83541,7 @@ loc_470BE: move.w d0,(Camera_max_X_pos).w move.l #Obj_Wait,(a0) move.w #$78,$2E(a0) - move.l #Obj_AIZ_EndBossMusic,$34(a0) + move.l #Obj_AIZEndBossMusic,$34(a0) moveq #signextendB(mus_FadeOut),d0 jsr (Play_Music).l move.b #1,(Boss_flag).w @@ -83553,14 +83555,14 @@ loc_470BE: jmp (PalLoad_Line1).l ; --------------------------------------------------------------------------- -Obj_AIZ_EndBossMusic: - move.l #Obj_AIZ_EndBossMain,(a0) +Obj_AIZEndBossMusic: + move.l #Obj_AIZEndBossMain,(a0) moveq #signextendB(mus_EndBoss),d0 jsr (Play_Music).l rts ; --------------------------------------------------------------------------- -Obj_AIZ_EndBossMain: +Obj_AIZEndBossMain: moveq #0,d0 move.b 5(a0),d0 move.w AIZ_EndBossIndex(pc,d0.w),d1 @@ -83569,7 +83571,7 @@ Obj_AIZ_EndBossMain: bne.w locret_47246 jmp (Draw_And_Touch_Sprite).l ; --------------------------------------------------------------------------- -AIZ_EndBossIndex:dc.w Obj_AIZ_EndBossInit-AIZ_EndBossIndex +AIZ_EndBossIndex:dc.w Obj_AIZEndBossInit-AIZ_EndBossIndex dc.w loc_471C2-AIZ_EndBossIndex dc.w loc_4720C-AIZ_EndBossIndex dc.w loc_47248-AIZ_EndBossIndex @@ -83579,7 +83581,7 @@ AIZ_EndBossIndex:dc.w Obj_AIZ_EndBossInit-AIZ_EndBossIndex dc.w loc_47348-AIZ_EndBossIndex ; --------------------------------------------------------------------------- -Obj_AIZ_EndBossInit: +Obj_AIZEndBossInit: lea ObjDat_AIZEndBoss(pc),a1 jsr (SetUp_ObjAttributes).l move.b #8,$29(a0) @@ -84548,7 +84550,7 @@ ChildObjDat_47BBC:dc.w 5 dc.l loc_47880 dc.w $C18 ChildObjDat_47BE2:dc.w 0 - dc.l Obj_81 + dc.l Obj_EggCapsule ChildObjDat_47BE8:dc.w 0 dc.l Obj_CutsceneKnuckles byte_47BEE: dc.b $2B, 0 @@ -87828,11 +87830,11 @@ Pal_HCZEndBoss: binclude "Levels/HCZ/Palettes/End Boss.bin" even ; --------------------------------------------------------------------------- -Obj_MGZ2DrillingEggman: +Obj_MGZ2DrillingRobotnik: move.l #Obj_Wait,(a0) move.b #1,(Boss_flag).w move.w #$78,$2E(a0) - move.l #Obj_MGZ2DrillingEggmanGo,$34(a0) + move.l #Obj_MGZ2DrillingRobotnikGo,$34(a0) clr.b $2C(a0) moveq #signextendB(mus_FadeOut),d0 jsr (Play_Music).l @@ -87848,8 +87850,8 @@ Obj_MGZ2DrillingEggman: jmp (PalLoad_Line1).l ; --------------------------------------------------------------------------- -Obj_MGZ2DrillingEggmanGo: - move.l #Obj_MGZ2DrillingEggmanStart,(a0) +Obj_MGZ2DrillingRobotnikGo: + move.l #Obj_MGZ2DrillingRobotnikStart,(a0) moveq #signextendB(mus_EndBoss),d0 jsr (Play_Music).l @@ -87857,7 +87859,7 @@ locret_49DD8: rts ; --------------------------------------------------------------------------- -Obj_MGZ2DrillingEggmanStart: +Obj_MGZ2DrillingRobotnikStart: moveq #0,d0 move.b 5(a0),d0 move.w off_49DF2(pc,d0.w),d1 @@ -88117,7 +88119,7 @@ loc_4A0EC: jmp (Obj_Wait).l ; --------------------------------------------------------------------------- -Obj_A1_1_MGZ2_Boss: +Obj_MGZEndBoss: moveq #0,d0 move.b 5(a0),d0 move.w off_4A110(pc,d0.w),d1 @@ -88386,7 +88388,7 @@ loc_4A442: rts ; --------------------------------------------------------------------------- -Obj_A2_1: +Obj_MGZEndBossKnux: moveq #0,d0 move.b 5(a0),d0 move.w off_4A476(pc,d0.w),d1 @@ -88545,7 +88547,7 @@ loc_4A616: lea word_4B396(pc),a1 jsr (SetUp_ObjAttributes3).l movea.w $46(a0),a1 - cmpi.l #Obj_A1_1_MGZ2_Boss,(a1) + cmpi.l #Obj_MGZEndBoss,(a1) bne.s loc_4A632 bclr #7,$A(a0) @@ -89005,7 +89007,7 @@ loc_4AB4E: beq.s loc_4AB84 move.w #$380,8(a0) movea.w $46(a0),a1 - cmpi.l #Obj_A1_1_MGZ2_Boss,(a1) + cmpi.l #Obj_MGZEndBoss,(a1) bne.s loc_4AB84 bclr #7,$A(a0) @@ -91983,7 +91985,7 @@ Pal_CNZEndBoss: binclude "Levels/CNZ/Palettes/End Boss.bin" even ; --------------------------------------------------------------------------- -Obj_AA_1_FBZ1_Boss: +Obj_FBZMiniboss: lea word_4C96E(pc),a1 jsr (Check_CameraInRange).l moveq #0,d0 @@ -93257,7 +93259,7 @@ word_4D540: palscriptptr .header, .data palscriptrun ; --------------------------------------------------------------------------- -Obj_AB_1_FBZ_Laser_Boss: +Obj_FBZ2Subboss: moveq #0,d0 move.b 5(a0),d0 move.w off_4D56E(pc,d0.w),d1 @@ -96851,7 +96853,7 @@ Pal_LBZMiniboss:binclude "Levels/LBZ/Palettes/Miniboss.bin" even ; --------------------------------------------------------------------------- -Obj_LBZ_FinalBoss1: +Obj_LBZFinalBoss1: moveq #0,d0 move.b 5(a0),d0 move.w off_4F9C2(pc,d0.w),d1 @@ -97008,7 +97010,7 @@ loc_4FB0A: bclr #7,$A(a0) jsr (Create_New_Sprite).l bne.s loc_4FB46 - move.l #Obj_LBZ_FinalBoss2,(a1) + move.l #Obj_LBZFinalBoss2,(a1) move.w $10(a0),$10(a1) move.w $14(a0),$14(a1) @@ -97915,7 +97917,7 @@ Pal_LBZFinalBoss1: even ; --------------------------------------------------------------------------- -Obj_LBZ_EndBoss: +Obj_LBZEndBoss: lea word_5043C(pc),a1 jsr (Check_CameraInRange).l moveq #0,d0 @@ -98775,7 +98777,7 @@ Pal_LBZEndBoss: binclude "Levels/LBZ/Palettes/End Boss.bin" even ; --------------------------------------------------------------------------- -Obj_LBZ_FinalBoss2: +Obj_LBZFinalBoss2: moveq #0,d0 move.b 5(a0),d0 move.w off_50CC2(pc,d0.w),d1 @@ -100086,7 +100088,7 @@ loc_51B3C: jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -Obj_FleeingRobotnik_Unused: +Obj_LBZ2UnusedRobotnik: lea ObjDat3_51F9C(pc),a1 jsr SetUp_ObjAttributes(pc) move.l #loc_51BB6,(a0) @@ -100104,7 +100106,7 @@ Obj_FleeingRobotnik_Unused: move.w #$800,$18(a0) move.w #-$3C0,$1A(a0) move.b #4,$40(a0) - move.l #ArtScaled_FleeingRobotnik,$42(a0) + move.l #ArtScaled_LBZ2UnusedRobotnik,$42(a0) move.b #1,$3E(a0) bsr.w Perform_Art_Scaling jmp (Draw_Sprite).l @@ -100423,13 +100425,13 @@ word_51E86: dc.w $20 dc.w 8 dc.w 8 dc.w $200 -off_51E94: dc.l ArtScaled_FleeingRobotnik - dc.l ArtScaled_FleeingRobotnik - dc.l ArtScaled_FleeingRobotnik+$1000 - dc.l ArtScaled_FleeingRobotnik+$2000 - dc.l ArtScaled_FleeingRobotnik+$3000 - dc.l ArtScaled_FleeingRobotnik+$4000 - dc.l ArtScaled_FleeingRobotnik+$5000 +off_51E94: dc.l ArtScaled_LBZ2UnusedRobotnik + dc.l ArtScaled_LBZ2UnusedRobotnik + dc.l ArtScaled_LBZ2UnusedRobotnik+$1000 + dc.l ArtScaled_LBZ2UnusedRobotnik+$2000 + dc.l ArtScaled_LBZ2UnusedRobotnik+$3000 + dc.l ArtScaled_LBZ2UnusedRobotnik+$4000 + dc.l ArtScaled_LBZ2UnusedRobotnik+$5000 ; =============== S U B R O U T I N E ======================================= @@ -104786,7 +104788,7 @@ loc_544CC: jmp (Play_Music).l ; --------------------------------------------------------------------------- -Obj_81: +Obj_EggCapsule: moveq #0,d0 move.b 5(a0),d0 move.w off_54504(pc,d0.w),d1 @@ -107953,7 +107955,7 @@ byte_56239: dc.b 0, $7F dc.b $FC ; --------------------------------------------------------------------------- -Obj_MGZMiniBoss: +Obj_Tunnelbot: jsr (Obj_WaitOffscreen).l moveq #0,d0 move.b 5(a0),d0 @@ -108053,7 +108055,7 @@ loc_56346: jmp (Go_Delete_Sprite).l ; --------------------------------------------------------------------------- -Obj_9F_1: +Obj_MGZMiniboss: lea word_56388(pc),a1 jsr (Check_CameraInRange).l moveq #0,d0 @@ -108531,7 +108533,7 @@ loc_56880: word_568A2: dc.w Normal_palette_line_2+$18, Normal_palette_line_2+$1A, Normal_palette_line_2+$1C word_568A8: dc.w $CAA, $866, $644 dc.w $EEE, $EEE, $EEE -ObjDat3_568B4: dc.l Map_MGZMiniBoss +ObjDat3_568B4: dc.l Map_MGZMiniboss dc.w $254F dc.w $280 dc.b $28 @@ -110594,7 +110596,7 @@ loc_57B40: jmp (Sprite_OnScreen_Test).l ; --------------------------------------------------------------------------- -Obj_BB_1: +Obj_ICZIceBlock: jsr (Obj_WaitOffscreen).l lea ObjDat3_57BF8(pc),a1 jsr SetUp_ObjAttributes(pc) @@ -112572,7 +112574,7 @@ ChildObjDat_58CE2:dc.w $B dc.l loc_589E8 ; --------------------------------------------------------------------------- -Obj_ICZ_SnowPile: +Obj_ICZSnowPile: jsr Obj_WaitOffscreen(pc) moveq #0,d0 move.b $2C(a0),d0 @@ -112912,7 +112914,7 @@ ChildObjDat_59018:dc.w 3 dc.w $808 ; --------------------------------------------------------------------------- -Obj_ICZ_TensionPlatform: +Obj_ICZTensionPlatform: lea ObjDat3_59254(pc),a1 jsr SetUp_ObjAttributes(pc) move.l #loc_5904E,(a0) @@ -115005,7 +115007,7 @@ byte_5A2B5: dc.b 3 dc.b 0 ; --------------------------------------------------------------------------- -Obj_C3_1: +Obj_LBZ1Robotnik: lea word_5A2F0(pc),a1 jsr Check_CameraInRange(pc) moveq #0,d0 @@ -115209,7 +115211,7 @@ loc_5A4F8: jmp Go_Delete_Sprite_2(pc) ; --------------------------------------------------------------------------- -Obj_C4_1: +Obj_LBZMinibossBox: tst.b (_unkFAAB).w bne.s loc_5A572 move.l #loc_5A57A,(a0) @@ -115523,7 +115525,7 @@ byte_5A830: dc.b 0 dc.b $F4 ; --------------------------------------------------------------------------- -Obj_C6_1: +Obj_LBZ2RobotnikShip: move.w a0,(Events_bg+$00).w lea ObjDat3_5AAEE(pc),a1 jsr (SetUp_ObjAttributes).l @@ -115681,7 +115683,7 @@ loc_5AA18: clr.b $40(a1) jsr (Create_New_Sprite).l bne.s loc_5AA78 - move.l #Obj_LBZ_FinalBoss1,(a1) + move.l #Obj_LBZFinalBoss1,(a1) move.w #$44A0,$10(a1) move.w #$780,$14(a1) @@ -115753,7 +115755,7 @@ ObjDat3_5AAEE: dc.l Map_RobotnikShip dc.b $A dc.b $CA dc.w 0 - dc.l Obj_C6_1 + dc.l Obj_LBZ2RobotnikShip dc.w 0 dc.b 0 dc.b 5 @@ -119109,7 +119111,7 @@ Map_FBZEndBossFlame: Map_Bloominator:include "General/Sprites/Bloominator/Map - Bloominator.asm" Map_MonkeyDude: include "General/Sprites/Monkey Dude/Map - Monkey Dude.asm" Map_SOZMiniboss:include "Levels/SOZ/Misc Object Data/Map - Miniboss.asm" -Map_MGZMiniBoss:include "Levels/MGZ/Misc Object Data/Map - Miniboss.asm" +Map_MGZMiniboss:include "Levels/MGZ/Misc Object Data/Map - Miniboss.asm" Map_CaterKillerJr: include "General/Sprites/Caterkiller Jr/Map - Caterkiller Jr.asm" DPLC_Clamer: include "General/Sprites/Clamer/DPLC - Clamer.asm" @@ -119490,7 +119492,7 @@ ArtNem_LBZKnuxBomb: ArtKosM_LBZ2DeathEggSmall: binclude "Levels/LBZ/KosinskiM Art/Act 2 Death Egg Small.bin" even -ArtScaled_FleeingRobotnik: +ArtScaled_LBZ2UnusedRobotnik: binclude "General/Sprites/Robotnik/Robotnik Fly Scaled.bin" even ArtKosM_LBZ2DeathEgg2_8x8: diff --git a/sonic3k.asm b/sonic3k.asm index 1ad5d428..2e4a2dbd 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -38409,7 +38409,7 @@ loc_1C6A0: bne.s loc_1C6D6 jsr (Create_New_Sprite).l bne.s loc_1C6D6 - move.l #Obj_AIZ_Miniboss,(a1) ; Make the miniboss + move.l #Obj_AIZMiniboss,(a1) ; Make the miniboss move.w #$11F0,$10(a1) move.w #$289,$14(a1) ; Set the position for Sonic's area area @@ -38520,7 +38520,7 @@ loc_1C7C8: bne.s loc_1C7FE jsr (Create_New_Sprite).l bne.s loc_1C7FE - move.l #Obj_AIZ_Miniboss,(a1) + move.l #Obj_AIZMiniboss,(a1) move.w #$11D0,$10(a1) ; Knuckles' version of the boss is further down obviously move.w #$420,$14(a1) @@ -38702,7 +38702,7 @@ loc_1C96E: move.w d0,(Camera_target_min_X_pos).w jsr (Create_New_Sprite).l bne.s loc_1C9A2 - move.l #Obj_A1_1_MGZ2_Boss,(a1) + move.l #Obj_MGZEndBoss,(a1) move.w #$3D20,$10(a1) move.w #$668,$14(a1) @@ -39339,7 +39339,7 @@ Map_PathSwap: include "General/Sprites/Level Misc/Map - Path Swap.asm" ; --------------------------------------------------------------------------- -Obj_3A_2: +Obj_SOZPathSwap: move.l #Map_PathSwap,$C(a0) move.w #make_art_tile(ArtTile_Ring,1,0),$A(a0) ori.b #4,4(a0) @@ -41580,7 +41580,7 @@ Map_Explosion: include "General/Sprites/Enemy Misc/Map - Explosion.asm" ; --------------------------------------------------------------------------- -Obj_09_1: +Obj_AIZ1Tree: move.l #Map_AIZ1Tree,$C(a0) move.w #$180,8(a0) move.b #8,7(a0) @@ -41592,7 +41592,7 @@ loc_1E7B0: jmp (Sprite_OnScreen_Test).l ; --------------------------------------------------------------------------- -Obj_0A_1: +Obj_AIZ1ZiplinePeg: move.l #Map_AIZ1ZiplinePeg,$C(a0) move.w #$380,8(a0) move.b #$20,7(a0) @@ -41604,7 +41604,7 @@ loc_1E7DC: jmp (Sprite_OnScreen_Test).l ; --------------------------------------------------------------------------- -Obj_26: +Obj_AutoSpin: move.l #Map_PathSwap,$C(a0) move.w #ArtTile_Ring,$A(a0) ori.b #4,4(a0) @@ -41915,14 +41915,14 @@ byte_1EB32: dc.b $96 dc.b 0 ; --------------------------------------------------------------------------- -Obj_27: +Obj_S2LavaMarker: moveq #0,d0 move.b $2C(a0),d0 move.b byte_1EB32(pc,d0.w),$28(a0) - move.l #Map_Obj27,$C(a0) + move.l #Map_S2LavaMarker,$C(a0) tst.w (Debug_placement_mode).w beq.s loc_1EB58 - move.l #Map_Obj27_2,$C(a0) + move.l #Map_S2LavaMarkerDebug,$C(a0) loc_1EB58: move.w #make_art_tile(ArtTile_Ring,0,1),$A(a0) @@ -41960,13 +41960,13 @@ loc_1EBAA: loc_1EBB6: jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- -Map_Obj27: include "General/Sprites/Unused/Map - Obj27 Unused.asm" - -Map_Obj27_2: include "General/Sprites/Unused/Map - Obj27 Unused 2.asm" - +Map_S2LavaMarker: + include "General/Sprites/Level Misc/Map - Lava Marker S2.asm" +Map_S2LavaMarkerDebug: + include "General/Sprites/Level Misc/Map - Lava Marker S2 Debug.asm" ; --------------------------------------------------------------------------- -Obj_28_Invisible_Barrier: +Obj_InvisibleBlock: move.l #Map_InvisibleBlock,$C(a0) move.w #make_art_tile(ArtTile_Ring,0,1),$A(a0) ori.b #4,4(a0) @@ -42042,8 +42042,8 @@ byte_1ED1A: dc.b $14 dc.b 2 ; --------------------------------------------------------------------------- -Obj_BreakableBar: - move.l #Map_BreakableBar,$C(a0) +Obj_HCZBreakableBar: + move.l #Map_HCZBreakableBar,$C(a0) move.w #$43CA,$A(a0) move.b #4,4(a0) move.w #$200,8(a0) @@ -42575,12 +42575,12 @@ loc_1F3CA: bra.w Sprite_OnScreen_Test ; --------------------------------------------------------------------------- -Obj_6D_2: +Obj_InvisibleShockBlock: bset #5,$2B(a0) bra.s Obj_InvisibleHurtBlockHorizontal ; --------------------------------------------------------------------------- -Obj_6E_2: +Obj_InvisibleLavaBlock: bset #4,$2B(a0) Obj_InvisibleHurtBlockHorizontal: @@ -49648,7 +49648,7 @@ Map_ScaledArt: include "General/Sprites/Level Misc/Map - Scaled Art.asm" ; --------------------------------------------------------------------------- -Obj_0E: +Obj_TwistedRamp: lea (Player_1).w,a1 bsr.s sub_24D9A lea (Player_2).w,a1 @@ -50279,13 +50279,13 @@ Map_LBZMovingPlatform:include "Levels/LBZ/Misc Object Data/Map - Moving Platform ; --------------------------------------------------------------------------- -Obj_1D_1: +Obj_LBZUnusedBarPlatform: jsr (Create_New_Sprite3).l bne.w loc_253BE move.w $10(a0),$10(a1) move.w $14(a0),$14(a1) move.b $2A(a0),$2A(a1) - move.l #Map_LBZPlatformUndersideUnused,$C(a1) + move.l #Map_LBZUnusedBarPlatform,$C(a1) move.w #$42EA,$A(a1) move.b #4,4(a1) move.w #$180,8(a1) @@ -50409,8 +50409,8 @@ locret_254E8: ; End of function sub_253FA ; --------------------------------------------------------------------------- -Map_LBZPlatformUndersideUnused: include "Levels/LBZ/Misc Object Data/Map - Floating Platform Underside (Unused).asm" - +Map_LBZUnusedBarPlatform: + include "Levels/LBZ/Misc Object Data/Map - Unused Bar Platform.asm" byte_254FA: dc.b $20 dc.b $20 dc.b 0 @@ -50909,7 +50909,7 @@ byte_25AF0: dc.b $10 dc.b $68 ; --------------------------------------------------------------------------- -Obj_12_1: +Obj_LBZUnusedElevator: move.l #Map_LBZUnusedElevator,$C(a0) move.w #$43C3,$A(a0) move.b #4,4(a0) @@ -51725,7 +51725,7 @@ loc_263DC: bne.s loc_2643C jsr (Create_New_Sprite3).l bne.w loc_2643C - move.l #Obj_26460,(a1) + move.l #Obj_AutoSpin460,(a1) bsr.s sub_263AA move.w $10(a0),$10(a1) move.w $14(a0),$14(a1) @@ -51756,7 +51756,7 @@ loc_2643C: jmp (Sprite_OnScreen_Test).l ; --------------------------------------------------------------------------- -Obj_26460: +Obj_AutoSpin460: lea (Ani_LBZFlameThrower).l,a1 jsr (Animate_Sprite).l tst.b 5(a0) @@ -52888,8 +52888,8 @@ loc_27100: jmp (Sprite_OnScreen_Test).l ; --------------------------------------------------------------------------- -Obj_1A_1: - move.l #Map_LBZUnusedUnknown,$C(a0) +Obj_LBZUnusedTiltingBridge: + move.l #Map_LBZUnusedTiltingBridge,$C(a0) move.w #$43C3,$A(a0) ori.b #4,4(a0) move.b #$40,7(a0) @@ -52900,7 +52900,7 @@ Obj_1A_1: jsr (Create_New_Sprite3).l bne.w loc_27190 move.l #loc_271E0,(a1) - move.l #Map_LBZUnusedUnknown,$C(a1) + move.l #Map_LBZUnusedTiltingBridge,$C(a1) move.w #$43C3,$A(a1) ori.b #4,4(a1) move.b #$40,7(a1) @@ -56772,7 +56772,7 @@ loc_29440: jmp (Sprite_OnScreen_Test).l ; --------------------------------------------------------------------------- -Obj_22_1: +Obj_LBZAlarm: move.b #4,4(a0) move.b #$10,7(a0) move.b #$10,6(a0) @@ -56851,7 +56851,7 @@ word_29508: dc.w $C0, $FFA0 dc.w $FF40, $FFA0 ; --------------------------------------------------------------------------- -Obj_23_1: +Obj_LBZUnusedForceFall: move.b #4,4(a0) move.b #$10,7(a0) move.b #$80,6(a0) @@ -60398,7 +60398,7 @@ loc_2C37A: jmp (Sprite_OnScreen_Test2).l ; --------------------------------------------------------------------------- -Obj_31_1: +Obj_LBZRollingDrum: moveq #0,d0 move.b $2C(a0),d0 move.w d0,$32(a0) @@ -62075,7 +62075,7 @@ loc_2D86E: bne.s loc_2D88A jsr (Create_New_Sprite).l bne.s loc_2D88A - move.l #Obj_SOZ_Ghosts,(a1) ; If new level is Sandopolis 2, then load the ghosts + move.l #Obj_SOZGhosts,(a1) ; If new level is Sandopolis 2, then load the ghosts loc_2D88A: cmpi.b #$16,(Current_zone).w @@ -64663,7 +64663,7 @@ Map_Bubbler: include "General/Sprites/Bubbles/Map - Bubbler.asm" ; --------------------------------------------------------------------------- -Obj_37_1: +Obj_HCZWaterRush: move.l #Map_HCZWaterRush,$C(a0) ori.b #4,4(a0) move.w #$437A,$A(a0) @@ -67424,7 +67424,7 @@ locret_31F2E: ; --------------------------------------------------------------------------- -Obj_48_1: +Obj_CNZVacuumTube: move.b $2C(a0),d0 beq.s loc_31F46 add.b d0,d0 @@ -68343,7 +68343,7 @@ loc_328BE: ; --------------------------------------------------------------------------- -Obj_49_1: +Obj_CNZGiantWheel: move.b #$60,$32(a0) move.l #loc_328D0,(a0) @@ -68440,7 +68440,7 @@ locret_3298E: ; --------------------------------------------------------------------------- -Obj_4B_1: +Obj_CNZTriangleBumpers: moveq #0,d0 move.b $2C(a0),d0 move.w d0,$34(a0) @@ -68519,7 +68519,7 @@ loc_32A5A: ; --------------------------------------------------------------------------- -Obj_4F_1: +Obj_SinkingMud: move.b $2C(a0),d0 lsl.w #3,d0 move.b d0,7(a0) @@ -68708,7 +68708,7 @@ loc_32C54: rts ; --------------------------------------------------------------------------- -Obj_5D_1: +Obj_CGZTriangleBumpers: move.b #8,7(a0) move.b #$40,6(a0) move.b $2C(a0),d0 @@ -69077,7 +69077,7 @@ Map_PachinkoBumper: include "Levels/Pachinko/Misc Object Data/Map - Bumper.asm" ; --------------------------------------------------------------------------- -Obj_4C_1: +Obj_CNZSpiralTube: lea (Player_1).w,a1 lea $30(a0),a4 bsr.s sub_330EE @@ -69842,7 +69842,7 @@ loc_33824: ; --------------------------------------------------------------------------- -Obj_4E_1: +Obj_CNZWireCage: moveq #0,d0 move.b $2C(a0),d0 lsl.w #3,d0 @@ -70205,7 +70205,7 @@ loc_33C62: ; --------------------------------------------------------------------------- -Obj_50_1: +Obj_MGZTwistingLoop: moveq #0,d0 move.b $2C(a0),d0 lsl.w #4,d0 @@ -76428,7 +76428,7 @@ word_3903C: dc.w $840 dc.l byte_3900E ; --------------------------------------------------------------------------- -Obj_69_1: +Obj_HCZTwistingLoop: move.b $2C(a0),d0 andi.w #$7F,d0 lsl.w #3,d0 @@ -77573,7 +77573,7 @@ Map_LRZCollapsingBridge:include "Levels/LRZ/Misc Object Data/Map - Collapsing Br ; --------------------------------------------------------------------------- -Obj_6F_1: +Obj_FBZWireCage: move.b $2C(a0),d0 bpl.s loc_39F48 andi.w #$7F,d0 @@ -77847,7 +77847,7 @@ RawAni_3A220: dc.b $6D, $6D, $6E, $6E, $6F, $6F, $70, $70, $71, $71, $72, $72, dc.b $77, $77, $6C, $6C, $6D, $6D ; --------------------------------------------------------------------------- -Obj_70_1_FBZ_Twisting_Cylinders: +Obj_FBZWireCageStationary: moveq #0,d0 move.b $2C(a0),d0 lsl.w #8,d0 @@ -78282,7 +78282,7 @@ Map_FBZFloatingPlatform:include "Levels/FBZ/Misc Object Data/Map - Floating Plat ; --------------------------------------------------------------------------- -Obj_FBZ_ChainLink: +Obj_FBZChainLink: move.b $2C(a0),d0 bpl.s loc_3A7E6 andi.w #$3F,d0 @@ -79701,7 +79701,7 @@ Map_FBZScrewDoor:include "Levels/FBZ/Misc Object Data/Map - Screw Door.asm" ; --------------------------------------------------------------------------- -Obj_7B_1: +Obj_FBZSpinningPole: moveq #0,d0 move.b $2C(a0),d0 lsl.w #3,d0 @@ -81808,7 +81808,7 @@ Map_MHZBigLeaves: include "Levels/MHZ/Misc Object Data/Map - Big Leaves.asm" ; --------------------------------------------------------------------------- -Obj_03_2: +Obj_MHZTwistedVine: move.b #-$30,7(a0) btst #0,$2A(a0) beq.s loc_3DCB4 @@ -84373,7 +84373,7 @@ Map_MHZMushroomCatapult:include "Levels/MHZ/Misc Object Data/Map - Mushroom Cata ; --------------------------------------------------------------------------- -Obj_14_2: +Obj_Updraft: move.b $2C(a0),d0 andi.w #$7F,d0 lsl.w #3,d0 @@ -84488,7 +84488,7 @@ loc_3FCC6: ; --------------------------------------------------------------------------- -Obj_38_2: +Obj_SOZQuicksand: moveq #0,d0 move.b $2C(a0),d0 andi.w #$3F,d0 @@ -85128,7 +85128,7 @@ Map_SOZSpawningSandBlocks:include "Levels/SOZ/Misc Object Data/Map - Spawning Sa ; --------------------------------------------------------------------------- -Obj_3B_2: +Obj_SOZLoopFallthrough: move.b $2C(a0),d0 andi.w #$7F,d0 lsl.w #4,d0 @@ -87439,7 +87439,7 @@ loc_42248: jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -Obj_15_2: +Obj_LRZCorkscrew: move.b #-$30,7(a0) move.l #loc_4225A,(a0) @@ -87629,7 +87629,7 @@ byte_4250A: dc.b 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, $A, $C, $ dc.b $20, $21, $21, $21 ; --------------------------------------------------------------------------- -Obj_16_2: +Obj_LRZWallRide: move.b #-$30,7(a0) move.l #loc_42556,(a0) @@ -90325,7 +90325,7 @@ loc_44F4C: jmp (Delete_Sprite_If_Not_In_Range).l ; --------------------------------------------------------------------------- -Obj_77_2: +Obj_SSZCutsceneBridge: move.b #$44,4(a0) move.b #$10,6(a0) move.b #$60,7(a0) @@ -91346,7 +91346,7 @@ loc_45A84: bne.s loc_45AD0 jsr (Create_New_Sprite).l bne.s loc_45AAE - move.l #Obj_A3_2,(a1) + move.l #Obj_SSZEndBoss,(a1) move.w a1,(_unkFAA4).w move.w a1,$30(a0) st $2E(a0) @@ -92604,7 +92604,7 @@ Map_SSZRetractingSpring:include "Levels/SSZ/Misc Object Data/Map - Retracting Sp ; --------------------------------------------------------------------------- -Obj_TiltingBridge: +Obj_DEZTiltingBridge: move.w $10(a0),d2 move.w d2,$44(a0) subi.w #$70,d2 @@ -92624,7 +92624,7 @@ loc_46DBC: move.w $14(a0),$14(a1) move.w $44(a0),$44(a1) move.w $14(a0),$46(a1) - move.l #Map_TiltingBridge,$C(a1) + move.l #Map_DEZTiltingBridge,$C(a1) move.w #$234D,$A(a1) ori.b #4,4(a1) move.b #$10,7(a1) @@ -92739,7 +92739,7 @@ loc_46F54: move.w $44(a0),d0 jmp (Sprite_OnScreen_Test2).l ; --------------------------------------------------------------------------- -Map_TiltingBridge:include "Levels/DEZ/Misc Object Data/Map - Tilting Bridge.asm" +Map_DEZTiltingBridge:include "Levels/DEZ/Misc Object Data/Map - Tilting Bridge.asm" ; --------------------------------------------------------------------------- @@ -93255,7 +93255,7 @@ loc_47680: move.l #loc_476FE,(a1) loc_47690: - move.l #Map_TiltingBridge,$C(a1) + move.l #Map_DEZTiltingBridge,$C(a1) move.w #$2480,$A(a1) move.b 4(a0),4(a1) move.w #$180,8(a1) @@ -93413,7 +93413,7 @@ locret_47814: rts ; --------------------------------------------------------------------------- -Obj_50_2: +Obj_DEZConveyorBelt: move.b $2C(a0),d0 andi.w #$7F,d0 lsl.w #3,d0 @@ -93887,7 +93887,7 @@ locret_47EFA: ; --------------------------------------------------------------------------- -Obj_56_2: +Obj_DEZEnergyBridgeCurved: move.l #Map_DEZEnergyBridgeCurved,$C(a0) move.b #$50,7(a0) move.b #$30,6(a0) @@ -94803,7 +94803,7 @@ Map_DEZGravitySwitch:include "Levels/DEZ/Misc Object Data/Map - Gravity Switch.a ; --------------------------------------------------------------------------- -Obj_59_2: +Obj_DEZTeleporter: lea (Player_1).w,a1 lea $30(a0),a4 bsr.s sub_48C30 @@ -94854,7 +94854,7 @@ loc_48C62: btst #0,(_unkFAB8).w bne.w locret_48D2A movea.w $42(a1),a3 - cmpi.l #Obj_59_2,(a3) + cmpi.l #Obj_DEZTeleporter,(a3) bne.s loc_48CB0 move.w a4,d0 sub.w a0,d0 @@ -95056,7 +95056,7 @@ locret_48EAC: rts ; --------------------------------------------------------------------------- -Obj_5A_2: +Obj_DEZGravityTube: move.b $2C(a0),d0 bpl.s loc_48EC8 andi.w #$3F,d0 @@ -95348,7 +95348,7 @@ RawAni_491DA: dc.b $6D, $6D, $6E, $6E, $6F, $6F, $70, $70, $71, $71, $72, $72, dc.b $77, $77, $6C, $6C, $6D, $6D ; --------------------------------------------------------------------------- -Obj_5B_2: +Obj_DEZGravitySwap: move.w #$20,$30(a0) move.w $10(a0),d1 lea (Player_1).w,a1 @@ -95421,7 +95421,7 @@ loc_49270: ; --------------------------------------------------------------------------- -Obj_5C_2: +Obj_DEZGravityHub: lea $30(a0),a2 lea (Player_1).w,a1 move.w (Ctrl_1_logical).w,d1 @@ -95691,7 +95691,7 @@ Map_DEZHoverMachine:include "Levels/DEZ/Misc Object Data/Map - Hover Machine.asm ; --------------------------------------------------------------------------- -Obj_5F_2: +Obj_DEZGravityRoom: lea $30(a0),a2 lea (Player_1).w,a1 move.w (Ctrl_1_logical).w,d4 @@ -96817,7 +96817,7 @@ Map_PachinkoFItem:include "Levels/Pachinko/Misc Object Data/Map - F Item.asm" ; --------------------------------------------------------------------------- -Obj_EC_1: +Obj_PachinkoMagnetOrb: move.l #Map_PachinkoFItem,$C(a0) move.w #$6378,$A(a0) ori.b #4,4(a0) @@ -106614,7 +106614,7 @@ MGZ2_QuakeEvent1: addi.w #$C,(Events_bg+$10).w ; Set next quake event routine jsr (Create_New_Sprite).l bne.s locret_515A2 - move.l #Obj_MGZ2DrillingEggman,(a1) + move.l #Obj_MGZ2DrillingRobotnik,(a1) move.w #$8E0,$10(a1) move.w #$690,$14(a1) ; Create drilling eggman boss sprite st (Screen_shake_flag).w @@ -106649,7 +106649,7 @@ loc_515CC: addi.w #$C,(Events_bg+$10).w ; Set next quake event routine jsr (Create_New_Sprite).l bne.s locret_5160C - move.l #Obj_MGZ2DrillingEggman,(a1) + move.l #Obj_MGZ2DrillingRobotnik,(a1) bset #0,4(a1) move.w #$2FA0,$10(a1) move.w #$2D0,$14(a1) ; Set Robotnik drilling object @@ -106671,7 +106671,7 @@ MGZ2_QuakeEvent3: addi.w #$C,(Events_bg+$10).w jsr (Create_New_Sprite).l bne.s locret_51654 - move.l #Obj_MGZ2DrillingEggman,(a1) + move.l #Obj_MGZ2DrillingRobotnik,(a1) bset #0,4(a1) move.w #$3300,$10(a1) move.w #$790,$14(a1) @@ -107874,7 +107874,7 @@ loc_5216C: move.l #Obj_CNZTeleporter,(a1) jsr (CreateNewSprite4).l bne.s loc_521BE - move.l #Obj_81,(a1) + move.l #Obj_EggCapsule,(a1) move.w #$4980,$10(a1) move.w #$A20,$14(a1) movem.l d7-a0/a2-a3,-(sp) @@ -112158,7 +112158,7 @@ loc_54B4E: st (Events_bg+$00).w jsr (Create_New_Sprite).l bne.s loc_54B7C - move.l #Obj_MHZ_Miniboss,(a1) + move.l #Obj_MHZMiniboss,(a1) loc_54B7C: jmp DrawTilesAsYouMove(pc) @@ -114011,7 +114011,7 @@ loc_55F7C: bne.s locret_55F96 jsr (Create_New_Sprite).l bne.s loc_55F90 - move.l #Obj_SOZ_Miniboss,(a1) + move.l #Obj_SOZMiniboss,(a1) loc_55F90: jmp (Delete_Current_Sprite).l @@ -120264,7 +120264,7 @@ HPZ_ScreenEvent: bne.s loc_5A176 jsr (Create_New_Sprite).l bne.s loc_5A172 - move.l #Obj_B1_2,(a1) + move.l #Obj_HPZPaletteControl,(a1) loc_5A172: st (Events_bg+$00).w @@ -127741,7 +127741,7 @@ PalSPtr_EndingSuperTails: palscriptptr .header, .data palscriptrept ; --------------------------------------------------------------------------- -Obj_86: +Obj_GumballMachine: lea ObjDat3_613B0(pc),a1 jsr (SetUp_ObjAttributes).l move.l #loc_60CB8,(a0) @@ -127978,7 +127978,7 @@ loc_60F28: jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- -Obj_87: +Obj_GumballTriangleBumper: lea ObjDat3_613A4(pc),a1 jsr (SetUp_ObjAttributes).l move.l #loc_60F3E,(a0) @@ -130163,7 +130163,7 @@ loc_62AAE: jmp (Sprite_CheckDeleteXY).l ; --------------------------------------------------------------------------- -Obj_C8_1: +Obj_LBZKnuxPillar: lea ObjDat3_66426(pc),a1 jsr (SetUp_ObjAttributes).l bclr #1,4(a0) @@ -130307,7 +130307,7 @@ loc_62C90: jmp (MoveSprite2).l ; --------------------------------------------------------------------------- -Obj_A8_2: +Obj_MHZ1CutsceneKnuckles: cmpi.b #2,(Player_1+character_id).w beq.w loc_62158 tst.b (Last_star_post_hit).w @@ -130452,7 +130452,7 @@ loc_62E1A: jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- -Obj_A9_2: +Obj_MHZ1CutsceneButton: lea ObjDat3_6644A(pc),a1 jsr (SetUp_ObjAttributes).l lea ChildObjDat_665B6(pc),a2 @@ -131515,7 +131515,7 @@ locret_63B20: rts ; --------------------------------------------------------------------------- -Obj_AE_2: +Obj_LRZ2CutsceneKnuckles: cmpi.b #2,(Player_1+character_id).w beq.w loc_62158 move.l #loc_63B40,(a0) @@ -133880,7 +133880,7 @@ loc_65692: rts ; --------------------------------------------------------------------------- -Obj_B1_2: +Obj_HPZPaletteControl: move.w $3A(a0),d0 moveq #0,d1 cmpi.w #$460,(Camera_X_pos).w @@ -134117,7 +134117,7 @@ loc_65998: jmp (Go_Delete_Sprite).l ; --------------------------------------------------------------------------- -Obj_AF_2: +Obj_SSZCutsceneButton: lea ObjDat3_6649E(pc),a1 jsr (SetUp_ObjAttributes).l move.l #loc_659C6,(a0) @@ -134295,7 +134295,7 @@ loc_65BC2: jmp (Sprite_CheckDeleteXY).l ; --------------------------------------------------------------------------- -Obj_83: +Obj_CutsceneButton: cmpi.b #2,(Player_1+character_id).w beq.w loc_62158 lea ObjDat3_66402(pc),a1 @@ -134386,7 +134386,7 @@ loc_65CAC: move.b #-$78,(a1) jsr (Create_New_Sprite).l bne.s loc_65CF4 - move.l #Obj_48_1,(a1) + move.l #Obj_CNZVacuumTube,(a1) move.w #$4740,$10(a1) move.w #$828,$14(a1) move.b #$4C,$2C(a1) @@ -134394,7 +134394,7 @@ loc_65CAC: loc_65CF4: jsr (Create_New_Sprite).l bne.s locret_65D14 - move.l #Obj_48_1,(a1) + move.l #Obj_CNZVacuumTube,(a1) move.w #$4740,$10(a1) move.w #$A28,$14(a1) move.b #$20,$2C(a1) @@ -134403,7 +134403,7 @@ locret_65D14: rts ; --------------------------------------------------------------------------- -Obj_88: +Obj_CNZWaterLevelCorkFloor: jsr (Obj_WaitOffscreen).l move.l #loc_65D46,(a0) jsr (Create_New_Sprite3).l @@ -134431,7 +134431,7 @@ loc_65D68: jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- -Obj_89: +Obj_CNZWaterLevelButton: lea ObjDat3_66402(pc),a1 jsr (SetUp_ObjAttributes).l move.l #loc_65D8C,(a0) @@ -135440,7 +135440,7 @@ ChildObjDat_6659A:dc.w 0 dc.l loc_61F60 dc.w $18 ChildObjDat_665A2:dc.w 0 - dc.l Obj_83 + dc.l Obj_CutsceneButton dc.w $C ChildObjDat_665AA:dc.w 0 dc.l Obj_CutsceneKnuckles @@ -137289,7 +137289,7 @@ Map_FBZRobotnikStand: include "Levels/FBZ/Misc Object Data/Map - Robotnik Stand. ; --------------------------------------------------------------------------- -Obj_AIZ_Miniboss_Cutscene: +Obj_AIZMinibossCutscene: moveq #0,d0 move.b 5(a0),d0 move.w off_684FE(pc,d0.w),d1 @@ -137768,7 +137768,7 @@ word_68A18: dc.w 0 dc.w 8 ; --------------------------------------------------------------------------- -Obj_AIZ_Miniboss: +Obj_AIZMiniboss: moveq #0,d0 move.b 5(a0),d0 move.w off_68A36(pc,d0.w),d1 @@ -138589,8 +138589,8 @@ AIZBossKnuxDat: dc.w $4100 dc.w $5DA ; --------------------------------------------------------------------------- -Obj_AIZ_EndBoss: - move.l #Obj_AIZ_EndBossWait,(a0) +Obj_AIZEndBoss: + move.l #Obj_AIZEndBossWait,(a0) lea AIZBossSonicDat(pc),a1 cmpi.b #2,(Player_1+character_id).w bne.s loc_691BE @@ -138602,7 +138602,7 @@ loc_691BE: move.w (a1)+,(a2)+ move.w (a1)+,(a2)+ ; Load relative positional data depending on the character -Obj_AIZ_EndBossWait: +Obj_AIZEndBossWait: move.w (_unkFA82).w,d0 cmp.w (Camera_X_pos).w,d0 bls.s loc_691D4 ; Only branch if Sonic has reached the boss area @@ -138614,7 +138614,7 @@ loc_691D4: move.w d0,(Camera_max_X_pos).w move.l #Obj_Wait,(a0) ; Set up object to wait $78 frames move.w #$78,$2E(a0) - move.l #Obj_AIZ_EndBossMusic,$34(a0) + move.l #Obj_AIZEndBossMusic,$34(a0) moveq #signextendB(mus_FadeOut),d0 jsr (Play_Music).l move.b #1,(Boss_flag).w ; Lock the screen @@ -138629,15 +138629,15 @@ loc_691D4: jmp (PalLoad_Line1).l ; Load the AIZ boss palette ; --------------------------------------------------------------------------- -Obj_AIZ_EndBossMusic: - move.l #Obj_AIZ_EndBossMain,(a0) +Obj_AIZEndBossMusic: + move.l #Obj_AIZEndBossMain,(a0) moveq #signextendB(mus_EndBoss),d0 ; Play the boss music jsr (Play_Music).l move.b #mus_EndBoss,(Current_music+1).w rts ; --------------------------------------------------------------------------- -Obj_AIZ_EndBossMain: +Obj_AIZEndBossMain: moveq #0,d0 move.b 5(a0),d0 move.w AIZ_EndBossIndex(pc,d0.w),d1 @@ -138646,7 +138646,7 @@ Obj_AIZ_EndBossMain: bne.w locret_69366 ; Only draw and touch when boss has revealed itself jmp (Draw_And_Touch_Sprite).l ; --------------------------------------------------------------------------- -AIZ_EndBossIndex: dc.w Obj_AIZ_EndBossInit-AIZ_EndBossIndex +AIZ_EndBossIndex: dc.w Obj_AIZEndBossInit-AIZ_EndBossIndex dc.w loc_692E2-AIZ_EndBossIndex dc.w loc_6932C-AIZ_EndBossIndex dc.w loc_69368-AIZ_EndBossIndex @@ -138656,7 +138656,7 @@ AIZ_EndBossIndex: dc.w Obj_AIZ_EndBossInit-AIZ_EndBossIndex dc.w loc_6946A-AIZ_EndBossIndex ; --------------------------------------------------------------------------- -Obj_AIZ_EndBossInit: +Obj_AIZEndBossInit: lea ObjDat_AIZEndBoss(pc),a1 jsr (SetUp_ObjAttributes).l move.b #8,$29(a0) ; 8 hits defeats it @@ -139664,7 +139664,7 @@ ChildObjDat_69D66:dc.w 5 dc.l loc_69A3A dc.w $C18 ChildObjDat_69D8C:dc.w 0 - dc.l Obj_81 + dc.l Obj_EggCapsule dc.w 0 dc.l Obj_CutsceneKnuckles byte_69D98: dc.b $2B, 0 @@ -141556,7 +141556,7 @@ loc_6B0E8: beq.s loc_6B138 jsr (Create_New_Sprite).l bne.s locret_6B136 - move.l #Obj_81,(a1) + move.l #Obj_EggCapsule,(a1) move.w #$4250,$10(a1) move.w #$7E0,$14(a1) @@ -141567,7 +141567,7 @@ locret_6B136: loc_6B138: jsr (Create_New_Sprite).l bne.s locret_6B152 - move.l #Obj_81,(a1) + move.l #Obj_EggCapsule,(a1) move.w #$4760,$10(a1) move.w #$360,$14(a1) @@ -142957,11 +142957,11 @@ Pal_HCZEndBoss: binclude "Levels/HCZ/Palettes/End Boss.bin" ; --------------------------------------------------------------------------- -Obj_MGZ2DrillingEggman: +Obj_MGZ2DrillingRobotnik: move.l #Obj_Wait,(a0) move.b #1,(Boss_flag).w move.w #$78,$2E(a0) - move.l #Obj_MGZ2DrillingEggmanGo,$34(a0) + move.l #Obj_MGZ2DrillingRobotnikGo,$34(a0) clr.b $2C(a0) moveq #signextendB(mus_FadeOut),d0 jsr (Play_Music).l @@ -142977,8 +142977,8 @@ Obj_MGZ2DrillingEggman: jmp (PalLoad_Line1).l ; --------------------------------------------------------------------------- -Obj_MGZ2DrillingEggmanGo: - move.l #Obj_MGZ2DrillingEggmanStart,(a0) +Obj_MGZ2DrillingRobotnikGo: + move.l #Obj_MGZ2DrillingRobotnikStart,(a0) moveq #signextendB(mus_EndBoss),d0 ; Play boss music jsr (Play_Music).l move.b #mus_EndBoss,(Current_music+1).w @@ -142987,7 +142987,7 @@ locret_6BF96: rts ; --------------------------------------------------------------------------- -Obj_MGZ2DrillingEggmanStart: +Obj_MGZ2DrillingRobotnikStart: moveq #0,d0 move.b 5(a0),d0 move.w off_6BFB0(pc,d0.w),d1 @@ -143287,7 +143287,7 @@ locret_6C318: rts ; --------------------------------------------------------------------------- -Obj_A1_1_MGZ2_Boss: +Obj_MGZEndBoss: moveq #0,d0 move.b 5(a0),d0 move.w off_6C332(pc,d0.w),d1 @@ -143563,7 +143563,7 @@ word_6C688: dc.w 0, $128, $3C78, $3E78 dc.w $28, $28, $3D78, $3D78 ; --------------------------------------------------------------------------- -Obj_A2_1: +Obj_MGZEndBossKnux: lea word_6C688(pc),a1 jsr (Check_CameraInRange).l move.b #mus_Miniboss,$26(a0) @@ -143738,7 +143738,7 @@ loc_6C8B4: clr.b (Boss_flag).w jsr (Create_New_Sprite).l bne.s loc_6C8DC - move.l #Obj_81,(a1) + move.l #Obj_EggCapsule,(a1) move.w #$3F40,$10(a1) move.w #$B0,$14(a1) @@ -143790,7 +143790,7 @@ loc_6C962: lea word_6D782(pc),a1 jsr (SetUp_ObjAttributes3).l movea.w $46(a0),a1 - cmpi.l #Obj_A1_1_MGZ2_Boss,(a1) + cmpi.l #Obj_MGZEndBoss,(a1) bne.s loc_6C97E bclr #7,$A(a0) @@ -144249,7 +144249,7 @@ loc_6CEB0: beq.s loc_6CEE6 move.w #$380,8(a0) movea.w $46(a0),a1 - cmpi.l #Obj_A1_1_MGZ2_Boss,(a1) + cmpi.l #Obj_MGZEndBoss,(a1) bne.s loc_6CEE6 bclr #7,$A(a0) @@ -146617,7 +146617,7 @@ loc_6E6E4: move.w d0,(Camera_stored_max_X_pos).w jsr (Create_New_Sprite).l bne.s loc_6E718 - move.l #Obj_81,(a1) + move.l #Obj_EggCapsule,(a1) move.w #$4990,$10(a1) move.w #$2E0,$14(a1) @@ -147350,7 +147350,7 @@ Pal_CNZEndBoss: binclude "Levels/CNZ/Palettes/End Boss.bin" ; --------------------------------------------------------------------------- -Obj_AA_1_FBZ1_Boss: +Obj_FBZMiniboss: lea word_6EE98(pc),a1 jsr (Check_CameraInRange).l moveq #0,d0 @@ -148631,7 +148631,7 @@ word_6FCFC: dc.w $560, $660, $2900, $2C00 ; --------------------------------------------------------------------------- -Obj_AB_1_FBZ_Laser_Boss: +Obj_FBZ2Subboss: lea word_6FCFC(pc),a1 jsr (Check_CameraInRange).l moveq #0,d0 @@ -149248,7 +149248,7 @@ ChildObjDat_703D0:dc.w 1 dc.l loc_7002A dc.w 0 ChildObjDat_703DE:dc.w 0 - dc.l Obj_8B + dc.l Obj_SpriteMask ChildObjDat_703E4:dc.w 1 dc.l loc_70118 dc.w 0 @@ -149517,7 +149517,7 @@ loc_70870: clr.b (Boss_flag).w jsr (Create_New_Sprite).l bne.s loc_70898 - move.l #Obj_81,(a1) + move.l #Obj_EggCapsule,(a1) move.w #$307C,$10(a1) move.w #$660,$14(a1) @@ -151378,7 +151378,7 @@ loc_71D9E: clr.b (Boss_flag).w jsr (Create_New_Sprite).l bne.s loc_71DC6 - move.l #Obj_81,(a1) + move.l #Obj_EggCapsule,(a1) move.w #$4560,$10(a1) move.w #$6A3,$14(a1) @@ -152578,7 +152578,7 @@ Pal_LBZMiniboss: binclude "Levels/LBZ/Palettes/Miniboss.bin" ; --------------------------------------------------------------------------- -Obj_LBZ_FinalBoss1: +Obj_LBZFinalBoss1: moveq #0,d0 move.b 5(a0),d0 move.w off_729D2(pc,d0.w),d1 @@ -153138,7 +153138,7 @@ word_72FEA: dc.w 0, $428, $4280, $4380 dc.w $328, $328, $4300, $4300 ; --------------------------------------------------------------------------- -Obj_CD_1_LBZ2_TallBoss: +Obj_LBZFinalBossKnux: lea word_72FEA(pc),a1 jsr (Check_CameraInRange).l move.b #mus_EndBoss,$26(a0) @@ -153171,7 +153171,7 @@ loc_73046: ; --------------------------------------------------------------------------- loc_7304C: - move.l #Obj_LBZ_FinalBoss1,(a0) + move.l #Obj_LBZFinalBoss1,(a0) rts ; --------------------------------------------------------------------------- @@ -153191,7 +153191,7 @@ loc_73070: bset #5,$38(a0) jsr (Create_New_Sprite).l bne.s loc_73088 - move.l #Obj_LBZ_FinalBoss2,(a1) + move.l #Obj_LBZFinalBoss2,(a1) loc_73088: jmp (Go_Delete_Sprite_2).l @@ -154007,7 +154007,7 @@ word_738C6: dc.w $460, $6A0, $3900, $3B20 word_738CE: dc.w $5A0, $5A0, $3A20, $3A20 ; --------------------------------------------------------------------------- -Obj_LBZ_EndBoss: +Obj_LBZEndBoss: lea word_738C6(pc),a1 jsr (Check_CameraInRange).l moveq #0,d0 @@ -154913,7 +154913,7 @@ word_74254: dc.w 2 ; --------------------------------------------------------------------------- -Obj_LBZ_FinalBoss2: +Obj_LBZFinalBoss2: moveq #0,d0 move.b 5(a0),d0 move.w off_7427C(pc,d0.w),d1 @@ -156291,7 +156291,7 @@ Pal_LBZFinalBoss2: binclude "Levels/LBZ/Palettes/Final Boss 2.bin" ; --------------------------------------------------------------------------- -Obj_MHZ_Miniboss: +Obj_MHZMiniboss: moveq #0,d0 move.b 5(a0),d0 move.w off_751F0(pc,d0.w),d1 @@ -157053,7 +157053,7 @@ loc_75A7E: jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- -Obj_91_2: +Obj_MHZMinibossTree: lea ObjDat3_75E66(pc),a1 jsr (SetUp_ObjAttributes).l move.l #loc_75A94,(a0) @@ -157062,7 +157062,7 @@ loc_75A94: move.w (_unkFAA4).w,d0 beq.s loc_75ACE movea.w d0,a1 - cmpi.l #Obj_MHZ_Miniboss,(a1) + cmpi.l #Obj_MHZMiniboss,(a1) bne.s loc_75ACE tst.b 4(a0) bmi.s loc_75AB0 @@ -157585,7 +157585,7 @@ PLC_75F48: dc.w 0 dc.w $9A40 ; --------------------------------------------------------------------------- -Obj_MHZ_EndBoss: +Obj_MHZEndBoss: lea word_769F4(pc),a1 jsr (Check_CameraInRange).l move.l #loc_75FD4,(a0) @@ -157794,7 +157794,7 @@ loc_761E8: jsr (PLCLoad_AnimalsAndExplosion).l jsr (Create_New_Sprite).l bne.s loc_76236 - move.l #Obj_81,(a1) + move.l #Obj_EggCapsule,(a1) move.w #$4640,$10(a1) move.w #$320,$14(a1) @@ -158498,7 +158498,7 @@ PLC_76A04: dc.w 1 dc.w $B400 ; --------------------------------------------------------------------------- -Obj_SOZ_Miniboss: +Obj_SOZMiniboss: move.l #Obj_Wait,(a0) move.w #$439D,$10(a0) move.w #$9F7,$14(a0) @@ -159458,7 +159458,7 @@ Map_SOZMinibossDust: include "Levels/SOZ/Misc Object Data/Map - Miniboss Landing ; --------------------------------------------------------------------------- -Obj_SOZ_EndBoss: +Obj_SOZEndBoss: moveq #0,d0 move.b 5(a0),d0 move.w off_7766E(pc,d0.w),d1 @@ -159633,7 +159633,7 @@ loc_77848: jsr (Swing_Setup1).l jsr (Create_New_Sprite).l bne.s loc_77882 - move.l #Obj_81,(a1) + move.l #Obj_EggCapsule,(a1) move.w #$5360,$10(a1) move.w #$720,$14(a1) @@ -160694,7 +160694,7 @@ byte_784E8: dc.b 7, $10 dc.b $2C, 0 ; --------------------------------------------------------------------------- -Obj_LRZ_Miniboss: +Obj_LRZMiniboss: lea byte_784E0(pc),a1 jsr (Check_CameraInRange).l move.l #loc_78522,(a0) @@ -161585,7 +161585,7 @@ word_78EAA: palscriptptr .header, .data palscriptrun ; --------------------------------------------------------------------------- -Obj_9E_2: +Obj_LRZ3Autoscroll: move.l #loc_78F82,(a0) move.w #$3B,$2E(a0) lea (ArtKosM_LRZ3DeathEggFlash).l,a1 @@ -162493,7 +162493,7 @@ loc_79998: clr.b (Boss_flag).w jsr (Create_New_Sprite).l bne.s loc_799C6 - move.l #Obj_81,(a1) + move.l #Obj_EggCapsule,(a1) bset #1,4(a1) loc_799C6: @@ -162529,7 +162529,7 @@ loc_79A08: loc_79A30: jsr (Create_New_Sprite).l bne.s locret_79A50 - move.l #Obj_B3_2,(a1) + move.l #Obj_StartNewLevel,(a1) move.b #$2D,$2C(a1) move.w #$FE8,$10(a1) move.w #$5E0,$14(a1) @@ -162722,7 +162722,7 @@ loc_79C4C: jmp (Child_Draw_Sprite2).l ; --------------------------------------------------------------------------- -Obj_AD_2: +Obj_LRZ3Platform: moveq #0,d0 move.b $2C(a0),d0 lsl.w #2,d0 @@ -164882,7 +164882,7 @@ Pal_SSZMTZOrbs: binclude "Levels/SSZ/Palettes/MTZOrbs.bin" ; --------------------------------------------------------------------------- -Obj_A3_2: +Obj_SSZEndBoss: moveq #0,d0 move.b 5(a0),d0 move.w off_7B2B2(pc,d0.w),d1 @@ -166890,7 +166890,7 @@ loc_7CA12: jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- -Obj_B2_2: +Obj_KnuxFinalBossCrane: move.l #loc_7CA3A,(a0) move.w (Camera_min_X_pos).w,(Camera_max_X_pos).w lea PLC_7CA32(pc),a1 @@ -166996,7 +166996,7 @@ loc_7CB64: loc_7CB82: jsr (Create_New_Sprite).l bne.s loc_7CB90 - move.l #Obj_A3_2,(a1) + move.l #Obj_SSZEndBoss,(a1) loc_7CB90: move.w a1,(_unkFAA4).w @@ -168370,7 +168370,7 @@ word_7DDA4: dc.w $18C dc.w $36C0 ; --------------------------------------------------------------------------- -Obj_DEZ_Miniboss: +Obj_DEZMiniboss: lea word_7DDA4(pc),a1 jsr (Check_CameraInRange).l move.b #mus_Miniboss,$26(a0) @@ -168619,7 +168619,7 @@ loc_7E044: jsr (Create_New_Sprite).l bne.s sub_7E08C move.w a0,$46(a1) - move.l #Obj_8B,(a1) + move.l #Obj_SpriteMask,(a1) move.w #$3740,$10(a1) move.w #$360,$14(a1) move.b #-$77,$2C(a1) @@ -170271,7 +170271,7 @@ word_7F03C: palscriptptr .header, .data palscriptrun ; --------------------------------------------------------------------------- -Obj_DEZ_EndBoss: +Obj_DEZEndBoss: lea word_7F0BE(pc),a1 jsr (Check_CameraInRange).l move.l #loc_7F0CE,(a0) @@ -174134,7 +174134,7 @@ loc_8179E: jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- -Obj_B6_2: +Obj_DDZEndBoss: move.w (_unkFAAE).w,d0 sub.w d0,$10(a0) moveq #0,d0 @@ -181989,7 +181989,7 @@ loc_862A6: rts ; --------------------------------------------------------------------------- -Obj_8B: +Obj_SpriteMask: bset #2,4(a0) loc_862B4: @@ -182126,7 +182126,7 @@ loc_863E6: jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- -Obj_B3_2: +Obj_StartNewLevel: lea (Player_1).w,a1 lea word_86426(pc),a2 jsr (Check_InMyRange).l @@ -182242,7 +182242,7 @@ loc_8648C: rts ; --------------------------------------------------------------------------- -Obj_81: +Obj_EggCapsule: moveq #0,d0 move.b 5(a0),d0 move.w off_86566(pc,d0.w),d1 @@ -182982,7 +182982,7 @@ Map_EggCapsule: include "General/Sprites/Robotnik/Map - Egg Capsule.asm" ; --------------------------------------------------------------------------- -Obj_8A: +Obj_FBZExitHall: move.l #Sprite_OnScreen_Test,(a0) moveq #0,d0 move.b $2C(a0),d0 @@ -185494,7 +185494,7 @@ byte_8844D: dc.b 0, $7F dc.b $FC ; --------------------------------------------------------------------------- -Obj_MGZMiniBoss: +Obj_Tunnelbot: jsr (Obj_WaitOffscreen).l moveq #0,d0 move.b 5(a0),d0 @@ -185594,7 +185594,7 @@ loc_8855A: jmp (Go_Delete_Sprite).l ; --------------------------------------------------------------------------- -Obj_9F_1: +Obj_MGZMiniboss: lea word_8859C(pc),a1 jsr (Check_CameraInRange).l moveq #0,d0 @@ -186087,7 +186087,7 @@ loc_88AD4: word_88AE4: dc.w Normal_palette_line_2+$18, Normal_palette_line_2+$1A, Normal_palette_line_2+$1C word_88AEA: dc.w $CAA, $866, $644 dc.w $EEE, $EEE, $EEE -ObjDat3_88AF6: dc.l Map_MGZMiniBoss +ObjDat3_88AF6: dc.l Map_MGZMiniboss dc.w $254F dc.w $280 dc.b $28 @@ -188590,7 +188590,7 @@ loc_8A32A: jmp (Sprite_OnScreen_Test).l ; --------------------------------------------------------------------------- -Obj_BB_1: +Obj_ICZIceBlock: jsr (Obj_WaitOffscreen).l lea ObjDat3_8A3EE(pc),a1 jsr SetUp_ObjAttributes(pc) @@ -190627,7 +190627,7 @@ ChildObjDat_8B54A:dc.w $B dc.l loc_8B230 ; --------------------------------------------------------------------------- -Obj_ICZ_SnowPile: +Obj_ICZSnowPile: jsr Obj_WaitOffscreen(pc) moveq #0,d0 move.b $2C(a0),d0 @@ -190967,7 +190967,7 @@ ChildObjDat_8B880:dc.w 3 dc.w $808 ; --------------------------------------------------------------------------- -Obj_ICZ_TensionPlatform: +Obj_ICZTensionPlatform: lea ObjDat3_8BABC(pc),a1 jsr SetUp_ObjAttributes(pc) move.l #loc_8B8B6,(a0) @@ -193062,7 +193062,7 @@ byte_8CB4B: dc.b 3 dc.b 0 ; --------------------------------------------------------------------------- -Obj_C3_1: +Obj_LBZ1Robotnik: cmpi.b #2,(Player_1+character_id).w beq.s loc_8CB90 lea word_8CB96(pc),a1 @@ -193270,7 +193270,7 @@ loc_8CD9C: jmp Go_Delete_Sprite_2(pc) ; --------------------------------------------------------------------------- -Obj_C4_1: +Obj_LBZMinibossBox: cmpi.b #2,(Player_1+character_id).w beq.s loc_8CDEA tst.b (_unkFAAB).w @@ -193446,7 +193446,7 @@ word_8CF70: dc.w $7B6, $9C0, $3BA0, $3CA0 dc.w $7B6, $936, $3BC0, $3C80 ; --------------------------------------------------------------------------- -Obj_C5_1: +Obj_LBZMinibossBoxKnux: lea word_8CF70(pc),a1 jsr (Check_CameraInRange).l move.w (a1)+,(Camera_min_Y_pos).w @@ -193750,7 +193750,7 @@ byte_8D298: dc.b 0 dc.b $F4 ; --------------------------------------------------------------------------- -Obj_C6_1: +Obj_LBZ2RobotnikShip: move.w a0,(Events_bg+$00).w lea ObjDat3_8D562(pc),a1 jsr (SetUp_ObjAttributes).l @@ -193920,7 +193920,7 @@ loc_8D4CC: loc_8D4E4: jsr (Create_New_Sprite).l bne.w locret_8D47A - move.l #Obj_LBZ_FinalBoss1,(a1) + move.l #Obj_LBZFinalBoss1,(a1) move.w #$44A0,$10(a1) move.w #$780,$14(a1) jmp (Go_Delete_Sprite_2).l @@ -193980,7 +193980,7 @@ ObjDat3_8D562: dc.l Map_RobotnikShip dc.b $A dc.b $CA dc.w 0 - dc.l Obj_C6_1 + dc.l Obj_LBZ2RobotnikShip dc.w 0 dc.b 0 dc.b 5 @@ -196462,7 +196462,7 @@ Map_Rockn:include "General/Sprites/Rockn/Map - Rock'n.asm" ; my screen to be filled with pink ; --------------------------------------------------------------------------- -Obj_SOZ_Ghosts: +Obj_SOZGhosts: move.l #loc_8F0CA,(a0) move.w #$120,$10(a0) move.w #$A0,$14(a0) @@ -196723,7 +196723,7 @@ loc_8F37A: jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -Obj_AB_2: +Obj_SOZGhostCapsuleLoadArt: moveq #0,d0 move.b $2C(a0),d0 movea.l off_8F3BE(pc,d0.w),a1 @@ -196759,7 +196759,7 @@ loc_8F3F0: jmp (LoadEnemyArt).l ; --------------------------------------------------------------------------- -Obj_AC_2_SOZ2_Ghost_Capsule: +Obj_SOZGhostCapsule: lea ObjDat3_8F62E(pc),a1 jsr (SetUp_ObjAttributes).l move.l #loc_89C14,(a0) @@ -197379,7 +197379,7 @@ Map_Fireworm: include "General/Sprites/Fireworm/Map - Fireworm.asm" ; --------------------------------------------------------------------------- -Obj_LRZExplodingRock: +Obj_Iwamodoki: jsr (Obj_WaitOffscreen).l moveq #0,d0 move.b 5(a0),d0 @@ -198388,13 +198388,13 @@ Child7_ChangeLevSize:dc.w 3 dc.l Obj_IncLevEndXGradual dc.w 0 ChildObjDat_9067A:dc.w 0 - dc.l Obj_8B + dc.l Obj_SpriteMask Pal_LRZRockCrusher: binclude "Levels/LRZ/Palettes/Rock Crusher.bin" even ; --------------------------------------------------------------------------- -Obj_B0_2: +Obj_HPZMasterEmerald: lea ObjDat3_90FAC(pc),a1 jsr (SetUp_ObjAttributes).l move.l #loc_90700,(a0) @@ -198459,7 +198459,7 @@ loc_90744: RawAni_90768: dc.b $1D, $1D, $1D, $C, $D, $E, $1D, $F, $10, $11, $1D, $1D ; --------------------------------------------------------------------------- -Obj_B4_2: +Obj_HPZSuperEmerald: lea ObjDat3_90FC0(pc),a1 jsr (SetUp_ObjAttributes).l moveq #0,d0 @@ -198647,7 +198647,7 @@ loc_9095E: jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -Obj_B5_2: +Obj_HPZSSEntryControl: lea (ArtKosM_HPZSmallEmeralds).l,a1 move.w #-$6A80,d2 jsr (Queue_Kos_Module).l @@ -198676,7 +198676,7 @@ loc_909B0: move.l #$6A00660,(Target_palette_line_4+$2).w jsr (Create_New_Sprite).l bne.s loc_909CC - move.l #Obj_B0_2,(a1) + move.l #Obj_HPZMasterEmerald,(a1) loc_909CC: jsr (Create_New_Sprite).l @@ -198694,7 +198694,7 @@ loc_909EA: loc_909F4: jsr (Create_New_Sprite).l - move.l #Obj_B4_2,(a1) + move.l #Obj_HPZSuperEmerald,(a1) move.b d2,$2C(a1) addq.w #1,d2 dbf d3,loc_909F4 @@ -198713,7 +198713,7 @@ loc_90A26: cmp.b (a2)+,d1 bhi.s loc_90A3A jsr (Create_New_Sprite).l - move.l #Obj_B4_2,(a1) + move.l #Obj_HPZSuperEmerald,(a1) move.b d2,$2C(a1) loc_90A3A: @@ -199188,7 +199188,7 @@ loc_90ED0: addq.b #1,(a1,d0.w) jsr (Create_New_Sprite).l bne.s loc_90EFC - move.l #Obj_B4_2,(a1) + move.l #Obj_HPZSuperEmerald,(a1) move.b $2C(a0),$2C(a1) bset #7,$38(a1) move.w a1,$44(a0) From 3949ad1d8c91928de74d93054787c6ec3e09d51a Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Sun, 26 Dec 2021 01:15:15 +0000 Subject: [PATCH 50/72] Label a couple more things --- s3.asm | 18 +++++++------- sonic3k.asm | 69 ++++++++++++++++++++++++++++------------------------- 2 files changed, 45 insertions(+), 42 deletions(-) diff --git a/s3.asm b/s3.asm index 830f32f3..790ad769 100644 --- a/s3.asm +++ b/s3.asm @@ -8236,7 +8236,7 @@ LevSelControls_SwitchSide: move.w d0,(Level_select_option).w loc_6C1A: - bra.s loc_6C3C + bra.s LevelSelect_PickCharacterNumber ; --------------------------------------------------------------------------- rts ; --------------------------------------------------------------------------- @@ -8273,7 +8273,7 @@ LevelSelect_SwitchTable: dc.b $B ; 29 ; --------------------------------------------------------------------------- -loc_6C3C: +LevelSelect_PickCharacterNumber: btst #5,(Ctrl_1_pressed).w beq.s loc_6C56 addq.b #1,(P1_character).w @@ -21512,8 +21512,8 @@ loc_1328A: subq.b #1,(Life_count).w bne.s loc_132F0 move.w #0,$3E(a0) - move.l #loc_2C9AC,(Reserved_object_3).w - move.l #loc_2C9AC,(Dynamic_object_RAM).w + move.l #Obj_GameOver,(Reserved_object_3).w + move.l #Obj_GameOver,(Dynamic_object_RAM).w move.b #0,(Reserved_object_3+mapping_frame).w move.b #1,(Dynamic_object_RAM+mapping_frame).w move.w a0,(Reserved_object_3+objoff_3E).w @@ -21533,8 +21533,8 @@ loc_132F0: tst.b (Time_over_flag).w beq.s locret_1331E move.w #0,$3E(a0) - move.l #loc_2C9AC,(Reserved_object_3).w - move.l #loc_2C9AC,(Dynamic_object_RAM).w + move.l #Obj_GameOver,(Reserved_object_3).w + move.l #Obj_GameOver,(Dynamic_object_RAM).w move.b #2,(Reserved_object_3+mapping_frame).w move.b #3,(Dynamic_object_RAM+mapping_frame).w move.w a0,(Reserved_object_3+objoff_3E).w @@ -52566,7 +52566,7 @@ loc_2C9A6: jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- -loc_2C9AC: +Obj_GameOver: tst.l (Nem_decomp_queue).w beq.s loc_2C9B4 rts @@ -79974,7 +79974,7 @@ loc_44A72: loc_44A78: movea.w $46(a0),a1 btst #7,$2A(a1) - bne.s loc_44A9E + bne.s CutsceneKnux_Delete move.b #8,7(a0) moveq #$13,d1 move.w #$20,d2 @@ -79983,7 +79983,7 @@ loc_44A78: jmp (SolidObjectFull2).l ; --------------------------------------------------------------------------- -loc_44A9E: +CutsceneKnux_Delete: jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- diff --git a/sonic3k.asm b/sonic3k.asm index 2e4a2dbd..7c7646cb 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -24300,8 +24300,8 @@ loc_12432: subq.b #1,(Life_count).w bne.s loc_12498 move.w #0,$3E(a0) - move.l #loc_2D5C6,(Reserved_object_3).w - move.l #loc_2D5C6,(Dynamic_object_RAM).w + move.l #Obj_GameOver,(Reserved_object_3).w + move.l #Obj_GameOver,(Dynamic_object_RAM).w move.b #0,(Reserved_object_3+mapping_frame).w move.b #1,(Dynamic_object_RAM+mapping_frame).w move.w a0,(Reserved_object_3+objoff_3E).w @@ -24321,8 +24321,8 @@ loc_12498: tst.b (Time_over_flag).w beq.s locret_124C6 move.w #0,$3E(a0) - move.l #loc_2D5C6,(Reserved_object_3).w - move.l #loc_2D5C6,(Dynamic_object_RAM).w + move.l #Obj_GameOver,(Reserved_object_3).w + move.l #Obj_GameOver,(Dynamic_object_RAM).w move.b #2,(Reserved_object_3+mapping_frame).w move.b #3,(Dynamic_object_RAM+mapping_frame).w move.w a0,(Reserved_object_3+objoff_3E).w @@ -61826,7 +61826,7 @@ loc_2D5C0: jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- -loc_2D5C6: +Obj_GameOver: tst.l (Nem_decomp_queue).w beq.s loc_2D5CE rts @@ -124003,7 +124003,7 @@ loc_5D8BC: bsr.w sub_5FC8E jsr (Create_New_Sprite).l bne.s loc_5D940 - move.l #Obj_5FDD4,(a1) + move.l #Obj_Ending_RevertSuperSonic,(a1) loc_5D940: bra.w loc_5D95C @@ -124841,7 +124841,7 @@ loc_5E39E: move.b #$A,5(a0) move.b #1,(Update_HUD_timer).w clr.w (Palette_frame).w - jmp (loc_8648C).l + jmp (Ending_Give_SuperSonic).l ; --------------------------------------------------------------------------- off_5E3B4: dc.l Pal_TailsEndPose dc.l Pal_SonicEndPose @@ -127097,7 +127097,7 @@ locret_5FDD2: ; --------------------------------------------------------------------------- -Obj_5FDD4: +Obj_Ending_RevertSuperSonic: move.w #$77,$2E(a0) move.l #loc_5FDE0,(a0) @@ -129301,7 +129301,7 @@ loc_620E4: loc_620EA: movea.w $46(a0),a1 btst #7,$2A(a1) - bne.w loc_62158 + bne.w CutsceneKnux_Delete move.b #8,7(a0) moveq #$13,d1 move.w #$20,d2 @@ -129312,7 +129312,7 @@ loc_620EA: CutsceneKnux_HCZ2: cmpi.b #2,(Player_1+character_id).w - beq.s loc_62158 + beq.s CutsceneKnux_Delete lea word_62150(pc),a1 jsr (Check_CameraInRange).l moveq #0,d0 @@ -129336,7 +129336,7 @@ word_62150: dc.w $540 dc.w $3940 ; --------------------------------------------------------------------------- -loc_62158: +CutsceneKnux_Delete: jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- @@ -129443,7 +129443,7 @@ word_62296: dc.w $280 CutsceneKnux_CNZ2A: cmpi.b #2,(Player_1+character_id).w - beq.w loc_62158 + beq.w CutsceneKnux_Delete lea word_6228E(pc),a1 jsr (Check_CameraInRange).l moveq #0,d0 @@ -129586,7 +129586,7 @@ loc_6244C: loc_62458: movea.w $46(a0),a1 btst #7,$2A(a1) - bne.w loc_62158 + bne.w CutsceneKnux_Delete move.b #8,7(a0) moveq #$13,d1 move.w #$100,d2 @@ -129651,7 +129651,7 @@ word_624D0: dc.w 8 CutsceneKnux_CNZ2B: cmpi.b #2,(Player_1+character_id).w - beq.w loc_62158 + beq.w CutsceneKnux_Delete lea word_62520(pc),a1 jsr (Check_CameraInRange).l moveq #0,d0 @@ -129778,7 +129778,7 @@ loc_62630: CutsceneKnux_LBZ1: cmpi.b #2,(Player_1+character_id).w - beq.w loc_62158 + beq.w CutsceneKnux_Delete moveq #0,d0 move.b 5(a0),d0 move.w off_62668(pc,d0.w),d1 @@ -129900,7 +129900,7 @@ loc_6278A: loc_627C6: movea.w $46(a0),a1 btst #7,$2A(a1) - bne.w loc_62158 + bne.w CutsceneKnux_Delete lea word_62822(pc),a1 jsr (Check_PlayerInRange).l tst.l d0 @@ -129979,7 +129979,7 @@ loc_628A0: CutsceneKnux_LBZ2: cmpi.b #2,(Player_1+character_id).w - beq.w loc_62158 + beq.w CutsceneKnux_Delete moveq #0,d0 move.b 5(a0),d0 move.w off_628D2(pc,d0.w),d1 @@ -130309,11 +130309,11 @@ loc_62C90: Obj_MHZ1CutsceneKnuckles: cmpi.b #2,(Player_1+character_id).w - beq.w loc_62158 + beq.w CutsceneKnux_Delete tst.b (Last_star_post_hit).w - bne.w loc_62158 + bne.w CutsceneKnux_Delete tst.w (SK_alone_flag).w - bne.w loc_62158 + bne.w CutsceneKnux_Delete lea (Player_1).w,a1 moveq #0,d0 move.b (_unkFAB8).w,d0 @@ -130671,7 +130671,7 @@ CutsceneKnux_MHZ2: cmpi.b #2,(Player_1+character_id).w beq.s loc_6311A cmpi.b #7,(Last_star_post_hit).w - bhs.w loc_62158 + bhs.w CutsceneKnux_Delete lea word_630D0(pc),a1 jsr (Check_CameraInRange).l moveq #0,d0 @@ -130897,7 +130897,7 @@ loc_63372: move.w (Camera_Y_pos).w,d0 subq.w #8,d0 cmp.w $14(a0),d0 - bhs.w loc_62158 + bhs.w CutsceneKnux_Delete jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- @@ -130949,11 +130949,11 @@ loc_633D6: CutsceneKnux_SKIntro: cmpi.b #2,(Player_1+character_id).w - bne.w loc_62158 + bne.w CutsceneKnux_Delete tst.b (Last_star_post_hit).w - bne.w loc_62158 + bne.w CutsceneKnux_Delete tst.w (SK_alone_flag).w - beq.w loc_62158 + beq.w CutsceneKnux_Delete move.l #loc_63466,(a0) loc_63466: @@ -131007,7 +131007,7 @@ loc_634CA: clr.b (Level_started_flag).w jsr (Create_New_Sprite).l bne.s loc_63508 - move.l #loc_63682,(a1) + move.l #Obj_SkipIntro,(a1) loc_63508: lea ChildObjDat_66656(pc),a2 @@ -131126,7 +131126,7 @@ loc_6364E: jmp (Go_Delete_Sprite).l ; --------------------------------------------------------------------------- -loc_63682: +Obj_SkipIntro: btst #7,(Ctrl_1_pressed).w bne.s loc_6364E btst #7,(Ctrl_2_pressed).w @@ -131456,7 +131456,7 @@ loc_63A52: CutsceneKnux_LRZ2: cmpi.b #2,(Player_1+character_id).w - beq.w loc_62158 + beq.w CutsceneKnux_Delete moveq #0,d0 move.b 5(a0),d0 move.w off_63A8C(pc,d0.w),d1 @@ -131517,7 +131517,7 @@ locret_63B20: Obj_LRZ2CutsceneKnuckles: cmpi.b #2,(Player_1+character_id).w - beq.w loc_62158 + beq.w CutsceneKnux_Delete move.l #loc_63B40,(a0) jsr (Create_New_Sprite).l bne.s loc_63B40 @@ -131678,7 +131678,7 @@ loc_63D0E: loc_63D1A: cmpi.b #2,(Player_1+character_id).w - beq.w loc_62158 + beq.w CutsceneKnux_Delete lea word_63CEC(pc),a1 jsr (Check_CameraInRange).l jsr (sub_85D6A).l @@ -132933,7 +132933,7 @@ loc_64C24: jsr (SetUp_ObjAttributes).l movea.w $46(a0),a1 btst #0,$38(a1) - bne.w loc_62158 + bne.w CutsceneKnux_Delete move.w $10(a1),$10(a0) move.w $14(a1),$14(a0) bclr #0,4(a0) @@ -134297,7 +134297,7 @@ loc_65BC2: Obj_CutsceneButton: cmpi.b #2,(Player_1+character_id).w - beq.w loc_62158 + beq.w CutsceneKnux_Delete lea ObjDat3_66402(pc),a1 jsr (SetUp_ObjAttributes).l move.l #loc_65C04,(a0) @@ -182196,7 +182196,7 @@ loc_86478: ; --------------------------------------------------------------------------- -loc_8648C: +Ending_Give_SuperSonic: addi.w #50,(Ring_count).w move.b #1,(Super_palette_status).w move.b #$F,(Palette_timer).w @@ -182227,6 +182227,9 @@ loc_8648C: move.w #$30,(Acceleration).w move.w #$100,(Deceleration).w move.l #Obj_HyperSonic_Stars,(Invincibility_stars).w + ; This is bugged: Sonic turns Hyper after the credits no matter which emeralds he has + ; Note that he doesn't get his Hyper after-images even when he should + ;move.l #Obj_HyperSonicKnux_Trail,(Super_stars).w bra.s .continued ; --------------------------------------------------------------------------- From 3338ad1abaf5c9f491626754ee30e5b55bd84879 Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Thu, 30 Dec 2021 14:51:47 +0000 Subject: [PATCH 51/72] Clean up unused/dead code comments --- sonic3k.asm | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/sonic3k.asm b/sonic3k.asm index 7c7646cb..21ce8e1c 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -443,9 +443,9 @@ JumpToSegaScreen: move.b #0,(Game_mode).w rts ; --------------------------------------------------------------------------- - ; unused/dead code ; weird routine, makes the screen go haywire pretty much + ChecksumError2: move.l d1,-(sp) bsr.w Init_VDP @@ -457,8 +457,8 @@ ChecksumError2_Loop: addq.w #1,d7 bra.s ChecksumError2_Loop ; --------------------------------------------------------------------------- - ; unused/dead code + ChecksumError: move.l #vdpComm($0000,CRAM,WRITE),(VDP_control_port).l moveq #$3F,d7 @@ -5088,6 +5088,8 @@ loc_42B6: moveq #0,d1 bra.s loc_42C8 ; --------------------------------------------------------------------------- +; unused/dead code, since it's not possible to reach the S3K title screen in S&K mode +; Even if were, this sets the next demo to a S3 level, which would crash S&K when played loc_42C0: cmpi.w #3,d1 @@ -6949,6 +6951,8 @@ loc_6034: loc_6040: move.w (Current_zone_and_act).w,d0 + + ; Useless code. Player_mode has not been set yet, and level $D00 has the same PLCs as level 0 bne.s loc_6058 cmpi.w #2,(Player_mode).w ; If level is Angel Island 1 bhs.s loc_6054 @@ -19626,8 +19630,8 @@ locret_F7F8: ; End of function Sonic_CheckFloor ; --------------------------------------------------------------------------- +; unused/dead code - ; a bit of unused/dead code here CheckFloorDist: move.w y_pos(a0),d2 move.w x_pos(a0),d3 @@ -20054,7 +20058,8 @@ sub_FB5A: ; End of function sub_FB5A ; --------------------------------------------------------------------------- - ; a bit of unused/dead code here +; unused/dead code + CheckCeilingDist: move.w $14(a0),d2 move.w $10(a0),d3 @@ -32188,8 +32193,8 @@ locret_17B16: ; End of function Knux_DoLevelCollision_CheckRet ; --------------------------------------------------------------------------- +; unused/dead code -; Some unused code Knux_TouchFloor_Check_Spindash: tst.b $3D(a0) bne.s loc_17B6A @@ -43081,7 +43086,6 @@ loc_1F8FE: ; End of function sub_1F7CE ; --------------------------------------------------------------------------- - ; unused/dead code bra.w loc_1F88C ; =============== S U B R O U T I N E ======================================= From c7e3edf1d978c8ed61a8fb7bc2a52c5cd62153dc Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Fri, 31 Dec 2021 01:36:52 +0000 Subject: [PATCH 52/72] Format screen event arrays --- s3.asm | 296 ++++++++++++++++++---------------------------------- sonic3k.asm | 296 ++++++++++++++++++---------------------------------- 2 files changed, 200 insertions(+), 392 deletions(-) diff --git a/s3.asm b/s3.asm index 790ad769..b763f325 100644 --- a/s3.asm +++ b/s3.asm @@ -67182,14 +67182,14 @@ LevelSetup: move.w (Current_zone_and_act).w,d0 ror.b #2,d0 lsr.w #3,d0 - movea.l Offs_ScreenInit(pc,d0.w),a1 + movea.l LevelSetupArray(pc,d0.w),a1 jsr (a1) addq.w #2,a3 move.w #$E000,d7 move.w (Current_zone_and_act).w,d0 ror.b #2,d0 lsr.w #3,d0 - movea.l Offs_BackgroundInit(pc,d0.w),a1 + movea.l LevelSetupArray+4(pc,d0.w),a1 jsr (a1) move.w (Camera_Y_pos_copy).w,(V_scroll_value).w move.w (Camera_Y_pos_BG_copy).w,(V_scroll_value_BG).w @@ -67208,14 +67208,14 @@ ScreenEvents: move.w (Current_zone_and_act).w,d0 ror.b #2,d0 lsr.w #3,d0 - movea.l Offs_ScreenEvent(pc,d0.w),a1 + movea.l LevelEventArray(pc,d0.w),a1 jsr (a1) addq.w #2,a3 move.w #$E000,d7 move.w (Current_zone_and_act).w,d0 ror.b #2,d0 lsr.w #3,d0 - movea.l Offs_BackgroundEvent(pc,d0.w),a1 + movea.l LevelEventArray+4(pc,d0.w),a1 jsr (a1) move.w (Camera_Y_pos_copy).w,(V_scroll_value).w move.w (Camera_Y_pos_BG_copy).w,(V_scroll_value_BG).w @@ -67223,198 +67223,102 @@ ScreenEvents: ; End of function ScreenEvents ; --------------------------------------------------------------------------- -Offs_ScreenInit:dc.l AIZ1_ScreenInit -Offs_BackgroundInit:dc.l AIZ1_BackgroundInit - dc.l AIZ2_ScreenInit - dc.l AIZ2_BackgroundInit -Offs_ScreenEvent:dc.l AIZ1_ScreenEvent -Offs_BackgroundEvent:dc.l AIZ1_BackgroundEvent - dc.l AIZ2_ScreenEvent - dc.l AIZ2_BackgroundEvent - dc.l HCZ1_ScreenInit - dc.l HCZ1_BackgroundInit - dc.l HCZ2_ScreenInit - dc.l HCZ2_BackgroundInit - dc.l HCZ1_ScreenEvent - dc.l HCZ1_BackgroundEvent - dc.l HCZ2_ScreenEvent - dc.l HCZ2_BackgroundEvent - dc.l MGZ1_ScreenInit - dc.l MGZ1_BackgroundInit - dc.l MGZ2_ScreenInit - dc.l MGZ2_BackgroundInit - dc.l MGZ1_ScreenEvent - dc.l MGZ1_BackgroundEvent - dc.l MGZ2_ScreenEvent - dc.l MGZ2_BackgroundEvent - dc.l CNZ1_ScreenInit - dc.l CNZ1_BackgroundInit - dc.l CNZ2_ScreenInit - dc.l CNZ2_BackgroundInit - dc.l CNZ1_ScreenEvent - dc.l CNZ1_BackgroundEvent - dc.l CNZ2_ScreenEvent - dc.l CNZ2_BackgroundEvent - dc.l NoScreenInit - dc.l NoBackgroundInit - dc.l NoScreenInit - dc.l NoBackgroundInit - dc.l NoScreenEvent - dc.l NoBackgroundEvent - dc.l NoScreenEvent - dc.l NoBackgroundEvent - dc.l ICZ1_ScreenInit - dc.l ICZ1_BackgroundInit - dc.l ICZ2_ScreenInit - dc.l ICZ2_BackgroundInit - dc.l ICZ1_ScreenEvent - dc.l ICZ1_BackgroundEvent - dc.l ICZ2_ScreenEvent - dc.l ICZ2_BackgroundEvent - dc.l LBZ1_ScreenInit - dc.l LBZ1_BackgroundInit - dc.l LBZ2_ScreenInit - dc.l LBZ2_BackgroundInit - dc.l LBZ1_ScreenEvent - dc.l LBZ1_BackgroundEvent - dc.l LBZ2_ScreenEvent - dc.l LBZ2_BackgroundEvent - dc.l NoScreenInit - dc.l NoBackgroundInit - dc.l NoScreenInit - dc.l NoBackgroundInit - dc.l NoScreenEvent - dc.l NoBackgroundEvent - dc.l NoScreenEvent - dc.l NoBackgroundEvent - dc.l NoScreenInit - dc.l NoBackgroundInit - dc.l NoScreenInit - dc.l NoBackgroundInit - dc.l NoScreenEvent - dc.l NoBackgroundEvent - dc.l NoScreenEvent - dc.l NoBackgroundEvent - dc.l NoScreenInit - dc.l NoBackgroundInit - dc.l NoScreenInit - dc.l NoBackgroundInit - dc.l NoScreenEvent - dc.l NoBackgroundEvent - dc.l NoScreenEvent - dc.l NoBackgroundEvent - dc.l NoScreenInit - dc.l NoBackgroundInit - dc.l NoScreenInit - dc.l NoBackgroundInit - dc.l NoScreenEvent - dc.l NoBackgroundEvent - dc.l NoScreenEvent - dc.l NoBackgroundEvent - dc.l NoScreenInit - dc.l NoBackgroundInit - dc.l NoScreenInit - dc.l NoBackgroundInit - dc.l NoScreenEvent - dc.l NoBackgroundEvent - dc.l NoScreenEvent - dc.l NoBackgroundEvent - dc.l NoScreenInit - dc.l NoBackgroundInit - dc.l NoScreenInit - dc.l NoBackgroundInit - dc.l NoScreenEvent - dc.l NoBackgroundEvent - dc.l NoScreenEvent - dc.l NoBackgroundEvent - dc.l NoScreenInit - dc.l NoBackgroundInit - dc.l NoScreenInit - dc.l NoBackgroundInit - dc.l NoScreenEvent - dc.l NoBackgroundEvent - dc.l NoScreenEvent - dc.l NoBackgroundEvent - dc.l Comp_ScreenInit - dc.l ALZ_BackgroundInit - dc.l Comp_ScreenInit - dc.l ALZ_BackgroundInit - dc.l Comp_ScreenEvent - dc.l ALZ_BackgroundEvent - dc.l Comp_ScreenEvent - dc.l ALZ_BackgroundEvent - dc.l Comp_ScreenInit - dc.l BPZ_BackgroundInit - dc.l Comp_ScreenInit - dc.l BPZ_BackgroundInit - dc.l Comp_ScreenEvent - dc.l BPZ_BackgroundEvent - dc.l Comp_ScreenEvent - dc.l BPZ_BackgroundEvent - dc.l Comp_ScreenInit - dc.l DPZ_BackgroundInit - dc.l Comp_ScreenInit - dc.l DPZ_BackgroundInit - dc.l Comp_ScreenEvent - dc.l DPZ_BackgroundEvent - dc.l Comp_ScreenEvent - dc.l DPZ_BackgroundEvent - dc.l Comp_ScreenInit - dc.l CGZ_BackgroundInit - dc.l Comp_ScreenInit - dc.l CGZ_BackgroundInit - dc.l CGZ_ScreenEvent - dc.l CGZ_BackgroundEvent - dc.l CGZ_ScreenEvent - dc.l CGZ_BackgroundEvent - dc.l Comp_ScreenInit - dc.l EMZ_BackgroundInit - dc.l Comp_ScreenInit - dc.l EMZ_BackgroundInit - dc.l Comp_ScreenEvent - dc.l EMZ_BackgroundEvent - dc.l Comp_ScreenEvent - dc.l EMZ_BackgroundEvent - dc.l Gumball_ScreenInit - dc.l Gumball_BackgroundInit - dc.l Gumball_ScreenInit - dc.l Gumball_BackgroundInit - dc.l Gumball_ScreenEvent - dc.l Gumball_BackgroundEvent - dc.l Gumball_ScreenEvent - dc.l Gumball_BackgroundEvent - dc.l NoScreenInit - dc.l NoBackgroundInit - dc.l NoScreenInit - dc.l NoBackgroundInit - dc.l NoScreenEvent - dc.l NoBackgroundEvent - dc.l NoScreenEvent - dc.l NoBackgroundEvent - dc.l NoScreenInit - dc.l NoBackgroundInit - dc.l NoScreenInit - dc.l NoBackgroundInit - dc.l NoScreenEvent - dc.l NoBackgroundEvent - dc.l NoScreenEvent - dc.l NoBackgroundEvent - dc.l NoScreenInit - dc.l NoBackgroundInit - dc.l NoScreenInit - dc.l NoBackgroundInit - dc.l NoScreenEvent - dc.l NoBackgroundEvent - dc.l NoScreenEvent - dc.l NoBackgroundEvent - dc.l NoScreenInit - dc.l NoBackgroundInit - dc.l NoScreenInit - dc.l NoBackgroundInit - dc.l NoScreenEvent - dc.l NoBackgroundEvent - dc.l NoScreenEvent - dc.l NoBackgroundEvent +LevelSetupArray:dc.l AIZ1_ScreenInit, AIZ1_BackgroundInit + dc.l AIZ2_ScreenInit, AIZ2_BackgroundInit +LevelEventArray:dc.l AIZ1_ScreenEvent, AIZ1_BackgroundEvent + dc.l AIZ2_ScreenEvent, AIZ2_BackgroundEvent + dc.l HCZ1_ScreenInit, HCZ1_BackgroundInit + dc.l HCZ2_ScreenInit, HCZ2_BackgroundInit + dc.l HCZ1_ScreenEvent, HCZ1_BackgroundEvent + dc.l HCZ2_ScreenEvent, HCZ2_BackgroundEvent + dc.l MGZ1_ScreenInit, MGZ1_BackgroundInit + dc.l MGZ2_ScreenInit, MGZ2_BackgroundInit + dc.l MGZ1_ScreenEvent, MGZ1_BackgroundEvent + dc.l MGZ2_ScreenEvent, MGZ2_BackgroundEvent + dc.l CNZ1_ScreenInit, CNZ1_BackgroundInit + dc.l CNZ2_ScreenInit, CNZ2_BackgroundInit + dc.l CNZ1_ScreenEvent, CNZ1_BackgroundEvent + dc.l CNZ2_ScreenEvent, CNZ2_BackgroundEvent + dc.l NoScreenInit, NoBackgroundInit + dc.l NoScreenInit, NoBackgroundInit + dc.l NoScreenEvent, NoBackgroundEvent + dc.l NoScreenEvent, NoBackgroundEvent + dc.l ICZ1_ScreenInit, ICZ1_BackgroundInit + dc.l ICZ2_ScreenInit, ICZ2_BackgroundInit + dc.l ICZ1_ScreenEvent, ICZ1_BackgroundEvent + dc.l ICZ2_ScreenEvent, ICZ2_BackgroundEvent + dc.l LBZ1_ScreenInit, LBZ1_BackgroundInit + dc.l LBZ2_ScreenInit, LBZ2_BackgroundInit + dc.l LBZ1_ScreenEvent, LBZ1_BackgroundEvent + dc.l LBZ2_ScreenEvent, LBZ2_BackgroundEvent + dc.l NoScreenInit, NoBackgroundInit + dc.l NoScreenInit, NoBackgroundInit + dc.l NoScreenEvent, NoBackgroundEvent + dc.l NoScreenEvent, NoBackgroundEvent + dc.l NoScreenInit, NoBackgroundInit + dc.l NoScreenInit, NoBackgroundInit + dc.l NoScreenEvent, NoBackgroundEvent + dc.l NoScreenEvent, NoBackgroundEvent + dc.l NoScreenInit, NoBackgroundInit + dc.l NoScreenInit, NoBackgroundInit + dc.l NoScreenEvent, NoBackgroundEvent + dc.l NoScreenEvent, NoBackgroundEvent + dc.l NoScreenInit, NoBackgroundInit + dc.l NoScreenInit, NoBackgroundInit + dc.l NoScreenEvent, NoBackgroundEvent + dc.l NoScreenEvent, NoBackgroundEvent + dc.l NoScreenInit, NoBackgroundInit + dc.l NoScreenInit, NoBackgroundInit + dc.l NoScreenEvent, NoBackgroundEvent + dc.l NoScreenEvent, NoBackgroundEvent + dc.l NoScreenInit, NoBackgroundInit + dc.l NoScreenInit, NoBackgroundInit + dc.l NoScreenEvent, NoBackgroundEvent + dc.l NoScreenEvent, NoBackgroundEvent + dc.l NoScreenInit, NoBackgroundInit + dc.l NoScreenInit, NoBackgroundInit + dc.l NoScreenEvent, NoBackgroundEvent + dc.l NoScreenEvent, NoBackgroundEvent + dc.l Comp_ScreenInit, ALZ_BackgroundInit + dc.l Comp_ScreenInit, ALZ_BackgroundInit + dc.l Comp_ScreenEvent, ALZ_BackgroundEvent + dc.l Comp_ScreenEvent, ALZ_BackgroundEvent + dc.l Comp_ScreenInit, BPZ_BackgroundInit + dc.l Comp_ScreenInit, BPZ_BackgroundInit + dc.l Comp_ScreenEvent, BPZ_BackgroundEvent + dc.l Comp_ScreenEvent, BPZ_BackgroundEvent + dc.l Comp_ScreenInit, DPZ_BackgroundInit + dc.l Comp_ScreenInit, DPZ_BackgroundInit + dc.l Comp_ScreenEvent, DPZ_BackgroundEvent + dc.l Comp_ScreenEvent, DPZ_BackgroundEvent + dc.l Comp_ScreenInit, CGZ_BackgroundInit + dc.l Comp_ScreenInit, CGZ_BackgroundInit + dc.l CGZ_ScreenEvent, CGZ_BackgroundEvent + dc.l CGZ_ScreenEvent, CGZ_BackgroundEvent + dc.l Comp_ScreenInit, EMZ_BackgroundInit + dc.l Comp_ScreenInit, EMZ_BackgroundInit + dc.l Comp_ScreenEvent, EMZ_BackgroundEvent + dc.l Comp_ScreenEvent, EMZ_BackgroundEvent + dc.l Gumball_ScreenInit, Gumball_BackgroundInit + dc.l Gumball_ScreenInit, Gumball_BackgroundInit + dc.l Gumball_ScreenEvent, Gumball_BackgroundEvent + dc.l Gumball_ScreenEvent, Gumball_BackgroundEvent + dc.l NoScreenInit, NoBackgroundInit + dc.l NoScreenInit, NoBackgroundInit + dc.l NoScreenEvent, NoBackgroundEvent + dc.l NoScreenEvent, NoBackgroundEvent + dc.l NoScreenInit, NoBackgroundInit + dc.l NoScreenInit, NoBackgroundInit + dc.l NoScreenEvent, NoBackgroundEvent + dc.l NoScreenEvent, NoBackgroundEvent + dc.l NoScreenInit, NoBackgroundInit + dc.l NoScreenInit, NoBackgroundInit + dc.l NoScreenEvent, NoBackgroundEvent + dc.l NoScreenEvent, NoBackgroundEvent + dc.l NoScreenInit, NoBackgroundInit + dc.l NoScreenInit, NoBackgroundInit + dc.l NoScreenEvent, NoBackgroundEvent + dc.l NoScreenEvent, NoBackgroundEvent ; =============== S U B R O U T I N E ======================================= diff --git a/sonic3k.asm b/sonic3k.asm index 21ce8e1c..5aaa3519 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -102060,14 +102060,14 @@ LevelSetup: move.w (Current_zone_and_act).w,d0 ror.b #2,d0 lsr.w #3,d0 - movea.l Offs_ScreenInit(pc,d0.w),a1 + movea.l LevelSetupArray(pc,d0.w),a1 jsr (a1) addq.w #2,a3 move.w #$E000,d7 move.w (Current_zone_and_act).w,d0 ror.b #2,d0 lsr.w #3,d0 - movea.l Offs_BackgroundInit(pc,d0.w),a1 + movea.l LevelSetupArray+4(pc,d0.w),a1 jsr (a1) move.w (Camera_Y_pos_copy).w,(V_scroll_value).w move.w (Camera_Y_pos_BG_copy).w,(V_scroll_value_BG).w @@ -102085,211 +102085,115 @@ ScreenEvents: move.w (Current_zone_and_act).w,d0 ror.b #2,d0 lsr.w #3,d0 - movea.l Offs_ScreenEvent(pc,d0.w),a1 + movea.l LevelEventArray(pc,d0.w),a1 jsr (a1) addq.w #2,a3 move.w #$E000,d7 move.w (Current_zone_and_act).w,d0 ror.b #2,d0 lsr.w #3,d0 - movea.l Offs_BackgroundEvent(pc,d0.w),a1 + movea.l LevelEventArray+4(pc,d0.w),a1 jsr (a1) move.w (Camera_Y_pos_copy).w,(V_scroll_value).w move.w (Camera_Y_pos_BG_copy).w,(V_scroll_value_BG).w rts ; --------------------------------------------------------------------------- -Offs_ScreenInit:dc.l AIZ1_ScreenInit -Offs_BackgroundInit:dc.l AIZ1_BackgroundInit ; 0 - dc.l AIZ2_ScreenInit ; 1 - dc.l AIZ2_BackgroundInit ; 2 -Offs_ScreenEvent:dc.l AIZ1_ScreenEvent -Offs_BackgroundEvent:dc.l AIZ1_BackgroundEvent ; 0 - dc.l AIZ2_ScreenEvent ; 1 - dc.l AIZ2_BackgroundEvent ; 2 - dc.l HCZ1_ScreenInit ; 3 - dc.l HCZ1_BackgroundInit ; 4 - dc.l HCZ2_ScreenInit ; 5 - dc.l HCZ2_BackgroundInit ; 6 - dc.l HCZ1_ScreenEvent ; 7 - dc.l HCZ1_BackgroundEvent ; 8 - dc.l HCZ2_ScreenEvent ; 9 - dc.l HCZ2_BackgroundEvent ; 10 - dc.l MGZ1_ScreenInit ; 11 - dc.l MGZ1_BackgroundInit ; 12 - dc.l MGZ2_ScreenInit ; 13 - dc.l MGZ2_BackgroundInit ; 14 - dc.l MGZ1_ScreenEvent ; 15 - dc.l MGZ1_BackgroundEvent ; 16 - dc.l MGZ2_ScreenEvent ; 17 - dc.l MGZ2_BackgroundEvent ; 18 - dc.l CNZ1_ScreenInit ; 19 - dc.l CNZ1_BackgroundInit ; 20 - dc.l CNZ2_ScreenInit ; 21 - dc.l CNZ2_BackgroundInit ; 22 - dc.l CNZ1_ScreenEvent ; 23 - dc.l CNZ1_BackgroundEvent ; 24 - dc.l CNZ2_ScreenEvent ; 25 - dc.l CNZ2_BackgroundEvent ; 26 - dc.l FBZ1_ScreenInit ; 27 - dc.l FBZ1_BackgroundInit ; 28 - dc.l FBZ2_ScreenInit ; 29 - dc.l FBZ2_BackgroundInit ; 30 - dc.l FBZ1_ScreenEvent ; 31 - dc.l FBZ1_BackgroundEvent ; 32 - dc.l FBZ2_ScreenEvent ; 33 - dc.l FBZ2_BackgroundEvent ; 34 - dc.l ICZ1_ScreenInit ; 35 - dc.l ICZ1_BackgroundInit ; 36 - dc.l ICZ2_ScreenInit ; 37 - dc.l ICZ2_BackgroundInit ; 38 - dc.l ICZ1_ScreenEvent ; 39 - dc.l ICZ1_BackgroundEvent ; 40 - dc.l ICZ2_ScreenEvent ; 41 - dc.l ICZ2_BackgroundEvent ; 42 - dc.l LBZ1_ScreenInit ; 43 - dc.l LBZ1_BackgroundInit ; 44 - dc.l LBZ2_ScreenInit ; 45 - dc.l LBZ2_BackgroundInit ; 46 - dc.l LBZ1_ScreenEvent ; 47 - dc.l LBZ1_BackgroundEvent ; 48 - dc.l LBZ2_ScreenEvent ; 49 - dc.l LBZ2_BackgroundEvent ; 50 - dc.l MHZ1_ScreenInit ; 51 - dc.l MHZ1_BackgroundInit ; 52 - dc.l MHZ2_ScreenInit ; 53 - dc.l MHZ2_BackgroundInit ; 54 - dc.l MHZ1_ScreenEvent ; 55 - dc.l MHZ1_BackgroundEvent ; 56 - dc.l MHZ2_ScreenEvent ; 57 - dc.l MHZ2_BackgroundEvent ; 58 - dc.l SOZ1_ScreenInit ; 59 - dc.l SOZ1_BackgroundInit ; 60 - dc.l SOZ2_ScreenInit ; 61 - dc.l SOZ2_BackgroundInit ; 62 - dc.l SOZ1_ScreenEvent ; 63 - dc.l SOZ1_BackgroundEvent ; 64 - dc.l SOZ2_ScreenEvent ; 65 - dc.l SOZ2_BackgroundEvent ; 66 - dc.l LRZ1_ScreenInit ; 67 - dc.l LRZ1_BackgroundInit ; 68 - dc.l LRZ2_ScreenInit ; 69 - dc.l LRZ2_BackgroundInit ; 70 - dc.l LRZ1_ScreenEvent ; 71 - dc.l LRZ1_BackgroundEvent ; 72 - dc.l LRZ2_ScreenEvent ; 73 - dc.l LRZ2_BackgroundEvent ; 74 - dc.l SSZ1_ScreenInit ; 75 - dc.l SSZ1_BackgroundInit ; 76 - dc.l SSZ2_ScreenInit ; 77 - dc.l SSZ2_BackgroundInit ; 78 - dc.l SSZ1_ScreenEvent ; 79 - dc.l SSZ1_BackgroundEvent ; 80 - dc.l SSZ2_ScreenEvent ; 81 - dc.l SSZ2_BackgroundEvent ; 82 - dc.l DEZ1_ScreenInit ; 83 - dc.l DEZ1_BackgroundInit ; 84 - dc.l DEZ2_ScreenInit ; 85 - dc.l DEZ2_BackgroundInit ; 86 - dc.l DEZ1_ScreenEvent ; 87 - dc.l DEZ1_BackgroundEvent ; 88 - dc.l DEZ2_ScreenEvent ; 89 - dc.l DEZ2_BackgroundEvent ; 90 - dc.l DDZ_ScreenInit ; 91 - dc.l DDZ_BackgroundInit ; 92 - dc.l DDZ_ScreenInit ; 93 - dc.l DDZ_BackgroundInit ; 94 - dc.l DDZ_ScreenEvent ; 95 - dc.l DDZ_BackgroundEvent ; 96 - dc.l DDZ_ScreenEvent ; 97 - dc.l DDZ_BackgroundEvent ; 98 - dc.l Ending_ScreenInit ; 99 - dc.l Ending_BackgroundInit ; 100 - dc.l Ending_ScreenInit ; 101 - dc.l Ending_BackgroundInit ; 102 - dc.l Ending_ScreenEvent ; 103 - dc.l Ending_BackgroundEvent; 104 - dc.l Ending_ScreenEvent ; 105 - dc.l Ending_BackgroundEvent; 106 - dc.l Comp_ScreenInit ; 107 - dc.l ALZ_BackgroundInit ; 108 - dc.l Comp_ScreenInit ; 109 - dc.l ALZ_BackgroundInit ; 110 - dc.l Comp_ScreenEvent ; 111 - dc.l ALZ_BackgroundEvent ; 112 - dc.l Comp_ScreenEvent ; 113 - dc.l ALZ_BackgroundEvent ; 114 - dc.l Comp_ScreenInit ; 115 - dc.l BPZ_BackgroundInit ; 116 - dc.l Comp_ScreenInit ; 117 - dc.l BPZ_BackgroundInit ; 118 - dc.l Comp_ScreenEvent ; 119 - dc.l BPZ_BackgroundEvent ; 120 - dc.l Comp_ScreenEvent ; 121 - dc.l BPZ_BackgroundEvent ; 122 - dc.l Comp_ScreenInit ; 123 - dc.l DPZ_BackgroundInit ; 124 - dc.l Comp_ScreenInit ; 125 - dc.l DPZ_BackgroundInit ; 126 - dc.l Comp_ScreenEvent ; 127 - dc.l DPZ_BackgroundEvent ; 128 - dc.l Comp_ScreenEvent ; 129 - dc.l DPZ_BackgroundEvent ; 130 - dc.l Comp_ScreenInit ; 131 - dc.l CGZ_BackgroundInit ; 132 - dc.l Comp_ScreenInit ; 133 - dc.l CGZ_BackgroundInit ; 134 - dc.l CGZ_ScreenEvent ; 135 - dc.l CGZ_BackgroundEvent ; 136 - dc.l CGZ_ScreenEvent ; 137 - dc.l CGZ_BackgroundEvent ; 138 - dc.l Comp_ScreenInit ; 139 - dc.l EMZ_BackgroundInit ; 140 - dc.l Comp_ScreenInit ; 141 - dc.l EMZ_BackgroundInit ; 142 - dc.l Comp_ScreenEvent ; 143 - dc.l EMZ_BackgroundEvent ; 144 - dc.l Comp_ScreenEvent ; 145 - dc.l EMZ_BackgroundEvent ; 146 - dc.l Gumball_ScreenInit ; 147 - dc.l Gumball_BackgroundInit; 148 - dc.l Gumball_ScreenInit ; 149 - dc.l Gumball_BackgroundInit; 150 - dc.l Gumball_ScreenEvent; 151 - dc.l Gumball_BackgroundEvent; 152 - dc.l Gumball_ScreenEvent; 153 - dc.l Gumball_BackgroundEvent; 154 - dc.l Pachinko_ScreenInit; 155 - dc.l Pachinko_BackgroundInit; 156 - dc.l Pachinko_ScreenInit; 157 - dc.l Pachinko_BackgroundInit; 158 - dc.l Pachinko_ScreenEvent; 159 - dc.l Pachinko_BackgroundEvent; 160 - dc.l Pachinko_ScreenEvent; 161 - dc.l Pachinko_BackgroundEvent; 162 - dc.l Slots_ScreenInit ; 163 - dc.l Slots_BackgroundInit ; 164 - dc.l Slots_ScreenInit ; 165 - dc.l Slots_BackgroundInit ; 166 - dc.l Slots_ScreenEvent ; 167 - dc.l Slots_BackgroundEvent ; 168 - dc.l Slots_ScreenEvent ; 169 - dc.l Slots_BackgroundEvent ; 170 - dc.l LRZ3_ScreenInit ; 171 - dc.l LRZ3_BackgroundInit ; 172 - dc.l HPZ_ScreenInit ; 173 - dc.l HPZ_BackgroundInit ; 174 - dc.l LRZ3_ScreenEvent ; 175 - dc.l LRZ3_BackgroundEvent ; 176 - dc.l HPZ_ScreenEvent ; 177 - dc.l HPZ_BackgroundEvent ; 178 - dc.l DEZ3_ScreenInit ; 179 - dc.l DEZ3_BackgroundInit ; 180 - dc.l HPZS_ScreenInit ; 181 - dc.l HPZS_BackgroundInit ; 182 - dc.l DEZ3_ScreenEvent ; 183 - dc.l DEZ3_BackgroundEvent ; 184 - dc.l HPZS_ScreenEvent ; 185 - dc.l HPZS_BackgroundEvent ; 186 +LevelSetupArray:dc.l AIZ1_ScreenInit, AIZ1_BackgroundInit + dc.l AIZ2_ScreenInit, AIZ2_BackgroundInit +LevelEventArray:dc.l AIZ1_ScreenEvent, AIZ1_BackgroundEvent + dc.l AIZ2_ScreenEvent, AIZ2_BackgroundEvent + dc.l HCZ1_ScreenInit, HCZ1_BackgroundInit + dc.l HCZ2_ScreenInit, HCZ2_BackgroundInit + dc.l HCZ1_ScreenEvent, HCZ1_BackgroundEvent + dc.l HCZ2_ScreenEvent, HCZ2_BackgroundEvent + dc.l MGZ1_ScreenInit, MGZ1_BackgroundInit + dc.l MGZ2_ScreenInit, MGZ2_BackgroundInit + dc.l MGZ1_ScreenEvent, MGZ1_BackgroundEvent + dc.l MGZ2_ScreenEvent, MGZ2_BackgroundEvent + dc.l CNZ1_ScreenInit, CNZ1_BackgroundInit + dc.l CNZ2_ScreenInit, CNZ2_BackgroundInit + dc.l CNZ1_ScreenEvent, CNZ1_BackgroundEvent + dc.l CNZ2_ScreenEvent, CNZ2_BackgroundEvent + dc.l FBZ1_ScreenInit, FBZ1_BackgroundInit + dc.l FBZ2_ScreenInit, FBZ2_BackgroundInit + dc.l FBZ1_ScreenEvent, FBZ1_BackgroundEvent + dc.l FBZ2_ScreenEvent, FBZ2_BackgroundEvent + dc.l ICZ1_ScreenInit, ICZ1_BackgroundInit + dc.l ICZ2_ScreenInit, ICZ2_BackgroundInit + dc.l ICZ1_ScreenEvent, ICZ1_BackgroundEvent + dc.l ICZ2_ScreenEvent, ICZ2_BackgroundEvent + dc.l LBZ1_ScreenInit, LBZ1_BackgroundInit + dc.l LBZ2_ScreenInit, LBZ2_BackgroundInit + dc.l LBZ1_ScreenEvent, LBZ1_BackgroundEvent + dc.l LBZ2_ScreenEvent, LBZ2_BackgroundEvent + dc.l MHZ1_ScreenInit, MHZ1_BackgroundInit + dc.l MHZ2_ScreenInit, MHZ2_BackgroundInit + dc.l MHZ1_ScreenEvent, MHZ1_BackgroundEvent + dc.l MHZ2_ScreenEvent, MHZ2_BackgroundEvent + dc.l SOZ1_ScreenInit, SOZ1_BackgroundInit + dc.l SOZ2_ScreenInit, SOZ2_BackgroundInit + dc.l SOZ1_ScreenEvent, SOZ1_BackgroundEvent + dc.l SOZ2_ScreenEvent, SOZ2_BackgroundEvent + dc.l LRZ1_ScreenInit, LRZ1_BackgroundInit + dc.l LRZ2_ScreenInit, LRZ2_BackgroundInit + dc.l LRZ1_ScreenEvent, LRZ1_BackgroundEvent + dc.l LRZ2_ScreenEvent, LRZ2_BackgroundEvent + dc.l SSZ1_ScreenInit, SSZ1_BackgroundInit + dc.l SSZ2_ScreenInit, SSZ2_BackgroundInit + dc.l SSZ1_ScreenEvent, SSZ1_BackgroundEvent + dc.l SSZ2_ScreenEvent, SSZ2_BackgroundEvent + dc.l DEZ1_ScreenInit, DEZ1_BackgroundInit + dc.l DEZ2_ScreenInit, DEZ2_BackgroundInit + dc.l DEZ1_ScreenEvent, DEZ1_BackgroundEvent + dc.l DEZ2_ScreenEvent, DEZ2_BackgroundEvent + dc.l DDZ_ScreenInit, DDZ_BackgroundInit + dc.l DDZ_ScreenInit, DDZ_BackgroundInit + dc.l DDZ_ScreenEvent, DDZ_BackgroundEvent + dc.l DDZ_ScreenEvent, DDZ_BackgroundEvent + dc.l Ending_ScreenInit, Ending_BackgroundInit + dc.l Ending_ScreenInit, Ending_BackgroundInit + dc.l Ending_ScreenEvent, Ending_BackgroundEvent + dc.l Ending_ScreenEvent, Ending_BackgroundEvent + dc.l Comp_ScreenInit, ALZ_BackgroundInit + dc.l Comp_ScreenInit, ALZ_BackgroundInit + dc.l Comp_ScreenEvent, ALZ_BackgroundEvent + dc.l Comp_ScreenEvent, ALZ_BackgroundEvent + dc.l Comp_ScreenInit, BPZ_BackgroundInit + dc.l Comp_ScreenInit, BPZ_BackgroundInit + dc.l Comp_ScreenEvent, BPZ_BackgroundEvent + dc.l Comp_ScreenEvent, BPZ_BackgroundEvent + dc.l Comp_ScreenInit, DPZ_BackgroundInit + dc.l Comp_ScreenInit, DPZ_BackgroundInit + dc.l Comp_ScreenEvent, DPZ_BackgroundEvent + dc.l Comp_ScreenEvent, DPZ_BackgroundEvent + dc.l Comp_ScreenInit, CGZ_BackgroundInit + dc.l Comp_ScreenInit, CGZ_BackgroundInit + dc.l CGZ_ScreenEvent, CGZ_BackgroundEvent + dc.l CGZ_ScreenEvent, CGZ_BackgroundEvent + dc.l Comp_ScreenInit, EMZ_BackgroundInit + dc.l Comp_ScreenInit, EMZ_BackgroundInit + dc.l Comp_ScreenEvent, EMZ_BackgroundEvent + dc.l Comp_ScreenEvent, EMZ_BackgroundEvent + dc.l Gumball_ScreenInit, Gumball_BackgroundInit + dc.l Gumball_ScreenInit, Gumball_BackgroundInit + dc.l Gumball_ScreenEvent, Gumball_BackgroundEvent + dc.l Gumball_ScreenEvent, Gumball_BackgroundEvent + dc.l Pachinko_ScreenInit, Pachinko_BackgroundInit + dc.l Pachinko_ScreenInit, Pachinko_BackgroundInit + dc.l Pachinko_ScreenEvent, Pachinko_BackgroundEvent + dc.l Pachinko_ScreenEvent, Pachinko_BackgroundEvent + dc.l Slots_ScreenInit, Slots_BackgroundInit + dc.l Slots_ScreenInit, Slots_BackgroundInit + dc.l Slots_ScreenEvent, Slots_BackgroundEvent + dc.l Slots_ScreenEvent, Slots_BackgroundEvent + dc.l LRZ3_ScreenInit, LRZ3_BackgroundInit + dc.l HPZ_ScreenInit, HPZ_BackgroundInit + dc.l LRZ3_ScreenEvent, LRZ3_BackgroundEvent + dc.l HPZ_ScreenEvent, HPZ_BackgroundEvent + dc.l DEZ3_ScreenInit, DEZ3_BackgroundInit + dc.l HPZS_ScreenInit, HPZS_BackgroundInit + dc.l DEZ3_ScreenEvent, DEZ3_BackgroundEvent + dc.l HPZS_ScreenEvent, HPZS_BackgroundEvent ; =============== S U B R O U T I N E ======================================= From 6e52184f29f77d7a1542f10560d284b691518696 Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Fri, 31 Dec 2021 03:31:31 +0000 Subject: [PATCH 53/72] Format macros --- s3.asm | 93 ++- sonic3k.asm | 1607 +++++++++++++++++++++++---------------------------- 2 files changed, 776 insertions(+), 924 deletions(-) diff --git a/s3.asm b/s3.asm index b763f325..a4996b58 100644 --- a/s3.asm +++ b/s3.asm @@ -5227,31 +5227,31 @@ Map_TitleSonicAnim: Map_TitleTailsPlane: include "General/Title/Map - S3 Tails Plane.asm" LevelMusic_Playlist: - dc.b mus_AIZ1, mus_AIZ2 ; ANGEL ISLAND ZONE - dc.b mus_HCZ1, mus_HCZ2 ; HYDROCITY ZONE - dc.b mus_MGZ1, mus_MGZ2 ; MARBLE GARDEN ZONE - dc.b mus_CNZ1, mus_CNZ2 ; CARNIVAL NIGHT ZONE - dc.b mus_FBZ1, mus_FBZ2 ; FLYING BATTERY ZONE - dc.b mus_ICZ1, mus_ICZ2 ; ICECAP ZONE - dc.b mus_LBZ1, mus_LBZ2 ; LAUNCH BASE ZONE - dc.b mus_MHZ1, mus_MHZ2 ; MUSHROOM HILL ZONE - dc.b mus_SOZ1, mus_SOZ2 ; SANDOPOLIS ZONE - dc.b mus_LRZ1, mus_LRZ2 ; LAVA REEF ZONE - dc.b mus_SSZ, mus_DEZ1 ; SKY SANCTUARY ZONE - dc.b mus_DEZ2, mus_DEZ2 ; DEATH EGG ZONE - dc.b mus_DDZ, mus_DDZ ; DOOMSDAY ZONE - dc.b mus_SpecialStage, mus_SpecialStage; AIZ INTRO & ENDING - dc.b mus_ALZ, mus_ALZ ; AZURE LAKE ZONE - dc.b mus_BPZ, mus_BPZ ; BALLOON PARK ZONE - dc.b mus_DPZ, mus_DPZ ; DESERT PALACE ZONE - dc.b mus_CGZ, mus_CGZ ; CHROME GADGET ZONE - dc.b mus_EMZ, mus_EMZ ; ENDLESS MINE ZONE - dc.b mus_Gumball, mus_Gumball ; GUMBALL - dc.b mus_Slots, mus_Slots ; PACHINKO - dc.b mus_Gumball, mus_Gumball ; SLOTS - dc.b mus_SpecialStage, mus_SpecialStage; LAVA REEF ZONE BOSS & HIDDEN PALACE ZONE - dc.b mus_SpecialStage, mus_SpecialStage; FINAL BOSS & SPECIAL STAGE HUB - even + dc.b mus_AIZ1, mus_AIZ2 ; ANGEL ISLAND ZONE + dc.b mus_HCZ1, mus_HCZ2 ; HYDROCITY ZONE + dc.b mus_MGZ1, mus_MGZ2 ; MARBLE GARDEN ZONE + dc.b mus_CNZ1, mus_CNZ2 ; CARNIVAL NIGHT ZONE + dc.b mus_FBZ1, mus_FBZ2 ; FLYING BATTERY ZONE + dc.b mus_ICZ1, mus_ICZ2 ; ICECAP ZONE + dc.b mus_LBZ1, mus_LBZ2 ; LAUNCH BASE ZONE + dc.b mus_MHZ1, mus_MHZ2 ; MUSHROOM HILL ZONE + dc.b mus_SOZ1, mus_SOZ2 ; SANDOPOLIS ZONE + dc.b mus_LRZ1, mus_LRZ2 ; LAVA REEF ZONE + dc.b mus_SSZ, mus_DEZ1 ; SKY SANCTUARY ZONE + dc.b mus_DEZ2, mus_DEZ2 ; DEATH EGG ZONE + dc.b mus_DDZ, mus_DDZ ; DOOMSDAY ZONE + dc.b mus_SpecialStage, mus_SpecialStage; AIZ INTRO & ENDING + dc.b mus_ALZ, mus_ALZ ; AZURE LAKE ZONE + dc.b mus_BPZ, mus_BPZ ; BALLOON PARK ZONE + dc.b mus_DPZ, mus_DPZ ; DESERT PALACE ZONE + dc.b mus_CGZ, mus_CGZ ; CHROME GADGET ZONE + dc.b mus_EMZ, mus_EMZ ; ENDLESS MINE ZONE + dc.b mus_Gumball, mus_Gumball ; GUMBALL + dc.b mus_Slots, mus_Slots ; PACHINKO + dc.b mus_Gumball, mus_Gumball ; SLOTS + dc.b mus_SpecialStage, mus_SpecialStage; LAVA REEF ZONE BOSS & HIDDEN PALACE ZONE + dc.b mus_SpecialStage, mus_SpecialStage; FINAL BOSS & SPECIAL STAGE HUB + even ; --------------------------------------------------------------------------- Level: @@ -93153,11 +93153,9 @@ ChildObjDat_4D4F6:dc.w 4 dc.b $FC Pal_FBZMiniboss:binclude "Levels/FBZ/Palettes/S3 Miniboss.bin" even - word_4D540: palscriptptr .header, .data dc.w 0 .header palscripthdr Normal_palette_line_2+$1E, 1, 7-1 - .data palscriptdata 1, $EEE palscriptdata 4, $644 palscriptrun @@ -95427,7 +95425,6 @@ Pal_ICZMiniboss:binclude "Levels/ICZ/Palettes/Miniboss.bin" even word_4EBE2: palscriptptr .header, .data dc.w 0 - .header palscripthdr Normal_palette_line_4+$02, 10, 2-1 .data palscriptdata 8, $EEC, $CC6, $C80, $C60, $C40, $A40, $820, $620, $200, $600 palscriptdata 8, $EEC, $CC6, $C82, $C80, $C40, $A40, $820, $820, $200, $600 @@ -100630,9 +100627,10 @@ Pal_SuperSonicEndPose: even Map_SonicTailsEndPoses: include "General/Ending/Map - Sonic Tails Ending Poses S3.asm" -PalSPtr_LBZFinalBoss2_FadeIn: palscriptptr .header, .data - dc.w 0 +PalSPtr_LBZFinalBoss2_FadeIn: + palscriptptr .header, .data + dc.w 0 .header palscripthdr Normal_palette_line_4+$16, 4, 2-1 .data palscriptdata 16, $ECE, $E8A, $E48, $E46 palscriptdata 16, $CAC, $C68, $C46, $A44 @@ -100640,9 +100638,9 @@ PalSPtr_LBZFinalBoss2_FadeIn: palscriptptr .header, .data palscriptdata 16, $844, $622, $400, $200 palscriptrun -PalSPtr_LBZFinalBoss2_FadeOut: palscriptptr .header, .data +PalSPtr_LBZFinalBoss2_FadeOut: + palscriptptr .header, .data dc.w 0 - .header palscripthdr Normal_palette_line_4+$16, 4, 2-1 .data palscriptdata 16, $844, $622, $400, $200 palscriptdata 16, $A88, $A46, $824, $622 @@ -119071,62 +119069,57 @@ Map_HCZMinibossSplash: DPLC_HCZMinibossSplash: include "Levels/HCZ/Misc Object Data/DPLC - Miniboss Splash.asm" Map_ICZEndBoss: include "Levels/ICZ/Misc Object Data/Map - End Boss.asm" -PalSPtr_CNZMinibossNormal: palscriptptr .header, .data + +PalSPtr_CNZMinibossNormal: + palscriptptr .header, .data dc.w 0 .header palscripthdr Normal_palette_line_2+$14, 1, 3-1 - .data palscriptdata 1, $EEE palscriptdata 1, $A22 palscriptdata 6, $020 palscriptloop .headr2 - .headr2 palscripthdr Normal_palette_line_2+$14, 1, 3-1 palscriptdata 1, $EEE palscriptdata 1, $A22 palscriptdata 4, $020 palscriptloop .headr3 - .headr3 palscripthdr Normal_palette_line_2+$14, 1, 3-1 palscriptdata 1, $EEE palscriptdata 1, $A22 palscriptdata 2, $020 palscriptloop .headr4 - .headr4 palscripthdr Normal_palette_line_2+$14, 1, $B-1 palscriptdata 1, $EEE palscriptdata 1, $A22 palscriptdata 1, $020 palscriptrun -PalSPtr_CNZMinibossSparks: palscriptptr .header, .data +PalSPtr_CNZMinibossSparks: + palscriptptr .header, .data dc.w 0 .header palscripthdr Normal_palette_line_2+$14, 1, $31-1 - .data palscriptdata 1, $EEE palscriptdata 1, $A22 palscriptdata 1, $020 palscriptloop .headr2 - .headr2 palscripthdr Normal_palette_line_2+$14, 1, 3-1 palscriptdata 1, $EEE palscriptdata 1, $A22 palscriptdata 2, $020 palscriptloop .headr3 - .headr3 palscripthdr Normal_palette_line_2+$14, 1, 4-1 palscriptdata 1, $EEE palscriptdata 1, $A22 palscriptdata 4, $020 palscriptloop .headr4 - .headr4 palscripthdr Normal_palette_line_2+$14, 1, 2-1 palscriptdata 96, $020 palscriptloop PalSPtr_CNZMinibossNormal.headr3 -PalSPtr_CNZMinibossOpen: palscriptptr .header, .data +PalSPtr_CNZMinibossOpen: + palscriptptr .header, .data dc.w 0 .header palscripthdr Normal_palette_line_2+$14, 1, 0 - .data palscriptdata 1, $EEE palscriptdata 1, $A22 palscriptdata 2, $020 @@ -119139,33 +119132,29 @@ PalSPtr_CNZMinibossOpen: palscriptptr .header, .data palscriptrept Map_CNZMiniboss:include "Levels/CNZ/Misc Object Data/Map - Miniboss.asm" + word_16322C: palscriptptr .header, .data dc.w 0 - .header palscripthdr Normal_palette_line_2+$14, 1, 3-1 .data palscriptdata 8, $222 palscriptdata 1, $C22 palscriptdata 1, $EE0 palscriptloop .headr2 - .headr2 palscripthdr Normal_palette_line_2+$14, 1, 3-1 palscriptdata 6, $222 palscriptdata 1, $C22 palscriptdata 1, $EE0 palscriptloop .headr3 - .headr3 palscripthdr Normal_palette_line_2+$14, 1, 3-1 palscriptdata 4, $222 palscriptdata 1, $C22 palscriptdata 1, $EE0 palscriptloop .headr4 - .headr4 palscripthdr Normal_palette_line_2+$14, 1, 3-1 palscriptdata 2, $222 palscriptdata 1, $C22 palscriptdata 1, $EE0 palscriptloop .headr5 - .headr5 palscripthdr Normal_palette_line_2+$14, 1, 0 palscriptdata 1, $222 palscriptdata 1, $C22 @@ -119174,36 +119163,32 @@ word_16322C: palscriptptr .header, .data word_163298: palscriptptr .header, .data dc.w 0 - .header palscripthdr Normal_palette_line_2+$14, 1, 3-1 .data palscriptdata 2, $222 palscriptdata 1, $C22 palscriptdata 1, $EE0 palscriptloop .headr2 - .headr2 palscripthdr Normal_palette_line_2+$14, 1, 3-1 palscriptdata 4, $222 palscriptdata 1, $C22 palscriptdata 1, $EE0 palscriptloop .headr3 - .headr3 palscripthdr Normal_palette_line_2+$14, 1, 3-1 palscriptdata 6, $222 palscriptdata 1, $C22 palscriptdata 1, $EE0 palscriptloop .headr4 - .headr4 palscripthdr Normal_palette_line_2+$14, 1, 3-1 palscriptdata 8, $222 palscriptdata 1, $C22 palscriptdata 1, $EE0 palscriptloop .headr5 - .headr5 palscripthdr Normal_palette_line_2+$14, 1, 5-1 palscriptdata 10,$222 palscriptdata 1, $C22 palscriptdata 1, $EE0 palscriptrun + ICZMiniboss_OrbAngleLookup: dc.b 0, 1, 2, 4, 5, 6, 7, 8, 9, $B, $C, $D, $E, $F, $10, $11 dc.b $12, $13, $15, $16, $17, $18, $19, $1A, $1B, $1C, $1D, $1E, $1E, $1F, $20, $21 diff --git a/sonic3k.asm b/sonic3k.asm index 5aaa3519..910c599f 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -6866,33 +6866,32 @@ Map_SKTitle_TM: include "General/Title/Map - SK TM.asm" ;5F62.asm" Map_SKTitle_Copyright: include "General/Title/Map - SK Copyright.asm" ;5F6C.asm" even ; --------------------------------------------------------------------------- - LevelMusic_Playlist: - dc.b mus_AIZ1, mus_AIZ2 ; ANGEL ISLAND ZONE - dc.b mus_HCZ1, mus_HCZ2 ; HYDROCITY ZONE - dc.b mus_MGZ1, mus_MGZ2 ; MARBLE GARDEN ZONE - dc.b mus_CNZ1, mus_CNZ2 ; CARNIVAL NIGHT ZONE - dc.b mus_FBZ1, mus_FBZ2 ; FLYING BATTERY ZONE - dc.b mus_ICZ1, mus_ICZ2 ; ICECAP ZONE - dc.b mus_LBZ1, mus_LBZ2 ; LAUNCH BASE ZONE - dc.b mus_MHZ1, mus_MHZ2 ; MUSHROOM HILL ZONE - dc.b mus_SOZ1, mus_SOZ2 ; SANDOPOLIS ZONE - dc.b mus_LRZ1, mus_LRZ2 ; LAVA REEF ZONE - dc.b mus_SSZ, mus_SSZ ; SKY SANCTUARY ZONE - dc.b mus_DEZ1, mus_DEZ2 ; DEATH EGG ZONE - dc.b mus_DDZ, mus_DDZ ; DOOMSDAY ZONE - dc.b mus_SpecialStage, mus_SSZ ; AIZ INTRO & ENDING - dc.b mus_ALZ, mus_ALZ ; AZURE LAKE ZONE - dc.b mus_BPZ, mus_BPZ ; BALLOON PARK ZONE - dc.b mus_DPZ, mus_DPZ ; DESERT PALACE ZONE - dc.b mus_CGZ, mus_CGZ ; CHROME GADGET ZONE - dc.b mus_EMZ, mus_EMZ ; ENDLESS MINE ZONE - dc.b mus_Gumball, mus_Gumball ; GUMBALL - dc.b mus_Pachinko, mus_Pachinko ; PACHINKO - dc.b mus_Slots, mus_Slots ; SLOTS - dc.b mus_EndBoss, mus_LRZ2 ; LAVA REEF ZONE BOSS & HIDDEN PALACE ZONE - dc.b mus_DEZ2, mus_LRZ2 ; FINAL BOSS & SPECIAL STAGE HUB - even + dc.b mus_AIZ1, mus_AIZ2 ; ANGEL ISLAND ZONE + dc.b mus_HCZ1, mus_HCZ2 ; HYDROCITY ZONE + dc.b mus_MGZ1, mus_MGZ2 ; MARBLE GARDEN ZONE + dc.b mus_CNZ1, mus_CNZ2 ; CARNIVAL NIGHT ZONE + dc.b mus_FBZ1, mus_FBZ2 ; FLYING BATTERY ZONE + dc.b mus_ICZ1, mus_ICZ2 ; ICECAP ZONE + dc.b mus_LBZ1, mus_LBZ2 ; LAUNCH BASE ZONE + dc.b mus_MHZ1, mus_MHZ2 ; MUSHROOM HILL ZONE + dc.b mus_SOZ1, mus_SOZ2 ; SANDOPOLIS ZONE + dc.b mus_LRZ1, mus_LRZ2 ; LAVA REEF ZONE + dc.b mus_SSZ, mus_SSZ ; SKY SANCTUARY ZONE + dc.b mus_DEZ1, mus_DEZ2 ; DEATH EGG ZONE + dc.b mus_DDZ, mus_DDZ ; DOOMSDAY ZONE + dc.b mus_SpecialStage, mus_SSZ ; AIZ INTRO & ENDING + dc.b mus_ALZ, mus_ALZ ; AZURE LAKE ZONE + dc.b mus_BPZ, mus_BPZ ; BALLOON PARK ZONE + dc.b mus_DPZ, mus_DPZ ; DESERT PALACE ZONE + dc.b mus_CGZ, mus_CGZ ; CHROME GADGET ZONE + dc.b mus_EMZ, mus_EMZ ; ENDLESS MINE ZONE + dc.b mus_Gumball, mus_Gumball ; GUMBALL + dc.b mus_Pachinko, mus_Pachinko ; PACHINKO + dc.b mus_Slots, mus_Slots ; SLOTS + dc.b mus_EndBoss, mus_LRZ2 ; LAVA REEF ZONE BOSS & HIDDEN PALACE ZONE + dc.b mus_DEZ2, mus_LRZ2 ; FINAL BOSS & SPECIAL STAGE HUB + even ; --------------------------------------------------------------------------- Level: @@ -9986,40 +9985,35 @@ LevSel_MappingOffsets: dc.w planeLocH28($16,$10) dc.w planeLocH28($16,$13) dc.w planeLocH28($16,$16) - -LevelSelectText: - levselstr "ANGEL ISLAND" - levselstr "HYDROCITY" - levselstr "MARBLE GARDEN" - levselstr "CARNIVAL NIGHT" - levselstr "ICECAP" - levselstr "LAUNCH BASE" - levselstr "MUSHROOM HILL" - levselstr "FLYING BATTERY" - levselstr "SANDOPOLIS" - levselstr "LAVA REEF" - levselstr "LAVA REEF" - levselstr "SKY SANCTUARY" - levselstr "DEATHEGG" - levselstr "THE DOOMSDAY" - levselstr "BONUS" - levselstr "SPECIAL STAGE" - levselstr "SOUND TEST *" +LevelSelectText:levselstr "ANGEL ISLAND" + levselstr "HYDROCITY" + levselstr "MARBLE GARDEN" + levselstr "CARNIVAL NIGHT" + levselstr "ICECAP" + levselstr "LAUNCH BASE" + levselstr "MUSHROOM HILL" + levselstr "FLYING BATTERY" + levselstr "SANDOPOLIS" + levselstr "LAVA REEF" + levselstr "LAVA REEF" + levselstr "SKY SANCTUARY" + levselstr "DEATHEGG" + levselstr "THE DOOMSDAY" + levselstr "BONUS" + levselstr "SPECIAL STAGE" + levselstr "SOUND TEST *" even - -AniPLC_SONICMILES: zoneanimstart +AniPLC_SONICMILES: zoneanimstart ; Sonic/Miles animated background zoneanimdecl -1, ArtUnc_SONICMILES, 1, 6, $A - dc.b 0,$C7 - dc.b $A, 5 - dc.b $14, 5 - dc.b $1E,$C7 - dc.b $14, 5 - dc.b $A, 5 - even - + dc.b 0,$C7 + dc.b $A, 5 + dc.b $14, 5 + dc.b $1E,$C7 + dc.b $14, 5 + dc.b $A, 5 + even zoneanimend - ; --------------------------------------------------------------------------- SpecialStage: @@ -55220,890 +55214,796 @@ AnimateTiles_DoAniPLC_Part2: ; 0 Tile ID of first tile in ArtUnc_Flowers1 to transfer ; $7F Frame duration. Only here if global duration is -1 -AniPLC_AIZ1: zoneanimstart - +AniPLC_AIZ1: zoneanimstart zoneanimdecl -1, ArtUnc_AniAIZ1_0, $2E6, 9, $C - dc.b $3C,$4F - dc.b $30, 5 - dc.b $18, 5 - dc.b $C, 5 - dc.b 0,$4F - dc.b $C, 3 - dc.b $18, 3 - dc.b $24, 1 - dc.b $30, 1 - even - + dc.b $3C,$4F + dc.b $30, 5 + dc.b $18, 5 + dc.b $C, 5 + dc.b 0,$4F + dc.b $C, 3 + dc.b $18, 3 + dc.b $24, 1 + dc.b $30, 1 + even zoneanimdecl -1, ArtUnc_AniAIZ1_0, $2F2, 8, $C - dc.b $18, 5 - dc.b $24, 5 - dc.b $30, 5 - dc.b $3C,$27 - dc.b 0, 5 - dc.b $C, 5 - dc.b $18, 5 - dc.b $24, 5 - even - + dc.b $18, 5 + dc.b $24, 5 + dc.b $30, 5 + dc.b $3C,$27 + dc.b 0, 5 + dc.b $C, 5 + dc.b $18, 5 + dc.b $24, 5 + even zoneanimdecl -1, ArtUnc_AniAIZ1_1, $2FE, 8, 6 - dc.b 0, 7 - dc.b 6, 3 - dc.b $C, 3 - dc.b $12, 3 - dc.b $18, 7 - dc.b $12, 3 - dc.b $C, 3 - dc.b 6, 3 - even - + dc.b 0, 7 + dc.b 6, 3 + dc.b $C, 3 + dc.b $12, 3 + dc.b $18, 7 + dc.b $12, 3 + dc.b $C, 3 + dc.b 6, 3 + even zoneanimend -AniPLC_AIZ2: zoneanimstart - +AniPLC_AIZ2: zoneanimstart zoneanimdecl 3, ArtUnc_AniAIZ2_0, $B3, 4,$17 - dc.b 0 - dc.b $17 - dc.b $2E - dc.b $45 - even - + dc.b 0 + dc.b $17 + dc.b $2E + dc.b $45 + even zoneanimdecl -1, ArtUnc_AniAIZ2_1, $CA, 9, $C - dc.b $3C,$4F - dc.b $30, 5 - dc.b $18, 5 - dc.b $C, 5 - dc.b 0,$4F - dc.b $C, 3 - dc.b $18, 3 - dc.b $24, 1 - dc.b $30, 1 - even - + dc.b $3C,$4F + dc.b $30, 5 + dc.b $18, 5 + dc.b $C, 5 + dc.b 0,$4F + dc.b $C, 3 + dc.b $18, 3 + dc.b $24, 1 + dc.b $30, 1 + even zoneanimdecl -1, ArtUnc_AniAIZ2_1, $D6, 8, $C - dc.b $18, 5 - dc.b $24, 5 - dc.b $30, 5 - dc.b $3C,$27 - dc.b 0, 5 - dc.b $C, 5 - dc.b $18, 5 - dc.b $24, 5 - even - + dc.b $18, 5 + dc.b $24, 5 + dc.b $30, 5 + dc.b $3C,$27 + dc.b 0, 5 + dc.b $C, 5 + dc.b $18, 5 + dc.b $24, 5 + even zoneanimdecl 3, ArtUnc_AniAIZ2_2, $E2, 4, 4 - dc.b 0 - dc.b 4 - dc.b 8 - dc.b $C - even - + dc.b 0 + dc.b 4 + dc.b 8 + dc.b $C + even zoneanimdecl 3, ArtUnc_AniAIZ2_3, $E6, 4,$18 - dc.b 0 - dc.b $18 - dc.b $30 - dc.b $48 - even - + dc.b 0 + dc.b $18 + dc.b $30 + dc.b $48 + even zoneanimend -AniPLC_HCZ1: zoneanimstart - +AniPLC_HCZ1: zoneanimstart zoneanimdecl -1, ArtUnc_AniHCZ1_0, $30C, 3,$24 - dc.b 0, 2 - dc.b $24, 1 - dc.b $48, 2 - even - + dc.b 0, 2 + dc.b $24, 1 + dc.b $48, 2 + even zoneanimdecl -1, ArtUnc_AniHCZ__1, $115,$10, 6 - dc.b 0, 4 - dc.b 6, 3 - dc.b $C, 2 - dc.b $12, 1 - dc.b $18, 0 - dc.b $1E, 1 - dc.b $24, 2 - dc.b $2A, 3 - dc.b $30, 4 - dc.b $2A, 3 - dc.b $24, 2 - dc.b $1E, 1 - dc.b $18, 0 - dc.b $12, 1 - dc.b $C, 2 - dc.b 6, 3 - even - + dc.b 0, 4 + dc.b 6, 3 + dc.b $C, 2 + dc.b $12, 1 + dc.b $18, 0 + dc.b $1E, 1 + dc.b $24, 2 + dc.b $2A, 3 + dc.b $30, 4 + dc.b $2A, 3 + dc.b $24, 2 + dc.b $1E, 1 + dc.b $18, 0 + dc.b $12, 1 + dc.b $C, 2 + dc.b 6, 3 + even zoneanimend -AniPLC_HCZ2: zoneanimstart - +AniPLC_HCZ2: zoneanimstart zoneanimdecl 3, ArtUnc_AniHCZ2_0, $25E, 4,$15 - dc.b 0 - dc.b $15 - dc.b $2A - dc.b $3F - even - + dc.b 0 + dc.b $15 + dc.b $2A + dc.b $3F + even zoneanimdecl -1, ArtUnc_AniHCZ__1, $115,$10, 6 - dc.b 0, 4 - dc.b 6, 3 - dc.b $C, 2 - dc.b $12, 1 - dc.b $18, 0 - dc.b $1E, 1 - dc.b $24, 2 - dc.b $2A, 3 - dc.b $30, 4 - dc.b $2A, 3 - dc.b $24, 2 - dc.b $1E, 1 - dc.b $18, 0 - dc.b $12, 1 - dc.b $C, 2 - dc.b 6, 3 - even - + dc.b 0, 4 + dc.b 6, 3 + dc.b $C, 2 + dc.b $12, 1 + dc.b $18, 0 + dc.b $1E, 1 + dc.b $24, 2 + dc.b $2A, 3 + dc.b $30, 4 + dc.b $2A, 3 + dc.b $24, 2 + dc.b $1E, 1 + dc.b $18, 0 + dc.b $12, 1 + dc.b $C, 2 + dc.b 6, 3 + even zoneanimend -AniPLC_MGZ: zoneanimstart - +AniPLC_MGZ: zoneanimstart zoneanimdecl 9, ArtUnc_AniMGZ__0, $222, 6,$30 - dc.b 0 - dc.b $30 - dc.b $60 - dc.b $90 - dc.b $C0 - dc.b $F0 - even - + dc.b 0 + dc.b $30 + dc.b $60 + dc.b $90 + dc.b $C0 + dc.b $F0 + even zoneanimdecl -1, ArtUnc_AniMGZ__1, $252, 4, 1 - dc.b 0, 7 - dc.b 1, $E - dc.b 2, 7 - dc.b 1, $E - even - + dc.b 0, 7 + dc.b 1, $E + dc.b 2, 7 + dc.b 1, $E + even zoneanimend -AniPLC_CNZ: zoneanimstart - +AniPLC_CNZ: zoneanimstart zoneanimdecl 3, ArtUnc_AniCNZ__0, $2B2,$10, 9 - dc.b 0 - dc.b $12 - dc.b $24 - dc.b $36 - dc.b $48 - dc.b $5A - dc.b $6C - dc.b $7E - dc.b 9 - dc.b $1B - dc.b $2D - dc.b $3F - dc.b $51 - dc.b $63 - dc.b $75 - dc.b $87 - even - + dc.b 0 + dc.b $12 + dc.b $24 + dc.b $36 + dc.b $48 + dc.b $5A + dc.b $6C + dc.b $7E + dc.b 9 + dc.b $1B + dc.b $2D + dc.b $3F + dc.b $51 + dc.b $63 + dc.b $75 + dc.b $87 + even zoneanimdecl 3, ArtUnc_AniCNZ__0, $2BB,$10, 9 - dc.b 9 - dc.b $1B - dc.b $2D - dc.b $3F - dc.b $51 - dc.b $63 - dc.b $75 - dc.b $87 - dc.b 0 - dc.b $12 - dc.b $24 - dc.b $36 - dc.b $48 - dc.b $5A - dc.b $6C - dc.b $7E - even - + dc.b 9 + dc.b $1B + dc.b $2D + dc.b $3F + dc.b $51 + dc.b $63 + dc.b $75 + dc.b $87 + dc.b 0 + dc.b $12 + dc.b $24 + dc.b $36 + dc.b $48 + dc.b $5A + dc.b $6C + dc.b $7E + even zoneanimdecl 3, ArtUnc_AniCNZ__1, $2C4,$10,$10 - dc.b 0 - dc.b $10 - dc.b $20 - dc.b $30 - dc.b $40 - dc.b $50 - dc.b $60 - dc.b $70 - dc.b $80 - dc.b $90 - dc.b $A0 - dc.b $B0 - dc.b $C0 - dc.b $D0 - dc.b $E0 - dc.b $F0 - even - + dc.b 0 + dc.b $10 + dc.b $20 + dc.b $30 + dc.b $40 + dc.b $50 + dc.b $60 + dc.b $70 + dc.b $80 + dc.b $90 + dc.b $A0 + dc.b $B0 + dc.b $C0 + dc.b $D0 + dc.b $E0 + dc.b $F0 + even zoneanimdecl 3, ArtUnc_AniCNZ__2, $2D4, 8,$20 - dc.b 0 - dc.b $20 - dc.b $40 - dc.b $60 - dc.b $80 - dc.b $A0 - dc.b $C0 - dc.b $E0 - even - + dc.b 0 + dc.b $20 + dc.b $40 + dc.b $60 + dc.b $80 + dc.b $A0 + dc.b $C0 + dc.b $E0 + even zoneanimdecl 3, ArtUnc_AniCNZ__3, $2F4, 8,$10 - dc.b 0 - dc.b $10 - dc.b $20 - dc.b $30 - dc.b $40 - dc.b $50 - dc.b $60 - dc.b $70 - even - + dc.b 0 + dc.b $10 + dc.b $20 + dc.b $30 + dc.b $40 + dc.b $50 + dc.b $60 + dc.b $70 + even zoneanimdecl 3, ArtUnc_AniCNZ__4, $304, 6, 4 - dc.b 0 - dc.b 4 - dc.b 8 - dc.b 0 - dc.b 4 - dc.b 8 - even - + dc.b 0 + dc.b 4 + dc.b 8 + dc.b 0 + dc.b 4 + dc.b 8 + even zoneanimdecl 1, ArtUnc_AniCNZ__5, $328, 4,$14 - dc.b 0 - dc.b $14 - dc.b $28 - dc.b $3C - even - + dc.b 0 + dc.b $14 + dc.b $28 + dc.b $3C + even zoneanimend -AniPLC_FBZ1: zoneanimstart - +AniPLC_FBZ1: zoneanimstart zoneanimdecl $3F, ArtUnc_AniFBZ__0, $210, 2,$20 - dc.b 0 - dc.b 0 - even - + dc.b 0 + dc.b 0 + even zoneanimdecl 7, ArtUnc_AniFBZ__1, $230, 6, 8 - dc.b 0 - dc.b 8 - dc.b $10 - dc.b 0 - dc.b 8 - dc.b $10 - even - + dc.b 0 + dc.b 8 + dc.b $10 + dc.b 0 + dc.b 8 + dc.b $10 + even zoneanimdecl 1, ArtUnc_AniFBZ__2, $238, 8,$10 - dc.b 0 - dc.b $10 - dc.b $20 - dc.b $30 - dc.b $40 - dc.b $50 - dc.b $60 - dc.b $70 - even - + dc.b 0 + dc.b $10 + dc.b $20 + dc.b $30 + dc.b $40 + dc.b $50 + dc.b $60 + dc.b $70 + even zoneanimdecl 7, ArtUnc_AniFBZ__3, $200, 2, 8 - dc.b 0 - dc.b 8 - even - + dc.b 0 + dc.b 8 + even zoneanimdecl 7, ArtUnc_AniFBZ__4, $208, 6, 8 - dc.b 0 - dc.b 8 - dc.b $10 - dc.b 0 - dc.b 8 - dc.b $10 - even - + dc.b 0 + dc.b 8 + dc.b $10 + dc.b 0 + dc.b 8 + dc.b $10 + even zoneanimend -AniPLC_FBZ2: zoneanimstart - +AniPLC_FBZ2: zoneanimstart zoneanimdecl 1, ArtUnc_AniFBZ__0, $210, 8,$20 - dc.b 0 - dc.b $20 - dc.b $40 - dc.b $60 - dc.b $80 - dc.b $A0 - dc.b $C0 - dc.b $E0 - even - + dc.b 0 + dc.b $20 + dc.b $40 + dc.b $60 + dc.b $80 + dc.b $A0 + dc.b $C0 + dc.b $E0 + even zoneanimdecl 7, ArtUnc_AniFBZ__1, $230, 6, 8 - dc.b 0 - dc.b 8 - dc.b $10 - dc.b 0 - dc.b 8 - dc.b $10 - even - + dc.b 0 + dc.b 8 + dc.b $10 + dc.b 0 + dc.b 8 + dc.b $10 + even zoneanimdecl 1, ArtUnc_AniFBZ__2, $238, 8,$10 - dc.b 0 - dc.b $10 - dc.b $20 - dc.b $30 - dc.b $40 - dc.b $50 - dc.b $60 - dc.b $70 - even - + dc.b 0 + dc.b $10 + dc.b $20 + dc.b $30 + dc.b $40 + dc.b $50 + dc.b $60 + dc.b $70 + even zoneanimdecl 7, ArtUnc_AniFBZ__3, $200, 2, 8 - dc.b 0 - dc.b 8 - even - + dc.b 0 + dc.b 8 + even zoneanimdecl 7, ArtUnc_AniFBZ__4, $208, 6, 8 - dc.b 0 - dc.b 8 - dc.b $10 - dc.b 0 - dc.b 8 - dc.b $10 - even - + dc.b 0 + dc.b 8 + dc.b $10 + dc.b 0 + dc.b 8 + dc.b $10 + even zoneanimend -AniPLC_ICZ: zoneanimstart - +AniPLC_ICZ: zoneanimstart zoneanimdecl 3, ArtUnc_AniICZ__0, $11E, 8, 4 - dc.b 0 - dc.b 4 - dc.b 8 - dc.b $C - dc.b $10 - dc.b $14 - dc.b $18 - dc.b $1C - even - + dc.b 0 + dc.b 4 + dc.b 8 + dc.b $C + dc.b $10 + dc.b $14 + dc.b $18 + dc.b $1C + even zoneanimend -AniPLC_LBZ1: zoneanimstart - +AniPLC_LBZ1: zoneanimstart zoneanimdecl 2, ArtUnc_AniLBZ1_0, $365, 4, 8 - dc.b 0 - dc.b 8 - dc.b $10 - dc.b $18 - even - + dc.b 0 + dc.b 8 + dc.b $10 + dc.b $18 + even zoneanimend -AniPLC_LBZSpec: zoneanimstart - +AniPLC_LBZSpec: zoneanimstart zoneanimdecl 7, ArtUnc_AniLBZ2_0, $170, 4, 5 - dc.b 0 - dc.b 5 - dc.b $A - dc.b $F - even - + dc.b 0 + dc.b 5 + dc.b $A + dc.b $F + even zoneanimdecl 7, ArtUnc_AniLBZ2_1, $175, 6, 4 - dc.b 0 - dc.b 4 - dc.b 8 - dc.b $C - dc.b $10 - dc.b $14 - even - + dc.b 0 + dc.b 4 + dc.b 8 + dc.b $C + dc.b $10 + dc.b $14 + even zoneanimend -AniPLC_LBZ2: zoneanimstart - +AniPLC_LBZ2: zoneanimstart zoneanimdecl 7, ArtUnc_AniLBZ2_0, $170, 4, 5 - dc.b 0 - dc.b 5 - dc.b $A - dc.b $F - even - + dc.b 0 + dc.b 5 + dc.b $A + dc.b $F + even zoneanimdecl 7, ArtUnc_AniLBZ2_1, $175, 6, 4 - dc.b 0 - dc.b 4 - dc.b 8 - dc.b $C - dc.b $10 - dc.b $14 - even - + dc.b 0 + dc.b 4 + dc.b 8 + dc.b $C + dc.b $10 + dc.b $14 + even zoneanimend -AniPLC_MHZ: zoneanimstart - +AniPLC_MHZ: zoneanimstart zoneanimdecl -1, ArtUnc_AniMHZ__0, $25,$14, 4 - dc.b 0,$18 - dc.b 4, 0 - dc.b 0, 0 - dc.b 4, 0 - dc.b 8, 0 - dc.b 4, 0 - dc.b 8, 0 - dc.b $C, 0 - dc.b 8, 0 - dc.b $C, 0 - dc.b 8, 0 - dc.b $C, 0 - dc.b $10, 0 - dc.b $C, 0 - dc.b $10, 0 - dc.b $14, 0 - dc.b $10, 0 - dc.b $14,$31 - dc.b 0, 0 - dc.b $14, 0 - even - + dc.b 0,$18 + dc.b 4, 0 + dc.b 0, 0 + dc.b 4, 0 + dc.b 8, 0 + dc.b 4, 0 + dc.b 8, 0 + dc.b $C, 0 + dc.b 8, 0 + dc.b $C, 0 + dc.b 8, 0 + dc.b $C, 0 + dc.b $10, 0 + dc.b $C, 0 + dc.b $10, 0 + dc.b $14, 0 + dc.b $10, 0 + dc.b $14,$31 + dc.b 0, 0 + dc.b $14, 0 + even zoneanimdecl -1, ArtUnc_AniMHZ__1, $19, $C, 4 - dc.b 0,$1D - dc.b 4, 0 - dc.b 0, 0 - dc.b 4, 0 - dc.b 0, 0 - dc.b 4, 0 - dc.b 0, 0 - dc.b 4, 1 - dc.b 8,$1D - dc.b $C, 4 - dc.b $10, 4 - dc.b $14, 4 - even - + dc.b 0,$1D + dc.b 4, 0 + dc.b 0, 0 + dc.b 4, 0 + dc.b 0, 0 + dc.b 4, 0 + dc.b 0, 0 + dc.b 4, 1 + dc.b 8,$1D + dc.b $C, 4 + dc.b $10, 4 + dc.b $14, 4 + even zoneanimdecl -1, ArtUnc_AniMHZ__2, $5D, 8, 8 - dc.b 0, 4 - dc.b 8, 4 - dc.b $10, 6 - dc.b 8, 4 - dc.b 0, 4 - dc.b $18, 4 - dc.b $20, 6 - dc.b $18, 4 - even - + dc.b 0, 4 + dc.b 8, 4 + dc.b $10, 6 + dc.b 8, 4 + dc.b 0, 4 + dc.b $18, 4 + dc.b $20, 6 + dc.b $18, 4 + even zoneanimdecl -1, ArtUnc_AniMHZ__3, $1D, 8, 8 - dc.b $10, 6 - dc.b 8, 4 - dc.b 0, 4 - dc.b $18, 4 - dc.b $20, 6 - dc.b $18, 4 - dc.b 0, 4 - dc.b 8, 4 - even - + dc.b $10, 6 + dc.b 8, 4 + dc.b 0, 4 + dc.b $18, 4 + dc.b $20, 6 + dc.b $18, 4 + dc.b 0, 4 + dc.b 8, 4 + even zoneanimend -AniPLC_LRZ1: zoneanimstart - +AniPLC_LRZ1: zoneanimstart zoneanimdecl 5, ArtUnc_AniLRZ1_0, $354, 4, 4 - dc.b 0 - dc.b 4 - dc.b 8 - dc.b $C - even - + dc.b 0 + dc.b 4 + dc.b 8 + dc.b $C + even zoneanimdecl 5, ArtUnc_AniLRZ1_1, $350, 4, 4 - dc.b 0 - dc.b 4 - dc.b 8 - dc.b $C - even - + dc.b 0 + dc.b 4 + dc.b 8 + dc.b $C + even zoneanimend -AniPLC_LRZ2: zoneanimstart - +AniPLC_LRZ2: zoneanimstart zoneanimdecl -1, ArtUnc_AniLRZ2_0, $358, 3, 6 - dc.b 0, 2 - dc.b 6, 2 - dc.b $C, 1 - even - + dc.b 0, 2 + dc.b 6, 2 + dc.b $C, 1 + even zoneanimdecl 1, ArtUnc_AniLRZ2_1, $350, 8, 8 - dc.b 0 - dc.b $38 - dc.b $30 - dc.b $28 - dc.b $20 - dc.b $18 - dc.b $10 - dc.b 8 - even - + dc.b 0 + dc.b $38 + dc.b $30 + dc.b $28 + dc.b $20 + dc.b $18 + dc.b $10 + dc.b 8 + even zoneanimend -AniPLC_SSZ: zoneanimstart - +AniPLC_SSZ: zoneanimstart zoneanimdecl 7, ArtUnc_AniSSZ__0, $1F3, 4,$24 - dc.b 0 - dc.b $24 - dc.b $48 - dc.b $6C - even - + dc.b 0 + dc.b $24 + dc.b $48 + dc.b $6C + even zoneanimdecl 7, ArtUnc_AniSSZ__1, $217, 4, 8 - dc.b 0 - dc.b 8 - dc.b $10 - dc.b $18 - even - + dc.b 0 + dc.b 8 + dc.b $10 + dc.b $18 + even zoneanimdecl 7, ArtUnc_AniSSZ__2, $21F, 3, 8 - dc.b 0 - dc.b 8 - dc.b $10 - dc.b $18 ; Unused; frame count is 3. There is no frame 4 in ArtUnc_AniSSZ__2, anyway - even - + dc.b 0 + dc.b 8 + dc.b $10 + dc.b $18 ; Unused; frame count is 3. There is no frame 4 in ArtUnc_AniSSZ__2, anyway + even zoneanimdecl 2, ArtUnc_AniSSZ__3, $1D9, 4, 9 - dc.b 0 - dc.b 9 - dc.b $12 - dc.b $1B - even - + dc.b 0 + dc.b 9 + dc.b $12 + dc.b $1B + even zoneanimdecl 2, ArtUnc_AniSSZ__4, $1E2, 4, 4 - dc.b 0 - dc.b 4 - dc.b 8 - dc.b $C - even - + dc.b 0 + dc.b 4 + dc.b 8 + dc.b $C + even zoneanimdecl 2, ArtUnc_AniSSZ__5, $1E6, 4, $D - dc.b 0 - dc.b $D - dc.b $1A - dc.b $27 - even - + dc.b 0 + dc.b $D + dc.b $1A + dc.b $27 + even zoneanimend -AniPLC_DEZ: zoneanimstart - +AniPLC_DEZ: zoneanimstart zoneanimdecl 0, ArtUnc_AniDEZ__0, $E4, 2, 2 - dc.b 0 - dc.b 2 - even - + dc.b 0 + dc.b 2 + even zoneanimdecl 1, ArtUnc_AniDEZ__1, $1F4, 6,$1E - dc.b 0 - dc.b $1E - dc.b $3C - dc.b 0 - dc.b $1E - dc.b $3C - even - + dc.b 0 + dc.b $1E + dc.b $3C + dc.b 0 + dc.b $1E + dc.b $3C + even zoneanimdecl 3, ArtUnc_AniDEZ__2, $EC, 8, 4 - dc.b 0 - dc.b 4 - dc.b 8 - dc.b $C - dc.b $10 - dc.b $14 - dc.b $18 - dc.b $1C - even - + dc.b 0 + dc.b 4 + dc.b 8 + dc.b $C + dc.b $10 + dc.b $14 + dc.b $18 + dc.b $1C + even zoneanimdecl -1, ArtUnc_AniDEZ__3, $5F, 4, 6 - dc.b 0, 9 - dc.b 6, 4 - dc.b $C, 9 - dc.b 6, 4 - even - + dc.b 0, 9 + dc.b 6, 4 + dc.b $C, 9 + dc.b 6, 4 + even zoneanimdecl 4, ArtUnc_AniDEZ__4, $4B, 4, 2 - dc.b 0 - dc.b 2 - dc.b 4 - dc.b 2 - even - + dc.b 0 + dc.b 2 + dc.b 4 + dc.b 2 + even zoneanimdecl 4, ArtUnc_AniDEZ__5, $6B, 6, 3 - dc.b 0 - dc.b 3 - dc.b 6 - dc.b 0 - dc.b 3 - dc.b 6 - even - + dc.b 0 + dc.b 3 + dc.b 6 + dc.b 0 + dc.b 3 + dc.b 6 + even zoneanimdecl 1, ArtUnc_AniDEZ__6, $28, 2, 8 - dc.b 0 - dc.b 8 - even - + dc.b 0 + dc.b 8 + even zoneanimdecl 0, ArtUnc_AniDEZ__7, $26D,$84, 5 - dc.b 0 - dc.b $2D - dc.b 0 - dc.b $2D - dc.b 0 - dc.b $2D - dc.b 0 - dc.b $2D - dc.b 0 - dc.b $2D - dc.b 0 - dc.b $2D - dc.b 5 - dc.b $2D - dc.b 5 - dc.b $2D - dc.b 5 - dc.b $2D - dc.b 5 - dc.b $2D - dc.b 5 - dc.b $2D - dc.b 5 - dc.b $2D - dc.b $A - dc.b $2D - dc.b $A - dc.b $2D - dc.b $A - dc.b $2D - dc.b $A - dc.b $2D - dc.b $A - dc.b $2D - dc.b $A - dc.b $2D - dc.b $F - dc.b $2D - dc.b $F - dc.b $2D - dc.b $F - dc.b $2D - dc.b $F - dc.b $2D - dc.b $F - dc.b $2D - dc.b $F - dc.b $2D - dc.b $14 - dc.b $2D - dc.b $14 - dc.b $2D - dc.b $14 - dc.b $2D - dc.b $14 - dc.b $2D - dc.b $14 - dc.b $2D - dc.b $14 - dc.b $2D - dc.b $19 - dc.b $2D - dc.b $19 - dc.b $2D - dc.b $19 - dc.b $2D - dc.b $19 - dc.b $2D - dc.b $19 - dc.b $2D - dc.b $19 - dc.b $2D - dc.b $1E - dc.b $2D - dc.b $1E - dc.b $2D - dc.b $1E - dc.b $2D - dc.b $1E - dc.b $2D - dc.b $1E - dc.b $2D - dc.b $1E - dc.b $2D - dc.b $23 - dc.b $2D - dc.b $23 - dc.b $2D - dc.b $23 - dc.b $2D - dc.b $23 - dc.b $2D - dc.b $23 - dc.b $2D - dc.b $23 - dc.b $2D - dc.b $28 - dc.b $2D - dc.b $28 - dc.b $2D - dc.b $28 - dc.b $2D - dc.b $28 - dc.b $2D - dc.b $28 - dc.b $2D - dc.b $28 - dc.b $2D - dc.b $28 - dc.b $2D - dc.b $28 - dc.b $2D - dc.b $28 - dc.b $2D - dc.b $28 - dc.b $2D - dc.b $28 - dc.b $2D - dc.b $28 - dc.b $2D - dc.b $28 - dc.b $2D - dc.b $28 - dc.b $2D - dc.b $28 - dc.b $2D - dc.b $28 - dc.b $2D - dc.b $28 - dc.b $2D - dc.b $28 - dc.b $2D - even - + dc.b 0 + dc.b $2D + dc.b 0 + dc.b $2D + dc.b 0 + dc.b $2D + dc.b 0 + dc.b $2D + dc.b 0 + dc.b $2D + dc.b 0 + dc.b $2D + dc.b 5 + dc.b $2D + dc.b 5 + dc.b $2D + dc.b 5 + dc.b $2D + dc.b 5 + dc.b $2D + dc.b 5 + dc.b $2D + dc.b 5 + dc.b $2D + dc.b $A + dc.b $2D + dc.b $A + dc.b $2D + dc.b $A + dc.b $2D + dc.b $A + dc.b $2D + dc.b $A + dc.b $2D + dc.b $A + dc.b $2D + dc.b $F + dc.b $2D + dc.b $F + dc.b $2D + dc.b $F + dc.b $2D + dc.b $F + dc.b $2D + dc.b $F + dc.b $2D + dc.b $F + dc.b $2D + dc.b $14 + dc.b $2D + dc.b $14 + dc.b $2D + dc.b $14 + dc.b $2D + dc.b $14 + dc.b $2D + dc.b $14 + dc.b $2D + dc.b $14 + dc.b $2D + dc.b $19 + dc.b $2D + dc.b $19 + dc.b $2D + dc.b $19 + dc.b $2D + dc.b $19 + dc.b $2D + dc.b $19 + dc.b $2D + dc.b $19 + dc.b $2D + dc.b $1E + dc.b $2D + dc.b $1E + dc.b $2D + dc.b $1E + dc.b $2D + dc.b $1E + dc.b $2D + dc.b $1E + dc.b $2D + dc.b $1E + dc.b $2D + dc.b $23 + dc.b $2D + dc.b $23 + dc.b $2D + dc.b $23 + dc.b $2D + dc.b $23 + dc.b $2D + dc.b $23 + dc.b $2D + dc.b $23 + dc.b $2D + dc.b $28 + dc.b $2D + dc.b $28 + dc.b $2D + dc.b $28 + dc.b $2D + dc.b $28 + dc.b $2D + dc.b $28 + dc.b $2D + dc.b $28 + dc.b $2D + dc.b $28 + dc.b $2D + dc.b $28 + dc.b $2D + dc.b $28 + dc.b $2D + dc.b $28 + dc.b $2D + dc.b $28 + dc.b $2D + dc.b $28 + dc.b $2D + dc.b $28 + dc.b $2D + dc.b $28 + dc.b $2D + dc.b $28 + dc.b $2D + dc.b $28 + dc.b $2D + dc.b $28 + dc.b $2D + dc.b $28 + dc.b $2D + even zoneanimend -AniPLC_ALZ: zoneanimstart - +AniPLC_ALZ: zoneanimstart zoneanimdecl 9, ArtUnc_AniALZ, $238, 3,$10 - dc.b 0 - dc.b $10 - dc.b $20 - even - + dc.b 0 + dc.b $10 + dc.b $20 + even zoneanimend -AniPLC_BPZ: zoneanimstart - +AniPLC_BPZ: zoneanimstart zoneanimdecl 7, ArtUnc_AniBPZ__0, $118, 6, 7 - dc.b 0 - dc.b 7 - dc.b $E - dc.b $15 - dc.b $1C - dc.b $23 - even - + dc.b 0 + dc.b 7 + dc.b $E + dc.b $15 + dc.b $1C + dc.b $23 + even zoneanimdecl 5, ArtUnc_AniBPZ__1, $11F, $A, 8 - dc.b 0 - dc.b 8 - dc.b $10 - dc.b $18 - dc.b $20 - dc.b 0 - dc.b 8 - dc.b $10 - dc.b $18 - dc.b $20 - even - + dc.b 0 + dc.b 8 + dc.b $10 + dc.b $18 + dc.b $20 + dc.b 0 + dc.b 8 + dc.b $10 + dc.b $18 + dc.b $20 + even zoneanimdecl 2, ArtUnc_AniBPZ__2, $127, 2, 3 - dc.b 0 - dc.b 3 - even - + dc.b 0 + dc.b 3 + even zoneanimdecl 4, ArtUnc_AniBPZ__3, $12A, 2, 1 - dc.b 0 - dc.b 1 - even - + dc.b 0 + dc.b 1 + even zoneanimend -AniPLC_DPZ: zoneanimstart - +AniPLC_DPZ: zoneanimstart zoneanimdecl $B, ArtUnc_AniDPZ, $147, 5, $C - dc.b 0 - dc.b $C - dc.b $18 - dc.b $24 - dc.b $30 - even - + dc.b 0 + dc.b $C + dc.b $18 + dc.b $24 + dc.b $30 + even zoneanimend -AniPLC_Pachinko: zoneanimstart - +AniPLC_Pachinko: zoneanimstart zoneanimdecl 0, ArtUnc_AniPachinko, $125, 8,$26 - dc.b $26 - dc.b 0 - dc.b $4C - dc.b 0 - dc.b $72 - dc.b 0 - dc.b $98 - dc.b 0 - even - + dc.b $26 + dc.b 0 + dc.b $4C + dc.b 0 + dc.b $72 + dc.b 0 + dc.b $98 + dc.b 0 + even zoneanimend -AniPLC_NULL: zoneanimstart - +AniPLC_NULL: zoneanimstart zoneanimend -AniPLC_HPZ: zoneanimstart - +AniPLC_HPZ: zoneanimstart zoneanimdecl 2, ArtUnc_AniHPZ__0, $2D0, 8, 3 - dc.b 0 - dc.b 3 - dc.b 6 - dc.b 9 - dc.b $C - dc.b $F - dc.b $12 - dc.b $15 - even - + dc.b 0 + dc.b 3 + dc.b 6 + dc.b 9 + dc.b $C + dc.b $F + dc.b $12 + dc.b $15 + even zoneanimdecl 3, ArtUnc_AniHPZ__1, $2D3, 6, 2 - dc.b 0 - dc.b 2 - dc.b 4 - dc.b 6 - dc.b 8 - dc.b $A - even - + dc.b 0 + dc.b 2 + dc.b 4 + dc.b 6 + dc.b 8 + dc.b $A + even zoneanimdecl 2, ArtUnc_AniHPZ__2, $2D5, 8, 4 - dc.b 0 - dc.b 4 - dc.b 8 - dc.b $C - dc.b $10 - dc.b $14 - dc.b $18 - dc.b $1C - even - + dc.b 0 + dc.b 4 + dc.b 8 + dc.b $C + dc.b $10 + dc.b $14 + dc.b $18 + dc.b $1C + even zoneanimdecl 3, ArtUnc_AniHPZ__3, $2D9, 6, 3 - dc.b 0 - dc.b 3 - dc.b 6 - dc.b 9 - dc.b $C - dc.b $F - even - + dc.b 0 + dc.b 3 + dc.b 6 + dc.b 9 + dc.b $C + dc.b $F + even zoneanimend - ; --------------------------------------------------------------------------- AnimateTiles_NULL3: @@ -127636,9 +127536,9 @@ Pal_EndingEyecatchEggman: binclude "General/Ending/Palettes/Eggman Eyecatch.bin" Pal_KnuxEndPose: binclude "General/Ending/Palettes/Knuckles End Pose.bin" even -PalSPtr_EndingSuperTails: palscriptptr .header, .data +PalSPtr_EndingSuperTails: + palscriptptr .header, .data dc.w 0 - .header palscripthdr Normal_palette_line_3+$04, 4, 0 .data palscriptdata 24,$06C, $08E, $0AE, $8CE palscriptdata 8, $28E, $2AE, $2CE, $AEE @@ -128832,9 +128732,9 @@ Map_SSEntryFlash: include "General/Sprites/SS Entry/Map - Entry Flash.asm" DPLC_SSEntryFlash: include "General/Sprites/SS Entry/DPLC - Special Stage Entry Flash.asm" -PalSPtr_SSEntry: palscriptptr .header, .data +PalSPtr_SSEntry: + palscriptptr .header, .data .header palscripthdr Normal_palette_line_2+$A, 2, 0 - .data palscriptdata 3, $ECE, $A8A palscriptdata 3, $AEE, $6EE palscriptdata 3, $ECA, $A86 @@ -128856,9 +128756,9 @@ PalSPtr_SSEntry: palscriptptr .header, .data palscriptdata 2, $8EE, $0CC palscriptrept -PalSPtr_SSEntry2: palscriptptr .header, .data +PalSPtr_SSEntry2: + palscriptptr .header, .data .header palscripthdr Normal_palette_line_2+$1E, 1, 0 - .data palscriptdata 3, $868 palscriptdata 3, $0AA palscriptdata 3, $864 @@ -146226,62 +146126,56 @@ AniRaw_CNZMBossBoundEffect: dc.b $C, 0, $D, 1, $E, 1, $F4, 0 Pal_CNZMiniboss: binclude "Levels/CNZ/Palettes/Miniboss.bin" even -PalSPtr_CNZMinibossNormal: palscriptptr .header, .data +PalSPtr_CNZMinibossNormal: + palscriptptr .header, .data dc.w 0 .header palscripthdr Normal_palette_line_2+$14, 1, 3-1 - .data palscriptdata 1, $EEE palscriptdata 1, $A22 palscriptdata 6, $020 palscriptloop .headr2 - .headr2 palscripthdr Normal_palette_line_2+$14, 1, 3-1 palscriptdata 1, $EEE palscriptdata 1, $A22 palscriptdata 4, $020 palscriptloop .headr3 - .headr3 palscripthdr Normal_palette_line_2+$14, 1, 3-1 palscriptdata 1, $EEE palscriptdata 1, $A22 palscriptdata 2, $020 palscriptloop .headr4 - .headr4 palscripthdr Normal_palette_line_2+$14, 1, $B-1 palscriptdata 1, $EEE palscriptdata 1, $A22 palscriptdata 1, $020 palscriptrun -PalSPtr_CNZMinibossSparks: palscriptptr .header, .data +PalSPtr_CNZMinibossSparks: + palscriptptr .header, .data dc.w 0 .header palscripthdr Normal_palette_line_2+$14, 1, $31-1 - .data palscriptdata 1, $EEE palscriptdata 1, $A22 palscriptdata 1, $020 palscriptloop .headr2 - .headr2 palscripthdr Normal_palette_line_2+$14, 1, 3-1 palscriptdata 1, $EEE palscriptdata 1, $A22 palscriptdata 2, $020 palscriptloop .headr3 - .headr3 palscripthdr Normal_palette_line_2+$14, 1, 4-1 palscriptdata 1, $EEE palscriptdata 1, $A22 palscriptdata 4, $020 palscriptloop .headr4 - .headr4 palscripthdr Normal_palette_line_2+$14, 1, 2-1 palscriptdata 96, $020 palscriptloop PalSPtr_CNZMinibossNormal.headr3 -PalSPtr_CNZMinibossOpen: palscriptptr .header, .data +PalSPtr_CNZMinibossOpen: + palscriptptr .header, .data dc.w 0 .header palscripthdr Normal_palette_line_2+$14, 1, 0 - .data palscriptdata 1, $EEE palscriptdata 1, $A22 palscriptdata 2, $020 @@ -148524,11 +148418,9 @@ ChildObjDat_6FAB0:dc.w 0 dc.b $FC Pal_FBZMiniboss: binclude "Levels/FBZ/Palettes/FBZ Miniboss.bin" even - word_6FAE0: palscriptptr .header, .data dc.w 0 .header palscripthdr Normal_palette_line_2+$1E, 1, 7-1 - .data palscriptdata 1, $EEE palscriptdata 4, $644 palscriptrun @@ -151042,7 +150934,6 @@ Pal_ICZMiniboss: binclude "Levels/ICZ/Palettes/Miniboss.bin" word_719FA: palscriptptr .header, .data dc.w 0 - .header palscripthdr Normal_palette_line_4+$02, 10, 2-1 .data palscriptdata 8, $EEC, $CC6, $C80, $C60, $C40, $A40, $820, $620, $200, $600 palscriptdata 8, $EEC, $CC6, $C82, $C80, $C40, $A40, $820, $820, $200, $600 @@ -151058,31 +150949,26 @@ word_719FA: palscriptptr .header, .data word_71AE6: palscriptptr .header, .data dc.w 0 - .header palscripthdr Normal_palette_line_2+$14, 1, 3-1 .data palscriptdata 8, $222 palscriptdata 1, $C22 palscriptdata 1, $EE0 palscriptloop .headr2 - .headr2 palscripthdr Normal_palette_line_2+$14, 1, 3-1 palscriptdata 6, $222 palscriptdata 1, $C22 palscriptdata 1, $EE0 palscriptloop .headr3 - .headr3 palscripthdr Normal_palette_line_2+$14, 1, 3-1 palscriptdata 4, $222 palscriptdata 1, $C22 palscriptdata 1, $EE0 palscriptloop .headr4 - .headr4 palscripthdr Normal_palette_line_2+$14, 1, 3-1 palscriptdata 2, $222 palscriptdata 1, $C22 palscriptdata 1, $EE0 palscriptloop .headr5 - .headr5 palscripthdr Normal_palette_line_2+$14, 1, 0 palscriptdata 1, $222 palscriptdata 1, $C22 @@ -151091,31 +150977,26 @@ word_71AE6: palscriptptr .header, .data word_71B52: palscriptptr .header, .data dc.w 0 - .header palscripthdr Normal_palette_line_2+$14, 1, 3-1 .data palscriptdata 2, $222 palscriptdata 1, $C22 palscriptdata 1, $EE0 palscriptloop .headr2 - .headr2 palscripthdr Normal_palette_line_2+$14, 1, 3-1 palscriptdata 4, $222 palscriptdata 1, $C22 palscriptdata 1, $EE0 palscriptloop .headr3 - .headr3 palscripthdr Normal_palette_line_2+$14, 1, 3-1 palscriptdata 6, $222 palscriptdata 1, $C22 palscriptdata 1, $EE0 palscriptloop .headr4 - .headr4 palscripthdr Normal_palette_line_2+$14, 1, 3-1 palscriptdata 8, $222 palscriptdata 1, $C22 palscriptdata 1, $EE0 palscriptloop .headr5 - .headr5 palscripthdr Normal_palette_line_2+$14, 1, 5-1 palscriptdata 10,$222 palscriptdata 1, $C22 @@ -161475,7 +161356,6 @@ Pal_LRZMiniboss3: binclude "Levels/LRZ/Palettes/Miniboss 3.bin" even word_78EAA: palscriptptr .header, .data dc.w 0 - .header palscripthdr Normal_palette_line_3+$02, 5, 2-1 .data palscriptdata 4, $0EE, $0AE, $06E, $00E, $00A palscriptdata 4, $0CC, $08C, $04A, $00A, $008 @@ -168153,7 +168033,6 @@ Map_MechaSonicPieces: include "General/Sprites/Mecha Sonic/Map - Mecha Sonic Pie word_7D842: palscriptptr .header, .data dc.w 0 - .header palscripthdr Normal_palette_line_2+$00, 16, 0 .data palscriptfile 50,"General/Sprites/Mecha Sonic/Palettes/Main.bin" palscriptfile 2, "General/Sprites/Mecha Sonic/Palettes/Flash 2.bin" @@ -168173,7 +168052,6 @@ Pal_SSZGHZMisc = word_7D842.data ; yeah Sonic 3 is a fun game word_7D9EA: palscriptptr .header, .data dc.w 0 - .header palscripthdr Normal_palette_line_2+$00, 16, 0 .data palscriptfile 3, "General/Sprites/Mecha Sonic/Palettes/Main.bin" palscriptfile 2, "General/Sprites/Mecha Sonic/Palettes/Flash 2.bin" @@ -168182,13 +168060,11 @@ word_7D9EA: palscriptptr .header, .data word_7DA60: palscriptptr .header, .data dc.w 0 - .header palscripthdr Normal_palette_line_2+$00, 16, 2-1 .data palscriptfile 6, "General/Sprites/Mecha Sonic/Palettes/Flash 1.bin" palscriptfile 6, "General/Sprites/Mecha Sonic/Palettes/Flash 2.bin" palscriptfile 30,"General/Sprites/Mecha Sonic/Palettes/Flash 3.bin" palscriptloop .headr2 - .headr2 palscripthdr Normal_palette_line_2+$00, 16, 0 palscriptfile 6, "General/Sprites/Mecha Sonic/Palettes/Super 1.bin" palscriptfile 6, "General/Sprites/Mecha Sonic/Palettes/Super 2.bin" @@ -168198,13 +168074,11 @@ word_7DA60: palscriptptr .header, .data word_7DB66: palscriptptr .header, .data dc.w 0 - .header palscripthdr Normal_palette_line_2+$00, 16, 2-1 .data palscriptfile 6, "General/Sprites/Mecha Sonic/Palettes/Flash 2.bin" palscriptfile 6, "General/Sprites/Mecha Sonic/Palettes/Flash 1.bin" palscriptfile 128,"General/Sprites/Mecha Sonic/Palettes/Main.bin" palscriptloop .headr2 - .headr2 palscripthdr Normal_palette_line_2+$00, 16, 0 palscriptfile 128,"General/Sprites/Mecha Sonic/Palettes/Main.bin" palscriptrept @@ -168212,7 +168086,6 @@ word_7DB66: palscriptptr .header, .data word_7DC06: palscriptptr .header, .data dc.w 0 - .header palscripthdr Normal_palette_line_2+$00, 16, 2-1 .data palscriptfile 8, "General/Sprites/Mecha Sonic/Palettes/Main.bin" palscriptfile 8, "General/Sprites/Mecha Sonic/Palettes/Flash 2.bin" @@ -168221,7 +168094,6 @@ word_7DC06: palscriptptr .header, .data word_7DC7E: palscriptptr .header, .data dc.w 0 - .header palscripthdr Normal_palette_line_2+$00, 16, 2-1 .data palscriptfile 2, "General/Sprites/Mecha Sonic/Palettes/Flash 2.bin" palscriptfile 2, "General/Sprites/Mecha Sonic/Palettes/Flash 1.bin" @@ -170170,7 +170042,6 @@ Pal_DEZMiniboss2: binclude "Levels/DEZ/Palettes/Miniboss 2.bin" word_7F03C: palscriptptr .header, .data dc.w 0 - .header palscripthdr Normal_palette_line_2+$16, 3, 11-1 .data palscriptdata 8, $66A, $448, $226 palscriptdata 8, $66C, $44A, $228 @@ -173730,7 +173601,6 @@ byte_81397: dc.b 0, 0 word_813AA: palscriptptr .hdr1, .data1 palscriptptr .hdr2, .data2 - .hdr1 palscripthdr Normal_palette_line_3+$12, 1, 0 .data1 palscriptdata 15,$660 palscriptdata 18,$680 @@ -173743,7 +173613,6 @@ word_813AA: palscriptptr .hdr1, .data1 palscriptdata 7, $880 palscriptdata 18,$680 palscriptrept - .hdr2 palscripthdr Normal_palette_line_3+$16, 1, 0 .data2 palscriptdata 15,$6A0 palscriptdata 9, $8C0 @@ -173761,7 +173630,6 @@ word_813AA: palscriptptr .hdr1, .data1 word_8141E: palscriptptr .hdr1, .data1 palscriptptr .hdr2, .data2 - .hdr1 palscripthdr Normal_palette_line_4+$12, 1, 0 .data1 palscriptdata 15,$660 palscriptdata 18,$680 @@ -173774,7 +173642,6 @@ word_8141E: palscriptptr .hdr1, .data1 palscriptdata 7, $880 palscriptdata 18,$680 palscriptrept - .hdr2 palscripthdr Normal_palette_line_4+$16, 1, 0 .data2 palscriptdata 15,$6A0 palscriptdata 9, $8C0 From fcabb6ee8412ffb81119f90defbeb7821fedcf11 Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Fri, 31 Dec 2021 11:20:55 +0000 Subject: [PATCH 54/72] Format data --- Lockon S3/LockOn Data.asm | 2592 ++++++++------ Lockon S3/Screen Events.asm | 82 +- s3.asm | 1195 ++++--- sonic3k.asm | 6657 +++++++++++++++++++---------------- 4 files changed, 5914 insertions(+), 4612 deletions(-) diff --git a/Lockon S3/LockOn Data.asm b/Lockon S3/LockOn Data.asm index 81ae19b7..164d9a1c 100644 --- a/Lockon S3/LockOn Data.asm +++ b/Lockon S3/LockOn Data.asm @@ -1,5 +1,6 @@ -LockOnROM_Start: binclude "Lockon S3/Header.bin" - even +LockOnROM_Start: + binclude "Lockon S3/Header.bin" + even SSMagic_TestLoc_200114 EQU LockOnROM_Start+$114 SSMagic_TestLoc_20011A EQU LockOnROM_Start+$11A @@ -8,961 +9,1231 @@ SSMagic_TestLoc_200150 EQU LockOnROM_Start+$150 LockonSerialNumber EQU LockOnROM_Start+$180 SSMagic_TestLoc_2001A4 EQU LockOnROM_Start+$1A4 -Pal_Competition1: binclude "General/Competition Menu/Palettes/1.bin" - even -Map_CompetitionObject: include "General/Competition Menu/Map - Competition Objects.asm" +Pal_Competition1: + binclude "General/Competition Menu/Palettes/1.bin" + even +Map_CompetitionObject: + include "General/Competition Menu/Map - Competition Objects.asm" + +MapUnc_CompetitionNumbers: + binclude "General/Competition Menu/Uncompressed Map/Numbers.bin" + even +Pal_Competition2: + binclude "General/Competition Menu/Palettes/2.bin" + even +Pal_Competition3: + binclude "General/Competition Menu/Palettes/3.bin" + even +Pal_Competition4: + binclude "General/Competition Menu/Palettes/4.bin" + even +Map_CompetitionSelect: + include "General/Competition Menu/Map - Competition Select.asm" + +Pal_CompetitionResults: + binclude "General/Competition Menu/Palettes/Results.bin" + even +MapEni_CompetitionResultsLED: + binclude "General/Competition Menu/Enigma Map/Menu.bin" + even +MapUnc_CompetitionResultsLetters: + binclude "General/Competition Menu/Uncompressed Map/Results Letters.bin" + even +MapUnc_CompetitionResultsDividers: + binclude "General/Competition Menu/Uncompressed Map/Results Dividers.bin" + even +MapUnc_CompetitionResultsTOTAL: + binclude "General/Competition Menu/Uncompressed Map/Results TOTAL.bin" + even +MapUnc_ResultsWin: + binclude "General/Competition Menu/Uncompressed Map/Results Win.bin" + even +MapUnc_ResultsLose: + binclude "General/Competition Menu/Uncompressed Map/Results Lose.bin" + even +MapUnc_ResultsTie: + binclude "General/Competition Menu/Uncompressed Map/Results Tie.bin" + even +Pal_CompetitionTimeAttack: + binclude "General/Competition Menu/Palettes/Time Attack.bin" + even +MapUnc_CompetitionLAPNum: + binclude "General/Competition Menu/Uncompressed Map/LAP.bin" + even +MapUnc_CompetitionRECORDS: + binclude "General/Competition Menu/Uncompressed Map/RECORDS.bin" + even +MapUnc_Competition1st2nd3rd: + binclude "General/Competition Menu/Uncompressed Map/1ST 2ND 3RD.bin" + even +MapUnc_CompetitionAZURELAKE: + binclude "General/Competition Menu/Uncompressed Map/AZURE LAKE.bin" + even +MapUnc_CompetitionBALLOONPARK: + binclude "General/Competition Menu/Uncompressed Map/BALLOON PARK.bin" + even +MapUnc_CompetitionCHROMEGADGET: + binclude "General/Competition Menu/Uncompressed Map/CHROME GADGET.bin" + even +MapUnc_CompetitionDESERTPALACE: + binclude "General/Competition Menu/Uncompressed Map/DESERT PALACE.bin" + even +MapUnc_CompetitionENDLESSMINE: + binclude "General/Competition Menu/Uncompressed Map/ENDLESS MINE.bin" + even +ArtKos_SaveScreenS3Zone: + binclude "General/Save Menu/Kosinski Art/Zone Art.bin" + even +Map_AIZ1Tree: + include "Levels/AIZ/Misc Object Data/Map - Act 1 Tree.asm" +Map_AIZ1ZiplinePeg: + include "Levels/AIZ/Misc Object Data/Map - Act 1 Zipline Peg.asm" +Map_HCZBreakableBar: + include "Levels/HCZ/Misc Object Data/Map - Breakable Bar.asm" +Map_HCZBlock: + include "Levels/HCZ/Misc Object Data/Map - Block.asm" +Map_AIZRock: + include "Levels/AIZ/Misc Object Data/Map - Rock.asm" +Map_AIZRock2: + include "Levels/AIZ/Misc Object Data/Map - Rock 2.asm" +Map_EMZRock: + include "Levels/EMZ/Misc Object Data/Map - Rock.asm" +Map_AIZCollapsingPlatform: + include "Levels/AIZ/Misc Object Data/Map - Collapsing Platform.asm" +Map_AIZCollapsingPlatform2: + include "Levels/AIZ/Misc Object Data/Map - Collapsing Platform 2.asm" +Map_LBZCollapsingBridge: + include "Levels/LBZ/Misc Object Data/Map - Collapsing Bridge.asm" +Map_LBZCollapsingLedge: + include "Levels/LBZ/Misc Object Data/Map - Collapsing Ledge.asm" +Map_HCZCollapsingBridge: + include "Levels/HCZ/Misc Object Data/Map - Collapsing Bridge.asm" +Map_MGZCollapsingBridge: + include "Levels/MGZ/Misc Object Data/Map - Collapsing Bridge.asm" +Map_ICZCollapsingBridge: + include "Levels/ICZ/Misc Object Data/Map - Collapsing Bridge.asm" +Map_AIZBreakableWall: + include "Levels/AIZ/Misc Object Data/Map - Breakable Wall.asm" +Map_MGZBreakableWall: + include "Levels/MGZ/Misc Object Data/Map - Breakable Wall.asm" +Map_HCZBreakableWall: + include "Levels/HCZ/Misc Object Data/Map - Breakable Wall.asm" +Map_LBZBreakableWall: + include "Levels/LBZ/Misc Object Data/Map - Breakable Wall.asm" +Map_AIZIntroWaves: + include "Levels/AIZ/Misc Object Data/Map - Intro Waves.asm" +Map_LBZUnusedElevator: + include "Levels/LBZ/Misc Object Data/Map - Unused Elevator.asm" +Map_LBZExplodingTrigger: + include "Levels/LBZ/Misc Object Data/Map - Exploding Trigger.asm" +Map_MGZDashTrigger: + include "Levels/MGZ/Misc Object Data/Map - Dash Trigger.asm" +Map_LBZTriggerBridge: + include "Levels/LBZ/Misc Object Data/Map - Trigger Bridge.asm" +Map_LBZPlayerLauncher: + include "Levels/LBZ/Misc Object Data/Map - Player Launcher.asm" +Map_LBZFlameThrower: + include "Levels/LBZ/Misc Object Data/Map - Flame Thrower.asm" +Map_LBZCupElevator: + include "Levels/LBZ/Misc Object Data/Map - Cup Elevator.asm" +Map_LBZUnusedTiltingBridge: + include "Levels/LBZ/Misc Object Data/Map - Unused Tilting Bridge.asm" +Map_LBZPipePlug: + include "Levels/LBZ/Misc Object Data/Map - PipePlug.asm" +Map_LBZSpinLauncher: + include "Levels/LBZ/Misc Object Data/Map - Spin Launcher.asm" +Map_LBZLoweringGrapple: + include "Levels/LBZ/Misc Object Data/Map - Lowering Grapple.asm" +Map_LBZSmashingSpikes: + include "Levels/LBZ/Misc Object Data/Map - Smashing Spikes.asm" +Map_MGZSmashingPillar: + include "Levels/MGZ/Misc Object Data/Map - Smashing Pillar.asm" +Map_LBZGateLaser: + include "Levels/LBZ/Misc Object Data/Map - Gate Laser.asm" +Map_LBZTubeElevator: + include "Levels/LBZ/Misc Object Data/Map - Tube Elevator.asm" +Map_AIZDisappearingFloor: + include "Levels/AIZ/Misc Object Data/Map - Disappearing Floor.asm" +Map_AIZCorkFloor: + include "Levels/AIZ/Misc Object Data/Map - Cork Floor.asm" +Map_AIZCorkFloor2: + include "Levels/AIZ/Misc Object Data/Map - Cork Floor 2.asm" +Map_CNZCorkFloor: + include "Levels/CNZ/Misc Object Data/Map - Cork Floor.asm" +Map_ICZCorkFloor: + include "Levels/ICZ/Misc Object Data/Map - Cork Floor.asm" +Map_LBZCorkFloor: + include "Levels/LBZ/Misc Object Data/Map - Cork Floor.asm" +Map_AIZFlippingBridge: + include "Levels/AIZ/Misc Object Data/Map - Flipping Bridge.asm" +Map_AIZFallingLog2: + include "Levels/AIZ/Misc Object Data/Map - Falling Log 2.asm" +Map_AIZFallingLog: + include "Levels/AIZ/Misc Object Data/Map - Falling Log.asm" +Map_AIZFallingLogSplash2: + include "Levels/AIZ/Misc Object Data/Map - Falling Log Splash 2.asm" +Map_AIZFallingLogSplash: + include "Levels/AIZ/Misc Object Data/Map - Falling Log Splash.asm" +Map_AIZSpikedLog: + include "Levels/AIZ/Misc Object Data/Map - Spiked Log.asm" +Map_AIZForegroundPlant: + include "Levels/AIZ/Misc Object Data/Map - Foreground Plant.asm" +Map_Button2: + include "General/Sprites/Buttons/Map - Button 2.asm" +Map_CNZButton: + include "Levels/CNZ/Misc Object Data/Map - Button.asm" +Map_2PButton: + include "General/2P Zone/Map - 2P Button.asm" +Map_HCZWaterRush: + include "Levels/HCZ/Misc Object Data/Map - Water Rush.asm" +Map_HCZWaterRushBlock: + include "Levels/HCZ/Misc Object Data/Map - Water Rush Block.asm" +Map_HCZWaterWall: + include "Levels/HCZ/Misc Object Data/Map - Waterfall.asm" +Map_HCZWaterWallDebris: + include "Levels/HCZ/Misc Object Data/Map - Water Wall Debris.asm" +Map_HCZFan: + include "Levels/HCZ/Misc Object Data/Map - Fan.asm" +Map_HCZLargeFan: + include "Levels/HCZ/Misc Object Data/Map - Large Fan.asm" +Map_CGZFan: + include "Levels/CGZ/Misc Object Data/Map - Fan.asm" +Map_HCZHandLauncher: + include "Levels/HCZ/Misc Object Data/Map - Hand Launcher.asm" +Map_HCZConveyorSpike: + include "Levels/HCZ/Misc Object Data/Map - Conveyor Spike.asm" +Map_CNZBalloon: + include "Levels/CNZ/Misc Object Data/Map - Balloon.asm" +Map_CNZCannon: + include "General/Sprites/CNZ Cannon/Map - CNZ Cannon.asm" +Map_CNZRisingPlatform: + include "Levels/CNZ/Misc Object Data/Map - Rising Platform.asm" +Map_CNZTrapDoor: + include "Levels/CNZ/Misc Object Data/Map - Trap Door.asm" +Map_CNZLightBulb: + include "Levels/CNZ/Misc Object Data/Map - Light Bulb.asm" +Map_CNZHoverFan: + include "Levels/CNZ/Misc Object Data/Map - Hover Fan.asm" +Map_CNZCylinder: + include "Levels/CNZ/Misc Object Data/Map - Cylinder.asm" +Map_HCZSpinningColumn: + include "Levels/HCZ/Misc Object Data/Map - Spinning Column.asm" +Map_Bumper: + include "General/Sprites/Level Misc/Map - Bumper.asm" +Map_2PBumper: + include "General/2P Zone/Map - 2P Bumper.asm" +Map_MGZSwingingPlatform: + include "Levels/MGZ/Misc Object Data/Map - Swinging Platform.asm" +Map_MGZSwingingSpikeBall: + include "Levels/MGZ/Misc Object Data/Map - Swinging Spike Ball.asm" +Map_MGZHeadTrigger: + include "Levels/MGZ/Misc Object Data/Map - Head Trigger.asm" +Map_MGZTriggerPlatform: + include "Levels/MGZ/Misc Object Data/Map - Trigger Platform.asm" +Map_MGZMovingSpikePlatform: + include "Levels/MGZ/Misc Object Data/Map - Moving Spike Platform.asm" +Map_MGZPulley: + include "Levels/MGZ/Misc Object Data/Map - Pulley.asm" +Map_HCZWaterDrop: + include "Levels/HCZ/Misc Object Data/Map - Water Drop.asm" +Map_HCZWaterSplash: + include "Levels/HCZ/Misc Object Data/Map - Water Splash.asm" +Map_HCZWaterSplash2: + include "Levels/HCZ/Misc Object Data/Map - Water Splash 2.asm" + + include "Lockon S3/Screen Events.asm" +Map_S3EndingGraphics: + include "General/Ending/Map - S3 Ending Graphics.asm" +ArtNem_S3EndingGraphics: + binclude "General/Ending/Nemesis Art/S3 Ending Graphics.bin" + even +SStageLayoutPtrs: + dc.l SStage1_Layout + dc.l SStage2_Layout + dc.l SStage3_Layout + dc.l SStage4_Layout + dc.l SStage5_Layout + dc.l SStage6_Layout + dc.l SStage7_Layout + dc.l SStage8_Layout +SStage1_Layout: binclude "General/Special Stage/Layout/S3 1.bin" + even +SStage2_Layout: binclude "General/Special Stage/Layout/S3 2.bin" + even +SStage3_Layout: binclude "General/Special Stage/Layout/S3 3.bin" + even +SStage4_Layout: binclude "General/Special Stage/Layout/S3 4.bin" + even +SStage5_Layout: binclude "General/Special Stage/Layout/S3 5.bin" + even +SStage6_Layout: binclude "General/Special Stage/Layout/S3 6.bin" + even +SStage7_Layout: binclude "General/Special Stage/Layout/S3 7.bin" + even +SStage8_Layout: binclude "General/Special Stage/Layout/S3 8.bin" + even +HCZ_WaterlineScroll_Data: + binclude "Levels/HCZ/Misc/HCZ Waterline Scroll Data.bin" + even +LBZ_WaterlineScroll_Data: + binclude "Levels/LBZ/Misc/LBZ Waterline Scroll Data.bin" + even +Solid_AIZ1: binclude "Levels/AIZ/Collision/1.bin" + even +Solid_AIZ2: binclude "Levels/AIZ/Collision/2.bin" + even +Solid_HCZ1: binclude "Levels/HCZ/Collision/1.bin" + even +Solid_HCZ2: binclude "Levels/HCZ/Collision/2.bin" + even +Solid_MGZ1: binclude "Levels/MGZ/Collision/1.bin" + even +Solid_MGZ2: binclude "Levels/MGZ/Collision/2.bin" + even +Solid_CNZ: binclude "Levels/CNZ/Collision/1.bin" + even +Solid_ICZ1: binclude "Levels/ICZ/Collision/1.bin" + even +Solid_ICZ2: binclude "Levels/ICZ/Collision/2.bin" + even +Solid_LBZ1: binclude "Levels/LBZ/Collision/1.bin" + even +Solid_LBZ2: binclude "Levels/LBZ/Collision/2.bin" + even +Solid_ALZ: binclude "Levels/ALZ/Collision/1.bin" + even +Solid_BPZ: binclude "Levels/BPZ/Collision/1.bin" + even +Solid_DPZ: binclude "Levels/DPZ/Collision/1.bin" + even +Solid_CGZ: binclude "Levels/CGZ/Collision/1.bin" + even +Solid_EMZ: binclude "Levels/EMZ/Collision/1.bin" + even +Solid_Gumball_Special: + binclude "Levels/Gumball/Collision/1.bin" + even +Layout_AIZ1: binclude "Levels/AIZ/Layout/1.bin" + even +Layout_AIZ2: binclude "Levels/AIZ/Layout/2.bin" + even +Layout_HCZ1: binclude "Levels/HCZ/Layout/1.bin" + even +Layout_HCZ2: binclude "Levels/HCZ/Layout/2.bin" + even +Layout_MGZ1: binclude "Levels/MGZ/Layout/1.bin" + even +Layout_MGZ2: binclude "Levels/MGZ/Layout/2.bin" + even +Layout_CNZ1: binclude "Levels/CNZ/Layout/1.bin" + even +Layout_CNZ2: binclude "Levels/CNZ/Layout/2.bin" + even +Layout_ICZ1: binclude "Levels/ICZ/Layout/1.bin" + even +Layout_ICZ2: binclude "Levels/ICZ/Layout/2.bin" + even +Layout_LBZ1: binclude "Levels/LBZ/Layout/1.bin" + even +Layout_LBZ2: binclude "Levels/LBZ/Layout/2.bin" + even +Layout_ALZ: binclude "Levels/ALZ/Layout/1.bin" + even +Layout_BPZ: binclude "Levels/BPZ/Layout/1.bin" + even +Layout_DPZ: binclude "Levels/DPZ/Layout/1.bin" + even +Layout_CGZ: binclude "Levels/CGZ/Layout/1.bin" + even +Layout_EMZ: binclude "Levels/EMZ/Layout/1.bin" + even +Layout_Gumball_Special: + binclude "Levels/Gumball/Layout/1.bin" + even +ArtUnc_CNZCannon: + binclude "General/Sprites/CNZ Cannon/CNZ Cannon.bin" + even +ArtUnc_SStageTails: + binclude "General/Sprites/Tails/Art/SStage Tails.bin" + even +Map_SStageTails: + include "General/Sprites/Tails/Map - SStage Tails.asm" + +ArtUnc_SStageTailstails: + binclude "General/Sprites/Tails/Art/SStage Tails tails.bin" + even +Map_SStageTailstails: + include "General/Sprites/Tails/Map - SStage Tails tails.asm" + +Map_Sonic2P: + include "General/Sprites/Sonic/Map - Sonic 2P.asm" +PLC_Sonic2P: + include "General/Sprites/Sonic/DPLC - Sonic 2P.asm" +Map_Tails2P: + include "General/Sprites/Tails/Map - Tails 2P.asm" +Map_Tails2P_Tail: + include "General/Sprites/Tails/Map - Tails tail 2P.asm" +PLC_Tails2P: + include "General/Sprites/Tails/DPLC - Tails 2P.asm" +DPLC_Tails2P_Tail: + include "General/Sprites/Tails/DPLC - Tails tails 2P.asm" +Map_Knuckles2P: + include "General/Sprites/Knuckles/Map - Knuckles 2P.asm" +PLC_Knuckles2P: + include "General/Sprites/Knuckles/DPLC - Knuckles 2P.asm" -MapUnc_CompetitionNumbers: binclude "General/Competition Menu/Uncompressed Map/Numbers.bin" - even -Pal_Competition2: binclude "General/Competition Menu/Palettes/2.bin" - even -Pal_Competition3: binclude "General/Competition Menu/Palettes/3.bin" - even -Pal_Competition4: binclude "General/Competition Menu/Palettes/4.bin" - even -Map_CompetitionSelect: include "General/Competition Menu/Map - Competition Select.asm" - -Pal_CompetitionResults: binclude "General/Competition Menu/Palettes/Results.bin" - even -MapEni_CompetitionResultsLED: binclude "General/Competition Menu/Enigma Map/Menu.bin" - even -MapUnc_CompetitionResultsLetters:binclude "General/Competition Menu/Uncompressed Map/Results Letters.bin" - even -MapUnc_CompetitionResultsDividers:binclude "General/Competition Menu/Uncompressed Map/Results Dividers.bin" - even -MapUnc_CompetitionResultsTOTAL: binclude "General/Competition Menu/Uncompressed Map/Results TOTAL.bin" - even -MapUnc_ResultsWin: binclude "General/Competition Menu/Uncompressed Map/Results Win.bin" - even -MapUnc_ResultsLose: binclude "General/Competition Menu/Uncompressed Map/Results Lose.bin" - even -MapUnc_ResultsTie: binclude "General/Competition Menu/Uncompressed Map/Results Tie.bin" - even -Pal_CompetitionTimeAttack: binclude "General/Competition Menu/Palettes/Time Attack.bin" - even -MapUnc_CompetitionLAPNum: binclude "General/Competition Menu/Uncompressed Map/LAP.bin" - even -MapUnc_CompetitionRECORDS: binclude "General/Competition Menu/Uncompressed Map/RECORDS.bin" - even -MapUnc_Competition1st2nd3rd: binclude "General/Competition Menu/Uncompressed Map/1ST 2ND 3RD.bin" - even -MapUnc_CompetitionAZURELAKE: binclude "General/Competition Menu/Uncompressed Map/AZURE LAKE.bin" - even -MapUnc_CompetitionBALLOONPARK: binclude "General/Competition Menu/Uncompressed Map/BALLOON PARK.bin" - even -MapUnc_CompetitionCHROMEGADGET: binclude "General/Competition Menu/Uncompressed Map/CHROME GADGET.bin" - even -MapUnc_CompetitionDESERTPALACE: binclude "General/Competition Menu/Uncompressed Map/DESERT PALACE.bin" - even -MapUnc_CompetitionENDLESSMINE: binclude "General/Competition Menu/Uncompressed Map/ENDLESS MINE.bin" - even -ArtKos_SaveScreenS3Zone: binclude "General/Save Menu/Kosinski Art/Zone Art.bin" - even -Map_AIZ1Tree: include "Levels/AIZ/Misc Object Data/Map - Act 1 Tree.asm" - -Map_AIZ1ZiplinePeg: include "Levels/AIZ/Misc Object Data/Map - Act 1 Zipline Peg.asm" - -Map_HCZBreakableBar: include "Levels/HCZ/Misc Object Data/Map - Breakable Bar.asm" - -Map_HCZBlock: include "Levels/HCZ/Misc Object Data/Map - Block.asm" - -Map_AIZRock: include "Levels/AIZ/Misc Object Data/Map - Rock.asm" - -Map_AIZRock2: include "Levels/AIZ/Misc Object Data/Map - Rock 2.asm" - -Map_EMZRock: include "Levels/EMZ/Misc Object Data/Map - Rock.asm" - -Map_AIZCollapsingPlatform: include "Levels/AIZ/Misc Object Data/Map - Collapsing Platform.asm" - -Map_AIZCollapsingPlatform2: include "Levels/AIZ/Misc Object Data/Map - Collapsing Platform 2.asm" - -Map_LBZCollapsingBridge: include "Levels/LBZ/Misc Object Data/Map - Collapsing Bridge.asm" - -Map_LBZCollapsingLedge: include "Levels/LBZ/Misc Object Data/Map - Collapsing Ledge.asm" - -Map_HCZCollapsingBridge: include "Levels/HCZ/Misc Object Data/Map - Collapsing Bridge.asm" - -Map_MGZCollapsingBridge: include "Levels/MGZ/Misc Object Data/Map - Collapsing Bridge.asm" - -Map_ICZCollapsingBridge: include "Levels/ICZ/Misc Object Data/Map - Collapsing Bridge.asm" - -Map_AIZBreakableWall: include "Levels/AIZ/Misc Object Data/Map - Breakable Wall.asm" - -Map_MGZBreakableWall: include "Levels/MGZ/Misc Object Data/Map - Breakable Wall.asm" - -Map_HCZBreakableWall: include "Levels/HCZ/Misc Object Data/Map - Breakable Wall.asm" - -Map_LBZBreakableWall: include "Levels/LBZ/Misc Object Data/Map - Breakable Wall.asm" - -Map_AIZIntroWaves: include "Levels/AIZ/Misc Object Data/Map - Intro Waves.asm" - -Map_LBZUnusedElevator: include "Levels/LBZ/Misc Object Data/Map - Unused Elevator.asm" - -Map_LBZExplodingTrigger: include "Levels/LBZ/Misc Object Data/Map - Exploding Trigger.asm" - -Map_MGZDashTrigger: include "Levels/MGZ/Misc Object Data/Map - Dash Trigger.asm" - -Map_LBZTriggerBridge: include "Levels/LBZ/Misc Object Data/Map - Trigger Bridge.asm" - -Map_LBZPlayerLauncher: include "Levels/LBZ/Misc Object Data/Map - Player Launcher.asm" - -Map_LBZFlameThrower: include "Levels/LBZ/Misc Object Data/Map - Flame Thrower.asm" - -Map_LBZCupElevator: include "Levels/LBZ/Misc Object Data/Map - Cup Elevator.asm" - -Map_LBZUnusedTiltingBridge: include "Levels/LBZ/Misc Object Data/Map - Unused Tilting Bridge.asm" - -Map_LBZPipePlug: include "Levels/LBZ/Misc Object Data/Map - PipePlug.asm" - -Map_LBZSpinLauncher: include "Levels/LBZ/Misc Object Data/Map - Spin Launcher.asm" - -Map_LBZLoweringGrapple: include "Levels/LBZ/Misc Object Data/Map - Lowering Grapple.asm" - -Map_LBZSmashingSpikes: include "Levels/LBZ/Misc Object Data/Map - Smashing Spikes.asm" - -Map_MGZSmashingPillar: include "Levels/MGZ/Misc Object Data/Map - Smashing Pillar.asm" - -Map_LBZGateLaser: include "Levels/LBZ/Misc Object Data/Map - Gate Laser.asm" - -Map_LBZTubeElevator: include "Levels/LBZ/Misc Object Data/Map - Tube Elevator.asm" - -Map_AIZDisappearingFloor: include "Levels/AIZ/Misc Object Data/Map - Disappearing Floor.asm" - -Map_AIZCorkFloor: include "Levels/AIZ/Misc Object Data/Map - Cork Floor.asm" - -Map_AIZCorkFloor2: include "Levels/AIZ/Misc Object Data/Map - Cork Floor 2.asm" - -Map_CNZCorkFloor: include "Levels/CNZ/Misc Object Data/Map - Cork Floor.asm" - -Map_ICZCorkFloor: include "Levels/ICZ/Misc Object Data/Map - Cork Floor.asm" - -Map_LBZCorkFloor: include "Levels/LBZ/Misc Object Data/Map - Cork Floor.asm" - -Map_AIZFlippingBridge: include "Levels/AIZ/Misc Object Data/Map - Flipping Bridge.asm" - -Map_AIZFallingLog2: include "Levels/AIZ/Misc Object Data/Map - Falling Log 2.asm" - -Map_AIZFallingLog: include "Levels/AIZ/Misc Object Data/Map - Falling Log.asm" - -Map_AIZFallingLogSplash2: include "Levels/AIZ/Misc Object Data/Map - Falling Log Splash 2.asm" - -Map_AIZFallingLogSplash: include "Levels/AIZ/Misc Object Data/Map - Falling Log Splash.asm" - -Map_AIZSpikedLog: include "Levels/AIZ/Misc Object Data/Map - Spiked Log.asm" - -Map_AIZForegroundPlant: include "Levels/AIZ/Misc Object Data/Map - Foreground Plant.asm" - -Map_Button2: include "General/Sprites/Buttons/Map - Button 2.asm" - -Map_CNZButton: include "Levels/CNZ/Misc Object Data/Map - Button.asm" - -Map_2PButton: include "General/2P Zone/Map - 2P Button.asm" - -Map_HCZWaterRush: include "Levels/HCZ/Misc Object Data/Map - Water Rush.asm" - -Map_HCZWaterRushBlock: include "Levels/HCZ/Misc Object Data/Map - Water Rush Block.asm" - -Map_HCZWaterWall: include "Levels/HCZ/Misc Object Data/Map - Waterfall.asm" - -Map_HCZWaterWallDebris: include "Levels/HCZ/Misc Object Data/Map - Water Wall Debris.asm" - -Map_HCZFan: include "Levels/HCZ/Misc Object Data/Map - Fan.asm" - -Map_HCZLargeFan: include "Levels/HCZ/Misc Object Data/Map - Large Fan.asm" - -Map_CGZFan: include "Levels/CGZ/Misc Object Data/Map - Fan.asm" - -Map_HCZHandLauncher: include "Levels/HCZ/Misc Object Data/Map - Hand Launcher.asm" - -Map_HCZConveyorSpike: include "Levels/HCZ/Misc Object Data/Map - Conveyor Spike.asm" - -Map_CNZBalloon: include "Levels/CNZ/Misc Object Data/Map - Balloon.asm" - -Map_CNZCannon: include "General/Sprites/CNZ Cannon/Map - CNZ Cannon.asm" - -Map_CNZRisingPlatform: include "Levels/CNZ/Misc Object Data/Map - Rising Platform.asm" - -Map_CNZTrapDoor: include "Levels/CNZ/Misc Object Data/Map - Trap Door.asm" - -Map_CNZLightBulb: include "Levels/CNZ/Misc Object Data/Map - Light Bulb.asm" - -Map_CNZHoverFan: include "Levels/CNZ/Misc Object Data/Map - Hover Fan.asm" - -Map_CNZCylinder: include "Levels/CNZ/Misc Object Data/Map - Cylinder.asm" - -Map_HCZSpinningColumn: include "Levels/HCZ/Misc Object Data/Map - Spinning Column.asm" - -Map_Bumper: include "General/Sprites/Level Misc/Map - Bumper.asm" - -Map_2PBumper: include "General/2P Zone/Map - 2P Bumper.asm" - -Map_MGZSwingingPlatform: include "Levels/MGZ/Misc Object Data/Map - Swinging Platform.asm" - -Map_MGZSwingingSpikeBall: include "Levels/MGZ/Misc Object Data/Map - Swinging Spike Ball.asm" - -Map_MGZHeadTrigger: include "Levels/MGZ/Misc Object Data/Map - Head Trigger.asm" - -Map_MGZTriggerPlatform: include "Levels/MGZ/Misc Object Data/Map - Trigger Platform.asm" - -Map_MGZMovingSpikePlatform: include "Levels/MGZ/Misc Object Data/Map - Moving Spike Platform.asm" - -Map_MGZPulley: include "Levels/MGZ/Misc Object Data/Map - Pulley.asm" - -Map_HCZWaterDrop: include "Levels/HCZ/Misc Object Data/Map - Water Drop.asm" - -Map_HCZWaterSplash: include "Levels/HCZ/Misc Object Data/Map - Water Splash.asm" - -Map_HCZWaterSplash2: include "Levels/HCZ/Misc Object Data/Map - Water Splash 2.asm" - - include "Lockon S3/Screen Events.asm" - -Map_S3EndingGraphics: include "General/Ending/Map - S3 Ending Graphics.asm" - -ArtNem_S3EndingGraphics: binclude "General/Ending/Nemesis Art/S3 Ending Graphics.bin" - even -SStageLayoutPtrs: dc.l SStage1_Layout - dc.l SStage2_Layout - dc.l SStage3_Layout - dc.l SStage4_Layout - dc.l SStage5_Layout - dc.l SStage6_Layout - dc.l SStage7_Layout - dc.l SStage8_Layout - -SStage1_Layout: binclude "General/Special Stage/Layout/S3 1.bin" - even -SStage2_Layout: binclude "General/Special Stage/Layout/S3 2.bin" - even -SStage3_Layout: binclude "General/Special Stage/Layout/S3 3.bin" - even -SStage4_Layout: binclude "General/Special Stage/Layout/S3 4.bin" - even -SStage5_Layout: binclude "General/Special Stage/Layout/S3 5.bin" - even -SStage6_Layout: binclude "General/Special Stage/Layout/S3 6.bin" - even -SStage7_Layout: binclude "General/Special Stage/Layout/S3 7.bin" - even -SStage8_Layout: binclude "General/Special Stage/Layout/S3 8.bin" - even -HCZ_WaterlineScroll_Data: binclude "Levels/HCZ/Misc/HCZ Waterline Scroll Data.bin" - even -LBZ_WaterlineScroll_Data: binclude "Levels/LBZ/Misc/LBZ Waterline Scroll Data.bin" - even -Solid_AIZ1: binclude "Levels/AIZ/Collision/1.bin" - even -Solid_AIZ2: binclude "Levels/AIZ/Collision/2.bin" - even -Solid_HCZ1: binclude "Levels/HCZ/Collision/1.bin" - even -Solid_HCZ2: binclude "Levels/HCZ/Collision/2.bin" - even -Solid_MGZ1: binclude "Levels/MGZ/Collision/1.bin" - even -Solid_MGZ2: binclude "Levels/MGZ/Collision/2.bin" - even -Solid_CNZ: binclude "Levels/CNZ/Collision/1.bin" - even -Solid_ICZ1: binclude "Levels/ICZ/Collision/1.bin" - even -Solid_ICZ2: binclude "Levels/ICZ/Collision/2.bin" - even -Solid_LBZ1: binclude "Levels/LBZ/Collision/1.bin" - even -Solid_LBZ2: binclude "Levels/LBZ/Collision/2.bin" - even -Solid_ALZ: binclude "Levels/ALZ/Collision/1.bin" - even -Solid_BPZ: binclude "Levels/BPZ/Collision/1.bin" - even -Solid_DPZ: binclude "Levels/DPZ/Collision/1.bin" - even -Solid_CGZ: binclude "Levels/CGZ/Collision/1.bin" - even -Solid_EMZ: binclude "Levels/EMZ/Collision/1.bin" - even -Solid_Gumball_Special: binclude "Levels/Gumball/Collision/1.bin" - even -Layout_AIZ1: binclude "Levels/AIZ/Layout/1.bin" - even -Layout_AIZ2: binclude "Levels/AIZ/Layout/2.bin" - even -Layout_HCZ1: binclude "Levels/HCZ/Layout/1.bin" - even -Layout_HCZ2: binclude "Levels/HCZ/Layout/2.bin" - even -Layout_MGZ1: binclude "Levels/MGZ/Layout/1.bin" - even -Layout_MGZ2: binclude "Levels/MGZ/Layout/2.bin" - even -Layout_CNZ1: binclude "Levels/CNZ/Layout/1.bin" - even -Layout_CNZ2: binclude "Levels/CNZ/Layout/2.bin" - even -Layout_ICZ1: binclude "Levels/ICZ/Layout/1.bin" - even -Layout_ICZ2: binclude "Levels/ICZ/Layout/2.bin" - even -Layout_LBZ1: binclude "Levels/LBZ/Layout/1.bin" - even -Layout_LBZ2: binclude "Levels/LBZ/Layout/2.bin" - even -Layout_ALZ: binclude "Levels/ALZ/Layout/1.bin" - even -Layout_BPZ: binclude "Levels/BPZ/Layout/1.bin" - even -Layout_DPZ: binclude "Levels/DPZ/Layout/1.bin" - even -Layout_CGZ: binclude "Levels/CGZ/Layout/1.bin" - even -Layout_EMZ: binclude "Levels/EMZ/Layout/1.bin" - even -Layout_Gumball_Special: binclude "Levels/Gumball/Layout/1.bin" - even -ArtUnc_CNZCannon: binclude "General/Sprites/CNZ Cannon/CNZ Cannon.bin" - even -ArtUnc_SStageTails: binclude "General/Sprites/Tails/Art/SStage Tails.bin" - even -Map_SStageTails: include "General/Sprites/Tails/Map - SStage Tails.asm" - -ArtUnc_SStageTailstails: binclude "General/Sprites/Tails/Art/SStage Tails tails.bin" - even -Map_SStageTailstails: include "General/Sprites/Tails/Map - SStage Tails tails.asm" - -Map_Sonic2P: include "General/Sprites/Sonic/Map - Sonic 2P.asm" - -PLC_Sonic2P: include "General/Sprites/Sonic/DPLC - Sonic 2P.asm" - -Map_Tails2P: include "General/Sprites/Tails/Map - Tails 2P.asm" - -Map_Tails2P_Tail: include "General/Sprites/Tails/Map - Tails tail 2P.asm" - -PLC_Tails2P: include "General/Sprites/Tails/DPLC - Tails 2P.asm" - -DPLC_Tails2P_Tail: include "General/Sprites/Tails/DPLC - Tails tails 2P.asm" - -Map_Knuckles2P: include "General/Sprites/Knuckles/Map - Knuckles 2P.asm" - -PLC_Knuckles2P: include "General/Sprites/Knuckles/DPLC - Knuckles 2P.asm" align $20 -ArtUnc_AniAIZ1_0: binclude "Levels/AIZ/Animated Tiles/Act1 0.bin" - even -ArtUnc_AniAIZ1_1: binclude "Levels/AIZ/Animated Tiles/Act1 1.bin" - even -ArtUnc_AniAIZ2_1: binclude "Levels/AIZ/Animated Tiles/Act2 1.bin" - even -ArtUnc_AniAIZ2_0: binclude "Levels/AIZ/Animated Tiles/Act2 0.bin" - even -ArtUnc_AniAIZ2_3: binclude "Levels/AIZ/Animated Tiles/Act2 3.bin" - even -ArtUnc_AniAIZ2_2: binclude "Levels/AIZ/Animated Tiles/Act2 2.bin" - even -ArtUnc_AniAIZ2_FirstTree: binclude "Levels/AIZ/Animated Tiles/Act2 First Tree.bin" - even -ArtUnc_AniHCZ1_0: binclude "Levels/HCZ/Animated Tiles/Act1 0.bin" - even -ArtUnc_AniHCZ1_WaterlineBelow: binclude "Levels/HCZ/Animated Tiles/Act1 Water Below 1.bin" - even -ArtUnc_FixHCZ1_UpperBG1: binclude "Levels/HCZ/Animated Tiles/Act1 Upper BG 1.bin" - even -ArtUnc_AniHCZ1_WaterlineAbove: binclude "Levels/HCZ/Animated Tiles/Act1 Water Above 1.bin" - even -ArtUnc_FixHCZ1_LowerBG1: binclude "Levels/HCZ/Animated Tiles/Act1 Lower BG 1.bin" - even -ArtUnc_AniHCZ1_WaterlineBelow2: binclude "Levels/HCZ/Animated Tiles/Act1 Water Below 2.bin" - even -ArtUnc_FixHCZ1_UpperBG2: binclude "Levels/HCZ/Animated Tiles/Act1 Upper BG 2.bin" - even -ArtUnc_AniHCZ1_WaterlineAbove2: binclude "Levels/HCZ/Animated Tiles/Act1 Water Above 2.bin" - even -ArtUnc_FixHCZ1_LowerBG2: binclude "Levels/HCZ/Animated Tiles/Act1 Lower BG 2.bin" - even -ArtUnc_AniHCZ__1: binclude "Levels/HCZ/Animated Tiles/0.bin" - even -ArtUnc_AniHCZ2_0: binclude "Levels/HCZ/Animated Tiles/Act2 0.bin" - even -ArtUnc_AniHCZ2_SmallBGLine: binclude "Levels/HCZ/Animated Tiles/Act2 1.bin" - even -ArtUnc_AniHCZ2_2: binclude "Levels/HCZ/Animated Tiles/Act2 2.bin" - even -ArtUnc_AniHCZ2_3: binclude "Levels/HCZ/Animated Tiles/Act2 3.bin" - even -ArtUnc_AniHCZ2_4: binclude "Levels/HCZ/Animated Tiles/Act2 4.bin" - even -ArtUnc_AniMGZ__0: binclude "Levels/MGZ/Animated Tiles/MGZ Animated 0.bin" - even -ArtUnc_AniMGZ__1: binclude "Levels/MGZ/Animated Tiles/MGZ Animated 1.bin" - even -ArtUnc_AniCNZ__0: binclude "Levels/CNZ/Animated Tiles/0.bin" - even -ArtUnc_AniCNZ__1: binclude "Levels/CNZ/Animated Tiles/1.bin" - even -ArtUnc_AniCNZ__2: binclude "Levels/CNZ/Animated Tiles/2.bin" - even -ArtUnc_AniCNZ__3: binclude "Levels/CNZ/Animated Tiles/3.bin" - even -ArtUnc_AniCNZ__4: binclude "Levels/CNZ/Animated Tiles/4.bin" - even -ArtUnc_AniCNZ__6: binclude "Levels/CNZ/Animated Tiles/6.bin" - even -ArtUnc_AniCNZ__5: binclude "Levels/CNZ/Animated Tiles/5.bin" - even -ArtUnc_AniICZ__1: binclude "Levels/ICZ/Animated Tiles/1.bin" - even -ArtUnc_AniICZ__2: binclude "Levels/ICZ/Animated Tiles/2.bin" - even -ArtUnc_AniICZ__3: binclude "Levels/ICZ/Animated Tiles/3.bin" - even -ArtUnc_AniICZ__4: binclude "Levels/ICZ/Animated Tiles/4.bin" - even -ArtUnc_AniICZ__5: binclude "Levels/ICZ/Animated Tiles/5.bin" - even -ArtUnc_AniICZ__0: binclude "Levels/ICZ/Animated Tiles/0.bin" - even -ArtUnc_AniLBZ1_0: binclude "Levels/LBZ/Animated Tiles/Act1 0.bin" - even -ArtUnc_AniLBZ1_1: binclude "Levels/LBZ/Animated Tiles/Act1 1.bin" - even -ArtUnc_AniLBZ1_2: binclude "Levels/LBZ/Animated Tiles/Act1 2.bin" - even -ArtUnc_AniLBZ2_2: binclude "Levels/LBZ/Animated Tiles/Act2 2.bin" - even -ArtUnc_AniLBZ2_WaterlineBelow: binclude "Levels/LBZ/Animated Tiles/Act2 Water Below.bin" - even -ArtUnc_AniLBZ2_LowerBG: binclude "Levels/LBZ/Animated Tiles/Act2 Lower BG.bin" - even -ArtUnc_AniLBZ2_WaterlineAbove: binclude "Levels/LBZ/Animated Tiles/Act2 Water Above.bin" - even -ArtUnc_AniLBZ2_UpperBG: binclude "Levels/LBZ/Animated Tiles/Act2 Upper BG.bin" - even -ArtUnc_AniLBZ__0: binclude "Levels/LBZ/Animated Tiles/0.bin" - even -ArtUnc_AniLBZ2_0: binclude "Levels/LBZ/Animated Tiles/Act2 0.bin" - even -ArtUnc_AniLBZ2_1: binclude "Levels/LBZ/Animated Tiles/Act2 1.bin" - even -ArtUnc_AniALZ: binclude "Levels/ALZ/Animated Tiles/0.bin" - even -ArtUnc_AniBPZ__0: binclude "Levels/BPZ/Animated Tiles/0.bin" - even -ArtUnc_AniBPZ__1: binclude "Levels/BPZ/Animated Tiles/1.bin" - even -ArtUnc_AniBPZ__2: binclude "Levels/BPZ/Animated Tiles/2.bin" - even -ArtUnc_AniBPZ__3: binclude "Levels/BPZ/Animated Tiles/3.bin" - even -ArtUnc_AniDPZ: binclude "Levels/DPZ/Animated Tiles/0.bin" - even -ArtUnc_AniDPZ__BG: binclude "Levels/DPZ/Animated Tiles/BG 0.bin" - even -ArtUnc_AniGumball: binclude "Levels/Gumball/Animated Tiles/0.bin" - even -ArtUnc_SplashDrown: binclude "General/Sprites/Dash Dust/Splash Drown.bin" - even -ArtNem_Title_SonicSprites: binclude "General/Title/Nemesis Art/S3 Sonic Sprites.bin" - even -DemoDat_AIZ: binclude "Levels/AIZ/Demodata/1.bin" - even -DemoDat_HCZ: binclude "Levels/HCZ/Demodata/1.bin" - even -DemoDat_MGZ: binclude "Levels/MGZ/Demodata/1.bin" - even -ArtUnc_Tails: binclude "General/Sprites/Tails/Art/Tails.bin" - even -ArtUnc_Tails_Tail: binclude "General/Sprites/Tails/Art/Tails tails.bin" - even -ArtUnc_Sonic2P: binclude "General/Sprites/Sonic/Art/Sonic 2P.bin" - even -ArtUnc_Tails2P: binclude "General/Sprites/Tails/Art/Tails 2P.bin" - even -ArtUnc_Tails2P_Tail: binclude "General/Sprites/Tails/Art/Tails tails 2P.bin" - even -ArtUnc_Knuckles2P: binclude "General/Sprites/Knuckles/Art/Knuckles 2P.bin" - even -Map_Tails_Tail: include "General/Sprites/Tails/Map - Tails tails.asm" - -PLC_Tails_Tail: include "General/Sprites/Tails/Tails tails pattern load cues.asm" - -ICZSnowboard_Slope1: binclude "Levels/ICZ/Misc/ICZ Snowboard Slope 1.bin" - even -ICZSnowboard_Slope2: binclude "Levels/ICZ/Misc/ICZ Snowboard Slope 2.bin" - even -ArtUnc_SonicSnowboard: binclude "General/Sprites/Sonic/Art/Sonic Snowboarding.bin" - even -ArtUnc_Snowboard: binclude "General/Sprites/Snowboard/Snowboard.bin" - even -Map_SonicSnowboard: include "General/Sprites/Sonic/Map - Sonic Snowboarding.asm" - -DPLC_SonicSnowboard: include "General/Sprites/Sonic/DPLC - Sonic Snowboarding.asm" - -Map_Snowboard: include "General/Sprites/Snowboard/Map - Snowboard.asm" - -DPLC_Snowboard: include "General/Sprites/Snowboard/DPLC - Snowboard.asm" - -ArtNem_AIZIntroSprites: binclude "Levels/AIZ/Nemesis Art/Intro Waves.bin" - even -ArtNem_2PDashdust: binclude "General/2P Zone/Nemesis Art/Spindash Dust.bin" - even -MapEni_S3TitleSonic1: binclude "General/Title/Enigma Map/S3 Sonic 1.bin" - even -MapEni_S3TitleSonic2: binclude "General/Title/Enigma Map/S3 Sonic 2.bin" - even -MapEni_S3TitleSonic3: binclude "General/Title/Enigma Map/S3 Sonic 3.bin" - even -MapEni_S3TitleSonic4: binclude "General/Title/Enigma Map/S3 Sonic 4.bin" - even -MapEni_S3TitleSonic5: binclude "General/Title/Enigma Map/S3 Sonic 5.bin" - even -MapEni_S3TitleSonic6: binclude "General/Title/Enigma Map/S3 Sonic 6.bin" - even -MapEni_S3TitleSonic7: binclude "General/Title/Enigma Map/S3 Sonic 7.bin" - even -MapEni_S3TitleSonic8: binclude "General/Title/Enigma Map/S3 Sonic 8.bin" - even -MapEni_S3TitleSonic9: binclude "General/Title/Enigma Map/S3 Sonic 9.bin" - even -MapEni_S3TitleSonicA: binclude "General/Title/Enigma Map/S3 Sonic A.bin" - even -MapEni_S3TitleSonicB: binclude "General/Title/Enigma Map/S3 Sonic B.bin" - even -MapEni_S3TitleSonicC: binclude "General/Title/Enigma Map/S3 Sonic C.bin" - even -MapEni_S3TitleSonicD: binclude "General/Title/Enigma Map/S3 Sonic D.bin" - even -MapEni_S3TitleBg: binclude "General/Title/Enigma Map/S3 BG.bin" - even -Map_S3TitleBanner: include "General/Title/Map - S3 Banner.asm" - -ArtNem_Title_S3Banner: binclude "General/Title/Nemesis Art/S3 Banner.bin" - even -ArtKos_S3TitleSonic1: binclude "General/Title/Kosinski Art/S3 Sonic 1.bin" - even -ArtKos_S3TitleSonic8: binclude "General/Title/Kosinski Art/S3 Sonic 8.bin" - even -ArtKos_S3TitleSonic9: binclude "General/Title/Kosinski Art/S3 Sonic 9.bin" - even -ArtKos_S3TitleSonicA: binclude "General/Title/Kosinski Art/S3 Sonic A.bin" - even -ArtKos_S3TitleSonicB: binclude "General/Title/Kosinski Art/S3 Sonic B.bin" - even -ArtKos_S3TitleSonicC: binclude "General/Title/Kosinski Art/S3 Sonic C.bin" - even -ArtKos_S3TitleSonicD: binclude "General/Title/Kosinski Art/S3 Sonic D.bin" - even -ArtNem_TailsLifeIcon: binclude "General/Sprites/HUD Icon/Tails Life Icon.bin" - even -Map_LBZMiniboss: include "Levels/LBZ/Misc Object Data/Map - Miniboss.asm" - -Map_LBZMinibossBox: include "Levels/LBZ/Misc Object Data/Map - Miniboss Box.asm" - -Map_SnaleBlaster: include "General/Sprites/Snale Blaster/Map - Snale Blaster.asm" - -Map_Orbinaut: include "General/Sprites/Orbinaut/Map - Orbinaut.asm" - -Map_Ribot: include "General/Sprites/Ribot/Map - Ribot.asm" - -Map_Corkey: include "General/Sprites/Corkey/Map - Corkey.asm" - -Map_Flybot767: include "General/Sprites/Flybot767/Map - Flybot767.asm" - -DPLC_Flybot767: include "General/Sprites/Flybot767/DPLC - Flybot767.asm" - -Map_LBZEndBoss: include "Levels/LBZ/Misc Object Data/Map - End Boss.asm" - -Map_CNZEndBoss: include "Levels/CNZ/Misc Object Data/Map - End Boss.asm" - -CNZEndBossMagnet_AngleX: dc.b 0, 1, 2, 3, 4, 5, 6, 8, 9, $A, $B, $C, $D, $E, $F, $10 - dc.b $11, $12, $13, $14, $15, $16, $17, $18, $18, $19, $1A, $1B, $1C, $1D, $1E, $1E - dc.b $1F, $20, $21, $21, $22, $23, $23, $24, $25, $25, $26, $26, $27, $27, $28, $28 - dc.b $29, $29, $29, $2A, $2A, $2A, $2B, $2B, $2B, $2B, $2C, $2C, $2C, $2C, $2C, $2C -LBZFinalBoss2_CircleLookup: dc.b 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, $A, $B, $C, $D, $D, $E - dc.b $F, $10, $11, $12, $13, $14, $15, $15, $16, $17, $18, $19, $19, $1A, $1B, $1C - dc.b $1C, $1D, $1E, $1E, $1F, $20, $20, $21, $21, $22, $22, $23, $23, $24, $24, $25 - dc.b $25, $25, $26, $26, $26, $27, $27, $27, $27, $27, $28, $28, $28, $28, $28, $28 - -Map_Blastoid: include "General/Sprites/Blastoid/Map - Blastoid.asm" - -Map_Poindexter: include "General/Sprites/Pointdexter/Map - Pointdexter.asm" - -Map_Buggernaut: include "General/Sprites/Buggernaut/Map - Buggernaut.asm" - -Map_MegaChopper: include "General/Sprites/Mega Chopper/Map - Mega Chopper.asm" - -Map_TurboSpiker: include "General/Sprites/Turbo Spiker/Map - Turbo Spiker.asm" - -Map_Jawz: include "General/Sprites/Jawz/Map - Jawz.asm" - -DPLC_Rhinobot: include "General/Sprites/Rhinobot/DPLC - Rhinobot.asm" - -Map_Rhinobot: include "General/Sprites/Rhinobot/Map - Rhinobot.asm" - -Map_AIZMinibossFlame: include "Levels/AIZ/Misc Object Data/Map - Miniboss Flame.asm" - -Map_Bloominator: include "General/Sprites/Bloominator/Map - Bloominator.asm" - -Map_MonkeyDude: include "General/Sprites/Monkey Dude/Map - Monkey Dude.asm" - -Map_MGZMiniboss: include "Levels/MGZ/Misc Object Data/Map - Miniboss.asm" - -Map_CaterKillerJr: include "General/Sprites/Caterkiller Jr/Map - Caterkiller Jr.asm" - -DPLC_Clamer: include "General/Sprites/Clamer/DPLC - Clamer.asm" -Map_Clamer: include "General/Sprites/Clamer/Map - Clamer.asm" - -Map_Sparkle: include "General/Sprites/Sparkle/Map - Sparkle.asm" - -Map_Batbot: include "General/Sprites/Batbot/Map - Batbot.asm" - -DPLC_BubblesBadnik: include "General/Sprites/Bubbles Badnik/DPLC - Bubbles Badnik.asm" - -Map_BubblesBadnik: include "General/Sprites/Bubbles Badnik/Map - Bubbles Badnik.asm" - -Map_Spiker: include "General/Sprites/Spiker/Map - Spiker.asm" - -Map_Mantis: include "General/Sprites/Mantis/Map - Mantis.asm" - -DPLC_Penguinator: include "General/Sprites/Penguinator/DPLC - Penguinator.asm" - -Map_Penguinator: include "General/Sprites/Penguinator/Map - Penguinator.asm" - -Map_ICZSnowdust: include "Levels/ICZ/Misc Object Data/Map - Snowdust.asm" - -Map_StarPointer: include "General/Sprites/Star Pointer/Map - Star Pointer.asm" - -Map_AIZEndBoss: include "Levels/AIZ/Misc Object Data/Map - End Boss.asm" - -Map_AIZMiniboss: include "Levels/AIZ/Misc Object Data/Map - Miniboss.asm" - -Map_AIZMinibossSmall: include "Levels/AIZ/Misc Object Data/Map - Miniboss Small.asm" - -Map_MGZEndBoss: include "Levels/MGZ/Misc Object Data/Map - End Boss.asm" - -HCZMiniboss_RocketTwistLookup: dc.b $18, $18, $18, $18, $18, $18, $18, $18, $18, $17, $17, $17, $17, $17, $17, $16 - dc.b $16, $16, $16, $15, $15, $15, $15, $14, $14, $14, $13, $13, $13, $12, $12, $11 - dc.b $11, $11, $10, $10, $F, $F, $E, $E, $D, $D, $C, $C, $B, $B, $A, $A - dc.b 9, 9, 8, 8, 7, 6, 6, 5, 5, 4, 4, 3, 2, 2, 1, 1 - dc.b 0, $FF, $FF, $FE, $FE, $FD, $FC, $FC, $FB, $FB, $FA, $FA, $F9, $F8, $F8, $F7 - dc.b $F7, $F6, $F6, $F5, $F5, $F4, $F4, $F3, $F3, $F2, $F2, $F1, $F1, $F0, $F0, $EF - dc.b $EF, $EF, $EE, $EE, $ED, $ED, $ED, $EC, $EC, $EC, $EB, $EB, $EB, $EB, $EA, $EA - dc.b $EA, $EA, $E9, $E9, $E9, $E9, $E9, $E9, $E8, $E8, $E8, $E8, $E8, $E8, $E8, $E8 -LBZ2FinalBoss2_CircleLookup2: dc.b 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7 - dc.b 8, 8, 9, 9, 9, $A, $A, $B, $B, $C, $C, $C, $D, $D, $D, $E - dc.b $E, $E, $F, $F, $F, $10, $10, $10, $11, $11, $11, $11, $12, $12, $12, $12 - dc.b $12, $13, $13, $13, $13, $13, $13, $14, $14, $14, $14, $14, $14, $14, $14, $14 - -Map_HCZMiniboss: include "Levels/HCZ/Misc Object Data/Map - Miniboss.asm" - -Map_HCZMinibossSplash: include "Levels/HCZ/Misc Object Data/Map - Miniboss Splash.asm" - -DPLC_HCZMinibossSplash: include "Levels/HCZ/Misc Object Data/DPLC - Miniboss Splash.asm" - -Map_ICZEndBoss: include "Levels/ICZ/Misc Object Data/Map - End Boss.asm" - -Map_CNZMiniboss: include "Levels/CNZ/Misc Object Data/Map - Miniboss.asm" - -ICZMiniboss_OrbAngleLookup: dc.b 0, 1, 2, 4, 5, 6, 7, 8, 9, $B, $C, $D, $E, $F, $10, $11 - dc.b $12, $13, $15, $16, $17, $18, $19, $1A, $1B, $1C, $1D, $1E, $1E, $1F, $20, $21 - dc.b $22, $23, $24, $24, $25, $26, $27, $27, $28, $29, $29, $2A, $2A, $2B, $2B, $2C - dc.b $2C, $2D, $2D, $2E, $2E, $2E, $2F, $2F, $2F, $2F, $2F, $30, $30, $30, $30, $30 - -Map_ICZMiniboss: include "Levels/ICZ/Misc Object Data/Map - Miniboss.asm" - -Map_HCZEndBoss: include "Levels/HCZ/Misc Object Data/Map - End Boss.asm" - -Map_MGZEndBossDebris: include "Levels/MGZ/Misc Object Data/Map - End Boss Debris.asm" - -Map_ICZWallAndColumn: include "Levels/ICZ/Misc Object Data/Map - Wall and Column.asm" - -Map_ICZPlatforms: include "Levels/ICZ/Misc Object Data/Map - Platforms.asm" - -Map_LBZKnuxBomb: include "Levels/LBZ/Misc Object Data/Map - Knuckles Bomb.asm" - -Map_CutsceneKnux: include "General/Sprites/Knuckles/Cutscene/Map - Cutscene Knuckles.asm" - -DPLC_CutsceneKnux: include "General/Sprites/Knuckles/Cutscene/DPLC - Cutscene Knuckles.asm" - -Map_AIZIntroPlane: include "Levels/AIZ/Misc Object Data/Map - Intro Plane.asm" - -Map_AIZIntroEmeralds: include "Levels/AIZ/Misc Object Data/Map - Intro Emeralds.asm" - -Map_LBZFinalBoss1: include "Levels/LBZ/Misc Object Data/Map - Final Boss 1.asm" - -Map_LBZDeathEggSmall: include "Levels/LBZ/Misc Object Data/Map - Death Egg Small.asm" - -Pal_MGZFadeCNZ: binclude "Levels/MGZ/Palettes/Fade to CNZ.bin" - even -Map_LBZFinalBoss2: include "Levels/LBZ/Misc Object Data/Map - Final Boss 2.asm" - -ArtNem_AIZMiniboss: binclude "Levels/AIZ/Nemesis Art/Miniboss.bin" - even -ArtKosM_AIZEndBoss: binclude "Levels/AIZ/KosinskiM Art/End Boss.bin" - even -ArtNem_AIZMinibossSmall: binclude "Levels/AIZ/Nemesis Art/Miniboss Small.bin" - even -ArtUnc_AIZRhinobot: binclude "General/Sprites/Rhinobot/Rhinobot.bin" - even -ArtKosM_AIZ_Bloominator: binclude "General/Sprites/Bloominator/Bloominator.bin" - even -ArtKosM_AIZ_MonkeyDude: binclude "General/Sprites/Monkey Dude/Monkey Dude.bin" - even -ArtKosM_AIZ_CaterkillerJr: binclude "General/Sprites/Caterkiller Jr/Caterkiller Jr.bin" - even -ArtNem_HCZMiniboss: binclude "Levels/HCZ/Nemesis Art/Miniboss.bin" - even -ArtNem_HCZEndBoss: binclude "Levels/HCZ/Nemesis Art/End Boss.bin" - even -ArtNem_HCZDragonfly: binclude "Levels/HCZ/Nemesis Art/Dragonfly.bin" - even -ArtKosM_Jawz: binclude "General/Sprites/Jawz/Jawz.bin" - even -ArtKosM_MegaChopper: binclude "General/Sprites/Mega Chopper/Mega Chopper.bin" - even -ArtKosM_Blastoid: binclude "General/Sprites/Blastoid/Blastoid.bin" - even -ArtKosM_TurboSpiker: binclude "General/Sprites/Turbo Spiker/Turbo Spiker.bin" - even -ArtKosM_Pointdexter: binclude "General/Sprites/Pointdexter/Pointdexter.bin" - even -ArtKosM_MGZMiniboss: binclude "Levels/MGZ/KosinskiM Art/Miniboss.bin" - even -ArtNem_MGZSpire: binclude "Levels/MGZ/Nemesis Art/Spire.bin" - even -ArtKosM_MGZEndBoss: binclude "Levels/MGZ/KosinskiM Art/End Boss.bin" - even -ArtScaled_MGZEndBoss: binclude "Levels/MGZ/Misc/MGZ End Boss Scaled.bin" - even -ArtKosM_MGZEndBossDebris: binclude "Levels/MGZ/KosinskiM Art/End Boss Debris.bin" - even -ArtUnc_BubblesBadnik: binclude "General/Sprites/Bubbles Badnik/Bubbles Badnik.bin" - even -ArtKosM_Spiker: binclude "General/Sprites/Spiker/Spiker.bin" - even -ArtKosM_Mantis: binclude "General/Sprites/Mantis/Mantis.bin" - even -ArtNem_CNZMiniboss: binclude "Levels/CNZ/Nemesis Art/Miniboss.bin" - even -ArtNem_CNZEndBoss: binclude "Levels/CNZ/Nemesis Art/End Boss.bin" - even -ArtUnc_Clamer: binclude "General/Sprites/Clamer/Clamer.bin" - even -ArtKosM_ClamerShot: binclude "General/Sprites/Clamer/Clamer Shot.bin" - even -ArtKosM_Sparkle: binclude "General/Sprites/Sparkle/Sparkle.bin" - even -ArtKosM_Batbot: binclude "General/Sprites/Batbot/Batbot.bin" - even -ArtKosM_CNZBalloon: binclude "Levels/CNZ/KosinskiM Art/Balloon.bin" - even -ArtNem_ICZMisc1: binclude "Levels/ICZ/Nemesis Art/Misc Art 1.bin" - even -ArtNem_ICZIntroSprites: binclude "Levels/ICZ/Nemesis Art/Intro Sprites.bin" - even -ArtNem_ICZMisc2: binclude "Levels/ICZ/Nemesis Art/Misc Art 2.bin" - even -ArtNem_ICZEndBoss: binclude "Levels/ICZ/Nemesis Art/End Boss.bin" - even -ArtNem_ICZMiniboss: binclude "Levels/ICZ/Nemesis Art/Miniboss.bin" - even -ArtUnc_Penguinator: binclude "General/Sprites/Penguinator/Penguinator.bin" - even -ArtKosM_ICZSnowdust: binclude "Levels/ICZ/KosinskiM Art/Snowdust.bin" - even -ArtKosM_StarPointer: binclude "General/Sprites/Star Pointer/Star Pointer.bin" - even -ArtKosM_LBZMiniboss: binclude "Levels/LBZ/KosinskiM Art/Miniboss.bin" - even -ArtKosM_LBZMinibossBox: binclude "Levels/LBZ/KosinskiM Art/Miniboss Box.bin" - even -ArtNem_LBZFinalBoss1: binclude "Levels/LBZ/Nemesis Art/Final Boss 1.bin" - even -ArtKosM_LBZEndBoss: binclude "Levels/LBZ/KosinskiM Art/End Boss.bin" - even -ArtKosM_LBZFinalBoss2: binclude "Levels/LBZ/KosinskiM Art/Final Boss 2.bin" - even -ArtKosM_SnaleBlaster: binclude "General/Sprites/Snale Blaster/Snale Blaster.bin" - even -ArtKosM_Ribot: binclude "General/Sprites/Ribot/Ribot.bin" - even -ArtKosM_Orbinaut: binclude "General/Sprites/Orbinaut/Orbinaut.bin" - even -ArtKosM_Corkey: binclude "General/Sprites/Corkey/Corkey.bin" - even -ArtUnc_Flybot767: binclude "General/Sprites/Flybot767/Flybot767.bin" - even -ArtNem_LBZKnuxBomb: binclude "Levels/LBZ/Nemesis Art/Knuckles Bomb.bin" - even -ArtKosM_LBZ2DeathEggSmall: binclude "Levels/LBZ/KosinskiM Art/Act 2 Death Egg Small.bin" - even -ArtKosM_LBZ2DeathEgg2_8x8: binclude "Levels/LBZ/Tiles/Act 2 Death Egg 2.bin" - even -ArtNem_AIZBossFire: binclude "Levels/AIZ/Nemesis Art/Miniboss Fire.bin" - even -ArtKosM_AIZIntroPlane: binclude "Levels/AIZ/KosinskiM Art/Intro Plane.bin" - even -ArtUnc_CutsceneKnux: binclude "General/Sprites/Knuckles/Cutscene/Cutscene Main.bin" - even -ArtKosM_AIZIntroEmeralds: binclude "Levels/AIZ/KosinskiM Art/Intro Emeralds.bin" - even -ArtKosM_TailsEndPose: binclude "General/Ending/KosinskiM Art/Tails Ending Pose.bin" - even -ArtNem_S38x16Font: binclude "General/Ending/Nemesis Art/S3 8x16 Font.bin" - even -ArtNem_AIZCorkFloor: binclude "Levels/AIZ/Nemesis Art/Cork Floor 1.bin" - even -ArtNem_AIZCorkFloor2: binclude "Levels/AIZ/Nemesis Art/Cork Floor 2.bin" - even -ArtNem_AIZSwingVine: binclude "Levels/AIZ/Nemesis Art/Swing Vine.bin" - even -ArtNem_AIZSlideRope: binclude "Levels/AIZ/Nemesis Art/Zip Vine.bin" - even -ArtNem_AIZBackgroundTree: binclude "Levels/AIZ/Nemesis Art/BG Tree.bin" - even -ArtNem_AIZMisc1: binclude "Levels/AIZ/Nemesis Art/Misc Art 1.bin" - even -ArtNem_AIZFallingLog: binclude "Levels/AIZ/Nemesis Art/Falling Log.bin" - even -ArtNem_AIZMisc2: binclude "Levels/AIZ/Nemesis Art/Misc Art 2.bin" - even -ArtNem_HCZSpikeBall: binclude "Levels/HCZ/Nemesis Art/Spike Ball.bin" - even -ArtNem_HCZWaveSplash: binclude "Levels/HCZ/Nemesis Art/Wave Splash.bin" - even -ArtNem_HCZButton: binclude "Levels/HCZ/Nemesis Art/Button.bin" - even -ArtNem_HCZMisc: binclude "Levels/HCZ/Nemesis Art/Misc Art.bin" - even -ArtNem_HCZWaterRush: binclude "Levels/HCZ/Nemesis Art/Water Rush.bin" - even -ArtKosM_HCZLargeFan: binclude "Levels/HCZ/KosinskiM Art/Large Fan.bin" - even -ArtKosM_HCZGeyserHorz: binclude "Levels/HCZ/KosinskiM Art/Geyser Horizontal.bin" - even -ArtKosM_HCZGeyserVert: binclude "Levels/HCZ/KosinskiM Art/Geyser Vertical.bin" - even -ArtNem_HCZ2Slide: binclude "Levels/HCZ/Nemesis Art/Act 2 Slide.bin" - even -ArtNem_HCZ2BlockPlat: binclude "Levels/HCZ/Nemesis Art/Act 2 Block Platform.bin" - even -ArtUnc_HCZWaterSplash2: binclude "Levels/HCZ/Animated Tiles/Water Splash 2.bin" - even -ArtUnc_HCZWaterSplash: binclude "Levels/HCZ/Animated Tiles/Water Splash.bin" - even -ArtNem_HCZ2KnuxWall: binclude "Levels/HCZ/Nemesis Art/Act 2 Knuckles Wall.bin" - even -ArtNem_MGZMisc1: binclude "Levels/MGZ/Nemesis Art/Misc Art 1.bin" - even -ArtNem_MGZMisc2: binclude "Levels/MGZ/Nemesis Art/Misc Art 2.bin" - even -ArtNem_MGZSigns: binclude "Levels/MGZ/Nemesis Art/Direction Signs.bin" - even -ArtNem_CNZMisc: binclude "Levels/CNZ/Nemesis Art/Misc Art.bin" - even -ArtNem_CNZPlatform: binclude "Levels/CNZ/Nemesis Art/Platform.bin" - even -ArtNem_LBZMisc: binclude "Levels/LBZ/Nemesis Art/Misc Art.bin" - even -ArtNem_LBZTubeTrans: binclude "Levels/LBZ/Nemesis Art/Tube Transport.bin" - even -ArtNem_LBZ2Misc: binclude "Levels/LBZ/Nemesis Art/Act 2 Misc Art.bin" - even -ArtNem_2PArt_1: binclude "General/2P Zone/Nemesis Art/Misc Art 1.bin" - even -ArtNem_2PArt_2: binclude "General/2P Zone/Nemesis Art/Misc Art 2.bin" - even -ArtNem_2PArt_3: binclude "General/2P Zone/Nemesis Art/Misc Art 3.bin" - even -ArtNem_2PStartPost: binclude "General/2P Zone/Nemesis Art/Start Post.bin" - even -ArtNem_2PTime: binclude "General/2P Zone/Nemesis Art/Time Display.bin" - even -ArtNem_2PLapNum: binclude "General/2P Zone/Nemesis Art/Lap Numbers.bin" - even -ArtNem_2PPosIcon: binclude "General/2P Zone/Nemesis Art/Position Icons.bin" - even -ArtNem_BPZMisc: binclude "Levels/BPZ/Nemesis Art/Misc Art.bin" - even -ArtNem_DPZMisc: binclude "Levels/DPZ/Nemesis Art/Misc Art.bin" - even -ArtNem_CGZMisc: binclude "Levels/CGZ/Nemesis Art/Platform.bin" - even -ArtNem_EMZMisc: binclude "Levels/EMZ/Nemesis Art/Misc Art.bin" - even -ArtKosM_AIZ2Bombership2_8x8: binclude "Levels/AIZ/Tiles/Act 2 Bombership 2.bin" - even -ArtKosM_ResultsMILES: binclude "General/Sprites/Results/Results MILES.bin" - even -ArtKosM_ResultsTAILS: binclude "General/Sprites/Results/Results TAILS.bin" - even -ArtKosM_AIZTitleCard: binclude "Levels/AIZ/KosinskiM Art/Title Card.bin" - even -ArtKosM_HCZTitleCard: binclude "Levels/HCZ/KosinskiM Art/Title Card.bin" - even -ArtKosM_MGZTitleCard: binclude "Levels/MGZ/KosinskiM Art/Title Card.bin" - even -ArtKosM_CNZTitleCard: binclude "Levels/CNZ/KosinskiM Art/Title Card.bin" - even -ArtKosM_ICZTitleCard: binclude "Levels/ICZ/KosinskiM Art/Title Card.bin" - even -ArtKosM_LBZTitleCard: binclude "Levels/LBZ/KosinskiM Art/Title Card.bin" - even -ArtKosM_ALZTitleCard: binclude "Levels/ALZ/KosinskiM Art/Title Card.bin" - even -ArtKosM_BPZTitleCard: binclude "Levels/BPZ/KosinskiM Art/Title Card.bin" - even -ArtKosM_CGZTitleCard: binclude "Levels/CGZ/KosinskiM Art/Title Card.bin" - even -ArtKosM_DPZTitleCard: binclude "Levels/DPZ/KosinskiM Art/Title Card.bin" - even -ArtKosM_EMZTitleCard: binclude "Levels/EMZ/KosinskiM Art/Title Card.bin" - even -Pal_SaveMenuBG: binclude "General/Save Menu/Palettes/BG.bin" - even -Pal_CompetitionMenuBG: binclude "General/Competition Menu/Palettes/BG.bin" - even -MapEni_S3MenuBG: binclude "General/Save Menu/Enigma Map/Menu BG.bin" - even -ArtKos_S3MenuBG: binclude "General/Save Menu/Kosinski Art/Menu BG.bin" - even -MapEni_CompetitionLevBorder: binclude "General/Competition Menu/Enigma Map/Level Border.bin" - even -MapUnc_CompetitionTimeBorder: binclude "General/Competition Menu/Uncompressed Map/Time Border.bin" - even -MapUnc_CompetitionBESTTIME: binclude "General/Competition Menu/Uncompressed Map/Time Text.bin" - even -MapEni_CompetitionLevImage: binclude "General/Competition Menu/Enigma Map/Level Images.bin" - even -MapEni_CompetitionLevName: binclude "General/Competition Menu/Enigma Map/Level Names.bin" - even -ArtKos_CompetitionMode: binclude "General/Competition Menu/Kosinski Art/Mode Select.bin" - even -ArtKos_CompetitionLevel: binclude "General/Competition Menu/Kosinski Art/Level Select.bin" - even -ArtKos_CompetitionResults: binclude "General/Competition Menu/Kosinski Art/Results.bin" - even -Map_CompetitionPlayerSprite: include "General/Competition Menu/Map - Competition Player Sprites.asm" - -ArtKos_CompetitionPlayer: binclude "General/Competition Menu/Kosinski Art/Player Sprites.bin" - even -MapEni_SaveScreen_Layout: binclude "General/Save Menu/Enigma Map/Save Screen Layout.bin" - even -MapUnc_SaveScreenNEW: binclude "General/Save Menu/Uncompressed Map/NEW.bin" - even -MapPtrs_SaveScreenStatic: dc.l MapUnc_SaveScreenStatic1 - dc.l MapUnc_SaveScreenStatic2 - dc.l MapUnc_SaveScreenStatic3 - dc.l MapUnc_SaveScreenStatic4 - -MapUnc_SaveScreenStatic1: binclude "General/Save Menu/Uncompressed Map/Static 1.bin" - even -MapUnc_SaveScreenStatic2: binclude "General/Save Menu/Uncompressed Map/Static 2.bin" - even -MapUnc_SaveScreenStatic3: binclude "General/Save Menu/Uncompressed Map/Static 3.bin" - even -MapUnc_SaveScreenStatic4: binclude "General/Save Menu/Uncompressed Map/Static 4.bin" - even -ArtKos_SaveScreenMisc: binclude "General/Save Menu/Kosinski Art/Misc.bin" - even +ArtUnc_AniAIZ1_0: + binclude "Levels/AIZ/Animated Tiles/Act1 0.bin" + even +ArtUnc_AniAIZ1_1: + binclude "Levels/AIZ/Animated Tiles/Act1 1.bin" + even +ArtUnc_AniAIZ2_1: + binclude "Levels/AIZ/Animated Tiles/Act2 1.bin" + even +ArtUnc_AniAIZ2_0: + binclude "Levels/AIZ/Animated Tiles/Act2 0.bin" + even +ArtUnc_AniAIZ2_3: + binclude "Levels/AIZ/Animated Tiles/Act2 3.bin" + even +ArtUnc_AniAIZ2_2: + binclude "Levels/AIZ/Animated Tiles/Act2 2.bin" + even +ArtUnc_AniAIZ2_FirstTree: + binclude "Levels/AIZ/Animated Tiles/Act2 First Tree.bin" + even +ArtUnc_AniHCZ1_0: + binclude "Levels/HCZ/Animated Tiles/Act1 0.bin" + even +ArtUnc_AniHCZ1_WaterlineBelow: + binclude "Levels/HCZ/Animated Tiles/Act1 Water Below 1.bin" + even +ArtUnc_FixHCZ1_UpperBG1: + binclude "Levels/HCZ/Animated Tiles/Act1 Upper BG 1.bin" + even +ArtUnc_AniHCZ1_WaterlineAbove: + binclude "Levels/HCZ/Animated Tiles/Act1 Water Above 1.bin" + even +ArtUnc_FixHCZ1_LowerBG1: + binclude "Levels/HCZ/Animated Tiles/Act1 Lower BG 1.bin" + even +ArtUnc_AniHCZ1_WaterlineBelow2: + binclude "Levels/HCZ/Animated Tiles/Act1 Water Below 2.bin" + even +ArtUnc_FixHCZ1_UpperBG2: + binclude "Levels/HCZ/Animated Tiles/Act1 Upper BG 2.bin" + even +ArtUnc_AniHCZ1_WaterlineAbove2: + binclude "Levels/HCZ/Animated Tiles/Act1 Water Above 2.bin" + even +ArtUnc_FixHCZ1_LowerBG2: + binclude "Levels/HCZ/Animated Tiles/Act1 Lower BG 2.bin" + even +ArtUnc_AniHCZ__1: + binclude "Levels/HCZ/Animated Tiles/0.bin" + even +ArtUnc_AniHCZ2_0: + binclude "Levels/HCZ/Animated Tiles/Act2 0.bin" + even +ArtUnc_AniHCZ2_SmallBGLine: + binclude "Levels/HCZ/Animated Tiles/Act2 1.bin" + even +ArtUnc_AniHCZ2_2: + binclude "Levels/HCZ/Animated Tiles/Act2 2.bin" + even +ArtUnc_AniHCZ2_3: + binclude "Levels/HCZ/Animated Tiles/Act2 3.bin" + even +ArtUnc_AniHCZ2_4: + binclude "Levels/HCZ/Animated Tiles/Act2 4.bin" + even +ArtUnc_AniMGZ__0: + binclude "Levels/MGZ/Animated Tiles/MGZ Animated 0.bin" + even +ArtUnc_AniMGZ__1: + binclude "Levels/MGZ/Animated Tiles/MGZ Animated 1.bin" + even +ArtUnc_AniCNZ__0: + binclude "Levels/CNZ/Animated Tiles/0.bin" + even +ArtUnc_AniCNZ__1: + binclude "Levels/CNZ/Animated Tiles/1.bin" + even +ArtUnc_AniCNZ__2: + binclude "Levels/CNZ/Animated Tiles/2.bin" + even +ArtUnc_AniCNZ__3: + binclude "Levels/CNZ/Animated Tiles/3.bin" + even +ArtUnc_AniCNZ__4: + binclude "Levels/CNZ/Animated Tiles/4.bin" + even +ArtUnc_AniCNZ__6: + binclude "Levels/CNZ/Animated Tiles/6.bin" + even +ArtUnc_AniCNZ__5: + binclude "Levels/CNZ/Animated Tiles/5.bin" + even +ArtUnc_AniICZ__1: + binclude "Levels/ICZ/Animated Tiles/1.bin" + even +ArtUnc_AniICZ__2: + binclude "Levels/ICZ/Animated Tiles/2.bin" + even +ArtUnc_AniICZ__3: + binclude "Levels/ICZ/Animated Tiles/3.bin" + even +ArtUnc_AniICZ__4: + binclude "Levels/ICZ/Animated Tiles/4.bin" + even +ArtUnc_AniICZ__5: + binclude "Levels/ICZ/Animated Tiles/5.bin" + even +ArtUnc_AniICZ__0: + binclude "Levels/ICZ/Animated Tiles/0.bin" + even +ArtUnc_AniLBZ1_0: + binclude "Levels/LBZ/Animated Tiles/Act1 0.bin" + even +ArtUnc_AniLBZ1_1: + binclude "Levels/LBZ/Animated Tiles/Act1 1.bin" + even +ArtUnc_AniLBZ1_2: + binclude "Levels/LBZ/Animated Tiles/Act1 2.bin" + even +ArtUnc_AniLBZ2_2: + binclude "Levels/LBZ/Animated Tiles/Act2 2.bin" + even +ArtUnc_AniLBZ2_WaterlineBelow: + binclude "Levels/LBZ/Animated Tiles/Act2 Water Below.bin" + even +ArtUnc_AniLBZ2_LowerBG: + binclude "Levels/LBZ/Animated Tiles/Act2 Lower BG.bin" + even +ArtUnc_AniLBZ2_WaterlineAbove: + binclude "Levels/LBZ/Animated Tiles/Act2 Water Above.bin" + even +ArtUnc_AniLBZ2_UpperBG: + binclude "Levels/LBZ/Animated Tiles/Act2 Upper BG.bin" + even +ArtUnc_AniLBZ__0: + binclude "Levels/LBZ/Animated Tiles/0.bin" + even +ArtUnc_AniLBZ2_0: + binclude "Levels/LBZ/Animated Tiles/Act2 0.bin" + even +ArtUnc_AniLBZ2_1: + binclude "Levels/LBZ/Animated Tiles/Act2 1.bin" + even +ArtUnc_AniALZ: + binclude "Levels/ALZ/Animated Tiles/0.bin" + even +ArtUnc_AniBPZ__0: + binclude "Levels/BPZ/Animated Tiles/0.bin" + even +ArtUnc_AniBPZ__1: + binclude "Levels/BPZ/Animated Tiles/1.bin" + even +ArtUnc_AniBPZ__2: + binclude "Levels/BPZ/Animated Tiles/2.bin" + even +ArtUnc_AniBPZ__3: + binclude "Levels/BPZ/Animated Tiles/3.bin" + even +ArtUnc_AniDPZ: + binclude "Levels/DPZ/Animated Tiles/0.bin" + even +ArtUnc_AniDPZ__BG: + binclude "Levels/DPZ/Animated Tiles/BG 0.bin" + even +ArtUnc_AniGumball: + binclude "Levels/Gumball/Animated Tiles/0.bin" + even +ArtUnc_SplashDrown: + binclude "General/Sprites/Dash Dust/Splash Drown.bin" + even +ArtNem_Title_SonicSprites: + binclude "General/Title/Nemesis Art/S3 Sonic Sprites.bin" + even +DemoDat_AIZ: binclude "Levels/AIZ/Demodata/1.bin" + even +DemoDat_HCZ: binclude "Levels/HCZ/Demodata/1.bin" + even +DemoDat_MGZ: binclude "Levels/MGZ/Demodata/1.bin" + even +ArtUnc_Tails: + binclude "General/Sprites/Tails/Art/Tails.bin" + even +ArtUnc_Tails_Tail: + binclude "General/Sprites/Tails/Art/Tails tails.bin" + even +ArtUnc_Sonic2P: + binclude "General/Sprites/Sonic/Art/Sonic 2P.bin" + even +ArtUnc_Tails2P: + binclude "General/Sprites/Tails/Art/Tails 2P.bin" + even +ArtUnc_Tails2P_Tail: + binclude "General/Sprites/Tails/Art/Tails tails 2P.bin" + even +ArtUnc_Knuckles2P: + binclude "General/Sprites/Knuckles/Art/Knuckles 2P.bin" + even +Map_Tails_Tail: + include "General/Sprites/Tails/Map - Tails tails.asm" +PLC_Tails_Tail: + include "General/Sprites/Tails/Tails tails pattern load cues.asm" + +ICZSnowboard_Slope1: + binclude "Levels/ICZ/Misc/ICZ Snowboard Slope 1.bin" + even +ICZSnowboard_Slope2: + binclude "Levels/ICZ/Misc/ICZ Snowboard Slope 2.bin" + even +ArtUnc_SonicSnowboard: + binclude "General/Sprites/Sonic/Art/Sonic Snowboarding.bin" + even +ArtUnc_Snowboard: + binclude "General/Sprites/Snowboard/Snowboard.bin" + even +Map_SonicSnowboard: + include "General/Sprites/Sonic/Map - Sonic Snowboarding.asm" +DPLC_SonicSnowboard: + include "General/Sprites/Sonic/DPLC - Sonic Snowboarding.asm" +Map_Snowboard: + include "General/Sprites/Snowboard/Map - Snowboard.asm" +DPLC_Snowboard: + include "General/Sprites/Snowboard/DPLC - Snowboard.asm" + +ArtNem_AIZIntroSprites: + binclude "Levels/AIZ/Nemesis Art/Intro Waves.bin" + even +ArtNem_2PDashdust: + binclude "General/2P Zone/Nemesis Art/Spindash Dust.bin" + even +MapEni_S3TitleSonic1: + binclude "General/Title/Enigma Map/S3 Sonic 1.bin" + even +MapEni_S3TitleSonic2: + binclude "General/Title/Enigma Map/S3 Sonic 2.bin" + even +MapEni_S3TitleSonic3: + binclude "General/Title/Enigma Map/S3 Sonic 3.bin" + even +MapEni_S3TitleSonic4: + binclude "General/Title/Enigma Map/S3 Sonic 4.bin" + even +MapEni_S3TitleSonic5: + binclude "General/Title/Enigma Map/S3 Sonic 5.bin" + even +MapEni_S3TitleSonic6: + binclude "General/Title/Enigma Map/S3 Sonic 6.bin" + even +MapEni_S3TitleSonic7: + binclude "General/Title/Enigma Map/S3 Sonic 7.bin" + even +MapEni_S3TitleSonic8: + binclude "General/Title/Enigma Map/S3 Sonic 8.bin" + even +MapEni_S3TitleSonic9: + binclude "General/Title/Enigma Map/S3 Sonic 9.bin" + even +MapEni_S3TitleSonicA: + binclude "General/Title/Enigma Map/S3 Sonic A.bin" + even +MapEni_S3TitleSonicB: + binclude "General/Title/Enigma Map/S3 Sonic B.bin" + even +MapEni_S3TitleSonicC: + binclude "General/Title/Enigma Map/S3 Sonic C.bin" + even +MapEni_S3TitleSonicD: + binclude "General/Title/Enigma Map/S3 Sonic D.bin" + even +MapEni_S3TitleBg: + binclude "General/Title/Enigma Map/S3 BG.bin" + even +Map_S3TitleBanner: + include "General/Title/Map - S3 Banner.asm" + +ArtNem_Title_S3Banner: + binclude "General/Title/Nemesis Art/S3 Banner.bin" + even +ArtKos_S3TitleSonic1: + binclude "General/Title/Kosinski Art/S3 Sonic 1.bin" + even +ArtKos_S3TitleSonic8: + binclude "General/Title/Kosinski Art/S3 Sonic 8.bin" + even +ArtKos_S3TitleSonic9: + binclude "General/Title/Kosinski Art/S3 Sonic 9.bin" + even +ArtKos_S3TitleSonicA: + binclude "General/Title/Kosinski Art/S3 Sonic A.bin" + even +ArtKos_S3TitleSonicB: + binclude "General/Title/Kosinski Art/S3 Sonic B.bin" + even +ArtKos_S3TitleSonicC: + binclude "General/Title/Kosinski Art/S3 Sonic C.bin" + even +ArtKos_S3TitleSonicD: + binclude "General/Title/Kosinski Art/S3 Sonic D.bin" + even +ArtNem_TailsLifeIcon: + binclude "General/Sprites/HUD Icon/Tails Life Icon.bin" + even +Map_LBZMiniboss: + include "Levels/LBZ/Misc Object Data/Map - Miniboss.asm" +Map_LBZMinibossBox: + include "Levels/LBZ/Misc Object Data/Map - Miniboss Box.asm" +Map_SnaleBlaster: + include "General/Sprites/Snale Blaster/Map - Snale Blaster.asm" +Map_Orbinaut: + include "General/Sprites/Orbinaut/Map - Orbinaut.asm" +Map_Ribot: + include "General/Sprites/Ribot/Map - Ribot.asm" +Map_Corkey: + include "General/Sprites/Corkey/Map - Corkey.asm" +Map_Flybot767: + include "General/Sprites/Flybot767/Map - Flybot767.asm" +DPLC_Flybot767: + include "General/Sprites/Flybot767/DPLC - Flybot767.asm" +Map_LBZEndBoss: + include "Levels/LBZ/Misc Object Data/Map - End Boss.asm" +Map_CNZEndBoss: + include "Levels/CNZ/Misc Object Data/Map - End Boss.asm" +CNZEndBossMagnet_AngleX: + dc.b 0, 1, 2, 3, 4, 5, 6, 8, 9, $A, $B, $C, $D, $E, $F, $10 + dc.b $11, $12, $13, $14, $15, $16, $17, $18, $18, $19, $1A, $1B, $1C, $1D, $1E, $1E + dc.b $1F, $20, $21, $21, $22, $23, $23, $24, $25, $25, $26, $26, $27, $27, $28, $28 + dc.b $29, $29, $29, $2A, $2A, $2A, $2B, $2B, $2B, $2B, $2C, $2C, $2C, $2C, $2C, $2C +LBZFinalBoss2_CircleLookup: + dc.b 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, $A, $B, $C, $D, $D, $E + dc.b $F, $10, $11, $12, $13, $14, $15, $15, $16, $17, $18, $19, $19, $1A, $1B, $1C + dc.b $1C, $1D, $1E, $1E, $1F, $20, $20, $21, $21, $22, $22, $23, $23, $24, $24, $25 + dc.b $25, $25, $26, $26, $26, $27, $27, $27, $27, $27, $28, $28, $28, $28, $28, $28 +Map_Blastoid: + include "General/Sprites/Blastoid/Map - Blastoid.asm" +Map_Poindexter: + include "General/Sprites/Pointdexter/Map - Pointdexter.asm" +Map_Buggernaut: + include "General/Sprites/Buggernaut/Map - Buggernaut.asm" +Map_MegaChopper: + include "General/Sprites/Mega Chopper/Map - Mega Chopper.asm" +Map_TurboSpiker: + include "General/Sprites/Turbo Spiker/Map - Turbo Spiker.asm" +Map_Jawz: + include "General/Sprites/Jawz/Map - Jawz.asm" +DPLC_Rhinobot: + include "General/Sprites/Rhinobot/DPLC - Rhinobot.asm" +Map_Rhinobot: + include "General/Sprites/Rhinobot/Map - Rhinobot.asm" +Map_AIZMinibossFlame: + include "Levels/AIZ/Misc Object Data/Map - Miniboss Flame.asm" +Map_Bloominator: + include "General/Sprites/Bloominator/Map - Bloominator.asm" +Map_MonkeyDude: + include "General/Sprites/Monkey Dude/Map - Monkey Dude.asm" +Map_MGZMiniboss: + include "Levels/MGZ/Misc Object Data/Map - Miniboss.asm" +Map_CaterKillerJr: + include "General/Sprites/Caterkiller Jr/Map - Caterkiller Jr.asm" +DPLC_Clamer: + include "General/Sprites/Clamer/DPLC - Clamer.asm" +Map_Clamer: + include "General/Sprites/Clamer/Map - Clamer.asm" +Map_Sparkle: + include "General/Sprites/Sparkle/Map - Sparkle.asm" +Map_Batbot: + include "General/Sprites/Batbot/Map - Batbot.asm" +DPLC_BubblesBadnik: + include "General/Sprites/Bubbles Badnik/DPLC - Bubbles Badnik.asm" +Map_BubblesBadnik: + include "General/Sprites/Bubbles Badnik/Map - Bubbles Badnik.asm" +Map_Spiker: + include "General/Sprites/Spiker/Map - Spiker.asm" +Map_Mantis: + include "General/Sprites/Mantis/Map - Mantis.asm" +DPLC_Penguinator: + include "General/Sprites/Penguinator/DPLC - Penguinator.asm" +Map_Penguinator: + include "General/Sprites/Penguinator/Map - Penguinator.asm" +Map_ICZSnowdust: + include "Levels/ICZ/Misc Object Data/Map - Snowdust.asm" +Map_StarPointer: + include "General/Sprites/Star Pointer/Map - Star Pointer.asm" +Map_AIZEndBoss: + include "Levels/AIZ/Misc Object Data/Map - End Boss.asm" +Map_AIZMiniboss: + include "Levels/AIZ/Misc Object Data/Map - Miniboss.asm" +Map_AIZMinibossSmall: + include "Levels/AIZ/Misc Object Data/Map - Miniboss Small.asm" +Map_MGZEndBoss: + include "Levels/MGZ/Misc Object Data/Map - End Boss.asm" +HCZMiniboss_RocketTwistLookup: + dc.b $18, $18, $18, $18, $18, $18, $18, $18, $18, $17, $17, $17, $17, $17, $17, $16 + dc.b $16, $16, $16, $15, $15, $15, $15, $14, $14, $14, $13, $13, $13, $12, $12, $11 + dc.b $11, $11, $10, $10, $F, $F, $E, $E, $D, $D, $C, $C, $B, $B, $A, $A + dc.b 9, 9, 8, 8, 7, 6, 6, 5, 5, 4, 4, 3, 2, 2, 1, 1 + dc.b 0, $FF, $FF, $FE, $FE, $FD, $FC, $FC, $FB, $FB, $FA, $FA, $F9, $F8, $F8, $F7 + dc.b $F7, $F6, $F6, $F5, $F5, $F4, $F4, $F3, $F3, $F2, $F2, $F1, $F1, $F0, $F0, $EF + dc.b $EF, $EF, $EE, $EE, $ED, $ED, $ED, $EC, $EC, $EC, $EB, $EB, $EB, $EB, $EA, $EA + dc.b $EA, $EA, $E9, $E9, $E9, $E9, $E9, $E9, $E8, $E8, $E8, $E8, $E8, $E8, $E8, $E8 +LBZ2FinalBoss2_CircleLookup2: + dc.b 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7 + dc.b 8, 8, 9, 9, 9, $A, $A, $B, $B, $C, $C, $C, $D, $D, $D, $E + dc.b $E, $E, $F, $F, $F, $10, $10, $10, $11, $11, $11, $11, $12, $12, $12, $12 + dc.b $12, $13, $13, $13, $13, $13, $13, $14, $14, $14, $14, $14, $14, $14, $14, $14 +Map_HCZMiniboss: + include "Levels/HCZ/Misc Object Data/Map - Miniboss.asm" +Map_HCZMinibossSplash: + include "Levels/HCZ/Misc Object Data/Map - Miniboss Splash.asm" +DPLC_HCZMinibossSplash: + include "Levels/HCZ/Misc Object Data/DPLC - Miniboss Splash.asm" +Map_ICZEndBoss: + include "Levels/ICZ/Misc Object Data/Map - End Boss.asm" +Map_CNZMiniboss: + include "Levels/CNZ/Misc Object Data/Map - Miniboss.asm" +ICZMiniboss_OrbAngleLookup: + dc.b 0, 1, 2, 4, 5, 6, 7, 8, 9, $B, $C, $D, $E, $F, $10, $11 + dc.b $12, $13, $15, $16, $17, $18, $19, $1A, $1B, $1C, $1D, $1E, $1E, $1F, $20, $21 + dc.b $22, $23, $24, $24, $25, $26, $27, $27, $28, $29, $29, $2A, $2A, $2B, $2B, $2C + dc.b $2C, $2D, $2D, $2E, $2E, $2E, $2F, $2F, $2F, $2F, $2F, $30, $30, $30, $30, $30 +Map_ICZMiniboss: + include "Levels/ICZ/Misc Object Data/Map - Miniboss.asm" +Map_HCZEndBoss: + include "Levels/HCZ/Misc Object Data/Map - End Boss.asm" +Map_MGZEndBossDebris: + include "Levels/MGZ/Misc Object Data/Map - End Boss Debris.asm" +Map_ICZWallAndColumn: + include "Levels/ICZ/Misc Object Data/Map - Wall and Column.asm" +Map_ICZPlatforms: + include "Levels/ICZ/Misc Object Data/Map - Platforms.asm" +Map_LBZKnuxBomb: + include "Levels/LBZ/Misc Object Data/Map - Knuckles Bomb.asm" +Map_CutsceneKnux: + include "General/Sprites/Knuckles/Cutscene/Map - Cutscene Knuckles.asm" +DPLC_CutsceneKnux: + include "General/Sprites/Knuckles/Cutscene/DPLC - Cutscene Knuckles.asm" +Map_AIZIntroPlane: + include "Levels/AIZ/Misc Object Data/Map - Intro Plane.asm" +Map_AIZIntroEmeralds: + include "Levels/AIZ/Misc Object Data/Map - Intro Emeralds.asm" +Map_LBZFinalBoss1: + include "Levels/LBZ/Misc Object Data/Map - Final Boss 1.asm" +Map_LBZDeathEggSmall: + include "Levels/LBZ/Misc Object Data/Map - Death Egg Small.asm" +Pal_MGZFadeCNZ: + binclude "Levels/MGZ/Palettes/Fade to CNZ.bin" + even +Map_LBZFinalBoss2: + include "Levels/LBZ/Misc Object Data/Map - Final Boss 2.asm" + +ArtNem_AIZMiniboss: + binclude "Levels/AIZ/Nemesis Art/Miniboss.bin" + even +ArtKosM_AIZEndBoss: + binclude "Levels/AIZ/KosinskiM Art/End Boss.bin" + even +ArtNem_AIZMinibossSmall: + binclude "Levels/AIZ/Nemesis Art/Miniboss Small.bin" + even +ArtUnc_AIZRhinobot: + binclude "General/Sprites/Rhinobot/Rhinobot.bin" + even +ArtKosM_AIZ_Bloominator: + binclude "General/Sprites/Bloominator/Bloominator.bin" + even +ArtKosM_AIZ_MonkeyDude: + binclude "General/Sprites/Monkey Dude/Monkey Dude.bin" + even +ArtKosM_AIZ_CaterkillerJr: + binclude "General/Sprites/Caterkiller Jr/Caterkiller Jr.bin" + even +ArtNem_HCZMiniboss: + binclude "Levels/HCZ/Nemesis Art/Miniboss.bin" + even +ArtNem_HCZEndBoss: + binclude "Levels/HCZ/Nemesis Art/End Boss.bin" + even +ArtNem_HCZDragonfly: + binclude "Levels/HCZ/Nemesis Art/Dragonfly.bin" + even +ArtKosM_Jawz: + binclude "General/Sprites/Jawz/Jawz.bin" + even +ArtKosM_MegaChopper: + binclude "General/Sprites/Mega Chopper/Mega Chopper.bin" + even +ArtKosM_Blastoid: + binclude "General/Sprites/Blastoid/Blastoid.bin" + even +ArtKosM_TurboSpiker: + binclude "General/Sprites/Turbo Spiker/Turbo Spiker.bin" + even +ArtKosM_Pointdexter: + binclude "General/Sprites/Pointdexter/Pointdexter.bin" + even +ArtKosM_MGZMiniboss: + binclude "Levels/MGZ/KosinskiM Art/Miniboss.bin" + even +ArtNem_MGZSpire: + binclude "Levels/MGZ/Nemesis Art/Spire.bin" + even +ArtKosM_MGZEndBoss: + binclude "Levels/MGZ/KosinskiM Art/End Boss.bin" + even +ArtScaled_MGZEndBoss: + binclude "Levels/MGZ/Misc/MGZ End Boss Scaled.bin" + even +ArtKosM_MGZEndBossDebris: + binclude "Levels/MGZ/KosinskiM Art/End Boss Debris.bin" + even +ArtUnc_BubblesBadnik: + binclude "General/Sprites/Bubbles Badnik/Bubbles Badnik.bin" + even +ArtKosM_Spiker: + binclude "General/Sprites/Spiker/Spiker.bin" + even +ArtKosM_Mantis: + binclude "General/Sprites/Mantis/Mantis.bin" + even +ArtNem_CNZMiniboss: + binclude "Levels/CNZ/Nemesis Art/Miniboss.bin" + even +ArtNem_CNZEndBoss: + binclude "Levels/CNZ/Nemesis Art/End Boss.bin" + even +ArtUnc_Clamer: + binclude "General/Sprites/Clamer/Clamer.bin" + even +ArtKosM_ClamerShot: + binclude "General/Sprites/Clamer/Clamer Shot.bin" + even +ArtKosM_Sparkle: + binclude "General/Sprites/Sparkle/Sparkle.bin" + even +ArtKosM_Batbot: + binclude "General/Sprites/Batbot/Batbot.bin" + even +ArtKosM_CNZBalloon: + binclude "Levels/CNZ/KosinskiM Art/Balloon.bin" + even +ArtNem_ICZMisc1: + binclude "Levels/ICZ/Nemesis Art/Misc Art 1.bin" + even +ArtNem_ICZIntroSprites: + binclude "Levels/ICZ/Nemesis Art/Intro Sprites.bin" + even +ArtNem_ICZMisc2: + binclude "Levels/ICZ/Nemesis Art/Misc Art 2.bin" + even +ArtNem_ICZEndBoss: + binclude "Levels/ICZ/Nemesis Art/End Boss.bin" + even +ArtNem_ICZMiniboss: + binclude "Levels/ICZ/Nemesis Art/Miniboss.bin" + even +ArtUnc_Penguinator: + binclude "General/Sprites/Penguinator/Penguinator.bin" + even +ArtKosM_ICZSnowdust: + binclude "Levels/ICZ/KosinskiM Art/Snowdust.bin" + even +ArtKosM_StarPointer: + binclude "General/Sprites/Star Pointer/Star Pointer.bin" + even +ArtKosM_LBZMiniboss: + binclude "Levels/LBZ/KosinskiM Art/Miniboss.bin" + even +ArtKosM_LBZMinibossBox: + binclude "Levels/LBZ/KosinskiM Art/Miniboss Box.bin" + even +ArtNem_LBZFinalBoss1: + binclude "Levels/LBZ/Nemesis Art/Final Boss 1.bin" + even +ArtKosM_LBZEndBoss: + binclude "Levels/LBZ/KosinskiM Art/End Boss.bin" + even +ArtKosM_LBZFinalBoss2: + binclude "Levels/LBZ/KosinskiM Art/Final Boss 2.bin" + even +ArtKosM_SnaleBlaster: + binclude "General/Sprites/Snale Blaster/Snale Blaster.bin" + even +ArtKosM_Ribot: + binclude "General/Sprites/Ribot/Ribot.bin" + even +ArtKosM_Orbinaut: + binclude "General/Sprites/Orbinaut/Orbinaut.bin" + even +ArtKosM_Corkey: + binclude "General/Sprites/Corkey/Corkey.bin" + even +ArtUnc_Flybot767: + binclude "General/Sprites/Flybot767/Flybot767.bin" + even +ArtNem_LBZKnuxBomb: + binclude "Levels/LBZ/Nemesis Art/Knuckles Bomb.bin" + even +ArtKosM_LBZ2DeathEggSmall: + binclude "Levels/LBZ/KosinskiM Art/Act 2 Death Egg Small.bin" + even +ArtKosM_LBZ2DeathEgg2_8x8: + binclude "Levels/LBZ/Tiles/Act 2 Death Egg 2.bin" + even +ArtNem_AIZBossFire: + binclude "Levels/AIZ/Nemesis Art/Miniboss Fire.bin" + even +ArtKosM_AIZIntroPlane: + binclude "Levels/AIZ/KosinskiM Art/Intro Plane.bin" + even +ArtUnc_CutsceneKnux: + binclude "General/Sprites/Knuckles/Cutscene/Cutscene Main.bin" + even +ArtKosM_AIZIntroEmeralds: + binclude "Levels/AIZ/KosinskiM Art/Intro Emeralds.bin" + even +ArtKosM_TailsEndPose: + binclude "General/Ending/KosinskiM Art/Tails Ending Pose.bin" + even +ArtNem_S38x16Font: + binclude "General/Ending/Nemesis Art/S3 8x16 Font.bin" + even +ArtNem_AIZCorkFloor: + binclude "Levels/AIZ/Nemesis Art/Cork Floor 1.bin" + even +ArtNem_AIZCorkFloor2: + binclude "Levels/AIZ/Nemesis Art/Cork Floor 2.bin" + even +ArtNem_AIZSwingVine: + binclude "Levels/AIZ/Nemesis Art/Swing Vine.bin" + even +ArtNem_AIZSlideRope: + binclude "Levels/AIZ/Nemesis Art/Zip Vine.bin" + even +ArtNem_AIZBackgroundTree: + binclude "Levels/AIZ/Nemesis Art/BG Tree.bin" + even +ArtNem_AIZMisc1: + binclude "Levels/AIZ/Nemesis Art/Misc Art 1.bin" + even +ArtNem_AIZFallingLog: + binclude "Levels/AIZ/Nemesis Art/Falling Log.bin" + even +ArtNem_AIZMisc2: + binclude "Levels/AIZ/Nemesis Art/Misc Art 2.bin" + even +ArtNem_HCZSpikeBall: + binclude "Levels/HCZ/Nemesis Art/Spike Ball.bin" + even +ArtNem_HCZWaveSplash: + binclude "Levels/HCZ/Nemesis Art/Wave Splash.bin" + even +ArtNem_HCZButton: + binclude "Levels/HCZ/Nemesis Art/Button.bin" + even +ArtNem_HCZMisc: + binclude "Levels/HCZ/Nemesis Art/Misc Art.bin" + even +ArtNem_HCZWaterRush: + binclude "Levels/HCZ/Nemesis Art/Water Rush.bin" + even +ArtKosM_HCZLargeFan: + binclude "Levels/HCZ/KosinskiM Art/Large Fan.bin" + even +ArtKosM_HCZGeyserHorz: + binclude "Levels/HCZ/KosinskiM Art/Geyser Horizontal.bin" + even +ArtKosM_HCZGeyserVert: + binclude "Levels/HCZ/KosinskiM Art/Geyser Vertical.bin" + even +ArtNem_HCZ2Slide: + binclude "Levels/HCZ/Nemesis Art/Act 2 Slide.bin" + even +ArtNem_HCZ2BlockPlat: + binclude "Levels/HCZ/Nemesis Art/Act 2 Block Platform.bin" + even +ArtUnc_HCZWaterSplash2: + binclude "Levels/HCZ/Animated Tiles/Water Splash 2.bin" + even +ArtUnc_HCZWaterSplash: + binclude "Levels/HCZ/Animated Tiles/Water Splash.bin" + even +ArtNem_HCZ2KnuxWall: + binclude "Levels/HCZ/Nemesis Art/Act 2 Knuckles Wall.bin" + even +ArtNem_MGZMisc1: + binclude "Levels/MGZ/Nemesis Art/Misc Art 1.bin" + even +ArtNem_MGZMisc2: + binclude "Levels/MGZ/Nemesis Art/Misc Art 2.bin" + even +ArtNem_MGZSigns: + binclude "Levels/MGZ/Nemesis Art/Direction Signs.bin" + even +ArtNem_CNZMisc: + binclude "Levels/CNZ/Nemesis Art/Misc Art.bin" + even +ArtNem_CNZPlatform: + binclude "Levels/CNZ/Nemesis Art/Platform.bin" + even +ArtNem_LBZMisc: + binclude "Levels/LBZ/Nemesis Art/Misc Art.bin" + even +ArtNem_LBZTubeTrans: + binclude "Levels/LBZ/Nemesis Art/Tube Transport.bin" + even +ArtNem_LBZ2Misc: + binclude "Levels/LBZ/Nemesis Art/Act 2 Misc Art.bin" + even +ArtNem_2PArt_1: + binclude "General/2P Zone/Nemesis Art/Misc Art 1.bin" + even +ArtNem_2PArt_2: + binclude "General/2P Zone/Nemesis Art/Misc Art 2.bin" + even +ArtNem_2PArt_3: + binclude "General/2P Zone/Nemesis Art/Misc Art 3.bin" + even +ArtNem_2PStartPost: + binclude "General/2P Zone/Nemesis Art/Start Post.bin" + even +ArtNem_2PTime: + binclude "General/2P Zone/Nemesis Art/Time Display.bin" + even +ArtNem_2PLapNum: + binclude "General/2P Zone/Nemesis Art/Lap Numbers.bin" + even +ArtNem_2PPosIcon: + binclude "General/2P Zone/Nemesis Art/Position Icons.bin" + even +ArtNem_BPZMisc: + binclude "Levels/BPZ/Nemesis Art/Misc Art.bin" + even +ArtNem_DPZMisc: + binclude "Levels/DPZ/Nemesis Art/Misc Art.bin" + even +ArtNem_CGZMisc: + binclude "Levels/CGZ/Nemesis Art/Platform.bin" + even +ArtNem_EMZMisc: + binclude "Levels/EMZ/Nemesis Art/Misc Art.bin" + even +ArtKosM_AIZ2Bombership2_8x8: + binclude "Levels/AIZ/Tiles/Act 2 Bombership 2.bin" + even +ArtKosM_ResultsMILES: + binclude "General/Sprites/Results/Results MILES.bin" + even +ArtKosM_ResultsTAILS: + binclude "General/Sprites/Results/Results TAILS.bin" + even +ArtKosM_AIZTitleCard: + binclude "Levels/AIZ/KosinskiM Art/Title Card.bin" + even +ArtKosM_HCZTitleCard: + binclude "Levels/HCZ/KosinskiM Art/Title Card.bin" + even +ArtKosM_MGZTitleCard: + binclude "Levels/MGZ/KosinskiM Art/Title Card.bin" + even +ArtKosM_CNZTitleCard: + binclude "Levels/CNZ/KosinskiM Art/Title Card.bin" + even +ArtKosM_ICZTitleCard: + binclude "Levels/ICZ/KosinskiM Art/Title Card.bin" + even +ArtKosM_LBZTitleCard: + binclude "Levels/LBZ/KosinskiM Art/Title Card.bin" + even +ArtKosM_ALZTitleCard: + binclude "Levels/ALZ/KosinskiM Art/Title Card.bin" + even +ArtKosM_BPZTitleCard: + binclude "Levels/BPZ/KosinskiM Art/Title Card.bin" + even +ArtKosM_CGZTitleCard: + binclude "Levels/CGZ/KosinskiM Art/Title Card.bin" + even +ArtKosM_DPZTitleCard: + binclude "Levels/DPZ/KosinskiM Art/Title Card.bin" + even +ArtKosM_EMZTitleCard: + binclude "Levels/EMZ/KosinskiM Art/Title Card.bin" + even +Pal_SaveMenuBG: + binclude "General/Save Menu/Palettes/BG.bin" + even +Pal_CompetitionMenuBG: + binclude "General/Competition Menu/Palettes/BG.bin" + even +MapEni_S3MenuBG: + binclude "General/Save Menu/Enigma Map/Menu BG.bin" + even +ArtKos_S3MenuBG: + binclude "General/Save Menu/Kosinski Art/Menu BG.bin" + even +MapEni_CompetitionLevBorder: + binclude "General/Competition Menu/Enigma Map/Level Border.bin" + even +MapUnc_CompetitionTimeBorder: + binclude "General/Competition Menu/Uncompressed Map/Time Border.bin" + even +MapUnc_CompetitionBESTTIME: + binclude "General/Competition Menu/Uncompressed Map/Time Text.bin" + even +MapEni_CompetitionLevImage: + binclude "General/Competition Menu/Enigma Map/Level Images.bin" + even +MapEni_CompetitionLevName: + binclude "General/Competition Menu/Enigma Map/Level Names.bin" + even +ArtKos_CompetitionMode: + binclude "General/Competition Menu/Kosinski Art/Mode Select.bin" + even +ArtKos_CompetitionLevel: + binclude "General/Competition Menu/Kosinski Art/Level Select.bin" + even +ArtKos_CompetitionResults: + binclude "General/Competition Menu/Kosinski Art/Results.bin" + even +Map_CompetitionPlayerSprite: + include "General/Competition Menu/Map - Competition Player Sprites.asm" + +ArtKos_CompetitionPlayer: + binclude "General/Competition Menu/Kosinski Art/Player Sprites.bin" + even +MapEni_SaveScreen_Layout: + binclude "General/Save Menu/Enigma Map/Save Screen Layout.bin" + even +MapUnc_SaveScreenNEW: + binclude "General/Save Menu/Uncompressed Map/NEW.bin" + even +MapPtrs_SaveScreenStatic: + dc.l MapUnc_SaveScreenStatic1 + dc.l MapUnc_SaveScreenStatic2 + dc.l MapUnc_SaveScreenStatic3 + dc.l MapUnc_SaveScreenStatic4 +MapUnc_SaveScreenStatic1: + binclude "General/Save Menu/Uncompressed Map/Static 1.bin" + even +MapUnc_SaveScreenStatic2: + binclude "General/Save Menu/Uncompressed Map/Static 2.bin" + even +MapUnc_SaveScreenStatic3: + binclude "General/Save Menu/Uncompressed Map/Static 3.bin" + even +MapUnc_SaveScreenStatic4: + binclude "General/Save Menu/Uncompressed Map/Static 4.bin" + even +ArtKos_SaveScreenMisc: + binclude "General/Save Menu/Kosinski Art/Misc.bin" + even ; Music data placed here ;org $2C8000 @@ -970,14 +1241,14 @@ ArtKos_SaveScreenMisc: binclude "General/Save Menu/Kosinski Art/Misc.bin" ; Music Bank 3 ; --------------------------------------------------------------------------- Snd_Bank3_Start: startBank -Snd_AIZ1: binclude "Sound/Music/AIZ1.bin" -Snd_AIZ2: binclude "Sound/Music/AIZ2.bin" -Snd_HCZ1: binclude "Sound/Music/HCZ1.bin" -Snd_HCZ2: binclude "Sound/Music/HCZ2.bin" -Snd_MGZ1: binclude "Sound/Music/MGZ1.bin" -Snd_MGZ2: binclude "Sound/Music/MGZ2.bin" -Snd_CNZ2: binclude "Sound/Music/CNZ2.bin" -Snd_CNZ1: binclude "Sound/Music/CNZ1.bin" +Snd_AIZ1: binclude "Sound/Music/AIZ1.bin" +Snd_AIZ2: binclude "Sound/Music/AIZ2.bin" +Snd_HCZ1: binclude "Sound/Music/HCZ1.bin" +Snd_HCZ2: binclude "Sound/Music/HCZ2.bin" +Snd_MGZ1: binclude "Sound/Music/MGZ1.bin" +Snd_MGZ2: binclude "Sound/Music/MGZ2.bin" +Snd_CNZ2: binclude "Sound/Music/CNZ2.bin" +Snd_CNZ1: binclude "Sound/Music/CNZ1.bin" finishBank @@ -985,10 +1256,10 @@ Snd_CNZ1: binclude "Sound/Music/CNZ1.bin" ; Music Bank 4 ; --------------------------------------------------------------------------- Snd_Bank4_Start: startBank -Snd_ICZ2: binclude "Sound/Music/ICZ2.bin" -Snd_ICZ1: binclude "Sound/Music/ICZ1.bin" -Snd_LBZ2: binclude "Sound/Music/LBZ2.bin" -Snd_LBZ1: binclude "Sound/Music/LBZ1.bin" +Snd_ICZ2: binclude "Sound/Music/ICZ2.bin" +Snd_ICZ1: binclude "Sound/Music/ICZ1.bin" +Snd_LBZ2: binclude "Sound/Music/LBZ2.bin" +Snd_LBZ1: binclude "Sound/Music/LBZ1.bin" finishBank @@ -996,19 +1267,19 @@ Snd_LBZ1: binclude "Sound/Music/LBZ1.bin" ; Music Bank 5 ; --------------------------------------------------------------------------- Snd_Bank5_Start: startBank - org soundBankStart+$AE8 -Snd_GumBonus: binclude "Sound/Music/Gum Ball Machine.bin" - org soundBankStart+$19F7 -Snd_ALZ: binclude "Sound/Music/Azure Lake.bin" -Snd_BPZ: binclude "Sound/Music/Balloon Park.bin" -Snd_DPZ: binclude "Sound/Music/Desert Palace.bin" -Snd_CGZ: binclude "Sound/Music/Chrome Gadget.bin" -Snd_EMZ: binclude "Sound/Music/Endless Mine.bin" - org soundBankStart+$6587 -Snd_S3Credits: binclude "Sound/Music/Sonic 3 Credits.bin" - org soundBankStart+$75E4 -Snd_2PMenu: binclude "Sound/Music/Competition Menu.bin" -Snd_Drown: binclude "Sound/Music/Countdown.bin" + org soundBankStart+$AE8 +Snd_GumBonus: binclude "Sound/Music/Gum Ball Machine.bin" + org soundBankStart+$19F7 +Snd_ALZ: binclude "Sound/Music/Azure Lake.bin" +Snd_BPZ: binclude "Sound/Music/Balloon Park.bin" +Snd_DPZ: binclude "Sound/Music/Desert Palace.bin" +Snd_CGZ: binclude "Sound/Music/Chrome Gadget.bin" +Snd_EMZ: binclude "Sound/Music/Endless Mine.bin" + org soundBankStart+$6587 +Snd_S3Credits: binclude "Sound/Music/Sonic 3 Credits.bin" + org soundBankStart+$75E4 +Snd_2PMenu: binclude "Sound/Music/Competition Menu.bin" +Snd_Drown: binclude "Sound/Music/Countdown.bin" finishBank @@ -1340,157 +1611,216 @@ DAC_BD_Data: DACBINCLUDE "Sound/DAC/BD.bin" DAC_BE_Data: DACBINCLUDE "Sound/DAC/BE.bin" DAC_BF_Data: DACBINCLUDE "Sound/DAC/BF.bin" DAC_C0_Data: DACBINCLUDE "Sound/DAC/C0.bin" - finishBank - ;org $2F8000 -AIZ1_16x16_Primary_Kos: binclude "Levels/AIZ/Blocks/Act 1 Primary.bin" - even -AIZ1_16x16_Secondary_Kos: binclude "Levels/AIZ/Blocks/Act 1 Secondary.bin" - even -AIZ1_16x16_MainLevel_Kos: binclude "Levels/AIZ/Blocks/Act 1 Main Level.bin" - even -AIZ1_8x8_Primary_KosM: binclude "Levels/AIZ/Tiles/Act 1 Primary.bin" - even -AIZ1_8x8_Secondary_KosM: binclude "Levels/AIZ/Tiles/Act 1 Secondary.bin" - even -AIZ1_8x8_MainLevel_KosM: binclude "Levels/AIZ/Tiles/Act 1 Main Level.bin" - even -AIZ1_128x128_Kos: binclude "Levels/AIZ/Chunks/Act 1.bin" - even -AIZ1_8x8_Flames_KosM: binclude "Levels/AIZ/Tiles/Act 1 Fire Overlay.bin" - even -AIZ2_16x16_Primary_Kos: binclude "Levels/AIZ/Blocks/Act 2 Primary.bin" - even -AIZ2_16x16_Secondary_Kos: binclude "Levels/AIZ/Blocks/Act 2 Secondary.bin" - even -AIZ2_16x16_BomberShip_Kos: binclude "Levels/AIZ/Blocks/Act 2 BomberShip.bin" - even -AIZ2_8x8_Primary_KosM: binclude "Levels/AIZ/Tiles/Act 2 Primary.bin" - even -AIZ2_8x8_Secondary_KosM: binclude "Levels/AIZ/Tiles/Act 2 Secondary.bin" - even -AIZ2_8x8_BomberShip_KosM: binclude "Levels/AIZ/Tiles/Act 2 Bombership.bin" - even -AIZ2_128x128_Kos: binclude "Levels/AIZ/Chunks/Act 2.bin" - even -HCZ_16x16_Primary_Kos: binclude "Levels/HCZ/Blocks/Primary.bin" - even -HCZ_8x8_Primary_KosM: binclude "Levels/HCZ/Tiles/Primary.bin" - even -HCZ_128x128_Primary_Kos: binclude "Levels/HCZ/Chunks/Primary.bin" - even -HCZ1_16x16_Secondary_Kos: binclude "Levels/HCZ/Blocks/Act 1 Secondary.bin" - even -HCZ1_8x8_Secondary_KosM: binclude "Levels/HCZ/Tiles/Act 1 Secondary.bin" - even -HCZ1_128x128_Secondary_Kos: binclude "Levels/HCZ/Chunks/Act 1 Secondary.bin" - even -HCZ2_16x16_Secondary_Kos: binclude "Levels/HCZ/Blocks/Act 2 Secondary.bin" - even -HCZ2_8x8_Secondary_KosM: binclude "Levels/HCZ/Tiles/Act 2 Secondary.bin" - even -HCZ2_128x128_Secondary_Kos: binclude "Levels/HCZ/Chunks/Act 2 Secondary.bin" - even -MGZ_16x16_Primary_Kos: binclude "Levels/MGZ/Blocks/Primary.bin" - even -MGZ_8x8_Primary_KosM: binclude "Levels/MGZ/Tiles/Primary.bin" - even -MGZ_128x128_Primary_Kos: binclude "Levels/MGZ/Chunks/Primary.bin" - even -MGZ1_16x16_Secondary_Kos: binclude "Levels/MGZ/Blocks/Act 1 Secondary.bin" - even -MGZ1_8x8_Secondary_KosM: binclude "Levels/MGZ/Tiles/Act 1 Secondary.bin" - even -MGZ1_128x128_Secondary_Kos: binclude "Levels/MGZ/Chunks/Act 1 Secondary.bin" - even -MGZ2_16x16_Secondary_Kos: binclude "Levels/MGZ/Blocks/Act 2 Secondary.bin" - even -MGZ2_8x8_Secondary_KosM: binclude "Levels/MGZ/Tiles/Act 2 Secondary.bin" - even -MGZ2_128x128_Secondary_Kos: binclude "Levels/MGZ/Chunks/Act 2 Secondary.bin" - even -MGZ2_QuakeChunks: binclude "Levels/MGZ/Misc/Act 2 Quake Chunks.bin" - even -CNZ_16x16_Kos: binclude "Levels/CNZ/Blocks/Primary.bin" - even -CNZ_8x8_KosM: binclude "Levels/CNZ/Tiles/Primary.bin" - even -CNZ_128x128_Kos: binclude "Levels/CNZ/Chunks/Primary.bin" - even -ICZ_16x16_Primary_Kos: binclude "Levels/ICZ/Blocks/Primary.bin" - even -ICZ_8x8_Primary_KosM: binclude "Levels/ICZ/Tiles/Primary.bin" - even -ICZ_128x128_Primary_Kos: binclude "Levels/ICZ/Chunks/Primary.bin" - even -ICZ1_16x16_Secondary_Kos: binclude "Levels/ICZ/Blocks/Act 1 Secondary.bin" - even -ICZ1_8x8_Secondary_KosM: binclude "Levels/ICZ/Tiles/Act 1 Secondary.bin" - even -ICZ1_128x128_Secondary_Kos: binclude "Levels/ICZ/Chunks/Act 1 Secondary.bin" - even -ICZ2_16x16_Secondary_Kos: binclude "Levels/ICZ/Blocks/Act 2 Secondary.bin" - even -ICZ2_8x8_Secondary_KosM: binclude "Levels/ICZ/Tiles/Act 2 Secondary.bin" - even -ICZ2_128x128_Secondary_Kos: binclude "Levels/ICZ/Chunks/Act 2 Secondary.bin" - even -LBZ_16x16_Primary_Kos: binclude "Levels/LBZ/Blocks/Primary.bin" - even -LBZ1_16x16_Secondary_Kos: binclude "Levels/LBZ/Blocks/Act 1 Secondary.bin" - even -LBZ_8x8_Primary_KosM: binclude "Levels/LBZ/Tiles/Primary.bin" - even -LBZ1_8x8_Secondary_KosM: binclude "Levels/LBZ/Tiles/Act 1 Secondary.bin" - even -LBZ1_128x128_Kos: binclude "Levels/LBZ/Chunks/Act 1.bin" - even -LBZ2_16x16_Secondary_Kos: binclude "Levels/LBZ/Blocks/Act 2 Secondary.bin" - even -LBZ2_16x16_DeathEgg_Kos: binclude "Levels/LBZ/Blocks/Act 2 Death Egg.bin" - even -LBZ2_8x8_Secondary_KosM: binclude "Levels/LBZ/Tiles/Act 2 Secondary.bin" - even -LBZ2_8x8_DeathEgg_KosM: binclude "Levels/LBZ/Tiles/Act 2 Death Egg.bin" - even -LBZ2_128x128_Kos: binclude "Levels/LBZ/Chunks/Act 2.bin" - even -LBZ2_128x128_DeathEgg_Kos: binclude "Levels/LBZ/Chunks/Act 2 Death Egg.bin" - even -ALZ_16x16_Kos: binclude "Levels/ALZ/Blocks/Primary.bin" - even -ALZ_8x8_KosM: binclude "Levels/ALZ/Tiles/Primary.bin" - even -ALZ_128x128_Kos: binclude "Levels/ALZ/Chunks/Primary.bin" - even -BPZ_16x16_Kos: binclude "Levels/BPZ/Blocks/Primary.bin" - even -BPZ_8x8_KosM: binclude "Levels/BPZ/Tiles/Primary.bin" - even -BPZ_128x128_Kos: binclude "Levels/BPZ/Chunks/Primary.bin" - even -DPZ_16x16_Kos: binclude "Levels/DPZ/Blocks/Primary.bin" - even -DPZ_8x8_KosM: binclude "Levels/DPZ/Tiles/Primary.bin" - even -DPZ_128x128_Kos: binclude "Levels/DPZ/Chunks/Primary.bin" - even -CGZ_16x16_Kos: binclude "Levels/CGZ/Blocks/Primary.bin" - even -CGZ_8x8_KosM: binclude "Levels/CGZ/Tiles/Primary.bin" - even -CGZ_128x128_Kos: binclude "Levels/CGZ/Chunks/Primary.bin" - even -EMZ_16x16_Kos: binclude "Levels/EMZ/Blocks/Primary.bin" - even -EMZ_8x8_KosM: binclude "Levels/EMZ/Tiles/Primary.bin" - even -EMZ_128x128_Kos: binclude "Levels/EMZ/Chunks/Primary.bin" - even -Gumball_16x16_Kos: binclude "Levels/Gumball/Blocks/Primary.bin" - even -Gumball_8x8_KosM: binclude "Levels/Gumball/Tiles/Gumball.bin" - even -Gumball_128x128_Kos: binclude "Levels/Gumball/Chunks/Primary.bin" - even + +AIZ1_16x16_Primary_Kos: + binclude "Levels/AIZ/Blocks/Act 1 Primary.bin" + even +AIZ1_16x16_Secondary_Kos: + binclude "Levels/AIZ/Blocks/Act 1 Secondary.bin" + even +AIZ1_16x16_MainLevel_Kos: + binclude "Levels/AIZ/Blocks/Act 1 Main Level.bin" + even +AIZ1_8x8_Primary_KosM: + binclude "Levels/AIZ/Tiles/Act 1 Primary.bin" + even +AIZ1_8x8_Secondary_KosM: + binclude "Levels/AIZ/Tiles/Act 1 Secondary.bin" + even +AIZ1_8x8_MainLevel_KosM: + binclude "Levels/AIZ/Tiles/Act 1 Main Level.bin" + even +AIZ1_128x128_Kos: + binclude "Levels/AIZ/Chunks/Act 1.bin" + even +AIZ1_8x8_Flames_KosM: + binclude "Levels/AIZ/Tiles/Act 1 Fire Overlay.bin" + even +AIZ2_16x16_Primary_Kos: + binclude "Levels/AIZ/Blocks/Act 2 Primary.bin" + even +AIZ2_16x16_Secondary_Kos: + binclude "Levels/AIZ/Blocks/Act 2 Secondary.bin" + even +AIZ2_16x16_BomberShip_Kos: + binclude "Levels/AIZ/Blocks/Act 2 BomberShip.bin" + even +AIZ2_8x8_Primary_KosM: + binclude "Levels/AIZ/Tiles/Act 2 Primary.bin" + even +AIZ2_8x8_Secondary_KosM: + binclude "Levels/AIZ/Tiles/Act 2 Secondary.bin" + even +AIZ2_8x8_BomberShip_KosM: + binclude "Levels/AIZ/Tiles/Act 2 Bombership.bin" + even +AIZ2_128x128_Kos: + binclude "Levels/AIZ/Chunks/Act 2.bin" + even +HCZ_16x16_Primary_Kos: + binclude "Levels/HCZ/Blocks/Primary.bin" + even +HCZ_8x8_Primary_KosM: + binclude "Levels/HCZ/Tiles/Primary.bin" + even +HCZ_128x128_Primary_Kos: + binclude "Levels/HCZ/Chunks/Primary.bin" + even +HCZ1_16x16_Secondary_Kos: + binclude "Levels/HCZ/Blocks/Act 1 Secondary.bin" + even +HCZ1_8x8_Secondary_KosM: + binclude "Levels/HCZ/Tiles/Act 1 Secondary.bin" + even +HCZ1_128x128_Secondary_Kos: + binclude "Levels/HCZ/Chunks/Act 1 Secondary.bin" + even +HCZ2_16x16_Secondary_Kos: + binclude "Levels/HCZ/Blocks/Act 2 Secondary.bin" + even +HCZ2_8x8_Secondary_KosM: + binclude "Levels/HCZ/Tiles/Act 2 Secondary.bin" + even +HCZ2_128x128_Secondary_Kos: + binclude "Levels/HCZ/Chunks/Act 2 Secondary.bin" + even +MGZ_16x16_Primary_Kos: + binclude "Levels/MGZ/Blocks/Primary.bin" + even +MGZ_8x8_Primary_KosM: + binclude "Levels/MGZ/Tiles/Primary.bin" + even +MGZ_128x128_Primary_Kos: + binclude "Levels/MGZ/Chunks/Primary.bin" + even +MGZ1_16x16_Secondary_Kos: + binclude "Levels/MGZ/Blocks/Act 1 Secondary.bin" + even +MGZ1_8x8_Secondary_KosM: + binclude "Levels/MGZ/Tiles/Act 1 Secondary.bin" + even +MGZ1_128x128_Secondary_Kos: + binclude "Levels/MGZ/Chunks/Act 1 Secondary.bin" + even +MGZ2_16x16_Secondary_Kos: + binclude "Levels/MGZ/Blocks/Act 2 Secondary.bin" + even +MGZ2_8x8_Secondary_KosM: + binclude "Levels/MGZ/Tiles/Act 2 Secondary.bin" + even +MGZ2_128x128_Secondary_Kos: + binclude "Levels/MGZ/Chunks/Act 2 Secondary.bin" + even +MGZ2_QuakeChunks: + binclude "Levels/MGZ/Misc/Act 2 Quake Chunks.bin" + even +CNZ_16x16_Kos: + binclude "Levels/CNZ/Blocks/Primary.bin" + even +CNZ_8x8_KosM: + binclude "Levels/CNZ/Tiles/Primary.bin" + even +CNZ_128x128_Kos: + binclude "Levels/CNZ/Chunks/Primary.bin" + even +ICZ_16x16_Primary_Kos: + binclude "Levels/ICZ/Blocks/Primary.bin" + even +ICZ_8x8_Primary_KosM: + binclude "Levels/ICZ/Tiles/Primary.bin" + even +ICZ_128x128_Primary_Kos: + binclude "Levels/ICZ/Chunks/Primary.bin" + even +ICZ1_16x16_Secondary_Kos: + binclude "Levels/ICZ/Blocks/Act 1 Secondary.bin" + even +ICZ1_8x8_Secondary_KosM: + binclude "Levels/ICZ/Tiles/Act 1 Secondary.bin" + even +ICZ1_128x128_Secondary_Kos: + binclude "Levels/ICZ/Chunks/Act 1 Secondary.bin" + even +ICZ2_16x16_Secondary_Kos: + binclude "Levels/ICZ/Blocks/Act 2 Secondary.bin" + even +ICZ2_8x8_Secondary_KosM: + binclude "Levels/ICZ/Tiles/Act 2 Secondary.bin" + even +ICZ2_128x128_Secondary_Kos: + binclude "Levels/ICZ/Chunks/Act 2 Secondary.bin" + even +LBZ_16x16_Primary_Kos: + binclude "Levels/LBZ/Blocks/Primary.bin" + even +LBZ1_16x16_Secondary_Kos: + binclude "Levels/LBZ/Blocks/Act 1 Secondary.bin" + even +LBZ_8x8_Primary_KosM: + binclude "Levels/LBZ/Tiles/Primary.bin" + even +LBZ1_8x8_Secondary_KosM: + binclude "Levels/LBZ/Tiles/Act 1 Secondary.bin" + even +LBZ1_128x128_Kos: + binclude "Levels/LBZ/Chunks/Act 1.bin" + even +LBZ2_16x16_Secondary_Kos: + binclude "Levels/LBZ/Blocks/Act 2 Secondary.bin" + even +LBZ2_16x16_DeathEgg_Kos: + binclude "Levels/LBZ/Blocks/Act 2 Death Egg.bin" + even +LBZ2_8x8_Secondary_KosM: + binclude "Levels/LBZ/Tiles/Act 2 Secondary.bin" + even +LBZ2_8x8_DeathEgg_KosM: + binclude "Levels/LBZ/Tiles/Act 2 Death Egg.bin" + even +LBZ2_128x128_Kos: + binclude "Levels/LBZ/Chunks/Act 2.bin" + even +LBZ2_128x128_DeathEgg_Kos: + binclude "Levels/LBZ/Chunks/Act 2 Death Egg.bin" + even +ALZ_16x16_Kos: binclude "Levels/ALZ/Blocks/Primary.bin" + even +ALZ_8x8_KosM: binclude "Levels/ALZ/Tiles/Primary.bin" + even +ALZ_128x128_Kos:binclude "Levels/ALZ/Chunks/Primary.bin" + even +BPZ_16x16_Kos: binclude "Levels/BPZ/Blocks/Primary.bin" + even +BPZ_8x8_KosM: binclude "Levels/BPZ/Tiles/Primary.bin" + even +BPZ_128x128_Kos:binclude "Levels/BPZ/Chunks/Primary.bin" + even +DPZ_16x16_Kos: binclude "Levels/DPZ/Blocks/Primary.bin" + even +DPZ_8x8_KosM: binclude "Levels/DPZ/Tiles/Primary.bin" + even +DPZ_128x128_Kos:binclude "Levels/DPZ/Chunks/Primary.bin" + even +CGZ_16x16_Kos: binclude "Levels/CGZ/Blocks/Primary.bin" + even +CGZ_8x8_KosM: binclude "Levels/CGZ/Tiles/Primary.bin" + even +CGZ_128x128_Kos:binclude "Levels/CGZ/Chunks/Primary.bin" + even +EMZ_16x16_Kos: binclude "Levels/EMZ/Blocks/Primary.bin" + even +EMZ_8x8_KosM: binclude "Levels/EMZ/Tiles/Primary.bin" + even +EMZ_128x128_Kos:binclude "Levels/EMZ/Chunks/Primary.bin" + even +Gumball_16x16_Kos: + binclude "Levels/Gumball/Blocks/Primary.bin" + even +Gumball_8x8_KosM: + binclude "Levels/Gumball/Tiles/Gumball.bin" + even +Gumball_128x128_Kos: + binclude "Levels/Gumball/Chunks/Primary.bin" + even diff --git a/Lockon S3/Screen Events.asm b/Lockon S3/Screen Events.asm index 8b7b0d19..9c2cb814 100644 --- a/Lockon S3/Screen Events.asm +++ b/Lockon S3/Screen Events.asm @@ -733,9 +733,12 @@ AIZ1_IntroDrawArray: AIZ1_IntroDeformArray: dc.w $3E0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 dc.w 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, $7FFF -AIZ1_BGDrawArray:dc.w $220, $7FFF -AIZ1_DeformArray:dc.w $D0, $20, $30, $30, $10, $10, $10, $800D, $F, 6, $E, $50, $20, $7FFF -AIZ_FlameVScroll:dc.b 0, $FF, $FE, $FB, $F8, $F6, $F3, $F2, $F1, $F2, $F3, $F6, $F9, $FB, $FE, $FF +AIZ1_BGDrawArray: + dc.w $220, $7FFF +AIZ1_DeformArray: + dc.w $D0, $20, $30, $30, $10, $10, $10, $800D, $F, 6, $E, $50, $20, $7FFF +AIZ_FlameVScroll: + dc.b 0, $FF, $FE, $FB, $F8, $F6, $F3, $F2, $F1, $F2, $F3, $F6, $F9, $FB, $FE, $FF ; --------------------------------------------------------------------------- AIZ2_Deform: @@ -965,11 +968,13 @@ Map_AIZ2BGTree: include "Levels/AIZ/Misc Object Data/Map - Act 2 Background Tree.asm" Map_AIZ2BossSmall: include "Levels/AIZ/Misc Object Data/Map - Act 2 Boss Small.asm" - -HCZ1_BGDeformArray:dc.w $40, 8, 8, 5, 5, 6, $F0, 6, 5, 5, 8, 8, $30, $80C0, $7FFF -HCZ2_BGDeformArray:dc.w 8, 8, $90, $10, 8, $30, $18, 8, 8, $A8, $30, $18 +HCZ1_BGDeformArray: + dc.w $40, 8, 8, 5, 5, 6, $F0, 6, 5, 5, 8, 8, $30, $80C0, $7FFF +HCZ2_BGDeformArray: + dc.w 8, 8, $90, $10, 8, $30, $18, 8, 8, $A8, $30, $18 dc.w 8, 8, $A8, $30, $18, 8, 8, $B0, $10, 8, $7FFF -HCZ2_BGDeformIndex:dc.b 3, $A +HCZ2_BGDeformIndex: + dc.b 3, $A dc.b $14,$1E dc.b $2C, 2 dc.b $C,$16 @@ -1023,7 +1028,8 @@ loc_23C9AA: move.w d0,-4(a1) rts ; --------------------------------------------------------------------------- -MGZ1_BGDeformArray:dc.w $10, 4, 4, 8, 8, 8, $D, $13, 8, 8, 8, 8, $18, $7FFF +MGZ1_BGDeformArray: + dc.w $10, 4, 4, 8, 8, 8, $D, $13, 8, 8, 8, 8, $18, $7FFF MGZ2_QuakeEventArray: dc.w $780, $7C0, $580, $600, $5A0, $7E0 ; Player X boundaries, Player Y boundaries, Level size reset val dc.w $31C0, $3200, $1C0, $280, $1E0, $2F60 @@ -1032,7 +1038,8 @@ MGZ2_ChunkEventArray: dc.w $F68, $F78, $500, $580, $F00, $500 ; Player X boundaries, Player Y boundaries, Screen redraw area dc.w $3680, $3700, $2F0, $380, $3700, $280 dc.w $3000, $3080, $770, $800, $3080, $700 -MGZ2_ScreenRedrawArray:dc.w $40, 3 +MGZ2_ScreenRedrawArray: + dc.w $40, 3 dc.w $50, 3 dc.w $50, 4 dc.w $60, 4 @@ -1055,7 +1062,8 @@ MGZ2_ScreenRedrawArray:dc.w $40, 3 dc.w $C0, 3 dc.w $D0, 2 dc.w $E0, 1 -MGZ2_ChunkReplaceArray:dc.w $100, $500 +MGZ2_ChunkReplaceArray: + dc.w $100, $500 dc.w $180, $580 dc.w $200, $600 dc.w $280, $680 @@ -1079,8 +1087,10 @@ MGZ2_ChunkReplaceArray:dc.w $100, $500 dc.w 0, $F80 dc.w 0,$1000 dc.w $80, $480 -MGZ2_CollapseScrollDelay:dc.w $A, $10, 2, 8, $E, 6, 0, $C, $12, 4 -MGZ2_FGVScrollArray:dc.w $3CA0, $20, $20, $20, $20, $20, $20, $20, $20,$7FFF +MGZ2_CollapseScrollDelay: + dc.w $A, $10, 2, 8, $E, 6, 0, $C, $12, 4 +MGZ2_FGVScrollArray: + dc.w $3CA0, $20, $20, $20, $20, $20, $20, $20, $20,$7FFF ; --------------------------------------------------------------------------- MGZ2_BGDeform: @@ -1195,11 +1205,15 @@ loc_23D2B4: dbf d0,loc_23D2B4 rts ; --------------------------------------------------------------------------- -MGZ2_BGDrawArray:dc.w $200, $7FFF -MGZ2_BGDeformArray:dc.w $10, $10, $10, $10, $10, $18, 8, $10, 8, 8, $10, 8 +MGZ2_BGDrawArray: + dc.w $200, $7FFF +MGZ2_BGDeformArray: + dc.w $10, $10, $10, $10, $10, $18, 8, $10, 8, 8, $10, 8 dc.w 8, 8, 5, $2B, $C, 6, 6, 8, 8, $18, $D8, $7FFF -MGZ2_BGDeformIndex:dc.w $1C, $18, $1A, $C, 6, $14, 2, $10, $16, $12, $A, 0, 8, 4, $E -MGZ2_BGDeformOffset:dc.w -5, -8, 9, $A, 2, -$C, 3, $10, -1, $D, -$F, 6, -$B, -4, $E +MGZ2_BGDeformIndex: + dc.w $1C, $18, $1A, $C, 6, $14, 2, $10, $16, $12, $A, 0, 8, 4, $E +MGZ2_BGDeformOffset: + dc.w -5, -8, 9, $A, 2, -$C, 3, $10, -1, $D, -$F, 6, -$B, -4, $E dc.w -8, $10, 8, 0, -8, $10, 8, 0 ; --------------------------------------------------------------------------- @@ -1242,7 +1256,8 @@ sub_23DED6: move.w #$402,(a1) rts ; --------------------------------------------------------------------------- -ICZ1_IntroBGDeformArray:dc.w $44, $C, $B, $D, $18, $50, 2, 6, 8, $10, $18, $20, $28, $7FFF +ICZ1_IntroBGDeformArray: + dc.w $44, $C, $B, $D, $18, $50, 2, 6, 8, $10, $18, $20, $28, $7FFF ; --------------------------------------------------------------------------- ICZ2_OutDeform: @@ -1395,8 +1410,10 @@ sub_23E21E: move.l #$2000600,(a1) rts ; --------------------------------------------------------------------------- -ICZ2_OutBGDeformArray:dc.w $5A, $26, $8030, $7FFF -ICZ2_InBGDeformArray:dc.w $1A0, $40, $20, $18, $40, 8, 8, $18, $7FFF +ICZ2_OutBGDeformArray: + dc.w $5A, $26, $8030, $7FFF +ICZ2_InBGDeformArray: + dc.w $1A0, $40, $20, $18, $40, 8, 8, $18, $7FFF ; --------------------------------------------------------------------------- LBZ1_CheckLayoutMod: @@ -1537,16 +1554,20 @@ loc_23E536: dbf d1,loc_23E536 rts ; --------------------------------------------------------------------------- -LBZ1_FGVScrollArray:dc.w $3B60, $10, $10, $10, $10, $10, $10, $10, $10, $10, $10, $7FFF -LBZ1_LayoutModRange:dc.w $13E0,$16A0, $100, $580 +LBZ1_FGVScrollArray: + dc.w $3B60, $10, $10, $10, $10, $10, $10, $10, $10, $10, $10, $7FFF +LBZ1_LayoutModRange: + dc.w $13E0,$16A0, $100, $580 dc.w $2160,$2520, 0, $700 dc.w $3A60,$3BA0, 0, $600 dc.w $3DE0,$3FA0, 0, $300 -LBZ1_LayoutModExitRange:dc.w $1376,$170A +LBZ1_LayoutModExitRange: + dc.w $1376,$170A dc.w $20F6,$258A dc.w $39F6,$3C0A dc.w $3D76,$400A -LBZ1_CollapseScrollSpeed:dc.w $1EE, $1F2, $C7, $1B3, $1B7, $198, $E, $139 +LBZ1_CollapseScrollSpeed: + dc.w $1EE, $1F2, $C7, $1B3, $1B7, $198, $E, $139 ; --------------------------------------------------------------------------- LBZ1_Deform: @@ -1593,12 +1614,16 @@ loc_23E79A: addq.w #7,(a1) rts ; --------------------------------------------------------------------------- -LBZ2_BGDeformArray:dc.w $C0, $40, $38, $18, $28, $10, $10, $10, $18, $40, $20, $10, $20 +LBZ2_BGDeformArray: + dc.w $C0, $40, $38, $18, $28, $10, $10, $10, $18, $40, $20, $10, $20 dc.w $70, $30, $80E0, $20, $7FFF -LBZ2_DEBGDeformArray:dc.w $38, $18, $28, $10, $10, $10, $18, $40, $38, $18, $28, $10, $10 +LBZ2_DEBGDeformArray: + dc.w $38, $18, $28, $10, $10, $10, $18, $40, $38, $18, $28, $10, $10 dc.w $10, $18, $40, $20, $10, $20, $70, $60, $10, $805F, $7FFF -LBZ2_CloudDeformArray:dc.w $16, $E, $A, $14, $C, 6, $18, $10, $12, 2, 8, 4, 0 -LBZ2_BGUWDeformRange:dc.w 7, 1, 3, 1, 7 +LBZ2_CloudDeformArray: + dc.w $16, $E, $A, $14, $C, 6, $18, $10, $12, 2, 8, 4, 0 +LBZ2_BGUWDeformRange: + dc.w 7, 1, 3, 1, 7 ; --------------------------------------------------------------------------- Gumball_ScreenInit: @@ -1648,7 +1673,8 @@ Gumball_VScroll: move.w d1,$E(a1) rts ; --------------------------------------------------------------------------- -Gumball_VScrollArray:dc.w $C0, $80, $7FFF +Gumball_VScrollArray: + dc.w $C0, $80, $7FFF ; --------------------------------------------------------------------------- Gumball_BackgroundInit: diff --git a/s3.asm b/s3.asm index a4996b58..9b75bd4d 100644 --- a/s3.asm +++ b/s3.asm @@ -1727,22 +1727,22 @@ loc_15B0: ; --------------------------------------------------------------------------- Z80_DefaultVariables: - dc.b 0 ; Unused 1 - dc.b 0 ; Unused 2 - dc.b 0 ; zPalFlag - dc.b 0 ; Unused 3 - dc.b 0 ; zPalDblUpdCounter - dc.b 0 ; zSoundQueue0 - dc.b 0 ; zSoundQueue1 - dc.b 0 ; zSoundQueue2 - dc.b 0 ; zTempoSpeedup - dc.b 0 ; zNextSound - dc.b 0 ; zMusicNumber - dc.b 0 ; zSFXNumber0 - dc.b 0 ; zSFXNumber1 - dc.b 0 ; zFadeOutTimeout - dc.b 0 ; zFadeDelay - dc.b 0 ; zFadeDelayTimeout + dc.b 0 ; Unused 1 + dc.b 0 ; Unused 2 + dc.b 0 ; zPalFlag + dc.b 0 ; Unused 3 + dc.b 0 ; zPalDblUpdCounter + dc.b 0 ; zSoundQueue0 + dc.b 0 ; zSoundQueue1 + dc.b 0 ; zSoundQueue2 + dc.b 0 ; zTempoSpeedup + dc.b 0 ; zNextSound + dc.b 0 ; zMusicNumber + dc.b 0 ; zSFXNumber0 + dc.b 0 ; zSFXNumber1 + dc.b 0 ; zFadeOutTimeout + dc.b 0 ; zFadeDelay + dc.b 0 ; zFadeDelayTimeout ; =============== S U B R O U T I N E ======================================= @@ -6724,7 +6724,8 @@ loc_572E: byte_573A: dc.b $F8, $F8, 8, 8, $F4, $F4, $F4, $C, $C, $C dc.b $1C, $72, $83, $84, $8B, $91, $9F, $A0, $A5, $A6 byte_574E: dc.b $2E, $C6, $33, $C5, $24, $2A, $44, $1F, $27, $2B -WaterTransition_AIZ1:dc.w $F +WaterTransition_AIZ1: + dc.w $F dc.w 2 dc.w $68 dc.w $62 @@ -6741,7 +6742,8 @@ WaterTransition_AIZ1:dc.w $F dc.w $3A dc.w $2E dc.w $28 -WaterTransition_AIZ2:dc.w $12 +WaterTransition_AIZ2: + dc.w $12 dc.w $6E dc.w $68 dc.w 2 @@ -6761,7 +6763,8 @@ WaterTransition_AIZ2:dc.w $12 dc.w $3A dc.w $2E dc.w $28 -WaterTransition_CNZ2ICZ2:dc.w $13 +WaterTransition_CNZ2ICZ2: + dc.w $13 dc.w $6E dc.w $68 dc.w $7A @@ -6782,7 +6785,8 @@ WaterTransition_CNZ2ICZ2:dc.w $13 dc.w $2E dc.w $28 dc.w $54 -WaterTransition_HCZLBZ1:dc.w $13 +WaterTransition_HCZLBZ1: + dc.w $13 dc.w 2 dc.w $74 dc.w $62 @@ -6803,7 +6807,8 @@ WaterTransition_HCZLBZ1:dc.w $13 dc.w $3A dc.w $22 dc.w $4E -WaterTransition_LBZ2:dc.w $13 +WaterTransition_LBZ2: + dc.w $13 dc.w 2 dc.w $6E dc.w $68 @@ -6824,7 +6829,8 @@ WaterTransition_LBZ2:dc.w $13 dc.w $3A dc.w $22 dc.w $4E -WaterTransition_Unk:dc.w $13 +WaterTransition_Unk: + dc.w $13 dc.w 2 dc.w 8 dc.w $E @@ -8630,7 +8636,8 @@ MapEni_S2LevSel:binclude "General/Sprites/S2Menu/Enigma Map/Level Select.bin" MapEni_S2LevSelIcon: binclude "General/Sprites/S2Menu/Enigma Map/Level Select Icons.bin" even -AniPLC_SONICMILES:dc.w 0 +AniPLC_SONICMILES: + dc.w 0 dc.l ArtUnc_SONICMILES+$FF000000 dc.w $20 dc.b 6, $A @@ -11799,7 +11806,8 @@ sub_9F48: ; End of function sub_9F48 ; --------------------------------------------------------------------------- -VRAMDatList_CompetitionLevelSelect:dc.w $18 +VRAMDatList_CompetitionLevelSelect: + dc.w $18 dc.l RAM_start dc.w $C098 dc.w $1A @@ -11900,7 +11908,8 @@ VRAMDatList_CompetitionLevelSelect:dc.w $18 dc.w $D3D0 dc.w 8 dc.w 1 -ObjDat_CompetitionMatchRace:dc.w $B +ObjDat_CompetitionMatchRace: + dc.w $B dc.l Obj_Competition_ZoneSelect dc.w $F4 dc.w 0 @@ -11973,7 +11982,8 @@ ObjDat_CompetitionMatchRace:dc.w $B dc.w $2000 dc.b 5 dc.b 0 -ObjDat_CompetitionTimeAttack:dc.w 5 +ObjDat_CompetitionTimeAttack: + dc.w 5 dc.l Obj_Competition_ZoneSelect dc.w $F4 dc.w $30 @@ -12851,7 +12861,8 @@ ObjDat_ADA4: dc.w 7 dc.w 0 dc.b 0 dc.b 1 -VRAMDatList_AE06:dc.w 8 +VRAMDatList_AE06: + dc.w 8 dc.l RAM_start dc.w $E000 dc.w $27 @@ -13190,7 +13201,8 @@ ObjDat_B28C: dc.w 4 dc.w 0 dc.b 0 dc.b 2 -VRAMDatList_B2CA:dc.w 8 +VRAMDatList_B2CA: + dc.w 8 dc.l RAM_start dc.w $E000 dc.w $27 @@ -13639,7 +13651,8 @@ locret_B80E: ; End of function SaveGame ; --------------------------------------------------------------------------- -SaveGame_NextLevel:dc.b 1, 2, 3, 5, 5, 6, 7, 0 +SaveGame_NextLevel: + dc.b 1, 2, 3, 5, 5, 6, 7, 0 ; =============== S U B R O U T I N E ======================================= @@ -14019,7 +14032,8 @@ word_BD16: dc.w 7 dc.w $A dc.w $B Map_SaveScreen: include "General/Save Menu/Map - Save Screen General S3.asm" -ObjDat_SaveScreen:dc.w 9 +ObjDat_SaveScreen: + dc.w 9 dc.l Draw_Sprite dc.w $120 dc.w $14C @@ -15861,7 +15875,8 @@ S2_SpecialCNZBumpers: ; End of function S2_SpecialCNZBumpers ; --------------------------------------------------------------------------- -SpecialCNZBumpers_Index:dc.w SpecialCNZBumpers_Init-SpecialCNZBumpers_Index +SpecialCNZBumpers_Index: + dc.w SpecialCNZBumpers_Init-SpecialCNZBumpers_Index dc.w SpecialCNZBumpers_Main-SpecialCNZBumpers_Index ; --------------------------------------------------------------------------- @@ -26873,7 +26888,8 @@ Obj_Air_CountDown: move.w AirCountdown_Index(pc,d0.w),d1 jmp AirCountdown_Index(pc,d1.w) ; --------------------------------------------------------------------------- -AirCountdown_Index:dc.w AirCountdown_Init-AirCountdown_Index +AirCountdown_Index: + dc.w AirCountdown_Init-AirCountdown_Index dc.w AirCountdown_Animate-AirCountdown_Index dc.w AirCountdown_ChkWater-AirCountdown_Index dc.w AirCountdown_Display-AirCountdown_Index @@ -27284,7 +27300,8 @@ Obj_S2Shield: move.w Obj_S2Shield_Index(pc,d0.w),d1 jmp Obj_S2Shield_Index(pc,d1.w) ; --------------------------------------------------------------------------- -Obj_S2Shield_Index:dc.w Obj_S2Shield_Init-Obj_S2Shield_Index +Obj_S2Shield_Index: + dc.w Obj_S2Shield_Init-Obj_S2Shield_Index dc.w Obj_S2Shield_Main-Obj_S2Shield_Index ; --------------------------------------------------------------------------- @@ -31422,7 +31439,8 @@ loc_1A89C: ; End of function Do_ResizeEvents ; --------------------------------------------------------------------------- -LevelResizeArray:dc.w AIZ1_Resize-LevelResizeArray +LevelResizeArray: + dc.w AIZ1_Resize-LevelResizeArray dc.w AIZ2_Resize-LevelResizeArray dc.w HCZ1_Resize-LevelResizeArray dc.w HCZ2_Resize-LevelResizeArray @@ -41907,8 +41925,7 @@ GetScalars: ; --------------------------------------------------------------------------- ScalarTable: binclude "General/Special Stage/Scalars.bin" even -Map_SphereTest: - include "General/Special Stage/Map - Eosian Spheres.asm" +Map_SphereTest: include "General/Special Stage/Map - Eosian Spheres.asm" ; --------------------------------------------------------------------------- Obj_TwistedRamp: @@ -42076,7 +42093,8 @@ loc_23E3C: loc_23E48: jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- -LBZMovingPlatformIndex:dc.w Platform_Stationary-LBZMovingPlatformIndex +LBZMovingPlatformIndex: + dc.w Platform_Stationary-LBZMovingPlatformIndex dc.w Platform_Horizontal64-LBZMovingPlatformIndex dc.w Platform_Horizontal128-LBZMovingPlatformIndex dc.w Platform_Vertical64-LBZMovingPlatformIndex @@ -42091,7 +42109,8 @@ LBZMovingPlatformIndex:dc.w Platform_Stationary-LBZMovingPlatformIndex dc.w Platform_Horizontal256-LBZMovingPlatformIndex dc.w Platform_FallingDelayed-LBZMovingPlatformIndex dc.w Platform_Falling-LBZMovingPlatformIndex -FloatingPlatformIndex:dc.w Platform_Stationary-FloatingPlatformIndex +FloatingPlatformIndex: + dc.w Platform_Stationary-FloatingPlatformIndex dc.w Platform_Horizontal64-FloatingPlatformIndex dc.w Platform_Horizontal128-FloatingPlatformIndex dc.w Platform_Vertical64-FloatingPlatformIndex @@ -48000,7 +48019,8 @@ sub_28580: ; End of function sub_28580 ; --------------------------------------------------------------------------- -AutoTunnel_Index:dc.w Obj_AutoTunnelInit-AutoTunnel_Index +AutoTunnel_Index: + dc.w Obj_AutoTunnelInit-AutoTunnel_Index dc.w Obj_AutoTunnelRun-AutoTunnel_Index dc.w Obj_AutoTunnelLastMove-AutoTunnel_Index ; --------------------------------------------------------------------------- @@ -48709,7 +48729,8 @@ LBZTubeElevator_Action: ; End of function LBZTubeElevator_Action ; --------------------------------------------------------------------------- -LBZTubeElevator_Index:dc.w LBZTubeElevator_WaitPlayer-LBZTubeElevator_Index +LBZTubeElevator_Index: + dc.w LBZTubeElevator_WaitPlayer-LBZTubeElevator_Index dc.w LBZTubeElevator_StartSpin-LBZTubeElevator_Index dc.w LBZTubeElevator_MovePath-LBZTubeElevator_Index dc.w LBZTubeElevator_SlowSpin-LBZTubeElevator_Index @@ -49075,7 +49096,8 @@ loc_2915E: movea.l (sp)+,a2 rts ; --------------------------------------------------------------------------- -LBZTubeElevator_PlayerFrame:dc.b $55 +LBZTubeElevator_PlayerFrame: + dc.b $55 dc.b $59 dc.b $5A dc.b $5B @@ -49087,7 +49109,8 @@ LBZTubeElevator_PlayerFrame:dc.b $55 dc.b $58 dc.b $57 dc.b $56 -LBZTubeElevator_PlayerFlip:dc.b 0 +LBZTubeElevator_PlayerFlip: + dc.b 0 dc.b 1 dc.b 1 dc.b 0 @@ -52900,7 +52923,8 @@ loc_2CD06: loc_2CD1C: jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -TitleCard_LevelGfx:dc.l ArtKosM_AIZTitleCard +TitleCard_LevelGfx: + dc.l ArtKosM_AIZTitleCard dc.l ArtKosM_HCZTitleCard dc.l ArtKosM_MGZTitleCard dc.l ArtKosM_CNZTitleCard @@ -52922,7 +52946,8 @@ TitleCard_LevelGfx:dc.l ArtKosM_AIZTitleCard dc.l ArtKosM_BonusTitleCard dc.l ArtKosM_BonusTitleCard dc.l ArtKosM_BonusTitleCard -ObjArray_TtlCard:dc.l Obj_TitleCardName +ObjArray_TtlCard: + dc.l Obj_TitleCardName dc.w $120 dc.w $260 dc.w $E0 @@ -52950,14 +52975,16 @@ ObjArray_TtlCard:dc.l Obj_TitleCardName dc.b 1 dc.b 0 dc.w 1 -ObjArray_TtlCard2:dc.l Obj_TitleCardElement2 +ObjArray_TtlCard2: + dc.l Obj_TitleCardElement2 dc.w $15C dc.w $21C dc.w $BC dc.b $12 dc.b $80 dc.w 1 -ObjArray_TtlCardBonus:dc.l Obj_TitleCardElement +ObjArray_TtlCardBonus: + dc.l Obj_TitleCardElement dc.w $C8 dc.w $188 dc.w $E8 @@ -52979,7 +53006,8 @@ Obj_LevelResults: move.w LevelResults_Index(pc,d0.w),d1 jmp LevelResults_Index(pc,d1.w) ; --------------------------------------------------------------------------- -LevelResults_Index:dc.w Obj_LevelResultsInit-LevelResults_Index +LevelResults_Index: + dc.w Obj_LevelResultsInit-LevelResults_Index dc.w Obj_LevelResultsCreate-LevelResults_Index dc.w Obj_LevelResultsWait-LevelResults_Index dc.w Obj_LevelResultsWait2-LevelResults_Index @@ -53358,7 +53386,8 @@ TimeBonus: dc.w 5000 dc.w 300 dc.w 100 dc.w 10 -ObjArray_LevResults:dc.l Obj_LevResultsCharName +ObjArray_LevResults: + dc.l Obj_LevResultsCharName dc.w $E0 dc.w $FDE0 dc.w $B8 @@ -57927,7 +57956,8 @@ loc_3176A: ; End of function sub_3161A ; --------------------------------------------------------------------------- -PlayerTwistFrames:dc.b $55 +PlayerTwistFrames: + dc.b $55 dc.b $59 dc.b $5A dc.b $5B @@ -70251,9 +70281,12 @@ AIZ1_IntroDrawArray: AIZ1_IntroDeformArray: dc.w $3E0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 dc.w 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, $7FFF -AIZ1_BGDrawArray:dc.w $220, $7FFF -AIZ1_DeformArray:dc.w $D0, $20, $30, $30, $10, $10, $10, $800D, $F, 6, $E, $50, $20, $7FFF -AIZ_FlameVScroll:dc.b 0, $FF, $FE, $FB, $F8, $F6, $F3, $F2, $F1, $F2, $F3, $F6, $F9, $FB, $FE, $FF +AIZ1_BGDrawArray: + dc.w $220, $7FFF +AIZ1_DeformArray: + dc.w $D0, $20, $30, $30, $10, $10, $10, $800D, $F, 6, $E, $50, $20, $7FFF +AIZ_FlameVScroll: + dc.b 0, $FF, $FE, $FB, $F8, $F6, $F3, $F2, $F1, $F2, $F3, $F6, $F9, $FB, $FE, $FF ; --------------------------------------------------------------------------- AIZ2_ScreenInit: @@ -70371,9 +70404,11 @@ HInt6: move.w (Camera_Y_pos_copy).w,(VDP_data_port).l rte ; --------------------------------------------------------------------------- -AIZ2SE_BGShipDrawArray1:dc.w $180 +AIZ2SE_BGShipDrawArray1: + dc.w $180 dc.w $7FFF -AIZ2SE_BGShipDrawArray2:dc.w $A80 +AIZ2SE_BGShipDrawArray2: + dc.w $A80 dc.w $7FFF ; --------------------------------------------------------------------------- @@ -71590,7 +71625,8 @@ locret_3C58E: ; End of function HCZ1_Deform ; --------------------------------------------------------------------------- -HCZ1_BGDeformArray:dc.w $40, 8, 8, 5, 5, 6, $F0, 6, 5, 5, 8, 8, $30, $80C0, $7FFF +HCZ1_BGDeformArray: + dc.w $40, 8, 8, 5, 5, 6, $F0, 6, 5, 5, 8, 8, $30, $80C0, $7FFF ; --------------------------------------------------------------------------- HCZ2_ScreenInit: @@ -71820,9 +71856,11 @@ loc_3C7AC: ; End of function HCZ2_Deform ; --------------------------------------------------------------------------- -HCZ2_BGDeformArray:dc.w 8, 8, $90, $10, 8, $30, $18, 8, 8, $A8, $30, $18 +HCZ2_BGDeformArray: + dc.w 8, 8, $90, $10, 8, $30, $18, 8, 8, $A8, $30, $18 dc.w 8, 8, $A8, $30, $18, 8, 8, $B0, $10, 8, $7FFF -HCZ2_BGDeformIndex:dc.b 3, $A +HCZ2_BGDeformIndex: + dc.b 3, $A dc.b $14,$1E dc.b $2C, 2 dc.b $C,$16 @@ -72008,7 +72046,8 @@ locret_3C9F6: ; End of function Do_ShakeSound ; --------------------------------------------------------------------------- -MGZ1_BGDeformArray:dc.w $10, 4, 4, 8, 8, 8, $D, $13, 8, 8, 8, 8, $18, $7FFF +MGZ1_BGDeformArray: + dc.w $10, 4, 4, 8, 8, 8, $D, $13, 8, 8, 8, 8, $18, $7FFF ; --------------------------------------------------------------------------- MGZ2_ScreenInit: @@ -72575,7 +72614,8 @@ MGZ2_ChunkEventArray: dc.w $F68, $F78, $500, $580, $F00, $500 dc.w $3680, $3700, $2F0, $380, $3700, $280 dc.w $3000, $3080, $770, $800, $3080, $700 -MGZ2_ScreenRedrawArray:dc.w $40, 3 +MGZ2_ScreenRedrawArray: + dc.w $40, 3 dc.w $50, 3 dc.w $50, 4 dc.w $60, 4 @@ -72598,7 +72638,8 @@ MGZ2_ScreenRedrawArray:dc.w $40, 3 dc.w $C0, 3 dc.w $D0, 2 dc.w $E0, 1 -MGZ2_ChunkReplaceArray:dc.w $100, $500 +MGZ2_ChunkReplaceArray: + dc.w $100, $500 dc.w $180, $580 dc.w $200, $600 dc.w $280, $680 @@ -72622,8 +72663,10 @@ MGZ2_ChunkReplaceArray:dc.w $100, $500 dc.w 0, $F80 dc.w 0,$1000 dc.w $80, $480 -MGZ2_CollapseScrollDelay:dc.w $A, $10, 2, 8, $E, 6, 0, $C, $12, 4 -MGZ2_FGVScrollArray:dc.w $3CA0, $20, $20, $20, $20, $20, $20, $20, $20,$7FFF +MGZ2_CollapseScrollDelay: + dc.w $A, $10, 2, 8, $E, 6, 0, $C, $12, 4 +MGZ2_FGVScrollArray: + dc.w $3CA0, $20, $20, $20, $20, $20, $20, $20, $20,$7FFF ; --------------------------------------------------------------------------- MGZ2_BackgroundInit: @@ -73089,11 +73132,15 @@ loc_3D484: sub.w d1,(Player_2+y_pos).w rts ; --------------------------------------------------------------------------- -MGZ2_BGDrawArray:dc.w $200, $7FFF -MGZ2_BGDeformArray:dc.w $10, $10, $10, $10, $10, $18, 8, $10, 8, 8, $10, 8 +MGZ2_BGDrawArray: + dc.w $200, $7FFF +MGZ2_BGDeformArray: + dc.w $10, $10, $10, $10, $10, $18, 8, $10, 8, 8, $10, 8 dc.w 8, 8, 5, $2B, $C, 6, 6, 8, 8, $18, $D8, $7FFF -MGZ2_BGDeformIndex:dc.w $1C, $18, $1A, $C, 6, $14, 2, $10, $16, $12, $A, 0, 8, 4, $E -MGZ2_BGDeformOffset:dc.w -5, -8, 9, $A, 2, -$C, 3, $10, -1, $D, -$F, 6, -$B, -4, $E +MGZ2_BGDeformIndex: + dc.w $1C, $18, $1A, $C, 6, $14, 2, $10, $16, $12, $A, 0, 8, 4, $E +MGZ2_BGDeformOffset: + dc.w -5, -8, 9, $A, 2, -$C, 3, $10, -1, $D, -$F, 6, -$B, -4, $E dc.w -8, $10, 8, 0, -8, $10, 8, 0 ; --------------------------------------------------------------------------- @@ -73606,7 +73653,8 @@ loc_3DA1E: st (Events_fg_5).w jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- -CNZ1_BGDeformArray:dc.w $80 +CNZ1_BGDeformArray: + dc.w $80 dc.w $30 dc.w $60 dc.w $C0 @@ -74098,7 +74146,8 @@ sub_3DED6: ; End of function sub_3DED6 ; --------------------------------------------------------------------------- -ICZ1_IntroBGDeformArray:dc.w $44, $C, $B, $D, $18, $50, 2, 6, 8, $10, $18, $20, $28, $7FFF +ICZ1_IntroBGDeformArray: + dc.w $44, $C, $B, $D, $18, $50, 2, 6, 8, $10, $18, $20, $28, $7FFF ; --------------------------------------------------------------------------- ICZ2_ScreenInit: @@ -74469,8 +74518,10 @@ sub_3E21E: ; End of function sub_3E21E ; --------------------------------------------------------------------------- -ICZ2_OutBGDeformArray:dc.w $5A, $26, $8030, $7FFF -ICZ2_InBGDeformArray:dc.w $1A0, $40, $20, $18, $40, 8, 8, $18, $7FFF +ICZ2_OutBGDeformArray: + dc.w $5A, $26, $8030, $7FFF +ICZ2_InBGDeformArray: + dc.w $1A0, $40, $20, $18, $40, 8, 8, $18, $7FFF ; --------------------------------------------------------------------------- LBZ1_ScreenInit: @@ -74871,16 +74922,20 @@ loc_3E56E: move.w #$100,d3 jmp (SolidObjectFull2).l ; --------------------------------------------------------------------------- -LBZ1_FGVScrollArray:dc.w $3B60, $10, $10, $10, $10, $10, $10, $10, $10, $10, $10, $7FFF -LBZ1_LayoutModRange:dc.w $13E0,$16A0, $100, $580 +LBZ1_FGVScrollArray: + dc.w $3B60, $10, $10, $10, $10, $10, $10, $10, $10, $10, $10, $7FFF +LBZ1_LayoutModRange: + dc.w $13E0,$16A0, $100, $580 dc.w $2160,$2520, 0, $700 dc.w $3A60,$3BA0, 0, $600 dc.w $3DE0,$3FA0, 0, $300 -LBZ1_LayoutModExitRange:dc.w $1376,$170A +LBZ1_LayoutModExitRange: + dc.w $1376,$170A dc.w $20F6,$258A dc.w $39F6,$3C0A dc.w $3D76,$400A -LBZ1_CollapseScrollSpeed:dc.w $1EE, $1F2, $C7, $1B3, $1B7, $198, $E, $139 +LBZ1_CollapseScrollSpeed: + dc.w $1EE, $1F2, $C7, $1B3, $1B7, $198, $E, $139 ; --------------------------------------------------------------------------- LBZ1_BackgroundInit: @@ -75037,8 +75092,10 @@ loc_3E79A: ; End of function LBZ1_Deform ; --------------------------------------------------------------------------- -LBZ1_BGDrawArray:dc.w $D0, $7FFF -LBZ1_BGDeformArray:dc.w $D0 +LBZ1_BGDrawArray: + dc.w $D0, $7FFF +LBZ1_BGDeformArray: + dc.w $D0 dc.w $18 dc.w 8 dc.w 8 @@ -75886,12 +75943,16 @@ locret_3EEDE: ; End of function LBZ2_EndFallingAccel ; --------------------------------------------------------------------------- -LBZ2_BGDeformArray:dc.w $C0, $40, $38, $18, $28, $10, $10, $10, $18, $40, $20, $10, $20 +LBZ2_BGDeformArray: + dc.w $C0, $40, $38, $18, $28, $10, $10, $10, $18, $40, $20, $10, $20 dc.w $70, $30, $80E0, $20, $7FFF -LBZ2_DEBGDeformArray:dc.w $38, $18, $28, $10, $10, $10, $18, $40, $38, $18, $28, $10, $10 +LBZ2_DEBGDeformArray: + dc.w $38, $18, $28, $10, $10, $10, $18, $40, $38, $18, $28, $10, $10 dc.w $10, $18, $40, $20, $10, $20, $70, $60, $10, $805F, $7FFF -LBZ2_CloudDeformArray:dc.w $16, $E, $A, $14, $C, 6, $18, $10, $12, 2, 8, 4, 0 -LBZ2_BGUWDeformRange:dc.w 7, 1, 3, 1, 7 +LBZ2_CloudDeformArray: + dc.w $16, $E, $A, $14, $C, 6, $18, $10, $12, 2, 8, 4, 0 +LBZ2_BGUWDeformRange: + dc.w 7, 1, 3, 1, 7 ; --------------------------------------------------------------------------- Gumball_ScreenInit: @@ -75950,7 +76011,8 @@ Gumball_VScroll: ; End of function Gumball_VScroll ; --------------------------------------------------------------------------- -Gumball_VScrollArray:dc.w $C0, $80, $7FFF +Gumball_VScrollArray: + dc.w $C0, $80, $7FFF ; --------------------------------------------------------------------------- Gumball_BackgroundInit: @@ -76513,7 +76575,8 @@ loc_3F664: ; End of function sub_3F650 ; --------------------------------------------------------------------------- -ChildObjDat_3F66E:dc.w 0 +ChildObjDat_3F66E: + dc.w 0 dc.l Obj_3F58E off_3F674: dc.l byte_3F834 dc.l byte_3F834 @@ -76809,11 +76872,13 @@ loc_4065C: jsr (Wait_VSync).l jmp (Pal_FadeFromBlack).l ; --------------------------------------------------------------------------- -Child6_EndingS3Logo:dc.w 2 +Child6_EndingS3Logo: + dc.w 2 dc.l loc_4069E dc.l loc_4078C dc.l loc_407FC -Child6_EndingTryAgain:dc.w 1 +Child6_EndingTryAgain: + dc.w 1 dc.l loc_40896 dc.l loc_409A2 ; --------------------------------------------------------------------------- @@ -77225,11 +77290,13 @@ locret_40B1A: ; End of function sub_40A5C ; --------------------------------------------------------------------------- -S3CreditsText_TryAgain:dc.w 0 +S3CreditsText_TryAgain: + dc.w 0 dc.w $996 dc.b "TRY AGAIN",0 even -S3CreditsText_Main:dc.w word_40B7C-S3CreditsText_Main +S3CreditsText_Main: + dc.w word_40B7C-S3CreditsText_Main dc.w word_40B94-S3CreditsText_Main dc.w word_40BC2-S3CreditsText_Main dc.w word_40BEC-S3CreditsText_Main @@ -77599,7 +77666,8 @@ word_4134C: dc.w 1 dc.w $78A dc.b " SEGA ",0 even -S3CreditsText_Dummy:dc.w word_4138C-S3CreditsText_Dummy +S3CreditsText_Dummy: + dc.w word_4138C-S3CreditsText_Dummy dc.w word_41396-S3CreditsText_Dummy dc.w word_413A0-S3CreditsText_Dummy dc.w word_413AA-S3CreditsText_Dummy @@ -77675,7 +77743,8 @@ S3Credits_PlaneMapSmall: dc.w $23, $18 dc.w $24, $F dc.w $25, $26 -S3Credits_PlaneMapLarge:dc.w word_4146C-S3Credits_PlaneMapLarge +S3Credits_PlaneMapLarge: + dc.w word_4146C-S3Credits_PlaneMapLarge dc.w word_4147A-S3Credits_PlaneMapLarge dc.w word_41488-S3Credits_PlaneMapLarge dc.w word_41496-S3Credits_PlaneMapLarge @@ -77778,7 +77847,8 @@ Pal_EndingS3LogoFlash: even Map_EndingGraphics: include "General/Ending/Map - S3 Ending Graphics.asm" -ChildObjDat_4192A:dc.w 0 +ChildObjDat_4192A: + dc.w 0 dc.l loc_40854 dc.w $1008 AniRaw_41932: dc.b $F, 1, 2, $FC @@ -79240,7 +79310,8 @@ ObjDat3_43FB8: dc.l Map_GumballBonus dc.b $10 dc.b $17 dc.b 0 -ChildObjDat_43FC4:dc.w 6 +ChildObjDat_43FC4: + dc.w 6 dc.l loc_43932 dc.b 0 dc.b 0 @@ -79275,11 +79346,14 @@ word_43FF0: dc.w 3 dc.l loc_43986 dc.b $30 dc.b $E8 -ChildObjDat_4400A:dc.w $F +ChildObjDat_4400A: + dc.w $F dc.l loc_43BF8 -ChildObjDat_44010:dc.w 0 +ChildObjDat_44010: + dc.w 0 dc.l loc_43A94 -ChildObjDat_44016:dc.w 0 +ChildObjDat_44016: + dc.w 0 dc.l loc_43C84 byte_4401C: dc.b 3 dc.b 5 @@ -79341,7 +79415,8 @@ loc_44248: jsr SSEntryRing_Index(pc,d1.w) bra.w SSEntryRing_Display ; --------------------------------------------------------------------------- -SSEntryRing_Index:dc.w SSEntryRing_Init-SSEntryRing_Index +SSEntryRing_Index: + dc.w SSEntryRing_Init-SSEntryRing_Index dc.w SSEntryRing_Main-SSEntryRing_Index dc.w SSEntryRing_Animate-SSEntryRing_Index ; --------------------------------------------------------------------------- @@ -79419,7 +79494,8 @@ Obj_SSEntryFlash: jsr (Perform_DPLC).l jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -SSEntryFlash_Index:dc.w SSEntryFlash_Init-SSEntryFlash_Index +SSEntryFlash_Index: + dc.w SSEntryFlash_Init-SSEntryFlash_Index dc.w SSEntryFlash_Main-SSEntryFlash_Index ; --------------------------------------------------------------------------- @@ -79504,7 +79580,8 @@ loc_4443C: jsr (Queue_Kos_Module).l jmp (Go_Delete_SpriteSlotted).l ; --------------------------------------------------------------------------- -ObjSlot_SSEntryRing:dc.w 0 +ObjSlot_SSEntryRing: + dc.w 0 dc.w make_art_tile($5A0,1,0) dc.w $40 dc.w 4 @@ -79515,7 +79592,8 @@ ObjSlot_SSEntryRing:dc.w 0 dc.b $20 dc.b 0 dc.b 0 -ObjSlot_SSEntryFlash:dc.w 0 +ObjSlot_SSEntryFlash: + dc.w 0 dc.w make_art_tile(ArtTile_Player_1,1,0) dc.w $18 dc.w 6 @@ -79526,13 +79604,17 @@ ObjSlot_SSEntryFlash:dc.w 0 dc.b $20 dc.b 0 dc.b 0 -ChildObjDat_44476:dc.w 0 +ChildObjDat_44476: + dc.w 0 dc.l Obj_SSEntryFlash -DPLCPtr_SSEntryRing:dc.l ArtUnc_SSEntryRing +DPLCPtr_SSEntryRing: + dc.l ArtUnc_SSEntryRing dc.l DPLC_SSEntryRing -DPLCPtr_SSEntryFlash:dc.l ArtUnc_SSEntryFlash +DPLCPtr_SSEntryFlash: + dc.l ArtUnc_SSEntryFlash dc.l DPLC_SSEntryFlash -AniRaw_SSEntryRing:dc.b 4 +AniRaw_SSEntryRing: + dc.b 4 dc.b 0 dc.b 0 dc.b 1 @@ -79550,7 +79632,8 @@ AniRaw_SSEntryRing:dc.b 4 dc.b 8 dc.b $B dc.b $FC -AniRaw_SSEntryFlash:dc.b 0 +AniRaw_SSEntryFlash: + dc.b 0 dc.b 0 dc.b 0 dc.b 1 @@ -79994,7 +80077,8 @@ loc_44BE0: jsr (Remove_From_TrackingSlot).l jmp (Go_Delete_Sprite).l ; --------------------------------------------------------------------------- -ChildObjDat_44BEC:dc.w 1 +ChildObjDat_44BEC: + dc.w 1 dc.l Obj_DecLevStartYGradual dc.w 0 dc.l Obj_IncLevEndXGradual @@ -80132,7 +80216,8 @@ loc_44DB8: jsr (Remove_From_TrackingSlot).l jmp (Go_Delete_Sprite).l ; --------------------------------------------------------------------------- -ChildObjDat_44DC4:dc.w 2 +ChildObjDat_44DC4: + dc.w 2 dc.l Obj_DecLevStartYGradual dc.w 0 dc.l Obj_DecLevStartXGradual @@ -80983,24 +81068,31 @@ ObjDat3_4571E: dc.l Map_AIZCorkFloor dc.b $18 dc.b 0 dc.b 0 -ChildObjDat_4572A:dc.w 0 +ChildObjDat_4572A: + dc.w 0 dc.l loc_44A78 -ChildObjDat_45730:dc.w 0 +ChildObjDat_45730: + dc.w 0 dc.l loc_44DD8 dc.w $E094 -ChildObjDat_45738:dc.w 0 +ChildObjDat_45738: + dc.w 0 dc.l loc_45136 dc.w $C000 -ChildObjDat_45740:dc.w 0 +ChildObjDat_45740: + dc.w 0 dc.l loc_4519E dc.w $F8F0 -ChildObjDat_45748:dc.w 3 +ChildObjDat_45748: + dc.w 3 dc.l loc_451CE -ChildObjDat_4574E:dc.w 3 +ChildObjDat_4574E: + dc.w 3 dc.l loc_45330 dc.b 2 dc.b $24 -ChildObjDat_45756:dc.w 0 +ChildObjDat_45756: + dc.w 0 dc.l loc_448EE dc.w $18 DPLCPtr_4575E: dc.l ArtUnc_CutsceneKnux @@ -81552,20 +81644,25 @@ ObjDat3_45E2A: dc.l Map_AIZIntroEmeralds dc.b 4 dc.b 1 dc.b 0 -ChildObjDat_45E36:dc.w 0 +ChildObjDat_45E36: + dc.w 0 dc.l loc_45B56 dc.w $DE2C -ChildObjDat_45E3E:dc.w 1 +ChildObjDat_45E3E: + dc.w 1 dc.l loc_45C00 dc.w $3804 dc.l loc_45C3E dc.w $1818 -ChildObjDat_45E4C:dc.w 0 +ChildObjDat_45E4C: + dc.w 0 dc.l loc_45C7C dc.w $18 -ChildObjDat_45E54:dc.w 0 +ChildObjDat_45E54: + dc.w 0 dc.l Obj_CutsceneKnuckles -ChildObjDat_45E5A:dc.w 6 +ChildObjDat_45E5A: + dc.w 6 dc.l loc_45CDC byte_45E60: dc.b 3, 8 dc.b $97, $96 @@ -81613,7 +81710,8 @@ Obj_RobotnikHead: jsr RobotnikHead_Index(pc,d1.w) jmp (Child_Draw_Sprite2).l ; --------------------------------------------------------------------------- -RobotnikHead_Index:dc.w Obj_RobotnikHeadInit-RobotnikHead_Index +RobotnikHead_Index: + dc.w Obj_RobotnikHeadInit-RobotnikHead_Index dc.w Obj_RobotnikHeadMain-RobotnikHead_Index dc.w Obj_RobotnikHeadEnd-RobotnikHead_Index ; --------------------------------------------------------------------------- @@ -81664,7 +81762,8 @@ Obj_RobotnikHead2: bne.w locret_45EE0 jmp (Child_Draw_Sprite2).l ; --------------------------------------------------------------------------- -RobotnikHead2_Index:dc.w Obj_RobotnikHeadInit-RobotnikHead2_Index +RobotnikHead2_Index: + dc.w Obj_RobotnikHeadInit-RobotnikHead2_Index dc.w Obj_RobotnikHeadMain-RobotnikHead2_Index dc.w Obj_RobotnikHeadEnd-RobotnikHead2_Index ; --------------------------------------------------------------------------- @@ -81678,7 +81777,8 @@ Obj_FBZRobotnikHead: jsr (Child_GetPriority).l jmp (Child_Draw_Sprite2).l ; --------------------------------------------------------------------------- -FBZRobotnikHead_Index:dc.w Obj_FBZRobotnikHeadInit-FBZRobotnikHead_Index +FBZRobotnikHead_Index: + dc.w Obj_FBZRobotnikHeadInit-FBZRobotnikHead_Index dc.w Obj_FBZRobotnikHeadMain-FBZRobotnikHead_Index dc.w Obj_RobotnikHeadEnd-FBZRobotnikHead_Index ; --------------------------------------------------------------------------- @@ -81730,7 +81830,8 @@ Obj_RobotnikHead3: jsr RobotnikHead3_Index(pc,d1.w) jmp (Child_Draw_Sprite2).l ; --------------------------------------------------------------------------- -RobotnikHead3_Index:dc.w Obj_RobotnikHead3Init-RobotnikHead3_Index +RobotnikHead3_Index: + dc.w Obj_RobotnikHead3Init-RobotnikHead3_Index dc.w Obj_RobotnikHead3Main-RobotnikHead3_Index dc.w Obj_RobotnikHeadEnd-RobotnikHead3_Index ; --------------------------------------------------------------------------- @@ -81783,7 +81884,8 @@ loc_46048: loc_46074: jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- -RobotnikHead4_Index:dc.w Obj_RobotnikHead3Init-RobotnikHead4_Index +RobotnikHead4_Index: + dc.w Obj_RobotnikHead3Init-RobotnikHead4_Index dc.w Obj_RobotnikHead3Main-RobotnikHead4_Index dc.w Obj_RobotnikHeadEnd-RobotnikHead4_Index ; --------------------------------------------------------------------------- @@ -81797,7 +81899,8 @@ Obj_RobotnikShip: bne.w locret_45EE0 jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -RobotnikShip_Index:dc.w loc_460A6-RobotnikShip_Index +RobotnikShip_Index: + dc.w loc_460A6-RobotnikShip_Index dc.w loc_460C2-RobotnikShip_Index dc.w loc_460F8-RobotnikShip_Index dc.w loc_4612A-RobotnikShip_Index @@ -81867,7 +81970,8 @@ Obj_RobotnikShip2: jsr RobotnikShip2_Index(pc,d1.w) jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -RobotnikShip2_Index:dc.w Obj_RobotnikShipInit-RobotnikShip2_Index +RobotnikShip2_Index: + dc.w Obj_RobotnikShipInit-RobotnikShip2_Index dc.w Obj_RobotnikShipMain-RobotnikShip2_Index dc.w Obj_RobotnikShip2Wait-RobotnikShip2_Index dc.w Obj_RobotnikShipReady-RobotnikShip2_Index @@ -81897,7 +82001,8 @@ Obj_RobotnikShip3: bne.s loc_461AC jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -RobotnikShip3_Index:dc.w Obj_RobotnikShipInit-RobotnikShip3_Index +RobotnikShip3_Index: + dc.w Obj_RobotnikShipInit-RobotnikShip3_Index dc.w Obj_RobotnikShipMain-RobotnikShip3_Index dc.w Obj_RobotnikShipWait-RobotnikShip3_Index dc.w Obj_RobotnikShipReady-RobotnikShip3_Index @@ -81990,7 +82095,8 @@ Obj_RobotnikShip4: jsr RobotnikShip4_Index(pc,d1.w) jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -RobotnikShip4_Index:dc.w Obj_RobotnikShipInit-RobotnikShip4_Index +RobotnikShip4_Index: + dc.w Obj_RobotnikShipInit-RobotnikShip4_Index dc.w Obj_RobotnikShipMain-RobotnikShip4_Index dc.w Obj_RobotnikShipWait-RobotnikShip4_Index dc.w Obj_RobotnikShipReady-RobotnikShip4_Index @@ -82004,7 +82110,8 @@ Obj_FBZRobotnikShip: jsr FBZRobotnikShip_Index(pc,d1.w) jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -FBZRobotnikShip_Index:dc.w Obj_FBZRobotnikShipInit-FBZRobotnikShip_Index +FBZRobotnikShip_Index: + dc.w Obj_FBZRobotnikShipInit-FBZRobotnikShip_Index dc.w Obj_FBZRobotnikShipMain-FBZRobotnikShip_Index dc.w Obj_FBZRobotnikShipWait-FBZRobotnikShip_Index dc.w Obj_FBZRobotnikShipFall-FBZRobotnikShip_Index @@ -82103,45 +82210,54 @@ Obj_RobotnikShipFlameMain: loc_463B6: jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- -ObjDat_RobotnikHead:dc.l Map_RobotnikShip +ObjDat_RobotnikHead: + dc.l Map_RobotnikShip dc.w $52E dc.w $280 dc.b $10 dc.b 8 dc.b 0 dc.b 0 -ObjDat_FBZRobotnikHead:dc.l Map_FBZRobotnikHead +ObjDat_FBZRobotnikHead: + dc.l Map_FBZRobotnikHead dc.w $410 dc.w $280 dc.b $10 dc.b 8 dc.b 0 dc.b 0 -ObjDat_RobotnikShip:dc.l Map_RobotnikShip +ObjDat_RobotnikShip: + dc.l Map_RobotnikShip dc.w $52E dc.w $280 dc.b $1C dc.b $20 dc.b 8 dc.b 0 -ObjDat2_RoboShipFlame:dc.w $280 +ObjDat2_RoboShipFlame: + dc.w $280 dc.b 8 dc.b 4 dc.b 6 dc.b 0 -Child1_MakeRoboHead:dc.w 0 +Child1_MakeRoboHead: + dc.w 0 dc.l Obj_RobotnikHead dc.w $E4 -Child1_MakeRoboHead2:dc.w 0 +Child1_MakeRoboHead2: + dc.w 0 dc.l Obj_RobotnikHead2 dc.w $E4 -Child1_MakeFBZRoboHead:dc.w 0 +Child1_MakeFBZRoboHead: + dc.w 0 dc.l Obj_FBZRobotnikHead dc.w $E4 -Child1_MakeRoboHead3:dc.w 0 +Child1_MakeRoboHead3: + dc.w 0 dc.l Obj_RobotnikHead3 dc.w $E4 -Child1_MakeRoboHead4:dc.w 0 +Child1_MakeRoboHead4: + dc.w 0 dc.l loc_46048 dc.w $E4 word_4640E: dc.w 0 @@ -82150,19 +82266,24 @@ word_4640E: dc.w 0 dc.w 0 dc.l Obj_RobotnikShip2 dc.w 0 -Child1_MakeRoboShip3:dc.w 0 +Child1_MakeRoboShip3: + dc.w 0 dc.l Obj_RobotnikShip3 dc.w $FA04 -ChildObjDat_46426:dc.w 0 +ChildObjDat_46426: + dc.w 0 dc.l Obj_RobotnikShip4 dc.w $F8 -ChildObjDat_4642E:dc.w 0 +ChildObjDat_4642E: + dc.w 0 dc.l Obj_FBZRobotnikShip dc.w 4 -Child1_MakeRoboShipFlame:dc.w 0 +Child1_MakeRoboShipFlame: + dc.w 0 dc.l Obj_RobotnikShipFlame dc.w $1E00 -AniRaw_RobotnikHead:dc.b 5 +AniRaw_RobotnikHead: + dc.b 5 dc.b 0 dc.b 1 dc.b $FC @@ -83272,39 +83393,46 @@ word_46F6C: dc.w $200 dc.b $14 dc.b 0 dc.b 0 -ChildObjDat_46F72:dc.w 1 +ChildObjDat_46F72: + dc.w 1 dc.l loc_4660E dc.w $20 dc.l loc_4665A dc.w $DC08 -ChildObjDat_46F80:dc.w 5 +ChildObjDat_46F80: + dc.w 5 dc.l loc_46D18 dc.w 0 -ChildObjDat_46F88:dc.w 2 +ChildObjDat_46F88: + dc.w 2 dc.l loc_4667C dc.w $E0 dc.l loc_4667C dc.w $9E4 dc.l loc_4667C dc.w $12E8 -ChildObjDat_46F9C:dc.w 2 +ChildObjDat_46F9C: + dc.w 2 dc.l loc_46B54 dc.w $E0 dc.l loc_46B54 dc.w $9E4 dc.l loc_46B54 dc.w $12E8 -ChildObjDat_46FB0:dc.w 1 +ChildObjDat_46FB0: + dc.w 1 dc.l loc_4675A dc.w 4 dc.l loc_46794 dc.w 4 -ChildObjDat_46FBE:dc.w 1 +ChildObjDat_46FBE: + dc.w 1 dc.l loc_4675A dc.w 4 dc.l loc_46BD8 dc.w 4 -Child1_AIZ_MinibossFlames:dc.w 3 +Child1_AIZ_MinibossFlames: + dc.w 3 dc.l Obj_AIZMiniboss_Flame dc.w $9C04 dc.l Obj_AIZMiniboss_Flame @@ -83313,10 +83441,12 @@ Child1_AIZ_MinibossFlames:dc.w 3 dc.w $BC04 dc.l Obj_AIZMiniboss_Flame dc.w $D403 -ChildObjDat_46FE6:dc.w 0 +ChildObjDat_46FE6: + dc.w 0 dc.l loc_468E4 dc.w 0 -ChildObjDat_46FEE:dc.w 6 +ChildObjDat_46FEE: + dc.w 6 dc.l loc_46CAE dc.w $DC dc.l loc_46CAE @@ -83331,10 +83461,12 @@ ChildObjDat_46FEE:dc.w 6 dc.w $4FC dc.l loc_46CAE dc.w $FCFC -ChildObjDat_4701A:dc.w 0 +ChildObjDat_4701A: + dc.w 0 dc.l Obj_BossExplosionSpecial dc.w 0 -ChildObjDat_47022:dc.w 3 +ChildObjDat_47022: + dc.w 3 dc.l loc_46DB6 dc.w $F0F8 dc.l loc_46DB6 @@ -83475,7 +83607,8 @@ Obj_AIZEndBossMain: bne.w locret_47246 jmp (Draw_And_Touch_Sprite).l ; --------------------------------------------------------------------------- -AIZ_EndBossIndex:dc.w Obj_AIZEndBossInit-AIZ_EndBossIndex +AIZ_EndBossIndex: + dc.w Obj_AIZEndBossInit-AIZ_EndBossIndex dc.w loc_471C2-AIZ_EndBossIndex dc.w loc_4720C-AIZ_EndBossIndex dc.w loc_47248-AIZ_EndBossIndex @@ -84361,7 +84494,8 @@ loc_47B08: ; End of function sub_47AFA ; --------------------------------------------------------------------------- -ObjDat_AIZEndBoss:dc.l Map_AIZEndBoss +ObjDat_AIZEndBoss: + dc.l Map_AIZEndBoss dc.w $A180 dc.w $280 dc.b $28 @@ -84399,7 +84533,8 @@ word_47B54: dc.w $8180 dc.b $30 dc.b $24 dc.b 0 -ObjDat_AIZEndBoss2:dc.l Map_AIZEndBoss +ObjDat_AIZEndBoss2: + dc.l Map_AIZEndBoss dc.w $8180 dc.w $100 dc.b $18 @@ -84411,36 +84546,46 @@ word_47B68: dc.w $180 dc.b $10 dc.b 0 dc.b 0 -ChildObjDat_47B6E:dc.w 1 +ChildObjDat_47B6E: + dc.w 1 dc.l loc_47486 dc.w $14FC dc.l loc_47486 dc.w $ECFC -ChildObjDat_47B7C:dc.w 0 +ChildObjDat_47B7C: + dc.w 0 dc.l loc_4759C dc.w $E400 -ChildObjDat_47B84:dc.w 0 +ChildObjDat_47B84: + dc.w 0 dc.l loc_47806 dc.w 0 -ChildObjDat_47B8C:dc.w 0 +ChildObjDat_47B8C: + dc.w 0 dc.l loc_477DC dc.w $D0 -ChildObjDat_47B94:dc.w 0 +ChildObjDat_47B94: + dc.w 0 dc.l loc_4768A dc.w $305 -ChildObjDat_47B9C:dc.w 0 +ChildObjDat_47B9C: + dc.w 0 dc.l loc_4768A dc.w 7 -ChildObjDat_47BA4:dc.w 0 +ChildObjDat_47BA4: + dc.w 0 dc.l loc_4768A dc.w $FD05 -ChildObjDat_47BAC:dc.w 0 +ChildObjDat_47BAC: + dc.w 0 dc.l loc_47718 dc.w 0 -ChildObjDat_47BB4:dc.w 0 +ChildObjDat_47BB4: + dc.w 0 dc.l loc_477A0 dc.w 0 -ChildObjDat_47BBC:dc.w 5 +ChildObjDat_47BBC: + dc.w 5 dc.l loc_47880 dc.w $F0F0 dc.l loc_47880 @@ -84453,9 +84598,11 @@ ChildObjDat_47BBC:dc.w 5 dc.w $F418 dc.l loc_47880 dc.w $C18 -ChildObjDat_47BE2:dc.w 0 +ChildObjDat_47BE2: + dc.w 0 dc.l Obj_EggCapsule -ChildObjDat_47BE8:dc.w 0 +ChildObjDat_47BE8: + dc.w 0 dc.l Obj_CutsceneKnuckles byte_47BEE: dc.b $2B, 0 dc.b $2B, 0 @@ -86015,7 +86162,8 @@ byte_48B8C: dc.b 2 dc.b $24 dc.b 0 dc.b 0 -Child1_HCZMiniboss_RocketsEngine:dc.w 4 +Child1_HCZMiniboss_RocketsEngine: + dc.w 4 dc.l Obj_HCZMiniboss_Rockets dc.w $1818 dc.l Obj_HCZMiniboss_Rockets @@ -86026,28 +86174,35 @@ Child1_HCZMiniboss_RocketsEngine:dc.w 4 dc.w $18E8 dc.l Obj_HCZMiniboss_Engine dc.w $24 -ChildObjDat_48BB2:dc.w 0 +ChildObjDat_48BB2: + dc.w 0 dc.l loc_48362 dc.w 0 -ChildObjDat_48BBA:dc.w 0 +ChildObjDat_48BBA: + dc.w 0 dc.l loc_482B0 dc.w 0 -ChildObjDat_48BC2:dc.w 2 +ChildObjDat_48BC2: + dc.w 2 dc.l loc_4830C dc.w 0 dc.l loc_4830C dc.w $F000 dc.l loc_4830C dc.w $1000 -ChildObjDat_48BD6:dc.w $1D +ChildObjDat_48BD6: + dc.w $1D dc.l loc_484A0 -ChildObjDat_48BDC:dc.w 0 +ChildObjDat_48BDC: + dc.w 0 dc.l loc_48554 word_48BE2: dc.w 0 dc.l loc_48608 -ChildObjDat_48BE8:dc.w 1 +ChildObjDat_48BE8: + dc.w 1 dc.l loc_48608 -ChildObjDat_48BEE:dc.w 3 +ChildObjDat_48BEE: + dc.w 3 dc.l loc_4870A dc.w $F4F4 dc.l loc_4870A @@ -86056,7 +86211,8 @@ ChildObjDat_48BEE:dc.w 3 dc.w $CF4 dc.l loc_4870A dc.w $C0C -ChildObjDat_48C08:dc.w 4 +ChildObjDat_48C08: + dc.w 4 dc.l loc_48732 dc.w $DC dc.l loc_48732 @@ -87568,7 +87724,8 @@ ObjDat3_49BC0: dc.l Map_HCZWaterWall dc.b $60 dc.b 1 dc.b 0 -ChildObjDat_49BCC:dc.w 4 +ChildObjDat_49BCC: + dc.w 4 dc.l loc_493CE dc.w $2312 dc.l loc_493CE @@ -87583,31 +87740,40 @@ word_49BEC: dc.w 0 dc.l loc_493CE dc.b $13 dc.b $A -ChildObjDat_49BF4:dc.w 0 +ChildObjDat_49BF4: + dc.w 0 dc.l loc_49586 dc.w 0 -ChildObjDat_49BFC:dc.w 0 +ChildObjDat_49BFC: + dc.w 0 dc.l loc_49078 dc.w 0 -ChildObjDat_49C04:dc.w 0 +ChildObjDat_49C04: + dc.w 0 dc.l loc_491E8 dc.w 0 -ChildObjDat_49C0C:dc.w 1 +ChildObjDat_49C0C: + dc.w 1 dc.l loc_49260 dc.w $FC00 dc.l loc_49260 dc.w $400 -ChildObjDat_49C1A:dc.w 0 +ChildObjDat_49C1A: + dc.w 0 dc.l loc_492AC dc.w 0 -ChildObjDat_49C22:dc.w 4 +ChildObjDat_49C22: + dc.w 4 dc.l loc_492CE -ChildObjDat_49C28:dc.w $13 +ChildObjDat_49C28: + dc.w $13 dc.l loc_49316 -ChildObjDat_49C2E:dc.w 0 +ChildObjDat_49C2E: + dc.w 0 dc.l Obj_RobotnikShip2 dc.w $C -ChildObjDat_49C36:dc.w 0 +ChildObjDat_49C36: + dc.w 0 dc.l loc_495C6 byte_49C3C: dc.b 7 dc.b 8 @@ -89726,7 +89892,8 @@ byte_4B380: dc.b 6 dc.b 4 dc.b 8 dc.b 6 -ObjDat_MGZDrillBoss:dc.l Map_MGZEndBoss +ObjDat_MGZDrillBoss: + dc.l Map_MGZEndBoss dc.w $233F dc.w $300 dc.b $24 @@ -89783,7 +89950,8 @@ ObjDat3_4B3C8: dc.l Map_ScaledArt dc.b $20 dc.b 0 dc.b 0 -ChildObjDat_4B3D4:dc.w 3 +ChildObjDat_4B3D4: + dc.w 3 dc.l loc_4A8D6 dc.w $EC0F dc.l loc_4A5FC @@ -89792,41 +89960,52 @@ ChildObjDat_4B3D4:dc.w 3 dc.w $818 dc.l loc_4AB4E dc.w $F418 -ChildObjDat_4B3EE:dc.w 0 +ChildObjDat_4B3EE: + dc.w 0 dc.l loc_4A69C dc.w $E900 -ChildObjDat_4B3F6:dc.w 0 +ChildObjDat_4B3F6: + dc.w 0 dc.l loc_4ABBE dc.w $10 -ChildObjDat_4B3FE:dc.w 9 +ChildObjDat_4B3FE: + dc.w 9 dc.l loc_4AC36 dc.w $18C0 -ChildObjDat_4B406:dc.w 9 +ChildObjDat_4B406: + dc.w 9 dc.l loc_4AC36 dc.w $E8C0 -ChildObjDat_4B40E:dc.w 0 +ChildObjDat_4B40E: + dc.w 0 dc.l loc_4A902 dc.w $C00 -ChildObjDat_4B416:dc.w 7 +ChildObjDat_4B416: + dc.w 7 dc.l loc_4AA86 dc.w $F000 -ChildObjDat_4B41E:dc.w 7 +ChildObjDat_4B41E: + dc.w 7 dc.l loc_4AA86 dc.w $1000 -ChildObjDat_4B426:dc.w 0 +ChildObjDat_4B426: + dc.w 0 dc.l loc_4A976 dc.w 0 -ChildObjDat_4B42E:dc.w 0 +ChildObjDat_4B42E: + dc.w 0 dc.l loc_4A9CC dc.w 0 -ChildObjDat_4B436:dc.w 2 +ChildObjDat_4B436: + dc.w 2 dc.l loc_4ACC6 dc.w $CEC dc.l loc_4ACC6 dc.w $F008 dc.l loc_4ACC6 dc.w $1408 -ChildObjDat_4B44A:dc.w 0 +ChildObjDat_4B44A: + dc.w 0 dc.l loc_4ACFC dc.w 0 dc.b 0, 5 @@ -90043,7 +90222,8 @@ Obj_CNZMinibossStart: bsr.w CNZMiniboss_CheckTopHit jmp (Draw_And_Touch_Sprite).l ; --------------------------------------------------------------------------- -CNZMiniboss_Index:dc.w Obj_CNZMinibossInit-CNZMiniboss_Index +CNZMiniboss_Index: + dc.w Obj_CNZMinibossInit-CNZMiniboss_Index dc.w Obj_CNZMinibossLower-CNZMiniboss_Index dc.w Obj_CNZMinibossMove-CNZMiniboss_Index dc.w Obj_CNZMinibossMove-CNZMiniboss_Index @@ -90183,7 +90363,8 @@ loc_4B7E8: jsr CNZMinibossTop_Index(pc,d1.w) jmp (Draw_And_Touch_Sprite).l ; --------------------------------------------------------------------------- -CNZMinibossTop_Index:dc.w Obj_CNZMinibossTopInit-CNZMinibossTop_Index +CNZMinibossTop_Index: + dc.w Obj_CNZMinibossTopInit-CNZMinibossTop_Index dc.w Obj_CNZMinibossTopWait-CNZMinibossTop_Index dc.w Obj_CNZMinibossTopWait2-CNZMinibossTop_Index dc.w Obj_CNZMinibossTopMain-CNZMinibossTop_Index @@ -90557,7 +90738,8 @@ word_4BC26: dc.w $F000 dc.w $34 dc.w $3C dc.w $48 -CNZMinibossDebris_Frames:dc.b $12, $13, $14, $14, $14, $14, $14, $14, $15, 0 +CNZMinibossDebris_Frames: + dc.b $12, $13, $14, $14, $14, $14, $14, $14, $15, 0 ; --------------------------------------------------------------------------- SetUp_CNZMinibossSwing: @@ -90817,47 +90999,57 @@ loc_4BE7C: ; End of function CNZMinibossTop_CheckHitBase ; --------------------------------------------------------------------------- -CNZMiniboss_BaseRange:dc.w $FFE8, $30 +CNZMiniboss_BaseRange: + dc.w $FFE8, $30 dc.w $FFF0, $20 -CNZMiniboss_CoilRange:dc.w $FFF4, $18 +CNZMiniboss_CoilRange: + dc.w $FFF4, $18 dc.w $10, $18 -CNZMiniboss_CoilOpenRange:dc.w $FFF4, $18 +CNZMiniboss_CoilOpenRange: + dc.w $FFF4, $18 dc.w $10, $38 -ObjDat_CNZMiniboss:dc.l Map_CNZMiniboss +ObjDat_CNZMiniboss: + dc.l Map_CNZMiniboss dc.w $A52E dc.w $280 dc.b $18 dc.b $30 dc.b 0 dc.b $C -ObjDat3_CNZMinibossTop:dc.w $200 +ObjDat3_CNZMinibossTop: + dc.w $200 dc.b $18 dc.b $10 dc.b 7 dc.b $AA -ObjDat3_CNZMinibossSpark:dc.w $200 +ObjDat3_CNZMinibossSpark: + dc.w $200 dc.b $C dc.b $18 dc.b $A dc.b $92 -ObjDat3_CNZMbossBounceEffect:dc.w $100 +ObjDat3_CNZMbossBounceEffect: + dc.w $100 dc.b 8 dc.b 8 dc.b $C dc.b 0 -ObjDat_CNZMinibossDebris:dc.l Map_CNZMiniboss +ObjDat_CNZMinibossDebris: + dc.l Map_CNZMiniboss dc.w $A52E dc.w $100 dc.b $10 dc.b $10 dc.b 0 dc.b 0 -Child1_CNZMinibossMakeTop:dc.w 1 +Child1_CNZMinibossMakeTop: + dc.w 1 dc.l loc_4B7E8 dc.w $2C dc.l Obj_CNZMinibossCoil dc.w $1C -Child1_CNZMinibossTimedSparks:dc.w 1 +Child1_CNZMinibossTimedSparks: + dc.w 1 dc.l Obj_CNZMinibossTimedSparks dc.w $EC18 dc.l Obj_CNZMinibossTimedSparks @@ -90865,22 +91057,27 @@ Child1_CNZMinibossTimedSparks:dc.w 1 dc.w 0 dc.l loc_4BAF2 dc.w $FC -Child1_CNZCoilOpenSparks:dc.w 2 +Child1_CNZCoilOpenSparks: + dc.w 2 dc.l loc_4BB70 dc.w $FC28 dc.l loc_4BB70 dc.w $42C dc.l loc_4BB70 dc.w $FC3C -Child1_CNZBounceEffect:dc.w 0 +Child1_CNZBounceEffect: + dc.w 0 dc.l Obj_CNZMinibossBounceEffect dc.w $FC -Child1_CNZMinibossExplosion:dc.w 0 +Child1_CNZMinibossExplosion: + dc.w 0 dc.l Obj_CreateBossExplosion dc.w 0 -Child6_CNZMinibossMakeDebris:dc.w 8 +Child6_CNZMinibossMakeDebris: + dc.w 8 dc.l Obj_CNZMinibossDebris -AniRaw_CNZMinibossOpening:dc.b 0, 3 +AniRaw_CNZMinibossOpening: + dc.b 0, 3 dc.b 1, 3 dc.b 2, 3 dc.b 3, 3 @@ -90888,7 +91085,8 @@ AniRaw_CNZMinibossOpening:dc.b 0, 3 dc.b 5, 3 dc.b 6, 3 dc.b $F4 -AniRaw_CNZMinibossClosing:dc.b 6, 3 +AniRaw_CNZMinibossClosing: + dc.b 6, 3 dc.b 5, 3 dc.b 4, 3 dc.b 3, 3 @@ -90896,35 +91094,43 @@ AniRaw_CNZMinibossClosing:dc.b 6, 3 dc.b 1, 3 dc.b 0, 3 dc.b $F4 -AniRaw_CNZMinibossTop:dc.b 7, 8, 7, 8, 9, $FC -AniRaw_CNZMinibossTop2:dc.b 0, 7, 8, 9, $FC -AniRaw_CNZMinibossTimedSparkLeft:dc.b $A, 0 +AniRaw_CNZMinibossTop: + dc.b 7, 8, 7, 8, 9, $FC +AniRaw_CNZMinibossTop2: + dc.b 0, 7, 8, 9, $FC +AniRaw_CNZMinibossTimedSparkLeft: + dc.b $A, 0 dc.b $11, 2 dc.b $B, 0 dc.b $11, 2 dc.b $FC -AniRaw_CNZMinibossTimedSparkRight:dc.b $F, 0 +AniRaw_CNZMinibossTimedSparkRight: + dc.b $F, 0 dc.b $11, 2 dc.b $10, 0 dc.b $11, 2 dc.b $FC -AniRaw_CNZMinibossSparks1:dc.b $A, 0 +AniRaw_CNZMinibossSparks1: + dc.b $A, 0 dc.b $11, 7 dc.b $B, 0 dc.b $11, 7 dc.b $FC -AniRaw_CNZMinibossSparks2:dc.b $11, 0 +AniRaw_CNZMinibossSparks2: + dc.b $11, 0 dc.b $F, 0 dc.b $11, 7 dc.b $10, 0 dc.b $11, 9 dc.b $FC -AniRaw_CNZMinibossSparks3:dc.b $A, 0 +AniRaw_CNZMinibossSparks3: + dc.b $A, 0 dc.b $11, 7 dc.b $B, 0 dc.b $11, $B dc.b $FC -AniRaw_CNZMBossBoundEffect:dc.b $C, 0, $D, 1, $E, 1, $F4, 0 +AniRaw_CNZMBossBoundEffect: + dc.b $C, 0, $D, 1, $E, 1, $F4, 0 Pal_CNZMiniboss:binclude "Levels/CNZ/Palettes/Miniboss.bin" even ; --------------------------------------------------------------------------- @@ -91833,26 +92039,32 @@ ObjDat3_4C896: dc.l Map_CNZEndBoss dc.b $40 dc.b 6 dc.b $AB -ChildObjDat_4C8A2:dc.w 0 +ChildObjDat_4C8A2: + dc.w 0 dc.l loc_4C33C dc.w $14 -ChildObjDat_4C8AA:dc.w 3 +ChildObjDat_4C8AA: + dc.w 3 dc.l loc_4C45C dc.w 8 -ChildObjDat_4C8B2:dc.w 0 +ChildObjDat_4C8B2: + dc.w 0 dc.l loc_4C5C6 dc.w $4C -ChildObjDat_4C8BA:dc.w 1 +ChildObjDat_4C8BA: + dc.w 1 dc.l loc_4C5C6 dc.w $F454 dc.l loc_4C5C6 dc.w $C54 -ChildObjDat_4C8C8:dc.w 1 +ChildObjDat_4C8C8: + dc.w 1 dc.l loc_4C43A dc.w $F800 dc.l loc_4C43A dc.w $800 -ChildObjDat_4C8D6:dc.w 1 +ChildObjDat_4C8D6: + dc.w 1 dc.l loc_4C688 dc.w $EC00 dc.l loc_4C688 @@ -93108,7 +93320,8 @@ ObjDat3_4D4AA: dc.l Map_EggCapsule dc.b $20 dc.b 1 dc.b 0 -ChildObjDat_4D4B6:dc.w 6 +ChildObjDat_4D4B6: + dc.w 6 dc.l loc_4CB84 dc.w $F0F8 dc.l loc_4CB84 @@ -93125,12 +93338,15 @@ ChildObjDat_4D4B6:dc.w 6 dc.w 0 word_4D4E2: dc.w 4 dc.l loc_4CE44 -ChildObjDat_4D4E8:dc.w 0 +ChildObjDat_4D4E8: + dc.w 0 dc.l loc_4CB46 dc.w $F8 -ChildObjDat_4D4F0:dc.w 0 +ChildObjDat_4D4F0: + dc.w 0 dc.l loc_4D188 -ChildObjDat_4D4F6:dc.w 4 +ChildObjDat_4D4F6: + dc.w 4 dc.l loc_54776 dc.w $FC dc.l loc_54776 @@ -93714,18 +93930,22 @@ ObjDat3_4DB22: dc.l Map_FBZRobotnikStand dc.b $20 dc.b 0 dc.b 0 -ChildObjDat_4DB2E:dc.w 3 +ChildObjDat_4DB2E: + dc.w 3 dc.l loc_4D74E dc.w 0 -ChildObjDat_4DB36:dc.w 1 +ChildObjDat_4DB36: + dc.w 1 dc.l loc_4D7CA dc.w 0 dc.l loc_4D814 dc.w 0 -ChildObjDat_4DB44:dc.w 1 +ChildObjDat_4DB44: + dc.w 1 dc.l loc_4D8BE dc.w 0 -ChildObjDat_4DB4C:dc.w 0 +ChildObjDat_4DB4C: + dc.w 0 dc.l loc_4D936 dc.w 8 byte_4DB54: dc.b 0, 7 @@ -94475,22 +94695,27 @@ ObjDat3_4E2B4: dc.l Map_FBZEndBossFlame dc.b $10 dc.b 0 dc.b $8B -ChildObjDat_4E2C0:dc.w 2 +ChildObjDat_4E2C0: + dc.w 2 dc.l loc_4DDDC dc.w $D0B8 dc.l loc_4DDDC dc.w $30B8 dc.l loc_4DF98 dc.w $D8 -ChildObjDat_4E2D4:dc.w 0 +ChildObjDat_4E2D4: + dc.w 0 dc.l loc_4DEB2 dc.w $20 -ChildObjDat_4E2DC:dc.w 3 +ChildObjDat_4E2DC: + dc.w 3 dc.l loc_4DF44 dc.w 0 -ChildObjDat_4E2E4:dc.w 8 +ChildObjDat_4E2E4: + dc.w 8 dc.l loc_4E00E -ChildObjDat_4E2EA:dc.w 3 +ChildObjDat_4E2EA: + dc.w 3 dc.l loc_4E032 dc.w $EC08 dc.l loc_4E032 @@ -95380,7 +95605,8 @@ word_4EB66: dc.w $180 dc.b $C dc.b $B dc.b 0 -ChildObjDat_4EB6C:dc.w 5 +ChildObjDat_4EB6C: + dc.w 5 dc.l loc_4E658 dc.w $F2F5 dc.l loc_4E658 @@ -95393,9 +95619,11 @@ ChildObjDat_4EB6C:dc.w 5 dc.w $EF5 dc.l loc_4E658 dc.w $E -ChildObjDat_4EB92:dc.w 7 +ChildObjDat_4EB92: + dc.w 7 dc.l loc_4E6C2 -ChildObjDat_4EB98:dc.w 3 +ChildObjDat_4EB98: + dc.w 3 dc.l loc_4E886 dc.w $F4F4 dc.l loc_4E886 @@ -96134,26 +96362,33 @@ word_4F3C4: dc.w $180 dc.b $10 dc.b 0 dc.b 0 -ChildObjDat_4F3CA:dc.w 0 +ChildObjDat_4F3CA: + dc.w 0 dc.l Obj_RobotnikShip4 dc.w 0 -ChildObjDat_4F3D2:dc.w 2 +ChildObjDat_4F3D2: + dc.w 2 dc.l loc_4EF0A dc.w $1807 dc.l loc_4EF70 dc.w $B dc.l loc_4F010 dc.w $2D -ChildObjDat_4F3E6:dc.w 5 +ChildObjDat_4F3E6: + dc.w 5 dc.l loc_4F0CE -ChildObjDat_4F3EC:dc.w 6 +ChildObjDat_4F3EC: + dc.w 6 dc.l loc_4F0CE -ChildObjDat_4F3F2:dc.w 3 +ChildObjDat_4F3F2: + dc.w 3 dc.l loc_4F0CE -ChildObjDat_4F3F8:dc.w 0 +ChildObjDat_4F3F8: + dc.w 0 dc.l loc_4F166 dc.w 8 -ChildObjDat_4F400:dc.w 2 +ChildObjDat_4F400: + dc.w 2 dc.l loc_4F190 dc.w $EC04 dc.l loc_4F190 @@ -96731,12 +96966,15 @@ word_4F95A: dc.w $180 dc.b 8 dc.b 6 dc.b $98 -ChildObjDat_4F960:dc.w 0 +ChildObjDat_4F960: + dc.w 0 dc.l loc_4F5C0 dc.w 0 -ChildObjDat_4F968:dc.w 5 +ChildObjDat_4F968: + dc.w 5 dc.l loc_4F616 -ChildObjDat_4F96E:dc.w 5 +ChildObjDat_4F96E: + dc.w 5 dc.l loc_4F610 byte_4F974: dc.b $F, 0 dc.b 1, 0 @@ -97723,20 +97961,24 @@ ObjDat3_50312: dc.l Map_LBZFinalBoss1 dc.b $C dc.b $10 dc.b 0 -ChildObjDat_5031E:dc.w 0 +ChildObjDat_5031E: + dc.w 0 dc.l loc_4FEF2 dc.w $10 -ChildObjDat_50326:dc.w 0 +ChildObjDat_50326: + dc.w 0 dc.l loc_4FF0A dc.w 8 -ChildObjDat_5032E:dc.w 2 +ChildObjDat_5032E: + dc.w 2 dc.l loc_4FC30 dc.w 8 dc.l loc_4FC90 dc.w $30 dc.l loc_4FC98 dc.w $5C -ChildObjDat_50342:dc.w 3 +ChildObjDat_50342: + dc.w 3 dc.l loc_4FCC8 dc.w $F0FC dc.l loc_4FCC8 @@ -97745,7 +97987,8 @@ ChildObjDat_50342:dc.w 3 dc.w $F010 dc.l loc_4FCC8 dc.w $1010 -ChildObjDat_5035C:dc.w 5 +ChildObjDat_5035C: + dc.w 5 dc.l loc_4FCC8 dc.w $F0F8 dc.l loc_4FCC8 @@ -97758,30 +98001,37 @@ ChildObjDat_5035C:dc.w 5 dc.w $ECE0 dc.l loc_4FCC8 dc.w $14E0 -ChildObjDat_50382:dc.w 1 +ChildObjDat_50382: + dc.w 1 dc.l loc_4FD52 dc.w 0 -ChildObjDat_5038A:dc.w 0 +ChildObjDat_5038A: + dc.w 0 dc.l loc_4FD98 dc.w $F800 dc.w 0 dc.l loc_4FD98 dc.w $800 -ChildObjDat_5039A:dc.w 0 +ChildObjDat_5039A: + dc.w 0 dc.l loc_4FEAA dc.w $2000 -ChildObjDat_503A2:dc.w 1 +ChildObjDat_503A2: + dc.w 1 dc.l loc_4FECE dc.w $EC30 dc.l loc_4FECE dc.w $1430 -ChildObjDat_503B0:dc.w 0 +ChildObjDat_503B0: + dc.w 0 dc.l loc_4FF80 dc.w 0 -ChildObjDat_503B8:dc.w 0 +ChildObjDat_503B8: + dc.w 0 dc.l loc_4FCF0 dc.w $EC -ChildObjDat_503C0:dc.w 1 +ChildObjDat_503C0: + dc.w 1 dc.l loc_4FD1A dc.w $F000 dc.l loc_4FD1A @@ -98599,37 +98849,45 @@ ObjDat3_50BCC: dc.l Map_LBZEndBoss dc.b 8 dc.b $E dc.b 0 -ChildObjDat_50BD8:dc.w 1 +ChildObjDat_50BD8: + dc.w 1 dc.l loc_508EC dc.w $F8 dc.l loc_5097A dc.w $E8F0 -ChildObjDat_50BE6:dc.w 0 +ChildObjDat_50BE6: + dc.w 0 dc.l loc_5086A dc.w $60E8 -ChildObjDat_50BEE:dc.w 2 +ChildObjDat_50BEE: + dc.w 2 dc.l loc_50710 dc.w $E838 dc.l loc_50710 dc.w $1838 dc.l loc_50710 dc.w $38 -ChildObjDat_50C02:dc.w 2 +ChildObjDat_50C02: + dc.w 2 dc.l loc_50780 dc.w $E8 dc.l loc_50780 dc.w $F8 dc.l loc_50780 dc.w 8 -ChildObjDat_50C16:dc.w 3 +ChildObjDat_50C16: + dc.w 3 dc.l loc_507AC -ChildObjDat_50C1C:dc.w 0 +ChildObjDat_50C1C: + dc.w 0 dc.l loc_505BA dc.w 0 -ChildObjDat_50C24:dc.w 0 +ChildObjDat_50C24: + dc.w 0 dc.l loc_506AC dc.w $10 -ChildObjDat_50C2C:dc.w $B +ChildObjDat_50C2C: + dc.w $B dc.l loc_506FE dc.w $F8F8 dc.l loc_506FE @@ -100480,7 +100738,8 @@ ObjDat3_51FA8: dc.l Map_SonicTailsEndPoses dc.b $40 dc.b 0 dc.b 0 -ChildObjDat_51FB4:dc.w 3 +ChildObjDat_51FB4: + dc.w 3 dc.l loc_511E8 dc.w $1424 dc.l loc_511CE @@ -100489,10 +100748,12 @@ ChildObjDat_51FB4:dc.w 3 dc.w $E8 dc.l loc_513AC dc.w $38EC -ChildObjDat_51FCE:dc.w 0 +ChildObjDat_51FCE: + dc.w 0 dc.l loc_513E8 dc.w $4CC -ChildObjDat_51FD6:dc.w 3 +ChildObjDat_51FD6: + dc.w 3 dc.l loc_512FC dc.w $D6FE dc.l loc_512FC @@ -100501,7 +100762,8 @@ ChildObjDat_51FD6:dc.w 3 dc.w 0 dc.l loc_5140A dc.w $C0FE -ChildObjDat_51FF0:dc.w 4 +ChildObjDat_51FF0: + dc.w 4 dc.l loc_514F6 dc.w $F4D4 dc.l loc_514F6 @@ -100512,9 +100774,11 @@ ChildObjDat_51FF0:dc.w 4 dc.w $F4FC dc.l loc_514F6 dc.w $14FC -ChildObjDat_52010:dc.w 1 +ChildObjDat_52010: + dc.w 1 dc.l loc_51524 -ChildObjDat_52016:dc.w 6 +ChildObjDat_52016: + dc.w 6 dc.l loc_516A4 dc.w 0 dc.l loc_516A4 @@ -100529,13 +100793,17 @@ ChildObjDat_52016:dc.w 6 dc.w $DCF8 dc.l loc_516A4 dc.w $B01C -ChildObjDat_52042:dc.w 0 +ChildObjDat_52042: + dc.w 0 dc.l loc_51AB8 -ChildObjDat_52048:dc.w 0 +ChildObjDat_52048: + dc.w 0 dc.l loc_51B18 -ChildObjDat_5204E:dc.w 0 +ChildObjDat_5204E: + dc.w 0 dc.l loc_542B8 -ChildObjDat_52054:dc.w 0 +ChildObjDat_52054: + dc.w 0 dc.l loc_54322 byte_5205A: dc.b 9 dc.b 7 @@ -100704,7 +100972,8 @@ loc_52366: jmp (Sprite_OnScreen_Test).l ; --------------------------------------------------------------------------- word_52392: dc.w $FFF2, $1C, $FF80, $C0 -ObjDat_HiddenMonitor:dc.l Map_Monitor +ObjDat_HiddenMonitor: + dc.l Map_Monitor dc.w ArtTile_Monitors dc.w $180 dc.b $E @@ -100809,7 +101078,8 @@ loc_524AA: move.w #-$200,$1A(a0) rts ; --------------------------------------------------------------------------- -FrameArray_EndSign:dc.b 0, 0, 1, 2 +FrameArray_EndSign: + dc.b 0, 0, 1, 2 ; --------------------------------------------------------------------------- Obj_EndSignResults: @@ -100841,7 +101111,8 @@ loc_52500: jsr Remove_From_TrackingSlot(pc) jmp Go_Delete_Sprite(pc) ; --------------------------------------------------------------------------- -PLC_SpikesSprings:dc.w 0 +PLC_SpikesSprings: + dc.w 0 dc.l ArtNem_SpikesSprings dc.w $9280 ; --------------------------------------------------------------------------- @@ -100984,33 +101255,39 @@ locret_52658: ; End of function EndSign_CheckWall ; --------------------------------------------------------------------------- -ObjSlot_EndSigns:dc.w 0, $4AC, $C, 0 +ObjSlot_EndSigns: + dc.w 0, $4AC, $C, 0 dc.l Map_EndSigns dc.w $100 dc.b $18 dc.b $10 dc.b 0 dc.b 0 -ObjDat_SignpostStub:dc.l Map_SignpostStub +ObjDat_SignpostStub: + dc.l Map_SignpostStub dc.w $69E dc.w $100 dc.b 4 dc.b 8 dc.b 0 dc.b 0 -ObjDat_SignpostSparkle:dc.l Map_Ring +ObjDat_SignpostSparkle: + dc.l Map_Ring dc.w make_art_tile(ArtTile_Ring,1,0) dc.w $80 dc.b 8 dc.b 8 dc.b 4 dc.b 0 -Child1_EndSignStub:dc.w 0 +Child1_EndSignStub: + dc.w 0 dc.l Obj_SignpostStub dc.w $18 -Child6_EndSignSparkle:dc.w 0 +Child6_EndSignSparkle: + dc.w 0 dc.l Obj_SignpostSparkle -Child6_EndSignScore:dc.w 0 +Child6_EndSignScore: + dc.w 0 dc.l Obj_EnemyScore PLCPtr_EndSigns:dc.l ArtUnc_EndSigns dc.l DPLC_EndSigns @@ -101023,7 +101300,8 @@ AniRaw_EndSigns:dc.b 1, 0 dc.b 6, 3 dc.b 4, 5 dc.b 6, $FC -AniRaw_SignpostSparkle:dc.b 1, 4 +AniRaw_SignpostSparkle: + dc.b 1, 4 dc.b 5, 6 dc.b 7, $FC @@ -101256,20 +101534,21 @@ loc_528BA: move.b (a1)+,5(a0) rts ; --------------------------------------------------------------------------- -CreateBossExpParameterIndex:dc.w CreateBossExp_00-CreateBossExpParameterIndex - dc.w CreateBossExp_02-CreateBossExpParameterIndex - dc.w CreateBossExp_04-CreateBossExpParameterIndex - dc.w CreateBossExp_06-CreateBossExpParameterIndex - dc.w CreateBossExp_08-CreateBossExpParameterIndex - dc.w CreateBossExp_0A-CreateBossExpParameterIndex - dc.w CreateBossExp_0C-CreateBossExpParameterIndex -CreateBossExp_00:dc.b $20, $20, $20, 2 -CreateBossExp_02:dc.b $28, $80, $80, 2 -CreateBossExp_04:dc.b $80, $20, $20, 4 -CreateBossExp_06:dc.b 4, 8, 8, 2 -CreateBossExp_08:dc.b 8, $20, $20, 2 -CreateBossExp_0A:dc.b $20, $20, $20, 2 -CreateBossExp_0C:dc.b $40, $80, $20, 2 +CreateBossExpParameterIndex: + dc.w CreateBossExp00-CreateBossExpParameterIndex + dc.w CreateBossExp02-CreateBossExpParameterIndex + dc.w CreateBossExp04-CreateBossExpParameterIndex + dc.w CreateBossExp06-CreateBossExpParameterIndex + dc.w CreateBossExp08-CreateBossExpParameterIndex + dc.w CreateBossExp0A-CreateBossExpParameterIndex + dc.w CreateBossExp0C-CreateBossExpParameterIndex +CreateBossExp00:dc.b $20, $20, $20, 2 +CreateBossExp02:dc.b $28, $80, $80, 2 +CreateBossExp04:dc.b $80, $20, $20, 4 +CreateBossExp06:dc.b 4, 8, 8, 2 +CreateBossExp08:dc.b 8, $20, $20, 2 +CreateBossExp0A:dc.b $20, $20, $20, 2 +CreateBossExp0C:dc.b $40, $80, $20, 2 ; --------------------------------------------------------------------------- Obj_BossExplosionSpecial: @@ -101315,14 +101594,16 @@ loc_5296A: jsr Animate_RawMultiDelay(pc) jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -ObjDat_BossExplosion:dc.l Map_BossExplosion +ObjDat_BossExplosion: + dc.l Map_BossExplosion dc.w $8500 dc.w 0 dc.b $C dc.b $C dc.b 0 dc.b 0 -AniRaw_BossExplosion:dc.b 0, 0 +AniRaw_BossExplosion: + dc.b 0, 0 dc.b 0, 1 dc.b 1, 1 dc.b 2, 2 @@ -101330,13 +101611,16 @@ AniRaw_BossExplosion:dc.b 0, 0 dc.b 4, 4 dc.b 5, 4 dc.b $F4, 0 -Child6_MakeBossExplosion1:dc.w 0 +Child6_MakeBossExplosion1: + dc.w 0 dc.l loc_52940 dc.w 0 -Child6_CreateBossExplosion:dc.w 0 +Child6_CreateBossExplosion: + dc.w 0 dc.l Obj_CreateBossExplosion dc.w 0 -Child6_MakeNormalExplosion:dc.w 0 +Child6_MakeNormalExplosion: + dc.w 0 dc.l Obj_Explosion dc.w 0 @@ -102609,7 +102893,8 @@ MoveSprite_AtAngleLookup: ; End of function MoveSprite_AtAngleLookup ; --------------------------------------------------------------------------- -AtAngle_LookupIndex:dc.w AtAngle_00_3F-AtAngle_LookupIndex +AtAngle_LookupIndex: + dc.w AtAngle_00_3F-AtAngle_LookupIndex dc.w AtAngle_40_7F-AtAngle_LookupIndex dc.w AtAngle_80_BF-AtAngle_LookupIndex dc.w AtAngle_C0_FF-AtAngle_LookupIndex @@ -102716,7 +103001,8 @@ MoveSprite_AngleYLookup: ; End of function MoveSprite_AngleYLookup ; --------------------------------------------------------------------------- -AngleY_LookupIndex:dc.w loc_534B4-AngleY_LookupIndex +AngleY_LookupIndex: + dc.w loc_534B4-AngleY_LookupIndex dc.w loc_534BC-AngleY_LookupIndex dc.w loc_534C6-AngleY_LookupIndex dc.w loc_534D0-AngleY_LookupIndex @@ -102761,7 +103047,8 @@ MoveSprite_AngleXLookupOffset: ; End of function MoveSprite_AngleXLookupOffset ; --------------------------------------------------------------------------- -AngleX_LookupIndex:dc.w loc_534F6-AngleX_LookupIndex +AngleX_LookupIndex: + dc.w loc_534F6-AngleX_LookupIndex dc.w loc_534FE-AngleX_LookupIndex dc.w loc_5350A-AngleX_LookupIndex dc.w loc_5351A-AngleX_LookupIndex @@ -103292,7 +103579,8 @@ locret_53A1C: ; End of function Set_IndexedVelocity ; --------------------------------------------------------------------------- -Obj_VelocityIndex:dc.w $FF00, $FF00 +Obj_VelocityIndex: + dc.w $FF00, $FF00 dc.w $100, $FF00 dc.w $FE00, $FE00 dc.w $200, $FE00 @@ -104229,7 +104517,8 @@ Obj_EndSignControl: ; End of function Obj_EndSignControl ; --------------------------------------------------------------------------- -PLC_EndSignStuff:dc.w 1 +PLC_EndSignStuff: + dc.w 1 dc.l ArtNem_SignpostStub dc.w $D3C0 dc.l ArtNem_Monitors @@ -104382,7 +104671,8 @@ Make_LevelSizeObj: ; End of function Make_LevelSizeObj ; --------------------------------------------------------------------------- -Child1_Act2LevelSize:dc.w 2 +Child1_Act2LevelSize: + dc.w 2 dc.l Obj_IncLevEndXGradual dc.w 0 dc.l Obj_DecLevStartYGradual @@ -105315,18 +105605,22 @@ word_54AA0: dc.w $200 dc.b 4 dc.b 6 dc.b 0 -ChildObjDat_54AA6:dc.w 0 +ChildObjDat_54AA6: + dc.w 0 dc.l loc_54672 dc.w $D8 -ChildObjDat_54AAE:dc.w 0 +ChildObjDat_54AAE: + dc.w 0 dc.l loc_546AE dc.w $28 -ChildObjDat_54AB6:dc.w 1 +ChildObjDat_54AB6: + dc.w 1 dc.l loc_54758 dc.w $ECDC dc.l loc_54758 dc.w $14DC -ChildObjDat_54AC4:dc.w 4 +ChildObjDat_54AC4: + dc.w 4 dc.l loc_5472C dc.w $F8 dc.l loc_5472C @@ -105337,7 +105631,8 @@ ChildObjDat_54AC4:dc.w 4 dc.w $E8F8 dc.l loc_5472C dc.w $18F8 -ChildObjDat_54AE4:dc.w 8 +ChildObjDat_54AE4: + dc.w 8 dc.l loc_54776 dc.w $FC dc.l loc_54776 @@ -105467,7 +105762,8 @@ ObjDat3_54C1A: dc.l Map_Bloominator dc.b 8 dc.b 4 dc.b $98 -ChildObjDat_54C26:dc.w 0 +ChildObjDat_54C26: + dc.w 0 dc.l loc_54B46 dc.l ObjDat3_54C1A dc.l 0 @@ -105798,10 +106094,12 @@ ObjDat4_54F0C: dc.w 1 dc.b 8 dc.b 4 dc.b 0 -ChildObjDat_54F1E:dc.w 0 +ChildObjDat_54F1E: + dc.w 0 dc.l loc_54CF8 dc.w $C08 -ChildObjDat_54F26:dc.w 0 +ChildObjDat_54F26: + dc.w 0 dc.l loc_54CF8 dc.w $1008 DPLCPtr_54F2E: dc.l ArtUnc_AIZRhinobot @@ -106413,9 +106711,11 @@ ObjDat3_55470: dc.l Map_MonkeyDude dc.b $20 dc.b 6 dc.b $98 -ChildObjDat_5547C:dc.w 4 +ChildObjDat_5547C: + dc.w 4 dc.l loc_5504A -ChildObjDat_55482:dc.w 4 +ChildObjDat_55482: + dc.w 4 dc.l loc_55044 dc.w 0 dc.l loc_5504A @@ -106423,7 +106723,8 @@ ChildObjDat_55482:dc.w 4 dc.w 0 dc.l loc_5527C dc.w 0 -ChildObjDat_55498:dc.w 0 +ChildObjDat_55498: + dc.w 0 dc.l loc_54B46 dc.l ObjDat3_55470 dc.w 0 @@ -106640,10 +106941,12 @@ word_5568E: dc.w $200 dc.b $10 dc.b 3 dc.b 0 -ChildObjDat_55694:dc.w 5 +ChildObjDat_55694: + dc.w 5 dc.l loc_55588 dc.w 0 -ChildObjDat_5569C:dc.w 0 +ChildObjDat_5569C: + dc.w 0 dc.l loc_55606 dc.w 0 byte_556A4: dc.b 3, 2 @@ -106788,7 +107091,8 @@ ObjDat3_557D2: dc.l Map_Blastoid dc.b 4 dc.b 2 dc.b $98 -ChildObjDat_557DE:dc.w 0 +ChildObjDat_557DE: + dc.w 0 dc.l loc_54B46 dc.l ObjDat3_557D2 dc.l byte_55805 @@ -106985,7 +107289,8 @@ word_55992: dc.w $280 dc.b $C dc.b 3 dc.b 0 -ChildObjDat_55998:dc.w 0 +ChildObjDat_55998: + dc.w 0 dc.l Obj_Buggernaught_Baby dc.w $2000 byte_559A0: dc.b 0, 0 @@ -107332,16 +107637,20 @@ ObjDat3_55CC0: dc.l Map_TurboSpikerHidden dc.b $10 dc.b 0 dc.b 0 -ChildObjDat_55CCC:dc.w 0 +ChildObjDat_55CCC: + dc.w 0 dc.l loc_55B32 dc.w $400 -ChildObjDat_55CD4:dc.w 0 +ChildObjDat_55CD4: + dc.w 0 dc.l loc_55B94 dc.w $FC14 -ChildObjDat_55CDC:dc.w 0 +ChildObjDat_55CDC: + dc.w 0 dc.l loc_55C00 dc.w 4 -ChildObjDat_55CE4:dc.w 4 +ChildObjDat_55CE4: + dc.w 4 dc.l loc_55C2E dc.w $4F8 dc.l loc_55C2E @@ -107352,7 +107661,8 @@ ChildObjDat_55CE4:dc.w 4 dc.w $F800 dc.l loc_55C2E dc.w $800 -ChildObjDat_55D04:dc.w 0 +ChildObjDat_55D04: + dc.w 0 dc.l loc_55C76 dc.w 0 byte_55D0C: dc.b 5, 0 @@ -108468,15 +108778,18 @@ ObjDat3_568DE: dc.l Map_MGZMovingSpikePlatform dc.b $30 dc.b 0 dc.b 0 -ChildObjDat_568EA:dc.w 1 +ChildObjDat_568EA: + dc.w 1 dc.l loc_565C2 dc.w $E4EA dc.l loc_565C2 dc.w $1CEA -ChildObjDat_568F8:dc.w 0 +ChildObjDat_568F8: + dc.w 0 dc.l loc_565EC dc.w 0 -ChildObjDat_56900:dc.w 4 +ChildObjDat_56900: + dc.w 4 dc.l loc_56718 dc.w 0 dc.l loc_56718 @@ -108487,7 +108800,8 @@ ChildObjDat_56900:dc.w 4 dc.w $E4EA dc.l loc_56718 dc.w $1CEA -ChildObjDat_56920:dc.w 0 +ChildObjDat_56920: + dc.w 0 dc.l loc_56630 dc.w 0 dc.b 0, 5 @@ -108501,7 +108815,8 @@ byte_56931: dc.b 5, 4 byte_56937: dc.b 0, 0 dc.b 1, 2 dc.b $FC -Map_MGZMinibossSpires:dc.w word_5693E-Map_MGZMinibossSpires +Map_MGZMinibossSpires: + dc.w word_5693E-Map_MGZMinibossSpires word_5693E: dc.w 1 dc.b $F0, 3, 0, 0, $FF, $FC PLC_56946: dc.w 1 @@ -108806,14 +109121,16 @@ ObjDat3_56BD0: dc.l Map_Spiker dc.b 4 dc.b 5 dc.b $98 -ChildObjDat_56BDC:dc.w 2 +ChildObjDat_56BDC: + dc.w 2 dc.l loc_56A3A dc.w $F00C dc.l loc_56A3A dc.w $100C dc.l loc_56AEE dc.w $F4 -ChildObjDat_56BF0:dc.w 0 +ChildObjDat_56BF0: + dc.w 0 dc.l loc_54B46 dc.l ObjDat3_56BD0 dc.l byte_56C1A @@ -108984,7 +109301,8 @@ word_56D54: dc.w $200 dc.b 4 dc.b 5 dc.b 0 -ChildObjDat_56D5A:dc.w 0 +ChildObjDat_56D5A: + dc.w 0 dc.l loc_56D0E dc.w $F7F5 byte_56D62: dc.b 0, 0 @@ -109162,10 +109480,12 @@ ObjDat3_56EF0: dc.l Map_Clamer dc.b 8 dc.b 9 dc.b $98 -ChildObjDat_56EFC:dc.w 0 +ChildObjDat_56EFC: + dc.w 0 dc.l loc_56E4A dc.w $F8 -ChildObjDat_56F04:dc.w 0 +ChildObjDat_56F04: + dc.w 0 dc.l loc_54B46 dc.l ObjDat3_56EF0 dc.l 0 @@ -109396,10 +109716,12 @@ word_57100: dc.w $280 dc.b 8 dc.b 6 dc.b $98 -ChildObjDat_57106:dc.w 0 +ChildObjDat_57106: + dc.w 0 dc.l loc_5700A dc.w 0 -ChildObjDat_5710E:dc.w 1 +ChildObjDat_5710E: + dc.w 1 dc.l loc_57054 dc.w 0 byte_57116: dc.b 9, $10 @@ -109539,7 +109861,8 @@ word_5721A: dc.w $200 dc.b 4 dc.b 5 dc.b 0 -ChildObjDat_57220:dc.w 1 +ChildObjDat_57220: + dc.w 1 dc.l loc_5719C dc.w $10 dc.l loc_571E2 @@ -109775,10 +110098,12 @@ ObjDat3_57456: dc.l Map_Blaster dc.b 4 dc.b 7 dc.b 0 -ChildObjDat_57462:dc.w 0 +ChildObjDat_57462: + dc.w 0 dc.l loc_573EA dc.w $E5EA -ChildObjDat_5746A:dc.w 0 +ChildObjDat_5746A: + dc.w 0 dc.l loc_54B46 dc.l ObjDat3_5744A dc.l byte_574AD @@ -109787,7 +110112,8 @@ ChildObjDat_5746A:dc.w 0 dc.b $E0 dc.w $FE00 dc.w $FC00 -ChildObjDat_57482:dc.w 0 +ChildObjDat_57482: + dc.w 0 dc.l loc_54B46 dc.l ObjDat3_57456 dc.l byte_574B1 @@ -110039,7 +110365,8 @@ word_5770A: dc.w $280 dc.b 4 dc.b 2 dc.b 0 -ChildObjDat_57710:dc.w 0 +ChildObjDat_57710: + dc.w 0 dc.l loc_5764C dc.w $1404 byte_57718: dc.b 0, 0 @@ -110642,11 +110969,14 @@ ObjDat3_57C28: dc.l Map_ICZPlatforms dc.b $C dc.b $1C dc.b 0 -ChildObjDat_57C34:dc.w 5 +ChildObjDat_57C34: + dc.w 5 dc.l loc_579FA -ChildObjDat_57C3A:dc.w 8 +ChildObjDat_57C3A: + dc.w 8 dc.l loc_57A32 -ChildObjDat_57C40:dc.w 0 +ChildObjDat_57C40: + dc.w 0 dc.l loc_57B1A dc.w $F010 byte_57C48: dc.b 2, $23 @@ -110873,7 +111203,8 @@ word_57E2A: dc.w $280 dc.b $40 dc.b $D dc.b 0 -ChildObjDat_57E30:dc.w 0 +ChildObjDat_57E30: + dc.w 0 dc.l loc_57DFC dc.w 0 ; --------------------------------------------------------------------------- @@ -111334,22 +111665,28 @@ ObjDat3_5828C: dc.l Map_ICZPlatforms dc.b 4 dc.b $C dc.b 0 -ChildObjDat_58298:dc.w 0 +ChildObjDat_58298: + dc.w 0 dc.l loc_57F14 dc.w $C -ChildObjDat_582A0:dc.w 0 +ChildObjDat_582A0: + dc.w 0 dc.l loc_57F14 dc.w $F4 -ChildObjDat_582A8:dc.w 0 +ChildObjDat_582A8: + dc.w 0 dc.l loc_57F40 dc.w $30 -ChildObjDat_582B0:dc.w 0 +ChildObjDat_582B0: + dc.w 0 dc.l loc_57F40 dc.w $D0 -ChildObjDat_582B8:dc.w 0 +ChildObjDat_582B8: + dc.w 0 dc.l loc_57FA6 dc.w 0 -ChildObjDat_582C0:dc.w $B +ChildObjDat_582C0: + dc.w $B dc.l loc_580B2 dc.w $F4F8 dc.l loc_580B2 @@ -111548,10 +111885,12 @@ word_584A6: dc.w $280 dc.b $10 dc.b $A dc.b 0 -ChildObjDat_584AC:dc.w 2 +ChildObjDat_584AC: + dc.w 2 dc.l loc_58344 dc.w 0 -ChildObjDat_584B4:dc.w 3 +ChildObjDat_584B4: + dc.w 3 dc.l loc_58344 dc.w 0 ; --------------------------------------------------------------------------- @@ -112092,21 +112431,25 @@ word_58916: dc.w $300 dc.b 8 dc.b $27 dc.b 0 -ChildObjDat_5891C:dc.w 2 +ChildObjDat_5891C: + dc.w 2 dc.l loc_5865C dc.w 8 dc.l loc_5868C dc.w $1CF8 dc.l loc_586A2 dc.w 0 -ChildObjDat_58930:dc.w 7 +ChildObjDat_58930: + dc.w 7 dc.l loc_586F6 -ChildObjDat_58936:dc.w 1 +ChildObjDat_58936: + dc.w 1 dc.l Obj_ICZSnowdust dc.w $1C10 dc.l Obj_ICZSnowdust dc.w $1410 -ChildObjDat_58944:dc.w 0 +ChildObjDat_58944: + dc.w 0 dc.l Obj_ICZSnowdust dc.w $1C10 ; --------------------------------------------------------------------------- @@ -112214,7 +112557,8 @@ ObjDat3_58A3E: dc.l Map_ICZPlatforms dc.b 4 dc.b $F dc.b 0 -ChildObjDat_58A4A:dc.w $B +ChildObjDat_58A4A: + dc.w $B dc.l loc_589E8 dc.w $27 dc.b $F, $27 @@ -112299,10 +112643,12 @@ ObjDat3_58B08: dc.l Map_ICZWallAndColumn dc.b $10 dc.b 5 dc.b 0 -ChildObjDat_58B14:dc.w 0 +ChildObjDat_58B14: + dc.w 0 dc.l loc_58AE8 dc.w $C -ChildObjDat_58B1C:dc.w 0 +ChildObjDat_58B1C: + dc.w 0 dc.l loc_58AE8 dc.w $F4 ; --------------------------------------------------------------------------- @@ -112394,7 +112740,8 @@ word_58C18: dc.w $C3B6 dc.b $20 dc.b $12 dc.b 0 -ChildObjDat_58C20:dc.w $B +ChildObjDat_58C20: + dc.w $B dc.l loc_58BD2 dc.w $F8 dc.l loc_58BD2 @@ -112472,7 +112819,8 @@ ObjDat3_58CD6: dc.l Map_ICZPlatforms dc.b $10 dc.b 4 dc.b $D7 -ChildObjDat_58CE2:dc.w $B +ChildObjDat_58CE2: + dc.w $B dc.l loc_589E8 ; --------------------------------------------------------------------------- @@ -112787,7 +113135,8 @@ word_58FDC: dc.w $43B6 dc.b 8 dc.b 9 dc.b 0 -ChildObjDat_58FE4:dc.w 5 +ChildObjDat_58FE4: + dc.w 5 dc.l loc_58F00 dc.w $F8F8 dc.l loc_58F00 @@ -112800,12 +113149,14 @@ ChildObjDat_58FE4:dc.w 5 dc.w $800 dc.l loc_58F00 dc.w $1800 -ChildObjDat_5900A:dc.w 1 +ChildObjDat_5900A: + dc.w 1 dc.l loc_58F00 dc.w $F8 dc.l loc_58F00 dc.w 8 -ChildObjDat_59018:dc.w 3 +ChildObjDat_59018: + dc.w 3 dc.l loc_58F00 dc.w $F8F8 dc.l loc_58F00 @@ -113100,7 +113451,8 @@ word_59260: dc.w $43B6 dc.b $40 dc.b 8 dc.b 0 -ChildObjDat_59268:dc.w 1 +ChildObjDat_59268: + dc.w 1 dc.l loc_5905A dc.w $C800 dc.l loc_5905A @@ -113414,7 +113766,8 @@ ObjDat3_59586: dc.l Map_ICZSnowdust dc.b $18 dc.b 0 dc.b 0 -ChildObjDat_59592:dc.w 0 +ChildObjDat_59592: + dc.w 0 dc.l Obj_ICZSnowdust dc.w $C DPLCPtr_5959A: dc.l ArtUnc_Penguinator @@ -113582,7 +113935,8 @@ word_59732: dc.w $280 dc.b 8 dc.b 1 dc.b $8B -ChildObjDat_59738:dc.w 3 +ChildObjDat_59738: + dc.w 3 dc.l loc_59648 dc.w 0 byte_59740: dc.b 3, 1, 2, 3, $F4, 0 @@ -113900,7 +114254,8 @@ word_59A1C: dc.w 2 dc.w $F807 dc.l loc_598B6 dc.w $F804 -ChildObjDat_59A30:dc.w 0 +ChildObjDat_59A30: + dc.w 0 dc.l loc_54B46 dc.l ObjDat3_59A10 dc.l 0 @@ -114287,29 +114642,36 @@ word_59D5C: dc.w $200 dc.b 4 dc.b 6 dc.b 0 -ChildObjDat_59D62:dc.w 1 +ChildObjDat_59D62: + dc.w 1 dc.l loc_59AFA dc.w $F40C dc.l loc_59AFA dc.w $C0C -ChildObjDat_59D70:dc.w 1 +ChildObjDat_59D70: + dc.w 1 dc.l loc_59AFA dc.w $E800 dc.l loc_59AFA dc.w $1800 -ChildObjDat_59D7E:dc.w 0 +ChildObjDat_59D7E: + dc.w 0 dc.l loc_59AFA dc.w $F0 -ChildObjDat_59D86:dc.w 2 +ChildObjDat_59D86: + dc.w 2 dc.l loc_59C8A dc.w $F4 -ChildObjDat_59D8E:dc.w 2 +ChildObjDat_59D8E: + dc.w 2 dc.l loc_59C8A dc.w $C00 -ChildObjDat_59D96:dc.w 2 +ChildObjDat_59D96: + dc.w 2 dc.l loc_59C8A dc.w $F400 -ChildObjDat_59D9E:dc.w 2 +ChildObjDat_59D9E: + dc.w 2 dc.l loc_59C8A dc.w 0 byte_59DA6: dc.b 7 @@ -114423,7 +114785,8 @@ word_59E7A: dc.w $280 dc.b 8 dc.b 1 dc.b $8B -ChildObjDat_59E80:dc.w 3 +ChildObjDat_59E80: + dc.w 3 dc.l loc_59E10 dc.w $10 dc.l loc_59E10 @@ -114639,16 +115002,20 @@ word_5A07A: dc.w $558 dc.b $50 dc.b 0 dc.b $A0 -ChildObjDat_5A082:dc.w 0 +ChildObjDat_5A082: + dc.w 0 dc.l loc_59F5A dc.w $C -ChildObjDat_5A08A:dc.w 0 +ChildObjDat_5A08A: + dc.w 0 dc.l loc_5A03C dc.w $FC54 -ChildObjDat_5A092:dc.w 0 +ChildObjDat_5A092: + dc.w 0 dc.l loc_5A03C dc.w $454 -ChildObjDat_5A09A:dc.w 0 +ChildObjDat_5A09A: + dc.w 0 dc.l loc_5A03C dc.w $54 byte_5A0A2: dc.b 7 @@ -115388,13 +115755,16 @@ ObjDat3_5A7F4: dc.l Map_LBZMinibossBox dc.b $14 dc.b 0 dc.b 0 -ChildObjDat_5A800:dc.w 0 +ChildObjDat_5A800: + dc.w 0 dc.l loc_5A4AA dc.w $34 -ChildObjDat_5A808:dc.w 9 +ChildObjDat_5A808: + dc.w 9 dc.l loc_5A5BC dc.w 0 -ChildObjDat_5A810:dc.w 0 +ChildObjDat_5A810: + dc.w 0 dc.l Obj_LBZMiniboss dc.w 0 byte_5A818: dc.b 0 @@ -116769,7 +117139,8 @@ AutoTunnel_00: dc.w $C dc.w $F60, $578 dc.w $F60, $548 dc.w $F60, $378 -AutoTunnel_01_02:dc.w $38 +AutoTunnel_01_02: + dc.w $38 dc.w $D40, $770 dc.w $D48, $770 dc.w $D50, $770 @@ -117215,8 +117586,10 @@ Gumball2_Sprites: Gumball1_Rings: dc.w $200, $200, $FFFF Gumball2_Rings: dc.w $80, $7100, $FFFF SpriteTerminatM:dc.w $FFFF, 0, 0 -Pachinko1_Sprites:dc.w $80, $80, 0, $FFFF, 0, 0 -Pachinko2_Sprites:dc.w $80, $80, 0, $FFFF, 0, 0 +Pachinko1_Sprites: + dc.w $80, $80, 0, $FFFF, 0, 0 +Pachinko2_Sprites: + dc.w $80, $80, 0, $FFFF, 0, 0 Pachinko1_Rings:dc.w $80, $7100, $FFFF Pachinko2_Rings:dc.w $80, $7100, $FFFF SpriteTerminatN:dc.w $FFFF, 0, 0 @@ -118245,7 +118618,8 @@ DAC_B6_Setup2: dc.b $C DAC_B7_Setup2: dc.b $18 dc.w 0 dc.w 0 -DAC_B8_B9_Setup2:dc.b $C +DAC_B8_B9_Setup2: + dc.b $C dc.w 0 dc.w 0 DAC_BA_Setup2: dc.b $18 @@ -118469,7 +118843,8 @@ DAC_B6_Setup3: dc.b $C DAC_B7_Setup3: dc.b $18 dc.w $B104 dc.w $3FCE -DAC_B8_B9_Setup3:dc.b $C +DAC_B8_B9_Setup3: + dc.b $C dc.w $3A06 dc.w $F0D2 DAC_BA_Setup3: dc.b $18 @@ -118958,10 +119333,8 @@ Map_Ribot: include "General/Sprites/Ribot/Map - Ribot.asm" Map_Corkey: include "General/Sprites/Corkey/Map - Corkey.asm" Map_Flybot767: include "General/Sprites/Flybot767/Map - Flybot767.asm" DPLC_Flybot767: include "General/Sprites/Flybot767/DPLC - Flybot767.asm" -Map_LBZEndBoss: - include "Levels/LBZ/Misc Object Data/Map - End Boss.asm" -Map_CNZEndBoss: - include "Levels/CNZ/Misc Object Data/Map - End Boss.asm" +Map_LBZEndBoss: include "Levels/LBZ/Misc Object Data/Map - End Boss.asm" +Map_CNZEndBoss: include "Levels/CNZ/Misc Object Data/Map - End Boss.asm" CNZEndBossMagnet_AngleX: dc.b 0, 1, 2, 3, 4, 5, 6, 8, 9, $A, $B, $C, $D, $E, $F, $10 dc.b $11, $12, $13, $14, $15, $16, $17, $18, $18, $19, $1A, $1B, $1C, $1D, $1E, $1E diff --git a/sonic3k.asm b/sonic3k.asm index 910c599f..3e53d934 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -73,12 +73,12 @@ RAMEndLoc: dc.l (RAM_start&$FFFFFF)+$FFFF if Sonic3_Complete CartRAM_Info: dc.b "RA" CartRAM_Type: dc.w %1111100000100000 -CartRAMStartLoc: dc.l $00200001 +CartRAMStartLoc:dc.l $00200001 CartRAMEndLoc: dc.l $002003FF else CartRAM_Info: dc.b " " CartRAM_Type: dc.w %10000000100000 -CartRAMStartLoc: dc.l $20202020 +CartRAMStartLoc:dc.l $20202020 CartRAMEndLoc: dc.l $20202020 endif Modem_Info: dc.b " " @@ -181,7 +181,6 @@ SetupValues: dc.w $8000,bytesToLcnt($10000),$100 dc.l Z80_bus_request dc.l Z80_reset dc.l VDP_data_port, VDP_control_port - VDPInitValues: ; values for VDP registers dc.b 4 ; Command $8004 - HInt off, Enable HV counter read dc.b $14 ; Command $8114 - Display off, VInt off, DMA on, PAL off @@ -254,9 +253,7 @@ Z80StartupCodeEnd: dc.w $8F02 ; value for VDP increment dc.l vdpComm($0000,CRAM,WRITE) ; value for CRAM write mode dc.l vdpComm($0000,VSRAM,WRITE) ; value for VSRAM write mode - -PSGInitValues: - dc.b $9F,$BF,$DF,$FF ; values for PSG channel volumes +PSGInitValues: dc.b $9F,$BF,$DF,$FF ; values for PSG channel volumes PSGInitValues_End: ; --------------------------------------------------------------------------- @@ -340,9 +337,7 @@ LockonSerialsText: dc.b "GM 00001051-01" dc.b "GM 00001051-02" dc.b "GM MK-1079 -00" ; Sonic 3 - -SegaHeadersText: - dc.b "SEGA MEGA DRIVE " +SegaHeadersText:dc.b "SEGA MEGA DRIVE " dc.b "SEGA GENESIS " ; --------------------------------------------------------------------------- @@ -1367,22 +1362,22 @@ SndDrvInit: ; in other SMPS Z80 drivers. ; --------------------------------------------------------------------------- Z80_DefaultVariables: - dc.b 0 ; Unused 1 - dc.b 0 ; Unused 2 - dc.b 0 ; zPalFlag - dc.b 0 ; Unused 3 - dc.b 0 ; zPalDblUpdCounter - dc.b 0 ; zSoundQueue0 - dc.b 0 ; zSoundQueue1 - dc.b 0 ; zSoundQueue2 - dc.b 0 ; zTempoSpeedup - dc.b 0 ; zNextSound - dc.b 0 ; zMusicNumber - dc.b 0 ; zSFXNumber0 - dc.b 0 ; zSFXNumber1 - dc.b 0 ; zFadeOutTimeout - dc.b 0 ; zFadeDelay - dc.b 0 ; zFadeDelayTimeout + dc.b 0 ; Unused 1 + dc.b 0 ; Unused 2 + dc.b 0 ; zPalFlag + dc.b 0 ; Unused 3 + dc.b 0 ; zPalDblUpdCounter + dc.b 0 ; zSoundQueue0 + dc.b 0 ; zSoundQueue1 + dc.b 0 ; zSoundQueue2 + dc.b 0 ; zTempoSpeedup + dc.b 0 ; zNextSound + dc.b 0 ; zMusicNumber + dc.b 0 ; zSFXNumber0 + dc.b 0 ; zSFXNumber1 + dc.b 0 ; zFadeOutTimeout + dc.b 0 ; zFadeDelay + dc.b 0 ; zFadeDelayTimeout Z80_DefaultVariables_end: ; --------------------------------------------------------------------------- @@ -2426,7 +2421,6 @@ Eni_Decomp_Masks: dc.w $3FFF dc.w $7FFF dc.w $FFFF - ; --------------------------------------------------------------------------- ; Part of the Enigma decompressor, fetches the next byte if needed ; --------------------------------------------------------------------------- @@ -2917,8 +2911,7 @@ GetSineCosine: ; --------------------------------------------------------------------------- SineTable: binclude "Levels/Misc/sine.bin" ; test - even - + even ; --------------------------------------------------------------------------- ; Calculates the arctangent of y/x and returns it in d0 (360 degrees = 256) ; Inputs: d1 = input x, d2 = input y @@ -2979,7 +2972,7 @@ GetArcTan_Zero: ; --------------------------------------------------------------------------- ArcTanTable: binclude "Levels/Misc/arctan.bin" - even + even ; --------------------------------------------------------------------------- AnPal_Load: @@ -3825,33 +3818,33 @@ loc_2AE8: locret_2AF4: rts ; --------------------------------------------------------------------------- -AnPal_PalAIZ1_1: dc.w $EE8,$EE2,$EA4,$E64,$EE2,$EA4,$E64,$EE8,$EA4,$E64,$EE8,$EE2,$E64,$EE8,$EE2,$EA4 +AnPal_PalAIZ1_1:dc.w $EE8,$EE2,$EA4,$E64,$EE2,$EA4,$E64,$EE8,$EA4,$E64,$EE8,$EE2,$E64,$EE8,$EE2,$EA4 -AnPal_PalAIZ1_3: dc.w $EEC,$EEE,$EE8,$E40,$EEC,$EE8,$EE8,$EEE,$EEA,$E86,$EE8,$EE8,$EE8,$E40,$EE8,$E86 - dc.w $EE6,$EEE,$EE8,$E40,$EEA,$EE8,$EE8,$EEE,$EE8,$E86,$EE8,$EE8,$EE8,$E40,$EE8,$E86 - dc.w $EE6,$EEE,$EE8,$E40,$EE8,$EE8,$EE8,$EEE,$EEA,$E86,$EE8,$EE8,$EEC,$E40,$EE8,$E86 - dc.w $EEC,$EEE,$EE8,$E40,$EEC,$EE8,$EE8,$EEE,$EEC,$E86,$EE8,$EE8,$EEC,$E40,$EE8,$E86 +AnPal_PalAIZ1_3:dc.w $EEC,$EEE,$EE8,$E40,$EEC,$EE8,$EE8,$EEE,$EEA,$E86,$EE8,$EE8,$EE8,$E40,$EE8,$E86 + dc.w $EE6,$EEE,$EE8,$E40,$EEA,$EE8,$EE8,$EEE,$EE8,$E86,$EE8,$EE8,$EE8,$E40,$EE8,$E86 + dc.w $EE6,$EEE,$EE8,$E40,$EE8,$EE8,$EE8,$EEE,$EEA,$E86,$EE8,$EE8,$EEC,$E40,$EE8,$E86 + dc.w $EEC,$EEE,$EE8,$E40,$EEC,$EE8,$EE8,$EEE,$EEC,$E86,$EE8,$EE8,$EEC,$E40,$EE8,$E86 -AnPal_PalAIZ1_4: dc.w $CEC,$CEE,$EEE,$CEE,$EEE,$EEE,$EEE,$EEE,$EEE,$EEE,$EEE,$EEE,$EEE,$EEE,$EEE,$EEE - dc.w $EEE,$EEE,$EEE,$EEE,$EEE,$EE8,$EEE,$EEE,$EE8,$EE8,$EEE,$EE8,$EE8,$EE8,$EE8,$EE8 - dc.w $EE8,$EE8,$EE8,$EE8,$EE8,$EE8,$EE8,$EE8,$EE8,$AEC,$EE8,$AEC,$CEC,$AEC,$CEC,$CEC +AnPal_PalAIZ1_4:dc.w $CEC,$CEE,$EEE,$CEE,$EEE,$EEE,$EEE,$EEE,$EEE,$EEE,$EEE,$EEE,$EEE,$EEE,$EEE,$EEE + dc.w $EEE,$EEE,$EEE,$EEE,$EEE,$EE8,$EEE,$EEE,$EE8,$EE8,$EEE,$EE8,$EE8,$EE8,$EE8,$EE8 + dc.w $EE8,$EE8,$EE8,$EE8,$EE8,$EE8,$EE8,$EE8,$EE8,$AEC,$EE8,$AEC,$CEC,$AEC,$CEC,$CEC -AnPal_PalAIZ1_2: dc.w $EA4,$E60,$EE2,$EA4,$EE8,$EA4,$E60,$EE8,$EEE,$E60,$EE2,$EE2,$EE8,$EA4,$EA4,$EE2 - dc.w $E60,$E60,$EE2,$E60,$EEE,$EE2,$E60,$EE8 +AnPal_PalAIZ1_2:dc.w $EA4,$E60,$EE2,$EA4,$EE8,$EA4,$E60,$EE8,$EEE,$E60,$EE2,$EE2,$EE8,$EA4,$EA4,$EE2 + dc.w $E60,$E60,$EE2,$E60,$EEE,$EE2,$E60,$EE8 -AnPal_PalAIZ2_1: dc.w $EE8,$EE2,$EC4,$EA4,$EE2,$EC4,$EA4,$EE8,$EC4,$EA4,$EE8,$EE2,$EA4,$EE8,$EE2,$EC4 +AnPal_PalAIZ2_1:dc.w $EE8,$EE2,$EC4,$EA4,$EE2,$EC4,$EA4,$EE8,$EC4,$EA4,$EE8,$EE2,$EA4,$EE8,$EE2,$EC4 -AnPal_PalAIZ2_2: dc.w $24, $44, $8E, $26, $46, $AE, $24, $48, $8E, $26, $4A, $AE, $24, $4C, $8E, $26 - dc.w $4A, $AE, $24, $48, $8E, $24, $46, $8E +AnPal_PalAIZ2_2:dc.w $24, $44, $8E, $26, $46, $AE, $24, $48, $8E, $26, $4A, $AE, $24, $4C, $8E, $26 + dc.w $4A, $AE, $24, $48, $8E, $24, $46, $8E -AnPal_PalAIZ2_3: dc.w $24, $44, $C, $26, $46, $E, $24, $48, $C, $26, $4A, $E, $24, $4C, $C, $26 - dc.w $4A, $E, $24, $48, $C, $24, $46, $C +AnPal_PalAIZ2_3:dc.w $24, $44, $C, $26, $46, $E, $24, $48, $C, $26, $4A, $E, $24, $4C, $C, $26 + dc.w $4A, $E, $24, $48, $C, $24, $46, $C -AnPal_PalAIZ2_4: dc.w $6E, $6E, $6E, $6E,$28E,$4AE,$6AE,$8CE,$8EE,$AEE,$AEE,$AEE,$AEE,$AEE,$8EE,$8EE - dc.w $8EE,$8EE,$8CE,$8CE,$8CE,$6AE,$6AE,$4AE,$4AE,$28E +AnPal_PalAIZ2_4:dc.w $6E, $6E, $6E, $6E,$28E,$4AE,$6AE,$8CE,$8EE,$AEE,$AEE,$AEE,$AEE,$AEE,$8EE,$8EE + dc.w $8EE,$8EE,$8CE,$8CE,$8CE,$6AE,$6AE,$4AE,$4AE,$28E -AnPal_PalAIZ2_5: dc.w $C, $C, $C, $C, $2C, $E, $2E, $4E, $6E, $8E, $8E, $8E, $8E, $8E, $6E, $4E - dc.w $4E, $4E, $2E, $2E, $2E, $E, $E, $2C, $2C, $2C +AnPal_PalAIZ2_5:dc.w $C, $C, $C, $C, $2C, $E, $2E, $4E, $6E, $8E, $8E, $8E, $8E, $8E, $6E, $4E + dc.w $4E, $4E, $2E, $2E, $2E, $E, $E, $2C, $2C, $2C AnPal_PalHCZ1: dc.w $EC8,$EC0,$EA0,$E80,$EC0,$EA0,$E80,$EC8,$EA0,$E80,$EC8,$EC0,$E80,$EC8,$EC0,$EA0 @@ -3904,43 +3897,49 @@ AnPal_PalSOZ1: dc.w $2CE,$6CE, $AE, $6C, $6C,$2CE,$6CE, $AE, $AE, $6C,$2CE,$6CE, dc.w $424,$846,$224,$222,$222,$424,$846,$224,$224,$222,$424,$846,$846,$224,$222,$424 dc.w $602,$824,$402,$200,$200,$602,$824,$402,$402,$200,$602,$824,$824,$402,$200,$602 -AnPal_PalSOZ2_Light: dc.w $EEE - -AnPal_PalSOZ2_Light_2: dc.w $8EE,$4EE, $CE,$24C, 6, 0,$CEA,$886,$424, $E0,$EEE,$AEE,$6EE,$4AC, $68, $46 - dc.w $22,$8AA,$468,$224, 2,$28E,$4EE, $8C, $C,$8CE,$6CC,$4AC, $8A,$248, 4, 0 - dc.w $8A8,$664,$422, $80,$CEE,$ACC,$6CC,$48A,$266, $46, $22,$ACC,$468,$224, 2,$28E - dc.w $6EE,$28C,$22C,$2CE,$28A,$268,$246,$224,$202, 0,$464,$222,$200, $40,$ACE,$8AA - dc.w $688,$468,$244, $24, $22,$CCC,$468,$224, 2,$26C,$6EE,$28C,$24C,$88A,$668,$646 - dc.w $424,$224,$202, 0,$444,$222,$200, $40,$8CE,$888,$666,$446,$222, $22, $22,$EEE - dc.w $468,$224, 2,$26A,$6EE,$48C,$26C,$C46,$824,$804,$402,$202,$200, 0,$422,$402 - dc.w $200, $40,$6AE,$664,$422,$402,$200, 0, 0,$EEE,$466,$224, 0, $46,$6EE,$48C - dc.w $26A - -AnPal_PalLRZ12_1: dc.w $EE, $AE, $6E, $E, $AE, $6E, $E, $EE, $6E, $E, $EE,$2CE, $2E,$8EE,$4EE, $6E - dc.w $AEE,$6EE, $8E, $4E,$4EE, $6E, $2E,$8EE, $6E, $E, $EE,$2CE, $E, $EE,$2CE, $6E - dc.w $EE, $AE, $6E, $E, $8E, $4E, $C, $CE, $2E, $A, $AC, $6E, 8, $8E, $4C, $C - dc.w $AC, $6E, $2E, $A, $8E, $4E, $C, $CE, $6E, $E, $EE, $AE, $E, $EE, $AE, $6E - -AnPal_PalLRZ12_2: dc.w $224,$224,$224,$424,$224,$426,$426,$224,$424,$224,$224,$224,$224,$224,$224,$422 - dc.w $422,$422 - -AnPal_PalLRZ1_3: dc.w $624,$624,$624,$624,$624,$624,$626,$626,$826,$826,$826,$826,$826,$826,$826,$626 - dc.w $626 - -AnPal_PalLRZ2_3: dc.w $824,$C44,$E2A,$EAE,$824,$C44,$E2A,$EAE,$824,$C44,$E2A,$EAE,$824,$C44,$E48,$EAC - dc.w $822,$C44,$E66,$EAA,$822,$C44,$E66,$EAA,$822,$C44,$E66,$EAA,$842,$C64,$EA4,$EC6 - dc.w $642,$A82,$CC2,$EE0,$642,$A82,$CC2,$EE0,$642,$A82,$CC2,$EE0,$642,$882,$AC2,$CE0 - dc.w $642,$682,$8C2,$8E0,$642,$682,$8C2,$8E0,$642,$682,$8C2,$8E0,$642,$486,$4C8,$4E8 - dc.w $442,$288,$2CA,$2EC,$442,$288,$2CC,$2EE,$442,$288,$2CA,$2EC,$642,$486,$4C8,$4E8 - dc.w $642,$682,$8C2,$8E0,$642,$882,$AC2,$CE0,$642,$A82,$CC2,$EE0,$842,$C64,$EA4,$EC6 - dc.w $822,$C44,$E66,$EAA,$824,$C44,$E48,$EAC,$824,$C44,$E2A,$EAE,$826,$C46,$E4A,$E8E - dc.w $624,$A48,$C6C,$E6E,$624,$A48,$C6C,$E6E,$624,$A48,$C6C,$E6E,$826,$C46,$E4A,$E8E - -AnPal_PalDEZ12_1: dc.w $E0, 0, 0,$E0E,$E00, 0, 0, $EE, $E, 0, 0,$EE0,$EE0, 0, 0, $E - dc.w $EE, 0, 0,$E00,$E0E, 0, 0, $E0 - -AnPal_PalDEZ12_2: dc.w $8E, $6C, $4A, $28,$6AE,$28C,$26A, $4A,$226,$4AC,$48A,$468,$248,$424,$4AA,$28C - dc.w $26A, $4A,$226,$4AC +AnPal_PalSOZ2_Light: + dc.w $EEE + +AnPal_PalSOZ2_Light_2: + dc.w $8EE,$4EE, $CE,$24C, 6, 0,$CEA,$886,$424, $E0,$EEE,$AEE,$6EE,$4AC, $68, $46 + dc.w $22,$8AA,$468,$224, 2,$28E,$4EE, $8C, $C,$8CE,$6CC,$4AC, $8A,$248, 4, 0 + dc.w $8A8,$664,$422, $80,$CEE,$ACC,$6CC,$48A,$266, $46, $22,$ACC,$468,$224, 2,$28E + dc.w $6EE,$28C,$22C,$2CE,$28A,$268,$246,$224,$202, 0,$464,$222,$200, $40,$ACE,$8AA + dc.w $688,$468,$244, $24, $22,$CCC,$468,$224, 2,$26C,$6EE,$28C,$24C,$88A,$668,$646 + dc.w $424,$224,$202, 0,$444,$222,$200, $40,$8CE,$888,$666,$446,$222, $22, $22,$EEE + dc.w $468,$224, 2,$26A,$6EE,$48C,$26C,$C46,$824,$804,$402,$202,$200, 0,$422,$402 + dc.w $200, $40,$6AE,$664,$422,$402,$200, 0, 0,$EEE,$466,$224, 0, $46,$6EE,$48C + dc.w $26A + +AnPal_PalLRZ12_1: + dc.w $EE, $AE, $6E, $E, $AE, $6E, $E, $EE, $6E, $E, $EE,$2CE, $2E,$8EE,$4EE, $6E + dc.w $AEE,$6EE, $8E, $4E,$4EE, $6E, $2E,$8EE, $6E, $E, $EE,$2CE, $E, $EE,$2CE, $6E + dc.w $EE, $AE, $6E, $E, $8E, $4E, $C, $CE, $2E, $A, $AC, $6E, 8, $8E, $4C, $C + dc.w $AC, $6E, $2E, $A, $8E, $4E, $C, $CE, $6E, $E, $EE, $AE, $E, $EE, $AE, $6E + +AnPal_PalLRZ12_2: + dc.w $224,$224,$224,$424,$224,$426,$426,$224,$424,$224,$224,$224,$224,$224,$224,$422 + dc.w $422,$422 + +AnPal_PalLRZ1_3:dc.w $624,$624,$624,$624,$624,$624,$626,$626,$826,$826,$826,$826,$826,$826,$826,$626 + dc.w $626 + +AnPal_PalLRZ2_3:dc.w $824,$C44,$E2A,$EAE,$824,$C44,$E2A,$EAE,$824,$C44,$E2A,$EAE,$824,$C44,$E48,$EAC + dc.w $822,$C44,$E66,$EAA,$822,$C44,$E66,$EAA,$822,$C44,$E66,$EAA,$842,$C64,$EA4,$EC6 + dc.w $642,$A82,$CC2,$EE0,$642,$A82,$CC2,$EE0,$642,$A82,$CC2,$EE0,$642,$882,$AC2,$CE0 + dc.w $642,$682,$8C2,$8E0,$642,$682,$8C2,$8E0,$642,$682,$8C2,$8E0,$642,$486,$4C8,$4E8 + dc.w $442,$288,$2CA,$2EC,$442,$288,$2CC,$2EE,$442,$288,$2CA,$2EC,$642,$486,$4C8,$4E8 + dc.w $642,$682,$8C2,$8E0,$642,$882,$AC2,$CE0,$642,$A82,$CC2,$EE0,$842,$C64,$EA4,$EC6 + dc.w $822,$C44,$E66,$EAA,$824,$C44,$E48,$EAC,$824,$C44,$E2A,$EAE,$826,$C46,$E4A,$E8E + dc.w $624,$A48,$C6C,$E6E,$624,$A48,$C6C,$E6E,$624,$A48,$C6C,$E6E,$826,$C46,$E4A,$E8E + +AnPal_PalDEZ12_1: + dc.w $E0, 0, 0,$E0E,$E00, 0, 0, $EE, $E, 0, 0,$EE0,$EE0, 0, 0, $E + dc.w $EE, 0, 0,$E00,$E0E, 0, 0, $E0 + +AnPal_PalDEZ12_2: + dc.w $8E, $6C, $4A, $28,$6AE,$28C,$26A, $4A,$226,$4AC,$48A,$468,$248,$424,$4AA,$28C + dc.w $26A, $4A,$226,$4AC AnPal_PalDEZ1: dc.w $8AC,$68A,$468,$246,$246,$8AC,$68A,$468,$468,$246,$8AC,$68A,$68A,$468,$246,$8AC dc.w $468,$246,$8AC,$68A,$246,$8AC,$68A,$468 @@ -3962,15 +3961,18 @@ AnPal_PalEMZ_1: dc.w 6, 8, $A, $C, $E, $E, $E, $E, $C, $A, 8, 6 AnPal_PalEMZ_2: dc.w 0, $E, 2, $C, 4, $A, 6, 8, 8, 6, $A, 4, $C, 2, $E, 0 dc.w $C, 2, $A, 4, 8, 6, 6, 8, 4, $A, 2, $C -AnPal_PalSlots_1: dc.w $46,$488,$2EE, $8A, $68,$26A,$EEE, $AC, $8A, $46,$488,$2EE, $AC, $68,$26A,$EEE - dc.w $2EE, $8A, $46,$488,$EEE, $AC, $68,$26A,$48A,$2EE, $8A, $46,$268,$EEE, $AC, $68 +AnPal_PalSlots_1: + dc.w $46,$488,$2EE, $8A, $68,$26A,$EEE, $AC, $8A, $46,$488,$2EE, $AC, $68,$26A,$EEE + dc.w $2EE, $8A, $46,$488,$EEE, $AC, $68,$26A,$48A,$2EE, $8A, $46,$268,$EEE, $AC, $68 -AnPal_PalSlots_2: dc.w $268,$EEE, $AC, $68,$EEE,$EEE,$EEE,$EEE,$48A,$2EE, $8A, $46, $EE, $EE, $EE, $EE - dc.w $EEE, $AC, $68,$26A,$EEE,$EEE,$EEE,$EEE,$2EE, $8A, $46,$488,$E0E,$E0E,$E0E,$E0E - dc.w $AC, $68,$26A,$EEE,$EEE,$EEE,$EEE,$EEE, $8A, $46,$488,$2EE,$EE0,$EE0,$EE0,$EE0 - dc.w $68,$26A,$EEE, $AC,$EEE,$EEE,$EEE,$EEE, $46,$488,$2EE, $8A, $E0, $E0, $E0, $E0 +AnPal_PalSlots_2: + dc.w $268,$EEE, $AC, $68,$EEE,$EEE,$EEE,$EEE,$48A,$2EE, $8A, $46, $EE, $EE, $EE, $EE + dc.w $EEE, $AC, $68,$26A,$EEE,$EEE,$EEE,$EEE,$2EE, $8A, $46,$488,$E0E,$E0E,$E0E,$E0E + dc.w $AC, $68,$26A,$EEE,$EEE,$EEE,$EEE,$EEE, $8A, $46,$488,$2EE,$EE0,$EE0,$EE0,$EE0 + dc.w $68,$26A,$EEE, $AC,$EEE,$EEE,$EEE,$EEE, $46,$488,$2EE, $8A, $E0, $E0, $E0, $E0 -AnPal_PalSlots_3: dc.w $E02,$E24,$E46,$E68,$E8A,$EAC +AnPal_PalSlots_3: + dc.w $E02,$E24,$E46,$E68,$E8A,$EAC AnPal_PalLRZ3: dc.w $424, $AE,$424, $AE,$424, $AE,$426, $8E,$428, $6E,$42A, $4E,$42C, $2E,$42E, $E dc.w $42E, $E,$42E, $E,$42C, $2E,$42A, $4E,$428, $6E,$426, $8E,$424, $AE @@ -4207,7 +4209,6 @@ PalCycle_SuperSonic: dc.w $AEE,$8EE,$6CC dc.w $8EE,$0EE,$0AA dc.w $AEE,$8EE,$6CC - PalCycle_SuperSonicUnderwaterAIZICZ: dc.w $A82,$860,$640 dc.w $E88,$C66,$844 @@ -4219,7 +4220,6 @@ PalCycle_SuperSonicUnderwaterAIZICZ: dc.w $AEC,$8EC,$6CA dc.w $8EC,$4EA,$4A8 dc.w $CEE,$CEC,$AEC - PalCycle_SuperSonicUnderwaterHCZCNZLBZ: dc.w $C66,$A44,$624 dc.w $E88,$C66,$844 @@ -4231,7 +4231,6 @@ PalCycle_SuperSonicUnderwaterHCZCNZLBZ: dc.w $AEC,$8EC,$6CA dc.w $8EC,$4EA,$4A8 dc.w $CEE,$CEC,$AEC - PalCycle_HyperSonic: dc.w $EEC,$ECA,$EA8 dc.w $EEE,$EEE,$EEE @@ -4245,7 +4244,6 @@ PalCycle_HyperSonic: dc.w $EEE,$EEE,$EEE dc.w $EEE,$ECE,$CAC dc.w $EEE,$EEE,$EEE - PalCycle_SuperTails: dc.w $0AE,$08E,$46A dc.w $4CE,$2AE,$46A @@ -4253,7 +4251,6 @@ PalCycle_SuperTails: dc.w $AEE,$8CE,$48E dc.w $8CE,$4CE,$46C dc.w $4CE,$2AE,$46A - PalCycle_SuperHyperKnuckles: dc.w $A6E,$64E,$428 dc.w $C8E,$86E,$64A @@ -4265,7 +4262,6 @@ PalCycle_SuperHyperKnuckles: dc.w $C8E,$86E,$64A dc.w $A6E,$64E,$428 dc.w $84E,$40C,$206 - PalCycle_SuperHyperKnucklesRevert: dc.w $64E,$20C,$206 @@ -5131,13 +5127,12 @@ loc_4306: rts ; --------------------------------------------------------------------------- DemoLevels: dc.w 0 ; Angel Island - dc.w $100 ; Hydrocity - dc.w $200 ; Marble Garden - dc.w $700 ; Mushroom Hill - dc.w $400 ; Flying Battery - dc.w $800 ; Sandopolis - dc.w $FFFF - + dc.w $100 ; Hydrocity + dc.w $200 ; Marble Garden + dc.w $700 ; Mushroom Hill + dc.w $400 ; Flying Battery + dc.w $800 ; Sandopolis + dc.w $FFFF ; --------------------------------------------------------------------------- @@ -5212,7 +5207,7 @@ loc_43F2: ; End of function Iterate_TitleSonicFrame ; --------------------------------------------------------------------------- -SonicFrameIndex: dc.b 1, 2, 3, 4, 5, 6, 7, 8, 9, $A, $B, $FF +SonicFrameIndex:dc.b 1, 2, 3, 4, 5, 6, 7, 8, 9, $A, $B, $FF ; =============== S U B R O U T I N E ======================================= @@ -5310,7 +5305,8 @@ loc_44E2: ; End of function TitleSonic_LoadFrame ; --------------------------------------------------------------------------- -TitleSonic_Frames:dc.l ArtKos_S3TitleSonic1 ;S3DATA +TitleSonic_Frames: + dc.l ArtKos_S3TitleSonic1 ;S3DATA dc.l Pal_TitleSonic1 dc.l MapEni_S3TitleSonic1 ;S3DATA dc.l ArtKos_S3TitleSonic1 ;S3DATA @@ -5350,48 +5346,33 @@ TitleSonic_Frames:dc.l ArtKos_S3TitleSonic1 ;S3DATA dc.l Pal_TitleSonicD dc.l MapEni_S3TitleSonicD ;S3DATA Pal_Title: binclude "General/Title/Palettes/S3.bin" - even - + even Pal_TitleSonic1:binclude "General/Title/Palettes/S3 Sonic 1.bin" - even - + even Pal_TitleSonic2:binclude "General/Title/Palettes/S3 Sonic 2.bin" - even - + even Pal_TitleSonic3:binclude "General/Title/Palettes/S3 Sonic 3.bin" - even - + even Pal_TitleSonic4:binclude "General/Title/Palettes/S3 Sonic 4.bin" - even - + even Pal_TitleSonic5:binclude "General/Title/Palettes/S3 Sonic 5.bin" - even - + even Pal_TitleSonic6:binclude "General/Title/Palettes/S3 Sonic 6.bin" - even - + even Pal_TitleSonic7:binclude "General/Title/Palettes/S3 Sonic 7.bin" - even - + even Pal_TitleSonic8:binclude "General/Title/Palettes/S3 Sonic 8.bin" - even - + even Pal_TitleSonic9:binclude "General/Title/Palettes/S3 Sonic 9.bin" - even - + even Pal_TitleSonicA:binclude "General/Title/Palettes/S3 Sonic A.bin" - even - + even Pal_TitleSonicB:binclude "General/Title/Palettes/S3 Sonic B.bin" - even - + even Pal_TitleSonicC:binclude "General/Title/Palettes/S3 Sonic C.bin" - even - + even Pal_TitleSonicD:binclude "General/Title/Palettes/S3 Sonic D.bin" - even - - + even ; --------------------------------------------------------------------------- Obj_TitleBanner: @@ -5457,8 +5438,9 @@ loc_48F2: move.l Pal_TitleWaterRot(pc,d0.w),(Target_palette_line_3+$1A).w jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -Pal_TitleWaterRot: binclude "General/Title/Palettes/S3 Water Anim.bin" - even +Pal_TitleWaterRot: + binclude "General/Title/Palettes/S3 Water Anim.bin" + even ; --------------------------------------------------------------------------- Obj_TitleTM: @@ -5498,8 +5480,8 @@ Obj_TitleANDKnuckles_Display: move.w d0,$14(a0) jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -Map_TitleANDKnuckles: include "General/Title/Map - S3 ANDKnuckles.asm" - +Map_TitleANDKnuckles: + include "General/Title/Map - S3 ANDKnuckles.asm" ; --------------------------------------------------------------------------- ; Dead code @@ -5621,8 +5603,8 @@ Obj_TitleSonicFinger_Display: jsr (Animate_Sprite).l jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -Ani_TitleSonicFinger: include "General/Title/Anim - S3 Sonic Finger.asm" - +Ani_TitleSonicFinger: + include "General/Title/Anim - S3 Sonic Finger.asm" ; --------------------------------------------------------------------------- Obj_TitleSonicWink: @@ -5643,8 +5625,8 @@ Obj_TitleSonicWink_Display: jsr (Animate_SpriteIrregularDelay).l jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -Ani_TitleSonicWink: include "General/Title/Anim - S3 Sonic Wink.asm" - +Ani_TitleSonicWink: + include "General/Title/Anim - S3 Sonic Wink.asm" ; --------------------------------------------------------------------------- Obj_TitleTailsPlane: @@ -5689,8 +5671,8 @@ loc_4C28: loc_4C3E: jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -Ani_TitleTailsPlane: include "General/Title/Anim - S3 Tails Plane.asm" - +Ani_TitleTailsPlane: + include "General/Title/Anim - S3 Tails Plane.asm" ; =============== S U B R O U T I N E ======================================= @@ -5733,15 +5715,15 @@ LSelect3CodeDat:dc.b 1 dc.b 1 dc.b 0 dc.b 0 -Map_TitleScreenText: include "General/Title/Map - S3 Screen Text.asm" - -ArtNem_TitleScreenText:binclude "General/Title/Nemesis Art/S3 Screen Text.bin" - even - -Map_TitleSonicAnim: include "General/Title/Map - S3 Sonic Anim.asm" - -Map_TitleTailsPlane: include "General/Title/Map - S3 Tails Plane.asm" - +Map_TitleScreenText: + include "General/Title/Map - S3 Screen Text.asm" +ArtNem_TitleScreenText: + binclude "General/Title/Nemesis Art/S3 Screen Text.bin" + even +Map_TitleSonicAnim: + include "General/Title/Map - S3 Sonic Anim.asm" +Map_TitleTailsPlane: + include "General/Title/Map - S3 Tails Plane.asm" ; --------------------------------------------------------------------------- SK_Alone_Title_Screen: @@ -6104,16 +6086,15 @@ Prep_MHZDemo: ; End of function Prep_MHZDemo ; --------------------------------------------------------------------------- -Pal_SKTitle_Sonic: binclude "General/Title/Palettes/SK Sonic.bin" ;5588.bin" - even - -Pal_SKTitle_SegaBG: binclude "General/Title/Palettes/SK Sega and BG.bin" ;55A8.bin" - even - -Pal_SKTitle_Knux: binclude "General/Title/Palettes/SK Knuckles.bin" ;5608.bin" - even - - +Pal_SKTitle_Sonic: + binclude "General/Title/Palettes/SK Sonic.bin" ;5588.bin" + even +Pal_SKTitle_SegaBG: + binclude "General/Title/Palettes/SK Sega and BG.bin" ;55A8.bin" + even +Pal_SKTitle_Knux: + binclude "General/Title/Palettes/SK Knuckles.bin" ;5608.bin" + even ; --------------------------------------------------------------------------- Obj_SKTitle_SonicFall: @@ -6478,13 +6459,16 @@ loc_5A80: ; End of function sub_5A50 ; --------------------------------------------------------------------------- -SKTitle_AnimSmile: dc.b 5, 0, 3, 6, $FE, 1 -SKTitle_AnimFinger: dc.b 3, $29, $29, $29, $29, $29, $29, $29, $29, $29, $29, $29, $29, $29, $29, $29, $29, $29, $29, $29 - dc.b $29, $29, $29, $29, $29, $29, $29, $29, $29, $29, $29, $29, $29, 0, 0, $29, $52, $29, 0, $29 - dc.b $52, $29, 0, $29, $52, $29, $FF -SKTitle_AnimKnuckle1: dc.b 3, 0, 0, 0, 0, 0, 0, 0, 0, $2F, $5E, $2F, 0, $2F, $5E, $2F, $FF -SKTitle_AnimKnuckle2: dc.b 3, 0, 0, $14, $28, $14, 0, 0, $FF, 0 - +SKTitle_AnimSmile: + dc.b 5, 0, 3, 6, $FE, 1 +SKTitle_AnimFinger: + dc.b 3, $29, $29, $29, $29, $29, $29, $29, $29, $29, $29, $29, $29, $29, $29, $29, $29, $29, $29, $29 + dc.b $29, $29, $29, $29, $29, $29, $29, $29, $29, $29, $29, $29, $29, 0, 0, $29, $52, $29, 0, $29 + dc.b $52, $29, 0, $29, $52, $29, $FF +SKTitle_AnimKnuckle1: + dc.b 3, 0, 0, 0, 0, 0, 0, 0, 0, $2F, $5E, $2F, 0, $2F, $5E, $2F, $FF +SKTitle_AnimKnuckle2: + dc.b 3, 0, 0, $14, $28, $14, 0, 0, $FF, 0 ; --------------------------------------------------------------------------- Obj_SKTitle_Icon: @@ -6601,8 +6585,8 @@ Obj_SKTitle_Icon2Display: jsr (Animate_Sprite).l jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -Ani_SKTitle_Icon: include "General/Title/Anim - SK Icon.asm" - +Ani_SKTitle_Icon: + include "General/Title/Anim - SK Icon.asm" ; --------------------------------------------------------------------------- Obj_SKTitle_TM: @@ -6854,17 +6838,21 @@ loc_5E8C: ; End of function SKTitle_DeformBG ; --------------------------------------------------------------------------- -SKTitle_ShakeOffsets: dc.b 1, 2, 1, 3, 1, 2, 2, 1, 2, 3, 1, 2, 1, 2, 0, 0 - dc.b 2, 0, 3, 2, 2, 3, 2, 2, 1, 3, 0, 0, 1, 0, 1, 3 - dc.b 1, 2, 1, 3, 1, 2, 2, 1, 2, 3, 1, 2, 1, 2, 0, 0 - dc.b 2, 0, 3, 2, 2, 3, 2, 2, 1, 3, 0, 0, 1, 0, 1, 3, 1, 2 - even -Map_SKTitle_Icon: include "General/Title/Map - SK Icon.asm" ;5ED8.asm" - even -Map_SKTitle_TM: include "General/Title/Map - SK TM.asm" ;5F62.asm" - even -Map_SKTitle_Copyright: include "General/Title/Map - SK Copyright.asm" ;5F6C.asm" - even +SKTitle_ShakeOffsets: + dc.b 1, 2, 1, 3, 1, 2, 2, 1, 2, 3, 1, 2, 1, 2, 0, 0 + dc.b 2, 0, 3, 2, 2, 3, 2, 2, 1, 3, 0, 0, 1, 0, 1, 3 + dc.b 1, 2, 1, 3, 1, 2, 2, 1, 2, 3, 1, 2, 1, 2, 0, 0 + dc.b 2, 0, 3, 2, 2, 3, 2, 2, 1, 3, 0, 0, 1, 0, 1, 3, 1, 2 + even +Map_SKTitle_Icon: + include "General/Title/Map - SK Icon.asm" ;5ED8.asm" + even +Map_SKTitle_TM: + include "General/Title/Map - SK TM.asm" ;5F62.asm" + even +Map_SKTitle_Copyright: + include "General/Title/Map - SK Copyright.asm" ;5F6C.asm" + even ; --------------------------------------------------------------------------- LevelMusic_Playlist: dc.b mus_AIZ1, mus_AIZ2 ; ANGEL ISLAND ZONE @@ -7903,8 +7891,7 @@ loc_6C04: rts ; --------------------------------------------------------------------------- Pal_Level_2P: binclude "Levels/Misc/Palettes/2P Level Secondary.bin" - even - + even ; --------------------------------------------------------------------------- Obj_ResetCollisionResponseList: @@ -8017,9 +8004,9 @@ loc_6D26: bsr.w sub_714E rts ; --------------------------------------------------------------------------- -StartingWaterHeights: binclude "Levels/Misc/StartingWaterHeights.bin" - even - +StartingWaterHeights: + binclude "Levels/Misc/StartingWaterHeights.bin" + even ; =============== S U B R O U T I N E ======================================= @@ -8365,7 +8352,8 @@ locret_705A: ; End of function HCZ_WaterTunnels ; --------------------------------------------------------------------------- -HCZ1_WaterTunLocs: dc.w $E +HCZ1_WaterTunLocs: + dc.w $E dc.w $380, $580, $5A0, $5C0, $3F0, $FFE0, 0 ; Min X, Min Y, Max X, Max Y, X Velo, Y Velo, Player can influence which axis flag (Set = X, Clear = Y) dc.w $5A0, $560, $A80, $5C0, $3F0, $FFF0, 0 dc.w $1400, $A80, $15A0, $AC0, $400, 0, 0 @@ -8381,11 +8369,11 @@ HCZ1_WaterTunLocs: dc.w $E dc.w $2EE0, $790, $2F50, $800, $300, $FD00, $100 dc.w $2F00, $700, $2F70, $790, $100, $FC00, $100 dc.w $2F30, $680, $2F70, $700, 0, $FC00, $100 -HCZ2_WaterTunLocs: dc.w 1 +HCZ2_WaterTunLocs: + dc.w 1 dc.w $3980, $800, $3AA0, $840, $400, 0, 0 dc.w $3AA0, $7C0, $3F00, $840, $400, $FFC0, 0 - ; =============== S U B R O U T I N E ======================================= @@ -8730,13 +8718,10 @@ loc_747C: ; --------------------------------------------------------------------------- dc.b $1C, $72, $83, $84, $8B, $91, $9F, $A0, $A5, $A6 byte_7498: dc.b $2E, $C6, $33, $C5, $24, $2A, $44, $1F, $27, $2B - byte_74A2: dc.b $F8, $F8, 8, 8, $F4, $F4, $F4, $C, $C, $C, $F, $13, $14, $15, $16, $17, $35, $6C, $6D, $76 dc.b $77, $7E, $7F, $85, $8A, $8C, $90 - byte_74BD: dc.b $F8, 0, $F8, 0, $FA, 1, $FA, 2, $F8, 0, $F8, 0, $F8, 0, 6, 1, 0, 3, 6, 2 dc.b 8, 0, 8, 0, 8, 0, 8, 0, 8, 0, 0, 3, $F8, 0, 0 - ; --------------------------------------------------------------------------- ; Water palette transition tables @@ -9315,7 +9300,7 @@ loc_7A22: ; --------------------------------------------------------------------------- Pal_WaterKnux: binclude "Levels/Misc/Palettes/Water Knuckles Patch.bin" - even + even ; --------------------------------------------------------------------------- LevelSelect_S2Options: @@ -9565,8 +9550,7 @@ LevelSelect_SpecialStageCheck: move.b #1,(SK_special_stage_flag).w bra.s LevelSelect_SpecialStage ; --------------------------------------------------------------------------- -LS_Level_Order: - dc.w 0 ; AIZ act 1 +LS_Level_Order: dc.w 0 ; AIZ act 1 dc.w 1 ; AIZ act 2 dc.w $100 ; HCZ act 1 dc.w $101 ; HCZ act 2 @@ -9966,7 +9950,6 @@ LevSel_MarkTable: ; 4 bytes per level select entry dc.b $13,$2C,$13,$4A dc.b $13,$2C,$14,$4A dc.b $16,$2C,$16,$4A ;$20 - LevSel_MappingOffsets: dc.w planeLocH28(3,1) dc.w planeLocH28(3,4) @@ -10257,7 +10240,8 @@ loc_8588: bne.s loc_853E rts ; --------------------------------------------------------------------------- -SSLayoutOffs_RAM:dc.l RAM_start+$0000 +SSLayoutOffs_RAM: + dc.l RAM_start+$0000 dc.l RAM_start+$0408 dc.l RAM_start+$0810 dc.l RAM_start+$0C18 @@ -10612,59 +10596,42 @@ SS_Pal_Map_Ptrs:dc.l RAM_start+$5500 dc.l Pal_SStage_3_1 dc.l RAM_start+$6680 dc.l Pal_SStage_3_1 -Pal_SStage_Main: binclude "General/Special Stage/Palettes/Main.bin" - even - -Pal_SStage_Knux: binclude "General/Special Stage/Palettes/Knux Patch.bin" - even - -Pal_SStage_3_1: binclude "General/Special Stage/Palettes/3-1.bin" - even - -Pal_SStage_3_2: binclude "General/Special Stage/Palettes/3-2.bin" - even - -Pal_SStage_3_3: binclude "General/Special Stage/Palettes/3-3.bin" - even - -Pal_SStage_3_4: binclude "General/Special Stage/Palettes/3-4.bin" - even - -Pal_SStage_3_5: binclude "General/Special Stage/Palettes/3-5.bin" - even - -Pal_SStage_3_6: binclude "General/Special Stage/Palettes/3-6.bin" - even - -Pal_SStage_3_7: binclude "General/Special Stage/Palettes/3-7.bin" - even - -Pal_SStage_3_8: binclude "General/Special Stage/Palettes/3-8.bin" - even - -Pal_SStage_K_1: binclude "General/Special Stage/Palettes/K-1.bin" - even - -Pal_SStage_K_2: binclude "General/Special Stage/Palettes/K-2.bin" - even - -Pal_SStage_K_3: binclude "General/Special Stage/Palettes/K-3.bin" - even - -Pal_SStage_K_4: binclude "General/Special Stage/Palettes/K-4.bin" - even - -Pal_SStage_K_5: binclude "General/Special Stage/Palettes/K-5.bin" - even - -Pal_SStage_K_6: binclude "General/Special Stage/Palettes/K-6.bin" - even - -Pal_SStage_K_7: binclude "General/Special Stage/Palettes/K-7.bin" - even - -Pal_SStage_K_8: binclude "General/Special Stage/Palettes/K-8.bin" - even +Pal_SStage_Main:binclude "General/Special Stage/Palettes/Main.bin" + even +Pal_SStage_Knux:binclude "General/Special Stage/Palettes/Knux Patch.bin" + even +Pal_SStage_3_1: binclude "General/Special Stage/Palettes/3-1.bin" + even +Pal_SStage_3_2: binclude "General/Special Stage/Palettes/3-2.bin" + even +Pal_SStage_3_3: binclude "General/Special Stage/Palettes/3-3.bin" + even +Pal_SStage_3_4: binclude "General/Special Stage/Palettes/3-4.bin" + even +Pal_SStage_3_5: binclude "General/Special Stage/Palettes/3-5.bin" + even +Pal_SStage_3_6: binclude "General/Special Stage/Palettes/3-6.bin" + even +Pal_SStage_3_7: binclude "General/Special Stage/Palettes/3-7.bin" + even +Pal_SStage_3_8: binclude "General/Special Stage/Palettes/3-8.bin" + even +Pal_SStage_K_1: binclude "General/Special Stage/Palettes/K-1.bin" + even +Pal_SStage_K_2: binclude "General/Special Stage/Palettes/K-2.bin" + even +Pal_SStage_K_3: binclude "General/Special Stage/Palettes/K-3.bin" + even +Pal_SStage_K_4: binclude "General/Special Stage/Palettes/K-4.bin" + even +Pal_SStage_K_5: binclude "General/Special Stage/Palettes/K-5.bin" + even +Pal_SStage_K_6: binclude "General/Special Stage/Palettes/K-6.bin" + even +Pal_SStage_K_7: binclude "General/Special Stage/Palettes/K-7.bin" + even +Pal_SStage_K_8: binclude "General/Special Stage/Palettes/K-8.bin" + even ; =============== S U B R O U T I N E ======================================= @@ -10758,7 +10725,6 @@ loc_8E2A: jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- Map_SSIcons: include "General/Special Stage/Map - Icons.asm" - ; --------------------------------------------------------------------------- Obj_SStage_8E40: @@ -10860,8 +10826,8 @@ loc_8F50: move.w d0,$10(a0) jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -Map_GetBlueSpheres: include "General/Special Stage/Map - Get Blue Spheres.asm" - +Map_GetBlueSpheres: + include "General/Special Stage/Map - Get Blue Spheres.asm" ; --------------------------------------------------------------------------- Obj_SStage_8FAA: @@ -11044,11 +11010,8 @@ locret_91E6: rts ; --------------------------------------------------------------------------- byte_91E8: dc.b 2, 6, 7, 8, 7, 6, 2, 3, 4, 5, 4, 3, 1, 0 - byte_91F6: dc.b 9, $B, $A, $B, 9, $B, $A, $B, 9, $B, $A, $B, $B, 0 - byte_9204: dc.b 9, $A, $B, 9, $A, $B, 9, $A, $B, 9, $A, $B, $B, 0 - ; --------------------------------------------------------------------------- Obj_SStage_9212: @@ -12141,9 +12104,9 @@ locret_9D1C: ; End of function sub_9B62 ; --------------------------------------------------------------------------- -Pal_SStage_Emeralds: binclude "General/Special Stage/Palettes/Emeralds.bin" - even - +Pal_SStage_Emeralds: + binclude "General/Special Stage/Palettes/Emeralds.bin" + even ; =============== S U B R O U T I N E ======================================= @@ -12796,14 +12759,14 @@ GetScalars2: ; --------------------------------------------------------------------------- ScalarTable2: binclude "General/Special Stage/Scalars.bin" even -Map_SStageSphere: include "General/Special Stage/Map - Sphere.asm" - -Map_SStageRing: include "General/Special Stage/Map - Ring.asm" - -Map_SStageChaosEmerald: include "General/Special Stage/Map - Chaos Emerald.asm" - -Map_SStageSuperEmerald: include "General/Special Stage/Map - Super Emerald.asm" - +Map_SStageSphere: + include "General/Special Stage/Map - Sphere.asm" +Map_SStageRing: + include "General/Special Stage/Map - Ring.asm" +Map_SStageChaosEmerald: + include "General/Special Stage/Map - Chaos Emerald.asm" +Map_SStageSuperEmerald: + include "General/Special Stage/Map - Super Emerald.asm" ; --------------------------------------------------------------------------- locret_A85C: @@ -13610,7 +13573,8 @@ sub_B0E4: ; End of function sub_B0E4 ; --------------------------------------------------------------------------- -VRAMDatList_CompetitionLevelSelect:dc.w $18 +VRAMDatList_CompetitionLevelSelect: + dc.w $18 dc.l RAM_start+$0000 dc.w $C098 dc.w $1A @@ -13711,7 +13675,8 @@ VRAMDatList_CompetitionLevelSelect:dc.w $18 dc.w $D3D0 dc.w 8 dc.w 1 -ObjDat_CompetitionMatchRace: dc.w $B +ObjDat_CompetitionMatchRace: + dc.w $B dc.l Obj_Competition_ZoneSelect dc.w $F4 dc.w 0 @@ -13784,7 +13749,8 @@ ObjDat_CompetitionMatchRace: dc.w $B dc.w $2000 dc.b 5 dc.b 0 -ObjDat_CompetitionTimeAttack: dc.w 5 +ObjDat_CompetitionTimeAttack: + dc.w 5 dc.l Obj_Competition_ZoneSelect dc.w $F4 dc.w $30 @@ -14645,7 +14611,8 @@ ObjDat_BB4A: dc.w 7 dc.w 0 dc.b 0 dc.b 1 -VRAMDatList_BBAC:dc.w 8 +VRAMDatList_BBAC: + dc.w 8 dc.l RAM_start+$0000 dc.w $E000 dc.w $27 @@ -14960,7 +14927,8 @@ ObjDat_BF58: dc.w 4 dc.w 0 dc.b 0 dc.b 2 -VRAMDatList_BF96:dc.w 8 +VRAMDatList_BF96: + dc.w 8 dc.l RAM_start+$0000 dc.w $E000 dc.w $27 @@ -14997,7 +14965,8 @@ VRAMDatList_BF96:dc.w 8 dc.w $C944 dc.w 2 dc.w 7 -CompTimeAttack_LevelNameMaps:dc.l MapUnc_CompetitionAZURELAKE +CompTimeAttack_LevelNameMaps: + dc.l MapUnc_CompetitionAZURELAKE dc.l MapUnc_CompetitionBALLOONPARK dc.l MapUnc_CompetitionDESERTPALACE dc.l MapUnc_CompetitionCHROMEGADGET @@ -15459,7 +15428,8 @@ Write_SaveGame: ; End of function Write_SaveGame ; --------------------------------------------------------------------------- -SaveGame_NextLevel: dc.b 1, 1, 2, 2, 3, 3, 4, 4, 8, 8, 5, 5, 6, 6, 7, 7, 9, 9, $A, $A +SaveGame_NextLevel: + dc.b 1, 1, 2, 2, 3, 3, 4, 4, 8, 8, 5, 5, 6, 6, 7, 7, 9, 9, $A, $A dc.b $C, $C, $D, $D, $E, $E, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 dc.b 0, 0, 0, 0, $A, $B, $D, 0 @@ -15948,8 +15918,7 @@ loc_C94C: ; --------------------------------------------------------------------------- ; shows level number 1-14 ; NOTE: $FF acts as zero -byte_C95E: - dc.b $FF, 1 ; 01 +byte_C95E: dc.b $FF, 1 ; 01 dc.b $FF, 2 ; 02 dc.b $FF, 3 ; 03 dc.b $FF, 4 ; 04 @@ -16079,55 +16048,73 @@ word_CA4E: dc.w $A49B dc.w $8000 dc.w $8000 Pal_Save_Chars: binclude "General/Save Menu/Palettes/Chars.bin" - even - -Pal_Save_Emeralds: binclude "General/Save Menu/Palettes/Emeralds.bin" - even - -Pal_Save_FinishCard1: binclude "General/Save Menu/Palettes/Finish Card 1.bin" - even -Pal_Save_FinishCard2: binclude "General/Save Menu/Palettes/Finish Card 2.bin" - even -Pal_Save_FinishCard3: binclude "General/Save Menu/Palettes/Finish Card 3.bin" - even - -Pal_Save_ZoneCard1: binclude "General/Save Menu/Palettes/Zone Card 1.bin" - even -Pal_Save_ZoneCard2: binclude "General/Save Menu/Palettes/Zone Card 2.bin" - even -Pal_Save_ZoneCard3: binclude "General/Save Menu/Palettes/Zone Card 3.bin" - even -Pal_Save_ZoneCard4: binclude "General/Save Menu/Palettes/Zone Card 4.bin" - even -Pal_Save_ZoneCard5: binclude "General/Save Menu/Palettes/Zone Card 5.bin" - even -Pal_Save_ZoneCard6: binclude "General/Save Menu/Palettes/Zone Card 6.bin" - even -Pal_Save_ZoneCard7: binclude "General/Save Menu/Palettes/Zone Card 7.bin" - even -Pal_Save_ZoneCard8: binclude "General/Save Menu/Palettes/Zone Card 8.bin" - even -Pal_Save_ZoneCard9: binclude "General/Save Menu/Palettes/Zone Card 9.bin" - even -Pal_Save_ZoneCardA: binclude "General/Save Menu/Palettes/Zone Card A.bin" - even -Pal_Save_ZoneCardB: binclude "General/Save Menu/Palettes/Zone Card B.bin" - even -Pal_Save_ZoneCardC: binclude "General/Save Menu/Palettes/Zone Card C.bin" - even -Pal_Save_ZoneCardD: binclude "General/Save Menu/Palettes/Zone Card D.bin" - even -Pal_Save_ZoneCardE: binclude "General/Save Menu/Palettes/Zone Card E.bin" - even -Pal_Save_ZoneCardF: binclude "General/Save Menu/Palettes/Zone Card F.bin" - even -Pal_Save_ZoneCard10: binclude "General/Save Menu/Palettes/Zone Card 10.bin" - even -Pal_Save_ZoneCard11: binclude "General/Save Menu/Palettes/Zone Card 11.bin" - even -Pal_Save_ZoneCard12: binclude "General/Save Menu/Palettes/Zone Card 12.bin" - even - + even +Pal_Save_Emeralds: + binclude "General/Save Menu/Palettes/Emeralds.bin" + even +Pal_Save_FinishCard1: + binclude "General/Save Menu/Palettes/Finish Card 1.bin" + even +Pal_Save_FinishCard2: + binclude "General/Save Menu/Palettes/Finish Card 2.bin" + even +Pal_Save_FinishCard3: + binclude "General/Save Menu/Palettes/Finish Card 3.bin" + even +Pal_Save_ZoneCard1: + binclude "General/Save Menu/Palettes/Zone Card 1.bin" + even +Pal_Save_ZoneCard2: + binclude "General/Save Menu/Palettes/Zone Card 2.bin" + even +Pal_Save_ZoneCard3: + binclude "General/Save Menu/Palettes/Zone Card 3.bin" + even +Pal_Save_ZoneCard4: + binclude "General/Save Menu/Palettes/Zone Card 4.bin" + even +Pal_Save_ZoneCard5: + binclude "General/Save Menu/Palettes/Zone Card 5.bin" + even +Pal_Save_ZoneCard6: + binclude "General/Save Menu/Palettes/Zone Card 6.bin" + even +Pal_Save_ZoneCard7: + binclude "General/Save Menu/Palettes/Zone Card 7.bin" + even +Pal_Save_ZoneCard8: + binclude "General/Save Menu/Palettes/Zone Card 8.bin" + even +Pal_Save_ZoneCard9: + binclude "General/Save Menu/Palettes/Zone Card 9.bin" + even +Pal_Save_ZoneCardA: + binclude "General/Save Menu/Palettes/Zone Card A.bin" + even +Pal_Save_ZoneCardB: + binclude "General/Save Menu/Palettes/Zone Card B.bin" + even +Pal_Save_ZoneCardC: + binclude "General/Save Menu/Palettes/Zone Card C.bin" + even +Pal_Save_ZoneCardD: + binclude "General/Save Menu/Palettes/Zone Card D.bin" + even +Pal_Save_ZoneCardE: + binclude "General/Save Menu/Palettes/Zone Card E.bin" + even +Pal_Save_ZoneCardF: + binclude "General/Save Menu/Palettes/Zone Card F.bin" + even +Pal_Save_ZoneCard10: + binclude "General/Save Menu/Palettes/Zone Card 10.bin" + even +Pal_Save_ZoneCard11: + binclude "General/Save Menu/Palettes/Zone Card 11.bin" + even +Pal_Save_ZoneCard12: + binclude "General/Save Menu/Palettes/Zone Card 12.bin" + even word_CD58: dc.w $11 dc.l Chunk_table+$222 dc.w $C102 @@ -16202,7 +16189,6 @@ word_CD58: dc.w $11 dc.w $C dc.w $A Map_SaveScreen: include "General/Save Menu/Map - Save Screen General.asm" - ObjDat_SaveScreen: dc.l Draw_Sprite ; "Data Select" Text dc.w $120 ; x_pos, objoff_12 (x_pos copy) @@ -17552,7 +17538,6 @@ locret_DEEA: ; End of function HUD_DrawInitial ; --------------------------------------------------------------------------- - charset ' ',$FF charset '0',0 charset '1',2 @@ -17941,11 +17926,12 @@ loc_E17E: ; End of function HUD_Lives ; --------------------------------------------------------------------------- -ArtUnc_HUDDigits: binclude "General/Sprites/HUD Icon/HUD Digits.bin" - -ArtUnc_LivesDigits: binclude "General/Sprites/HUD Icon/Lives Digits.bin" - -ArtUnc_DebugDigits: binclude "General/Sprites/HUD Icon/Debug Digits.bin" +ArtUnc_HUDDigits: + binclude "General/Sprites/HUD Icon/HUD Digits.bin" +ArtUnc_LivesDigits: + binclude "General/Sprites/HUD Icon/Lives Digits.bin" +ArtUnc_DebugDigits: + binclude "General/Sprites/HUD Icon/Debug Digits.bin" ; =============== S U B R O U T I N E ======================================= @@ -18409,52 +18395,52 @@ locret_EBEC: CMap_Ring: ;frame1: - dc.w $FFF8 - dc.w $0005 - dc.w $0000+make_art_tile(ArtTile_Ring,1,0) - dc.w $FFF8 + dc.w $FFF8 + dc.w $0005 + dc.w $0000+make_art_tile(ArtTile_Ring,1,0) + dc.w $FFF8 ;frame2: - dc.w $FFF8 - dc.w $0005 - dc.w $0004+make_art_tile(ArtTile_Ring,1,0) - dc.w $FFF8 + dc.w $FFF8 + dc.w $0005 + dc.w $0004+make_art_tile(ArtTile_Ring,1,0) + dc.w $FFF8 ;frame3: - dc.w $FFF8 - dc.w $0001 - dc.w $0008+make_art_tile(ArtTile_Ring,1,0) - dc.w $FFFC + dc.w $FFF8 + dc.w $0001 + dc.w $0008+make_art_tile(ArtTile_Ring,1,0) + dc.w $FFFC ;frame4: - dc.w $FFF8 - dc.w $0005 - dc.w $0804+make_art_tile(ArtTile_Ring,1,0) - dc.w $FFF8 + dc.w $FFF8 + dc.w $0005 + dc.w $0804+make_art_tile(ArtTile_Ring,1,0) + dc.w $FFF8 ;frame5: - dc.w $FFF8 - dc.w $0005 - dc.w $000A+make_art_tile(ArtTile_Ring,1,0) - dc.w $FFF8 + dc.w $FFF8 + dc.w $0005 + dc.w $000A+make_art_tile(ArtTile_Ring,1,0) + dc.w $FFF8 ;frame6: - dc.w $FFF8 - dc.w $0005 - dc.w $180A+make_art_tile(ArtTile_Ring,1,0) - dc.w $FFF8 + dc.w $FFF8 + dc.w $0005 + dc.w $180A+make_art_tile(ArtTile_Ring,1,0) + dc.w $FFF8 ;frame7: - dc.w $FFF8 - dc.w $0005 - dc.w $080A+make_art_tile(ArtTile_Ring,1,0) - dc.w $FFF8 + dc.w $FFF8 + dc.w $0005 + dc.w $080A+make_art_tile(ArtTile_Ring,1,0) + dc.w $FFF8 ;frame8: - dc.w $FFF8 - dc.w $0005 - dc.w $100A+make_art_tile(ArtTile_Ring,1,0) - dc.w $FFF8 + dc.w $FFF8 + dc.w $0005 + dc.w $100A+make_art_tile(ArtTile_Ring,1,0) + dc.w $FFF8 ; =============== S U B R O U T I N E ======================================= @@ -21130,7 +21116,8 @@ HyperTouch_DestroyEnemy: move.b #0,routine(a1) rts ; --------------------------------------------------------------------------- -HyperEnemy_Score: dc.w 10, 20, 50, 100 +HyperEnemy_Score: + dc.w 10, 20, 50, 100 ; --------------------------------------------------------------------------- HyperTouch_Harmful: @@ -25225,6 +25212,7 @@ loc_12F6A: ; --------------------------------------------------------------------------- AniSonic2P: include "General/Sprites/Sonic/Anim - Sonic Knuckles 2P.asm" + ; =============== S U B R O U T I N E ======================================= @@ -27034,7 +27022,8 @@ loc_144F8: movem.l (sp)+,d0-a6 rts ; --------------------------------------------------------------------------- -AniRaw_Tails_Carry: dc.b $91, $91, $90, $90, $90, $90, $90, $90, $92, $92, $92, $92, $92, $92, $91, $91, $FF +AniRaw_Tails_Carry: + dc.b $91, $91, $90, $90, $90, $90, $90, $90, $92, $92, $92, $92, $92, $92, $91, $91, $FF even ; --------------------------------------------------------------------------- @@ -29284,7 +29273,6 @@ loc_15A92: rts ; --------------------------------------------------------------------------- AniTails: include "General/Sprites/Tails/Anim - Tails.asm" - ; --------------------------------------------------------------------------- Tails_Tail_Load_PLC: @@ -29630,7 +29618,6 @@ loc_15F32: ; --------------------------------------------------------------------------- AniTails2P: include "General/Sprites/Tails/Anim - Tails 2P.asm" - ; =============== S U B R O U T I N E ======================================= @@ -29792,9 +29779,7 @@ Obj_Tails_Tail_AniSelection: dc.b 0 dc.b 0 dc.b 0 - AniTails_Tail: include "General/Sprites/Tails/Anim - Tails Tail.asm" - ; --------------------------------------------------------------------------- Obj_Tails2P_Tail: @@ -29870,7 +29855,6 @@ byte_162A0: dc.b 0,0 dc.b 0 dc.b 0,0 AniTails2P_Tail:include "General/Sprites/Tails/Anim - Tails 2P Tail.asm" - ; --------------------------------------------------------------------------- Obj_MGZ2_BossTransition: @@ -32595,7 +32579,6 @@ loc_17EE4: ; --------------------------------------------------------------------------- AniKnuckles: include "General/Sprites/Knuckles/Anim - Knuckles.asm" - ; =============== S U B R O U T I N E ======================================= @@ -33064,7 +33047,6 @@ loc_186BC: ; --------------------------------------------------------------------------- Ani_Shields: include "General/Sprites/Shields/Anim - Shields.asm" - ; --------------------------------------------------------------------------- Obj_S2Shield: @@ -33113,8 +33095,7 @@ locret_187D6: Obj_S2Shield_Destroy: jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- -off_187DE: - dc.l byte_189ED +off_187DE: dc.l byte_189ED dc.w $B dc.l byte_18A02 dc.w $160D @@ -33275,22 +33256,18 @@ sub_1898A: word_189A0: dc.w $F00, $F03, $E06, $D08, $B0B, $80D, $60E, $30F, $10, $FC0F, $F90E, $F70D, $F40B, $F208, $F106, $F003 dc.w $F000, $F0FC, $F1F9, $F2F7, $F4F4, $F7F2, $F9F1, $FCF0, $FFF0, $3F0, $6F1, $8F2, $BF4, $DF7, $EF9, $FFC byte_189E0: dc.b 8, 5, 7, 6, 6, 7, 5, 8, 6, 7, 7, 6, $FF - byte_189ED: dc.b 8, 7, 6, 5, 4, 3, 4, 5, 6, 7, $FF, 3, 4, 5, 6, 7, 8, 7, 6, 5 dc.b 4 - byte_18A02: dc.b 8, 7, 6, 5, 4, 3, 2, 3, 4, 5, 6, 7, $FF, 2, 3, 4, 5, 6, 7, 8 dc.b 7, 6, 5, 4, 3 - byte_18A1B: dc.b 7, 6, 5, 4, 3, 2, 1, 2, 3, 4, 5, 6, $FF, 1, 2, 3, 4, 5, 6, 7 dc.b 6, 5, 4, 3, 2 - -Ani_S2Shield: include "General/Sprites/Shields/Anim - Shield S2.asm" - -Map_S2Shield: include "General/Sprites/Shields/Map - Shield S2.asm" - -Map_Invincibility:include "General/Sprites/Shields/Map - Invincibility.asm" - +Ani_S2Shield: + include "General/Sprites/Shields/Anim - Shield S2.asm" +Map_S2Shield: + include "General/Sprites/Shields/Map - Shield S2.asm" +Map_Invincibility: + include "General/Sprites/Shields/Map - Invincibility.asm" ; --------------------------------------------------------------------------- Obj_DashDust: @@ -33515,12 +33492,12 @@ locret_18DBE: ; End of function DashDust_Load_DPLC ; --------------------------------------------------------------------------- -Ani_DashSplashDrown:include "General/Sprites/Dash Dust/Anim - Dash Dust.asm" - -Map_DashDust: include "General/Sprites/Dash Dust/Map - Dash Dust.asm" - -DPLC_DashSplashDrown:include "General/Sprites/Dash Dust/DPLC - Dash Dust.asm" - +Ani_DashSplashDrown: + include "General/Sprites/Dash Dust/Anim - Dash Dust.asm" +Map_DashDust: + include "General/Sprites/Dash Dust/Map - Dash Dust.asm" +DPLC_DashSplashDrown: + include "General/Sprites/Dash Dust/DPLC - Dash Dust.asm" ; --------------------------------------------------------------------------- Obj_DashDust2P: @@ -33643,9 +33620,7 @@ locret_190F0: rts ; --------------------------------------------------------------------------- Ani_DashDust2P: include "General/Sprites/Dash Dust/Anim - Dash Dust 2P.asm" - Map_DashDust2P: include "General/Sprites/Dash Dust/Map - Dash Dust 2P.asm" - ; --------------------------------------------------------------------------- Obj_SuperSonicKnux_Stars: @@ -33786,7 +33761,8 @@ loc_192CC: bsr.w MoveSprite2 bra.w Draw_Sprite ; --------------------------------------------------------------------------- -Map_SuperSonic_Stars: include "General/Sprites/Shields/Map - Super Sonic Stars.asm" +Map_SuperSonic_Stars: + include "General/Sprites/Shields/Map - Super Sonic Stars.asm" ; --------------------------------------------------------------------------- Obj_HyperSonic_Stars: @@ -33896,8 +33872,8 @@ loc_19480: loc_19486: jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- -Map_HyperSonicStars:include "General/Sprites/Sonic/Map - Hyper Sonic Stars.asm" - +Map_HyperSonicStars: + include "General/Sprites/Sonic/Map - Hyper Sonic Stars.asm" ; --------------------------------------------------------------------------- Obj_InstaShield: @@ -34308,30 +34284,30 @@ locret_199E8: ; End of function PLCLoad_Shields ; --------------------------------------------------------------------------- -Ani_InstaShield:include "General/Sprites/Shields/Anim - Insta-Shield.asm" - -Ani_FireShield: include "General/Sprites/Shields/Anim - Fire Shield.asm" - -Ani_LightningShield:include "General/Sprites/Shields/Anim - Lightning Shield.asm" - -Ani_BubbleShield:include "General/Sprites/Shields/Anim - Bubble Shield.asm" - -Map_FireShield: include "General/Sprites/Shields/Map - Fire Shield.asm" - -DPLC_FireShield:include "General/Sprites/Shields/DPLC - Fire Shield.asm" - -Map_LightningShield:include "General/Sprites/Shields/Map - Lightning Shield.asm" - -DPLC_LightningShield:include "General/Sprites/Shields/DPLC - Lightning Shield.asm" - -Map_BubbleShield:include "General/Sprites/Shields/Map - Bubble Shield.asm" - -DPLC_BubbleShield:include "General/Sprites/Shields/DPLC - Bubble Shield.asm" - -Map_InstaShield:include "General/Sprites/Shields/Map - Insta-Shield.asm" - -DPLC_InstaShield:include "General/Sprites/Shields/DPLC - Insta-Shield.asm" - +Ani_InstaShield: + include "General/Sprites/Shields/Anim - Insta-Shield.asm" +Ani_FireShield: + include "General/Sprites/Shields/Anim - Fire Shield.asm" +Ani_LightningShield: + include "General/Sprites/Shields/Anim - Lightning Shield.asm" +Ani_BubbleShield: + include "General/Sprites/Shields/Anim - Bubble Shield.asm" +Map_FireShield: + include "General/Sprites/Shields/Map - Fire Shield.asm" +DPLC_FireShield: + include "General/Sprites/Shields/DPLC - Fire Shield.asm" +Map_LightningShield: + include "General/Sprites/Shields/Map - Lightning Shield.asm" +DPLC_LightningShield: + include "General/Sprites/Shields/DPLC - Lightning Shield.asm" +Map_BubbleShield: + include "General/Sprites/Shields/Map - Bubble Shield.asm" +DPLC_BubbleShield: + include "General/Sprites/Shields/DPLC - Bubble Shield.asm" +Map_InstaShield: + include "General/Sprites/Shields/Map - Insta-Shield.asm" +DPLC_InstaShield: + include "General/Sprites/Shields/DPLC - Insta-Shield.asm" ; --------------------------------------------------------------------------- superTailsBirds_target_found = $30 superTailsBirds_search_delay = $32 @@ -34684,8 +34660,8 @@ loc_1A41A: ; End of function sub_1A434 ; --------------------------------------------------------------------------- -Map_SuperTails_Birds:include "General/Sprites/Tails/Map - Super Tails birds.asm" - +Map_SuperTails_Birds: + include "General/Sprites/Tails/Map - Super Tails birds.asm" ; --------------------------------------------------------------------------- Obj_HyperSonicKnux_Trail: @@ -35160,10 +35136,8 @@ AttractedRing_ApplyMovementY: ; End of function AttractedRing_Move ; --------------------------------------------------------------------------- -Ani_RingSparkle: include "General/Sprites/Ring/Anim - Ring Sparkle.asm" - +Ani_RingSparkle:include "General/Sprites/Ring/Anim - Ring Sparkle.asm" Map_Ring: include "General/Sprites/Ring/Map - Ring.asm" - ; --------------------------------------------------------------------------- Obj_SlotRing: @@ -35214,7 +35188,6 @@ loc_1AA62: ; --------------------------------------------------------------------------- Ani_Ring: include "General/Sprites/Ring/Anim - Ring.asm" - ; =============== S U B R O U T I N E ======================================= @@ -38142,7 +38115,8 @@ loc_1C3EA: move.b #1,(Camera_max_Y_pos_changing).w rts ; --------------------------------------------------------------------------- -LevelResizeArray: dc.w AIZ1_Resize-LevelResizeArray +LevelResizeArray: + dc.w AIZ1_Resize-LevelResizeArray dc.w AIZ2_Resize-LevelResizeArray dc.w HCZ1_Resize-LevelResizeArray dc.w HCZ2_Resize-LevelResizeArray @@ -39008,8 +38982,9 @@ locret_1CBBC: ; End of function sub_1CB68 ; --------------------------------------------------------------------------- -LRZ_Rock_SpriteData: binclude "Levels/LRZ/Misc/Rock Sprite Attribute Data.bin" - even +LRZ_Rock_SpriteData: + binclude "Levels/LRZ/Misc/Rock Sprite Attribute Data.bin" + even ; --------------------------------------------------------------------------- Obj_PathSwap: @@ -39335,7 +39310,6 @@ locret_1D058: ; --------------------------------------------------------------------------- Map_PathSwap: include "General/Sprites/Level Misc/Map - Path Swap.asm" - ; --------------------------------------------------------------------------- Obj_SOZPathSwap: @@ -39765,8 +39739,7 @@ Obj_Monitor: move.w Monitor_Index(pc,d0.w),d1 jmp Monitor_Index(pc,d1.w) ; --------------------------------------------------------------------------- -Monitor_Index: - dc.w Obj_MonitorInit-Monitor_Index +Monitor_Index: dc.w Obj_MonitorInit-Monitor_Index dc.w Obj_MonitorMain-Monitor_Index dc.w Obj_MonitorBreak-Monitor_Index dc.w Obj_MonitorAnimate-Monitor_Index @@ -40304,10 +40277,8 @@ loc_1DB2E: bra.w Draw_Sprite ; --------------------------------------------------------------------------- Ani_Monitor: include "General/Sprites/Monitors/Anim - Monitor.asm" - Map_Monitor: include "General/Sprites/Monitors/Map - Monitor.asm" - ; =============== S U B R O U T I N E ======================================= @@ -41576,7 +41547,6 @@ loc_1E752: jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- Map_Explosion: include "General/Sprites/Enemy Misc/Map - Explosion.asm" - ; --------------------------------------------------------------------------- Obj_AIZ1Tree: @@ -42025,8 +41995,8 @@ loc_1ECAA: move.w $10(a0),d4 bra.w SolidObjectFull2 ; --------------------------------------------------------------------------- -Map_InvisibleBlock:include "General/Sprites/Level Misc/Map - Invisible Block.asm" - +Map_InvisibleBlock: + include "General/Sprites/Level Misc/Map - Invisible Block.asm" byte_1ED1A: dc.b $14 dc.b $28 dc.b $20 @@ -42395,7 +42365,6 @@ loc_1F0B2: ; --------------------------------------------------------------------------- byte_1F0F0: dc.b 7, 5, 2, 0, 1, 3, 4, 6, 7, 5, 2, 0, 1, 3, 4, 6, 8, 9, $A, $B dc.b $C, $D, $E, $F - word_1F108: dc.w 0, $FFE4 dc.w 0, $FFEC dc.w 0, $FFF4 @@ -42535,8 +42504,8 @@ loc_1F2C4: move.b $22(a0),1(a2) bra.w Draw_Sprite ; --------------------------------------------------------------------------- -Map_HCZWaveSplash:include "Levels/HCZ/Misc Object Data/Map - Wave Splash.asm" - +Map_HCZWaveSplash: + include "Levels/HCZ/Misc Object Data/Map - Wave Splash.asm" byte_1F38A: dc.b $10 dc.b $10 dc.b $20 @@ -44110,10 +44079,10 @@ word_203C0: dc.w $C0 dc.w $FE40 dc.w $100 dc.w $FE20 -Map_LRZBreakableRock:include "Levels/LRZ/Misc Object Data/Map - Breakable Rock.asm" - -Map_LRZBreakableRock2:include "Levels/LRZ/Misc Object Data/Map - Breakable Rock 2.asm" - +Map_LRZBreakableRock: + include "Levels/LRZ/Misc Object Data/Map - Breakable Rock.asm" +Map_LRZBreakableRock2: + include "Levels/LRZ/Misc Object Data/Map - Breakable Rock 2.asm" ; --------------------------------------------------------------------------- Obj_CollapsingPlatform: @@ -44840,9 +44809,12 @@ byte_20CB6: dc.b $30, $2C, $28, $24, $20, $1C, $2E, $2A, $26, $22, $1E, $1A, $2 dc.b $22, $1E, $1A, $16, $28, $24, $20, $1C, $18, $14 byte_20CD4: dc.b $30, $2C, $28, $24, $20, $1C, $2E, $2A, $26, $22, $1E, $1A, $2C, $28, $24, $20, $1C, $18, $2A, $26 dc.b $22, $1E, $1A, $16, $28, $24, $20, $1C, $18, $14, $12, $10 -LBZBridgeCollapse_TimerArray: dc.b $20, $1C, $18, $14, $10, $C, 8, 4, $1E, $1A, $16, $12, $E, $A, 6, 2 -LBZBridgeCollapse_TimerFlipArray: dc.b $20, 4, 8, $C, $10, $14, $18, $1C, 2, 6, $A, $E, $12, $16, $1A, $1E -LBZLedgeCollapse_TimerArray: dc.b $20, $18, $10, 8, $1E, $16, $E, 6, $1C, $14, $C, 4, $1A, $12 +LBZBridgeCollapse_TimerArray: + dc.b $20, $1C, $18, $14, $10, $C, 8, 4, $1E, $1A, $16, $12, $E, $A, 6, 2 +LBZBridgeCollapse_TimerFlipArray: + dc.b $20, 4, 8, $C, $10, $14, $18, $1C, 2, 6, $A, $E, $12, $16, $1A, $1E +LBZLedgeCollapse_TimerArray: + dc.b $20, $18, $10, 8, $1E, $16, $E, 6, $1C, $14, $C, 4, $1A, $12 byte_20D22: dc.b $20, $1C, $18, $14, $10, $C, 8, 4, $1E, $1A, $16, $12, $E, $A, 6, 2 byte_20D32: dc.b $20, 4, 8, $C, $10, $14, $18, $1C, 2, 6, $A, $E, $12, $16, $1A, $1E byte_20D42: dc.b $28, $24, $20, $1C, $18, $14, $10, $C, 8, 4, $26, $22, $1E, $1A, $16, $12, $E, $A, 6, 2 @@ -44877,16 +44849,14 @@ byte_20E9E: dc.b $1F, $1F, $1F, $1F, $1F, $1F, $1F, $1F, $1F, $1F, $1F, $1F, $1 byte_20EDE: dc.b $30, $30, $30, $30, $30, $30, $30, $30, $30, $30, $30, $30, $2F, $2F, $2F, $2F, $2F, $2F, $2F, $2F dc.b $2F, $2F, $2F, $2F, $2E, $2E, $2E, $2E, $2E, $2E, $2E, $2E, $2D, $2D, $2D, $2D, $2D, $2D, $2D, $2D dc.b $2D, $2D, $2D, $2D, $2D, $2C, $2B, $2A - -Map_LRZCollapsingPlatform:include "Levels/LRZ/Misc Object Data/Map - Collapsing Platform.asm" - - -Map_HPZCollapsingBridge:include "Levels/HPZ/Misc Object Data/Map - Collapsing Bridge.asm" - -Map_FBZCollapsingBridge:include "Levels/FBZ/Misc Object Data/Map - Collapsing Bridge.asm" - -Map_SOZCollapsingBridge:include "Levels/SOZ/Misc Object Data/Map - Collapsing Bridge.asm" - +Map_LRZCollapsingPlatform: + include "Levels/LRZ/Misc Object Data/Map - Collapsing Platform.asm" +Map_HPZCollapsingBridge: + include "Levels/HPZ/Misc Object Data/Map - Collapsing Bridge.asm" +Map_FBZCollapsingBridge: + include "Levels/FBZ/Misc Object Data/Map - Collapsing Bridge.asm" +Map_SOZCollapsingBridge: + include "Levels/SOZ/Misc Object Data/Map - Collapsing Bridge.asm" ; --------------------------------------------------------------------------- Obj_BreakableWall: @@ -45547,12 +45517,12 @@ word_21A9A: dc.w $FA00 dc.w $600 dc.w $FC00 dc.w $500 -Map_CNZSOZBreakableWall:include "Levels/CNZ/Misc Object Data/Map - (&SOZ) Breakable Wall.asm" - -Map_MHZBreakableWall:include "Levels/MHZ/Misc Object Data/Map - Breakable Wall.asm" - -Map_LRZBreakableWall:include "Levels/LRZ/Misc Object Data/Map - Breakable Wall.asm" - +Map_CNZSOZBreakableWall: + include "Levels/CNZ/Misc Object Data/Map - (&SOZ) Breakable Wall.asm" +Map_MHZBreakableWall: + include "Levels/MHZ/Misc Object Data/Map - Breakable Wall.asm" +Map_LRZBreakableWall: + include "Levels/LRZ/Misc Object Data/Map - Breakable Wall.asm" ; --------------------------------------------------------------------------- Obj_AIZRideVine: @@ -46977,8 +46947,8 @@ loc_22B3C: locret_22B9C: rts ; --------------------------------------------------------------------------- -Map_AIZMHZRideVine:include "Levels/AIZ/Misc Object Data/Map - (&MHZ) Ride Vine.asm" - +Map_AIZMHZRideVine: + include "Levels/AIZ/Misc Object Data/Map - (&MHZ) Ride Vine.asm" ; =============== S U B R O U T I N E ======================================= @@ -47880,10 +47850,8 @@ byte_23706: dc.b $F4 dc.b 4 dc.b 4 Ani_Spring: include "General/Sprites/Level Misc/Anim - Spring.asm" - Map_Spring: include "General/Sprites/Level Misc/Map - Spring.asm" - -Map_2PSpring: include "General/Sprites/Level Misc/Map - 2P Spring.asm" +Map_2PSpring: include "General/Sprites/Level Misc/Map - 2P Spring.asm" ; --------------------------------------------------------------------------- Obj_RetractingSpring: @@ -48382,7 +48350,8 @@ loc_23F2A: locret_23F48: rts ; --------------------------------------------------------------------------- -Map_2PRetractingSpring: include "General/Sprites/Level Misc/Map - 2P Retracting Spring.asm" +Map_2PRetractingSpring: + include "General/Sprites/Level Misc/Map - 2P Retracting Spring.asm" byte_23F74: dc.b $10 dc.b $10 dc.b $20 @@ -48885,10 +48854,8 @@ locret_24454: ; --------------------------------------------------------------------------- Map_Spikes: include "General/Sprites/Level Misc/Map - Spikes.asm" - Map_2PSpikes: include "General/2P Zone/Map - Spikes.asm" - ; =============== S U B R O U T I N E ======================================= @@ -49643,7 +49610,6 @@ loc_24BD6: rts ; --------------------------------------------------------------------------- Map_ScaledArt: include "General/Sprites/Level Misc/Map - Scaled Art.asm" - ; --------------------------------------------------------------------------- Obj_TwistedRamp: @@ -50273,8 +50239,8 @@ loc_25322: move.w d1,$10(a0) rts ; --------------------------------------------------------------------------- -Map_LBZMovingPlatform:include "Levels/LBZ/Misc Object Data/Map - Moving Platform.asm" - +Map_LBZMovingPlatform: + include "Levels/LBZ/Misc Object Data/Map - Moving Platform.asm" ; --------------------------------------------------------------------------- Obj_LBZUnusedBarPlatform: @@ -50526,12 +50492,12 @@ loc_25642: loc_2564E: jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- -Map_MGZFloatingPlatform:include "Levels/MGZ/Misc Object Data/Map - Floating Platform.asm" - -Map_HCZFloatingPlatform:include "Levels/HCZ/Misc Object Data/Map - Floating Platform.asm" - -Map_AIZFloatingPlatform:include "Levels/AIZ/Misc Object Data/Map - Floating Platform.asm" - +Map_MGZFloatingPlatform: + include "Levels/MGZ/Misc Object Data/Map - Floating Platform.asm" +Map_HCZFloatingPlatform: + include "Levels/HCZ/Misc Object Data/Map - Floating Platform.asm" +Map_AIZFloatingPlatform: + include "Levels/AIZ/Misc Object Data/Map - Floating Platform.asm" ; --------------------------------------------------------------------------- Obj_HCZSnakeBlocks: @@ -50848,9 +50814,8 @@ locret_259C2: ; End of function sub_25974 ; --------------------------------------------------------------------------- -Map_LRZSolidMovingPlatforms:include "Levels/LRZ/Misc Object Data/Map - Solid Moving Platforms.asm" - - +Map_LRZSolidMovingPlatforms: + include "Levels/LRZ/Misc Object Data/Map - Solid Moving Platforms.asm" ; --------------------------------------------------------------------------- Obj_DEZFloatingPlatform: @@ -50897,8 +50862,8 @@ word_25AB8: dc.w locret_258CE-word_25AB8 dc.w loc_25938-word_25AB8 dc.w loc_2594C-word_25AB8 dc.w loc_25960-word_25AB8 -Map_DEZFloatingPlatform:include "Levels/DEZ/Misc Object Data/Map - Floating Platform.asm" - +Map_DEZFloatingPlatform: + include "Levels/DEZ/Misc Object Data/Map - Floating Platform.asm" byte_25AF0: dc.b $10 dc.b $18 dc.b $20 @@ -51764,9 +51729,10 @@ Obj_AutoSpin460: loc_26478: jmp (loc_1B662).l ; --------------------------------------------------------------------------- -Ani_LBZFlameThrower: include "Levels/LBZ/Misc Object Data/Anim - Flame Thrower.asm" - -LBZRideGrapple_Range: dc.w $A08, $C78 ;0 +Ani_LBZFlameThrower: + include "Levels/LBZ/Misc Object Data/Anim - Flame Thrower.asm" +LBZRideGrapple_Range: + dc.w $A08, $C78 ;0 dc.w $1208, $14F8 ;1 dc.w $1A08, $1BB8 ;2 dc.w $1C48, $2078 ;3 @@ -52203,8 +52169,8 @@ loc_2690C: ; End of function sub_2682E ; --------------------------------------------------------------------------- -Map_LBZRideGrapple:include "Levels/LBZ/Misc Object Data/Map - Ride Grapple.asm" - +Map_LBZRideGrapple: + include "Levels/LBZ/Misc Object Data/Map - Ride Grapple.asm" ; --------------------------------------------------------------------------- Obj_LBZCupElevator: @@ -53468,7 +53434,6 @@ Animate_Tiles: rts ; --------------------------------------------------------------------------- Offs_AniFunc: dc.w AnimateTiles_AIZ1-Offs_AniFunc - Offs_AniPLC: dc.w AniPLC_AIZ1-Offs_AniFunc dc.w AnimateTiles_AIZ2-Offs_AniFunc dc.w AniPLC_AIZ2-Offs_AniFunc @@ -55203,14 +55168,14 @@ AnimateTiles_DoAniPLC_Part2: ; otherwise the subroutine would spend so much time waiting for the art to be ; decompressed that the VBLANK window would close before all the animating was done. -; zoneanimdecl -1, ArtUnc_Flowers1, ArtTile_ArtUnc_Flowers1, 6, 2 +; zoneanimdecl -1, ArtUnc_Flowers1, ArtTile_ArtUnc_Flowers1, 6, 2 ; -1 Global frame duration. If -1, then each frame will use its own duration, instead ; ArtUnc_Flowers1 Source address ; ArtTile_ArtUnc_Flowers1 Destination VRAM address ; 6 Number of frames ; 2 Number of tiles to load into VRAM for each frame -; dc.b 0,$7F ; Start of the script proper +; dc.b 0,$7F ; Start of the script proper ; 0 Tile ID of first tile in ArtUnc_Flowers1 to transfer ; $7F Frame duration. Only here if global duration is -1 @@ -56854,7 +56819,8 @@ sub_2960E: ; End of function sub_2960E ; --------------------------------------------------------------------------- -AutoTunnel_Index: dc.w Obj_AutoTunnelInit-AutoTunnel_Index +AutoTunnel_Index: + dc.w Obj_AutoTunnelInit-AutoTunnel_Index dc.w Obj_AutoTunnelRun-AutoTunnel_Index dc.w Obj_AutoTunnelLastMove-AutoTunnel_Index ; --------------------------------------------------------------------------- @@ -57430,8 +57396,8 @@ locret_29C88: ; End of function sub_29C4C ; --------------------------------------------------------------------------- -Map_TunnelExhaust: include "Levels/LBZ/Misc Object Data/Map - (&LRZ) Tunnel Exhaust.asm" - +Map_TunnelExhaust: + include "Levels/LBZ/Misc Object Data/Map - (&LRZ) Tunnel Exhaust.asm" ; --------------------------------------------------------------------------- Obj_LBZTubeElevator: @@ -57563,7 +57529,8 @@ LBZTubeElevator_Action: ; End of function LBZTubeElevator_Action ; --------------------------------------------------------------------------- -LBZTubeElevator_Index: dc.w LBZTubeElevator_WaitPlayer-LBZTubeElevator_Index +LBZTubeElevator_Index: + dc.w LBZTubeElevator_WaitPlayer-LBZTubeElevator_Index dc.w LBZTubeElevator_StartSpin-LBZTubeElevator_Index dc.w LBZTubeElevator_MovePath-LBZTubeElevator_Index dc.w LBZTubeElevator_SlowSpin-LBZTubeElevator_Index @@ -57929,7 +57896,8 @@ loc_2A1EC: movea.l (sp)+,a2 rts ; --------------------------------------------------------------------------- -LBZTubeElevator_PlayerFrame: dc.b $55 +LBZTubeElevator_PlayerFrame: + dc.b $55 dc.b $59 dc.b $5A dc.b $5B @@ -57941,7 +57909,8 @@ LBZTubeElevator_PlayerFrame: dc.b $55 dc.b $58 dc.b $57 dc.b $56 -LBZTubeElevator_PlayerFlip: dc.b 0 +LBZTubeElevator_PlayerFlip: + dc.b 0 dc.b 1 dc.b 1 dc.b 0 @@ -58074,8 +58043,8 @@ loc_2A394: jsr (SolidObjectFull).l jmp (Sprite_OnScreen_Test).l ; --------------------------------------------------------------------------- -Ani_AIZDisappearingFloor: include "Levels/AIZ/Misc Object Data/Anim - Disappearing Floor.asm" - +Ani_AIZDisappearingFloor: + include "Levels/AIZ/Misc Object Data/Anim - Disappearing Floor.asm" ; --------------------------------------------------------------------------- Obj_CorkFloor: @@ -58521,8 +58490,8 @@ word_2A8E0: dc.w $FC00,$FC00 dc.w $FEC0,$FCC0 dc.w $140,$FCC0 dc.w $340,$FCC0 -Map_FBZCorkFloor:include "Levels/FBZ/Misc Object Data/Map - Cork Floor.asm" - +Map_FBZCorkFloor: + include "Levels/FBZ/Misc Object Data/Map - Cork Floor.asm" ; --------------------------------------------------------------------------- Obj_AIZFlippingBridge: @@ -59134,11 +59103,10 @@ loc_2B05C: ; End of function sub_2AFFE ; --------------------------------------------------------------------------- -Map_AIZCollapsingLogBridge:include "Levels/AIZ/Misc Object Data/Map - Collapsing Log Bridge.asm" - - -Map_AIZDrawBridgeFire: include "Levels/AIZ/Misc Object Data/Map - Draw Bridge Fire.asm" - +Map_AIZCollapsingLogBridge: + include "Levels/AIZ/Misc Object Data/Map - Collapsing Log Bridge.asm" +Map_AIZDrawBridgeFire: + include "Levels/AIZ/Misc Object Data/Map - Draw Bridge Fire.asm" ; --------------------------------------------------------------------------- Obj_AIZDrawBridge: @@ -59515,8 +59483,8 @@ byte_2B548: dc.b 8 dc.b $A dc.b 4 dc.b 2 -Map_AIZDrawBridge:include "Levels/AIZ/Misc Object Data/Map - Drawbridge.asm" - +Map_AIZDrawBridge: + include "Levels/AIZ/Misc Object Data/Map - Drawbridge.asm" word_2B566: dc.w 1 dc.w 3 dc.w 7 @@ -60083,8 +60051,8 @@ word_2B968: dc.w $42E9 ; 0 AIZ2 Bridge Post dc.w $80 dc.b $10 dc.b $24 -Map_StillSprites:include "Levels/Misc/Map - Still Sprites.asm" - +Map_StillSprites: + include "Levels/Misc/Map - Still Sprites.asm" ; --------------------------------------------------------------------------- Obj_AnimatedStillSprite: @@ -60141,10 +60109,10 @@ word_2BF6C: dc.w $62E9 dc.w $300 dc.b $54 dc.b 4 -Ani_AnimatedStillSprites: include "Levels/Misc/Anim - Animated Still Sprites.asm" - -Map_AnimatedStillSprites:include "Levels/Misc/Map - Animated Still Sprites.asm" - +Ani_AnimatedStillSprites: + include "Levels/Misc/Anim - Animated Still Sprites.asm" +Map_AnimatedStillSprites: + include "Levels/Misc/Map - Animated Still Sprites.asm" ; --------------------------------------------------------------------------- Obj_AIZForegroundPlant: @@ -60610,9 +60578,7 @@ loc_2C718: jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- Map_Button: include "General/Sprites/Buttons/Map - Button.asm" - Map_LRZButton: include "Levels/LRZ/Misc Object Data/Map - Button.asm" - ; --------------------------------------------------------------------------- Obj_Animal: @@ -61120,7 +61086,8 @@ Obj_Difficulty_2CD26: jsr (CreateChild6_Simple).l jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- -ChildObjDat_2CD36:dc.w 3 +ChildObjDat_2CD36: + dc.w 3 dc.l loc_2CD3C ; --------------------------------------------------------------------------- @@ -61160,7 +61127,8 @@ Obj_Difficulty_2CD9A: jsr (CreateChild6_Simple).l jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- -ChildObjDat_2CDAA:dc.w 3 +ChildObjDat_2CDAA: + dc.w 3 dc.l loc_2CDB0 ; --------------------------------------------------------------------------- @@ -61205,7 +61173,8 @@ Obj_Difficulty_2CE2C: jsr (CreateChild6_Simple).l jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- -ChildObjDat_2CE3C:dc.w 3 +ChildObjDat_2CE3C: + dc.w 3 dc.l loc_2CE42 ; --------------------------------------------------------------------------- @@ -61258,17 +61227,11 @@ locret_2CEB8: ; --------------------------------------------------------------------------- Map_Animals1: include "General/Sprites/Animals/Map - Animals 1.asm" - Map_Animals2: include "General/Sprites/Animals/Map - Animals 2.asm" - Map_Animals3: include "General/Sprites/Animals/Map - Animals 3.asm" - Map_Animals4: include "General/Sprites/Animals/Map - Animals 4.asm" - Map_Animals5: include "General/Sprites/Animals/Map - Animals 5.asm" - Map_EnemyScore: include "General/Sprites/Enemy Misc/Map - Enemy Points.asm" - ; --------------------------------------------------------------------------- Obj_StarPost: @@ -61534,11 +61497,12 @@ locret_2D336: ; End of function Load_Starpost_Settings ; --------------------------------------------------------------------------- -Ani_Starpost: include "General/Sprites/Starpost/Anim - Starpost.asm" - -Map_StarPost: include "General/Sprites/Starpost/Map - Starpost.asm" - -Map_StarpostStars: include "General/Sprites/Starpost/Map - Starpost Stars.asm" +Ani_Starpost: + include "General/Sprites/Starpost/Anim - Starpost.asm" +Map_StarPost: + include "General/Sprites/Starpost/Map - Starpost.asm" +Map_StarpostStars: + include "General/Sprites/Starpost/Map - Starpost Stars.asm" ; =============== S U B R O U T I N E ======================================= @@ -61811,7 +61775,7 @@ Obj_TitleCard: move.w TitleCard_Index(pc,d0.w),d1 jmp TitleCard_Index(pc,d1.w) ; --------------------------------------------------------------------------- -TitleCard_Index: dc.w Obj_TitleCardInit-TitleCard_Index +TitleCard_Index:dc.w Obj_TitleCardInit-TitleCard_Index dc.w Obj_TitleCardCreate-TitleCard_Index dc.w Obj_TitleCardWait-TitleCard_Index dc.w Obj_TitleCardWait2-TitleCard_Index @@ -62136,7 +62100,8 @@ loc_2D9FA: loc_2DA10: jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -TitleCard_LevelGfx: dc.l ArtKosM_AIZTitleCard +TitleCard_LevelGfx: + dc.l ArtKosM_AIZTitleCard dc.l ArtKosM_HCZTitleCard dc.l ArtKosM_MGZTitleCard dc.l ArtKosM_CNZTitleCard @@ -62158,7 +62123,8 @@ TitleCard_LevelGfx: dc.l ArtKosM_AIZTitleCard dc.l ArtKosM_BonusTitleCard dc.l ArtKosM_BonusTitleCard dc.l ArtKosM_BonusTitleCard -ObjArray_TtlCard: dc.l Obj_TitleCardName +ObjArray_TtlCard: + dc.l Obj_TitleCardName dc.w $120 dc.w $260 dc.w $E0 @@ -62186,14 +62152,16 @@ ObjArray_TtlCard: dc.l Obj_TitleCardName dc.b 1 dc.b 0 dc.w 1 -ObjArray_TtlCard2: dc.l Obj_TitleCardElement2 +ObjArray_TtlCard2: + dc.l Obj_TitleCardElement2 dc.w $15C dc.w $21C dc.w $BC dc.b $12 dc.b $80 dc.w 1 -ObjArray_TtlCardBonus: dc.l Obj_TitleCardElement +ObjArray_TtlCardBonus: + dc.l Obj_TitleCardElement dc.w $C8 dc.w $188 dc.w $E8 @@ -62215,7 +62183,8 @@ Obj_LevelResults: move.w LevelResults_Index(pc,d0.w),d1 jmp LevelResults_Index(pc,d1.w) ; --------------------------------------------------------------------------- -LevelResults_Index: dc.w Obj_LevelResultsInit-LevelResults_Index +LevelResults_Index: + dc.w Obj_LevelResultsInit-LevelResults_Index dc.w Obj_LevelResultsCreate-LevelResults_Index dc.w Obj_LevelResultsWait-LevelResults_Index dc.w Obj_LevelResultsWait2-LevelResults_Index @@ -62627,7 +62596,8 @@ TimeBonus: dc.w 5000 dc.w 300 dc.w 100 dc.w 10 -ObjArray_LevResults: dc.l Obj_LevResultsCharName ; Object address +ObjArray_LevResults: + dc.l Obj_LevResultsCharName ; Object address dc.w $E0 ; X destination dc.w $FDE0 ; X position dc.w $B8 ; Y position @@ -62993,9 +62963,7 @@ PLC_2E310: dc.w 0 dc.l ArtNem_RingHUDText dc.w tiles_to_bytes(ArtTile_Ring) Pal_Results: binclude "General/Special Stage/Palettes/Results.bin" - even - - + even word_2E398: dc.w $15A0 dc.w $1540 dc.w $1600 @@ -64085,12 +64053,9 @@ loc_2EDCA: jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- Map_GameOver: include "General/Sprites/Game Over/Map - Game Over.asm" - Map_TitleCard: include "General/Sprites/Title Card/Map - Title Card.asm" - Map_Results: include "General/Sprites/Results/Map - Results.asm" - ; =============== S U B R O U T I N E ======================================= @@ -64267,7 +64232,8 @@ PLCKosM_DEZ: dc.w 1 PLCKosM_DDZ: dc.w 0 dc.l ArtKosM_EggRoboBadnik dc.w $A000 -PLCKosM_Pachinko:dc.w 0 +PLCKosM_Pachinko: + dc.w 0 dc.l ArtKosM_Teleporter dc.w $A5C0 PLCKosM_Slots: dc.w $FFFF @@ -64562,9 +64528,7 @@ locret_2FC7C: rts ; --------------------------------------------------------------------------- Ani_Bubbler: include "General/Sprites/Bubbles/Anim - Bubbler.asm" - Map_Bubbler: include "General/Sprites/Bubbles/Map - Bubbler.asm" - ; --------------------------------------------------------------------------- Obj_HCZWaterRush: @@ -64931,8 +64895,8 @@ loc_3023E: bne.w loc_301D8 jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -Ani_HCZWaterWall: include "Levels/HCZ/Misc Object Data/Anim - Water Wall.asm" - +Ani_HCZWaterWall: + include "Levels/HCZ/Misc Object Data/Anim - Water Wall.asm" ; --------------------------------------------------------------------------- loc_30294: @@ -66007,8 +65971,8 @@ locret_30F84: ; End of function sub_30F58 ; --------------------------------------------------------------------------- -Map_HCZCNZDEZDoor:include "Levels/HCZ/Misc Object Data/Map - (&CNZ &DEZ) Door.asm" - +Map_HCZCNZDEZDoor: + include "Levels/HCZ/Misc Object Data/Map - (&CNZ &DEZ) Door.asm" byte_30FCE: dc.b $20 dc.b 8 dc.w $4416 @@ -66127,8 +66091,8 @@ locret_31106: ; End of function sub_310DA ; --------------------------------------------------------------------------- -Map_CNZDoorHorizontal:include "Levels/CNZ/Misc Object Data/Map - Door Horizontal.asm" - +Map_CNZDoorHorizontal: + include "Levels/CNZ/Misc Object Data/Map - Door Horizontal.asm" word_31124: dc.w $B28, $CD8 dc.w $BA8, $CD8 dc.w $BA8, $CD8 @@ -66774,7 +66738,6 @@ locret_31858: ; --------------------------------------------------------------------------- word_3185A: dc.w 0, $103 Ani_CNZBalloon: include "Levels/CNZ/Misc Object Data/Anim - Balloon.asm" - ; --------------------------------------------------------------------------- Obj_CNZCannon: @@ -67030,7 +66993,6 @@ locret_31B70: ; --------------------------------------------------------------------------- DPLC_CNZCannon: include "General/Sprites/CNZ Cannon/DPLC - CNZ Cannon.asm" - ; --------------------------------------------------------------------------- Obj_CNZRisingPlatform: @@ -67055,8 +67017,8 @@ loc_31BD2: jsr (Animate_Sprite).l jmp (Sprite_OnScreen_Test).l ; --------------------------------------------------------------------------- -Ani_CNZRisingPlatform: include "Levels/CNZ/Misc Object Data/Anim - Rising Platform.asm" - +Ani_CNZRisingPlatform: + include "Levels/CNZ/Misc Object Data/Anim - Rising Platform.asm" ; =============== S U B R O U T I N E ======================================= @@ -67160,8 +67122,7 @@ locret_31D2C: ; End of function sub_31CFA ; --------------------------------------------------------------------------- -Ani_CNZTrapDoor: include "Levels/CNZ/Misc Object Data/Anim - Trap Door.asm" - +Ani_CNZTrapDoor:include "Levels/CNZ/Misc Object Data/Anim - Trap Door.asm" ; --------------------------------------------------------------------------- Obj_CNZLightBulb: @@ -68006,7 +67967,8 @@ loc_32610: ; Used by LBZ cup elevator ; End of function sub_324C0 ; --------------------------------------------------------------------------- -PlayerTwistFrames: dc.b $55 +PlayerTwistFrames: + dc.b $55 dc.b $59 dc.b $5A dc.b $5B @@ -68018,7 +67980,7 @@ PlayerTwistFrames: dc.b $55 dc.b $58 dc.b $57 dc.b $56 -PlayerTwistFlip: dc.b 0 +PlayerTwistFlip:dc.b 0 dc.b 1 dc.b 1 dc.b 0 @@ -68975,10 +68937,10 @@ loc_3307C: jsr (Add_SpriteToCollisionResponseList).l jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -Ani_Bumper: include "General/Sprites/Level Misc/Anim - Bumper.asm" - -Map_PachinkoBumper: include "Levels/Pachinko/Misc Object Data/Map - Bumper.asm" - +Ani_Bumper: + include "General/Sprites/Level Misc/Anim - Bumper.asm" +Map_PachinkoBumper: + include "Levels/Pachinko/Misc Object Data/Map - Bumper.asm" ; --------------------------------------------------------------------------- Obj_CNZSpiralTube: @@ -70814,8 +70776,8 @@ loc_34536: jsr (Animate_Sprite).l jmp (Sprite_OnScreen_Test).l ; --------------------------------------------------------------------------- -Ani_MGZHeadTrigger: include "Levels/MGZ/Misc Object Data/Anim - Head Trigger.asm" - +Ani_MGZHeadTrigger: + include "Levels/MGZ/Misc Object Data/Anim - Head Trigger.asm" byte_34568: dc.b $40 dc.b $1E dc.b 0 @@ -72678,8 +72640,8 @@ locret_35962: ; End of function sub_35868 ; --------------------------------------------------------------------------- -Map_MGZTopPlatform:include "Levels/MGZ/Misc Object Data/Map - Top Platform.asm" - +Map_MGZTopPlatform: + include "Levels/MGZ/Misc Object Data/Map - Top Platform.asm" ; --------------------------------------------------------------------------- Obj_MGZTopLauncher: @@ -72842,8 +72804,8 @@ loc_35BA6: addi.w #$10,$14(a0) jmp (Add_SpriteToCollisionResponseList).l ; --------------------------------------------------------------------------- -Map_CGZBladePlatform:include "Levels/CGZ/Misc Object Data/Map - Blade Platform.asm" - +Map_CGZBladePlatform: + include "Levels/CGZ/Misc Object Data/Map - Blade Platform.asm" ; --------------------------------------------------------------------------- Obj_BPZElephantBlock: @@ -72963,8 +72925,8 @@ locret_35D58: ; End of function sub_35D22 ; --------------------------------------------------------------------------- -Map_BPZElephantBlock:include "Levels/BPZ/Misc Object Data/Map - Elephant Block.asm" - +Map_BPZElephantBlock: + include "Levels/BPZ/Misc Object Data/Map - Elephant Block.asm" ; --------------------------------------------------------------------------- Obj_BPZBalloon: @@ -73047,9 +73009,7 @@ loc_35E6E: jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- Ani_BPZBalloon: include "Levels/BPZ/Misc Object Data/Anim - Balloon.asm" - Map_BPZBalloon: include "Levels/BPZ/Misc Object Data/Map - Balloon.asm" - ; --------------------------------------------------------------------------- Obj_DPZDisolvingSandBar: @@ -73124,9 +73084,10 @@ loc_36020: ; --------------------------------------------------------------------------- byte_36026: dc.b $11, $11, $11, $11, $10, $F, $E, $D, $C, $B, $A, 9, 8, 7, 6, 5, 4, 3, 2, 1 dc.b 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -Ani_DPZDissolvingSandBar: include "Levels/DPZ/Misc Object Data/Anim - Dissolving Sand Bar.asm" -Map_DPZDissolvingSandBar: include "Levels/DPZ/Misc Object Data/Map - Dissolving Sand Bar.asm" - +Ani_DPZDissolvingSandBar: + include "Levels/DPZ/Misc Object Data/Anim - Dissolving Sand Bar.asm" +Map_DPZDissolvingSandBar: + include "Levels/DPZ/Misc Object Data/Map - Dissolving Sand Bar.asm" ; --------------------------------------------------------------------------- Obj_DPZButton: @@ -73181,7 +73142,6 @@ loc_3634A: jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- Map_DPZButton: include "Levels/DPZ/Misc Object Data/Map - Button.asm" - ; --------------------------------------------------------------------------- Obj_2PItem: @@ -73849,9 +73809,7 @@ locret_36A56: ; --------------------------------------------------------------------------- Ani_2PItem: include "General/2P Zone/Anim - Item.asm" - Map_2PItem: include "General/2P Zone/Map - Item.asm" - ; --------------------------------------------------------------------------- Obj_2PGoalMarker: @@ -74189,11 +74147,10 @@ locret_36FD8: ; --------------------------------------------------------------------------- byte_36FDA: dc.b 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6, 2, 3, 0, 1, 2, 3 dc.b 4, 5, 6, 0 - -Ani_2PGoalMarker: include "General/2P Zone/Anim - Goal Marker.asm" - -Map_2PGoalMarker:include "General/2P Zone/Map - Goal Marker.asm" - +Ani_2PGoalMarker: + include "General/2P Zone/Anim - Goal Marker.asm" +Map_2PGoalMarker: + include "General/2P Zone/Map - Goal Marker.asm" ; --------------------------------------------------------------------------- loc_3703A: @@ -74248,8 +74205,8 @@ loc_370C2: move.b d0,$22(a0) jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -Map_2PLapNumbers: include "General/2P Zone/Map - Lap Numbers.asm" - +Map_2PLapNumbers: + include "General/2P Zone/Map - Lap Numbers.asm" ; --------------------------------------------------------------------------- loc_3713A: @@ -74605,10 +74562,10 @@ loc_374FC: jsr (Animate_Sprite).l jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -Ani_2PNeonDisplay: include "General/2P Zone/Anim - Neon Display.asm" - -Map_2PNeonDisplay: include "General/2P Zone/Map - Neon Display.asm" - +Ani_2PNeonDisplay: + include "General/2P Zone/Anim - Neon Display.asm" +Map_2PNeonDisplay: + include "General/2P Zone/Map - Neon Display.asm" ; --------------------------------------------------------------------------- loc_37C8E: @@ -74857,7 +74814,6 @@ loc_37F60: jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- Map_2PItemIcon: include "General/2P Zone/Map - Item Icon.asm" - ; --------------------------------------------------------------------------- move.l #Map_2PPosition,$C(a0) move.w #$875E,$A(a0) @@ -74933,7 +74889,6 @@ loc_380BC: bra.s loc_38070 ; --------------------------------------------------------------------------- Map_2PPosition: include "General/2P Zone/Map - Position Icons (Unused).asm" - ; --------------------------------------------------------------------------- Obj_EMZDripper: @@ -75053,7 +75008,6 @@ loc_3824C: jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- Map_EMZDripper: include "Levels/EMZ/Misc Object Data/Map - Dripper.asm" - ; --------------------------------------------------------------------------- locret_3827A: @@ -75158,8 +75112,8 @@ loc_38390: ; End of function sub_38382 ; --------------------------------------------------------------------------- -Ani_HCZWaterDrop: include "Levels/HCZ/Misc Object Data/Anim - Water Drop.asm" - +Ani_HCZWaterDrop: + include "Levels/HCZ/Misc Object Data/Anim - Water Drop.asm" ; --------------------------------------------------------------------------- Obj_HCZWaterSplash: @@ -76294,18 +76248,14 @@ BridgeBendData: dc.b $FF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 dc.b $19, $38, $50, $6D, $83, $9D, $B0, $C5, $D8, $E4, $F1, $F8, $FE, $FF, 0, 0 dc.b $19, $31, $4A, $67, $7E, $93, $A7, $BD, $CD, $DB, $E7, $F3, $F9, $FE, $FF, 0 dc.b $19, $31, $4A, $61, $78, $8E, $A2, $B5, $C5, $D4, $E1, $EC, $F4, $FB, $FE, $FF -Map_ICZTensionBridge:include "Levels/ICZ/Misc Object Data/Map - ICZ Tension Bridge.asm" - -Map_TensionBridge:include "Levels/Misc/Map - Tension Bridge.asm" - +Map_ICZTensionBridge: + include "Levels/ICZ/Misc Object Data/Map - ICZ Tension Bridge.asm" +Map_TensionBridge: + include "Levels/Misc/Map - Tension Bridge.asm" byte_39006: dc.b 2, 4, 4, 4, 4, 4, $C, 0 - byte_3900E: dc.b 2, 4, 6, 6, 6, 6, 8, 8, 8, 8, $A, $A, 0, 0 - byte_3901C: dc.b 2, 4, 6, 6, 6, 6, 8, 8, 8, 8, $A, 0 - byte_39028: dc.b 2, 4, 6, 6, 6, 6, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, $E, 0 - word_3903C: dc.w $840 dc.w $120 dc.l byte_39006 @@ -76685,8 +76635,8 @@ loc_3945E: jsr (sub_3968E).l jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -Ani_SonicSnowboard: include "General/Sprites/Sonic/Anim - Sonic Snowboard.asm" - +Ani_SonicSnowboard: + include "General/Sprites/Sonic/Anim - Sonic Snowboard.asm" ; --------------------------------------------------------------------------- loc_394A0: @@ -77103,14 +77053,13 @@ loc_399A6: loc_399CA: jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- -Ani_SnowboardDust: include "General/Sprites/Snowboard/Anim - Snowboard Dust.asm" - -Map_SnowboardDust: include "General/Sprites/Snowboard/Map - Snowboard Dust.asm" - -ArtNem_SnowboardDust: binclude "General/Sprites/Snowboard/Snowboard Dust.bin" - even - - +Ani_SnowboardDust: + include "General/Sprites/Snowboard/Anim - Snowboard Dust.asm" +Map_SnowboardDust: + include "General/Sprites/Snowboard/Map - Snowboard Dust.asm" +ArtNem_SnowboardDust: + binclude "General/Sprites/Snowboard/Snowboard Dust.bin" + even ; --------------------------------------------------------------------------- Obj_LevelIntro_PlayerLaunchFromGround: @@ -77473,8 +77422,8 @@ word_39E20: dc.w $15 dc.b $20, $18, 1, 4 dc.b $D4, $C, 4, $16 dc.b $2C, $C, 5, $14 -Map_LRZCollapsingBridge:include "Levels/LRZ/Misc Object Data/Map - Collapsing Bridge.asm" - +Map_LRZCollapsingBridge: + include "Levels/LRZ/Misc Object Data/Map - Collapsing Bridge.asm" ; --------------------------------------------------------------------------- Obj_FBZWireCage: @@ -77948,8 +77897,7 @@ loc_3A426: rts ; --------------------------------------------------------------------------- byte_3A468: dc.b 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4 -RawAni_3A474: - dc.b $49, $54, $53, $52, $53, $52, $53, $52, $53, $52, $54, $49 +RawAni_3A474: dc.b $49, $54, $53, $52, $53, $52, $53, $52, $53, $52, $54, $49 ; --------------------------------------------------------------------------- loc_3A480: @@ -78182,8 +78130,8 @@ loc_3A724: locret_3A740: rts ; --------------------------------------------------------------------------- -Map_FBZFloatingPlatform:include "Levels/FBZ/Misc Object Data/Map - Floating Platform.asm" - +Map_FBZFloatingPlatform: + include "Levels/FBZ/Misc Object Data/Map - Floating Platform.asm" ; --------------------------------------------------------------------------- Obj_FBZChainLink: @@ -78669,8 +78617,8 @@ loc_3AD10: locret_3AD88: rts ; --------------------------------------------------------------------------- -Map_FBZChainLink:include "Levels/FBZ/Misc Object Data/Map - Chain Link.asm" - +Map_FBZChainLink: + include "Levels/FBZ/Misc Object Data/Map - Chain Link.asm" ; --------------------------------------------------------------------------- Obj_FBZMagneticSpikeBall: @@ -78793,8 +78741,8 @@ loc_3B250: loc_3B256: jmp (Delete_Sprite_If_Not_In_Range).l ; --------------------------------------------------------------------------- -Map_FBZMagneticSpikeBall:include "Levels/FBZ/Misc Object Data/Map - Magnetic Spike Ball.asm" - +Map_FBZMagneticSpikeBall: + include "Levels/FBZ/Misc Object Data/Map - Magnetic Spike Ball.asm" ; --------------------------------------------------------------------------- Obj_FBZMagneticPlatform: @@ -78948,8 +78896,8 @@ locret_3B4DC: ; End of function sub_3B488 ; --------------------------------------------------------------------------- -Map_FBZMagneticPlatform:include "Levels/FBZ/Misc Object Data/Map - Magnetic Platform.asm" - +Map_FBZMagneticPlatform: + include "Levels/FBZ/Misc Object Data/Map - Magnetic Platform.asm" ; --------------------------------------------------------------------------- Obj_FBZSnakePlatform: @@ -79108,8 +79056,8 @@ loc_3B6AE: ; End of function FBZSnake_ChangeDir ; --------------------------------------------------------------------------- -Map_FBZSnakePlatform: include "Levels/FBZ/Misc Object Data/Map - Snake Platform.asm" - +Map_FBZSnakePlatform: + include "Levels/FBZ/Misc Object Data/Map - Snake Platform.asm" byte_3B6D8: dc.b $18 byte_3B6D9: dc.b $10 dc.b $10 @@ -79144,7 +79092,6 @@ loc_3B718: jmp (Sprite_OnScreen_Test).l ; --------------------------------------------------------------------------- Map_FBZBentPipe:include "Levels/FBZ/Misc Object Data/Map - Bent Pipe.asm" - ; --------------------------------------------------------------------------- Obj_FBZRotatingPlatform: @@ -79259,8 +79206,8 @@ loc_3B90C: move.w $44(a0),d0 jmp (loc_1B666).l ; --------------------------------------------------------------------------- -Map_FBZRotatingPlatform:include "Levels/FBZ/Misc Object Data/Map - Rotating Platform.asm" - +Map_FBZRotatingPlatform: + include "Levels/FBZ/Misc Object Data/Map - Rotating Platform.asm" ; --------------------------------------------------------------------------- Obj_FBZDEZPlayerLauncher: @@ -79379,8 +79326,8 @@ loc_3BA70: move.w $44(a0),d0 jmp (Sprite_OnScreen_Test2).l ; --------------------------------------------------------------------------- -Map_FBZDEZPlayerLauncher:include "Levels/FBZ/Misc Object Data/Map - DEZ Player Launcher.asm" - +Map_FBZDEZPlayerLauncher: + include "Levels/FBZ/Misc Object Data/Map - DEZ Player Launcher.asm" word_3BAAA: dc.w $7F dc.w $FF dc.w $1FF @@ -79466,11 +79413,10 @@ locret_3BB98: ; End of function sub_3BB86 ; --------------------------------------------------------------------------- -Ani_FBZDisappearingPlatform: include "Levels/FBZ/Misc Object Data/Anim - Disappearing Platform.asm" - -Map_FBZDisappearingPlatform:include "Levels/FBZ/Misc Object Data/Map - Disappearing Platform.asm" - - +Ani_FBZDisappearingPlatform: + include "Levels/FBZ/Misc Object Data/Anim - Disappearing Platform.asm" +Map_FBZDisappearingPlatform: + include "Levels/FBZ/Misc Object Data/Map - Disappearing Platform.asm" byte_3BBE8: dc.b 8 byte_3BBE9: dc.b $20 dc.b $20 @@ -79599,10 +79545,10 @@ loc_3BD54: move.l #loc_3BC92,(a0) bra.w loc_3BC92 ; --------------------------------------------------------------------------- -Ani_FBZScrewDoor: include "Levels/FBZ/Misc Object Data/Anim - Screw Door.asm" - -Map_FBZScrewDoor:include "Levels/FBZ/Misc Object Data/Map - Screw Door.asm" - +Ani_FBZScrewDoor: + include "Levels/FBZ/Misc Object Data/Anim - Screw Door.asm" +Map_FBZScrewDoor: + include "Levels/FBZ/Misc Object Data/Map - Screw Door.asm" ; --------------------------------------------------------------------------- Obj_FBZSpinningPole: @@ -79824,12 +79770,13 @@ loc_3C1EE: move.b CollisionEffects_3C208(pc,d0.w),$28(a0) jmp (loc_1B662).l ; --------------------------------------------------------------------------- -CollisionEffects_3C208:dc.b $B6 +CollisionEffects_3C208: + dc.b $B6 dc.b 0 dc.b $B6 dc.b $B7 -Map_FBZPropeller:include "Levels/FBZ/Misc Object Data/Map - Propeller.asm" - +Map_FBZPropeller: + include "Levels/FBZ/Misc Object Data/Map - Propeller.asm" ; --------------------------------------------------------------------------- Obj_FBZPiston: @@ -79898,7 +79845,6 @@ loc_3C322: jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- Map_FBZPiston: include "Levels/FBZ/Misc Object Data/Map - Piston.asm" - byte_3C344: dc.b $10 byte_3C345: dc.b $10 dc.b $20 @@ -79977,8 +79923,8 @@ loc_3C3EE: move.w $44(a0),d0 jmp (Sprite_OnScreen_Test2).l ; --------------------------------------------------------------------------- -Map_FBZPlatformBlocks:include "Levels/FBZ/Misc Object Data/Map - Platform Blocks.asm" - +Map_FBZPlatformBlocks: + include "Levels/FBZ/Misc Object Data/Map - Platform Blocks.asm" ; --------------------------------------------------------------------------- Obj_FBZMissileLauncher: @@ -80218,8 +80164,8 @@ loc_3C768: jsr (Play_SFX).l jmp (Obj_Explosion).l ; --------------------------------------------------------------------------- -Map_FBZMissileLauncher:include "Levels/FBZ/Misc Object Data/Map - Missile Launcher.asm" - +Map_FBZMissileLauncher: + include "Levels/FBZ/Misc Object Data/Map - Missile Launcher.asm" ; --------------------------------------------------------------------------- Obj_FBZWallMissile: @@ -80304,8 +80250,8 @@ loc_3C8E8: loc_3C900: jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- -Map_FBZWallMissile: include "Levels/FBZ/Misc Object Data/Map - Wall Missile.asm" - +Map_FBZWallMissile: + include "Levels/FBZ/Misc Object Data/Map - Wall Missile.asm" ; --------------------------------------------------------------------------- Obj_FBZMine: @@ -80372,7 +80318,6 @@ loc_3C9E4: jmp (Obj_Explosion).l ; --------------------------------------------------------------------------- Map_FBZMine: include "Levels/FBZ/Misc Object Data/Map - Mine.asm" - ; --------------------------------------------------------------------------- Obj_FBZElevator: @@ -80430,7 +80375,6 @@ byte_3CAD0: dc.b $10, $10, $10, $10, $10, $10, $10, $11, $12, $12, $13, $13, $1 dc.b $16, $16, $17, $17, $17, $18, $18, $18, $19, $19, $19, $1A, $1A, $1A, $1B, $1B, $1B, $1C, $1C, $1C dc.b $1D, $1D, $1D, $1E, $1E, $1E, $1F, $1F, $1F, $20, $20, $20, $21, $21, $21, $21, $21, $21, $21, $21 Map_FBZElevator:include "Levels/FBZ/Misc Object Data/Map - Elevator.asm" - ; --------------------------------------------------------------------------- Obj_FBZTrapSpring: @@ -80519,10 +80463,10 @@ loc_3CC44: ; End of function sub_3CBCE ; --------------------------------------------------------------------------- -Ani_FBZTrapSpring: include "Levels/FBZ/Misc Object Data/Anim - Trap Spring.asm" - -Map_FBZTrapSpring:include "Levels/FBZ/Misc Object Data/Map - Trap Spring.asm" - +Ani_FBZTrapSpring: + include "Levels/FBZ/Misc Object Data/Anim - Trap Spring.asm" +Map_FBZTrapSpring: + include "Levels/FBZ/Misc Object Data/Map - Trap Spring.asm" ; --------------------------------------------------------------------------- Obj_FBZFlamethrower: @@ -80802,8 +80746,8 @@ loc_3CFA2: loc_3CFCA: jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- -Map_FBZFlameThrower:include "Levels/FBZ/Misc Object Data/Map - Flamethrower.asm" - +Map_FBZFlameThrower: + include "Levels/FBZ/Misc Object Data/Map - Flamethrower.asm" ; --------------------------------------------------------------------------- Obj_FBZSpiderCrane: @@ -80973,8 +80917,8 @@ loc_3D2D2: loc_3D2F6: jmp (Sprite_OnScreen_Test).l ; --------------------------------------------------------------------------- -Map_FBZSpiderCrane:include "Levels/FBZ/Misc Object Data/Map - Spider Crane.asm" - +Map_FBZSpiderCrane: + include "Levels/FBZ/Misc Object Data/Map - Spider Crane.asm" ; --------------------------------------------------------------------------- Obj_FBZMagneticPendulum: @@ -81478,8 +81422,8 @@ loc_3D98E: dbf d4,loc_3D98E jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -Map_FBZMagneticPendulum:include "Levels/FBZ/Misc Object Data/Map - Magnetic Pendulum.asm" - +Map_FBZMagneticPendulum: + include "Levels/FBZ/Misc Object Data/Map - Magnetic Pendulum.asm" ; --------------------------------------------------------------------------- Obj_MHZ_Pollen_Spawner: @@ -81706,10 +81650,10 @@ locret_3DC5A: ; End of function sub_3DC3A ; --------------------------------------------------------------------------- -Map_MHZPollen: include "Levels/MHZ/Misc Object Data/Map - Pollen Leaves.asm" - -Map_MHZBigLeaves: include "Levels/MHZ/Misc Object Data/Map - Big Leaves.asm" - +Map_MHZPollen: + include "Levels/MHZ/Misc Object Data/Map - Pollen Leaves.asm" +Map_MHZBigLeaves: + include "Levels/MHZ/Misc Object Data/Map - Big Leaves.asm" ; --------------------------------------------------------------------------- Obj_MHZTwistedVine: @@ -82190,10 +82134,10 @@ MHZMushroomCap_BounceCharacter: ; End of function MHZMushroomCap_BounceCharacter ; --------------------------------------------------------------------------- -Ani_MHZMushroomCap: include "Levels/MHZ/Misc Object Data/Anim - Mushroom Cap.asm" - -Map_MHZMushroomCap:include "Levels/MHZ/Misc Object Data/Map - Mushroom Cap.asm" - +Ani_MHZMushroomCap: + include "Levels/MHZ/Misc Object Data/Anim - Mushroom Cap.asm" +Map_MHZMushroomCap: + include "Levels/MHZ/Misc Object Data/Map - Mushroom Cap.asm" ; --------------------------------------------------------------------------- Obj_MHZPulleyLift: @@ -82640,8 +82584,8 @@ loc_3E690: locret_3E71E: rts ; --------------------------------------------------------------------------- -Map_MHZPulleyLift:include "Levels/MHZ/Misc Object Data/Map - Pulley Lift.asm" - +Map_MHZPulleyLift: + include "Levels/MHZ/Misc Object Data/Map - Pulley Lift.asm" ; --------------------------------------------------------------------------- Obj_MHZCurledVine: @@ -82868,8 +82812,8 @@ locret_3EA4A: ; End of function sub_3E9C6 ; --------------------------------------------------------------------------- -Map_MHZCurledVine:include "Levels/MHZ/Misc Object Data/Map - Curled Vine.asm" - +Map_MHZCurledVine: + include "Levels/MHZ/Misc Object Data/Map - Curled Vine.asm" ; --------------------------------------------------------------------------- Obj_MHZStickyVine: @@ -83148,8 +83092,8 @@ loc_3ED02: loc_3ED0A: jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -Map_MHZStickyVine:include "Levels/MHZ/Misc Object Data/Map - Sticky Vine.asm" - +Map_MHZStickyVine: + include "Levels/MHZ/Misc Object Data/Map - Sticky Vine.asm" ; --------------------------------------------------------------------------- Obj_MHZSwingBarHorizontal: @@ -83406,9 +83350,8 @@ loc_3EFF2: RawAni_3F01A: dc.b $94, $63, $64, $64, $65, $65, $65, $66, $66, $66, $66, $67, $67, $67, $68, $68, $95, $63, $64, $64 dc.b $65, $65, $65, $66, $66, $66, $66, $67, $67, $67, $68, $68 byte_3F03A: dc.b $14, $14, $B, $B, $F1, $F1, $F1, $EC, $EC, $EC, $EC, $F4, $F4, $F4, $FE, $FE -Map_MHZSwingBarHorizontal:include "Levels/MHZ/Misc Object Data/Map - Swing Bar Horizontal.asm" - - +Map_MHZSwingBarHorizontal: + include "Levels/MHZ/Misc Object Data/Map - Swing Bar Horizontal.asm" ; --------------------------------------------------------------------------- Obj_MHZSwingBarVertical: @@ -83640,8 +83583,8 @@ loc_3F346: locret_3F35E: rts ; --------------------------------------------------------------------------- -Map_MHZSwingBarVertical:include "Levels/MHZ/Misc Object Data/Map - Swing Bar Vertical.asm" - +Map_MHZSwingBarVertical: + include "Levels/MHZ/Misc Object Data/Map - Swing Bar Vertical.asm" ; --------------------------------------------------------------------------- Obj_MHZMushroomPlatform: @@ -83692,13 +83635,12 @@ loc_3F40A: jsr (Animate_Sprite).l jmp (Sprite_OnScreen_Test).l ; --------------------------------------------------------------------------- -Ani_MHZMushroomPlatform: include "Levels/MHZ/Misc Object Data/Anim - Mushroom Platform.asm" - +Ani_MHZMushroomPlatform: + include "Levels/MHZ/Misc Object Data/Anim - Mushroom Platform.asm" byte_3F42A: dc.b $C, $D, $E, $F, $10, $11, $12, $13, $13, $14, $14, $14, $14, $14, $14, $14, $14, $14, $14, $14 dc.b $14, $14, $14, $13, $13, $12, $11, $10, $F, $E, $D, $C - -Map_MHZMushroomPlatform:include "Levels/MHZ/Misc Object Data/Map - Mushroom Platform.asm" - +Map_MHZMushroomPlatform: + include "Levels/MHZ/Misc Object Data/Map - Mushroom Platform.asm" ; --------------------------------------------------------------------------- Obj_MHZMushroomParachute: @@ -83888,8 +83830,7 @@ loc_3F6BC: movea.l (sp)+,a2 rts ; --------------------------------------------------------------------------- -RawAni_3F6EE: - dc.b $E4, $E5, $E6, $E6, $E7, $E6, $E6, $E5, $E4, $E5, $E6, $E6, $E7, $E6, $E6, $E5 +RawAni_3F6EE: dc.b $E4, $E5, $E6, $E6, $E7, $E6, $E6, $E5, $E4, $E5, $E6, $E6, $E7, $E6, $E6, $E5 ; --------------------------------------------------------------------------- loc_3F6FE: @@ -84030,8 +83971,8 @@ locret_3F850: ; End of function sub_3F7E2 ; --------------------------------------------------------------------------- -Map_MHZMushroomParachute:include "Levels/MHZ/Misc Object Data/Map - Mushroom Parachute.asm" - +Map_MHZMushroomParachute: + include "Levels/MHZ/Misc Object Data/Map - Mushroom Parachute.asm" ; --------------------------------------------------------------------------- Obj_MHZMushroomCatapult: @@ -84272,9 +84213,8 @@ loc_3FB4A: ; --------------------------------------------------------------------------- byte_3FB50: dc.b 4, 5, 6, 7, 8, 9, $A, $B, $B, $C, $C, $C, $C, $C, $C, $C, $C, $C, $C, $C dc.b $C, $C, $C, $B, $B, $A, 9, 8, 7, 6, 5, 4 - -Map_MHZMushroomCatapult:include "Levels/MHZ/Misc Object Data/Map - Mushroom Catapult.asm" - +Map_MHZMushroomCatapult: + include "Levels/MHZ/Misc Object Data/Map - Mushroom Catapult.asm" ; --------------------------------------------------------------------------- Obj_Updraft: @@ -85027,9 +84967,8 @@ loc_40432: move.w $10(a0),d4 bra.w loc_403A2 ; --------------------------------------------------------------------------- -Map_SOZSpawningSandBlocks:include "Levels/SOZ/Misc Object Data/Map - Spawning Sand Blocks.asm" - - +Map_SOZSpawningSandBlocks: + include "Levels/SOZ/Misc Object Data/Map - Spawning Sand Blocks.asm" ; --------------------------------------------------------------------------- Obj_SOZLoopFallthrough: @@ -85333,8 +85272,8 @@ sub_4076E: ; End of function sub_4076E ; --------------------------------------------------------------------------- -Map_SOZPushableRock:include "Levels/SOZ/Misc Object Data/Map - Pushable Rock.asm" - +Map_SOZPushableRock: + include "Levels/SOZ/Misc Object Data/Map - Pushable Rock.asm" ; --------------------------------------------------------------------------- Obj_SOZSpringVine: @@ -85662,8 +85601,8 @@ byte_40AAA: dc.b 0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 7, dc.b $1A, $1B, $1B, $1C, $1D, $1D, $1E, $1F, $1F, $20, $21, $21, $22, $23, $23, $24, $25, $25, $26, $27 dc.b $27, $28, $27, $27, $26, $25, $24, $23, $22, $21, $20, $1F, $1E, $1D, $1C, $1B, $1A, $19, $18, $17 dc.b $16, $15, $14, $13, $12, $11, $10, $F, $E, $D, $C, $B, $A, 9, 8, 7, 0, 0 -Map_SOZSpringVine:include "Levels/SOZ/Misc Object Data/Map - Spring Vine.asm" - +Map_SOZSpringVine: + include "Levels/SOZ/Misc Object Data/Map - Spring Vine.asm" ; --------------------------------------------------------------------------- Obj_SOZRisingSandWall: @@ -85825,8 +85764,8 @@ loc_40CEC: loc_40D0A: jmp (Sprite_OnScreen_Test).l ; --------------------------------------------------------------------------- -Map_SOZRisingSandWall:include "Levels/SOZ/Misc Object Data/Map - Rising Sand Wall.asm" - +Map_SOZRisingSandWall: + include "Levels/SOZ/Misc Object Data/Map - Rising Sand Wall.asm" ; --------------------------------------------------------------------------- Obj_SOZLightSwitch: @@ -86013,8 +85952,8 @@ locret_4108E: ; End of function sub_40F52 ; --------------------------------------------------------------------------- -Map_SOZLightSwitch:include "Levels/SOZ/Misc Object Data/Map - Light Switch.asm" - +Map_SOZLightSwitch: + include "Levels/SOZ/Misc Object Data/Map - Light Switch.asm" byte_4116A: dc.b $20, $40, 0, 0 dc.b $20, $50, 1, $30 dc.b $20, $50, 2, $C @@ -86175,8 +86114,8 @@ loc_412D6: move.w d0,$14(a0) rts ; --------------------------------------------------------------------------- -Map_SOZFloatingPillar:include "Levels/SOZ/Misc Object Data/Map - Floating Pillar.asm" - +Map_SOZFloatingPillar: + include "Levels/SOZ/Misc Object Data/Map - Floating Pillar.asm" ; --------------------------------------------------------------------------- Obj_SOZSwingingPlatform: @@ -86404,8 +86343,8 @@ loc_416C0: ; End of function sub_41636 ; --------------------------------------------------------------------------- -Map_SOZSwingingPlatform:include "Levels/SOZ/Misc Object Data/Map - Swinging Platform.asm" - +Map_SOZSwingingPlatform: + include "Levels/SOZ/Misc Object Data/Map - Swinging Platform.asm" ; --------------------------------------------------------------------------- Obj_SOZBreakableSandRock: @@ -86515,8 +86454,8 @@ loc_4180A: loc_41828: jmp (Sprite_OnScreen_Test).l ; --------------------------------------------------------------------------- -Map_SOZBreakableSandRock:include "Levels/SOZ/Misc Object Data/Map - Breakable Sand Rock.asm" - +Map_SOZBreakableSandRock: + include "Levels/SOZ/Misc Object Data/Map - Breakable Sand Rock.asm" ; --------------------------------------------------------------------------- Obj_SOZPushSwitch: @@ -86808,8 +86747,8 @@ locret_41B54: ; End of function sub_41AA8 ; --------------------------------------------------------------------------- -Map_SOZPushSwitch:include "Levels/SOZ/Misc Object Data/Map - Push Switch.asm" - +Map_SOZPushSwitch: + include "Levels/SOZ/Misc Object Data/Map - Push Switch.asm" ; --------------------------------------------------------------------------- Obj_SOZDoor: @@ -86902,7 +86841,6 @@ loc_41C68: bra.s loc_41C16 ; --------------------------------------------------------------------------- Map_SOZDoor: include "Levels/SOZ/Misc Object Data/Map - Door.asm" - ; --------------------------------------------------------------------------- Obj_SOZSandCork: @@ -87075,7 +87013,6 @@ word_41E96: dc.w $FE00, $FE00 dc.w $60, $FE20 dc.w $1E0, $FE20 Map_SOZSandCork:include "Levels/SOZ/Misc Object Data/Map - Sand Cork.asm" - ; --------------------------------------------------------------------------- Obj_SOZSolidSprites: @@ -87114,8 +87051,8 @@ loc_41FAC: jsr (SolidObjectFull).l jmp (Sprite_OnScreen_Test).l ; --------------------------------------------------------------------------- -Map_SOZSolidSprites:include "Levels/SOZ/Misc Object Data/Map - Solid Sprites.asm" - +Map_SOZSolidSprites: + include "Levels/SOZ/Misc Object Data/Map - Solid Sprites.asm" ; --------------------------------------------------------------------------- Obj_LevelIntro_PlayerFallIntoGround: @@ -87775,8 +87712,8 @@ loc_42804: jsr (SolidObjectFull).l jmp (Sprite_OnScreen_Test).l ; --------------------------------------------------------------------------- -Map_LRZSinkingRock:include "Levels/LRZ/Misc Object Data/Map - Sinking Rock.asm" - +Map_LRZSinkingRock: + include "Levels/LRZ/Misc Object Data/Map - Sinking Rock.asm" ; --------------------------------------------------------------------------- Obj_LRZFallingSpike: @@ -87844,8 +87781,8 @@ loc_42904: jsr (SolidObjectFull).l jmp (Sprite_OnScreen_Test).l ; --------------------------------------------------------------------------- -Map_LRZFallingSpike:include "Levels/LRZ/Misc Object Data/Map - Falling Spike.asm" - +Map_LRZFallingSpike: + include "Levels/LRZ/Misc Object Data/Map - Falling Spike.asm" ; --------------------------------------------------------------------------- Obj_LRZDoor: @@ -87900,7 +87837,6 @@ loc_429BC: jmp (Sprite_OnScreen_Test).l ; --------------------------------------------------------------------------- Map_LRZDoor: include "Levels/LRZ/Misc Object Data/Map - Door.asm" - ; --------------------------------------------------------------------------- Obj_LRZBigDoor: @@ -87981,7 +87917,6 @@ loc_42B08: jmp (Sprite_OnScreen_Test).l ; --------------------------------------------------------------------------- Map_LRZBigDoor: include "Levels/LRZ/Misc Object Data/Map - Big Door.asm" - ; --------------------------------------------------------------------------- Obj_LRZFireballLauncher: @@ -88050,8 +87985,8 @@ loc_42C94: loc_42CAC: jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- -Map_LRZFireballLauncher:include "Levels/LRZ/Misc Object Data/Map - Fireball Launcher.asm" - +Map_LRZFireballLauncher: + include "Levels/LRZ/Misc Object Data/Map - Fireball Launcher.asm" ; --------------------------------------------------------------------------- Obj_LRZButtonHorizontal: @@ -88108,7 +88043,8 @@ loc_42D6E: loc_42D76: jmp (Sprite_OnScreen_Test).l ; --------------------------------------------------------------------------- -Map_LRZButtonHorizontal: include "Levels/LRZ/Misc Object Data/Map - Button Horizontal.asm" +Map_LRZButtonHorizontal: + include "Levels/LRZ/Misc Object Data/Map - Button Horizontal.asm" ; --------------------------------------------------------------------------- Obj_LRZShootingTrigger: @@ -88209,8 +88145,8 @@ loc_42EE8: loc_42F00: jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- -Map_LRZShootingTrigger:include "Levels/LRZ/Misc Object Data/Map - Shooting Trigger.asm" - +Map_LRZShootingTrigger: + include "Levels/LRZ/Misc Object Data/Map - Shooting Trigger.asm" ; --------------------------------------------------------------------------- Obj_LRZDashElevator: @@ -88366,8 +88302,8 @@ loc_43092: ; End of function sub_4301C ; --------------------------------------------------------------------------- -Map_LRZDashElevator:include "Levels/LRZ/Misc Object Data/Map - Dash Elevator.asm" - +Map_LRZDashElevator: + include "Levels/LRZ/Misc Object Data/Map - Dash Elevator.asm" ; --------------------------------------------------------------------------- Obj_LRZSmashingSpikePlatform: @@ -88478,9 +88414,8 @@ loc_43234: loc_43244: jmp (Sprite_OnScreen_Test).l ; --------------------------------------------------------------------------- -Map_LRZSmashingSpikePlatform:include "Levels/LRZ/Misc Object Data/Map - Smashing Spike Platform.asm" - - +Map_LRZSmashingSpikePlatform: + include "Levels/LRZ/Misc Object Data/Map - Smashing Spike Platform.asm" ; --------------------------------------------------------------------------- Obj_LRZSwingingSpikeBall: @@ -88597,7 +88532,8 @@ loc_43636: ; End of function sub_43604 ; --------------------------------------------------------------------------- -Map_LRZSwingingSpikeBall: include "Levels/LRZ/Misc Object Data/Map - Swinging Spike Ball.asm" +Map_LRZSwingingSpikeBall: + include "Levels/LRZ/Misc Object Data/Map - Swinging Spike Ball.asm" ; --------------------------------------------------------------------------- Obj_LRZLavaFall: @@ -88665,7 +88601,6 @@ loc_4377C: jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- Map_LRZLavaFall:include "Levels/LRZ/Misc Object Data/Map - Lava Fall.asm" - ; --------------------------------------------------------------------------- Obj_LRZSpikeBall: @@ -88901,10 +88836,10 @@ loc_43A6C: loc_43A88: jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- -Map_LRZSpikeBall:include "Levels/LRZ/Misc Object Data/Map - Spike Ball.asm" - -Map_LRZRockDebris: include "Levels/LRZ/Misc Object Data/Map - Rock Debris.asm" - +Map_LRZSpikeBall: + include "Levels/LRZ/Misc Object Data/Map - Spike Ball.asm" +Map_LRZRockDebris: + include "Levels/LRZ/Misc Object Data/Map - Rock Debris.asm" ; --------------------------------------------------------------------------- Obj_LRZOrbitingSpikeBallHorizontal: @@ -89053,8 +88988,8 @@ loc_43D04: move.w $44(a0),d0 jmp (loc_1B666).l ; --------------------------------------------------------------------------- -Map_LRZOrbitingSpikeBall:include "Levels/LRZ/Misc Object Data/Map - Orbiting Spike Ball.asm" - +Map_LRZOrbitingSpikeBall: + include "Levels/LRZ/Misc Object Data/Map - Orbiting Spike Ball.asm" ; --------------------------------------------------------------------------- Obj_LRZFlameThrower: @@ -89279,8 +89214,8 @@ loc_44072: loc_44084: jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- -Map_LRZFlameThrower:include "Levels/LRZ/Misc Object Data/Map - Flamethrower.asm" - +Map_LRZFlameThrower: + include "Levels/LRZ/Misc Object Data/Map - Flamethrower.asm" ; --------------------------------------------------------------------------- Obj_LRZSolidRock: @@ -89437,8 +89372,8 @@ loc_4427C: ; End of function sub_441F2 ; --------------------------------------------------------------------------- -Map_LRZSolidRock:include "Levels/LRZ/Misc Object Data/Map - Solid Rock.asm" - +Map_LRZSolidRock: + include "Levels/LRZ/Misc Object Data/Map - Solid Rock.asm" ; --------------------------------------------------------------------------- Obj_LRZTurbineSprites: @@ -89669,7 +89604,8 @@ loc_44592: move.b d0,$22(a0) jmp (loc_1B662).l ; --------------------------------------------------------------------------- -Map_LRZTurbineSprites: include "Levels/LRZ/Misc Object Data/Map - Turbine.asm" +Map_LRZTurbineSprites: + include "Levels/LRZ/Misc Object Data/Map - Turbine.asm" ; --------------------------------------------------------------------------- Obj_LRZSpikeBallLauncher: @@ -89758,10 +89694,10 @@ loc_44934: loc_44954: jmp (loc_1B662).l ; --------------------------------------------------------------------------- -Ani_LRZSpikeBallLauncher: include "Levels/LRZ/Misc Object Data/Anim - Spike Ball Launcher.asm" - -Map_LRZSpikeBallLauncher:include "Levels/LRZ/Misc Object Data/Map - Spike Ball Launcher.asm" - +Ani_LRZSpikeBallLauncher: + include "Levels/LRZ/Misc Object Data/Anim - Spike Ball Launcher.asm" +Map_LRZSpikeBallLauncher: + include "Levels/LRZ/Misc Object Data/Map - Spike Ball Launcher.asm" ; --------------------------------------------------------------------------- Obj_LevelIntro_PlayerRun: @@ -92488,24 +92424,24 @@ byte_468C4: dc.b 1, $55 dc.b 1, $56 byte_468DC: dc.b $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $10, $10, $F dc.b $E, $D, $C, $B, 9, 7, 5, 2, $FF, $FB, $F4, $F4, $F4, $F4, $F4, $F4 -Map_SSZFloatingPlatform:include "Levels/SSZ/Misc Object Data/Map - Floating Platform.asm" - -Map_SSZCollapsingBridge:include "Levels/SSZ/Misc Object Data/Map - Collapsing Bridge.asm" - -Map_SSZBouncyCloud:include "Levels/SSZ/Misc Object Data/Map - Bouncy Cloud.asm" - -Ani_SSZBouncyCloud: include "Levels/SSZ/Misc Object Data/Anim - Bouncy Cloud.asm" - -Map_SSZElevatorBar:include "Levels/SSZ/Misc Object Data/Map - Elevator Bar.asm" - -Map_SSZHPZTeleporter:include "Levels/SSZ/Misc Object Data/Map - (&HPZ) Teleporter.asm" - -Map_SSZRotatingPlatform:include "Levels/SSZ/Misc Object Data/Map - Rotating Platform.asm" - -Ani_SSZRotatingPlatform: include "Levels/SSZ/Misc Object Data/Anim - Rotating Platform.asm" - -Map_SSZRetractingSpring:include "Levels/SSZ/Misc Object Data/Map - Retracting Spring.asm" - +Map_SSZFloatingPlatform: + include "Levels/SSZ/Misc Object Data/Map - Floating Platform.asm" +Map_SSZCollapsingBridge: + include "Levels/SSZ/Misc Object Data/Map - Collapsing Bridge.asm" +Map_SSZBouncyCloud: + include "Levels/SSZ/Misc Object Data/Map - Bouncy Cloud.asm" +Ani_SSZBouncyCloud: + include "Levels/SSZ/Misc Object Data/Anim - Bouncy Cloud.asm" +Map_SSZElevatorBar: + include "Levels/SSZ/Misc Object Data/Map - Elevator Bar.asm" +Map_SSZHPZTeleporter: + include "Levels/SSZ/Misc Object Data/Map - (&HPZ) Teleporter.asm" +Map_SSZRotatingPlatform: + include "Levels/SSZ/Misc Object Data/Map - Rotating Platform.asm" +Ani_SSZRotatingPlatform: + include "Levels/SSZ/Misc Object Data/Anim - Rotating Platform.asm" +Map_SSZRetractingSpring: + include "Levels/SSZ/Misc Object Data/Map - Retracting Spring.asm" ; --------------------------------------------------------------------------- Obj_DEZTiltingBridge: @@ -92643,8 +92579,8 @@ loc_46F54: move.w $44(a0),d0 jmp (Sprite_OnScreen_Test2).l ; --------------------------------------------------------------------------- -Map_DEZTiltingBridge:include "Levels/DEZ/Misc Object Data/Map - Tilting Bridge.asm" - +Map_DEZTiltingBridge: + include "Levels/DEZ/Misc Object Data/Map - Tilting Bridge.asm" ; --------------------------------------------------------------------------- Obj_DEZHangCarrier: @@ -92810,8 +92746,8 @@ locret_4717C: ; End of function sub_4703E ; --------------------------------------------------------------------------- -Map_DEZHangCarrier:include "Levels/DEZ/Misc Object Data/Map - Hang Carrier.asm" - +Map_DEZHangCarrier: + include "Levels/DEZ/Misc Object Data/Map - Hang Carrier.asm" ; --------------------------------------------------------------------------- Obj_DEZTorpedoLauncher: @@ -92890,8 +92826,8 @@ loc_4728A: loc_472A2: jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- -Map_TorpedoLauncher:include "Levels/DEZ/Misc Object Data/Map - Torpedo Launcher.asm" - +Map_TorpedoLauncher: + include "Levels/DEZ/Misc Object Data/Map - Torpedo Launcher.asm" ; --------------------------------------------------------------------------- Obj_DEZLiftPad: @@ -93122,7 +93058,6 @@ loc_4760E: ; --------------------------------------------------------------------------- Map_DEZLiftPad: include "Levels/DEZ/Misc Object Data/Map - Lift Pad.asm" - ; --------------------------------------------------------------------------- Obj_DEZStaircase: @@ -93415,10 +93350,10 @@ loc_4791A: bmi.s loc_478BE jmp (Sprite_OnScreen_Test).l ; --------------------------------------------------------------------------- -Ani_DEZLightning: include "Levels/DEZ/Misc Object Data/Anim - Lightning.asm" - -Map_DEZLightning:include "Levels/DEZ/Misc Object Data/Map - Lightning.asm" - +Ani_DEZLightning: + include "Levels/DEZ/Misc Object Data/Anim - Lightning.asm" +Map_DEZLightning: + include "Levels/DEZ/Misc Object Data/Map - Lightning.asm" ; --------------------------------------------------------------------------- Obj_DEZConveyorPad: @@ -93669,9 +93604,10 @@ locret_47BF2: ; End of function sub_47B58 ; --------------------------------------------------------------------------- -Ani_DEZConveyorPad: include "Levels/DEZ/Misc Object Data/Anim - Conveyor Pad.asm" - -Map_DEZConveyorPad: include "Levels/DEZ/Misc Object Data/Map - Conveyor Pad.asm" +Ani_DEZConveyorPad: + include "Levels/DEZ/Misc Object Data/Anim - Conveyor Pad.asm" +Map_DEZConveyorPad: + include "Levels/DEZ/Misc Object Data/Map - Conveyor Pad.asm" word_47DD6: dc.w $7F dc.w $FF dc.w $1FF @@ -93887,9 +93823,10 @@ locret_47FF6: ; End of function sub_47F9C ; --------------------------------------------------------------------------- -Map_DEZEnergyBridge:include "Levels/DEZ/Misc Object Data/Map - Energy Bridge.asm" - -Map_DEZEnergyBridgeCurved: include "Levels/DEZ/Misc Object Data/Map - Energy Bridge Curved.asm" +Map_DEZEnergyBridge: + include "Levels/DEZ/Misc Object Data/Map - Energy Bridge.asm" +Map_DEZEnergyBridgeCurved: + include "Levels/DEZ/Misc Object Data/Map - Energy Bridge Curved.asm" word_4808A: dc.w $F000 dc.w $F600 ; --------------------------------------------------------------------------- @@ -93982,10 +93919,10 @@ loc_4818C: move.w $44(a0),d0 jmp (Sprite_OnScreen_Test2).l ; --------------------------------------------------------------------------- -Ani_DEZRetractingSpring: include "Levels/DEZ/Misc Object Data/Anim - Retracting Spring.asm" - -Map_DEZRetractingSpring:include "Levels/DEZ/Misc Object Data/Map - Retracting Spring.asm" - +Ani_DEZRetractingSpring: + include "Levels/DEZ/Misc Object Data/Anim - Retracting Spring.asm" +Map_DEZRetractingSpring: + include "Levels/DEZ/Misc Object Data/Map - Retracting Spring.asm" ; --------------------------------------------------------------------------- Obj_DEZTunnelLauncher: @@ -94163,8 +94100,8 @@ locret_48422: ; End of function sub_48370 ; --------------------------------------------------------------------------- -Map_DEZTunnelLauncher:include "Levels/DEZ/Misc Object Data/Map - Tunnel Launcher.asm" - +Map_DEZTunnelLauncher: + include "Levels/DEZ/Misc Object Data/Map - Tunnel Launcher.asm" ; --------------------------------------------------------------------------- Obj_DEZTunnelControl: @@ -94588,10 +94525,10 @@ Obj_DEZTransRing: loc_488BC: jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -Ani_DEZTransRings: include "Levels/DEZ/Misc Object Data/Anim - Transporter Rings.asm" - -Map_DEZTransRings: include "Levels/DEZ/Misc Object Data/Map - Transporter Rings.asm" - +Ani_DEZTransRings: + include "Levels/DEZ/Misc Object Data/Anim - Transporter Rings.asm" +Map_DEZTransRings: + include "Levels/DEZ/Misc Object Data/Map - Transporter Rings.asm" ; --------------------------------------------------------------------------- Obj_DEZGravitySwitch: @@ -94703,8 +94640,8 @@ loc_48BDA: loc_48BE4: jmp (Sprite_OnScreen_Test).l ; --------------------------------------------------------------------------- -Map_DEZGravitySwitch:include "Levels/DEZ/Misc Object Data/Map - Gravity Switch.asm" - +Map_DEZGravitySwitch: + include "Levels/DEZ/Misc Object Data/Map - Gravity Switch.asm" ; --------------------------------------------------------------------------- Obj_DEZTeleporter: @@ -95591,8 +95528,8 @@ locret_495D6: ; End of function sub_4952A ; --------------------------------------------------------------------------- -Map_DEZHoverMachine:include "Levels/DEZ/Misc Object Data/Map - Hover Machine.asm" - +Map_DEZHoverMachine: + include "Levels/DEZ/Misc Object Data/Map - Hover Machine.asm" ; --------------------------------------------------------------------------- Obj_DEZGravityRoom: @@ -95864,8 +95801,8 @@ locret_498C0: ; End of function sub_49848 ; --------------------------------------------------------------------------- -Map_DEZBumperWall:include "Levels/DEZ/Misc Object Data/Map - Bumper Wall.asm" - +Map_DEZBumperWall: + include "Levels/DEZ/Misc Object Data/Map - Bumper Wall.asm" ; --------------------------------------------------------------------------- Obj_DEZGravityPuzzle: @@ -96035,8 +95972,8 @@ byte_49A5B: dc.b $E0 dc.b $1C dc.b $20 dc.b 4 -Map_DEZGravityPuzzle:include "Levels/DEZ/Misc Object Data/Map - Gravity Puzzle.asm" - +Map_DEZGravityPuzzle: + include "Levels/DEZ/Misc Object Data/Map - Gravity Puzzle.asm" ; --------------------------------------------------------------------------- Obj_PachinkoTriangleBumper: @@ -96152,11 +96089,10 @@ loc_49BEE: ; End of function sub_49B76 ; --------------------------------------------------------------------------- -Ani_PachinkoTriangleBumper: include "Levels/Pachinko/Misc Object Data/Anim - Triangle Bumper.asm" - -Map_PachinkoTriangleBumper:include "Levels/Pachinko/Misc Object Data/Map - Triangle Bumper.asm" - - +Ani_PachinkoTriangleBumper: + include "Levels/Pachinko/Misc Object Data/Anim - Triangle Bumper.asm" +Map_PachinkoTriangleBumper: + include "Levels/Pachinko/Misc Object Data/Map - Triangle Bumper.asm" ; --------------------------------------------------------------------------- Obj_PachinkoFlipper: @@ -96350,11 +96286,10 @@ loc_49E56: ; --------------------------------------------------------------------------- byte_49E5A: dc.b $FC, $FC, $FC, $FC, $FC, $FC, $FC, $FC, $FC, $FB, $FA, $F9, $F8, $F7, $F6, $F5, $F4, $F3, $F2, $F1 dc.b $F0, $EF, $EE, $ED, $EC, $EB, $EA, $E9, $E8, $E7, $E6, $E5 - -Ani_PachinkoFlipper: include "Levels/Pachinko/Misc Object Data/Anim - Flipper.asm" - -Map_PachinkoFlipper:include "Levels/Pachinko/Misc Object Data/Map - Flipper.asm" - +Ani_PachinkoFlipper: + include "Levels/Pachinko/Misc Object Data/Anim - Flipper.asm" +Map_PachinkoFlipper: + include "Levels/Pachinko/Misc Object Data/Map - Flipper.asm" ; --------------------------------------------------------------------------- Obj_PachinkoEnergyTrap: @@ -96488,8 +96423,8 @@ loc_4A07A: move.w $14(a1),$14(a0) jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -Map_PachinkoEnergyTrap:include "Levels/Pachinko/Misc Object Data/Map - Energy Trap.asm" - +Map_PachinkoEnergyTrap: + include "Levels/Pachinko/Misc Object Data/Map - Energy Trap.asm" ; --------------------------------------------------------------------------- Obj_PachinkoInvisibleUnknown: @@ -96524,9 +96459,8 @@ loc_4A10A: jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- RawAni_4A110: dc.b 0, 1, 2, 3, 4, 3, 2, 1 -Map_PachinkoInvisibleUnknown:include "Levels/Pachinko/Misc Object Data/Map - Invisible Unknown.asm" - - +Map_PachinkoInvisibleUnknown: + include "Levels/Pachinko/Misc Object Data/Map - Invisible Unknown.asm" ; --------------------------------------------------------------------------- Obj_Pachinko_Platform: @@ -96550,8 +96484,8 @@ loc_4A1B2: jsr (SolidObjectTop).l jmp (loc_49B22).l ; --------------------------------------------------------------------------- -Map_PachinkoPlatform:include "Levels/Pachinko/Misc Object Data/Map - Platform.asm" - +Map_PachinkoPlatform: + include "Levels/Pachinko/Misc Object Data/Map - Platform.asm" ; --------------------------------------------------------------------------- Obj_PachinkoItemOrb: @@ -96600,10 +96534,10 @@ loc_4A274: jsr (Animate_Sprite).l bra.w loc_4A31A ; --------------------------------------------------------------------------- -Ani_PachinkoItemOrb: include "Levels/Pachinko/Misc Object Data/Anim - Item Orb.asm" - -Map_PachinkoItemOrb: include "Levels/Pachinko/Misc Object Data/Map - Item Orb.asm" - +Ani_PachinkoItemOrb: + include "Levels/Pachinko/Misc Object Data/Anim - Item Orb.asm" +Map_PachinkoItemOrb: + include "Levels/Pachinko/Misc Object Data/Map - Item Orb.asm" ; --------------------------------------------------------------------------- Obj_GumballItem: @@ -96717,8 +96651,8 @@ loc_4A3B6: ; End of function sub_4A384 ; --------------------------------------------------------------------------- -Map_PachinkoFItem:include "Levels/Pachinko/Misc Object Data/Map - F Item.asm" - +Map_PachinkoFItem: + include "Levels/Pachinko/Misc Object Data/Map - F Item.asm" ; --------------------------------------------------------------------------- Obj_PachinkoMagnetOrb: @@ -97163,13 +97097,11 @@ off_4A914: dc.w word_4A91A-off_4A914 dc.w word_4A934-off_4A914 dc.w word_4A94E-off_4A914 word_4A91A: dc.w 3, 0, 0, 1, $FFE0, $70, 3, 0, $E0, 6, $20, $70, 8 - word_4A934: dc.w 3, 0, 0, $11, $FFE0, $B0, $13, 0, $160, $16, $20, $B0, $18 - word_4A94E: dc.w 7, 0, 0, $21, $FFE0, $72, $23, $FFE0, $F0, $23, $FFE0, $16E, $23, 0, $1E0, $26 dc.w $20, $16E, $28, $20, $F0, $28, $20, $72, $28 -Map_LRZChainedPlatforms:include "Levels/LRZ/Misc Object Data/Map - Chained Platforms.asm" - +Map_LRZChainedPlatforms: + include "Levels/LRZ/Misc Object Data/Map - Chained Platforms.asm" ; --------------------------------------------------------------------------- Obj_SOZRapelWire: @@ -97819,8 +97751,7 @@ loc_4B0B0: move.b RawAni_4B0CE(pc,d0.w),$22(a1) bra.s loc_4B08E ; --------------------------------------------------------------------------- -RawAni_4B0CE: - dc.b $90, $90, $90, $90, $90, $90, $90, $90, $91, $92, $92, $92, $92, $92, $92, $91 +RawAni_4B0CE: dc.b $90, $90, $90, $90, $90, $90, $90, $90, $91, $92, $92, $92, $92, $92, $92, $91 ; --------------------------------------------------------------------------- loc_4B0DE: @@ -97837,8 +97768,7 @@ loc_4B0DE: or.b d0,$2A(a1) bra.w loc_4B08E ; --------------------------------------------------------------------------- -RawAni_4B110: - dc.b $E4, $E5, $E6, $E6, $E7, $E6, $E6, $E5, $E4, $E8, $E9, $E9, $EA, $E9, $E9, $E8 +RawAni_4B110: dc.b $E4, $E5, $E6, $E6, $E7, $E6, $E6, $E5, $E4, $E8, $E9, $E9, $EA, $E9, $E9, $E8 byte_4B120: dc.b 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1 ; --------------------------------------------------------------------------- @@ -97888,8 +97818,8 @@ locret_4B1CE: ; End of function sub_4AF80 ; --------------------------------------------------------------------------- -Map_SOZRapelWire:include "Levels/SOZ/Misc Object Data/Map - Rapel Wire.asm" - +Map_SOZRapelWire: + include "Levels/SOZ/Misc Object Data/Map - Rapel Wire.asm" ; =============== S U B R O U T I N E ======================================= @@ -98378,18 +98308,18 @@ SlotBonusMaps: dc.l Map_SB_ColoredWall dc.w make_art_tile(ArtTile_Ring,1,0) dc.l Map_SB_Ring+$7000000 dc.w make_art_tile(ArtTile_Ring,1,0) -Map_SB_Slot: include "Levels/Slots/Misc Object Data/Map - Slot.asm" - -Map_SB_R_and_Peppermint: include "Levels/Slots/Misc Object Data/Map - R and Peppermint.asm" - -Map_SB_Goal: include "Levels/Slots/Misc Object Data/Map - Goal.asm" - -Map_SB_Bumper: include "Levels/Slots/Misc Object Data/Map - Bumper.asm" - -Map_SB_Ring: include "Levels/Slots/Misc Object Data/Map - Ring.asm" - -Map_SB_ColoredWall: include "Levels/Slots/Misc Object Data/Map - Colored Wall.asm" - +Map_SB_Slot: + include "Levels/Slots/Misc Object Data/Map - Slot.asm" +Map_SB_R_and_Peppermint: + include "Levels/Slots/Misc Object Data/Map - R and Peppermint.asm" +Map_SB_Goal: + include "Levels/Slots/Misc Object Data/Map - Goal.asm" +Map_SB_Bumper: + include "Levels/Slots/Misc Object Data/Map - Bumper.asm" +Map_SB_Ring: + include "Levels/Slots/Misc Object Data/Map - Ring.asm" +Map_SB_ColoredWall: + include "Levels/Slots/Misc Object Data/Map - Colored Wall.asm" ; --------------------------------------------------------------------------- Obj_Sonic_RotatingSlotBonus: @@ -99296,8 +99226,8 @@ loc_4C292: locret_4C29E: rts ; --------------------------------------------------------------------------- -Map_SlotBonusCage: include "Levels/Slots/Misc Object Data/Map - Bonus Cage (Unused).asm" - +Map_SlotBonusCage: + include "Levels/Slots/Misc Object Data/Map - Bonus Cage (Unused).asm" ; --------------------------------------------------------------------------- Obj_SlotSpike: @@ -99342,7 +99272,6 @@ loc_4C3E0: ; --------------------------------------------------------------------------- Map_SlotSpike: include "Levels/Slots/Misc Object Data/Map - Spike.asm" - ; =============== S U B R O U T I N E ======================================= @@ -100097,14 +100026,13 @@ loc_4CB2E: ; End of function sub_4CB1A ; --------------------------------------------------------------------------- -Pal_SpheresTitle_1: binclude "General/Blue Sphere/Palettes/Title 1.bin" - even - -Pal_SpheresTitle_2: binclude "General/Blue Sphere/Palettes/Title 2.bin" - even - +Pal_SpheresTitle_1: + binclude "General/Blue Sphere/Palettes/Title 1.bin" + even +Pal_SpheresTitle_2: + binclude "General/Blue Sphere/Palettes/Title 2.bin" + even aNoWayNoWayNoWa:dc.b "NO WAY! NO WAY! NO WAY! NO WAY? ",0 - aGetBlueSpheres:dc.b "GET BLUE SPHERES ! ",0 dc.b 0 ; @@ -101242,12 +101170,12 @@ word_4D7A6: dc.w $100, $AE word_4D7B2: dc.w $140, $AE dc.w $140, $126 dc.w $178, $142 -Map_BlueSpheresText: include "General/Blue Sphere/Map - Text.asm" - -Map_BlueSpheresNum: include "General/Blue Sphere/Map - Numbers.asm" - -Map_BlueSpheresIcon: include "General/Blue Sphere/Map - Rotating Icon.asm" - +Map_BlueSpheresText: + include "General/Blue Sphere/Map - Text.asm" +Map_BlueSpheresNum: + include "General/Blue Sphere/Map - Numbers.asm" +Map_BlueSpheresIcon: + include "General/Blue Sphere/Map - Rotating Icon.asm" word_4D976: dc.w $B8, $100 dc.w $10C, $F8 dc.w $130, $F4 @@ -101293,8 +101221,8 @@ loc_4D9EC: loc_4D9FE: jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -Ani_BlueSphereCharSprite: include "General/Blue Sphere/Anim - Character Sprites.asm" - +Ani_BlueSphereCharSprite: + include "General/Blue Sphere/Anim - Character Sprites.asm" ; --------------------------------------------------------------------------- Obj_SpheresTitle_4DA30: @@ -101310,8 +101238,8 @@ Obj_SpheresTitle_4DA30: loc_4DA62: jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -Map_BlueSpheresCopyright: include "General/Blue Sphere/Map - Copyright.asm" - +Map_BlueSpheresCopyright: + include "General/Blue Sphere/Map - Copyright.asm" ; --------------------------------------------------------------------------- BlueSpheresResults: @@ -101534,7 +101462,8 @@ loc_4DDE2: locret_4DDE6: rts ; --------------------------------------------------------------------------- -PLC_SphereResults_4DDE8:dc.w 4 +PLC_SphereResults_4DDE8: + dc.w 4 dc.l ArtNem_RobotnikShip dc.w $4DE0 dc.l ArtNem_Chicken @@ -101545,12 +101474,12 @@ PLC_SphereResults_4DDE8:dc.w 4 dc.w $5C20 dc.l ArtNem_BlueSphereTails dc.w $F400 -Pal_SphereResults_012: binclude "General/Blue Sphere/Palettes/Results Line 0-2.bin" - even - -Pal_SphereResults_3: binclude "General/Blue Sphere/Palettes/Results Line 3.bin" - even - +Pal_SphereResults_012: + binclude "General/Blue Sphere/Palettes/Results Line 0-2.bin" + even +Pal_SphereResults_3: + binclude "General/Blue Sphere/Palettes/Results Line 3.bin" + even aCongratulation:dc.b "CONGRATULATIONS!",0,0 aPerfect: dc.b "PERFECT",0 @@ -101813,7 +101742,8 @@ locret_4E178: ; End of function Difficulty_Level_Sprites_Display ; --------------------------------------------------------------------------- -Difficulty_Sprites:dc.l Obj_DifficultySonic +Difficulty_Sprites: + dc.l Obj_DifficultySonic dc.l Obj_Difficulty_Tails dc.l Obj_Difficulty_Knuckles dc.l Obj_Difficulty_Eggman @@ -101896,8 +101826,7 @@ Obj_Difficulty_Tails: loc_4E29C: jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -Map_BSTailsPose: include "General/Blue Sphere/Map - Tails Pose.asm" - +Map_BSTailsPose:include "General/Blue Sphere/Map - Tails Pose.asm" ; --------------------------------------------------------------------------- Obj_Difficulty_Knuckles: @@ -101924,8 +101853,8 @@ loc_4E2F0: loc_4E310: jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -Map_BSResultsEmerald: include "General/Blue Sphere/Map - Results Emerald.asm" - +Map_BSResultsEmerald: + include "General/Blue Sphere/Map - Results Emerald.asm" ; --------------------------------------------------------------------------- LevelSetup: @@ -104021,7 +103950,6 @@ LBZ_WaterWaveArray: dc.w 0, 0, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 1, 1, 1, 1 dc.w 1, 0, 0, 0, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 1, 1 - ; =============== S U B R O U T I N E ======================================= @@ -104263,7 +104191,6 @@ loc_4FADC: ; --------------------------------------------------------------------------- word_4FAE4: dc.w $EE4, $EA6, $E62 - word_4FAEA: dc.w $E40 ; --------------------------------------------------------------------------- @@ -107617,7 +107544,8 @@ locret_520FC: ; End of function CNZ1_ScrollToYStart ; --------------------------------------------------------------------------- -CNZ1_BGDeformArray: dc.w $80 +CNZ1_BGDeformArray: + dc.w $80 dc.w $30 dc.w $60 dc.w $C0 @@ -108404,7 +108332,8 @@ loc_52828: ; End of function FBZ1Screen_CheckInRange ; --------------------------------------------------------------------------- -FBZ1_LayoutModRange: dc.w $400, $F00, $880, $A80 +FBZ1_LayoutModRange: + dc.w $400, $F00, $880, $A80 dc.w $880, $1100, $180, $300 dc.w $1400, $1B80, $900, $B00 dc.w $1A80, $2100, $80, $200 @@ -108971,7 +108900,8 @@ Obj_FBZOutdoorBGMotion: move.w d0,(Events_bg+$08).w rts ; --------------------------------------------------------------------------- -FBZ_InBGDeformArray: dc.w $80 +FBZ_InBGDeformArray: + dc.w $80 dc.w $40 dc.w $20 dc.w 8 @@ -109006,7 +108936,8 @@ FBZ_InBGDeformArray: dc.w $80 dc.w $18 dc.w $30 dc.w $7FFF -FBZ_OutBGDeformArray: dc.w $30 +FBZ_OutBGDeformArray: + dc.w $30 dc.w $20 dc.w $30 dc.w $10 @@ -109015,10 +108946,12 @@ FBZ_OutBGDeformArray: dc.w $30 dc.w $10 dc.w $10 dc.w $7FFF -FBZ_InBGDeformIndex: dc.b 0, $C, 1, $A, $16, $A, 8, $14, $18, $1C, $20, $24, $28, $2C, $30, $34, $38, 2, 6, $12 +FBZ_InBGDeformIndex: + dc.b 0, $C, 1, $A, $16, $A, 8, $14, $18, $1C, $20, $24, $28, $2C, $30, $34, $38, 2, 6, $12 dc.b $3E, 0, $46, 7, 4, $10, $1E, $26, $2E, $36, $3A, $40, 3, $E, $22, $32, $3C, 1, 0, $44 dc.b 3, 2, $1A, $2A, $42, $FF -FBZ_OutBGDeformIndex: dc.w $E +FBZ_OutBGDeformIndex: + dc.w $E dc.w 2 dc.w $A dc.w 6 @@ -109027,11 +108960,12 @@ FBZ_OutBGDeformIndex: dc.w $E dc.w 8 dc.w 0 dc.w $10 - -Pal_FBZBGIndoors: binclude "Levels/FBZ/Palettes/FBZ BG Indoors.bin" - even -Pal_FBZBGOutdoors: binclude "Levels/FBZ/Palettes/FBZ BG Outdoors.bin" - even +Pal_FBZBGIndoors: + binclude "Levels/FBZ/Palettes/FBZ BG Indoors.bin" + even +Pal_FBZBGOutdoors: + binclude "Levels/FBZ/Palettes/FBZ BG Outdoors.bin" + even ; --------------------------------------------------------------------------- FBZ2_ScreenInit: @@ -109232,7 +109166,8 @@ loc_52F7A: ; End of function SetUp_FBZ2BossEvent ; --------------------------------------------------------------------------- -FBZ2_LayoutModRange: dc.w $D80, $1300, $A00, $B80 +FBZ2_LayoutModRange: + dc.w $D80, $1300, $A00, $B80 ; --------------------------------------------------------------------------- FBZ2_BackgroundInit: @@ -109753,9 +109688,9 @@ Obj_FBZCloud: move.b d0,$22(a0) jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -Map_FBZ2Preboss: include "Levels/FBZ/Misc Object Data/Map - Act 2 Preboss.asm" - -FBZ2_CloudDeformIndex: dc.w 4 +Map_FBZ2Preboss:include "Levels/FBZ/Misc Object Data/Map - Act 2 Preboss.asm" +FBZ2_CloudDeformIndex: + dc.w 4 dc.w $E dc.w 8 dc.w $10 @@ -110295,7 +110230,8 @@ loc_53BFE: dc.b $5A, $59 dc.b $59, $58 dc.b $57, $57 -ICZ1_SnowpileSlopeDef: dc.b $56, $56 +ICZ1_SnowpileSlopeDef: + dc.b $56, $56 dc.b $55, $55 dc.b $54, $54 dc.b $53, $53 @@ -111016,9 +110952,11 @@ loc_5432E: lea (HScroll_table+$008).w,a5 jmp ApplyDeformation(pc) ; --------------------------------------------------------------------------- -LBZ1_BGDrawArray: dc.w $D0 +LBZ1_BGDrawArray: + dc.w $D0 dc.w $7FFF -LBZ1_BGDeformArray: dc.w $D0 +LBZ1_BGDeformArray: + dc.w $D0 dc.w $18 dc.w 8 dc.w 8 @@ -112547,12 +112485,9 @@ MHZ2_BGDrawArray3: dc.w $100 dc.w $7FFF Pal_MHZ2Ship: binclude "Levels/MHZ/Palettes/Act 2 Ship.bin" - even - + even Pal_MHZ2Gold: binclude "Levels/MHZ/Palettes/Act 2 Gold.bin" - even - - + even word_5513E: dc.w $420, $4A0, $640, $6C0 dc.w $680, $980, $A00, $7C0 dc.w $800, $9C0, $2900, $2980 @@ -113290,10 +113225,10 @@ word_558E8: dc.w $102 dc.w $304 dc.w $200 dc.w $402 -Map_MHZEndBossMisc: include "Levels/MHZ/Misc Object Data/Map - End Boss Misc.asm" - -Ani_MHZEndPropellers: include "Levels/MHZ/Misc Object Data/Anim - End Propellers.asm" - +Map_MHZEndBossMisc: + include "Levels/MHZ/Misc Object Data/Map - End Boss Misc.asm" +Ani_MHZEndPropellers: + include "Levels/MHZ/Misc Object Data/Anim - End Propellers.asm" ; --------------------------------------------------------------------------- SOZ1_ScreenInit: @@ -113950,11 +113885,8 @@ word_560DC: dc.w $110 dc.w 8 dc.w $7FFF word_560EA: dc.w $C46, $824, $804, $402, $202, $200, 0, $422, $402, $200, $40 - word_56100: dc.w $6AE, $664, $422, $402, $200, 0, 0, $EEE, $466, $224, 0, $46, $6EE, $48C, $26A - -Map_SOZ1EndDoor: include "Levels/SOZ/Misc Object Data/Map - Act 1 End Door.asm" - +Map_SOZ1EndDoor:include "Levels/SOZ/Misc Object Data/Map - Act 1 End Door.asm" ; --------------------------------------------------------------------------- SOZ2_ScreenInit: @@ -115618,8 +115550,8 @@ LRZ2_BGDeformArray: dc.w $10 dc.w $20 dc.w $7FFF -Map_LRZ2DeathEggBG: include "Levels/LRZ/Misc Object Data/Map - Act 2 BG Death Egg.asm" - +Map_LRZ2DeathEggBG: + include "Levels/LRZ/Misc Object Data/Map - Act 2 BG Death Egg.asm" ; --------------------------------------------------------------------------- SSZ1_ScreenInit: @@ -116157,9 +116089,8 @@ dword_577C6: dc.l 9 dc.l $3000C dc.l 9 dc.l $C0003 -Pal_SSZDeathEgg: binclude "Levels/SSZ/Palettes/Death Egg.bin" - even - +Pal_SSZDeathEgg:binclude "Levels/SSZ/Palettes/Death Egg.bin" + even ; --------------------------------------------------------------------------- SSZ1_BackgroundInit: @@ -117466,10 +117397,9 @@ word_58758: dc.w $10, $30, $FE00, 1 dc.w $78, $B0, $E600, 1 dc.w $AC, $1C0, $B600, 2 dc.w $D8, $140, $CE00, 1 -Map_SSZRoamingClouds: include "Levels/SSZ/Misc Object Data/Map - Roaming Clouds.asm" - +Map_SSZRoamingClouds: + include "Levels/SSZ/Misc Object Data/Map - Roaming Clouds.asm" byte_587A8: dc.b $EF, $FA, $F9, $F8, $F7, $F6, $F5, $F4, $F3, $F2, $F1, $F0 - byte_587B4: dc.b 0, 2, 5, 7, 9, $B, $E, $10, $12, $15, $17, $19, $1B, $1E, $20, $22, $25, $27, $29, $2B dc.b $2E, $30, $32, $35, $37, $39, $3B, $3E, $40, $42, $45, $47, $49, $4B, $4E, $50, $52, $55, $57, $59 dc.b $5B, $5E, $60, $62, $65, $67, $69, $6B, $6E, $70, $72, $75, $77, $79, $7B, $7E, $80, $82, $85, $87 @@ -117674,8 +117604,8 @@ word_58894: dc.w $4000 dc.w $FFFD dc.w $FFFF dc.w $FFFF -Map_SSZSpiralRampPieces: include "Levels/SSZ/Misc Object Data/Map - Spiral Ramp Pieces.asm" - +Map_SSZSpiralRampPieces: + include "Levels/SSZ/Misc Object Data/Map - Spiral Ramp Pieces.asm" byte_58A3E: dc.b $1C dc.b 8 dc.b $10 @@ -118511,8 +118441,8 @@ loc_59246: loc_5926A: jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -Map_KnuxEndingIslandMask: include "General/Ending/Map - Knuckles Ending Island Mask.asm" - +Map_KnuxEndingIslandMask: + include "General/Ending/Map - Knuckles Ending Island Mask.asm" ; =============== S U B R O U T I N E ======================================= @@ -118539,8 +118469,8 @@ locret_592BC: ; End of function sub_5928C ; --------------------------------------------------------------------------- -Pal_EndingWater: binclude "General/Ending/Palettes/Water Cycle.bin" - even +Pal_EndingWater:binclude "General/Ending/Palettes/Water Cycle.bin" + even ; =============== S U B R O U T I N E ======================================= @@ -120294,8 +120224,7 @@ loc_5A388: ; End of function sub_5A334 ; --------------------------------------------------------------------------- -HPZ_BGDrawArray: - dc.w $200 +HPZ_BGDrawArray:dc.w $200 dc.w $7FFF HPZ_BGDeformArray: dc.w $198 @@ -120869,7 +120798,6 @@ locret_5A9AA: rts ; --------------------------------------------------------------------------- Map_DEZ3Blocks: include "Levels/DEZ/Misc Object Data/Map - Act 3 Blocks.asm" - ; --------------------------------------------------------------------------- HPZS_ScreenInit: @@ -121557,8 +121485,7 @@ Ending_BGDeformArray2: dc.w $8080 dc.w $7FFF Pal_5B16E: binclude "General/Ending/Palettes/Sky.bin" - even - + even ; =============== S U B R O U T I N E ======================================= @@ -123692,7 +123619,8 @@ loc_5CB7E: ; End of function sub_5CB6A ; --------------------------------------------------------------------------- -ChildObjDat_5CB88:dc.w 0 +ChildObjDat_5CB88: + dc.w 0 dc.l Obj_5CA78 off_5CB8E: dc.l byte_5CBAE dc.l byte_5CBAE @@ -123728,23 +123656,22 @@ byte_5CBC5: dc.b $B dc.b $BE dc.b $FF dc.b $FC -Pal_ContinueScreen: binclude "General/Sprites/Continue/Palette.bin" - even - -Map_ContinueSprites: include "General/Sprites/Continue/Map - Player Sprites.asm" - -Map_ContinueIcons: include "General/Sprites/Continue/Map - Player Icons.asm" - -ArtNem_ContinueSprites:binclude "General/Sprites/Continue/Player Sprites.bin" - even - -ArtNem_ContinueIcons:binclude "General/Sprites/Continue/Player Icons.bin" - even - -ArtNem_ContinueDigits: binclude "General/Sprites/Continue/Digits.bin" - even - - +Pal_ContinueScreen: + binclude "General/Sprites/Continue/Palette.bin" + even +Map_ContinueSprites: + include "General/Sprites/Continue/Map - Player Sprites.asm" +Map_ContinueIcons: + include "General/Sprites/Continue/Map - Player Icons.asm" +ArtNem_ContinueSprites: + binclude "General/Sprites/Continue/Player Sprites.bin" + even +ArtNem_ContinueIcons: + binclude "General/Sprites/Continue/Player Icons.bin" + even +ArtNem_ContinueDigits: + binclude "General/Sprites/Continue/Digits.bin" + even ; --------------------------------------------------------------------------- S3Credits: @@ -126716,9 +126643,9 @@ loc_5FBCE: locret_5FBE0: rts ; --------------------------------------------------------------------------- -Pal_KnuxEndPoseSuper: binclude "General/Ending/Palettes/Super Knuckles End Pose.bin" - even - +Pal_KnuxEndPoseSuper: + binclude "General/Ending/Palettes/Super Knuckles End Pose.bin" + even ; --------------------------------------------------------------------------- loc_5FC1E: @@ -127400,55 +127327,70 @@ word_601AC: dc.w $180 dc.b 8 dc.b 2 dc.b 0 -ChildObjDat_601B2:dc.w 0 +ChildObjDat_601B2: + dc.w 0 dc.l Obj_5EBC6 dc.b 4 dc.b $F0 -ChildObjDat_601BA:dc.w 0 +ChildObjDat_601BA: + dc.w 0 dc.l Obj_5EA52 dc.b $E0 dc.b $2B -ChildObjDat_601C2:dc.w 0 +ChildObjDat_601C2: + dc.w 0 dc.l Obj_5EB32 dc.b 0 dc.b $F0 -ChildObjDat_601CA:dc.w 1 +ChildObjDat_601CA: + dc.w 1 dc.l loc_5ECB4 -ChildObjDat_601D0:dc.w 0 +ChildObjDat_601D0: + dc.w 0 dc.l loc_5EBF0 dc.w $1C00 -ChildObjDat_601D8:dc.w 0 +ChildObjDat_601D8: + dc.w 0 dc.l loc_5EC3C dc.w $F60C -ChildObjDat_601E0:dc.w 0 +ChildObjDat_601E0: + dc.w 0 dc.l loc_5EC94 dc.w $DEFE -ChildObjDat_601E8:dc.w 0 +ChildObjDat_601E8: + dc.w 0 dc.l loc_5DF80 dc.w $C0FC -ChildObjDat_601F0:dc.w 2 +ChildObjDat_601F0: + dc.w 2 dc.l loc_5F31C dc.w 0 dc.l loc_5F3AA dc.w 0 dc.l loc_5F410 dc.w 0 -ChildObjDat_60204:dc.w 0 +ChildObjDat_60204: + dc.w 0 dc.l loc_5F3EA dc.w $F008 -ChildObjDat_6020C:dc.w 0 +ChildObjDat_6020C: + dc.w 0 dc.l loc_5ED36 dc.w $F005 -ChildObjDat_60214:dc.w 4 +ChildObjDat_60214: + dc.w 4 dc.l loc_5E504 -ChildObjDat_6021A:dc.w 1 +ChildObjDat_6021A: + dc.w 1 dc.l loc_5E612 -ChildObjDat_60220:dc.w 1 +ChildObjDat_60220: + dc.w 1 dc.l loc_5F690 dc.w $F0 dc.l loc_5F6A8 dc.w $EC -ChildObjDat_6022E:dc.w 0 +ChildObjDat_6022E: + dc.w 0 dc.l loc_5ED6A dc.w $FA07 AniRaw_60236: dc.b 5, $B, 6, 5, 7, $B, 6, $B, $FC @@ -127473,69 +127415,66 @@ AniRaw_602C2: dc.b $E, 0, 1, $FC AniRaw_602C6: dc.b $B, 0, 1, $FC AniRaw_602CA: dc.b 5, 0, 0, 1, 2, $F8, 7, $7F, 2, 2, $FC even -Map_KnuxEnding: include "General/Sprites/Knuckles/Cutscene/Map - Ending Cutscene.asm" - -Map_SonicPlane: include "General/Ending/Map - Sonic Plane.asm" - -Map_SonicPlaneEnding: include "General/Ending/Map - Sonic Plane Ending.asm" - -Map_SKPoseBanner: include "General/Ending/Map - Sonic and Knuckles Pose Banner.asm" - -Map_S3PoseBanner: include "General/Ending/Map - Sonic 3 Pose Banner.asm" - -Map_IslandLiftGfx: include "General/Ending/Map - Island Lift Sprites.asm" - -Map_EndingAnimals: include "General/Ending/Map - Ending Pelican and Dolphin.asm" - -Map_SonicTailsEndPoses: include "General/Ending/Map - Sonic Tails Ending Poses.asm" - -Map_ANDKnuckles: include "General/Ending/Map - ANDKnuckles Subtitle.asm" - -Map_EndingEyecatchEggRobo: include "General/Ending/Map - Ending Egg Robo Eyecatch.asm" - -Map_EndingEyecatchEggman: include "General/Ending/Map - Ending Eggman Eyecatch.asm" - -Map_KnuxEndPose: include "General/Ending/Map - Knuckles End Pose.asm" - -Pal_EndingSmallPlane: binclude "General/Ending/Palettes/Small Plane.bin" - even - - -Pal_EndingSKLogo: binclude "General/Ending/Palettes/SK Logo.bin" - even - - -Pal_EndingS3KLogo: binclude "General/Ending/Palettes/S3K Logo.bin" - even - - -Pal_EndingEyecatchKnuckles: binclude "General/Ending/Palettes/Knuckles Eyecatch.bin" - even - -Pal_EndingMasterEmerald: binclude "General/Ending/Palettes/Master Emerald.bin" - even - -Pal_FBZCloud: binclude "Levels/FBZ/Palettes/FBZ Cloud.bin" - even - -Pal_TailsEndPose: binclude "General/Ending/Palettes/Tails End Pose.bin" - even - -Pal_SonicEndPose: binclude "General/Ending/Palettes/Sonic End Pose.bin" - even - -Pal_SuperSonicEndPose: binclude "General/Ending/Palettes/Super Sonic End Pose.bin" - even - -Pal_EndingEyecatchEggRobo: binclude "General/Ending/Palettes/Egg Robo Eyecatch.bin" - even - -Pal_EndingEyecatchEggman: binclude "General/Ending/Palettes/Eggman Eyecatch.bin" - even - -Pal_KnuxEndPose: binclude "General/Ending/Palettes/Knuckles End Pose.bin" - even - +Map_KnuxEnding: + include "General/Sprites/Knuckles/Cutscene/Map - Ending Cutscene.asm" +Map_SonicPlane: + include "General/Ending/Map - Sonic Plane.asm" +Map_SonicPlaneEnding: + include "General/Ending/Map - Sonic Plane Ending.asm" +Map_SKPoseBanner: + include "General/Ending/Map - Sonic and Knuckles Pose Banner.asm" +Map_S3PoseBanner: + include "General/Ending/Map - Sonic 3 Pose Banner.asm" +Map_IslandLiftGfx: + include "General/Ending/Map - Island Lift Sprites.asm" +Map_EndingAnimals: + include "General/Ending/Map - Ending Pelican and Dolphin.asm" +Map_SonicTailsEndPoses: + include "General/Ending/Map - Sonic Tails Ending Poses.asm" +Map_ANDKnuckles: + include "General/Ending/Map - ANDKnuckles Subtitle.asm" +Map_EndingEyecatchEggRobo: + include "General/Ending/Map - Ending Egg Robo Eyecatch.asm" +Map_EndingEyecatchEggman: + include "General/Ending/Map - Ending Eggman Eyecatch.asm" +Map_KnuxEndPose: + include "General/Ending/Map - Knuckles End Pose.asm" +Pal_EndingSmallPlane: + binclude "General/Ending/Palettes/Small Plane.bin" + even +Pal_EndingSKLogo: + binclude "General/Ending/Palettes/SK Logo.bin" + even +Pal_EndingS3KLogo: + binclude "General/Ending/Palettes/S3K Logo.bin" + even +Pal_EndingEyecatchKnuckles: + binclude "General/Ending/Palettes/Knuckles Eyecatch.bin" + even +Pal_EndingMasterEmerald: + binclude "General/Ending/Palettes/Master Emerald.bin" + even +Pal_FBZCloud: + binclude "Levels/FBZ/Palettes/FBZ Cloud.bin" + even +Pal_TailsEndPose: + binclude "General/Ending/Palettes/Tails End Pose.bin" + even +Pal_SonicEndPose: + binclude "General/Ending/Palettes/Sonic End Pose.bin" + even +Pal_SuperSonicEndPose: + binclude "General/Ending/Palettes/Super Sonic End Pose.bin" + even +Pal_EndingEyecatchEggRobo: + binclude "General/Ending/Palettes/Egg Robo Eyecatch.bin" + even +Pal_EndingEyecatchEggman: + binclude "General/Ending/Palettes/Eggman Eyecatch.bin" + even +Pal_KnuxEndPose: + binclude "General/Ending/Palettes/Knuckles End Pose.bin" + even PalSPtr_EndingSuperTails: palscriptptr .header, .data dc.w 0 @@ -128310,7 +128249,8 @@ ObjDat3_613EC: dc.l Map_GumballBonus dc.b $10 dc.b $17 dc.b 0 -ChildObjDat_613F8:dc.w 6 +ChildObjDat_613F8: + dc.w 6 dc.l loc_60D58 dc.b 0 dc.b 0 @@ -128332,7 +128272,8 @@ ChildObjDat_613F8:dc.w 6 dc.l loc_60FFE dc.b 0 dc.b $D8 -ChildObjDat_61424:dc.w 3 +ChildObjDat_61424: + dc.w 3 dc.l loc_60DAC dc.b $D0 dc.b $E8 @@ -128345,11 +128286,14 @@ ChildObjDat_61424:dc.w 3 dc.l loc_60DAC dc.b $30 dc.b $E8 -ChildObjDat_6143E:dc.w $F +ChildObjDat_6143E: + dc.w $F dc.l loc_6101E -ChildObjDat_61444:dc.w 0 +ChildObjDat_61444: + dc.w 0 dc.l loc_60EBA -ChildObjDat_6144A:dc.w 0 +ChildObjDat_6144A: + dc.w 0 dc.l loc_610B6 byte_61450: dc.b 3 dc.b 5 @@ -128391,8 +128335,8 @@ word_61482: dc.w $7F0F dc.w $FFC word_61486: dc.w $110 dc.w $11FC -Map_GumballBonus: include "Levels/Gumball/Misc Object Data/Map - Gumball Bonus.asm" - +Map_GumballBonus: + include "Levels/Gumball/Misc Object Data/Map - Gumball Bonus.asm" ; --------------------------------------------------------------------------- Obj_SSEntryRing: @@ -128411,7 +128355,8 @@ loc_6167C: jsr SSEntryRing_Index(pc,d1.w) bra.w SSEntryRing_Display ; --------------------------------------------------------------------------- -SSEntryRing_Index: dc.w SSEntryRing_Init-SSEntryRing_Index +SSEntryRing_Index: + dc.w SSEntryRing_Init-SSEntryRing_Index dc.w SSEntryRing_Main-SSEntryRing_Index dc.w SSEntryRing_Animate-SSEntryRing_Index ; --------------------------------------------------------------------------- @@ -128524,7 +128469,8 @@ Obj_SSEntryFlash: jsr (Perform_DPLC).l jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -SSEntryFlash_Index: dc.w SSEntryFlash_Init-SSEntryFlash_Index +SSEntryFlash_Index: + dc.w SSEntryFlash_Init-SSEntryFlash_Index dc.w SSEntryFlash_Main-SSEntryFlash_Index ; --------------------------------------------------------------------------- @@ -128668,7 +128614,8 @@ loc_6196A: jsr (Queue_Kos_Module).l ; Restore the overwritten badnik explosion art jmp (Go_Delete_SpriteSlotted).l ; --------------------------------------------------------------------------- -ObjSlot_SSEntryRing: dc.w 0 +ObjSlot_SSEntryRing: + dc.w 0 dc.w make_art_tile($5A0,1,0) dc.w $40 dc.w 4 @@ -128679,7 +128626,8 @@ ObjSlot_SSEntryRing: dc.w 0 dc.b $20 dc.b 0 dc.b 0 -ObjSlot_SSEntryFlash: dc.w 0 +ObjSlot_SSEntryFlash: + dc.w 0 dc.w make_art_tile(ArtTile_Player_1,1,0) dc.w $18 dc.w 6 @@ -128690,11 +128638,14 @@ ObjSlot_SSEntryFlash: dc.w 0 dc.b $20 dc.b 0 dc.b 0 -DPLCPtr_SSEntryRing: dc.l ArtUnc_SSEntryRing +DPLCPtr_SSEntryRing: + dc.l ArtUnc_SSEntryRing dc.l DPLC_SSEntryRing -DPLCPtr_SSEntryFlash: dc.l ArtUnc_SSEntryFlash +DPLCPtr_SSEntryFlash: + dc.l ArtUnc_SSEntryFlash dc.l DPLC_SSEntryFlash -AniRaw_SSEntryRing: dc.b 4 +AniRaw_SSEntryRing: + dc.b 4 dc.b 0 dc.b 0 dc.b 1 @@ -128712,7 +128663,8 @@ AniRaw_SSEntryRing: dc.b 4 dc.b 8 dc.b $B dc.b $FC -AniRaw_SSEntryFlash: dc.b 0 +AniRaw_SSEntryFlash: + dc.b 0 dc.b 0 dc.b 0 dc.b 1 @@ -128724,14 +128676,14 @@ AniRaw_SSEntryFlash: dc.b 0 dc.b 0 dc.b $F4 dc.b 0 -Map_SSEntryRing: include "General/Sprites/SS Entry/Map - Entry Ring.asm" - -DPLC_SSEntryRing: include "General/Sprites/SS Entry/DPLC - Special Stage Entry Ring.asm" - -Map_SSEntryFlash: include "General/Sprites/SS Entry/Map - Entry Flash.asm" - -DPLC_SSEntryFlash: include "General/Sprites/SS Entry/DPLC - Special Stage Entry Flash.asm" - +Map_SSEntryRing: + include "General/Sprites/SS Entry/Map - Entry Ring.asm" +DPLC_SSEntryRing: + include "General/Sprites/SS Entry/DPLC - Special Stage Entry Ring.asm" +Map_SSEntryFlash: + include "General/Sprites/SS Entry/Map - Entry Flash.asm" +DPLC_SSEntryFlash: + include "General/Sprites/SS Entry/DPLC - Special Stage Entry Flash.asm" PalSPtr_SSEntry: palscriptptr .header, .data .header palscripthdr Normal_palette_line_2+$A, 2, 0 @@ -129234,7 +129186,8 @@ loc_62274: jsr (Remove_From_TrackingSlot).l jmp (Go_Delete_Sprite).l ; --------------------------------------------------------------------------- -ChildObjDat_62280:dc.w 1 +ChildObjDat_62280: + dc.w 1 dc.l Obj_DecLevStartYGradual dc.w 0 dc.l Obj_IncLevEndXGradual @@ -129991,8 +129944,8 @@ loc_62AEE: add.w d0,$14(a0) jmp (Sprite_OnScreen_Test).l ; --------------------------------------------------------------------------- -Map_LBZKnuxPillar: include "Levels/LBZ/Misc Object Data/Map - Knuckles Pillar.asm" - +Map_LBZKnuxPillar: + include "Levels/LBZ/Misc Object Data/Map - Knuckles Pillar.asm" ; --------------------------------------------------------------------------- CutsceneKnux_MHZ1: @@ -134142,7 +134095,6 @@ off_65C40: dc.w loc_65C56-off_65C40 dc.w loc_65C78-off_65C40 dc.w loc_65CAC-off_65C40 word_65C48: dc.w $FFE8, $30, $FFE8, $30 - ; --------------------------------------------------------------------------- loc_65C50: @@ -135220,46 +135172,60 @@ ObjDat3_6654E: dc.l Map_HPZKnuxDizzyStars dc.b 4 dc.b 1 dc.b 0 -ChildObjDat_6655A:dc.w 0 +ChildObjDat_6655A: + dc.w 0 dc.l loc_620EA -ChildObjDat_66560:dc.w 0 +ChildObjDat_66560: + dc.w 0 dc.l loc_62458 dc.w $E094 -ChildObjDat_66568:dc.w 2 +ChildObjDat_66568: + dc.w 2 dc.l Obj_DecLevStartYGradual dc.w 0 dc.l Obj_DecLevStartXGradual dc.w 0 dc.l Obj_IncLevEndXGradual dc.w 0 -ChildObjDat_6657C:dc.w 0 +ChildObjDat_6657C: + dc.w 0 dc.l loc_627C6 dc.w $C000 -ChildObjDat_66584:dc.w 0 +ChildObjDat_66584: + dc.w 0 dc.l loc_6282A dc.w $F8F0 -ChildObjDat_6658C:dc.w 3 +ChildObjDat_6658C: + dc.w 3 dc.l loc_6285A -ChildObjDat_66592:dc.w 3 +ChildObjDat_66592: + dc.w 3 dc.l loc_629CE dc.b 2 dc.b $24 -ChildObjDat_6659A:dc.w 0 +ChildObjDat_6659A: + dc.w 0 dc.l loc_61F60 dc.w $18 -ChildObjDat_665A2:dc.w 0 +ChildObjDat_665A2: + dc.w 0 dc.l Obj_CutsceneButton dc.w $C -ChildObjDat_665AA:dc.w 0 +ChildObjDat_665AA: + dc.w 0 dc.l Obj_CutsceneKnuckles -ChildObjDat_665B0:dc.w 0 +ChildObjDat_665B0: + dc.w 0 dc.l loc_62F72 -ChildObjDat_665B6:dc.w 0 +ChildObjDat_665B6: + dc.w 0 dc.l loc_6300C -ChildObjDat_665BC:dc.w 0 +ChildObjDat_665BC: + dc.w 0 dc.l loc_632CA dc.w $F800 -ChildObjDat_665C4:dc.w 6 +ChildObjDat_665C4: + dc.w 6 dc.l loc_65B0E dc.w 0 dc.l loc_65A8C @@ -135274,47 +135240,65 @@ ChildObjDat_665C4:dc.w 6 dc.w $101D dc.l loc_65B42 dc.w $281D -ChildObjDat_665F0:dc.w 0 +ChildObjDat_665F0: + dc.w 0 dc.l loc_65B70 -ChildObjDat_665F6:dc.w 0 +ChildObjDat_665F6: + dc.w 0 dc.l loc_659CC -ChildObjDat_665FC:dc.w 0 +ChildObjDat_665FC: + dc.w 0 dc.l loc_64C24 -ChildObjDat_66602:dc.w $F +ChildObjDat_66602: + dc.w $F dc.l loc_652A2 -ChildObjDat_66608:dc.w 0 +ChildObjDat_66608: + dc.w 0 dc.l loc_6502E dc.w $23 -ChildObjDat_66610:dc.w 1 +ChildObjDat_66610: + dc.w 1 dc.l loc_65138 dc.w 0 dc.l loc_6515E dc.w $D0 -ChildObjDat_6661E:dc.w $E +ChildObjDat_6661E: + dc.w $E dc.l loc_6518A -ChildSpriteDat_66624:dc.w 1 +ChildSpriteDat_66624: + dc.w 1 dc.l loc_6531E dc.w $8FC -ChildObjDat3_6662C:dc.w 9 +ChildObjDat3_6662C: + dc.w 9 dc.l loc_65376 -ChildObjDat3_66632:dc.w 9 +ChildObjDat3_66632: + dc.w 9 dc.l loc_65360 -ChildObjDat_66638:dc.w 4 +ChildObjDat_66638: + dc.w 4 dc.l loc_65226 -ChildObjDat_6663E:dc.w 0 +ChildObjDat_6663E: + dc.w 0 dc.l loc_655B2 -ChildObjDat_66644:dc.w 0 +ChildObjDat_66644: + dc.w 0 dc.l loc_6563A -ChildObjDat_6664A:dc.w $1F +ChildObjDat_6664A: + dc.w $1F dc.l loc_65602 -ChildObjDat_66650:dc.w 9 +ChildObjDat_66650: + dc.w 9 dc.l loc_6395C -ChildObjDat_66656:dc.w 7 +ChildObjDat_66656: + dc.w 7 dc.l loc_63694 -ChildObjDat_6665C:dc.w 0 +ChildObjDat_6665C: + dc.w 0 dc.l loc_638DC dc.w $EC -ChildObjDat_66664:dc.w 0 +ChildObjDat_66664: + dc.w 0 dc.l loc_63916 DPLCPtr_6666A: dc.l ArtUnc_CutsceneKnux dc.l DPLC_CutsceneKnux @@ -135799,62 +135783,57 @@ byte_6690B: dc.b 5 dc.b 7 dc.b 8 dc.b $F4 -Pal_CutsceneKnux: binclude "General/Sprites/Knuckles/Cutscene/Pal.bin" - even - +Pal_CutsceneKnux: + binclude "General/Sprites/Knuckles/Cutscene/Pal.bin" + even Pal_CNZFlash: binclude "Levels/CNZ/Palettes/Flash.bin" - even - + even Pal_KnuxSSZEnd: binclude "General/Sprites/Knuckles/Palettes/SSZ End.bin" - even - + even Pal_HPZ2_A: binclude "Levels/HPZ/Palettes/2_A.bin" - even - + even Pal_HPZ2_B: binclude "Levels/HPZ/Palettes/2_B.bin" - even - -Pal_SKIntroBomb: binclude "General/Sprites/Knuckles/Cutscene/Intro Bomb Pal.bin" - even - -Map_MHZKnuxPeer: include "Levels/MHZ/Misc Object Data/Map - Knuckles Peering.asm" - -Map_MHZKnuxDoor: include "Levels/MHZ/Misc Object Data/Map - Knuckles Switch Door.asm" - -Map_MHZKnuxPullSwitch: include "General/Sprites/Knuckles/Cutscene/Map - MHZ2 Press.asm" - -DPLC_MHZKnuxPress: include "General/Sprites/Knuckles/Cutscene/DPLC - MHZ Press.asm" - -Map_MHZKnuxSwitch: include "Levels/MHZ/Misc Object Data/Map - Act 2 Knuckles Switch.asm" - -Map_MHZKnuxLeaves: include "Levels/MHZ/Misc Object Data/Map - Act 2 Knuckles Leaves.asm" - -Map_LRZKnuxBoulder: include "Levels/LRZ/Misc Object Data/Map - Knuckles Boulder.asm" - -Map_SSZKnucklesTired: include "General/Sprites/Knuckles/Cutscene/Map - SSZ Tired.asm" - -DPLC_SSZKnucklesTired: include "General/Sprites/Knuckles/Cutscene/DPLC - SSZ Tired.asm" - -Map_SSZDeathEggSmall: include "Levels/SSZ/Misc Object Data/Map - Death Egg Small.asm" - -Map_SSZDeathEggCloud: include "General/Sprites/SSZ Death Egg Cloud/Map - SSZ Death Egg Cloud.asm" - -DPLC_SSZDeathEggCloud: include "General/Sprites/SSZ Death Egg Cloud/DPLC - SSZ Death Egg Cloud.asm" - -Map_HPZKnucklesGrab: include "General/Sprites/Knuckles/Cutscene/Map - HPZ Grab.asm" - -DPLC_HPZKnucklesGrab: include "General/Sprites/Knuckles/Cutscene/DPLC - HPZ Grab.asm" - -Map_KnuxFinalBossCrane: include "General/Sprites/Robotnik/Map - Robotnik Ship Crane.asm" - -Map_HPZKnuxDizzyStars: include "Levels/HPZ/Misc Object Data/Map - Knuckles Dizzy Stars.asm" - -Map_KnuxIntroLay: include "General/Sprites/Knuckles/Cutscene/Map - Intro Laying.asm" - -DPLC_KnuxIntroLay: include "General/Sprites/Knuckles/Cutscene/DPLC - Intro Laying.asm" - -Map_KnuxIntroBomb: include "General/Sprites/Knuckles/Cutscene/Map - Intro Bomb.asm" - + even +Pal_SKIntroBomb:binclude "General/Sprites/Knuckles/Cutscene/Intro Bomb Pal.bin" + even +Map_MHZKnuxPeer + include "Levels/MHZ/Misc Object Data/Map - Knuckles Peering.asm" +Map_MHZKnuxDoor: + include "Levels/MHZ/Misc Object Data/Map - Knuckles Switch Door.asm" +Map_MHZKnuxPullSwitch: + include "General/Sprites/Knuckles/Cutscene/Map - MHZ2 Press.asm" +DPLC_MHZKnuxPress: + include "General/Sprites/Knuckles/Cutscene/DPLC - MHZ Press.asm" +Map_MHZKnuxSwitch: + include "Levels/MHZ/Misc Object Data/Map - Act 2 Knuckles Switch.asm" +Map_MHZKnuxLeaves: + include "Levels/MHZ/Misc Object Data/Map - Act 2 Knuckles Leaves.asm" +Map_LRZKnuxBoulder: + include "Levels/LRZ/Misc Object Data/Map - Knuckles Boulder.asm" +Map_SSZKnucklesTired: + include "General/Sprites/Knuckles/Cutscene/Map - SSZ Tired.asm" +DPLC_SSZKnucklesTired: + include "General/Sprites/Knuckles/Cutscene/DPLC - SSZ Tired.asm" +Map_SSZDeathEggSmall: + include "Levels/SSZ/Misc Object Data/Map - Death Egg Small.asm" +Map_SSZDeathEggCloud: + include "General/Sprites/SSZ Death Egg Cloud/Map - SSZ Death Egg Cloud.asm" +DPLC_SSZDeathEggCloud: + include "General/Sprites/SSZ Death Egg Cloud/DPLC - SSZ Death Egg Cloud.asm" +Map_HPZKnucklesGrab: + include "General/Sprites/Knuckles/Cutscene/Map - HPZ Grab.asm" +DPLC_HPZKnucklesGrab: + include "General/Sprites/Knuckles/Cutscene/DPLC - HPZ Grab.asm" +Map_KnuxFinalBossCrane: + include "General/Sprites/Robotnik/Map - Robotnik Ship Crane.asm" +Map_HPZKnuxDizzyStars: + include "Levels/HPZ/Misc Object Data/Map - Knuckles Dizzy Stars.asm" +Map_KnuxIntroLay: + include "General/Sprites/Knuckles/Cutscene/Map - Intro Laying.asm" +DPLC_KnuxIntroLay: + include "General/Sprites/Knuckles/Cutscene/DPLC - Intro Laying.asm" +Map_KnuxIntroBomb: + include "General/Sprites/Knuckles/Cutscene/Map - Intro Bomb.asm" ; --------------------------------------------------------------------------- Obj_AIZPlaneIntro: @@ -136353,20 +136332,25 @@ ObjDat3_67A4E: dc.l Map_AIZIntroEmeralds dc.b 4 dc.b 1 dc.b 0 -ChildObjDat_67A5A:dc.w 0 +ChildObjDat_67A5A: + dc.w 0 dc.l loc_6777A dc.w $DE2C -ChildObjDat_67A62:dc.w 1 +ChildObjDat_67A62: + dc.w 1 dc.l loc_67824 dc.w $3804 dc.l loc_67862 dc.w $1818 -ChildObjDat_67A70:dc.w 0 +ChildObjDat_67A70: + dc.w 0 dc.l loc_678A0 dc.w $18 -ChildObjDat_67A78:dc.w 0 +ChildObjDat_67A78: + dc.w 0 dc.l Obj_CutsceneKnuckles -ChildObjDat_67A7E:dc.w 6 +ChildObjDat_67A7E: + dc.w 6 dc.l loc_67900 byte_67A84: dc.b 3, 8 dc.b $97, $96 @@ -136401,9 +136385,9 @@ byte_67A9B: dc.b 0 dc.b 5 dc.b 1 dc.b $F4 -Pal_AIZIntroEmeralds: binclude "Levels/AIZ/Palettes/Intro Emeralds.bin" - even - +Pal_AIZIntroEmeralds: + binclude "Levels/AIZ/Palettes/Intro Emeralds.bin" + even ; --------------------------------------------------------------------------- Obj_RobotnikHead: @@ -136414,7 +136398,8 @@ Obj_RobotnikHead: jsr RobotnikHead_Index(pc,d1.w) jmp (Child_Draw_Sprite2).l ; --------------------------------------------------------------------------- -RobotnikHead_Index: dc.w Obj_RobotnikHeadInit-RobotnikHead_Index +RobotnikHead_Index: + dc.w Obj_RobotnikHeadInit-RobotnikHead_Index dc.w Obj_RobotnikHeadMain-RobotnikHead_Index dc.w Obj_RobotnikHeadEnd-RobotnikHead_Index ; --------------------------------------------------------------------------- @@ -136478,7 +136463,8 @@ Obj_RobotnikHead2: bne.w Obj_RobotnikHeadEnd jmp (Child_Draw_Sprite2).l ; --------------------------------------------------------------------------- -RobotnikHead2_Index: dc.w Obj_RobotnikHeadInit-RobotnikHead2_Index +RobotnikHead2_Index: + dc.w Obj_RobotnikHeadInit-RobotnikHead2_Index dc.w Obj_RobotnikHeadMain-RobotnikHead2_Index dc.w Obj_RobotnikHeadEnd-RobotnikHead2_Index ; --------------------------------------------------------------------------- @@ -136492,7 +136478,8 @@ Obj_FBZRobotnikHead: jsr (Child_GetPriority).l jmp (Child_Draw_Sprite2).l ; --------------------------------------------------------------------------- -FBZRobotnikHead_Index: dc.w Obj_FBZRobotnikHeadInit-FBZRobotnikHead_Index +FBZRobotnikHead_Index: + dc.w Obj_FBZRobotnikHeadInit-FBZRobotnikHead_Index dc.w Obj_FBZRobotnikHeadMain-FBZRobotnikHead_Index dc.w Obj_RobotnikHeadEnd-FBZRobotnikHead_Index ; --------------------------------------------------------------------------- @@ -136547,7 +136534,8 @@ Obj_RobotnikHead3: jsr RobotnikHead3_Index(pc,d1.w) jmp (Child_Draw_Sprite2).l ; --------------------------------------------------------------------------- -RobotnikHead3_Index: dc.w Obj_RobotnikHead3Init-RobotnikHead3_Index +RobotnikHead3_Index: + dc.w Obj_RobotnikHead3Init-RobotnikHead3_Index dc.w Obj_RobotnikHead3Main-RobotnikHead3_Index dc.w Obj_RobotnikHead3End-RobotnikHead3_Index ; --------------------------------------------------------------------------- @@ -136613,7 +136601,8 @@ Obj_RobotnikHead4: loc_67CFE: jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- -RobotnikHead4_Index: dc.w Obj_RobotnikHead3Init-RobotnikHead4_Index +RobotnikHead4_Index: + dc.w Obj_RobotnikHead3Init-RobotnikHead4_Index dc.w Obj_RobotnikHead3Main-RobotnikHead4_Index dc.w Obj_RobotnikHead3End-RobotnikHead4_Index ; --------------------------------------------------------------------------- @@ -136647,7 +136636,8 @@ Obj_RobotnikShip: bne.w Obj_RobotnikHeadEnd jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -RobotnikShip_Index: dc.w loc_67D68-RobotnikShip_Index +RobotnikShip_Index: + dc.w loc_67D68-RobotnikShip_Index dc.w loc_67D84-RobotnikShip_Index dc.w loc_67DD8-RobotnikShip_Index dc.w loc_67E0A-RobotnikShip_Index @@ -136729,7 +136719,8 @@ Obj_RobotnikShip2: jsr RobotnikShip2_Index(pc,d1.w) jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -RobotnikShip2_Index: dc.w Obj_RobotnikShipInit-RobotnikShip2_Index +RobotnikShip2_Index: + dc.w Obj_RobotnikShipInit-RobotnikShip2_Index dc.w Obj_RobotnikShipMain-RobotnikShip2_Index dc.w Obj_RobotnikShip2Wait-RobotnikShip2_Index dc.w Obj_RobotnikShipReady-RobotnikShip2_Index @@ -136759,7 +136750,8 @@ Obj_RobotnikShip3: bne.s loc_67E8C jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -RobotnikShip3_Index: dc.w Obj_RobotnikShipInit-RobotnikShip3_Index +RobotnikShip3_Index: + dc.w Obj_RobotnikShipInit-RobotnikShip3_Index dc.w Obj_RobotnikShipMain-RobotnikShip3_Index dc.w Obj_RobotnikShipWait-RobotnikShip3_Index dc.w Obj_RobotnikShipReady-RobotnikShip3_Index @@ -136852,7 +136844,8 @@ Obj_RobotnikShip4: jsr RobotnikShip4_Index(pc,d1.w) jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -RobotnikShip4_Index: dc.w Obj_RobotnikShipInit-RobotnikShip4_Index +RobotnikShip4_Index: + dc.w Obj_RobotnikShipInit-RobotnikShip4_Index dc.w Obj_RobotnikShipMain-RobotnikShip4_Index dc.w Obj_RobotnikShipWait-RobotnikShip4_Index dc.w Obj_RobotnikShipReady-RobotnikShip4_Index @@ -136866,7 +136859,8 @@ Obj_FBZRobotnikShip: jsr FBZRobotnikShip_Index(pc,d1.w) jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -FBZRobotnikShip_Index: dc.w Obj_FBZRobotnikShipInit-FBZRobotnikShip_Index +FBZRobotnikShip_Index: + dc.w Obj_FBZRobotnikShipInit-FBZRobotnikShip_Index dc.w Obj_FBZRobotnikShipMain-FBZRobotnikShip_Index dc.w Obj_FBZRobotnikShipWait-FBZRobotnikShip_Index dc.w Obj_FBZRobotnikShipFall-FBZRobotnikShip_Index @@ -137003,52 +136997,62 @@ loc_68118: jsr (Animate_RawNoSST).l jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -ObjDat_RobotnikHead: dc.l Map_RobotnikShip +ObjDat_RobotnikHead: + dc.l Map_RobotnikShip dc.w $52E dc.w $280 dc.b $10 dc.b 8 dc.b 0 dc.b 0 -ObjDat_FBZRobotnikHead: dc.l Map_FBZRobotnikHead +ObjDat_FBZRobotnikHead: + dc.l Map_FBZRobotnikHead dc.w $430 dc.w $280 dc.b $10 dc.b 8 dc.b 0 dc.b 0 -ObjDat_RobotnikShip: dc.l Map_RobotnikShip +ObjDat_RobotnikShip: + dc.l Map_RobotnikShip dc.w $52E dc.w $280 dc.b $1C dc.b $20 dc.b 8 dc.b 0 -ObjDat2_RoboShipFlame: dc.w $280 +ObjDat2_RoboShipFlame: + dc.w $280 dc.b 8 dc.b 4 dc.b 6 dc.b 0 -ObjDat_MechaSonicHead: dc.l Map_MechaSonicHead +ObjDat_MechaSonicHead: + dc.l Map_MechaSonicHead dc.w $252E dc.w $280 dc.b $14 dc.b $10 dc.b 0 dc.b 0 -Child1_MakeRoboHead:dc.w 0 +Child1_MakeRoboHead: + dc.w 0 dc.l Obj_RobotnikHead dc.w $E4 -Child1_MakeRoboHead2:dc.w 0 +Child1_MakeRoboHead2: + dc.w 0 dc.l Obj_RobotnikHead2 dc.w $E4 -Child1_MakeFBZRoboHead:dc.w 0 +Child1_MakeFBZRoboHead: + dc.w 0 dc.l Obj_FBZRobotnikHead dc.w $E4 -Child1_MakeRoboHead3:dc.w 0 +Child1_MakeRoboHead3: + dc.w 0 dc.l Obj_RobotnikHead3 dc.w $E4 -Child1_MakeRoboHead4:dc.w 0 +Child1_MakeRoboHead4: + dc.w 0 dc.l Obj_RobotnikHead4 dc.w $E4 word_6818C: dc.w 0 @@ -137057,44 +137061,52 @@ word_6818C: dc.w 0 dc.w 0 dc.l Obj_RobotnikShip2 dc.w 0 -Child1_MakeRoboShip3:dc.w 0 +Child1_MakeRoboShip3: + dc.w 0 dc.l Obj_RobotnikShip3 dc.w $FA04 -ChildObjDat_681A4:dc.w 0 +ChildObjDat_681A4: + dc.w 0 dc.l Obj_RobotnikShip4 dc.w $F8 -ChildObjDat_681AC:dc.w 0 +ChildObjDat_681AC: + dc.w 0 dc.l Obj_FBZRobotnikShip dc.w 4 -Child1_MakeRoboShipFlame:dc.w 0 +Child1_MakeRoboShipFlame: + dc.w 0 dc.l Obj_RobotnikShipFlame dc.w $1E00 -Child1_MakeMechaHead:dc.w 0 +Child1_MakeMechaHead: + dc.w 0 dc.l Obj_MechaSonicHead dc.w $E0 -Child1_BlueSphereShipHead:dc.w 0 +Child1_BlueSphereShipHead: + dc.w 0 dc.l Obj_BlueSphere_ShipHead dc.w $E4 -AniRaw_RobotnikHead: dc.b 5 +AniRaw_RobotnikHead: + dc.b 5 dc.b 0 dc.b 1 dc.b $FC -AniRaw_EggRoboHead: dc.b $F +AniRaw_EggRoboHead: + dc.b $F dc.b 0 dc.b 1 dc.b $FC -Map_EggRoboHead: include "General/Sprites/Robotnik/Map - Egg Robo Head.asm" - -Map_MechaSonicHead: include "General/Sprites/Mecha Sonic/Map - Mecha Sonic Head.asm" - -Map_RobotnikShip: include "General/Sprites/Robotnik/Map - Robotnik Ship.asm" - -Map_FBZRobotnikRun: include "Levels/FBZ/Misc Object Data/Map - Robotnik Run.asm" - -Map_FBZRobotnikHead: include "Levels/FBZ/Misc Object Data/Map - Robotnik Head.asm" - -Map_FBZRobotnikStand: include "Levels/FBZ/Misc Object Data/Map - Robotnik Stand.asm" - +Map_EggRoboHead: + include "General/Sprites/Robotnik/Map - Egg Robo Head.asm" +Map_MechaSonicHead: + include "General/Sprites/Mecha Sonic/Map - Mecha Sonic Head.asm" +Map_RobotnikShip: + include "General/Sprites/Robotnik/Map - Robotnik Ship.asm" +Map_FBZRobotnikRun: + include "Levels/FBZ/Misc Object Data/Map - Robotnik Run.asm" +Map_FBZRobotnikHead: + include "Levels/FBZ/Misc Object Data/Map - Robotnik Head.asm" +Map_FBZRobotnikStand: + include "Levels/FBZ/Misc Object Data/Map - Robotnik Stand.asm" ; --------------------------------------------------------------------------- Obj_AIZMinibossCutscene: @@ -138228,39 +138240,46 @@ word_69056: dc.w $200 dc.b $14 dc.b 0 dc.b 0 -ChildObjDat_6905C:dc.w 1 +ChildObjDat_6905C: + dc.w 1 dc.l loc_686BE dc.w $20 dc.l loc_6870A dc.w $DC08 -ChildObjDat_6906A:dc.w 5 +ChildObjDat_6906A: + dc.w 5 dc.l loc_68DFA dc.w 0 -ChildObjDat_69072:dc.w 2 +ChildObjDat_69072: + dc.w 2 dc.l loc_6872C dc.w $E0 dc.l loc_6872C dc.w $9E4 dc.l loc_6872C dc.w $12E8 -ChildObjDat_69086:dc.w 2 +ChildObjDat_69086: + dc.w 2 dc.l loc_68C12 dc.w $E0 dc.l loc_68C12 dc.w $9E4 dc.l loc_68C12 dc.w $12E8 -ChildObjDat_6909A:dc.w 1 +ChildObjDat_6909A: + dc.w 1 dc.l loc_6880A dc.w 4 dc.l loc_68844 dc.w 4 -ChildObjDat_690A8:dc.w 1 +ChildObjDat_690A8: + dc.w 1 dc.l loc_6880A dc.w 4 dc.l loc_68C96 dc.w 4 -Child1_AIZ_MinibossFlames:dc.w 3 +Child1_AIZ_MinibossFlames: + dc.w 3 dc.l Obj_AIZMiniboss_Flame dc.w $9C04 dc.l Obj_AIZMiniboss_Flame @@ -138269,10 +138288,12 @@ Child1_AIZ_MinibossFlames:dc.w 3 dc.w $BC04 dc.l Obj_AIZMiniboss_Flame dc.w $D403 -ChildObjDat_690D0:dc.w 0 +ChildObjDat_690D0: + dc.w 0 dc.l loc_68994 dc.w 0 -ChildObjDat_690D8:dc.w 6 +ChildObjDat_690D8: + dc.w 6 dc.l loc_68D88 dc.w $DC dc.l loc_68D88 @@ -138287,10 +138308,12 @@ ChildObjDat_690D8:dc.w 6 dc.w $4FC dc.l loc_68D88 dc.w $FCFC -ChildObjDat_69104:dc.w 0 +ChildObjDat_69104: + dc.w 0 dc.l Obj_BossExplosionSpecial dc.w 0 -ChildObjDat_6910C:dc.w 3 +ChildObjDat_6910C: + dc.w 3 dc.l loc_68E98 dc.w $F0F8 dc.l loc_68E98 @@ -138385,11 +138408,9 @@ byte_6916F: dc.b 0 dc.b 4 dc.b 4 dc.b $F4 -Pal_AIZMiniboss: binclude "Levels/AIZ/Palettes/Miniboss.bin" - even - - -AIZBossSonicDat: dc.w $4880 +Pal_AIZMiniboss:binclude "Levels/AIZ/Palettes/Miniboss.bin" + even +AIZBossSonicDat:dc.w $4880 dc.w $48E0 dc.w $15A AIZBossKnuxDat: dc.w $4100 @@ -138454,7 +138475,8 @@ Obj_AIZEndBossMain: bne.w locret_69366 ; Only draw and touch when boss has revealed itself jmp (Draw_And_Touch_Sprite).l ; --------------------------------------------------------------------------- -AIZ_EndBossIndex: dc.w Obj_AIZEndBossInit-AIZ_EndBossIndex +AIZ_EndBossIndex: + dc.w Obj_AIZEndBossInit-AIZ_EndBossIndex dc.w loc_692E2-AIZ_EndBossIndex dc.w loc_6932C-AIZ_EndBossIndex dc.w loc_69368-AIZ_EndBossIndex @@ -139379,7 +139401,8 @@ loc_69CB2: ; End of function sub_69CA4 ; --------------------------------------------------------------------------- -ObjDat_AIZEndBoss: dc.l Map_AIZEndBoss +ObjDat_AIZEndBoss: + dc.l Map_AIZEndBoss dc.w $A180 ; VRAM dc.w $280 ; Priority dc.b $28 ; Width @@ -139417,7 +139440,8 @@ word_69CFE: dc.w $8180 dc.b $30 dc.b $24 dc.b 0 -ObjDat_AIZEndBoss2: dc.l Map_AIZEndBoss +ObjDat_AIZEndBoss2: + dc.l Map_AIZEndBoss dc.w $8180 dc.w $100 dc.b $18 @@ -139429,36 +139453,46 @@ word_69D12: dc.w $180 dc.b $10 dc.b 0 dc.b 0 -ChildObjDat_69D18:dc.w 1 +ChildObjDat_69D18: + dc.w 1 dc.l loc_69622 dc.w $14FC dc.l loc_69622 dc.w $ECFC -ChildObjDat_69D26:dc.w 0 +ChildObjDat_69D26: + dc.w 0 dc.l loc_69738 dc.w $E400 -ChildObjDat_69D2E:dc.w 0 +ChildObjDat_69D2E: + dc.w 0 dc.l loc_699C0 dc.w 0 -ChildObjDat_69D36:dc.w 0 +ChildObjDat_69D36: + dc.w 0 dc.l loc_69996 dc.w $D0 -ChildObjDat_69D3E:dc.w 0 +ChildObjDat_69D3E: + dc.w 0 dc.l loc_69844 dc.w $305 -ChildObjDat_69D46:dc.w 0 +ChildObjDat_69D46: + dc.w 0 dc.l loc_69844 dc.w 7 -ChildObjDat_69D4E:dc.w 0 +ChildObjDat_69D4E: + dc.w 0 dc.l loc_69844 dc.w $FD05 -ChildObjDat_69D56:dc.w 0 +ChildObjDat_69D56: + dc.w 0 dc.l loc_698D2 dc.w 0 -ChildObjDat_69D5E:dc.w 0 +ChildObjDat_69D5E: + dc.w 0 dc.l loc_6995A dc.w 0 -ChildObjDat_69D66:dc.w 5 +ChildObjDat_69D66: + dc.w 5 dc.l loc_69A3A dc.w $F0F0 dc.l loc_69A3A @@ -139471,7 +139505,8 @@ ChildObjDat_69D66:dc.w 5 dc.w $F418 dc.l loc_69A3A dc.w $C18 -ChildObjDat_69D8C:dc.w 0 +ChildObjDat_69D8C: + dc.w 0 dc.l Obj_EggCapsule dc.w 0 dc.l Obj_CutsceneKnuckles @@ -139605,8 +139640,7 @@ byte_69E65: dc.b $2B, 0 dc.b $6B, 0 dc.b $F4 Pal_AIZEndBoss: binclude "Levels/AIZ/Palettes/End Boss.bin" - even - + even ; --------------------------------------------------------------------------- Obj_HCZMiniboss: @@ -141036,7 +141070,8 @@ byte_6AD48: dc.b 2 dc.b $24 dc.b 0 dc.b 0 -Child1_HCZMiniboss_RocketsEngine:dc.w 4 +Child1_HCZMiniboss_RocketsEngine: + dc.w 4 dc.l Obj_HCZMiniboss_Rockets dc.w $1818 dc.l Obj_HCZMiniboss_Rockets @@ -141047,28 +141082,36 @@ Child1_HCZMiniboss_RocketsEngine:dc.w 4 dc.w $18E8 dc.l Obj_HCZMiniboss_Engine dc.w $24 -ChildObjDat_6AD6E:dc.w 0 +ChildObjDat_6AD6E: + dc.w 0 dc.l loc_6A51E dc.w 0 -ChildObjDat_6AD76:dc.w 0 +ChildObjDat_6AD76: + dc.w 0 dc.l loc_6A460 dc.w 0 -ChildObjDat_6AD7E:dc.w 2 +ChildObjDat_6AD7E: + dc.w 2 dc.l loc_6A4C8 dc.w 0 dc.l loc_6A4C8 dc.w $F000 dc.l loc_6A4C8 dc.w $1000 -ChildObjDat_6AD92:dc.w $1D +ChildObjDat_6AD92: + dc.w $1D dc.l loc_6A65C -ChildObjDat_6AD98:dc.w 0 +ChildObjDat_6AD98: + dc.w 0 dc.l loc_6A710 -ChildObjDat_6AD9E:dc.w 0 +ChildObjDat_6AD9E: + dc.w 0 dc.l loc_6A7C4 -ChildObjDat_6ADA4:dc.w 1 +ChildObjDat_6ADA4: + dc.w 1 dc.l loc_6A7C4 -ChildObjDat_6ADAA:dc.w 3 +ChildObjDat_6ADAA: + dc.w 3 dc.l loc_6A8C6 dc.w $F4F4 dc.l loc_6A8C6 @@ -141077,7 +141120,8 @@ ChildObjDat_6ADAA:dc.w 3 dc.w $CF4 dc.l loc_6A8C6 dc.w $C0C -ChildObjDat_6ADC4:dc.w 4 +ChildObjDat_6ADC4: + dc.w 4 dc.l loc_6A8EE dc.w $DC dc.l loc_6A8EE @@ -141152,12 +141196,11 @@ word_6AE4E: dc.w 2 dc.w $16FC word_6AE52: dc.w 3 dc.w $16FC -Pal_HCZMiniboss: binclude "Levels/HCZ/Palettes/Miniboss.bin" - even - -Pal_HCZMinibossWater: binclude "Levels/HCZ/Palettes/Miniboss Water.bin" - even - +Pal_HCZMiniboss:binclude "Levels/HCZ/Palettes/Miniboss.bin" + even +Pal_HCZMinibossWater: + binclude "Levels/HCZ/Palettes/Miniboss Water.bin" + even byte_6AE96: dc.b 4, $38 dc.b 8, $38 dc.b $3F, 0 @@ -142600,7 +142643,8 @@ ObjDat3_6BD7E: dc.l Map_HCZWaterWall dc.b $60 dc.b 1 dc.b 0 -ChildObjDat_6BD8A:dc.w 4 +ChildObjDat_6BD8A: + dc.w 4 dc.l loc_6B5C4 dc.w $2312 dc.l loc_6B5C4 @@ -142615,28 +142659,36 @@ word_6BDAA: dc.w 0 dc.l loc_6B5C4 dc.b $13 dc.b $A -ChildObjDat_6BDB2:dc.w 0 +ChildObjDat_6BDB2: + dc.w 0 dc.l loc_6B77C dc.w 0 -ChildObjDat_6BDBA:dc.w 0 +ChildObjDat_6BDBA: + dc.w 0 dc.l loc_6B26E dc.w 0 -ChildObjDat_6BDC2:dc.w 0 +ChildObjDat_6BDC2: + dc.w 0 dc.l loc_6B3DE dc.w 0 -ChildObjDat_6BDCA:dc.w 1 +ChildObjDat_6BDCA: + dc.w 1 dc.l loc_6B456 dc.w $FC00 dc.l loc_6B456 dc.w $400 -ChildObjDat_6BDD8:dc.w 0 +ChildObjDat_6BDD8: + dc.w 0 dc.l loc_6B4A2 dc.w 0 -ChildObjDat_6BDE0:dc.w 4 +ChildObjDat_6BDE0: + dc.w 4 dc.l loc_6B4C4 -ChildObjDat_6BDE6:dc.w $13 +ChildObjDat_6BDE6: + dc.w $13 dc.l loc_6B50C -ChildObjDat_6BDEC:dc.w 0 +ChildObjDat_6BDEC: + dc.w 0 dc.l Obj_RobotnikShip2 dc.w $C byte_6BDF4: dc.b 7 @@ -142761,8 +142813,7 @@ byte_6BEEB: dc.b 8, 0, 8, 0 byte_6BF02: dc.b 7, 0, 0, 1 dc.b 2, 3, 4, $F4 Pal_HCZEndBoss: binclude "Levels/HCZ/Palettes/End Boss.bin" - even - + even ; --------------------------------------------------------------------------- Obj_MGZ2DrillingRobotnik: @@ -144920,7 +144971,8 @@ byte_6D76C: dc.b 6 dc.b 4 dc.b 8 dc.b 6 -ObjDat_MGZDrillBoss: dc.l Map_MGZEndBoss +ObjDat_MGZDrillBoss: + dc.l Map_MGZEndBoss dc.w $233F dc.w $300 dc.b $24 @@ -144977,7 +145029,8 @@ ObjDat3_6D7B4: dc.l Map_ScaledArt dc.b $20 dc.b 0 dc.b 0 -ChildObjDat_6D7C0:dc.w 3 +ChildObjDat_6D7C0: + dc.w 3 dc.l loc_6CC46 dc.w $EC0F dc.l loc_6C948 @@ -144986,46 +145039,59 @@ ChildObjDat_6D7C0:dc.w 3 dc.w $818 dc.l loc_6CEB0 dc.w $F418 -ChildObjDat_6D7DA:dc.w 0 +ChildObjDat_6D7DA: + dc.w 0 dc.l loc_6C9E8 dc.w $E900 -ChildObjDat_6D7E2:dc.w 0 +ChildObjDat_6D7E2: + dc.w 0 dc.l loc_6CF20 dc.w $10 -ChildObjDat_6D7EA:dc.w 9 +ChildObjDat_6D7EA: + dc.w 9 dc.l loc_6CF9E dc.w $18C0 -ChildObjDat_6D7F2:dc.w 9 +ChildObjDat_6D7F2: + dc.w 9 dc.l loc_6CF9E dc.w $E8C0 -ChildObjDat_6D7FA:dc.w 0 +ChildObjDat_6D7FA: + dc.w 0 dc.l loc_6CC72 dc.w $C00 -ChildObjDat_6D802:dc.w 7 +ChildObjDat_6D802: + dc.w 7 dc.l loc_6CDE8 dc.w $F000 -ChildObjDat_6D80A:dc.w 7 +ChildObjDat_6D80A: + dc.w 7 dc.l loc_6CDE8 dc.w $1000 -ChildObjDat_6D812:dc.w 0 +ChildObjDat_6D812: + dc.w 0 dc.l loc_6CCE6 dc.w 0 -ChildObjDat_6D81A:dc.w 0 +ChildObjDat_6D81A: + dc.w 0 dc.l loc_6CD42 dc.w 0 -ChildObjDat_6D822:dc.w 2 +ChildObjDat_6D822: + dc.w 2 dc.l loc_6CFBE dc.w $CEC dc.l loc_6CFBE dc.w $F008 dc.l loc_6CFBE dc.w $1408 -ChildObjDat_6D836:dc.w 0 +ChildObjDat_6D836: + dc.w 0 dc.l loc_6CFF4 dc.w 0 -ChildObjDat_6D83E:dc.w 0 +ChildObjDat_6D83E: + dc.w 0 dc.l loc_6D16A -ChildObjDat_6D844:dc.w 0 +ChildObjDat_6D844: + dc.w 0 dc.l loc_6D1BE dc.b 0, 5 dc.b 1, 5 @@ -145187,9 +145253,7 @@ byte_6D95D: dc.b $F, 3 dc.b $11, 7 dc.b $F4 Pal_MGZEndBoss: binclude "Levels/MGZ/Palettes/End Boss.bin" - even - - + even ; --------------------------------------------------------------------------- Obj_CNZMiniboss: @@ -145243,7 +145307,8 @@ Obj_CNZMinibossStart: bsr.w CNZMiniboss_CheckTopHit jmp (Draw_And_Touch_Sprite).l ; --------------------------------------------------------------------------- -CNZMiniboss_Index: dc.w Obj_CNZMinibossInit-CNZMiniboss_Index +CNZMiniboss_Index: + dc.w Obj_CNZMinibossInit-CNZMiniboss_Index dc.w Obj_CNZMinibossLower-CNZMiniboss_Index dc.w Obj_CNZMinibossMove-CNZMiniboss_Index dc.w Obj_CNZMinibossMove-CNZMiniboss_Index @@ -145378,7 +145443,8 @@ Obj_CNZMinibossTop: jsr CNZMinibossTop_Index(pc,d1.w) jmp (Draw_And_Touch_Sprite).l ; --------------------------------------------------------------------------- -CNZMinibossTop_Index: dc.w Obj_CNZMinibossTopInit-CNZMinibossTop_Index +CNZMinibossTop_Index: + dc.w Obj_CNZMinibossTopInit-CNZMinibossTop_Index dc.w Obj_CNZMinibossTopWait-CNZMinibossTop_Index dc.w Obj_CNZMinibossTopWait2-CNZMinibossTop_Index dc.w Obj_CNZMinibossTopMain-CNZMinibossTop_Index @@ -145752,7 +145818,8 @@ word_6E022: dc.w $F000 dc.w $34 dc.w $3C dc.w $48 -CNZMinibossDebris_Frames: dc.b $12, $13, $14, $14, $14, $14, $14, $14, $15, 0 +CNZMinibossDebris_Frames: + dc.b $12, $13, $14, $14, $14, $14, $14, $14, $15, 0 ; --------------------------------------------------------------------------- SetUp_CNZMinibossSwing: @@ -146012,47 +146079,57 @@ loc_6E27C: ; End of function CNZMinibossTop_CheckHitBase ; --------------------------------------------------------------------------- -CNZMiniboss_BaseRange: dc.w $FFE8, $30 +CNZMiniboss_BaseRange: + dc.w $FFE8, $30 dc.w $FFF0, $20 -CNZMiniboss_CoilRange: dc.w $FFF4, $18 +CNZMiniboss_CoilRange: + dc.w $FFF4, $18 dc.w $10, $18 -CNZMiniboss_CoilOpenRange: dc.w $FFF4, $18 +CNZMiniboss_CoilOpenRange: + dc.w $FFF4, $18 dc.w $10, $38 -ObjDat_CNZMiniboss: dc.l Map_CNZMiniboss +ObjDat_CNZMiniboss: + dc.l Map_CNZMiniboss dc.w $A52E dc.w $280 dc.b $18 dc.b $30 dc.b 0 dc.b $C -ObjDat3_CNZMinibossTop: dc.w $200 +ObjDat3_CNZMinibossTop: + dc.w $200 dc.b $18 dc.b $10 dc.b 7 dc.b $AA -ObjDat3_CNZMinibossSpark: dc.w $200 +ObjDat3_CNZMinibossSpark: + dc.w $200 dc.b $C dc.b $18 dc.b $A dc.b $92 -ObjDat3_CNZMbossBounceEffect: dc.w $100 +ObjDat3_CNZMbossBounceEffect: + dc.w $100 dc.b 8 dc.b 8 dc.b $C dc.b 0 -ObjDat_CNZMinibossDebris: dc.l Map_CNZMiniboss +ObjDat_CNZMinibossDebris: + dc.l Map_CNZMiniboss dc.w $A52E dc.w $100 dc.b $10 dc.b $10 dc.b 0 dc.b 0 -Child1_CNZMinibossMakeTop:dc.w 1 +Child1_CNZMinibossMakeTop: + dc.w 1 dc.l Obj_CNZMinibossTop dc.w $2C dc.l Obj_CNZMinibossCoil dc.w $1C -Child1_CNZMinibossTimedSparks:dc.w 1 +Child1_CNZMinibossTimedSparks: + dc.w 1 dc.l Obj_CNZMinibossTimedSparks dc.w $EC18 dc.l Obj_CNZMinibossTimedSparks @@ -146060,22 +146137,27 @@ Child1_CNZMinibossTimedSparks:dc.w 1 dc.w 0 dc.l loc_6DEDE dc.w $FC -Child1_CNZCoilOpenSparks:dc.w 2 +Child1_CNZCoilOpenSparks: + dc.w 2 dc.l Obj_CNZMinibossSparks dc.w $FC28 dc.l Obj_CNZMinibossSparks dc.w $42C dc.l Obj_CNZMinibossSparks dc.w $FC3C -Child1_CNZBounceEffect:dc.w 0 +Child1_CNZBounceEffect: + dc.w 0 dc.l Obj_CNZMinibossBounceEffect dc.w $FC -Child1_CNZMinibossExplosion:dc.w 0 +Child1_CNZMinibossExplosion: + dc.w 0 dc.l Obj_CreateBossExplosion dc.w 0 -Child6_CNZMinibossMakeDebris:dc.w 8 +Child6_CNZMinibossMakeDebris: + dc.w 8 dc.l Obj_CNZMinibossDebris -AniRaw_CNZMinibossOpening: dc.b 0, 3 +AniRaw_CNZMinibossOpening: + dc.b 0, 3 dc.b 1, 3 dc.b 2, 3 dc.b 3, 3 @@ -146083,7 +146165,8 @@ AniRaw_CNZMinibossOpening: dc.b 0, 3 dc.b 5, 3 dc.b 6, 3 dc.b $F4 -AniRaw_CNZMinibossClosing: dc.b 6, 3 +AniRaw_CNZMinibossClosing: + dc.b 6, 3 dc.b 5, 3 dc.b 4, 3 dc.b 3, 3 @@ -146091,41 +146174,45 @@ AniRaw_CNZMinibossClosing: dc.b 6, 3 dc.b 1, 3 dc.b 0, 3 dc.b $F4 -AniRaw_CNZMinibossTop: dc.b 7, 8, 7, 8, 9, $FC - -AniRaw_CNZMinibossTop2: dc.b 0, 7, 8, 9, $FC - -AniRaw_CNZMinibossTimedSparkLeft: dc.b $A, 0 +AniRaw_CNZMinibossTop: + dc.b 7, 8, 7, 8, 9, $FC +AniRaw_CNZMinibossTop2: + dc.b 0, 7, 8, 9, $FC +AniRaw_CNZMinibossTimedSparkLeft: + dc.b $A, 0 dc.b $11, 2 dc.b $B, 0 dc.b $11, 2 dc.b $FC -AniRaw_CNZMinibossTimedSparkRight: dc.b $F, 0 +AniRaw_CNZMinibossTimedSparkRight: + dc.b $F, 0 dc.b $11, 2 dc.b $10, 0 dc.b $11, 2 dc.b $FC -AniRaw_CNZMinibossSparks1: dc.b $A, 0 +AniRaw_CNZMinibossSparks1: + dc.b $A, 0 dc.b $11, 7 dc.b $B, 0 dc.b $11, 7 dc.b $FC -AniRaw_CNZMinibossSparks2: dc.b $11, 0 +AniRaw_CNZMinibossSparks2: + dc.b $11, 0 dc.b $F, 0 dc.b $11, 7 dc.b $10, 0 dc.b $11, 9 dc.b $FC -AniRaw_CNZMinibossSparks3: dc.b $A, 0 +AniRaw_CNZMinibossSparks3: + dc.b $A, 0 dc.b $11, 7 dc.b $B, 0 dc.b $11, $B dc.b $FC -AniRaw_CNZMBossBoundEffect: dc.b $C, 0, $D, 1, $E, 1, $F4, 0 - -Pal_CNZMiniboss: binclude "Levels/CNZ/Palettes/Miniboss.bin" - even - +AniRaw_CNZMBossBoundEffect: + dc.b $C, 0, $D, 1, $E, 1, $F4, 0 +Pal_CNZMiniboss:binclude "Levels/CNZ/Palettes/Miniboss.bin" + even PalSPtr_CNZMinibossNormal: palscriptptr .header, .data dc.w 0 @@ -147095,26 +147182,32 @@ ObjDat3_6EDC0: dc.l Map_CNZEndBoss dc.b $40 dc.b 6 dc.b $AB -ChildObjDat_6EDCC:dc.w 0 +ChildObjDat_6EDCC: + dc.w 0 dc.l loc_6E82C dc.w $14 -ChildObjDat_6EDD4:dc.w 3 +ChildObjDat_6EDD4: + dc.w 3 dc.l loc_6E95A dc.w 8 -ChildObjDat_6EDDC:dc.w 0 +ChildObjDat_6EDDC: + dc.w 0 dc.l loc_6EADA dc.w $4C -ChildObjDat_6EDE4:dc.w 1 +ChildObjDat_6EDE4: + dc.w 1 dc.l loc_6EADA dc.w $F454 dc.l loc_6EADA dc.w $C54 -ChildObjDat_6EDF2:dc.w 1 +ChildObjDat_6EDF2: + dc.w 1 dc.l loc_6E936 dc.w $F800 dc.l loc_6E936 dc.w $800 -ChildObjDat_6EE00:dc.w 1 +ChildObjDat_6EE00: + dc.w 1 dc.l loc_6EBAC dc.w $EC00 dc.l loc_6EBAC @@ -147148,8 +147241,7 @@ byte_6EE3B: dc.b 9, $24, 6, 0 dc.b $FC, 7, 0, 1 dc.b $FC Pal_CNZEndBoss: binclude "Levels/CNZ/Palettes/End Boss.bin" - even - + even ; --------------------------------------------------------------------------- Obj_FBZMiniboss: @@ -148384,7 +148476,8 @@ word_6FA5E: dc.w $180 dc.b 8 dc.b 0 dc.b 0 -ChildObjDat_6FA76:dc.w 6 +ChildObjDat_6FA76: + dc.w 6 dc.l loc_6F10E dc.w $F0F8 dc.l loc_6F10E @@ -148401,10 +148494,12 @@ ChildObjDat_6FA76:dc.w 6 dc.w 0 word_6FAA2: dc.w 4 dc.l loc_6F3DE -ChildObjDat_6FAA8:dc.w 0 +ChildObjDat_6FAA8: + dc.w 0 dc.l loc_6F0CE dc.w $F8 -ChildObjDat_6FAB0:dc.w 0 +ChildObjDat_6FAB0: + dc.w 0 dc.l loc_6F74C dc.b 3 dc.b 9 @@ -148416,8 +148511,8 @@ ChildObjDat_6FAB0:dc.w 0 dc.b $F dc.b $10 dc.b $FC -Pal_FBZMiniboss: binclude "Levels/FBZ/Palettes/FBZ Miniboss.bin" - even +Pal_FBZMiniboss:binclude "Levels/FBZ/Palettes/FBZ Miniboss.bin" + even word_6FAE0: palscriptptr .header, .data dc.w 0 .header palscripthdr Normal_palette_line_2+$1E, 1, 7-1 @@ -148425,10 +148520,9 @@ word_6FAE0: palscriptptr .header, .data palscriptdata 4, $644 palscriptrun -Map_FBZMiniboss: include "Levels/FBZ/Misc Object Data/Map - Miniboss.asm" +Map_FBZMiniboss:include "Levels/FBZ/Misc Object Data/Map - Miniboss.asm" word_6FCFC: dc.w $560, $660, $2900, $2C00 dc.w $5E0, $5E0, $2900, $2900 - ; --------------------------------------------------------------------------- Obj_FBZ2Subboss: @@ -149039,20 +149133,25 @@ ObjDat3_703BC: dc.l Map_FBZRobotnikStand dc.b $20 dc.b 0 dc.b 0 -ChildObjDat_703C8:dc.w 3 +ChildObjDat_703C8: + dc.w 3 dc.l loc_6FF5C dc.w 0 -ChildObjDat_703D0:dc.w 1 +ChildObjDat_703D0: + dc.w 1 dc.l loc_6FFDC dc.w 0 dc.l loc_7002A dc.w 0 -ChildObjDat_703DE:dc.w 0 +ChildObjDat_703DE: + dc.w 0 dc.l Obj_SpriteMask -ChildObjDat_703E4:dc.w 1 +ChildObjDat_703E4: + dc.w 1 dc.l loc_70118 dc.w 0 -ChildObjDat_703EC:dc.w 0 +ChildObjDat_703EC: + dc.w 0 dc.l loc_70192 dc.w 8 byte_703F4: dc.b 0, 7 @@ -149079,11 +149178,9 @@ byte_70419: dc.b 5, 0 dc.b 1, 2 dc.b 1, $FC dc.b 0 -Pal_FBZ2Subboss: binclude "Levels/FBZ/Palettes/FBZ2 Subboss.bin" - even - -Map_FBZ2Subboss: include "Levels/FBZ/Misc Object Data/Map - Act 2 Subboss.asm" - +Pal_FBZ2Subboss:binclude "Levels/FBZ/Palettes/FBZ2 Subboss.bin" + even +Map_FBZ2Subboss:include "Levels/FBZ/Misc Object Data/Map - Act 2 Subboss.asm" PLC_705B6: dc.w 3 dc.l ArtNem_FBZ2Subboss dc.w $A5C0 @@ -149947,29 +150044,35 @@ ObjDat3_70EC8: dc.l Map_FBZEndBossFlame dc.b $10 dc.b 0 dc.b $8B -ObjDat_FBZExitDoor: dc.l Map_FBZExitDoor +ObjDat_FBZExitDoor: + dc.l Map_FBZExitDoor dc.w $43E5 dc.w $80 dc.b 8 dc.b $20 dc.b 0 dc.b $D7 -ChildObjDat_70EE0:dc.w 2 +ChildObjDat_70EE0: + dc.w 2 dc.l loc_70948 dc.w $D048 dc.l loc_70948 dc.w $3048 dc.l loc_70AFC dc.w $D8 -ChildObjDat_70EF4:dc.w 0 +ChildObjDat_70EF4: + dc.w 0 dc.l loc_70A46 dc.w $E0 -ChildObjDat_70EFC:dc.w 3 +ChildObjDat_70EFC: + dc.w 3 dc.l loc_70AA2 dc.w 0 -ChildObjDat_70F04:dc.w 8 +ChildObjDat_70F04: + dc.w 8 dc.l loc_70B8C -ChildObjDat_70F0A:dc.w 3 +ChildObjDat_70F0A: + dc.w 3 dc.l loc_70BD0 dc.w $EC08 dc.l loc_70BD0 @@ -149978,7 +150081,8 @@ ChildObjDat_70F0A:dc.w 3 dc.w $F020 dc.l loc_70BD0 dc.w $1020 -ChildObjDat_70F24:dc.w 3 +ChildObjDat_70F24: + dc.w 3 dc.l loc_70BFE dc.w $F8F0 dc.l loc_70BFE @@ -150020,15 +150124,14 @@ byte_70F70: dc.b 0, 2 dc.b 3, 5 dc.b 4, 6 dc.b $F4, 0 -Map_FBZExitDoor: include "Levels/FBZ/Misc Object Data/Map - Exit Door.asm" - -Pal_FBZEndBoss: binclude "Levels/FBZ/Palettes/FBZ End Boss.bin" - even - +Map_FBZExitDoor: + include "Levels/FBZ/Misc Object Data/Map - Exit Door.asm" +Pal_FBZEndBoss: + binclude "Levels/FBZ/Palettes/FBZ End Boss.bin" + even Map_FBZEndBoss: include "Levels/FBZ/Misc Object Data/Map - End Boss.asm" - -Map_FBZEndBossFlame: include "Levels/FBZ/Misc Object Data/Map - End Boss Flame.asm" - +Map_FBZEndBossFlame: + include "Levels/FBZ/Misc Object Data/Map - End Boss Flame.asm" FBZEndBoss_CircleLookup1: dc.b 0, 2, 4, 5, 7, 9, $B, $C, $E, $10, $11, $13, $15, $17, $18, $1A, $1C, $1D, $1F, $20 dc.b $22, $23, $25, $27, $28, $29, $2B, $2C, $2E, $2F, $30, $32, $33, $34, $35, $37, $38, $39, $3A, $3B @@ -150888,7 +150991,8 @@ word_7197E: dc.w $180 dc.b $C dc.b $B dc.b 0 -ChildObjDat_71984:dc.w 5 +ChildObjDat_71984: + dc.w 5 dc.l loc_71446 dc.w $F2F5 dc.l loc_71446 @@ -150901,9 +151005,11 @@ ChildObjDat_71984:dc.w 5 dc.w $EF5 dc.l loc_71446 dc.w $E -ChildObjDat_719AA:dc.w 7 +ChildObjDat_719AA: + dc.w 7 dc.l loc_714B8 -ChildObjDat_719B0:dc.w 3 +ChildObjDat_719B0: + dc.w 3 dc.l loc_7168A dc.w $F4F4 dc.l loc_7168A @@ -150929,9 +151035,8 @@ ChildObjDat_719B0:dc.w 3 dc.b 3 dc.b $F4 dc.b 0 -Pal_ICZMiniboss: binclude "Levels/ICZ/Palettes/Miniboss.bin" - even - +Pal_ICZMiniboss:binclude "Levels/ICZ/Palettes/Miniboss.bin" + even word_719FA: palscriptptr .header, .data dc.w 0 .header palscripthdr Normal_palette_line_4+$02, 10, 2-1 @@ -151715,26 +151820,33 @@ word_72330: dc.w $180 dc.b $10 dc.b 0 dc.b 0 -ChildObjDat_72336:dc.w 0 +ChildObjDat_72336: + dc.w 0 dc.l Obj_RobotnikShip4 dc.w 0 -ChildObjDat_7233E:dc.w 2 +ChildObjDat_7233E: + dc.w 2 dc.l loc_71E28 dc.w $1807 dc.l loc_71E98 dc.w $B dc.l loc_71F30 dc.w $2D -ChildObjDat_72352:dc.w 5 +ChildObjDat_72352: + dc.w 5 dc.l loc_72020 -ChildObjDat_72358:dc.w 6 +ChildObjDat_72358: + dc.w 6 dc.l loc_72020 -ChildObjDat_7235E:dc.w 3 +ChildObjDat_7235E: + dc.w 3 dc.l loc_72020 -ChildObjDat_72364:dc.w 0 +ChildObjDat_72364: + dc.w 0 dc.l loc_720C6 dc.w 8 -ChildObjDat_7236C:dc.w 2 +ChildObjDat_7236C: + dc.w 2 dc.l loc_720F2 dc.w $EC04 dc.l loc_720F2 @@ -151767,8 +151879,7 @@ byte_7239C: dc.b $10, 1 dc.b 0, 1 dc.b $FC, 0 Pal_ICZEndBoss: binclude "Levels/ICZ/Palettes/End Boss.bin" - even - + even byte_723D0: dc.b 0, 2 dc.b 4, 2 dc.b 0, 2 @@ -152343,12 +152454,15 @@ word_72968: dc.w $180 dc.b 8 dc.b 6 dc.b $98 -ChildObjDat_7296E:dc.w 0 +ChildObjDat_7296E: + dc.w 0 dc.l loc_72596 dc.w 0 -ChildObjDat_72976:dc.w 5 +ChildObjDat_72976: + dc.w 5 dc.l loc_725F4 -ChildObjDat_7297C:dc.w 5 +ChildObjDat_7297C: + dc.w 5 dc.l loc_725EE byte_72982: dc.b $F, 0 dc.b 1, 0 @@ -152362,9 +152476,8 @@ byte_72988: dc.b 7, 3 dc.b 7, 5 dc.b 4, 3 dc.b 4, $FC -Pal_LBZMiniboss: binclude "Levels/LBZ/Palettes/Miniboss.bin" - even - +Pal_LBZMiniboss:binclude "Levels/LBZ/Palettes/Miniboss.bin" + even ; --------------------------------------------------------------------------- Obj_LBZFinalBoss1: @@ -153661,14 +153774,16 @@ ObjDat3_7375A: dc.l Map_LBZDeathEggSmall dc.b 4 dc.b 4 dc.b 0 -ChildObjDat_73766:dc.w 2 +ChildObjDat_73766: + dc.w 2 dc.l loc_7308E dc.w 8 dc.l loc_730F8 dc.w $30 dc.l loc_73100 dc.w $5C -ChildObjDat_7377A:dc.w 3 +ChildObjDat_7377A: + dc.w 3 dc.l loc_73138 dc.w $F0FC dc.l loc_73138 @@ -153677,7 +153792,8 @@ ChildObjDat_7377A:dc.w 3 dc.w $F010 dc.l loc_73138 dc.w $1010 -ChildObjDat_73794:dc.w 5 +ChildObjDat_73794: + dc.w 5 dc.l loc_73138 dc.w $F0F8 dc.l loc_73138 @@ -153690,37 +153806,46 @@ ChildObjDat_73794:dc.w 5 dc.w $ECE0 dc.l loc_73138 dc.w $14E0 -ChildObjDat_737BA:dc.w 1 +ChildObjDat_737BA: + dc.w 1 dc.l loc_731CE dc.w 0 -ChildObjDat_737C2:dc.w 0 +ChildObjDat_737C2: + dc.w 0 dc.l loc_7321A dc.w $F800 dc.w 0 dc.l loc_7321A dc.w $800 -ChildObjDat_737D2:dc.w 0 +ChildObjDat_737D2: + dc.w 0 dc.l loc_7333A dc.w $2000 -ChildObjDat_737DA:dc.w 1 +ChildObjDat_737DA: + dc.w 1 dc.l loc_73364 dc.w $EC30 dc.l loc_73364 dc.w $1430 -ChildObjDat_737E8:dc.w 0 +ChildObjDat_737E8: + dc.w 0 dc.l loc_73396 dc.w 0 -ChildObjDat_737F0:dc.w 0 +ChildObjDat_737F0: + dc.w 0 dc.l loc_73164 dc.w $EC -ChildObjDat_737F8:dc.w 1 +ChildObjDat_737F8: + dc.w 1 dc.l loc_73192 dc.w $F000 dc.l loc_73192 dc.w $1000 -ChildObjDat_73806:dc.w 1 +ChildObjDat_73806: + dc.w 1 dc.l loc_72D24 -ChildObjDat_7380C:dc.w 6 +ChildObjDat_7380C: + dc.w 6 dc.l loc_72E9E dc.w 0 dc.l loc_72E9E @@ -153735,9 +153860,11 @@ ChildObjDat_7380C:dc.w 6 dc.w $DCF8 dc.l loc_72E9E dc.w $B01C -ChildObjDat_73838:dc.w 0 +ChildObjDat_73838: + dc.w 0 dc.l loc_72F4C -ChildObjDat_7383E:dc.w 0 +ChildObjDat_7383E: + dc.w 0 dc.l loc_72FB2 byte_73844: dc.b 2, 9 dc.b $A, $B @@ -153786,12 +153913,11 @@ byte_73874: dc.b 5, $C4 dc.b 1, $5A dc.b 1, $5A dc.b 1, 0 -Pal_LBZFinalBoss1: binclude "Levels/LBZ/Palettes/Final Boss 1.bin" - even - +Pal_LBZFinalBoss1: + binclude "Levels/LBZ/Palettes/Final Boss 1.bin" + even Pal_LBZEnding: binclude "Levels/LBZ/Palettes/Ending.bin" - even - + even word_738C6: dc.w $460, $6A0, $3900, $3B20 word_738CE: dc.w $5A0, $5A0, $3A20, $3A20 ; --------------------------------------------------------------------------- @@ -154608,37 +154734,45 @@ ObjDat3_74140: dc.l Map_LBZEndBoss dc.b 8 dc.b $E dc.b 0 -ChildObjDat_7414C:dc.w 1 +ChildObjDat_7414C: + dc.w 1 dc.l loc_73E0E dc.w $F8 dc.l loc_73EA2 dc.w $E890 -ChildObjDat_7415A:dc.w 0 +ChildObjDat_7415A: + dc.w 0 dc.l loc_73D74 dc.w $70E8 -ChildObjDat_74162:dc.w 2 +ChildObjDat_74162: + dc.w 2 dc.l loc_73C0A dc.w $E838 dc.l loc_73C0A dc.w $1838 dc.l loc_73C0A dc.w $38 -ChildObjDat_74176:dc.w 2 +ChildObjDat_74176: + dc.w 2 dc.l loc_73C82 dc.w $E8 dc.l loc_73C82 dc.w $F8 dc.l loc_73C82 dc.w 8 -ChildObjDat_7418A:dc.w 3 +ChildObjDat_7418A: + dc.w 3 dc.l loc_73CB0 -ChildObjDat_74190:dc.w 0 +ChildObjDat_74190: + dc.w 0 dc.l loc_73A92 dc.w 0 -ChildObjDat_74198:dc.w 0 +ChildObjDat_74198: + dc.w 0 dc.l loc_73BA0 dc.w $10 -ChildObjDat_741A0:dc.w $B +ChildObjDat_741A0: + dc.w $B dc.l loc_73BF6 dc.w $F8F8 dc.l loc_73BF6 @@ -154684,7 +154818,7 @@ byte_741F8: dc.b 5 dc.b 9 dc.b $F4 Pal_LBZEndBoss: binclude "Levels/LBZ/Palettes/End Boss.bin" - even + even Map_7421E: dc.w word_74222-Map_7421E dc.w word_74254-Map_7421E word_74222: dc.w 8 @@ -154699,7 +154833,6 @@ word_74222: dc.w 8 word_74254: dc.w 2 dc.b $EC, $07, 0, 0, $FF, $F8 dc.b $F4, $07, 0, 0, $FF, $F8 - ; --------------------------------------------------------------------------- Obj_LBZFinalBoss2: @@ -156013,7 +156146,8 @@ ObjDat3_75116: dc.l Map_LBZFinalBoss1 dc.b 4 dc.b $15 dc.b 0 -ChildObjDat_75122:dc.w 3 +ChildObjDat_75122: + dc.w 3 dc.l loc_749D0 dc.w $1424 dc.l loc_749AE @@ -156022,10 +156156,12 @@ ChildObjDat_75122:dc.w 3 dc.w $E8 dc.l loc_74BC0 dc.w $38EC -ChildObjDat_7513C:dc.w 0 +ChildObjDat_7513C: + dc.w 0 dc.l loc_74C00 dc.w $4CC -ChildObjDat_75144:dc.w 3 +ChildObjDat_75144: + dc.w 3 dc.l loc_74AFA dc.w $D6FE dc.l loc_74AFA @@ -156034,7 +156170,8 @@ ChildObjDat_75144:dc.w 3 dc.w 0 dc.l loc_74C24 dc.w $C0FE -ChildObjDat_7515E:dc.w 4 +ChildObjDat_7515E: + dc.w 4 dc.l loc_74D14 dc.w $F4D4 dc.l loc_74D14 @@ -156045,13 +156182,16 @@ ChildObjDat_7515E:dc.w 4 dc.w $F4FC dc.l loc_74D14 dc.w $14FC -ChildObjDat_7517E:dc.w 0 +ChildObjDat_7517E: + dc.w 0 dc.l loc_74D48 dc.w 8 -ChildObjDat_75186:dc.w 0 +ChildObjDat_75186: + dc.w 0 dc.l loc_74E12 dc.w $10 -ChildObjDat_7518E:dc.w 0 +ChildObjDat_7518E: + dc.w 0 dc.l loc_74E30 byte_75194: dc.b 9 dc.b 7 @@ -156075,9 +156215,9 @@ byte_7519C: dc.b 9 dc.b 5 dc.b 6 dc.b $F4 -Pal_LBZFinalBoss2: binclude "Levels/LBZ/Palettes/Final Boss 2.bin" - even - +Pal_LBZFinalBoss2: + binclude "Levels/LBZ/Palettes/Final Boss 2.bin" + even ; --------------------------------------------------------------------------- Obj_MHZMiniboss: @@ -157287,19 +157427,23 @@ word_75E7E: dc.w $300 dc.b 8 dc.b $18 dc.b $8B -ChildObjDat_75E84:dc.w 1 +ChildObjDat_75E84: + dc.w 1 dc.l loc_757C0 dc.w 0 dc.l loc_757C0 dc.w 0 dc.l loc_75B64 dc.w 0 -ChildObjDat_75E98:dc.w 0 +ChildObjDat_75E98: + dc.w 0 dc.l loc_75AD4 -ChildObjDat_75E9E:dc.w 0 +ChildObjDat_75E9E: + dc.w 0 dc.l loc_7583A dc.w $F8 -ChildObjDat_75EA6:dc.w 0 +ChildObjDat_75EA6: + dc.w 0 dc.l loc_759C0 dc.w $113 byte_75EAE: dc.b 0, $B @@ -157366,9 +157510,8 @@ byte_75F1C: dc.b $18, 3 dc.b $1B, 3 dc.b $1C, $B dc.b $FC, 0 -Pal_MHZMiniboss: binclude "Levels/MHZ/Palettes/Miniboss.bin" - even - +Pal_MHZMiniboss:binclude "Levels/MHZ/Palettes/Miniboss.bin" + even PLC_75F48: dc.w 0 dc.l ArtNem_BossExplosion dc.w $9A40 @@ -158230,11 +158373,14 @@ ObjDat3_7696A: dc.l Map_MHZEndBoss dc.b $80 dc.b 0 dc.b 0 -ChildObjDat_76976:dc.w 1 +ChildObjDat_76976: + dc.w 1 dc.l loc_76502 -ChildObjDat_7697C:dc.w 0 +ChildObjDat_7697C: + dc.w 0 dc.l loc_764D0 -ChildObjDat_76982:dc.w 3 +ChildObjDat_76982: + dc.w 3 dc.l loc_7665E dc.w $EC18 dc.l loc_7665E @@ -158243,14 +158389,18 @@ ChildObjDat_76982:dc.w 3 dc.w $11AF dc.l loc_764A0 dc.w $21F0 -ChildObjDat_7699C:dc.w 0 +ChildObjDat_7699C: + dc.w 0 dc.l Obj_RobotnikHead4 dc.w $E4 -ChildObjDat_769A4:dc.w 1 +ChildObjDat_769A4: + dc.w 1 dc.l loc_76604 -ChildObjDat_769AA:dc.w 3 +ChildObjDat_769AA: + dc.w 3 dc.l loc_76636 -ChildObjDat_769B0:dc.w 5 +ChildObjDat_769B0: + dc.w 5 dc.l loc_766CA byte_769B6: dc.b 5, 1 dc.b 6, 3 @@ -158269,9 +158419,7 @@ byte_769CE: dc.b 1, $D dc.b $E, $F dc.b $10, $FC Pal_MHZEndBoss: binclude "Levels/MHZ/Palettes/End Boss.bin" - even - - + even word_769F4: dc.w 0 dc.w $300 dc.w $3AA0 @@ -159168,34 +159316,40 @@ ObjDat3_773CA: dc.l Map_SOZMinibossDust dc.b 8 dc.b 0 dc.b 0 -ChildObjDat_773D6:dc.w 7 +ChildObjDat_773D6: + dc.w 7 dc.l loc_76F0E dc.w 0 -ChildObjDat_773DE:dc.w 0 +ChildObjDat_773DE: + dc.w 0 dc.l loc_77022 dc.w $40 -ChildObjDat_773E6:dc.w 1 +ChildObjDat_773E6: + dc.w 1 dc.l loc_76F46 dc.w $F4E4 dc.l loc_76F46 dc.w 0 -ChildObjDat_773F4:dc.w 1 +ChildObjDat_773F4: + dc.w 1 dc.l Obj_DecLevStartXGradual dc.w 0 dc.l Obj_IncLevEndXGradual dc.w 0 -ChildObjDat_77402:dc.w 5 +ChildObjDat_77402: + dc.w 5 dc.l loc_7706C dc.w $FC38 -ChildObjDat_7740A:dc.w 5 +ChildObjDat_7740A: + dc.w 5 dc.l loc_7706C dc.w 4 -Pal_SOZMinibossFade: binclude "Levels/SOZ/Palettes/Miniboss Fade.bin" - even - -Pal_SOZMinibossMain: binclude "Levels/SOZ/Palettes/Miniboss Main.bin" - even - +Pal_SOZMinibossFade: + binclude "Levels/SOZ/Palettes/Miniboss Fade.bin" + even +Pal_SOZMinibossMain: + binclude "Levels/SOZ/Palettes/Miniboss Main.bin" + even byte_77452: dc.b 0, 9 dc.b 0, $1F dc.b 9, 9 @@ -159241,10 +159395,9 @@ byte_7749B: dc.b 0, 3 dc.b 2, 5 dc.b 3, 7 dc.b $F4 -Map_SOZMiniboss: include "Levels/SOZ/Misc Object Data/Map - Miniboss.asm" - -Map_SOZMinibossDust: include "Levels/SOZ/Misc Object Data/Map - Miniboss Landing Dust.asm" - +Map_SOZMiniboss:include "Levels/SOZ/Misc Object Data/Map - Miniboss.asm" +Map_SOZMinibossDust: + include "Levels/SOZ/Misc Object Data/Map - Miniboss Landing Dust.asm" ; --------------------------------------------------------------------------- Obj_SOZEndBoss: @@ -160430,7 +160583,8 @@ ObjDat3_782EE: dc.l Map_SpriteMask dc.b $20 dc.b 4 dc.b 0 -ChildObjDat_782FA:dc.w 5 +ChildObjDat_782FA: + dc.w 5 dc.l loc_77CB4 dc.w $EC dc.l loc_77D1A @@ -160443,16 +160597,21 @@ ChildObjDat_782FA:dc.w 5 dc.w $24 dc.l Obj_RobotnikHead4 dc.w $E4 -ChildObjDat_78320:dc.w 2 +ChildObjDat_78320: + dc.w 2 dc.l loc_77AB8 -ChildObjDat_78326:dc.w 2 +ChildObjDat_78326: + dc.w 2 dc.l loc_77AB4 -ChildObjDat_7832C:dc.w 0 +ChildObjDat_7832C: + dc.w 0 dc.l loc_77DF8 dc.w $E8D2 -ChildObjDat_78334:dc.w $13 +ChildObjDat_78334: + dc.w $13 dc.l loc_77E7C -ChildObjDat_7833A:dc.w 1 +ChildObjDat_7833A: + dc.w 1 dc.l loc_77FCE dc.w $EC dc.l loc_77F3E @@ -160464,15 +160623,13 @@ byte_78348: dc.b 7 dc.b $C dc.b $F4 Map_SOZEndBoss: include "Levels/SOZ/Misc Object Data/Map - End Boss.asm" +Map_SOZEndBossBody: + include "Levels/SOZ/Misc Object Data/Map - End Boss Body.asm" -Map_SOZEndBossBody: include "Levels/SOZ/Misc Object Data/Map - End Boss Body.asm" - -Pal_SOZEndBoss1: binclude "Levels/SOZ/Palettes/End Boss 1.bin" - even - -Pal_SOZEndBoss2: binclude "Levels/SOZ/Palettes/End Boss 2.bin" - even - +Pal_SOZEndBoss1:binclude "Levels/SOZ/Palettes/End Boss 1.bin" + even +Pal_SOZEndBoss2:binclude "Levels/SOZ/Palettes/End Boss 2.bin" + even byte_784E0: dc.b 6, $10 dc.b 8, $10 dc.b $2B, 0 @@ -161292,16 +161449,21 @@ word_78D7E: dc.w $80 dc.b $14 dc.b $C dc.b 0 -ChildObjDat_78D84:dc.w $B +ChildObjDat_78D84: + dc.w $B dc.l loc_7880A -ChildObjDat_78D8A:dc.w $B +ChildObjDat_78D8A: + dc.w $B dc.l loc_787FE -ChildObjDat_78D90:dc.w 0 +ChildObjDat_78D90: + dc.w 0 dc.l loc_78A02 dc.w $800 -ChildObjDat_78D98:dc.w 0 +ChildObjDat_78D98: + dc.w 0 dc.l loc_78A28 -ChildObjDat_78D9E:dc.w $A +ChildObjDat_78D9E: + dc.w $A dc.l loc_78A70 dc.w $F4 dc.l loc_78A70 @@ -161346,14 +161508,15 @@ byte_78DF8: dc.b 4, 3 byte_78E05: dc.b 1, 6 dc.b 7, $B dc.b $FC -Pal_LRZMiniboss1: binclude "Levels/LRZ/Palettes/Miniboss 1.bin" - even - -Pal_LRZMiniboss2: binclude "Levels/LRZ/Palettes/Miniboss 2.bin" - even - -Pal_LRZMiniboss3: binclude "Levels/LRZ/Palettes/Miniboss 3.bin" - even +Pal_LRZMiniboss1: + binclude "Levels/LRZ/Palettes/Miniboss 1.bin" + even +Pal_LRZMiniboss2: + binclude "Levels/LRZ/Palettes/Miniboss 2.bin" + even +Pal_LRZMiniboss3: + binclude "Levels/LRZ/Palettes/Miniboss 3.bin" + even word_78EAA: palscriptptr .header, .data dc.w 0 .header palscripthdr Normal_palette_line_3+$02, 5, 2-1 @@ -161971,7 +162134,8 @@ ObjDat3_7960E: dc.l Map_LRZ3Debris dc.b $C dc.b 0 dc.b 0 -ChildObjDat_7961A:dc.w 7 +ChildObjDat_7961A: + dc.w 7 dc.l loc_792AC dc.w $F40C dc.l loc_792AC @@ -161988,11 +162152,14 @@ ChildObjDat_7961A:dc.w 7 dc.w $E804 dc.l loc_792AC dc.w $1804 -ChildObjDat_7964C:dc.w 0 +ChildObjDat_7964C: + dc.w 0 dc.l loc_79374 -ChildObjDat_79652:dc.w 3 +ChildObjDat_79652: + dc.w 3 dc.l loc_790AC -ChildObjDat_79658:dc.w 3 +ChildObjDat_79658: + dc.w 3 dc.l loc_79142 dc.w $F000 dc.l loc_79142 @@ -162001,14 +162168,18 @@ ChildObjDat_79658:dc.w 3 dc.w $F0 dc.l loc_79142 dc.w $10 -ChildObjDat_79672:dc.w 1 +ChildObjDat_79672: + dc.w 1 dc.l loc_791D4 -ChildObjDat_79678:dc.w 0 +ChildObjDat_79678: + dc.w 0 dc.l loc_79278 -ChildObjDat_7967E:dc.w 0 +ChildObjDat_7967E: + dc.w 0 dc.l loc_793A8 dc.w $18 -ChildObjDat_79686:dc.w $11 +ChildObjDat_79686: + dc.w $11 dc.l loc_794DE byte_7968C: dc.b 4, 0 dc.b 0, 1 @@ -162088,10 +162259,8 @@ byte_796B9: dc.b 6, 2 dc.b $EE, 0 dc.b $EE, 0 dc.b $AE -Pal_LRZBossFire: binclude "Levels/LRZ/Palettes/Boss Act Fire.bin" - even - - +Pal_LRZBossFire:binclude "Levels/LRZ/Palettes/Boss Act Fire.bin" + even ; --------------------------------------------------------------------------- Obj_LRZEndBoss: @@ -163050,24 +163219,30 @@ word_7A184: dc.w $4001 dc.b 8 dc.b 2 dc.b 0 -ChildObjDat_7A18C:dc.w 1 +ChildObjDat_7A18C: + dc.w 1 dc.l loc_79BE6 dc.w $EE dc.l loc_79C0C dc.w $EB01 -ChildObjDat_7A19A:dc.w 1 +ChildObjDat_7A19A: + dc.w 1 dc.l loc_79AAE dc.w $E8 dc.l loc_79B7E dc.w $C9 -ChildObjDat_7A1A8:dc.w 0 +ChildObjDat_7A1A8: + dc.w 0 dc.l loc_79BAC dc.w $10 -ChildObjDat_7A1B0:dc.w 0 +ChildObjDat_7A1B0: + dc.w 0 dc.l loc_79D28 -ChildObjDat_7A1B6:dc.w 0 +ChildObjDat_7A1B6: + dc.w 0 dc.l loc_79E6C -ChildObjDat_7A1BC:dc.w 9 +ChildObjDat_7A1BC: + dc.w 9 dc.l loc_79E9C byte_7A1C2: dc.b 2, 1 dc.b 2, 3 @@ -163094,8 +163269,7 @@ byte_7A1E9: dc.b 7, 4 dc.b 5, $FC dc.b 0 Pal_LRZEndBoss: binclude "Levels/LRZ/Palettes/End Boss.bin" - even - + even ; --------------------------------------------------------------------------- Obj_SSZGHZBoss: @@ -163524,14 +163698,16 @@ ObjDat3_7A678: dc.l Map_SSZGHZMisc dc.b 8 dc.b 0 dc.b $8F -ChildObjDat_7A684:dc.w 5 +ChildObjDat_7A684: + dc.w 5 dc.l loc_7A428 dc.l loc_7A4D0 dc.l loc_7A4D0 dc.l loc_7A4D0 dc.l loc_7A4D0 dc.l loc_7A514 -ChildObjDat_7A69E:dc.w 0 +ChildObjDat_7A69E: + dc.w 0 dc.l loc_7A558 dc.w $1E00 ; --------------------------------------------------------------------------- @@ -163968,7 +164144,8 @@ locret_7AB7E: ; End of function sub_7AB56 ; --------------------------------------------------------------------------- -ChildObjDat_7AB80:dc.w 1 +ChildObjDat_7AB80: + dc.w 1 dc.l loc_7AB8E dc.w $F4FC dc.l loc_7AB8E @@ -164664,10 +164841,8 @@ locret_7B21A: ; --------------------------------------------------------------------------- Ani_SSZMTZOrbs: include "Levels/SSZ/Misc Object Data/Anim - MTZOrbs.asm" - Pal_SSZMTZOrbs: binclude "Levels/SSZ/Palettes/MTZOrbs.bin" - even - + even ; --------------------------------------------------------------------------- Obj_SSZEndBoss: @@ -167738,43 +167913,55 @@ ObjDat3_7D468: dc.l Map_MechaSonicPieces dc.b 8 dc.b 0 dc.b 0 -ChildObjDat_7D474:dc.w 0 +ChildObjDat_7D474: + dc.w 0 dc.l loc_7C9BA -ChildObjDat_7D47A:dc.w 1 +ChildObjDat_7D47A: + dc.w 1 dc.l loc_7C902 -ChildObjDat_7D480:dc.b 0 +ChildObjDat_7D480: + dc.b 0 dc.b 0 dc.l loc_7C902 -ChildObjDat_7D486:dc.w 1 +ChildObjDat_7D486: + dc.w 1 dc.l loc_7C8FE -ChildObjDat_7D48C:dc.w 0 +ChildObjDat_7D48C: + dc.w 0 dc.l Obj_MechaSonic_Sparks -ChildObjDat_7D492:dc.w 0 +ChildObjDat_7D492: + dc.w 0 dc.l loc_7C886 dc.b $FC dc.b $C -ChildObjDat_7D49A:dc.w 0 +ChildObjDat_7D49A: + dc.w 0 dc.l loc_7C78E dc.w $14FC byte_7D4A2: dc.b 0 dc.b 0 dc.l loc_7C7D4 -ChildObjDat_7D4A8:dc.w 7 +ChildObjDat_7D4A8: + dc.w 7 dc.l loc_7C726 -ChildObjDat_7D4AE:dc.b 0 +ChildObjDat_7D4AE: + dc.b 0 dc.b 0 dc.l loc_7C744 dc.w $F9F8 dc.w 0 dc.l loc_7C818 -ChildObjDat_7D4BC:dc.w 0 +ChildObjDat_7D4BC: + dc.w 0 dc.l loc_7CCFE dc.w $23 word_7D4C4: dc.w 3 dc.l loc_7CE6C -ChildObjDat_7D4CA:dc.w $F +ChildObjDat_7D4CA: + dc.w $F dc.l loc_7CE90 -ChildObjDat_7D4D0:dc.b 0 +ChildObjDat_7D4D0: + dc.b 0 dc.b 2 dc.l loc_7CF14 DPLCPtr_7D4D6: dc.l ArtUnc_MechaSonic @@ -168025,11 +168212,12 @@ byte_7D6B3: dc.b 0, $B, $B, $D dc.b $A, 0, $A, 0 dc.b $A, 0, $A, 0 dc.b $F4 -Map_RoboshipPieces: include "Levels/SSZ/Misc Object Data/Map - Robotnik Ship Pieces.asm" - -Map_SSZMasterEmerald: include "Levels/SSZ/Misc Object Data/Map - Master Emerald.asm" - -Map_MechaSonicPieces: include "General/Sprites/Mecha Sonic/Map - Mecha Sonic Pieces.asm" +Map_RoboshipPieces: + include "Levels/SSZ/Misc Object Data/Map - Robotnik Ship Pieces.asm" +Map_SSZMasterEmerald: + include "Levels/SSZ/Misc Object Data/Map - Master Emerald.asm" +Map_MechaSonicPieces: + include "General/Sprites/Mecha Sonic/Map - Mecha Sonic Pieces.asm" word_7D842: palscriptptr .header, .data dc.w 0 @@ -169989,31 +170177,40 @@ word_7EF88: dc.w $100 dc.b $14 dc.b $23 dc.b 0 -ChildObjDat_7EF8E:dc.w 0 +ChildObjDat_7EF8E: + dc.w 0 dc.l loc_7E768 dc.w $FC -ChildObjDat_7EF96:dc.w 7 +ChildObjDat_7EF96: + dc.w 7 dc.l loc_7E80E -ChildObjDat_7EF9C:dc.w 7 +ChildObjDat_7EF9C: + dc.w 7 dc.l loc_7E916 -ChildObjDat_7EFA2:dc.w 0 +ChildObjDat_7EFA2: + dc.w 0 dc.l loc_7EAB6 -ChildObjDat_7EFA8:dc.w 1 +ChildObjDat_7EFA8: + dc.w 1 dc.l loc_7EACC dc.w $D800 dc.l loc_7EACC dc.w $2800 -ChildObjDat_7EFB6:dc.w 1 +ChildObjDat_7EFB6: + dc.w 1 dc.l loc_7E4CE -ChildObjDat_7EFBC:dc.w 0 +ChildObjDat_7EFBC: + dc.w 0 dc.l loc_7E74A dc.w 4 ChildObj_7EFC4: dc.w 0 dc.l loc_7E97E dc.w $1E -ChildObjDat_7EFCC:dc.w 1 +ChildObjDat_7EFCC: + dc.w 1 dc.l loc_7EA6C -ChildObjDat_7EFD2:dc.w 3 +ChildObjDat_7EFD2: + dc.w 3 dc.l loc_7EB0E dc.w $F000 dc.l loc_7EB0E @@ -170034,12 +170231,12 @@ byte_7EFF4: dc.b 0, 8 dc.b 7, 9 dc.b 7, $A dc.b 7, $FC -Pal_DEZMiniboss1: binclude "Levels/DEZ/Palettes/Miniboss 1.bin" - even - -Pal_DEZMiniboss2: binclude "Levels/DEZ/Palettes/Miniboss 2.bin" - even - +Pal_DEZMiniboss1: + binclude "Levels/DEZ/Palettes/Miniboss 1.bin" + even +Pal_DEZMiniboss2: + binclude "Levels/DEZ/Palettes/Miniboss 2.bin" + even word_7F03C: palscriptptr .header, .data dc.w 0 .header palscripthdr Normal_palette_line_2+$16, 3, 11-1 @@ -171305,30 +171502,37 @@ ObjDat3_7FC80: dc.l Map_DEZEndBoss dc.b $14 dc.b $14 dc.b 0 -ChildObjDat_7FC8C:dc.w 1 +ChildObjDat_7FC8C: + dc.w 1 dc.l loc_7F71C dc.w 0 dc.l loc_7F782 dc.w 0 -ChildObjDat_7FC9A:dc.w 0 +ChildObjDat_7FC9A: + dc.w 0 dc.l loc_7F336 -ChildObjDat_7FCA0:dc.w 1 +ChildObjDat_7FCA0: + dc.w 1 dc.l loc_7F64A dc.w $14 dc.l loc_7F398 dc.w $C -ChildObjDat_7FCAE:dc.w 0 +ChildObjDat_7FCAE: + dc.w 0 dc.l loc_7F6FA -ChildObjDat_7FCB4:dc.w 2 +ChildObjDat_7FCB4: + dc.w 2 dc.l loc_7F60A dc.w $F0F7 dc.l loc_7F60A dc.w $F4 dc.l loc_7F60A dc.w $10F7 -ChildObjDat_7FCC8:dc.w 5 +ChildObjDat_7FCC8: + dc.w 5 dc.l loc_7F7CE -ChildObjDat_7FCCE:dc.w 1 +ChildObjDat_7FCCE: + dc.w 1 dc.l loc_7F7F6 byte_7FCD4: dc.b 3, 0 dc.b 1, 2 @@ -171359,8 +171563,7 @@ byte_7FCEF: dc.b $16, 0 dc.b $1E, 1 dc.b $FC Pal_DEZEndBoss: binclude "Levels/DEZ/Palettes/End Boss.bin" - even - + even byte_7FD28: dc.b 0 dc.b 1 dc.b 2 @@ -173526,18 +173729,22 @@ ObjDat3_81304: dc.l Map_DEZFinalBossDebris dc.b $10 dc.b 0 dc.b 0 -ChildObjDat_81310:dc.w 1 +ChildObjDat_81310: + dc.w 1 dc.l loc_80B22 -ChildObjDat_81316:dc.w 2 +ChildObjDat_81316: + dc.w 2 dc.l loc_80CE2 dc.w $F0 dc.l loc_80CE2 dc.w $E0F0 dc.l loc_80CE2 dc.w $20F0 -ChildObjDat_8132A:dc.w 0 +ChildObjDat_8132A: + dc.w 0 dc.l loc_808AE -ChildObjDat_81330:dc.w 1 +ChildObjDat_81330: + dc.w 1 dc.l loc_804B0 dc.w $23 dc.l loc_806DA @@ -175793,7 +176000,6 @@ loc_82BAC: ; --------------------------------------------------------------------------- word_82BB4: dc.w 0, $38, $FFD4, $18 - off_82BBC: dc.w word_82BC4-word_82BB4 dc.w word_82BCC-word_82BB4 dc.w word_82BD4-word_82BB4 @@ -176496,35 +176702,48 @@ ObjDat3_83244: dc.l Map_DDZMissileAsteroid dc.b 8 dc.b $25 dc.b 0 -ChildObjDat_83250:dc.w 0 +ChildObjDat_83250: + dc.w 0 dc.l loc_8214A -ChildObjDat_83256:dc.w 0 +ChildObjDat_83256: + dc.w 0 dc.l loc_8218E -ChildObjDat_8325C:dc.w 0 +ChildObjDat_8325C: + dc.w 0 dc.l loc_81E3C -ChildObjDat_83262:dc.w 2 +ChildObjDat_83262: + dc.w 2 dc.l loc_81F36 -ChildObjDat_83268:dc.w 2 +ChildObjDat_83268: + dc.w 2 dc.l loc_81E82 -ChildObjDat_8326E:dc.w 0 +ChildObjDat_8326E: + dc.w 0 dc.l loc_81F14 -ChildObjDat_83274:dc.w 2 +ChildObjDat_83274: + dc.w 2 dc.l loc_81D72 -ChildObjDat_8327A:dc.w 0 +ChildObjDat_8327A: + dc.w 0 dc.l loc_81CC6 dc.w $1CFC -ChildObjDat_83282:dc.w 1 +ChildObjDat_83282: + dc.w 1 dc.l loc_81F7E -ChildObjDat_83288:dc.w 3 +ChildObjDat_83288: + dc.w 3 dc.l loc_825CA -ChildObjDat_8328E:dc.w 3 +ChildObjDat_8328E: + dc.w 3 dc.l loc_8249A -ChildObjDat_83294:dc.w 1 +ChildObjDat_83294: + dc.w 1 dc.l loc_82588 dc.w $800 dc.l loc_825BC dc.w $E800 -ChildObjDat_832A2:dc.w 0 +ChildObjDat_832A2: + dc.w 0 dc.l loc_826A0 byte_832A8: dc.b 3 dc.b $29 @@ -176563,8 +176782,8 @@ byte_832D9: dc.b $3D, $2F dc.b $3F, 9 dc.b $3E, 9 dc.b $FC -Map_DDZMissileAsteroid:include "Levels/DDZ/Misc Object Data/Map - Missile Asteroid.asm" - +Map_DDZMissileAsteroid: + include "Levels/DDZ/Misc Object Data/Map - Missile Asteroid.asm" ; --------------------------------------------------------------------------- Obj_HiddenMonitor: @@ -176630,7 +176849,8 @@ loc_83798: jmp (Sprite_OnScreen_Test).l ; --------------------------------------------------------------------------- word_8379E: dc.w $FFF2, $1C, $FF80, $C0 -ObjDat_HiddenMonitor: dc.l Map_Monitor +ObjDat_HiddenMonitor: + dc.l Map_Monitor dc.w ArtTile_Monitors dc.w $280 dc.b $E @@ -176762,7 +176982,8 @@ loc_838FA: move.w #-$200,$1A(a0) rts ; --------------------------------------------------------------------------- -FrameArray_EndSign: dc.b 0, 0, 1, 2 +FrameArray_EndSign: + dc.b 0, 0, 1, 2 ; --------------------------------------------------------------------------- Obj_EndSignResults: @@ -176816,7 +177037,8 @@ loc_83988: jsr Remove_From_TrackingSlot(pc) jmp Go_Delete_Sprite(pc) ; --------------------------------------------------------------------------- -PLC_SpikesSprings: dc.w 0 +PLC_SpikesSprings: + dc.w 0 dc.l ArtNem_SpikesSprings dc.w $9280 ; --------------------------------------------------------------------------- @@ -176967,59 +177189,68 @@ locret_83B02: ; End of function EndSign_CheckWall ; --------------------------------------------------------------------------- -ObjSlot_EndSigns: dc.w 0, $4AC, $C, 0 +ObjSlot_EndSigns: + dc.w 0, $4AC, $C, 0 dc.l Map_EndSigns dc.w $300 dc.b $18 dc.b $10 dc.b 0 dc.b 0 -ObjDat_SignpostStub: dc.l Map_SignpostStub +ObjDat_SignpostStub: + dc.l Map_SignpostStub dc.w $69E dc.w $300 dc.b 4 dc.b 8 dc.b 0 dc.b 0 -ObjDat_SignpostSparkle: dc.l Map_Ring +ObjDat_SignpostSparkle: + dc.l Map_Ring dc.w make_art_tile(ArtTile_Ring,1,0) dc.w $280 dc.b 8 dc.b 8 dc.b 4 dc.b 0 -Child1_EndSignStub:dc.w 0 +Child1_EndSignStub: + dc.w 0 dc.l Obj_SignpostStub dc.b 0, $18 -Child6_EndSignSparkle:dc.w 0 +Child6_EndSignSparkle: + dc.w 0 dc.l Obj_SignpostSparkle -Child6_EndSignScore:dc.w 0 +Child6_EndSignScore: + dc.w 0 dc.l Obj_EnemyScore -PLCPtr_EndSigns: dc.l ArtUnc_EndSigns +PLCPtr_EndSigns:dc.l ArtUnc_EndSigns dc.l DPLC_EndSigns -AniRaw_EndSigns1: dc.b 1, 0 +AniRaw_EndSigns1: + dc.b 1, 0 dc.b 4, 5 dc.b 6, 1 dc.b 4, 5 dc.b 6, 3 dc.b 4, 5 dc.b 6, $FC -AniRaw_EndSigns2: dc.b 1, 1 +AniRaw_EndSigns2: + dc.b 1, 1 dc.b 4, 5 dc.b 6, 2 dc.b 4, 5 dc.b 6, 3 dc.b 4, 5 dc.b 6, $FC -AniRaw_SignpostSparkle: dc.b 1, 4 +AniRaw_SignpostSparkle: + dc.b 1, 4 dc.b 5, 6 dc.b 7, $FC -DPLC_EndSigns: include "General/Sprites/Signpost/DPLC - End Signs.asm" - -Map_EndSigns: include "General/Sprites/Signpost/Map - End Signs.asm" - -Map_SignpostStub: include "General/Sprites/Signpost/Map - Signpost Stub.asm" - +DPLC_EndSigns: + include "General/Sprites/Signpost/DPLC - End Signs.asm" +Map_EndSigns: + include "General/Sprites/Signpost/Map - End Signs.asm" +Map_SignpostStub: + include "General/Sprites/Signpost/Map - Signpost Stub.asm" ; =============== S U B R O U T I N E ======================================= @@ -177136,7 +177367,8 @@ AfterBoss_MHZ: AfterBoss_None: rts ; --------------------------------------------------------------------------- -PLC_AfterMiniboss_AIZ: dc.w 6 +PLC_AfterMiniboss_AIZ: + dc.w 6 dc.l ArtNem_Monitors dc.w tiles_to_bytes(ArtTile_Monitors) dc.l ArtNem_AIZMisc2 @@ -177151,11 +177383,14 @@ PLC_AfterMiniboss_AIZ: dc.w 6 dc.w $8AC0 dc.l ArtNem_AIZCorkFloor2 dc.w $8800 -Pal_AfterMiniboss_AIZ: binclude "Levels/AIZ/Palettes/Miniboss After.bin" +Pal_AfterMiniboss_AIZ: + binclude "Levels/AIZ/Palettes/Miniboss After.bin" even -Pal_AfterMiniboss_ICZ: binclude "Levels/ICZ/Palettes/Miniboss After.bin" +Pal_AfterMiniboss_ICZ: + binclude "Levels/ICZ/Palettes/Miniboss After.bin" even -PLC_MonitorsSpikesSprings: dc.w 1 +PLC_MonitorsSpikesSprings: + dc.w 1 dc.l ArtNem_Monitors dc.w tiles_to_bytes(ArtTile_Monitors) dc.l ArtNem_SpikesSprings @@ -177170,7 +177405,8 @@ PLC_Monitors: dc.w 0 dc.w $B000 dc.l ArtNem_BlueFlicky dc.w $B240 -PLC_BossExplosion: dc.w 0 +PLC_BossExplosion: + dc.w 0 dc.l ArtNem_BossExplosion dc.w $A000 PLC_Explosion: dc.w 0 @@ -177179,7 +177415,8 @@ PLC_Explosion: dc.w 0 PLC_EggCapsule: dc.w 0 dc.l ArtNem_EggCapsule dc.w $9280 -PLC_RobotnikShip: dc.w 0 +PLC_RobotnikShip: + dc.w 0 dc.l ArtNem_RobotnikShip dc.w $A5C0 ; --------------------------------------------------------------------------- @@ -177199,7 +177436,8 @@ Obj_CreateBossExplosion: move.l (a1)+,$34(a0) jmp (a2) ; --------------------------------------------------------------------------- -CreateBossExpRoutineSet: dc.l Obj_Wait +CreateBossExpRoutineSet: + dc.l Obj_Wait dc.l Obj_BossExpControl1 dc.l Obj_WaitForParent dc.l Obj_BossExpControl1 @@ -177213,40 +177451,41 @@ CreateBossExpRoutineSet: dc.l Obj_Wait dc.l Obj_NormalExpControl dc.l Obj_WaitForParent dc.l Obj_BossExpControlOff -CreateBossExpParameterIndex: dc.w CreateBossExp_00-CreateBossExpParameterIndex - dc.w CreateBossExp_02-CreateBossExpParameterIndex - dc.w CreateBossExp_04-CreateBossExpParameterIndex - dc.w CreateBossExp_06-CreateBossExpParameterIndex - dc.w CreateBossExp_08-CreateBossExpParameterIndex - dc.w CreateBossExp_0A-CreateBossExpParameterIndex - dc.w CreateBossExp_0C-CreateBossExpParameterIndex - dc.w CreateBossExp_0E-CreateBossExpParameterIndex - dc.w CreateBossExp_10-CreateBossExpParameterIndex - dc.w CreateBossExp_12-CreateBossExpParameterIndex - dc.w CreateBossExp_14-CreateBossExpParameterIndex - dc.w CreateBossExp_16-CreateBossExpParameterIndex - dc.w CreateBossExp_18-CreateBossExpParameterIndex - dc.w CreateBossExp_1A-CreateBossExpParameterIndex - dc.w CreateBossExp_1C-CreateBossExpParameterIndex - dc.w CreateBossExp_1E-CreateBossExpParameterIndex - dc.w CreateBossExp_20-CreateBossExpParameterIndex -CreateBossExp_00: dc.b $20, $20, $20, 0 ; Explosion timer, X offset range, Y offset range, routine set -CreateBossExp_02: dc.b $28, $80, $80, $18 -CreateBossExp_04: dc.b $80, $20, $20, 8 -CreateBossExp_06: dc.b 4, $10, $10, 0 -CreateBossExp_08: dc.b 8, $20, $20, $10 -CreateBossExp_0A: dc.b $20, $20, $20, 0 -CreateBossExp_0C: dc.b $40, $80, $20, 0 -CreateBossExp_0E: dc.b $80, $40, $40, 8 -CreateBossExp_10: dc.b $20, $20, $20, $18 -CreateBossExp_12: dc.b $80, $20, $20, $20 -CreateBossExp_14: dc.b 8, $80, $20, $10 -CreateBossExp_16: dc.b $80, $80, $80, 8 -CreateBossExp_18: dc.b $80, $80, $80, $28 -CreateBossExp_1A: dc.b $80, $40, $40, $28 -CreateBossExp_1C: dc.b $80, $80, $40, 8 -CreateBossExp_1E: dc.b $80, $10, $10, 8 -CreateBossExp_20: dc.b $80, $20, $20, $30 +CreateBossExpParameterIndex: + dc.w CreateBossExp00-CreateBossExpParameterIndex + dc.w CreateBossExp02-CreateBossExpParameterIndex + dc.w CreateBossExp04-CreateBossExpParameterIndex + dc.w CreateBossExp06-CreateBossExpParameterIndex + dc.w CreateBossExp08-CreateBossExpParameterIndex + dc.w CreateBossExp0A-CreateBossExpParameterIndex + dc.w CreateBossExp0C-CreateBossExpParameterIndex + dc.w CreateBossExp0E-CreateBossExpParameterIndex + dc.w CreateBossExp10-CreateBossExpParameterIndex + dc.w CreateBossExp12-CreateBossExpParameterIndex + dc.w CreateBossExp14-CreateBossExpParameterIndex + dc.w CreateBossExp16-CreateBossExpParameterIndex + dc.w CreateBossExp18-CreateBossExpParameterIndex + dc.w CreateBossExp1A-CreateBossExpParameterIndex + dc.w CreateBossExp1C-CreateBossExpParameterIndex + dc.w CreateBossExp1E-CreateBossExpParameterIndex + dc.w CreateBossExp20-CreateBossExpParameterIndex +CreateBossExp00:dc.b $20, $20, $20, 0 ; Explosion timer, X offset range, Y offset range, routine set +CreateBossExp02:dc.b $28, $80, $80, $18 +CreateBossExp04:dc.b $80, $20, $20, 8 +CreateBossExp06:dc.b 4, $10, $10, 0 +CreateBossExp08:dc.b 8, $20, $20, $10 +CreateBossExp0A:dc.b $20, $20, $20, 0 +CreateBossExp0C:dc.b $40, $80, $20, 0 +CreateBossExp0E:dc.b $80, $40, $40, 8 +CreateBossExp10:dc.b $20, $20, $20, $18 +CreateBossExp12:dc.b $80, $20, $20, $20 +CreateBossExp14:dc.b 8, $80, $20, $10 +CreateBossExp16:dc.b $80, $80, $80, 8 +CreateBossExp18:dc.b $80, $80, $80, $28 +CreateBossExp1A:dc.b $80, $40, $40, $28 +CreateBossExp1C:dc.b $80, $80, $40, 8 +CreateBossExp1E:dc.b $80, $10, $10, 8 +CreateBossExp20:dc.b $80, $20, $20, $30 ; --------------------------------------------------------------------------- Obj_WaitForParent: @@ -177389,21 +177628,24 @@ Obj_BossExplosionOffsetAnim: jsr Animate_RawNoSSTMultiDelay(pc) jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -ObjDat_BossExplosion1: dc.l Map_BossExplosion +ObjDat_BossExplosion1: + dc.l Map_BossExplosion dc.w $8500 dc.w 0 dc.b $C dc.b $C dc.b 0 dc.b 0 -ObjDat_BossExplosion2: dc.l Map_BossExplosion +ObjDat_BossExplosion2: + dc.l Map_BossExplosion dc.w $84D2 dc.w 0 dc.b $C dc.b $C dc.b 0 dc.b 0 -AniRaw_BossExplosion: dc.b 0, 0 +AniRaw_BossExplosion: + dc.b 0, 0 dc.b 0, 1 dc.b 1, 1 dc.b 2, 2 @@ -177411,20 +177653,25 @@ AniRaw_BossExplosion: dc.b 0, 0 dc.b 4, 4 dc.b 5, 4 dc.b $F4, 0 -Child6_MakeBossExplosion1: dc.w 0 +Child6_MakeBossExplosion1: + dc.w 0 dc.l Obj_BossExplosion1 -Child6_MakeBossExplosion2: dc.w 0 +Child6_MakeBossExplosion2: + dc.w 0 dc.l Obj_BossExplosion2 -Child6_MakeBossExplosionOff: dc.w 0 +Child6_MakeBossExplosionOff: + dc.w 0 dc.l Obj_BossExplosionOffset -Child6_CreateBossExplosion:dc.w 0 +Child6_CreateBossExplosion: + dc.w 0 dc.l Obj_CreateBossExplosion dc.b 0 dc.b 0 -Child6_MakeNormalExplosion:dc.w 0 +Child6_MakeNormalExplosion: + dc.w 0 dc.l Obj_Explosion -Map_BossExplosion: include "General/Sprites/Boss Explosion/Map - Boss Explosion.asm" - +Map_BossExplosion: + include "General/Sprites/Boss Explosion/Map - Boss Explosion.asm" ; =============== S U B R O U T I N E ======================================= @@ -179073,7 +179320,8 @@ MoveSprite_AtAngleLookup: ; End of function MoveSprite_AtAngleLookup ; --------------------------------------------------------------------------- -AtAngle_LookupIndex: dc.w AtAngle_00_3F-AtAngle_LookupIndex +AtAngle_LookupIndex: + dc.w AtAngle_00_3F-AtAngle_LookupIndex dc.w AtAngle_40_7F-AtAngle_LookupIndex dc.w AtAngle_80_BF-AtAngle_LookupIndex dc.w AtAngle_C0_FF-AtAngle_LookupIndex @@ -179180,7 +179428,8 @@ MoveSprite_AngleYLookup: ; End of function MoveSprite_AngleYLookup ; --------------------------------------------------------------------------- -AngleY_LookupIndex: dc.w loc_84E16-AngleY_LookupIndex +AngleY_LookupIndex: + dc.w loc_84E16-AngleY_LookupIndex dc.w loc_84E1E-AngleY_LookupIndex dc.w loc_84E28-AngleY_LookupIndex dc.w loc_84E32-AngleY_LookupIndex @@ -179225,7 +179474,8 @@ MoveSprite_AngleXLookupOffset: ; End of function MoveSprite_AngleXLookupOffset ; --------------------------------------------------------------------------- -AngleX_LookupIndex: dc.w loc_84E58-AngleX_LookupIndex +AngleX_LookupIndex: + dc.w loc_84E58-AngleX_LookupIndex dc.w loc_84E60-AngleX_LookupIndex dc.w loc_84E6C-AngleX_LookupIndex dc.w loc_84E7C-AngleX_LookupIndex @@ -179720,7 +179970,8 @@ locret_852F2: ; End of function Set_IndexedVelocity ; --------------------------------------------------------------------------- -Obj_VelocityIndex: dc.w $FF00, $FF00 +Obj_VelocityIndex: + dc.w $FF00, $FF00 dc.w $100, $FF00 dc.w $FE00, $FE00 dc.w $200, $FE00 @@ -180912,7 +181163,8 @@ Obj_EndSignControl: ; End of function Obj_EndSignControl ; --------------------------------------------------------------------------- -PLC_EndSignStuff: dc.w 1 +PLC_EndSignStuff: + dc.w 1 dc.l ArtNem_SignpostStub dc.w $D3C0 dc.l ArtNem_Monitors @@ -181132,7 +181384,8 @@ Make_LevelSizeObj: ; End of function Make_LevelSizeObj ; --------------------------------------------------------------------------- -Child1_Act2LevelSize:dc.w 2 +Child1_Act2LevelSize: + dc.w 2 dc.l Obj_IncLevEndXGradual dc.w 0 dc.l Obj_DecLevStartYGradual @@ -182697,18 +182950,22 @@ word_86B56: dc.w $200 dc.b 4 dc.b 6 dc.b 0 -ChildObjDat_86B5C:dc.w 0 +ChildObjDat_86B5C: + dc.w 0 dc.l loc_8671C dc.w $DC -ChildObjDat_86B64:dc.w 0 +ChildObjDat_86B64: + dc.w 0 dc.l loc_8675C dc.w $24 -ChildObjDat_86B6C:dc.w 1 +ChildObjDat_86B6C: + dc.w 1 dc.l loc_86802 dc.w $ECDC dc.l loc_86802 dc.w $14DC -ChildObjDat_86B7A:dc.w 4 +ChildObjDat_86B7A: + dc.w 4 dc.l loc_867D6 dc.w $F8 dc.l loc_867D6 @@ -182719,7 +182976,8 @@ ChildObjDat_86B7A:dc.w 4 dc.w $E8F8 dc.l loc_867D6 dc.w $18F8 -ChildObjDat_86B9A:dc.w 8 +ChildObjDat_86B9A: + dc.w 8 dc.l loc_86820 dc.w $FC dc.l loc_86820 @@ -182757,7 +183015,6 @@ byte_86BF6: dc.b 0 dc.b 9 dc.b $FC Map_EggCapsule: include "General/Sprites/Robotnik/Map - Egg Capsule.asm" - ; --------------------------------------------------------------------------- Obj_FBZExitHall: @@ -182783,7 +183040,6 @@ word_86D22: dc.w $43F4 dc.b 1 dc.b 0 Map_FBZExitHall:include "Levels/FBZ/Misc Object Data/Map - Exit Hall.asm" - ; --------------------------------------------------------------------------- loc_86D4A: @@ -182877,7 +183133,8 @@ ObjDat3_86E1E: dc.l Map_Bloominator dc.b 8 dc.b 4 dc.b $98 -ChildObjDat_86E2A:dc.w 0 +ChildObjDat_86E2A: + dc.w 0 dc.l loc_86D4A dc.l ObjDat3_86E1E dc.l 0 @@ -183208,10 +183465,12 @@ ObjDat4_87110: dc.w 1 dc.b 8 dc.b 4 dc.b 0 -ChildObjDat_87122:dc.w 0 +ChildObjDat_87122: + dc.w 0 dc.l loc_86EFC dc.w $C08 -ChildObjDat_8712A:dc.w 0 +ChildObjDat_8712A: + dc.w 0 dc.l loc_86EFC dc.w $1008 DPLCPtr_87132: dc.l ArtUnc_AIZRhinobot @@ -183823,9 +184082,11 @@ ObjDat3_87674: dc.l Map_MonkeyDude dc.b $20 dc.b 6 dc.b $98 -ChildObjDat_87680:dc.w 4 +ChildObjDat_87680: + dc.w 4 dc.l loc_8724E -ChildObjDat_87686:dc.w 4 +ChildObjDat_87686: + dc.w 4 dc.l loc_87248 dc.w 0 dc.l loc_8724E @@ -183833,7 +184094,8 @@ ChildObjDat_87686:dc.w 4 dc.w 0 dc.l loc_87480 dc.w 0 -ChildObjDat_8769C:dc.w 0 +ChildObjDat_8769C: + dc.w 0 dc.l loc_86D4A dc.l ObjDat3_87674 dc.w 0 @@ -184050,10 +184312,12 @@ word_87892: dc.w $200 dc.b $10 dc.b 3 dc.b 0 -ChildObjDat_87898:dc.w 5 +ChildObjDat_87898: + dc.w 5 dc.l loc_8778C dc.w 0 -ChildObjDat_878A0:dc.w 0 +ChildObjDat_878A0: + dc.w 0 dc.l loc_8780A dc.w 0 byte_878A8: dc.b 3, 2 @@ -184205,7 +184469,8 @@ ObjDat3_879EC: dc.l Map_Blastoid dc.b 4 dc.b 2 dc.b $98 -ChildObjDat_879F8:dc.w 0 +ChildObjDat_879F8: + dc.w 0 dc.l loc_86D4A dc.l ObjDat3_879EC dc.l byte_87A1F @@ -184402,7 +184667,8 @@ word_87BAC: dc.w $280 dc.b $C dc.b 3 dc.b 0 -ChildObjDat_87BB2:dc.w 0 +ChildObjDat_87BB2: + dc.w 0 dc.l Obj_Buggernaught_Baby dc.w $2000 byte_87BBA: dc.b 0, 0 @@ -184749,16 +185015,20 @@ ObjDat3_87EDA: dc.l Map_TurboSpikerHidden dc.b $10 dc.b 0 dc.b 0 -ChildObjDat_87EE6:dc.w 0 +ChildObjDat_87EE6: + dc.w 0 dc.l loc_87D4C dc.w $400 -ChildObjDat_87EEE:dc.w 0 +ChildObjDat_87EEE: + dc.w 0 dc.l loc_87DAE dc.w $FC14 -ChildObjDat_87EF6:dc.w 0 +ChildObjDat_87EF6: + dc.w 0 dc.l loc_87E1A dc.w 4 -ChildObjDat_87EFE:dc.w 4 +ChildObjDat_87EFE: + dc.w 4 dc.l loc_87E48 dc.w $4F8 dc.l loc_87E48 @@ -184769,7 +185039,8 @@ ChildObjDat_87EFE:dc.w 4 dc.w $F800 dc.l loc_87E48 dc.w $800 -ChildObjDat_87F1E:dc.w 0 +ChildObjDat_87F1E: + dc.w 0 dc.l loc_87E90 dc.w 0 byte_87F26: dc.b 5, 0 @@ -184787,8 +185058,8 @@ byte_87F37: dc.b 1, 8 dc.b $B, $C dc.b $D, $F4 dc.b 0 -Map_TurboSpikerHidden: include "General/Sprites/Turbo Spiker/Map - Turbo Spiker Hidden.asm" - +Map_TurboSpikerHidden: + include "General/Sprites/Turbo Spiker/Map - Turbo Spiker Hidden.asm" ; --------------------------------------------------------------------------- Obj_MegaChopper: @@ -185898,15 +186169,18 @@ ObjDat3_88B20: dc.l Map_MGZMovingSpikePlatform dc.b $30 dc.b 0 dc.b 0 -ChildObjDat_88B2C:dc.w 1 +ChildObjDat_88B2C: + dc.w 1 dc.l loc_887F6 dc.w $E4EA dc.l loc_887F6 dc.w $1CEA -ChildObjDat_88B3A:dc.w 0 +ChildObjDat_88B3A: + dc.w 0 dc.l loc_88820 dc.w 0 -ChildObjDat_88B42:dc.w 4 +ChildObjDat_88B42: + dc.w 4 dc.l loc_8894C dc.w 0 dc.l loc_8894C @@ -185917,7 +186191,8 @@ ChildObjDat_88B42:dc.w 4 dc.w $E4EA dc.l loc_8894C dc.w $1CEA -ChildObjDat_88B62:dc.w 0 +ChildObjDat_88B62: + dc.w 0 dc.l loc_88864 dc.w 0 dc.b 0, 5 @@ -185931,8 +186206,8 @@ byte_88B73: dc.b 5, 4 byte_88B79: dc.b 0, 0 dc.b 1, 2 dc.b $FC -Map_MGZMinibossSpires: include "Levels/MGZ/Misc Object Data/Map - Miniboss Spires.asm" - +Map_MGZMinibossSpires: + include "Levels/MGZ/Misc Object Data/Map - Miniboss Spires.asm" PLC_88B88: dc.w 1 dc.l ArtNem_BossExplosion dc.w $A000 @@ -186235,14 +186510,16 @@ ObjDat3_88E12: dc.l Map_Spiker dc.b 4 dc.b 5 dc.b $98 -ChildObjDat_88E1E:dc.w 2 +ChildObjDat_88E1E: + dc.w 2 dc.l loc_88C7C dc.w $F00C dc.l loc_88C7C dc.w $100C dc.l loc_88D30 dc.w $F4 -ChildObjDat_88E32:dc.w 0 +ChildObjDat_88E32: + dc.w 0 dc.l loc_86D4A dc.l ObjDat3_88E12 dc.l byte_88E5C @@ -186413,7 +186690,8 @@ word_88F96: dc.w $200 dc.b 4 dc.b 5 dc.b 0 -ChildObjDat_88F9C:dc.w 0 +ChildObjDat_88F9C: + dc.w 0 dc.l loc_88F50 dc.w $F7F5 byte_88FA4: dc.b 0, 0 @@ -186593,10 +186871,12 @@ ObjDat3_8913C: dc.l Map_Clamer dc.b 8 dc.b 9 dc.b $98 -ChildObjDat_89148:dc.w 0 +ChildObjDat_89148: + dc.w 0 dc.l loc_8908C dc.w $F8 -ChildObjDat_89150:dc.w 0 +ChildObjDat_89150: + dc.w 0 dc.l loc_86D4A dc.l ObjDat3_8913C dc.l 0 @@ -186827,10 +187107,12 @@ word_8934C: dc.w $280 dc.b 8 dc.b 6 dc.b $98 -ChildObjDat_89352:dc.w 0 +ChildObjDat_89352: + dc.w 0 dc.l loc_89256 dc.w 0 -ChildObjDat_8935A:dc.w 1 +ChildObjDat_8935A: + dc.w 1 dc.l loc_892A0 dc.w 0 byte_89362: dc.b 9, $10 @@ -186970,7 +187252,8 @@ word_89466: dc.w $200 dc.b 4 dc.b 5 dc.b 0 -ChildObjDat_8946C:dc.w 1 +ChildObjDat_8946C: + dc.w 1 dc.l loc_893E8 dc.w $10 dc.l loc_8942E @@ -187251,10 +187534,12 @@ ObjDat3_8971A: dc.l Map_Blaster dc.b 4 dc.b 7 dc.b 0 -ChildObjDat_89726:dc.w 0 +ChildObjDat_89726: + dc.w 0 dc.l loc_89626 dc.w $E5EA -ChildObjDat_8972E:dc.w 0 +ChildObjDat_8972E: + dc.w 0 dc.l loc_86D4A dc.l ObjDat3_8970E dc.l byte_89771 @@ -187263,7 +187548,8 @@ ChildObjDat_8972E:dc.w 0 dc.b $E0 dc.w $FE00 dc.w $FC00 -ChildObjDat_89746:dc.w 0 +ChildObjDat_89746: + dc.w 0 dc.l loc_86D4A dc.l ObjDat3_8971A dc.l byte_89775 @@ -187290,7 +187576,6 @@ byte_89775: dc.b 2, 7 dc.b $A, $FC dc.b 0 Map_Blaster: include "General/Sprites/Blaster/Map - Blaster.asm" - ; --------------------------------------------------------------------------- Obj_TechnoSqueek: @@ -187572,7 +187857,8 @@ word_89B1E: dc.w $280 dc.b 4 dc.b 2 dc.b 0 -ChildObjDat_89B24:dc.w 0 +ChildObjDat_89B24: + dc.w 0 dc.l loc_899B4 dc.w $1404 byte_89B2C: dc.b 0, 0 @@ -187617,8 +187903,8 @@ byte_89B68: dc.b 3, 5 byte_89B73: dc.b 3, 7 dc.b 8, 9 dc.b $FC -Map_TechnoSqueek:include "General/Sprites/Technosqueek/Map - Technosqueek.asm" - +Map_TechnoSqueek: + include "General/Sprites/Technosqueek/Map - Technosqueek.asm" ; --------------------------------------------------------------------------- Obj_FBZEggPrison: @@ -187896,10 +188182,12 @@ ObjDat3_89E9C: dc.l Map_Ring dc.b 8 dc.b 0 dc.b $47 -ChildObjDat_89EA8:dc.w 0 +ChildObjDat_89EA8: + dc.w 0 dc.l loc_89C5C dc.w $DC -ChildObjDat_89EB0:dc.w 4 +ChildObjDat_89EB0: + dc.w 4 dc.l loc_89D78 dc.w $F8 dc.l loc_89D78 @@ -187910,7 +188198,8 @@ ChildObjDat_89EB0:dc.w 4 dc.w $E8F8 dc.l loc_89D78 dc.w $18F8 -ChildObjDat_89ED0:dc.w 4 +ChildObjDat_89ED0: + dc.w 4 dc.l loc_89CE2 dc.w $FC dc.l loc_89CE2 @@ -187921,7 +188210,8 @@ ChildObjDat_89ED0:dc.w 4 dc.w $1CFC dc.l loc_89CE2 dc.w $E4FC -ChildObjDat_89EF0:dc.w 5 +ChildObjDat_89EF0: + dc.w 5 dc.l loc_89D44 dc.w $F8FC dc.l loc_89D44 @@ -187934,12 +188224,14 @@ ChildObjDat_89EF0:dc.w 5 dc.w $18FC dc.l loc_89D44 dc.w $E8FC -ChildObjDat_89F16:dc.w 1 +ChildObjDat_89F16: + dc.w 1 dc.l loc_89650 dc.w $E8FC dc.l loc_89650 dc.w $18FC -ChildObjDat_89F24:dc.w 1 +ChildObjDat_89F24: + dc.w 1 dc.l loc_89A5A dc.w $F8FC dc.l loc_89A5A @@ -188518,11 +188810,14 @@ ObjDat3_8A41E: dc.l Map_ICZPlatforms dc.b $C dc.b $1C dc.b 0 -ChildObjDat_8A42A:dc.w 5 +ChildObjDat_8A42A: + dc.w 5 dc.l loc_8A1D4 -ChildObjDat_8A430:dc.w 8 +ChildObjDat_8A430: + dc.w 8 dc.l loc_8A20C -ChildObjDat_8A436:dc.w 0 +ChildObjDat_8A436: + dc.w 0 dc.l loc_8A304 dc.w $F010 byte_8A43E: dc.b 2, $23 @@ -188760,7 +189055,8 @@ word_8A632: dc.w $280 dc.b $40 dc.b $D dc.b 0 -ChildObjDat_8A638:dc.w 0 +ChildObjDat_8A638: + dc.w 0 dc.l loc_8A604 dc.w 0 ; --------------------------------------------------------------------------- @@ -189158,7 +189454,6 @@ locret_8AA2E: ; --------------------------------------------------------------------------- word_8AA30: dc.w $FFF0, $20, $FFD8, $50 - ; =============== S U B R O U T I N E ======================================= @@ -189237,22 +189532,28 @@ ObjDat3_8AAB6: dc.l Map_ICZPlatforms dc.b 4 dc.b $C dc.b 0 -ChildObjDat_8AAC2:dc.w 0 +ChildObjDat_8AAC2: + dc.w 0 dc.l loc_8A71C dc.w $C -ChildObjDat_8AACA:dc.w 0 +ChildObjDat_8AACA: + dc.w 0 dc.l loc_8A71C dc.w $F4 -ChildObjDat_8AAD2:dc.w 0 +ChildObjDat_8AAD2: + dc.w 0 dc.l loc_8A748 dc.w $30 -ChildObjDat_8AADA:dc.w 0 +ChildObjDat_8AADA: + dc.w 0 dc.l loc_8A748 dc.w $D0 -ChildObjDat_8AAE2:dc.w 0 +ChildObjDat_8AAE2: + dc.w 0 dc.l loc_8A7AE dc.w 0 -ChildObjDat_8AAEA:dc.w $B +ChildObjDat_8AAEA: + dc.w $B dc.l loc_8A8DC dc.w $F4F8 dc.l loc_8A8DC @@ -189466,10 +189767,12 @@ word_8ACEE: dc.w $280 dc.b $10 dc.b $A dc.b 0 -ChildObjDat_8ACF4:dc.w 2 +ChildObjDat_8ACF4: + dc.w 2 dc.l loc_8AB86 dc.w 0 -ChildObjDat_8ACFC:dc.w 3 +ChildObjDat_8ACFC: + dc.w 3 dc.l loc_8AB86 dc.w 0 ; --------------------------------------------------------------------------- @@ -190010,21 +190313,25 @@ word_8B15E: dc.w $300 dc.b 8 dc.b $27 dc.b 0 -ChildObjDat_8B164:dc.w 2 +ChildObjDat_8B164: + dc.w 2 dc.l loc_8AEA4 dc.w 8 dc.l loc_8AED4 dc.w $1CF8 dc.l loc_8AEEA dc.w 0 -ChildObjDat_8B178:dc.w 7 +ChildObjDat_8B178: + dc.w 7 dc.l loc_8AF3E -ChildObjDat_8B17E:dc.w 1 +ChildObjDat_8B17E: + dc.w 1 dc.l Obj_ICZSnowdust dc.w $1C10 dc.l Obj_ICZSnowdust dc.w $1410 -ChildObjDat_8B18C:dc.w 0 +ChildObjDat_8B18C: + dc.w 0 dc.l Obj_ICZSnowdust dc.w $1C10 ; --------------------------------------------------------------------------- @@ -190132,7 +190439,8 @@ ObjDat3_8B286: dc.l Map_ICZPlatforms dc.b 4 dc.b $F dc.b 0 -ChildObjDat_8B292:dc.w $B +ChildObjDat_8B292: + dc.w $B dc.l loc_8B230 dc.w $27 dc.b $F, $27 @@ -190217,10 +190525,12 @@ ObjDat3_8B350: dc.l Map_ICZWallAndColumn dc.b $10 dc.b 5 dc.b 0 -ChildObjDat_8B35C:dc.w 0 +ChildObjDat_8B35C: + dc.w 0 dc.l loc_8B330 dc.w $C -ChildObjDat_8B364:dc.w 0 +ChildObjDat_8B364: + dc.w 0 dc.l loc_8B330 dc.w $F4 ; --------------------------------------------------------------------------- @@ -190319,7 +190629,8 @@ word_8B478: dc.w $C3B6 dc.b $20 dc.b $12 dc.b 0 -ChildObjDat_8B480:dc.w $B +ChildObjDat_8B480: + dc.w $B dc.l loc_8B432 dc.w $F8 dc.l loc_8B432 @@ -190401,7 +190712,8 @@ ObjDat3_8B53E: dc.l Map_ICZPlatforms dc.b $10 dc.b 4 dc.b $D7 -ChildObjDat_8B54A:dc.w $B +ChildObjDat_8B54A: + dc.w $B dc.l loc_8B230 ; --------------------------------------------------------------------------- @@ -190716,7 +191028,8 @@ word_8B844: dc.w $43B6 dc.b 8 dc.b 9 dc.b 0 -ChildObjDat_8B84C:dc.w 5 +ChildObjDat_8B84C: + dc.w 5 dc.l loc_8B768 dc.w $F8F8 dc.l loc_8B768 @@ -190729,12 +191042,14 @@ ChildObjDat_8B84C:dc.w 5 dc.w $800 dc.l loc_8B768 dc.w $1800 -ChildObjDat_8B872:dc.w 1 +ChildObjDat_8B872: + dc.w 1 dc.l loc_8B768 dc.w $F8 dc.l loc_8B768 dc.w 8 -ChildObjDat_8B880:dc.w 3 +ChildObjDat_8B880: + dc.w 3 dc.l loc_8B768 dc.w $F8F8 dc.l loc_8B768 @@ -191029,7 +191344,8 @@ word_8BAC8: dc.w $43B6 dc.b $40 dc.b 8 dc.b 0 -ChildObjDat_8BAD0:dc.w 1 +ChildObjDat_8BAD0: + dc.w 1 dc.l loc_8B8C2 dc.w $C800 dc.l loc_8B8C2 @@ -191343,7 +191659,8 @@ ObjDat3_8BDEE: dc.l Map_ICZSnowdust dc.b $18 dc.b 0 dc.b 0 -ChildObjDat_8BDFA:dc.w 0 +ChildObjDat_8BDFA: + dc.w 0 dc.l Obj_ICZSnowdust dc.w $C DPLCPtr_8BE02: dc.l ArtUnc_Penguinator @@ -191361,7 +191678,6 @@ byte_8BE16: dc.b 3, 8 dc.b 4, 3 dc.b $F4 byte_8BE1F: dc.b 0, 0, 0, 1, 2, 3, 4, 5, 4, 3, 2, 1, 0, $F4, 0 - ; --------------------------------------------------------------------------- Obj_StarPointer: @@ -191512,7 +191828,8 @@ word_8BF9A: dc.w $280 dc.b 8 dc.b 1 dc.b $8B -ChildObjDat_8BFA0:dc.w 3 +ChildObjDat_8BFA0: + dc.w 3 dc.l loc_8BEB0 dc.w 0 byte_8BFA8: dc.b 3, 1, 2, 3, $F4, 0 @@ -191823,14 +192140,16 @@ ObjDat3_8C27E: dc.l Map_SnaleBlaster dc.b 4 dc.b 9 dc.b $98 -ChildObjDat_8C28A:dc.w 2 +ChildObjDat_8C28A: + dc.w 2 dc.l loc_8C17C dc.w $F800 dc.l loc_8C17C dc.w $F807 dc.l loc_8C11E dc.w $F804 -ChildObjDat_8C29E:dc.w 0 +ChildObjDat_8C29E: + dc.w 0 dc.l loc_86D4A dc.l ObjDat3_8C27E dc.l 0 @@ -191893,7 +192212,6 @@ Obj_Ribot: jsr off_8C2FA(pc,d1.w) jmp Sprite_CheckDeleteTouch(pc) ; --------------------------------------------------------------------------- - off_8C2FA: dc.w loc_8C2FE-off_8C2FA dc.w loc_8C34E-off_8C2FA ; --------------------------------------------------------------------------- @@ -192218,29 +192536,36 @@ word_8C5DC: dc.w $200 dc.b 4 dc.b 6 dc.b 0 -ChildObjDat_8C5E2:dc.w 1 +ChildObjDat_8C5E2: + dc.w 1 dc.l loc_8C370 dc.w $F40C dc.l loc_8C370 dc.w $C0C -ChildObjDat_8C5F0:dc.w 1 +ChildObjDat_8C5F0: + dc.w 1 dc.l loc_8C370 dc.w $E800 dc.l loc_8C370 dc.w $1800 -ChildObjDat_8C5FE:dc.w 0 +ChildObjDat_8C5FE: + dc.w 0 dc.l loc_8C370 dc.w $F0 -ChildObjDat_8C606:dc.w 2 +ChildObjDat_8C606: + dc.w 2 dc.l loc_8C502 dc.w $F4 -ChildObjDat_8C60E:dc.w 2 +ChildObjDat_8C60E: + dc.w 2 dc.l loc_8C502 dc.w $C00 -ChildObjDat_8C616:dc.w 2 +ChildObjDat_8C616: + dc.w 2 dc.l loc_8C502 dc.w $F400 -ChildObjDat_8C61E:dc.w 2 +ChildObjDat_8C61E: + dc.w 2 dc.l loc_8C502 dc.w 0 byte_8C626: dc.b 7 @@ -192354,7 +192679,8 @@ word_8C6FE: dc.w $280 dc.b 8 dc.b 1 dc.b $8B -ChildObjDat_8C704:dc.w 3 +ChildObjDat_8C704: + dc.w 3 dc.l loc_8C692 dc.w $10 dc.l loc_8C692 @@ -192570,16 +192896,20 @@ word_8C906: dc.w $558 dc.b $50 dc.b 0 dc.b $A0 -ChildObjDat_8C90E:dc.w 0 +ChildObjDat_8C90E: + dc.w 0 dc.l loc_8C7DE dc.w $C -ChildObjDat_8C916:dc.w 0 +ChildObjDat_8C916: + dc.w 0 dc.l loc_8C8C6 dc.w $FC54 -ChildObjDat_8C91E:dc.w 0 +ChildObjDat_8C91E: + dc.w 0 dc.l loc_8C8C6 dc.w $454 -ChildObjDat_8C926:dc.w 0 +ChildObjDat_8C926: + dc.w 0 dc.l loc_8C8C6 dc.w $54 byte_8C92E: dc.b 7 @@ -193482,21 +193812,26 @@ ObjDat3_8D23C: dc.l Map_LBZMinibossBox dc.b 8 dc.b 0 dc.b 0 -ChildObjDat_8D254:dc.w 0 +ChildObjDat_8D254: + dc.w 0 dc.l loc_8CD5C dc.w $34 -ChildObjDat_8D25C:dc.w 9 +ChildObjDat_8D25C: + dc.w 9 dc.l loc_8CE34 dc.w 0 -ChildObjDat_8D264:dc.w 0 +ChildObjDat_8D264: + dc.w 0 dc.l Obj_LBZMiniboss dc.w 0 -ChildObjDat_8D26C:dc.w 1 +ChildObjDat_8D26C: + dc.w 1 dc.l loc_8D046 dc.w $E000 dc.l loc_8D046 dc.w $2000 -ChildObjDat_8D27A:dc.w 4 +ChildObjDat_8D27A: + dc.w 4 dc.l loc_8D0AE byte_8D280: dc.b 0 dc.b 6 @@ -194202,13 +194537,16 @@ word_8D9BA: dc.w $280 dc.b 8 dc.b 5 dc.b $D8 -ChildObjDat_8D9C0:dc.w 0 +ChildObjDat_8D9C0: + dc.w 0 dc.l loc_8D602 dc.w $10 -ChildObjDat_8D9C8:dc.w 0 +ChildObjDat_8D9C8: + dc.w 0 dc.l loc_8D6E6 dc.w $F2F4 -ChildObjDat_8D9D0:dc.w 0 +ChildObjDat_8D9D0: + dc.w 0 dc.l loc_8D6E6 dc.w $EF4 byte_8D9D8: dc.b 2 @@ -194238,7 +194576,6 @@ byte_8D9E7: dc.b 2 dc.b $FC dc.b 0 Map_Madmole: include "General/Sprites/Madmole/Map - Madmole.asm" - ; --------------------------------------------------------------------------- Obj_Mushmeanie: @@ -194440,7 +194777,8 @@ word_8DCD6: dc.w $456D dc.b 8 dc.b 0 dc.b 0 -ChildObjDat_8DCDE:dc.w 0 +ChildObjDat_8DCDE: + dc.w 0 dc.l loc_8DC14 dc.w 0 byte_8DCE6: dc.b 1 @@ -194462,7 +194800,6 @@ byte_8DCED: dc.b 3 dc.b 0 dc.b $F4 Map_Mushmeanie: include "General/Sprites/Mushmeanie/Map - Mushmeanie.asm" - ; --------------------------------------------------------------------------- Obj_Dragonfly: @@ -194709,10 +195046,12 @@ word_8DFA8: dc.w $280 dc.b 4 dc.b 5 dc.b $98 -ChildObjDat_8DFAE:dc.w 0 +ChildObjDat_8DFAE: + dc.w 0 dc.l loc_8DF3C dc.w 0 -ChildObjDat_8DFB6:dc.w 6 +ChildObjDat_8DFB6: + dc.w 6 dc.l loc_8DE26 byte_8DFBC: dc.b 0, 7, 9, 8, 9, $FC byte_8DFC2: dc.b 3 @@ -194740,7 +195079,6 @@ byte_8DFCE: dc.b 3 dc.b 0 dc.b $FC Map_Dragonfly: include "General/Sprites/Dragonfly/Map - Dragonfly.asm" - ; --------------------------------------------------------------------------- Obj_Butterdroid: @@ -194800,10 +195138,10 @@ byte_8E124: dc.b 7 dc.b 2 dc.b 1 dc.b $FC -Map_Butterdroid:include "General/Sprites/Butterdroid/Map - Butterdroid.asm" - -DPLC_Butterdroid: include "General/Sprites/Butterdroid/DPLC - Butterdroid.asm" - +Map_Butterdroid: + include "General/Sprites/Butterdroid/Map - Butterdroid.asm" +DPLC_Butterdroid: + include "General/Sprites/Butterdroid/DPLC - Butterdroid.asm" ; --------------------------------------------------------------------------- Obj_Cluckoid: @@ -195094,10 +195432,12 @@ ObjDat3_8E3F6: dc.l Map_MHZPollen dc.b 8 dc.b 0 dc.b 0 -ChildObjDat_8E402:dc.w 0 +ChildObjDat_8E402: + dc.w 0 dc.l loc_8E2BE dc.w $1C -ChildObjDat_8E40A:dc.w 0 +ChildObjDat_8E40A: + dc.w 0 dc.l loc_8E236 DPLCPtr_8E410: dc.l ArtUnc_Cluckoid dc.l DPLC_Cluckoid @@ -195165,12 +195505,12 @@ word_8E438: dc.w $10, $28 dc.w $50, $48 dc.w $60, $48 dc.w $80, $68 -DPLC_Cluckoid: include "General/Sprites/Cluckoid/DPLC - Cluckoid.asm" - -Map_CluckoidArrow: include "General/Sprites/Cluckoid/Map - Cluckoid Arrow.asm" - -Map_Cluckoid: include "General/Sprites/Cluckoid/Map - Cluckoid.asm" - +DPLC_Cluckoid: + include "General/Sprites/Cluckoid/DPLC - Cluckoid.asm" +Map_CluckoidArrow: + include "General/Sprites/Cluckoid/Map - Cluckoid Arrow.asm" +Map_Cluckoid: + include "General/Sprites/Cluckoid/Map - Cluckoid.asm" ; --------------------------------------------------------------------------- Obj_Skorp: @@ -195624,7 +195964,8 @@ word_8EA54: dc.w $180 dc.b $14 dc.b 3 dc.b 0 -ChildObjDat_8EA5A:dc.w 5 +ChildObjDat_8EA5A: + dc.w 5 dc.l loc_8E744 byte_8EA60: dc.b 9, 1, 0, 1, 2, $FC ; --------------------------------------------------------------------------- @@ -195893,12 +196234,15 @@ word_8ED60: dc.w $280 dc.b 8 dc.b 1 dc.b 0 -ChildObjDat_8ED66:dc.w 4 +ChildObjDat_8ED66: + dc.w 4 dc.l loc_8EB8E -ChildObjDat_8ED6C:dc.w 7 +ChildObjDat_8ED6C: + dc.w 7 dc.l loc_8EBE2 dc.w $F8 -ChildObjDat_8ED74:dc.w 2 +ChildObjDat_8ED74: + dc.w 2 dc.l loc_8EC74 dc.w 4 dc.l loc_8EC74 @@ -196228,13 +196572,15 @@ ObjDat3_8F066: dc.l Map_Rockn dc.b $10 dc.b 4 dc.b 0 -ChildObjDat_8F072:dc.w 0 +ChildObjDat_8F072: + dc.w 0 dc.l loc_8EF3C dc.w $F8 -ChildObjDat_8F07A:dc.w 0 +ChildObjDat_8F07A: + dc.w 0 dc.l loc_8F00E byte_8F080: dc.b 8, 0, 1, 0, 2, $FC -Map_Rockn:include "General/Sprites/Rockn/Map - Rock'n.asm" +Map_Rockn: include "General/Sprites/Rockn/Map - Rock'n.asm" ; ' <-- lol TextWrangler; it assumes ' is the string delimiter for all assembly files; I don't want ; my screen to be filled with pink @@ -196775,10 +197121,12 @@ ObjDat3_8F63A: dc.l Map_SOZGhosts dc.b $20 dc.b 0 dc.b 0 -ChildObjDat_8F646:dc.w 0 +ChildObjDat_8F646: + dc.w 0 dc.l loc_8F438 dc.w $DC -ChildObjDat_8F64E:dc.w 5 +ChildObjDat_8F64E: + dc.w 5 dc.l loc_8F45E dc.w $F8FC dc.l loc_8F45E @@ -196791,7 +197139,8 @@ ChildObjDat_8F64E:dc.w 5 dc.w $18FC dc.l loc_8F45E dc.w $E8FC -ChildObjDat_8F674:dc.w 0 +ChildObjDat_8F674: + dc.w 0 dc.l loc_8F11E DPLCPtr_8F67A: dc.l ArtUnc_SOZGhosts dc.l DPLC_SOZGhosts @@ -196846,7 +197195,6 @@ byte_8F6D4: dc.b 8, 7 dc.b 9, 7 dc.b $F8, $E4 DPLC_SOZGhosts: include "General/Sprites/SOZ Ghosts/DPLC - SOZ Ghosts.asm" - ; --------------------------------------------------------------------------- Obj_Fireworm: @@ -197117,10 +197465,12 @@ word_8FA08: dc.w $180 dc.b 8 dc.b 3 dc.b $98 -ChildObjDat_8FA0E:dc.w 0 +ChildObjDat_8FA0E: + dc.w 0 dc.l loc_8F7A4 dc.w $F8 -ChildObjDat_8FA16:dc.w 3 +ChildObjDat_8FA16: + dc.w 3 dc.l loc_8F8F0 dc.w 0 dc.l loc_8F8F0 @@ -197129,7 +197479,8 @@ ChildObjDat_8FA16:dc.w 3 dc.w 0 dc.l loc_8F8F0 dc.w 0 -ChildObjDat_8FA30:dc.w 0 +ChildObjDat_8FA30: + dc.w 0 dc.l loc_8F95C dc.w $F2 DPLCPtr_8FA38: dc.l ArtUnc_Fireworm @@ -197149,12 +197500,12 @@ byte_8FA4D: dc.b 3, 7 byte_8FA56: dc.b 3, 4 dc.b 4, 5 dc.b 6, $F4 -Map_FirewormSegments: include "General/Sprites/Fireworm/Map - Fireworm Segments.asm" - -DPLC_Fireworm: include "General/Sprites/Fireworm/DPLC - Fireworm.asm" - -Map_Fireworm: include "General/Sprites/Fireworm/Map - Fireworm.asm" - +Map_FirewormSegments: + include "General/Sprites/Fireworm/Map - Fireworm Segments.asm" +DPLC_Fireworm: + include "General/Sprites/Fireworm/DPLC - Fireworm.asm" +Map_Fireworm: + include "General/Sprites/Fireworm/Map - Fireworm.asm" ; --------------------------------------------------------------------------- Obj_Iwamodoki: @@ -197248,7 +197599,8 @@ word_8FBD0: dc.w $280 dc.b 4 dc.b 0 dc.b $98 -ChildObjDat_8FBD6:dc.w 3 +ChildObjDat_8FBD6: + dc.w 3 dc.l loc_8FB90 dc.l word_8FBD0 dc.l byte_8FC8B @@ -197334,8 +197686,7 @@ byte_8FC8B: dc.b 0 dc.b 9 dc.b $FC dc.b 0 -Map_Iwamodoki:include "General/Sprites/Iwamodoki/Map - Iwamodoki.asm" - +Map_Iwamodoki: include "General/Sprites/Iwamodoki/Map - Iwamodoki.asm" ; --------------------------------------------------------------------------- Obj_Toxomister: @@ -197626,10 +197977,12 @@ word_9003A: dc.w 0 dc.b 8 dc.b 2 dc.b 0 -ChildObjDat_90040:dc.w 0 +ChildObjDat_90040: + dc.w 0 dc.l loc_8FDBA dc.w $F408 -ChildObjDat_90048:dc.w 6 +ChildObjDat_90048: + dc.w 6 dc.l loc_8FE8E dc.w $F404 dc.l loc_8FE8E @@ -197671,7 +198024,6 @@ byte_90085: dc.b 7 dc.b $F4 dc.b 0 Map_Toxomister: include "General/Sprites/Toxomister/Map - Toxomister.asm" - ; --------------------------------------------------------------------------- Obj_LRZRockCrusher: @@ -198136,7 +198488,8 @@ ObjDat3_9061A: dc.l Map_LRZRockDebris dc.b 4 dc.b 0 dc.b 0 -ChildObjDat_90626:dc.w 7 +ChildObjDat_90626: + dc.w 7 dc.l loc_9039A dc.w $E41C dc.l loc_9039A @@ -198153,10 +198506,12 @@ ChildObjDat_90626:dc.w 7 dc.w $DCDC dc.l loc_9039A dc.w $24DC -ChildObjDat_90658:dc.w 1 +ChildObjDat_90658: + dc.w 1 dc.l loc_904BA dc.w $C -Child7_ChangeLevSize:dc.w 3 +Child7_ChangeLevSize: + dc.w 3 dc.l Obj_DecLevStartYGradual dc.w 0 dc.l Obj_IncLevEndYGradual @@ -198165,11 +198520,12 @@ Child7_ChangeLevSize:dc.w 3 dc.w 0 dc.l Obj_IncLevEndXGradual dc.w 0 -ChildObjDat_9067A:dc.w 0 +ChildObjDat_9067A: + dc.w 0 dc.l Obj_SpriteMask -Pal_LRZRockCrusher: binclude "Levels/LRZ/Palettes/Rock Crusher.bin" - even - +Pal_LRZRockCrusher: + binclude "Levels/LRZ/Palettes/Rock Crusher.bin" + even ; --------------------------------------------------------------------------- Obj_HPZMasterEmerald: @@ -199085,46 +199441,34 @@ ObjDat3_90FD8: dc.l Map_HPZChaosEmeralds dc.b 4 dc.b 0 dc.b 0 -ChildObjDat_90FE4:dc.w 0 +ChildObjDat_90FE4: + dc.w 0 dc.l loc_90734 word_90FEA: dc.w 0 dc.l loc_90D78 -ChildObjDat_90FF0:dc.w 6 +ChildObjDat_90FF0: + dc.w 6 dc.l loc_90DFC byte_90FF6: dc.b 0, $1D, $1F, $1D, $20, $1D, $21, $1D, $22, $1D, $23, $1D, $24, $1D, $F4, 0 - -Map_HPZEmeraldMisc: include "Levels/HPZ/Misc Object Data/Map - Emerald Misc Art.asm" - -Map_HPZChaosEmeralds: include "Levels/HPZ/Misc Object Data/Map - Chaos Emeralds.asm" - +Map_HPZEmeraldMisc: + include "Levels/HPZ/Misc Object Data/Map - Emerald Misc Art.asm" +Map_HPZChaosEmeralds: + include "Levels/HPZ/Misc Object Data/Map - Chaos Emeralds.asm" off_914CE: dc.l off_914EE dc.w 1 - - ; this data here seems completely broken - dc.b 0 - dc.b $F - dc.b 1 - dc.b 9 - dc.b 2 - dc.b 9 - dc.b 3 - dc.b 7 - dc.b 4 - dc.b 7 - dc.b 5 - dc.b 5 - dc.b 6 - dc.b 5 - dc.b 5 - dc.b 5 - dc.b 4 - dc.b 7 - dc.b 3 - dc.b 7 - dc.b 2 - dc.b 9 - dc.b 1 - dc.b 9 + ; this data here seems completely broken + dc.w $F + dc.w $109 + dc.w $209 + dc.w $307 + dc.w $407 + dc.w $505 + dc.w $605 + dc.w $505 + dc.w $407 + dc.w $307 + dc.w $209 + dc.w $109 dc.w $FFFC off_914EE: dc.w word_914FC-off_914EE dc.w word_91500-off_914EE @@ -199600,18 +199944,21 @@ word_919CA: dc.w $280 dc.b 4 dc.b 7 dc.b 0 -ChildObjDat_919D0:dc.w 1 +ChildObjDat_919D0: + dc.w 1 dc.l loc_916A8 dc.b $F4 dc.b $1C dc.l loc_916EE dc.b $E4 dc.b $FC -ChildObjDat_919DE:dc.w 0 +ChildObjDat_919DE: + dc.w 0 dc.l loc_91756 dc.b $B dc.b $FC -ChildObjDat_919E6:dc.w 0 +ChildObjDat_919E6: + dc.w 0 dc.l loc_917C0 ; --------------------------------------------------------------------------- @@ -199850,10 +200197,12 @@ word_91C26: dc.w $200 dc.b $10 dc.b 1 dc.b $9A -ChildObjDat_91C2C:dc.w 0 +ChildObjDat_91C2C: + dc.w 0 dc.l loc_91AD2 dc.w $14 -ChildObjDat_91C34:dc.w 0 +ChildObjDat_91C34: + dc.w 0 dc.l loc_91BA8 dc.w 0 ; --------------------------------------------------------------------------- @@ -200140,7 +200489,8 @@ word_91EE6: dc.w $280 dc.b $80 dc.b 2 dc.b $98 -ChildObjDat_91EEC:dc.w 3 +ChildObjDat_91EEC: + dc.w 3 dc.l loc_91D52 dc.w $14 dc.l loc_91D52 @@ -200212,8 +200562,7 @@ LevelLoadBlock: levartptrs $48, $48, $3F, ArtKosM_HPZ_Primary, ArtKosM_HPZ_Secondary, HPZ_16x16_Primary_Kos, HPZ_16x16_Secondary_Kos, HPZ_128x128_Primary_Kos, HPZ_128x128_Secondary_Kos ; SPECIAL STAGE HUB ; --------------------------------------------------------------------------- - -Offs_PLC: dc.w PLC_00-Offs_PLC ; Unused +Offs_PLC: dc.w PLC_00-Offs_PLC ; Unused dc.w PLC_01-Offs_PLC ; Sonic life icon/universal level graphics dc.w PLC_02-Offs_PLC ; Explosions + Squirrel/Flicky dc.w PLC_03-Offs_PLC ; Game Over text @@ -200235,7 +200584,7 @@ Offs_PLC: dc.w PLC_00-Offs_PLC ; Unused dc.w PLC_12_13-Offs_PLC ; MGZ 1 dc.w PLC_14_15-Offs_PLC ; MGZ 2 dc.w PLC_14_15-Offs_PLC ; MGZ 2 - dc.w PLC_16_17_18_19-Offs_PLC ; CNZ + dc.w PLC_16_17_18_19-Offs_PLC ; CNZ dc.w PLC_16_17_18_19-Offs_PLC dc.w PLC_16_17_18_19-Offs_PLC dc.w PLC_16_17_18_19-Offs_PLC @@ -201010,123 +201359,123 @@ sub_92C88: DebugOffs: include "Levels/Misc/Debug list pointers.asm" Debug_AIZ1: dbglistheader - include "Levels/AIZ/Debug/Act 1.asm" + include "Levels/AIZ/Debug/Act 1.asm" Debug_AIZ1_End Debug_AIZ2: dbglistheader - include "Levels/AIZ/Debug/Act 2.asm" + include "Levels/AIZ/Debug/Act 2.asm" Debug_AIZ2_End Debug_HCZ: dbglistheader - include "Levels/HCZ/Debug/Main.asm" + include "Levels/HCZ/Debug/Main.asm" Debug_HCZ_End Debug_MGZ: dbglistheader - include "Levels/MGZ/Debug/Main.asm" + include "Levels/MGZ/Debug/Main.asm" Debug_MGZ_End Debug_CNZ: dbglistheader - include "Levels/CNZ/Debug/Main.asm" + include "Levels/CNZ/Debug/Main.asm" Debug_CNZ_End Debug_FBZ1: dbglistheader - include "Levels/FBZ/Debug/Act 1.asm" + include "Levels/FBZ/Debug/Act 1.asm" Debug_FBZ1_End Debug_FBZ2: dbglistheader - include "Levels/FBZ/Debug/Act 2.asm" + include "Levels/FBZ/Debug/Act 2.asm" Debug_FBZ2_End Debug_ICZ1: dbglistheader - include "Levels/ICZ/Debug/Act 1.asm" + include "Levels/ICZ/Debug/Act 1.asm" Debug_ICZ1_End Debug_ICZ2: dbglistheader - include "Levels/ICZ/Debug/Act 2.asm" + include "Levels/ICZ/Debug/Act 2.asm" Debug_ICZ2_End Debug_LBZ1: dbglistheader - include "Levels/LBZ/Debug/Act 1.asm" + include "Levels/LBZ/Debug/Act 1.asm" Debug_LBZ1_End Debug_LBZ2: dbglistheader - include "Levels/LBZ/Debug/Act 2.asm" + include "Levels/LBZ/Debug/Act 2.asm" Debug_LBZ2_End Debug_MHZ: dbglistheader - include "Levels/MHZ/Debug/Main.asm" + include "Levels/MHZ/Debug/Main.asm" Debug_MHZ_End Debug_SOZ1: dbglistheader - include "Levels/SOZ/Debug/Act 1.asm" + include "Levels/SOZ/Debug/Act 1.asm" Debug_SOZ1_End Debug_SOZ2: dbglistheader - include "Levels/SOZ/Debug/Act 2.asm" + include "Levels/SOZ/Debug/Act 2.asm" Debug_SOZ2_End Debug_LRZ1: dbglistheader - include "Levels/LRZ/Debug/Act 1.asm" + include "Levels/LRZ/Debug/Act 1.asm" Debug_LRZ1_End Debug_LRZ2: dbglistheader - include "Levels/LRZ/Debug/Act 2.asm" + include "Levels/LRZ/Debug/Act 2.asm" Debug_LRZ2_End Debug_SSZ: dbglistheader - include "Levels/SSZ/Debug/Main.asm" + include "Levels/SSZ/Debug/Main.asm" Debug_SSZ_End Debug_DEZ1: dbglistheader - include "Levels/DEZ/Debug/Act 1.asm" + include "Levels/DEZ/Debug/Act 1.asm" Debug_DEZ1_End Debug_DEZ2: dbglistheader - include "Levels/DEZ/Debug/Act 2.asm" + include "Levels/DEZ/Debug/Act 2.asm" Debug_DEZ2_End Debug_DDZ1: dbglistheader - include "Levels/DDZ/Debug/Main.asm" + include "Levels/DDZ/Debug/Main.asm" Debug_DDZ1_End Debug_DDZ2: dbglistheader - include "Levels/DEZ/Debug/Boss.asm" + include "Levels/DEZ/Debug/Boss.asm" Debug_DDZ2_End Debug_Ending: dbglistheader - include "Levels/SSZ/Debug/Ending.asm" + include "Levels/SSZ/Debug/Ending.asm" Debug_Ending_End Debug_ALZ: dbglistheader - include "Levels/ALZ/Debug/Main.asm" + include "Levels/ALZ/Debug/Main.asm" Debug_ALZ_End Debug_BPZ: dbglistheader - include "Levels/BPZ/Debug/Main.asm" + include "Levels/BPZ/Debug/Main.asm" Debug_BPZ_End Debug_DPZ: dbglistheader - include "Levels/DPZ/Debug/Main.asm" + include "Levels/DPZ/Debug/Main.asm" Debug_DPZ_End Debug_CGZ: dbglistheader - include "Levels/CGZ/Debug/Main.asm" + include "Levels/CGZ/Debug/Main.asm" Debug_CGZ_End Debug_EMZ: dbglistheader - include "Levels/EMZ/Debug/Main.asm" + include "Levels/EMZ/Debug/Main.asm" Debug_EMZ_End Debug_Pachinko_Special: dbglistheader - include "Levels/Pachinko/Debug/Main.asm" + include "Levels/Pachinko/Debug/Main.asm" Debug_Pachinko_Special_End Debug_HPZ: dbglistheader - include "Levels/HPZ/Debug/Main.asm" + include "Levels/HPZ/Debug/Main.asm" Debug_HPZ_End Debug_Gumball_Special: dbglistheader - include "Levels/Gumball/Debug/Main.asm" + include "Levels/Gumball/Debug/Main.asm" Debug_Gumball_Special_End Sprite_Listing3:include "Levels/Misc/Object pointers - SK Set 1.asm" @@ -201139,21 +201488,19 @@ Sprite_ListingK:include "Levels/Misc/Object pointers - SK Set 2.asm" endif AngleArray: binclude "Levels/Misc/angles.bin" - even - + even HeightMaps: binclude "Levels/Misc/Height Maps.bin" - even + even HeightMapsRot: binclude "Levels/Misc/Height Maps Rotated.bin" - even + even - if Sonic3_Complete=0 + if Sonic3_Complete=0 Noninterleaved_Solid_Flag EQU 0 - else + else Noninterleaved_Solid_Flag EQU (1<<31) - endif + endif -SolidIndexes: - dc.l Solid_AIZ1+1+Noninterleaved_Solid_Flag +SolidIndexes: dc.l Solid_AIZ1+1+Noninterleaved_Solid_Flag dc.l Solid_AIZ2+1+Noninterleaved_Solid_Flag dc.l Solid_HCZ1+1+Noninterleaved_Solid_Flag dc.l Solid_HCZ2+1+Noninterleaved_Solid_Flag @@ -201201,35 +201548,37 @@ SolidIndexes: dc.l Solid_HPZ dc.l Solid_HPZ dc.l Solid_HPZ +Solid_FBZ: binclude "Levels/FBZ/Collision/1.bin" + even +Solid_MHZ: binclude "Levels/MHZ/Collision/1.bin" + even +Solid_Unknown: binclude "Levels/Misc/Unknown Collision.bin" + even +Solid_SOZ: binclude "Levels/SOZ/Collision/1.bin" + even +Solid_LRZ1: binclude "Levels/LRZ/Collision/1.bin" + even +Solid_LRZ2: binclude "Levels/LRZ/Collision/2.bin" + even +Solid_SSZ1: binclude "Levels/SSZ/Collision/1.bin" + even +Solid_SSZ2: binclude "Levels/SSZ/Collision/2.bin" + even +Solid_DEZ: binclude "Levels/DEZ/Collision/1.bin" + even +Solid_DDZ: binclude "Levels/DDZ/Collision/1.bin" + even +Solid_Pachinko_Special: + binclude "Levels/Pachinko/Collision/1.bin" + even +Solid_Slots_Special: + binclude "Levels/Slots/Collision/1.bin" + even -Solid_FBZ: binclude "Levels/FBZ/Collision/1.bin" - even -Solid_MHZ: binclude "Levels/MHZ/Collision/1.bin" - even -Solid_Unknown: binclude "Levels/Misc/Unknown Collision.bin" - even -Solid_SOZ: binclude "Levels/SOZ/Collision/1.bin" - even -Solid_LRZ1: binclude "Levels/LRZ/Collision/1.bin" - even -Solid_LRZ2: binclude "Levels/LRZ/Collision/2.bin" - even -Solid_SSZ1: binclude "Levels/SSZ/Collision/1.bin" - even -Solid_SSZ2: binclude "Levels/SSZ/Collision/2.bin" - even -Solid_DEZ: binclude "Levels/DEZ/Collision/1.bin" - even -Solid_DDZ: binclude "Levels/DDZ/Collision/1.bin" - even -Solid_Pachinko_Special: binclude "Levels/Pachinko/Collision/1.bin" - even -Solid_Slots_Special: binclude "Levels/Slots/Collision/1.bin" - even -Solid_LRZBoss: binclude "Levels/LRZ/Collision/3.bin" - even -Solid_HPZ: binclude "Levels/HPZ/Collision/1.bin" - even +Solid_LRZBoss: binclude "Levels/LRZ/Collision/3.bin" + even +Solid_HPZ: binclude "Levels/HPZ/Collision/1.bin" + even LevelPtrs: dc.l Layout_AIZ1 ; 0 dc.l Layout_AIZ2 ; 1 dc.l Layout_HCZ1 ; 2 @@ -201279,484 +201628,517 @@ LevelPtrs: dc.l Layout_AIZ1 ; 0 dc.l Layout_DEZBoss ; 46 dc.l Layout_HPZ ; 47 Layout_FBZ1: binclude "Levels/FBZ/Layout/1.bin" - even + even Layout_FBZ2: binclude "Levels/FBZ/Layout/2.bin" - even + even Layout_MHZ1: binclude "Levels/MHZ/Layout/1.bin" - even + even Layout_MHZ2: binclude "Levels/MHZ/Layout/2.bin" - even + even Layout_SOZ1: binclude "Levels/SOZ/Layout/1.bin" - even + even Layout_SOZ2: binclude "Levels/SOZ/Layout/2.bin" - even + even Layout_LRZ1: binclude "Levels/LRZ/Layout/1.bin" - even + even Layout_LRZ2: binclude "Levels/LRZ/Layout/2.bin" - even + even Layout_SSZ1: binclude "Levels/SSZ/Layout/1.bin" - even + even Layout_SSZ2: binclude "Levels/SSZ/Layout/2.bin" - even + even Layout_DEZ1: binclude "Levels/DEZ/Layout/1.bin" - even + even Layout_DEZ2: binclude "Levels/DEZ/Layout/2.bin" - even + even Layout_DDZ: binclude "Levels/DDZ/Layout/1.bin" - even -Layout_Pachinko_Special:binclude "Levels/Pachinko/Layout/1.bin" - even -Layout_Slots_Special:binclude "Levels/Slots/Layout/1.bin" - even + even +Layout_Pachinko_Special: + binclude "Levels/Pachinko/Layout/1.bin" + even +Layout_Slots_Special: + binclude "Levels/Slots/Layout/1.bin" + even + Layout_LRZBoss: binclude "Levels/LRZ/Layout/3.bin" - even + even Layout_HPZ: binclude "Levels/HPZ/Layout/1.bin" - even - + even Layout_DEZBoss: binclude "Levels/DEZ/Layout/3.bin" - even -MHZ_Custom_Layout:binclude "Levels/MHZ/Layout/3.bin" - even -PalPoint: - include "Levels/Misc/Palette pointers.asm" + even +MHZ_Custom_Layout: + binclude "Levels/MHZ/Layout/3.bin" + even +PalPoint: include "Levels/Misc/Palette pointers.asm" Pal_S2Sega: binclude "General/Sprites/S2Menu/Palettes/Sega Screen.bin" - even - + even Pal_S2Title: binclude "General/Sprites/S2Menu/Palettes/Title Screen SK.bin" - even - + even Pal_S2LevSel: binclude "General/Sprites/S2Menu/Palettes/Proto Level Select SK.bin" - even - + even Pal_SonicTails: binclude "General/Sprites/Sonic/Palettes/SonicAndTails.bin" - even - + even Pal_S2Menu: binclude "General/Sprites/S2Menu/Palettes/Main.bin" - even - + even Pal_Knuckles: binclude "General/Sprites/Knuckles/Palettes/Main.bin" - even - + even Pal_AIZIntro: binclude "Levels/AIZ/Palettes/Intro.bin" - even - + even Pal_AIZ: binclude "Levels/AIZ/Palettes/Main.bin" - even - + even Pal_AIZFire: binclude "Levels/AIZ/Palettes/Fire.bin" - even - + even Pal_AIZBoss: binclude "Levels/AIZ/Palettes/Boss.bin" - even - + even Pal_AIZ_Water: binclude "Levels/AIZ/Palettes/Water.bin" - even - + even Pal_AIZ2_Water: binclude "Levels/AIZ/Palettes/Act 2 Water.bin" - even - + even Pal_HCZ1: binclude "Levels/HCZ/Palettes/1.bin" - even - + even Pal_HCZ2: binclude "Levels/HCZ/Palettes/2.bin" - even - + even Pal_HCZ1_Water: binclude "Levels/HCZ/Palettes/Act 1 Water.bin" - even - + even Pal_HCZ2_Water: binclude "Levels/HCZ/Palettes/Act 2 Water.bin" - even - + even Pal_MGZ: binclude "Levels/MGZ/Palettes/Main.bin" - even - - + even Pal_CNZ: binclude "Levels/CNZ/Palettes/Main.bin" - even - + even Pal_CNZ_Water: binclude "Levels/CNZ/Palettes/Water.bin" - even - + even Pal_FBZ1: binclude "Levels/FBZ/Palettes/FBZ1.bin" - even - + even Pal_FBZ2: binclude "Levels/FBZ/Palettes/FBZ2.bin" - even - + even Pal_ICZ1: binclude "Levels/ICZ/Palettes/1.bin" - even - + even Pal_ICZ2: binclude "Levels/ICZ/Palettes/2.bin" - even - - + even Pal_ICZ2_Water: binclude "Levels/ICZ/Palettes/Act 2 Water.bin" - even - + even Pal_LBZ1: binclude "Levels/LBZ/Palettes/1.bin" - even - - + even Pal_LBZ2: binclude "Levels/LBZ/Palettes/2.bin" - even - + even Pal_LBZ_Water: binclude "Levels/LBZ/Palettes/Act 2 Water.bin" - even - - + even Pal_LBZ_Water2: binclude "Levels/LBZ/Palettes/Act 2 Water 2.bin" - even - + even Pal_MHZ1: binclude "Levels/MHZ/Palettes/1.bin" - even - + even Pal_MHZ2: binclude "Levels/MHZ/Palettes/2.bin" - even - - + even Pal_SOZ1: binclude "Levels/SOZ/Palettes/1.bin" - even - + even Pal_S0Z2: binclude "Levels/SOZ/Palettes/2.bin" - even - + even Pal_SOZ1_Clone: binclude "Levels/SOZ/Palettes/Act 1 Clone.bin" - even - + even Pal_SOZ2_Extra: binclude "Levels/SOZ/Palettes/Act 2 Extra.bin" - even - + even Pal_LRZ1: binclude "Levels/LRZ/Palettes/1.bin" - even - - + even Pal_LRZ2: binclude "Levels/LRZ/Palettes/2.bin" - even - - + even Pal_SSZ1: binclude "Levels/SSZ/Palettes/1.bin" - even - - + even Pal_SSZ2: binclude "Levels/SSZ/Palettes/2.bin" - even - -Pal_EndingObjects: binclude "General/Ending/Palettes/Objects.bin" - even - - + even +Pal_EndingObjects: + binclude "General/Ending/Palettes/Objects.bin" + even Pal_Ending1: binclude "General/Ending/Palettes/Ending 1.bin" - even - - + even Pal_Ending2: binclude "General/Ending/Palettes/Ending 2.bin" - even - - + even Pal_DEZ1: binclude "Levels/DEZ/Palettes/1.bin" - even - + even Pal_DEZ2: binclude "Levels/DEZ/Palettes/2.bin" - even - + even Pal_DDZ: binclude "Levels/DDZ/Palettes/Main.bin" - even - - + even Pal_ALZ: binclude "Levels/ALZ/Palettes/Main.bin" - even - - + even Pal_BPZ: binclude "Levels/BPZ/Palettes/Main.bin" - even - - + even Pal_DPZ: binclude "Levels/DPZ/Palettes/Main.bin" - even - + even Pal_CGZ: binclude "Levels/CGZ/Palettes/Main.bin" - even - + even Pal_EMZ: binclude "Levels/EMZ/Palettes/Main.bin" - even - -Pal_Gumball_Special:binclude "Levels/Gumball/Palettes/Main.bin" - even - -Pal_Pachinko_Special:binclude "Levels/Pachinko/Palettes/Main.bin" - even - -Pal_Slot_Special:binclude "Levels/Slots/Palettes/Main.bin" - even + even +Pal_Gumball_Special: + binclude "Levels/Gumball/Palettes/Main.bin" + even +Pal_Pachinko_Special: + binclude "Levels/Pachinko/Palettes/Main.bin" + even +Pal_Slot_Special: + binclude "Levels/Slots/Palettes/Main.bin" + even Pal_LRZBoss: binclude "Levels/LRZ/Palettes/Boss Act.bin" - even - + even Pal_HPZ_A: binclude "Levels/HPZ/Palettes/1_A.bin" - even - - + even Pal_HPZ_B: binclude "Levels/HPZ/Palettes/1_B.bin" - even - + even Pal_DEZBoss: binclude "Levels/DEZ/Palettes/Boss.bin" - even - -ArtUnc_AirCountDown:binclude "General/Sprites/Bubbles/Air Countdown.bin" - even - -ArtUnc_SONICMILES:binclude "General/Sprites/S2Menu/SONICMILES.bin" - even - -ArtUnc_SStageSonic:binclude "General/Sprites/Sonic/Art/SStage Sonic.bin" - even -Map_SStageSonic:include "General/Sprites/Sonic/Map - SStage Sonic.asm" - -ArtUnc_SStageKnuckles:binclude "General/Sprites/Knuckles/Art/SStage Knuckles.bin" - even -Map_SStageKnuckles:include "General/Sprites/Knuckles/Map - SStage Knuckles.asm" - -ArtNem_SStageShadow: binclude "General/Special Stage/Nemesis Art/Shadow.bin" - even -ArtNem_GetBlueSpheres: binclude "General/Special Stage/Nemesis Art/Get Blue Spheres.bin" - even -ArtNem_GBSArrow: binclude "General/Special Stage/Nemesis Art/Get Blue Spheres Arrow.bin" - even -ArtNem_SStageDigits: binclude "General/Special Stage/Nemesis Art/Digits.bin" - even -ArtNem_SStageIcons: binclude "General/Special Stage/Nemesis Art/Icons.bin" - even -ArtNem_SStageSphere: binclude "General/Special Stage/Nemesis Art/Sphere.bin" - even -ArtNem_SStageRing: binclude "General/Special Stage/Nemesis Art/Ring.bin" - even -ArtKosM_SStageChaosEmerald:binclude "General/Special Stage/KosinskiM Art/Special Stage Chaos Emerald.bin" - even -ArtKosM_SStageSuperEmerald:binclude "General/Special Stage/KosinskiM Art/Special Stage Super Emerald.bin" - even -MapEni_SStageBG: binclude "General/Special Stage/Enigma Map/BG.bin" - even -ArtNem_SStageBG: binclude "General/Special Stage/Nemesis Art/BG.bin" - even -MapEni_SStageLayout: binclude "General/Special Stage/Enigma Map/Layout.bin" - even -ArtNem_SStageLayout: binclude "General/Special Stage/Nemesis Art/Layout.bin" - even -SStageKos_PerspectiveMaps: binclude "General/Special Stage/Layout/Perspective Maps.bin" - even + even +ArtUnc_AirCountDown: + binclude "General/Sprites/Bubbles/Air Countdown.bin" + even +ArtUnc_SONICMILES: + binclude "General/Sprites/S2Menu/SONICMILES.bin" + even +ArtUnc_SStageSonic: + binclude "General/Sprites/Sonic/Art/SStage Sonic.bin" + even +Map_SStageSonic: + include "General/Sprites/Sonic/Map - SStage Sonic.asm" + +ArtUnc_SStageKnuckles: + binclude "General/Sprites/Knuckles/Art/SStage Knuckles.bin" + even +Map_SStageKnuckles: + include "General/Sprites/Knuckles/Map - SStage Knuckles.asm" + +ArtNem_SStageShadow: + binclude "General/Special Stage/Nemesis Art/Shadow.bin" + even +ArtNem_GetBlueSpheres: + binclude "General/Special Stage/Nemesis Art/Get Blue Spheres.bin" + even +ArtNem_GBSArrow: + binclude "General/Special Stage/Nemesis Art/Get Blue Spheres Arrow.bin" + even +ArtNem_SStageDigits: + binclude "General/Special Stage/Nemesis Art/Digits.bin" + even +ArtNem_SStageIcons: + binclude "General/Special Stage/Nemesis Art/Icons.bin" + even +ArtNem_SStageSphere: + binclude "General/Special Stage/Nemesis Art/Sphere.bin" + even +ArtNem_SStageRing: + binclude "General/Special Stage/Nemesis Art/Ring.bin" + even +ArtKosM_SStageChaosEmerald: + binclude "General/Special Stage/KosinskiM Art/Special Stage Chaos Emerald.bin" + even +ArtKosM_SStageSuperEmerald: + binclude "General/Special Stage/KosinskiM Art/Special Stage Super Emerald.bin" + even +MapEni_SStageBG: + binclude "General/Special Stage/Enigma Map/BG.bin" + even +ArtNem_SStageBG: + binclude "General/Special Stage/Nemesis Art/BG.bin" + even +MapEni_SStageLayout: + binclude "General/Special Stage/Enigma Map/Layout.bin" + even +ArtNem_SStageLayout: + binclude "General/Special Stage/Nemesis Art/Layout.bin" + even +SStageKos_PerspectiveMaps: + binclude "General/Special Stage/Layout/Perspective Maps.bin" + even if ~~strip_padding cnop0 -$40,$100 endif -ArtUnc_AniFBZ__0: binclude "Levels/FBZ/Animated Tiles/0.bin" - even -ArtUnc_AniFBZ__1: binclude "Levels/FBZ/Animated Tiles/1.bin" - even -ArtUnc_AniFBZ__2: binclude "Levels/FBZ/Animated Tiles/2.bin" - even -ArtUnc_AniFBZ__3: binclude "Levels/FBZ/Animated Tiles/3.bin" - even -ArtUnc_AniFBZ__4: binclude "Levels/FBZ/Animated Tiles/4.bin" - even -ArtUnc_AniMHZ__BG: binclude "Levels/MHZ/Animated Tiles/BG 1.bin" - even -ArtUnc_AniMHZ__BG2: binclude "Levels/MHZ/Animated Tiles/BG 2.bin" - even -ArtUnc_AniMHZ__0: binclude "Levels/MHZ/Animated Tiles/0.bin" - even -ArtUnc_AniMHZ__1: binclude "Levels/MHZ/Animated Tiles/1.bin" - even -ArtUnc_AniMHZ__2: binclude "Levels/MHZ/Animated Tiles/2.bin" - even -ArtUnc_AniMHZ__3: binclude "Levels/MHZ/Animated Tiles/3.bin" - even -ArtUnc_AniSOZ1_BG: binclude "Levels/SOZ/Animated Tiles/Act1 BG 1.bin" - even -ArtUnc_AniSOZ1_BG2: binclude "Levels/SOZ/Animated Tiles/Act1 BG 2.bin" - even -ArtUnc_AniSOZ2_BG: binclude "Levels/SOZ/Animated Tiles/Act2 BG.bin" - even -ArtUnc_AniLRZ__BG: binclude "Levels/LRZ/Animated Tiles/BG 1.bin" - even -ArtUnc_AniLRZ__BG2: binclude "Levels/LRZ/Animated Tiles/BG 2.bin" - even -ArtUnc_AniLRZ1_0: binclude "Levels/LRZ/Animated Tiles/Act1 0.bin" - even -ArtUnc_AniLRZ1_1: binclude "Levels/LRZ/Animated Tiles/Act1 1.bin" - even -ArtUnc_AniLRZ2_0: binclude "Levels/LRZ/Animated Tiles/Act2 0.bin" - even -ArtUnc_AniLRZ2_1: binclude "Levels/LRZ/Animated Tiles/Act2 1.bin" - even -ArtUnc_AniHPZ__0: binclude "Levels/HPZ/Animated Tiles/0.bin" - even -ArtUnc_AniHPZ__1: binclude "Levels/HPZ/Animated Tiles/1.bin" - even -ArtUnc_AniHPZ__2: binclude "Levels/HPZ/Animated Tiles/2.bin" - even -ArtUnc_AniHPZ__3: binclude "Levels/HPZ/Animated Tiles/3.bin" - even -ArtUnc_AniSSZ__0: binclude "Levels/SSZ/Animated Tiles/0.bin" - even -ArtUnc_AniSSZ__1: binclude "Levels/SSZ/Animated Tiles/1.bin" - even -ArtUnc_AniSSZ__2: binclude "Levels/SSZ/Animated Tiles/2.bin" - even -ArtUnc_AniSSZ__3: binclude "Levels/SSZ/Animated Tiles/3.bin" - even -ArtUnc_AniSSZ__4: binclude "Levels/SSZ/Animated Tiles/4.bin" - even -ArtUnc_AniSSZ__5: binclude "Levels/SSZ/Animated Tiles/5.bin" - even -ArtUnc_AniDEZ__0: binclude "Levels/DEZ/Animated Tiles/0.bin" - even -ArtUnc_AniDEZ__1: binclude "Levels/DEZ/Animated Tiles/1.bin" - even -ArtUnc_AniDEZ__2: binclude "Levels/DEZ/Animated Tiles/2.bin" - even -ArtUnc_AniDEZ__3: binclude "Levels/DEZ/Animated Tiles/3.bin" - even -ArtUnc_AniDEZ__4: binclude "Levels/DEZ/Animated Tiles/4.bin" - even -ArtUnc_AniDEZ__5: binclude "Levels/DEZ/Animated Tiles/5.bin" - even -ArtUnc_AniDEZ__6: binclude "Levels/DEZ/Animated Tiles/6.bin" - even -ArtUnc_AniDEZ__7: binclude "Levels/DEZ/Animated Tiles/7.bin" - even -ArtUnc_AniPachinko:binclude "Levels/Pachinko/Animated Tiles/0.bin" - even -ArtNem_S22POptions:binclude "General/Sprites/S2Menu/2P Options.bin" - even - -MapEni_S22POptions:binclude "General/Sprites/S2Menu/Enigma Map/2P Options.bin" - even - -LRZ1_Rock_Placement: dc.w 0, 0, 0 - binclude "Levels/LRZ/Misc/Act 1 Rock Placement.bin" - even - -LRZ2_Rock_Placement: dc.w 0, 0, 0 - binclude "Levels/LRZ/Misc/Act 2 Rock Placement.bin" - even - -Map_SKTitle_SonicFall: include "General/Title/Map - SK Sonic Falling.asm" - even -Map_SKTitle_DeathEgg: include "General/Title/Map - SK Death Egg.asm" - even -Map_SKTitle_Banner: include "General/Title/Map - SK Banner.asm" - even -Map_SKTitle_Mountain: include "General/Title/Map - SK Mountain.asm" - even -MapEni_SKTitle_Sega: binclude "General/Title/Enigma Map/SK SEGA.bin" - even -MapEni_SKTitle_Frame1: binclude "General/Title/Enigma Map/SK SonicKnux Frame 1.bin" - even -MapEni_SKTitle_Frame2: binclude "General/Title/Enigma Map/SK SonicKnux Frame 2.bin" - even -MapEni_SKTitle_Frame3: binclude "General/Title/Enigma Map/SK SonicKnux Frame 3.bin" - even -MapEni_SKTitle_Frame4: binclude "General/Title/Enigma Map/SK SonicKnux Frame 4.bin" - even -MapEni_SKTitle_Background: binclude "General/Title/Enigma Map/SK Background.bin" - even -ArtKos_BigSEGA: binclude "General/Title/Kosinski Art/SK Big SEGA.bin" - even -ArtKos_SKTitleScreenBG: binclude "General/Title/Kosinski Art/SK Screen Background.bin" - even -ArtKosM_SonicKnuxStand: binclude "General/Title/KosinskiM Art/SK Sonic Knuckles.bin" - even -ArtKosM_SonicLand: binclude "General/Title/KosinskiM Art/SK Sonic Land Frames.bin" - even -ArtKos_SKTitle_SonicFall: binclude "General/Title/Kosinski Art/SK Sonic Falling.bin" - even -ArtKos_SKTitle_DeathEgg: binclude "General/Title/Kosinski Art/SK Death Egg.bin" - even -ArtKos_SKTitle_Mountain: binclude "General/Title/Kosinski Art/SK Mountain Sprite.bin" - even -ArtKosM_SKTitle_Banner: binclude "General/Title/KosinskiM Art/SK Banner.bin" - even -ArtKos_SKTitle_SonKnuxHand: binclude "General/Title/Kosinski Art/SK Sonic and Knuckles Hands.bin" - even -ArtKosM_SKTitle_Menu: binclude "General/Title/KosinskiM Art/SK Menu.bin" - even -ArtNem_Title_ANDKnuckles: binclude "General/Title/Nemesis Art/SK ANDKnuckles.bin" - even -ArtKosM_ResultsKNUCKLES: binclude "General/Sprites/Results/Results KNUCKLES.bin" - even -ArtKosM_ResultsGeneral: binclude "General/Sprites/Results/Results General.bin" - even -ArtKosM_TitleCardNum1: binclude "General/Sprites/Title Card/Title Card Number 1.bin" - even - -ArtKosM_TitleCardNum2: binclude "General/Sprites/Title Card/Title Card Number 2.bin" - even - -ArtKosM_TitleCardRedAct: binclude "General/Sprites/Title Card/Title Card Red ACT.bin" - even -ArtKosM_FBZTitleCard: binclude "Levels/FBZ/KosinskiM Art/Title Card.bin" - even -ArtKosM_BonusTitleCard: binclude "General/Sprites/Title Card/Bonus Title Card.bin" - even -ArtNem_BossExplosion: binclude "General/Sprites/Boss Explosion/Boss Explosion.bin" - even - -ArtNem_RobotnikShip: binclude "General/Sprites/Robotnik/Ship.bin" - even - -ArtNem_FBZRobotnikHead: binclude "General/Sprites/Robotnik/FBZ Robotnik Head.bin" - even -ArtNem_FBZRobotnikStand: binclude "General/Sprites/Robotnik/FBZ Robotnik Stand.bin" - even - -ArtNem_FBZRobotnikRun: binclude "General/Sprites/Robotnik/FBZ Robotnik Run.bin" - even - -ArtUnc_SSEntryRing: binclude "General/Sprites/SS Entry/Entry Ring.bin" - even -ArtUnc_SSEntryFlash: binclude "General/Sprites/SS Entry/Entry Flash.bin" - even -ArtKosM_BadnikExplosion: binclude "General/Sprites/SS Entry/Badnik Explosion.bin" - even -ArtNem_FBZMinibossUnused: binclude "Levels/FBZ/Nemesis Art/S3 Miniboss.bin" - even -ArtNem_FBZ2Subboss: binclude "Levels/FBZ/Nemesis Art/Act 2 Subboss.bin" - even - -ArtNem_FBZEndBoss: binclude "Levels/FBZ/Nemesis Art/End Boss.bin" - even -ArtKosM_Blaster: binclude "General/Sprites/Blaster/Blaster.bin" - even -ArtKosM_Technosqueek: binclude "General/Sprites/Technosqueek/Technosqueek.bin" - even -ArtUnc_EndSigns: binclude "General/Sprites/Signpost/End Signs.bin" - even -ArtNem_SignpostStub: binclude "General/Sprites/Signpost/Stub.bin" - even -ArtNem_EggCapsule: binclude "General/Sprites/Robotnik/Egg Capsule.bin" - even - -ArtNem_BlueSphereText: binclude "General/Blue Sphere/Nemesis Art/Large Text.bin" - even - -ArtNem_FBZEndBossFlame: binclude "Levels/FBZ/Nemesis Art/End Boss Flame.bin" - even -ArtKosM_ANDKnuckles: binclude "General/Ending/KosinskiM Art/ANDKnuckles Subtitle.bin" - even +ArtUnc_AniFBZ__0: + binclude "Levels/FBZ/Animated Tiles/0.bin" + even +ArtUnc_AniFBZ__1: + binclude "Levels/FBZ/Animated Tiles/1.bin" + even +ArtUnc_AniFBZ__2: + binclude "Levels/FBZ/Animated Tiles/2.bin" + even +ArtUnc_AniFBZ__3: + binclude "Levels/FBZ/Animated Tiles/3.bin" + even +ArtUnc_AniFBZ__4: + binclude "Levels/FBZ/Animated Tiles/4.bin" + even +ArtUnc_AniMHZ__BG: + binclude "Levels/MHZ/Animated Tiles/BG 1.bin" + even +ArtUnc_AniMHZ__BG2: + binclude "Levels/MHZ/Animated Tiles/BG 2.bin" + even +ArtUnc_AniMHZ__0: + binclude "Levels/MHZ/Animated Tiles/0.bin" + even +ArtUnc_AniMHZ__1: + binclude "Levels/MHZ/Animated Tiles/1.bin" + even +ArtUnc_AniMHZ__2: + binclude "Levels/MHZ/Animated Tiles/2.bin" + even +ArtUnc_AniMHZ__3: + binclude "Levels/MHZ/Animated Tiles/3.bin" + even +ArtUnc_AniSOZ1_BG: + binclude "Levels/SOZ/Animated Tiles/Act1 BG 1.bin" + even +ArtUnc_AniSOZ1_BG2: + binclude "Levels/SOZ/Animated Tiles/Act1 BG 2.bin" + even +ArtUnc_AniSOZ2_BG: + binclude "Levels/SOZ/Animated Tiles/Act2 BG.bin" + even +ArtUnc_AniLRZ__BG: + binclude "Levels/LRZ/Animated Tiles/BG 1.bin" + even +ArtUnc_AniLRZ__BG2: + binclude "Levels/LRZ/Animated Tiles/BG 2.bin" + even +ArtUnc_AniLRZ1_0: + binclude "Levels/LRZ/Animated Tiles/Act1 0.bin" + even +ArtUnc_AniLRZ1_1: + binclude "Levels/LRZ/Animated Tiles/Act1 1.bin" + even +ArtUnc_AniLRZ2_0: + binclude "Levels/LRZ/Animated Tiles/Act2 0.bin" + even +ArtUnc_AniLRZ2_1: + binclude "Levels/LRZ/Animated Tiles/Act2 1.bin" + even +ArtUnc_AniHPZ__0: + binclude "Levels/HPZ/Animated Tiles/0.bin" + even +ArtUnc_AniHPZ__1: + binclude "Levels/HPZ/Animated Tiles/1.bin" + even +ArtUnc_AniHPZ__2: + binclude "Levels/HPZ/Animated Tiles/2.bin" + even +ArtUnc_AniHPZ__3: + binclude "Levels/HPZ/Animated Tiles/3.bin" + even +ArtUnc_AniSSZ__0: + binclude "Levels/SSZ/Animated Tiles/0.bin" + even +ArtUnc_AniSSZ__1: + binclude "Levels/SSZ/Animated Tiles/1.bin" + even +ArtUnc_AniSSZ__2: + binclude "Levels/SSZ/Animated Tiles/2.bin" + even +ArtUnc_AniSSZ__3: + binclude "Levels/SSZ/Animated Tiles/3.bin" + even +ArtUnc_AniSSZ__4: + binclude "Levels/SSZ/Animated Tiles/4.bin" + even +ArtUnc_AniSSZ__5: + binclude "Levels/SSZ/Animated Tiles/5.bin" + even +ArtUnc_AniDEZ__0: + binclude "Levels/DEZ/Animated Tiles/0.bin" + even +ArtUnc_AniDEZ__1: + binclude "Levels/DEZ/Animated Tiles/1.bin" + even +ArtUnc_AniDEZ__2: + binclude "Levels/DEZ/Animated Tiles/2.bin" + even +ArtUnc_AniDEZ__3: + binclude "Levels/DEZ/Animated Tiles/3.bin" + even +ArtUnc_AniDEZ__4: + binclude "Levels/DEZ/Animated Tiles/4.bin" + even +ArtUnc_AniDEZ__5: + binclude "Levels/DEZ/Animated Tiles/5.bin" + even +ArtUnc_AniDEZ__6: + binclude "Levels/DEZ/Animated Tiles/6.bin" + even +ArtUnc_AniDEZ__7: + binclude "Levels/DEZ/Animated Tiles/7.bin" + even +ArtUnc_AniPachinko: + binclude "Levels/Pachinko/Animated Tiles/0.bin" + even +ArtNem_S22POptions: + binclude "General/Sprites/S2Menu/2P Options.bin" + even +MapEni_S22POptions: + binclude "General/Sprites/S2Menu/Enigma Map/2P Options.bin" + even +LRZ1_Rock_Placement: + dc.w 0, 0, 0 + binclude "Levels/LRZ/Misc/Act 1 Rock Placement.bin" + even +LRZ2_Rock_Placement: + dc.w 0, 0, 0 + binclude "Levels/LRZ/Misc/Act 2 Rock Placement.bin" + even +Map_SKTitle_SonicFall: + include "General/Title/Map - SK Sonic Falling.asm" + even +Map_SKTitle_DeathEgg: + include "General/Title/Map - SK Death Egg.asm" + even +Map_SKTitle_Banner: + include "General/Title/Map - SK Banner.asm" + even +Map_SKTitle_Mountain: + include "General/Title/Map - SK Mountain.asm" + even +MapEni_SKTitle_Sega: + binclude "General/Title/Enigma Map/SK SEGA.bin" + even +MapEni_SKTitle_Frame1: + binclude "General/Title/Enigma Map/SK SonicKnux Frame 1.bin" + even +MapEni_SKTitle_Frame2: + binclude "General/Title/Enigma Map/SK SonicKnux Frame 2.bin" + even +MapEni_SKTitle_Frame3: + binclude "General/Title/Enigma Map/SK SonicKnux Frame 3.bin" + even +MapEni_SKTitle_Frame4: + binclude "General/Title/Enigma Map/SK SonicKnux Frame 4.bin" + even +MapEni_SKTitle_Background: + binclude "General/Title/Enigma Map/SK Background.bin" + even +ArtKos_BigSEGA: + binclude "General/Title/Kosinski Art/SK Big SEGA.bin" + even +ArtKos_SKTitleScreenBG: + binclude "General/Title/Kosinski Art/SK Screen Background.bin" + even +ArtKosM_SonicKnuxStand: + binclude "General/Title/KosinskiM Art/SK Sonic Knuckles.bin" + even +ArtKosM_SonicLand: + binclude "General/Title/KosinskiM Art/SK Sonic Land Frames.bin" + even +ArtKos_SKTitle_SonicFall: + binclude "General/Title/Kosinski Art/SK Sonic Falling.bin" + even +ArtKos_SKTitle_DeathEgg: + binclude "General/Title/Kosinski Art/SK Death Egg.bin" + even +ArtKos_SKTitle_Mountain: + binclude "General/Title/Kosinski Art/SK Mountain Sprite.bin" + even +ArtKosM_SKTitle_Banner: + binclude "General/Title/KosinskiM Art/SK Banner.bin" + even +ArtKos_SKTitle_SonKnuxHand: + binclude "General/Title/Kosinski Art/SK Sonic and Knuckles Hands.bin" + even +ArtKosM_SKTitle_Menu: + binclude "General/Title/KosinskiM Art/SK Menu.bin" + even +ArtNem_Title_ANDKnuckles: + binclude "General/Title/Nemesis Art/SK ANDKnuckles.bin" + even +ArtKosM_ResultsKNUCKLES: + binclude "General/Sprites/Results/Results KNUCKLES.bin" + even +ArtKosM_ResultsGeneral: + binclude "General/Sprites/Results/Results General.bin" + even +ArtKosM_TitleCardNum1: + binclude "General/Sprites/Title Card/Title Card Number 1.bin" + even +ArtKosM_TitleCardNum2: + binclude "General/Sprites/Title Card/Title Card Number 2.bin" + even +ArtKosM_TitleCardRedAct: + binclude "General/Sprites/Title Card/Title Card Red ACT.bin" + even +ArtKosM_FBZTitleCard: + binclude "Levels/FBZ/KosinskiM Art/Title Card.bin" + even +ArtKosM_BonusTitleCard: + binclude "General/Sprites/Title Card/Bonus Title Card.bin" + even +ArtNem_BossExplosion: + binclude "General/Sprites/Boss Explosion/Boss Explosion.bin" + even +ArtNem_RobotnikShip: + binclude "General/Sprites/Robotnik/Ship.bin" + even +ArtNem_FBZRobotnikHead: + binclude "General/Sprites/Robotnik/FBZ Robotnik Head.bin" + even +ArtNem_FBZRobotnikStand: + binclude "General/Sprites/Robotnik/FBZ Robotnik Stand.bin" + even +ArtNem_FBZRobotnikRun: + binclude "General/Sprites/Robotnik/FBZ Robotnik Run.bin" + even +ArtUnc_SSEntryRing: + binclude "General/Sprites/SS Entry/Entry Ring.bin" + even +ArtUnc_SSEntryFlash: + binclude "General/Sprites/SS Entry/Entry Flash.bin" + even +ArtKosM_BadnikExplosion: + binclude "General/Sprites/SS Entry/Badnik Explosion.bin" + even +ArtNem_FBZMinibossUnused: + binclude "Levels/FBZ/Nemesis Art/S3 Miniboss.bin" + even +ArtNem_FBZ2Subboss: + binclude "Levels/FBZ/Nemesis Art/Act 2 Subboss.bin" + even +ArtNem_FBZEndBoss: + binclude "Levels/FBZ/Nemesis Art/End Boss.bin" + even +ArtKosM_Blaster: + binclude "General/Sprites/Blaster/Blaster.bin" + even +ArtKosM_Technosqueek: + binclude "General/Sprites/Technosqueek/Technosqueek.bin" + even +ArtUnc_EndSigns: + binclude "General/Sprites/Signpost/End Signs.bin" + even +ArtNem_SignpostStub: + binclude "General/Sprites/Signpost/Stub.bin" + even +ArtNem_EggCapsule: + binclude "General/Sprites/Robotnik/Egg Capsule.bin" + even +ArtNem_BlueSphereText: + binclude "General/Blue Sphere/Nemesis Art/Large Text.bin" + even +ArtNem_FBZEndBossFlame: + binclude "Levels/FBZ/Nemesis Art/End Boss Flame.bin" + even +ArtKosM_ANDKnuckles: + binclude "General/Ending/KosinskiM Art/ANDKnuckles Subtitle.bin" + even if ~~strip_padding cnop -$600,$1000 endif -ArtNem_KnuxEndPose:binclude "General/Ending/Nemesis Art/Knuckles Ending Pose.bin" - even +ArtNem_KnuxEndPose: + binclude "General/Ending/Nemesis Art/Knuckles Ending Pose.bin" + even if Sonic3_Complete=0 ; Some sprite pointers below point to S2 or S2K data, which we're not dealing with in this disassembly for the time being ; As such, they are intentionally left unlabelled -S2K_Sprite_Lists:dc.l S2KSprite_EHZ1 ; 0 +S2K_Sprite_Lists: + dc.l S2KSprite_EHZ1 ; 0 dc.l S2KSprite_EHZ2 ; 1 dc.l S2KSprite_NULL ; 2 dc.l S2KSprite_NULL ; 3 @@ -201791,348 +202173,462 @@ S2K_Sprite_Lists:dc.l S2KSprite_EHZ1 ; 0 dc.l $2EBBDE ;byte_2EBBDE ; 32 dc.l $2EBD4C ;byte_2EBD4C ; 33 dc.w $FFFF, 0, 0 -S2KSprite_EHZ1: binclude "Levels/Misc/S2K Object Pos/EHZ_1.bin" - even -S2KSprite_EHZ2: binclude "Levels/Misc/S2K Object Pos/EHZ_2.bin" - even -S2KSprite_MTZ1: binclude "Levels/Misc/S2K Object Pos/MTZ_1.bin" - even -S2KSprite_MTZ2: binclude "Levels/Misc/S2K Object Pos/MTZ_2.bin" - even -S2KSprite_MTZ3: binclude "Levels/Misc/S2K Object Pos/MTZ_3.bin" - even -S2KSprite_WFZ1: binclude "Levels/Misc/S2K Object Pos/WFZ_1.bin" - even -S2KSprite_WFZ2: binclude "Levels/Misc/S2K Object Pos/WFZ_2.bin" - even -S2KSprite_HTZ1: binclude "Levels/Misc/S2K Object Pos/HTZ_1.bin" - even -S2KSprite_HTZ2: binclude "Levels/Misc/S2K Object Pos/HTZ_2.bin" - even -S2KSprite_OOZ1: binclude "Levels/Misc/S2K Object Pos/OOZ_1.bin" - even -S2KSprite_OOZ2: binclude "Levels/Misc/S2K Object Pos/OOZ_2.bin" - even -S2KSprite_MCZ1: binclude "Levels/Misc/S2K Object Pos/MCZ_1.bin" - even -S2KSprite_MCZ2: binclude "Levels/Misc/S2K Object Pos/MCZ_2.bin" - even -S2KSprite_CPZ1: binclude "Levels/Misc/S2K Object Pos/CPZ_1.bin" - even -S2KSprite_CPZ2: binclude "Levels/Misc/S2K Object Pos/CPZ_2.bin" - even -S2KSprite_ARZ1: binclude "Levels/Misc/S2K Object Pos/ARZ_1.bin" - even -S2KSprite_ARZ2: binclude "Levels/Misc/S2K Object Pos/ARZ_2.bin" - even +S2KSprite_EHZ1: binclude "Levels/Misc/S2K Object Pos/EHZ_1.bin" + even +S2KSprite_EHZ2: binclude "Levels/Misc/S2K Object Pos/EHZ_2.bin" + even +S2KSprite_MTZ1: binclude "Levels/Misc/S2K Object Pos/MTZ_1.bin" + even +S2KSprite_MTZ2: binclude "Levels/Misc/S2K Object Pos/MTZ_2.bin" + even +S2KSprite_MTZ3: binclude "Levels/Misc/S2K Object Pos/MTZ_3.bin" + even +S2KSprite_WFZ1: binclude "Levels/Misc/S2K Object Pos/WFZ_1.bin" + even +S2KSprite_WFZ2: binclude "Levels/Misc/S2K Object Pos/WFZ_2.bin" + even +S2KSprite_HTZ1: binclude "Levels/Misc/S2K Object Pos/HTZ_1.bin" + even +S2KSprite_HTZ2: binclude "Levels/Misc/S2K Object Pos/HTZ_2.bin" + even +S2KSprite_OOZ1: binclude "Levels/Misc/S2K Object Pos/OOZ_1.bin" + even +S2KSprite_OOZ2: binclude "Levels/Misc/S2K Object Pos/OOZ_2.bin" + even +S2KSprite_MCZ1: binclude "Levels/Misc/S2K Object Pos/MCZ_1.bin" + even +S2KSprite_MCZ2: binclude "Levels/Misc/S2K Object Pos/MCZ_2.bin" + even +S2KSprite_CPZ1: binclude "Levels/Misc/S2K Object Pos/CPZ_1.bin" + even +S2KSprite_CPZ2: binclude "Levels/Misc/S2K Object Pos/CPZ_2.bin" + even +S2KSprite_ARZ1: binclude "Levels/Misc/S2K Object Pos/ARZ_1.bin" + even +S2KSprite_ARZ2: binclude "Levels/Misc/S2K Object Pos/ARZ_2.bin" + even S2KSprite_NULL: dc.w $FFFF, 0, 0 endif include "Sound/Z80 Sound Driver.asm" - align $8000 ArtUnc_Sonic: binclude "General/Sprites/Sonic/Art/Sonic.bin" - even + even ArtUnc_Knux: binclude "General/Sprites/Knuckles/Art/Knuckles.bin" - even -ArtUnc_Sonic_Extra:binclude "General/Sprites/Sonic/Art/Sonic Extra.bin" - even -ArtUnc_Tails_Extra:binclude "General/Sprites/Tails/Art/Tails Extra.bin" - even + even +ArtUnc_Sonic_Extra: + binclude "General/Sprites/Sonic/Art/Sonic Extra.bin" + even +ArtUnc_Tails_Extra: + binclude "General/Sprites/Tails/Art/Tails Extra.bin" + even Map_Sonic: include "General/Sprites/Sonic/Map - Sonic.asm" - PLC_Sonic: include "General/Sprites/Sonic/Sonic pattern load cues.asm" - Map_Tails: include "General/Sprites/Tails/Map - Tails.asm" - PLC_Tails: include "General/Sprites/Tails/Tails pattern load cues.asm" - Map_Knuckles: include "General/Sprites/Knuckles/Map - Knuckles.asm" - PLC_Knuckles: include "General/Sprites/Knuckles/Knuckles pattern load cues.asm" - -ArtKosM_HyperSonicStars:binclude "General/Sprites/Sonic/Art/Hyper Sonic Stars.bin" - even -ArtKosM_SuperTailsBirds:binclude "General/Sprites/Tails/Art/Super Tails birds.bin" - even -ArtNem_FBZMisc: binclude "Levels/FBZ/Nemesis Art/Misc Art 1.bin" - even - -ArtNem_FBZOutdoors: binclude "Levels/FBZ/Nemesis Art/Outdoors.bin" - even -ArtNem_FBZMisc2: binclude "Levels/FBZ/Nemesis Art/Misc Art 2.bin" - even -ArtNem_MHZMisc: binclude "Levels/MHZ/Nemesis Art/Misc Art.bin" - even -ArtNem_SOZMisc: binclude "Levels/SOZ/Nemesis Art/Misc Art.bin" - even - -ArtNem_SOZTile: binclude "Levels/SOZ/Nemesis Art/Tile.bin" - even -ArtNem_SOZ2Extra: binclude "Levels/SOZ/Nemesis Art/Act 2 Extra Art.bin" - even -ArtNem_LRZMisc: binclude "Levels/LRZ/Nemesis Art/Misc Art.bin" - even -ArtNem_LRZSpikes: binclude "Levels/LRZ/Nemesis Art/Spike Crush.bin" - even -ArtNem_LRZBigSpike: binclude "Levels/LRZ/Nemesis Art/Big Spike Ball.bin" - even -ArtNem_LRZ2Misc: binclude "Levels/LRZ/Nemesis Art/Act 2 Misc Art.bin" - even -ArtNem_LRZ2Drum: binclude "Levels/LRZ/Nemesis Art/Act 2 Spinning Drum.bin" - even -ArtNem_SSZMisc: binclude "Levels/SSZ/Nemesis Art/Misc.bin" - even -ArtKosM_SSZSpiralRamp: binclude "Levels/SSZ/KosinskiM Art/Spiral Ramp.bin" - even -ArtNem_DEZMisc: binclude "Levels/DEZ/Nemesis Art/Misc Art.bin" - even - -ArtNem_DEZMiniboss: binclude "Levels/DEZ/Nemesis Art/Miniboss.bin" - even -ArtNem_DEZ2Extra: binclude "Levels/DEZ/Nemesis Art/Act 2 Extra Art.bin" - even -ArtNem_PachinkoMain: binclude "Levels/Pachinko/Nemesis Art/Main.bin" - even -ArtKos_PachinkoBG1: binclude "Levels/Pachinko/Kosinski Art/Animated BG 1.bin" - even -ArtKos_PachinkoBG2: binclude "Levels/Pachinko/Kosinski Art/Animated BG 2.bin" - even -PalKos_Pachinko: binclude "Levels/Pachinko/Palettes/Compressed Pal.bin" - even -ArtNem_SlotsBlocks: binclude "Levels/Slots/Nemesis Art/Blocks.bin" - even -ArtUnc_SlotOptions: binclude "Levels/Slots/Uncompressed Art/Options.bin" - even -ArtKosM_SSZTeleport: binclude "Levels/SSZ/KosinskiM Art/Teleporter Beam.bin" - even -ArtNem_ICZTeleport: binclude "Levels/ICZ/Nemesis Art/Teleporter Beam.bin" - even -ArtKosM_MHZEndBossPillar: binclude "Levels/MHZ/KosinskiM Art/End Boss Pillar.bin" - even -ArtKosM_MHZShipPropeller: binclude "Levels/MHZ/KosinskiM Art/Ship Propeller.bin" - even -ArtKosM_LRZ2DeathEggBG: binclude "Levels/LRZ/KosinskiM Art/BG Death Egg.bin" - even -ArtUnc_DEZFBLaser: binclude "Levels/DEZ/Uncompressed Art/Final Boss Laser.bin" - even - -ArtKos_SaveScreen:binclude "General/Save Menu/Kosinski Art/SK Extra.bin" - even -ArtKosM_SSResultsSUPER: binclude "General/Special Stage/KosinskiM Art/SSResults SUPER.bin" - even -ArtKosM_SSResultsSUPERk: binclude "General/Special Stage/KosinskiM Art/SSResults SUPER (K).bin" - even -ArtKosM_SSResultsHYPER: binclude "General/Special Stage/KosinskiM Art/SSResults HYPER.bin" - even -ArtKosM_SSResultsHYPERk: binclude "General/Special Stage/KosinskiM Art/SSResults HYPER (K).bin" - even -ArtKosM_ResultsSONIC: binclude "General/Sprites/Results/Results SONIC.bin" - even -ArtKosM_SSResults: dc.w $12A0 -ArtKos_SSResultsGeneral: binclude "General/Special Stage/Kosinski Art/SSResults General.bin" -ArtKos_SSResultsTKIcons: binclude "General/Special Stage/Kosinski Art/SSResults Tails Knuckles Icons.bin" - even -ArtKosM_TitleCardSKZone:binclude "General/Sprites/Title Card/Title Card SK Zone.bin" - even -ArtKosM_TitleCardS3KZone:binclude "General/Sprites/Title Card/Title Card S3K Zone.bin" - even -ArtKosM_MHZTitleCard:binclude "Levels/MHZ/KosinskiM Art/Title Card.bin" - even -ArtKosM_SOZTitleCard:binclude "Levels/SOZ/KosinskiM Art/Title Card.bin" - even -ArtKosM_LRZTitleCard:binclude "Levels/LRZ/KosinskiM Art/Title Card.bin" - even -ArtKosM_SSZTitleCard:binclude "Levels/SSZ/KosinskiM Art/Title Card.bin" - even -ArtKosM_DEZTitleCard:binclude "Levels/DEZ/KosinskiM Art/Title Card.bin" - even -ArtKosM_DDZTitleCard:binclude "Levels/DDZ/KosinskiM Art/Title Card.bin" - even -ArtKosM_HPZTitleCard:binclude "Levels/HPZ/KosinskiM Art/Title Card.bin" - even -ArtKos_SaveScreenSKZone: binclude "General/Save Menu/Kosinski Art/SK Zone Art.bin" - even -ArtKos_SaveScreenPortrait: binclude "General/Save Menu/Kosinski Art/Portraits.bin" - even +ArtKosM_HyperSonicStars: + binclude "General/Sprites/Sonic/Art/Hyper Sonic Stars.bin" + even +ArtKosM_SuperTailsBirds: + binclude "General/Sprites/Tails/Art/Super Tails birds.bin" + even +ArtNem_FBZMisc: + binclude "Levels/FBZ/Nemesis Art/Misc Art 1.bin" + even +ArtNem_FBZOutdoors: + binclude "Levels/FBZ/Nemesis Art/Outdoors.bin" + even +ArtNem_FBZMisc2: + binclude "Levels/FBZ/Nemesis Art/Misc Art 2.bin" + even +ArtNem_MHZMisc: + binclude "Levels/MHZ/Nemesis Art/Misc Art.bin" + even +ArtNem_SOZMisc: + binclude "Levels/SOZ/Nemesis Art/Misc Art.bin" + even +ArtNem_SOZTile: + binclude "Levels/SOZ/Nemesis Art/Tile.bin" + even +ArtNem_SOZ2Extra: + binclude "Levels/SOZ/Nemesis Art/Act 2 Extra Art.bin" + even +ArtNem_LRZMisc: + binclude "Levels/LRZ/Nemesis Art/Misc Art.bin" + even +ArtNem_LRZSpikes: + binclude "Levels/LRZ/Nemesis Art/Spike Crush.bin" + even +ArtNem_LRZBigSpike: + binclude "Levels/LRZ/Nemesis Art/Big Spike Ball.bin" + even +ArtNem_LRZ2Misc: + binclude "Levels/LRZ/Nemesis Art/Act 2 Misc Art.bin" + even +ArtNem_LRZ2Drum: + binclude "Levels/LRZ/Nemesis Art/Act 2 Spinning Drum.bin" + even +ArtNem_SSZMisc: + binclude "Levels/SSZ/Nemesis Art/Misc.bin" + even +ArtKosM_SSZSpiralRamp: + binclude "Levels/SSZ/KosinskiM Art/Spiral Ramp.bin" + even +ArtNem_DEZMisc: + binclude "Levels/DEZ/Nemesis Art/Misc Art.bin" + even +ArtNem_DEZMiniboss: + binclude "Levels/DEZ/Nemesis Art/Miniboss.bin" + even +ArtNem_DEZ2Extra: + binclude "Levels/DEZ/Nemesis Art/Act 2 Extra Art.bin" + even +ArtNem_PachinkoMain: + binclude "Levels/Pachinko/Nemesis Art/Main.bin" + even +ArtKos_PachinkoBG1: + binclude "Levels/Pachinko/Kosinski Art/Animated BG 1.bin" + even +ArtKos_PachinkoBG2: + binclude "Levels/Pachinko/Kosinski Art/Animated BG 2.bin" + even +PalKos_Pachinko: + binclude "Levels/Pachinko/Palettes/Compressed Pal.bin" + even +ArtNem_SlotsBlocks: + binclude "Levels/Slots/Nemesis Art/Blocks.bin" + even +ArtUnc_SlotOptions: + binclude "Levels/Slots/Uncompressed Art/Options.bin" + even +ArtKosM_SSZTeleport: + binclude "Levels/SSZ/KosinskiM Art/Teleporter Beam.bin" + even +ArtNem_ICZTeleport: + binclude "Levels/ICZ/Nemesis Art/Teleporter Beam.bin" + even +ArtKosM_MHZEndBossPillar: + binclude "Levels/MHZ/KosinskiM Art/End Boss Pillar.bin" + even +ArtKosM_MHZShipPropeller: + binclude "Levels/MHZ/KosinskiM Art/Ship Propeller.bin" + even +ArtKosM_LRZ2DeathEggBG: + binclude "Levels/LRZ/KosinskiM Art/BG Death Egg.bin" + even +ArtUnc_DEZFBLaser: + binclude "Levels/DEZ/Uncompressed Art/Final Boss Laser.bin" + even +ArtKos_SaveScreen: + binclude "General/Save Menu/Kosinski Art/SK Extra.bin" + even +ArtKosM_SSResultsSUPER: + binclude "General/Special Stage/KosinskiM Art/SSResults SUPER.bin" + even +ArtKosM_SSResultsSUPERk: + binclude "General/Special Stage/KosinskiM Art/SSResults SUPER (K).bin" + even +ArtKosM_SSResultsHYPER: + binclude "General/Special Stage/KosinskiM Art/SSResults HYPER.bin" + even +ArtKosM_SSResultsHYPERk: + binclude "General/Special Stage/KosinskiM Art/SSResults HYPER (K).bin" + even +ArtKosM_ResultsSONIC: + binclude "General/Sprites/Results/Results SONIC.bin" + even +ArtKosM_SSResults: + dc.w $12A0 +ArtKos_SSResultsGeneral: + binclude "General/Special Stage/Kosinski Art/SSResults General.bin" +ArtKos_SSResultsTKIcons: + binclude "General/Special Stage/Kosinski Art/SSResults Tails Knuckles Icons.bin" + even +ArtKosM_TitleCardSKZone: + binclude "General/Sprites/Title Card/Title Card SK Zone.bin" + even +ArtKosM_TitleCardS3KZone: + binclude "General/Sprites/Title Card/Title Card S3K Zone.bin" + even +ArtKosM_MHZTitleCard: + binclude "Levels/MHZ/KosinskiM Art/Title Card.bin" + even +ArtKosM_SOZTitleCard: + binclude "Levels/SOZ/KosinskiM Art/Title Card.bin" + even +ArtKosM_LRZTitleCard: + binclude "Levels/LRZ/KosinskiM Art/Title Card.bin" + even +ArtKosM_SSZTitleCard: + binclude "Levels/SSZ/KosinskiM Art/Title Card.bin" + even +ArtKosM_DEZTitleCard: + binclude "Levels/DEZ/KosinskiM Art/Title Card.bin" + even +ArtKosM_DDZTitleCard: + binclude "Levels/DDZ/KosinskiM Art/Title Card.bin" + even +ArtKosM_HPZTitleCard: + binclude "Levels/HPZ/KosinskiM Art/Title Card.bin" + even +ArtKos_SaveScreenSKZone: + binclude "General/Save Menu/Kosinski Art/SK Zone Art.bin" + even +ArtKos_SaveScreenPortrait: + binclude "General/Save Menu/Kosinski Art/Portraits.bin" + even DemoDat_MHZ: binclude "Levels/MHZ/Demodata/1.bin" - even - + even DemoDat_FBZ: binclude "Levels/FBZ/Demodata/1.bin" - even - + even DemoDat_SOZ: binclude "Levels/SOZ/Demodata/1.bin" - even - -DemoDat_SpecialStage: binclude "General/Special Stage/Demodata/1.bin" - even -ArtKosM_EggRoboHead: binclude "General/Sprites/Robotnik/Egg Robo Head.bin" - even -ArtNem_EggRoboRun: binclude "General/Sprites/Robotnik/Egg Robo Run.bin" - even -ArtNem_EggRoboStand: binclude "General/Sprites/Robotnik/Egg Robo Stand.bin" - even -ArtKosM_KnuxFinalBossCrane: binclude "General/Sprites/Robotnik/Robotnik Ship Crane.bin" - even -ArtKosM_IslandLiftGfx: binclude "General/Ending/KosinskiM Art/Island Lift Animated Tiles.bin" - even -ArtKosM_EndingAnimals: binclude "General/Ending/KosinskiM Art/Pelican and Dolphin.bin" - even -ArtKosM_EggRoboSKEnding: binclude "General/Ending/KosinskiM Art/Egg Robo.bin" - even -ArtKosM_SonicEndPose: binclude "General/Ending/KosinskiM Art/Sonic Ending Pose.bin" - even -ArtKosM_SuperSonicEndPose: binclude "General/Ending/KosinskiM Art/Super Sonic Ending Pose.bin" - even -ArtKosM_SonicPlaneEnding: binclude "General/Ending/KosinskiM Art/Sonic Plane Ending.bin" - even -ArtKosM_RobotnikSmug: binclude "General/Ending/KosinskiM Art/Robotnik Standing Smug.bin" - even -ArtKosM_SonicPlane: binclude "General/Ending/KosinskiM Art/Sonic Plane.bin" - even -ArtKosM_KnuxEnding: binclude "General/Sprites/Knuckles/Cutscene/Knuckles Ending Cutscene.bin" - even -ArtKosM_SKPoseBanner: binclude "General/Ending/KosinskiM Art/Sonic Knuckles Pose Banner.bin" - even -ArtKosM_S3PoseBanner: binclude "General/Ending/KosinskiM Art/Sonic 3 Pose Banner.bin" - even -ArtUnc_KnuxIntroLay: binclude "General/Sprites/Knuckles/Cutscene/Intro Laying.bin" - even -ArtKosM_KnuxIntroBomb: binclude "General/Sprites/Knuckles/Cutscene/Knuckles Intro Bomb.bin" - even -ArtKosM_FBZExitHall: binclude "Levels/FBZ/KosinskiM Art/Exit Hall.bin" - even -ArtKosM_FBZMiniboss: binclude "Levels/FBZ/KosinskiM Art/Miniboss.bin" - even -ArtKosM_FBZCloud: binclude "Levels/FBZ/KosinskiM Art/Cloud.bin" - even -ArtKosM_FBZBossPillar: binclude "Levels/FBZ/KosinskiM Art/Before Boss Pillar.bin" - even -ArtKosM_FBZExitDoor: binclude "Levels/FBZ/KosinskiM Art/Exit Door.bin" - even -ArtNem_FBZEggCapsule: binclude "Levels/FBZ/Nemesis Art/Egg Capsule.bin" - even - -ArtKosM_FBZButton: binclude "Levels/FBZ/KosinskiM Art/Button.bin" - even -ArtKosM_Madmole: binclude "General/Sprites/Madmole/Madmole.bin" - even - -ArtKosM_Mushmeanie: binclude "General/Sprites/Mushmeanie/Mushmeanie.bin" - even - -ArtKosM_Dragonfly: binclude "General/Sprites/Dragonfly/Dragonfly.bin" - even - -ArtKosM_CluckoidArrow: binclude "General/Sprites/Cluckoid/Cluckoid Arrow.bin" - even -ArtUnc_Butterdroid: binclude "General/Sprites/Butterdroid/Butterdroid.bin" - even -ArtUnc_Cluckoid: binclude "General/Sprites/Cluckoid/Cluckoid.bin" - even -ArtKosM_MHZMiniboss: binclude "Levels/MHZ/KosinskiM Art/Miniboss.bin" - even -ArtKosM_MHZMinibossLog: binclude "Levels/MHZ/KosinskiM Art/Miniboss Log.bin" - even -ArtKosM_MHZEndBossSpikes: binclude "Levels/MHZ/KosinskiM Art/End Boss Spikes.bin" - even -ArtKosM_MHZKnuxPeer: binclude "General/Sprites/Knuckles/Cutscene/Knuckles Peering.bin" - even -ArtUnc_MHZKnuxPress: binclude "General/Sprites/Knuckles/Cutscene/MHZ2 Press.bin" - even -ArtKosM_MHZKnuxSwitch: binclude "General/Sprites/Knuckles/Cutscene/Knuckles MHZ Switch.bin" - even -ArtKosM_MHZEndBoss: binclude "Levels/MHZ/KosinskiM Art/End Boss.bin" - even -ArtKosM_Skorp:binclude "General/Sprites/Skorp/Skorp.bin" - even -ArtKosM_Sandworm:binclude "General/Sprites/Sandworm/Sandworm.bin" - even -ArtKosM_Rockn:binclude "General/Sprites/Rockn/Rock'n.bin" - even -ArtUnc_SOZGhosts: binclude "General/Sprites/SOZ Ghosts/SOZ Ghosts.bin" - even -ArtKosM_SOZMiniboss: binclude "Levels/SOZ/KosinskiM Art/Miniboss.bin" - even -ArtKosM_SOZSand: binclude "Levels/SOZ/KosinskiM Art/Sand Particles.bin" - even -ArtKosM_SOZEndBoss: binclude "Levels/SOZ/KosinskiM Art/End Boss.bin" - even -ArtUnc_Fireworm: binclude "General/Sprites/Fireworm/Fireworm.bin" - even -ArtKosM_FirewormSegments:binclude "General/Sprites/Fireworm/Fireworm Segments.bin" - even -ArtKosM_Iwamodoki:binclude "General/Sprites/Iwamodoki/Iwamodoki.bin" - even -ArtKosM_Toxomister:binclude "General/Sprites/Toxomister/Toxomister.bin" - even -ArtKosM_LRZRockCrusher: binclude "Levels/LRZ/KosinskiM Art/Rock Crusher.bin" - even -ArtKosM_LRZMiniboss: binclude "Levels/LRZ/KosinskiM Art/Miniboss.bin" - even -ArtKosM_LRZ3Autoscroll: binclude "Levels/LRZ/KosinskiM Art/Autoscroll.bin" - even -ArtKosM_LRZ3DeathEggFlash: binclude "Levels/LRZ/KosinskiM Art/Death Egg Flash.bin" - even -ArtKosM_LRZ3PlatformDebris: binclude "Levels/LRZ/KosinskiM Art/Platform Debris.bin" - even -ArtKosM_LRZEndBoss: binclude "Levels/LRZ/KosinskiM Art/End Boss.bin" - even -ArtKosM_LRZKnuxBoulder: binclude "Levels/LRZ/KosinskiM Art/Knuckles Boulder.bin" - even -ArtUnc_HPZKnucklesGrab: binclude "General/Sprites/Knuckles/Cutscene/HPZ Emerald Grab.bin" - even -ArtKosM_HPZKnuxDizzy: binclude "Levels/HPZ/KosinskiM Art/Knuckles Dizzy Stars.bin" - even -ArtNem_HPZEmeraldMisc: binclude "Levels/HPZ/Nemesis Art/Emerald Misc Art.bin" - even -ArtNem_HPZGrayEmerald: binclude "Levels/HPZ/Nemesis Art/Gray Emerald.bin" - even -ArtKosM_Teleporter:binclude "General/Sprites/Teleporter/Teleporter.bin" - even - -ArtKosM_HPZSmallEmeralds: binclude "Levels/HPZ/KosinskiM Art/Special Stage Emeralds.bin" - even -ArtUnc_MechaSonic: binclude "General/Sprites/Mecha Sonic/Mecha Sonic.bin" - even -ArtKosM_EggRoboBadnik:binclude "General/Sprites/Egg Robo Badnik/Egg Robo Badnik.bin" - even - -ArtScaled_EggRoboFly: binclude "General/Sprites/Robotnik/Egg Robo Fly Scaled.bin" - even -ArtKosM_MechaSonicHead: binclude "General/Sprites/Mecha Sonic/Mecha Sonic Head.bin" - even -ArtUnc_SSZDeathEggCloud: binclude "General/Sprites/SSZ Death Egg Cloud/SSZ Death Egg Cloud.bin" - even -ArtKosM_SSZDeathEggSmall: binclude "Levels/SSZ/KosinskiM Art/Death Egg Small.bin" - even -ArtUnc_SSZKnucklesTired: binclude "General/Sprites/Knuckles/Cutscene/SSZ Tired.bin" - even -ArtKosM_SSZGHZMisc: binclude "Levels/SSZ/KosinskiM Art/GHZ Ball and Chain.bin" - even -ArtKosM_SSZMTZOrbs: binclude "Levels/SSZ/KosinskiM Art/MTZ Orbs.bin" - even -ArtKosM_MechaSonicExtra: binclude "General/Sprites/Mecha Sonic/Mecha Sonic Extra Art.bin" - even -ArtKosM_EndingMasterEmerald: binclude "General/Ending/KosinskiM Art/Master Emerald.bin" - even -ArtKosM_Spikebonker:binclude "General/Sprites/Spikebonker/Spikebonker.bin" - even -ArtKosM_Chainspike:binclude "General/Sprites/Chainspike/Chainspike.bin" - even -ArtKosM_DEZMinibossMisc: binclude "Levels/DEZ/KosinskiM Art/Miniboss Misc Art.bin" - even -ArtKosM_DEZEndBoss: binclude "Levels/DEZ/KosinskiM Art/End Boss.bin" - even -ArtKosM_DEZFinalBossMisc: binclude "Levels/DEZ/KosinskiM Art/Final Boss Misc Art.bin" - even -ArtKosM_BossMasterEmerald: binclude "General/Sprites/Master Emerald/Master Emerald.bin" - even -ArtKosM_DEZFinalBossDebris: binclude "Levels/DEZ/KosinskiM Art/Final Boss Debris.bin" - even -ArtKosM_DDZMisc: binclude "Levels/DDZ/KosinskiM Art/Misc Art.bin" - even + even +DemoDat_SpecialStage: + binclude "General/Special Stage/Demodata/1.bin" + even +ArtKosM_EggRoboHead: + binclude "General/Sprites/Robotnik/Egg Robo Head.bin" + even +ArtNem_EggRoboRun: + binclude "General/Sprites/Robotnik/Egg Robo Run.bin" + even +ArtNem_EggRoboStand: + binclude "General/Sprites/Robotnik/Egg Robo Stand.bin" + even +ArtKosM_KnuxFinalBossCrane: + binclude "General/Sprites/Robotnik/Robotnik Ship Crane.bin" + even +ArtKosM_IslandLiftGfx: + binclude "General/Ending/KosinskiM Art/Island Lift Animated Tiles.bin" + even +ArtKosM_EndingAnimals: + binclude "General/Ending/KosinskiM Art/Pelican and Dolphin.bin" + even +ArtKosM_EggRoboSKEnding: + binclude "General/Ending/KosinskiM Art/Egg Robo.bin" + even +ArtKosM_SonicEndPose: + binclude "General/Ending/KosinskiM Art/Sonic Ending Pose.bin" + even +ArtKosM_SuperSonicEndPose: + binclude "General/Ending/KosinskiM Art/Super Sonic Ending Pose.bin" + even +ArtKosM_SonicPlaneEnding: + binclude "General/Ending/KosinskiM Art/Sonic Plane Ending.bin" + even +ArtKosM_RobotnikSmug: + binclude "General/Ending/KosinskiM Art/Robotnik Standing Smug.bin" + even +ArtKosM_SonicPlane: + binclude "General/Ending/KosinskiM Art/Sonic Plane.bin" + even +ArtKosM_KnuxEnding: + binclude "General/Sprites/Knuckles/Cutscene/Knuckles Ending Cutscene.bin" + even +ArtKosM_SKPoseBanner: + binclude "General/Ending/KosinskiM Art/Sonic Knuckles Pose Banner.bin" + even +ArtKosM_S3PoseBanner: + binclude "General/Ending/KosinskiM Art/Sonic 3 Pose Banner.bin" + even +ArtUnc_KnuxIntroLay: + binclude "General/Sprites/Knuckles/Cutscene/Intro Laying.bin" + even +ArtKosM_KnuxIntroBomb: + binclude "General/Sprites/Knuckles/Cutscene/Knuckles Intro Bomb.bin" + even +ArtKosM_FBZExitHall: + binclude "Levels/FBZ/KosinskiM Art/Exit Hall.bin" + even +ArtKosM_FBZMiniboss: + binclude "Levels/FBZ/KosinskiM Art/Miniboss.bin" + even +ArtKosM_FBZCloud: + binclude "Levels/FBZ/KosinskiM Art/Cloud.bin" + even +ArtKosM_FBZBossPillar: + binclude "Levels/FBZ/KosinskiM Art/Before Boss Pillar.bin" + even +ArtKosM_FBZExitDoor: + binclude "Levels/FBZ/KosinskiM Art/Exit Door.bin" + even +ArtNem_FBZEggCapsule: + binclude "Levels/FBZ/Nemesis Art/Egg Capsule.bin" + even +ArtKosM_FBZButton: + binclude "Levels/FBZ/KosinskiM Art/Button.bin" + even +ArtKosM_Madmole: + binclude "General/Sprites/Madmole/Madmole.bin" + even +ArtKosM_Mushmeanie: + binclude "General/Sprites/Mushmeanie/Mushmeanie.bin" + even +ArtKosM_Dragonfly: + binclude "General/Sprites/Dragonfly/Dragonfly.bin" + even +ArtKosM_CluckoidArrow: + binclude "General/Sprites/Cluckoid/Cluckoid Arrow.bin" + even +ArtUnc_Butterdroid: + binclude "General/Sprites/Butterdroid/Butterdroid.bin" + even +ArtUnc_Cluckoid: + binclude "General/Sprites/Cluckoid/Cluckoid.bin" + even +ArtKosM_MHZMiniboss: + binclude "Levels/MHZ/KosinskiM Art/Miniboss.bin" + even +ArtKosM_MHZMinibossLog: + binclude "Levels/MHZ/KosinskiM Art/Miniboss Log.bin" + even +ArtKosM_MHZEndBossSpikes: + binclude "Levels/MHZ/KosinskiM Art/End Boss Spikes.bin" + even +ArtKosM_MHZKnuxPeer: + binclude "General/Sprites/Knuckles/Cutscene/Knuckles Peering.bin" + even +ArtUnc_MHZKnuxPress: + binclude "General/Sprites/Knuckles/Cutscene/MHZ2 Press.bin" + even +ArtKosM_MHZKnuxSwitch: + binclude "General/Sprites/Knuckles/Cutscene/Knuckles MHZ Switch.bin" + even +ArtKosM_MHZEndBoss: + binclude "Levels/MHZ/KosinskiM Art/End Boss.bin" + even +ArtKosM_Skorp: + binclude "General/Sprites/Skorp/Skorp.bin" + even +ArtKosM_Sandworm: + binclude "General/Sprites/Sandworm/Sandworm.bin" + even +ArtKosM_Rockn: + binclude "General/Sprites/Rockn/Rock'n.bin" + even +ArtUnc_SOZGhosts: + binclude "General/Sprites/SOZ Ghosts/SOZ Ghosts.bin" + even +ArtKosM_SOZMiniboss: + binclude "Levels/SOZ/KosinskiM Art/Miniboss.bin" + even +ArtKosM_SOZSand: + binclude "Levels/SOZ/KosinskiM Art/Sand Particles.bin" + even +ArtKosM_SOZEndBoss: + binclude "Levels/SOZ/KosinskiM Art/End Boss.bin" + even +ArtUnc_Fireworm: + binclude "General/Sprites/Fireworm/Fireworm.bin" + even +ArtKosM_FirewormSegments: + binclude "General/Sprites/Fireworm/Fireworm Segments.bin" + even +ArtKosM_Iwamodoki: + binclude "General/Sprites/Iwamodoki/Iwamodoki.bin" + even +ArtKosM_Toxomister: + binclude "General/Sprites/Toxomister/Toxomister.bin" + even +ArtKosM_LRZRockCrusher: + binclude "Levels/LRZ/KosinskiM Art/Rock Crusher.bin" + even +ArtKosM_LRZMiniboss: + binclude "Levels/LRZ/KosinskiM Art/Miniboss.bin" + even +ArtKosM_LRZ3Autoscroll: + binclude "Levels/LRZ/KosinskiM Art/Autoscroll.bin" + even +ArtKosM_LRZ3DeathEggFlash: + binclude "Levels/LRZ/KosinskiM Art/Death Egg Flash.bin" + even +ArtKosM_LRZ3PlatformDebris: + binclude "Levels/LRZ/KosinskiM Art/Platform Debris.bin" + even +ArtKosM_LRZEndBoss: + binclude "Levels/LRZ/KosinskiM Art/End Boss.bin" + even +ArtKosM_LRZKnuxBoulder: + binclude "Levels/LRZ/KosinskiM Art/Knuckles Boulder.bin" + even +ArtUnc_HPZKnucklesGrab: + binclude "General/Sprites/Knuckles/Cutscene/HPZ Emerald Grab.bin" + even +ArtKosM_HPZKnuxDizzy: + binclude "Levels/HPZ/KosinskiM Art/Knuckles Dizzy Stars.bin" + even +ArtNem_HPZEmeraldMisc: + binclude "Levels/HPZ/Nemesis Art/Emerald Misc Art.bin" + even +ArtNem_HPZGrayEmerald: + binclude "Levels/HPZ/Nemesis Art/Gray Emerald.bin" + even +ArtKosM_Teleporter: + binclude "General/Sprites/Teleporter/Teleporter.bin" + even +ArtKosM_HPZSmallEmeralds: + binclude "Levels/HPZ/KosinskiM Art/Special Stage Emeralds.bin" + even +ArtUnc_MechaSonic: + binclude "General/Sprites/Mecha Sonic/Mecha Sonic.bin" + even +ArtKosM_EggRoboBadnik: + binclude "General/Sprites/Egg Robo Badnik/Egg Robo Badnik.bin" + even +ArtScaled_EggRoboFly: + binclude "General/Sprites/Robotnik/Egg Robo Fly Scaled.bin" + even +ArtKosM_MechaSonicHead: + binclude "General/Sprites/Mecha Sonic/Mecha Sonic Head.bin" + even +ArtUnc_SSZDeathEggCloud: + binclude "General/Sprites/SSZ Death Egg Cloud/SSZ Death Egg Cloud.bin" + even +ArtKosM_SSZDeathEggSmall: + binclude "Levels/SSZ/KosinskiM Art/Death Egg Small.bin" + even +ArtUnc_SSZKnucklesTired: + binclude "General/Sprites/Knuckles/Cutscene/SSZ Tired.bin" + even +ArtKosM_SSZGHZMisc: + binclude "Levels/SSZ/KosinskiM Art/GHZ Ball and Chain.bin" + even +ArtKosM_SSZMTZOrbs: + binclude "Levels/SSZ/KosinskiM Art/MTZ Orbs.bin" + even +ArtKosM_MechaSonicExtra: + binclude "General/Sprites/Mecha Sonic/Mecha Sonic Extra Art.bin" + even +ArtKosM_EndingMasterEmerald: + binclude "General/Ending/KosinskiM Art/Master Emerald.bin" + even +ArtKosM_Spikebonker: + binclude "General/Sprites/Spikebonker/Spikebonker.bin" + even +ArtKosM_Chainspike: + binclude "General/Sprites/Chainspike/Chainspike.bin" + even +ArtKosM_DEZMinibossMisc: + binclude "Levels/DEZ/KosinskiM Art/Miniboss Misc Art.bin" + even +ArtKosM_DEZEndBoss: + binclude "Levels/DEZ/KosinskiM Art/End Boss.bin" + even +ArtKosM_DEZFinalBossMisc: + binclude "Levels/DEZ/KosinskiM Art/Final Boss Misc Art.bin" + even +ArtKosM_BossMasterEmerald: + binclude "General/Sprites/Master Emerald/Master Emerald.bin" + even +ArtKosM_DEZFinalBossDebris: + binclude "Levels/DEZ/KosinskiM Art/Final Boss Debris.bin" + even +ArtKosM_DDZMisc: + binclude "Levels/DDZ/KosinskiM Art/Misc Art.bin" + even AngleLookup_1: dc.b 0, 0, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5, 5, 5 dc.b 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, $A, $A dc.b $A, $A, $A, $A, $B, $B, $B, $B, $B, $B, $B, $B, $B, $C, $C, $C, $C, $C, $C, $C @@ -202145,349 +202641,423 @@ AngleLookup_3: dc.b 0, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, $A, dc.b $11, $12, $13, $13, $14, $15, $15, $16, $17, $18, $18, $19, $19, $1A, $1B, $1B, $1C, $1C, $1D, $1D dc.b $1E, $1E, $1F, $1F, $20, $20, $21, $21, $21, $22, $22, $22, $22, $23, $23, $23, $23, $23, $24, $24 dc.b $24, $24, $24, $24 - even -Map_Spikebonker:include "General/Sprites/Spikebonker/Map - Spikebonker.asm" - -Map_Chainspike: include "General/Sprites/Chainspike/Map - Chainspike.asm" - -Map_EggRobo: include "General/Sprites/Robotnik/Map - Eggrobo.asm" - -Map_DEZMiniboss: include "Levels/DEZ/Misc Object Data/Map - Miniboss.asm" - -Map_MechaSonic: include "General/Sprites/Mecha Sonic/Map - Mecha Sonic.asm" - -Map_MechaSonicExtra: include "General/Sprites/Mecha Sonic/Map - Mecha Sonic Extra.asm" - -DPLC_MechaSonic: include "General/Sprites/Mecha Sonic/DPLC - Mecha Sonic.asm" - -Map_SpriteMask: include "General/Sprites/Level Misc/Map - Sprite Mask.asm" - -Map_DEZEndBoss: include "Levels/DEZ/Misc Object Data/Map - End Boss.asm" - -Map_MHZEndBoss: include "Levels/MHZ/Misc Object Data/Map - End Boss.asm" - -Map_MHZMiniboss: include "Levels/MHZ/Misc Object Data/Map - Miniboss.asm" - -Map_MHZMinibossTree: include "Levels/MHZ/Misc Object Data/Map - Miniboss Tree.asm" - -Map_MHZMinibossLog: include "Levels/MHZ/Misc Object Data/Map - Miniboss Log.asm" - -Map_EggRoboStand: include "General/Sprites/Robotnik/Map - Egg Robo Stand.asm" - -Map_EggRoboRun: include "General/Sprites/Robotnik/Map - Egg Robo Run.asm" - -Map_Skorp: include "General/Sprites/Skorp/Map - Skorp.asm" - -Map_Sandworm: include "General/Sprites/Sandworm/Map - Sandworm.asm" - -Map_LRZRockCrusher: include "Levels/LRZ/Misc Object Data/Map - Rock Crusher.asm" - -Map_SSZMTZOrbs: include "Levels/SSZ/Misc Object Data/Map - MTZ Orbs.asm" - -Map_SSZGHZMisc: include "Levels/SSZ/Misc Object Data/Map - GHZ Misc.asm" - -Map_LRZMiniboss: include "Levels/LRZ/Misc Object Data/Map - Miniboss.asm" - -Map_FBZEggCapsule: include "Levels/FBZ/Misc Object Data/Map - Egg Capsule.asm" - -Map_SOZGhosts: include "General/Sprites/SOZ Ghosts/Map - SOZ Ghosts.asm" - -Map_LRZEndBoss: include "Levels/LRZ/Misc Object Data/Map - End Boss.asm" - -Map_LRZ3Platform: include "Levels/LRZ/Misc Object Data/Map - Act 3 Platform.asm" - -Map_LRZ3Autoscroll: include "Levels/LRZ/Misc Object Data/Map - Act 3 Autoscroll.asm" - -Map_LRZ3DeathEggFlash: include "Levels/LRZ/Misc Object Data/Map - Act 3 Death Egg Flash.asm" - -Map_LRZ3Debris: include "Levels/LRZ/Misc Object Data/Map - Act 3 Platform Debris.asm" - -Map_DEZFinalBossMisc: include "Levels/DEZ/Misc Object Data/Map - Final Boss Misc.asm" - -Map_BossMasterEmerald: include "Levels/DEZ/Misc Object Data/Map - Final Boss Master Emerald.asm" - -Map_DEZFinalBossDebris: include "Levels/DEZ/Misc Object Data/Map - Final Boss Debris.asm" - even -ArtKosM_StarPost_Stars1:binclude "General/Sprites/Starpost/Starpost Stars 1.bin" - even -ArtKosM_StarPostStars2:binclude "General/Sprites/Starpost/Starpost Stars 2.bin" - even -ArtKosM_StarPostStars3:binclude "General/Sprites/Starpost/Starpost Stars 3.bin" - even -MapEni_BlueSphereTitleFG:binclude "General/Blue Sphere/Enigma Map/Title FG.bin" - even -ArtKos_BlueSphereChar: binclude "General/Blue Sphere/Kosinski Art/Characters.bin" - even -Map_BlueSphereCharSprite: include "General/Blue Sphere/Map - Character Sprites.asm" - even -ArtKos_BlueSphereCharSprite: binclude "General/Blue Sphere/Kosinski Art/Character Sprites.bin" - even -ArtKos_BlueSphereNormalText: binclude "General/Blue Sphere/Kosinski Art/Normal Text.bin" - even -MapEni_BlueSphereTitleBG: binclude "General/Blue Sphere/Enigma Map/Title BG.bin" - even - -ArtNem_BlueSphereSKLogo: binclude "General/Blue Sphere/Nemesis Art/SK Logo.bin" - even - -ArtNem_BlueSphereTails: binclude "General/Blue Sphere/Nemesis Art/Tails Pose.bin" - even -ArtNem_MilesLifeIcon: binclude "General/Sprites/HUD Icon/Miles Life Icon.bin" - even -ArtUnc_Invincibility: binclude "General/Sprites/Shields/Invincibility.bin" - even - -ArtUnc_DashDust:binclude "General/Sprites/Dash Dust/Dash Dust.bin" - even - -ArtUnc_SuperSonic_Stars:binclude "General/Sprites/Shields/Super Sonic Stars.bin" - even - -ArtUnc_InstaShield:binclude "General/Sprites/Shields/Insta-Shield.bin" - even -ArtUnc_FireShield:binclude "General/Sprites/Shields/Fire Shield.bin" - even -ArtUnc_LightningShield:binclude "General/Sprites/Shields/Lightning Shield.bin" - even - + even +Map_Spikebonker: + include "General/Sprites/Spikebonker/Map - Spikebonker.asm" +Map_Chainspike: + include "General/Sprites/Chainspike/Map - Chainspike.asm" +Map_EggRobo: + include "General/Sprites/Robotnik/Map - Eggrobo.asm" +Map_DEZMiniboss: + include "Levels/DEZ/Misc Object Data/Map - Miniboss.asm" +Map_MechaSonic: + include "General/Sprites/Mecha Sonic/Map - Mecha Sonic.asm" +Map_MechaSonicExtra: + include "General/Sprites/Mecha Sonic/Map - Mecha Sonic Extra.asm" +DPLC_MechaSonic: + include "General/Sprites/Mecha Sonic/DPLC - Mecha Sonic.asm" +Map_SpriteMask: + include "General/Sprites/Level Misc/Map - Sprite Mask.asm" +Map_DEZEndBoss: + include "Levels/DEZ/Misc Object Data/Map - End Boss.asm" +Map_MHZEndBoss: + include "Levels/MHZ/Misc Object Data/Map - End Boss.asm" +Map_MHZMiniboss: + include "Levels/MHZ/Misc Object Data/Map - Miniboss.asm" +Map_MHZMinibossTree: + include "Levels/MHZ/Misc Object Data/Map - Miniboss Tree.asm" +Map_MHZMinibossLog: + include "Levels/MHZ/Misc Object Data/Map - Miniboss Log.asm" +Map_EggRoboStand: + include "General/Sprites/Robotnik/Map - Egg Robo Stand.asm" +Map_EggRoboRun: + include "General/Sprites/Robotnik/Map - Egg Robo Run.asm" +Map_Skorp: + include "General/Sprites/Skorp/Map - Skorp.asm" +Map_Sandworm: + include "General/Sprites/Sandworm/Map - Sandworm.asm" +Map_LRZRockCrusher: + include "Levels/LRZ/Misc Object Data/Map - Rock Crusher.asm" +Map_SSZMTZOrbs: + include "Levels/SSZ/Misc Object Data/Map - MTZ Orbs.asm" +Map_SSZGHZMisc: + include "Levels/SSZ/Misc Object Data/Map - GHZ Misc.asm" +Map_LRZMiniboss: + include "Levels/LRZ/Misc Object Data/Map - Miniboss.asm" +Map_FBZEggCapsule: + include "Levels/FBZ/Misc Object Data/Map - Egg Capsule.asm" +Map_SOZGhosts: + include "General/Sprites/SOZ Ghosts/Map - SOZ Ghosts.asm" +Map_LRZEndBoss: + include "Levels/LRZ/Misc Object Data/Map - End Boss.asm" +Map_LRZ3Platform: + include "Levels/LRZ/Misc Object Data/Map - Act 3 Platform.asm" +Map_LRZ3Autoscroll: + include "Levels/LRZ/Misc Object Data/Map - Act 3 Autoscroll.asm" +Map_LRZ3DeathEggFlash: + include "Levels/LRZ/Misc Object Data/Map - Act 3 Death Egg Flash.asm" +Map_LRZ3Debris: + include "Levels/LRZ/Misc Object Data/Map - Act 3 Platform Debris.asm" +Map_DEZFinalBossMisc: + include "Levels/DEZ/Misc Object Data/Map - Final Boss Misc.asm" +Map_BossMasterEmerald: + include "Levels/DEZ/Misc Object Data/Map - Final Boss Master Emerald.asm" +Map_DEZFinalBossDebris: + include "Levels/DEZ/Misc Object Data/Map - Final Boss Debris.asm" + even +ArtKosM_StarPost_Stars1: + binclude "General/Sprites/Starpost/Starpost Stars 1.bin" + even +ArtKosM_StarPostStars2: + binclude "General/Sprites/Starpost/Starpost Stars 2.bin" + even +ArtKosM_StarPostStars3: + binclude "General/Sprites/Starpost/Starpost Stars 3.bin" + even +MapEni_BlueSphereTitleFG: + binclude "General/Blue Sphere/Enigma Map/Title FG.bin" + even +ArtKos_BlueSphereChar: + binclude "General/Blue Sphere/Kosinski Art/Characters.bin" + even +Map_BlueSphereCharSprite: + include "General/Blue Sphere/Map - Character Sprites.asm" + even +ArtKos_BlueSphereCharSprite: + binclude "General/Blue Sphere/Kosinski Art/Character Sprites.bin" + even +ArtKos_BlueSphereNormalText: + binclude "General/Blue Sphere/Kosinski Art/Normal Text.bin" + even +MapEni_BlueSphereTitleBG: + binclude "General/Blue Sphere/Enigma Map/Title BG.bin" + even +ArtNem_BlueSphereSKLogo: + binclude "General/Blue Sphere/Nemesis Art/SK Logo.bin" + even +ArtNem_BlueSphereTails: + binclude "General/Blue Sphere/Nemesis Art/Tails Pose.bin" + even +ArtNem_MilesLifeIcon: + binclude "General/Sprites/HUD Icon/Miles Life Icon.bin" + even +ArtUnc_Invincibility: + binclude "General/Sprites/Shields/Invincibility.bin" + even +ArtUnc_DashDust: + binclude "General/Sprites/Dash Dust/Dash Dust.bin" + even +ArtUnc_SuperSonic_Stars: + binclude "General/Sprites/Shields/Super Sonic Stars.bin" + even +ArtUnc_InstaShield: + binclude "General/Sprites/Shields/Insta-Shield.bin" + even +ArtUnc_FireShield: + binclude "General/Sprites/Shields/Fire Shield.bin" + even +ArtUnc_LightningShield: + binclude "General/Sprites/Shields/Lightning Shield.bin" + even ArtUnc_LightningShield_Sparks: - binclude "General/Sprites/Shields/Sparks.bin" + binclude "General/Sprites/Shields/Sparks.bin" ArtUnc_LightningShield_Sparks_end: - even - -ArtUnc_BubbleShield:binclude "General/Sprites/Shields/Bubble Shield.bin" - even -ArtNem_GrayButton:binclude "General/Sprites/Buttons/Gray Button.bin" - even - -ArtNem_DiagonalSpring: binclude "General/Sprites/Level Misc/Diagonal Spring.bin" - even - -ArtNem_SonicLifeIcon:binclude "General/Sprites/HUD Icon/Sonic Life icon.bin" - even - -ArtNem_KnucklesLifeIcon:binclude "General/Sprites/HUD Icon/Knuckles Life icon.bin" - even -ArtNem_Monitors:binclude "General/Sprites/Monitors/Monitors.bin" - even - -ArtNem_S2Signpost: binclude "General/Sprites/S2Menu/Signpost.bin" - even -ArtNem_Bubbles: binclude "General/Sprites/Bubbles/Bubbles.bin" - even - -ArtNem_GameOver: binclude "General/Sprites/Game Over/GameOver.bin" - even -ArtNem_Explosion:binclude "General/Sprites/Enemy Misc/Explosion.bin" - even -ArtNem_ContinueTails:binclude "General/Sprites/S2Menu/Tails Continue Sprites.bin" - even -ArtNem_MiniSonic:binclude "General/Sprites/S2Menu/Sonic Continue Icon.bin" - even - -ArtNem_SpikesSprings: binclude "General/Sprites/Level Misc/SpikesSprings.bin" - even - -ArtNem_RingHUDText: binclude "General/Sprites/Ring/RingHUDText.bin" - even - -ArtNem_EnemyPtsStarPost:binclude "General/Sprites/Enemy Misc/EnemyPtsStarpost.bin" - even - -ArtNem_Seal: binclude "General/Sprites/Animals/Seal.bin" - even -ArtNem_Pig: binclude "General/Sprites/Animals/Pig.bin" - even - -ArtNem_BlueFlicky: binclude "General/Sprites/Animals/Blue Flicky.bin" - even - -ArtNem_Chicken: binclude "General/Sprites/Animals/Chicken.bin" - even - -ArtNem_Penguin: binclude "General/Sprites/Animals/Penguin.bin" - even -ArtNem_Squirrel: binclude "General/Sprites/Animals/Squirrel.bin" - even - -ArtNem_Rabbit: binclude "General/Sprites/Animals/Rabbit.bin" - even - -ArtNem_BonusStage: binclude "General/Sprites/Bonus/Bonus Stage.bin" - even + even +ArtUnc_BubbleShield: + binclude "General/Sprites/Shields/Bubble Shield.bin" + even +ArtNem_GrayButton: + binclude "General/Sprites/Buttons/Gray Button.bin" + even +ArtNem_DiagonalSpring: + binclude "General/Sprites/Level Misc/Diagonal Spring.bin" + even +ArtNem_SonicLifeIcon: + binclude "General/Sprites/HUD Icon/Sonic Life icon.bin" + even +ArtNem_KnucklesLifeIcon: + binclude "General/Sprites/HUD Icon/Knuckles Life icon.bin" + even +ArtNem_Monitors: + binclude "General/Sprites/Monitors/Monitors.bin" + even +ArtNem_S2Signpost: + binclude "General/Sprites/S2Menu/Signpost.bin" + even +ArtNem_Bubbles: + binclude "General/Sprites/Bubbles/Bubbles.bin" + even +ArtNem_GameOver: + binclude "General/Sprites/Game Over/GameOver.bin" + even +ArtNem_Explosion: + binclude "General/Sprites/Enemy Misc/Explosion.bin" + even +ArtNem_ContinueTails: + binclude "General/Sprites/S2Menu/Tails Continue Sprites.bin" + even +ArtNem_MiniSonic: + binclude "General/Sprites/S2Menu/Sonic Continue Icon.bin" + even +ArtNem_SpikesSprings: + binclude "General/Sprites/Level Misc/SpikesSprings.bin" + even +ArtNem_RingHUDText: + binclude "General/Sprites/Ring/RingHUDText.bin" + even +ArtNem_EnemyPtsStarPost: + binclude "General/Sprites/Enemy Misc/EnemyPtsStarpost.bin" + even +ArtNem_Seal: + binclude "General/Sprites/Animals/Seal.bin" + even +ArtNem_Pig: + binclude "General/Sprites/Animals/Pig.bin" + even +ArtNem_BlueFlicky: + binclude "General/Sprites/Animals/Blue Flicky.bin" + even +ArtNem_Chicken: + binclude "General/Sprites/Animals/Chicken.bin" + even +ArtNem_Penguin: + binclude "General/Sprites/Animals/Penguin.bin" + even +ArtNem_Squirrel: + binclude "General/Sprites/Animals/Squirrel.bin" + even +ArtNem_Rabbit: + binclude "General/Sprites/Animals/Rabbit.bin" + even +ArtNem_BonusStage: + binclude "General/Sprites/Bonus/Bonus Stage.bin" + even if ~~strip_padding align $100 endif -FBZ_16x16_Kos: binclude "Levels/FBZ/Blocks/Primary.bin" - even -ArtKosM_FBZ: binclude "Levels/FBZ/Tiles/Primary.bin" - even -FBZ_128x128_Kos:binclude "Levels/FBZ/Chunks/Primary.bin" - even - -MHZ_16x16_Primary_Kos:binclude "Levels/MHZ/Blocks/Primary.bin" - even -ArtKosM_MHZ_Primary:binclude "Levels/MHZ/Tiles/Primary.bin" - even -MHZ_128x128_Primary_Kos:binclude "Levels/MHZ/Chunks/Primary.bin" - even -MHZ_16x16_Secondary_Kos:binclude "Levels/MHZ/Blocks/Secondary.bin" - even -ArtKosM_MHZ_Secondary:binclude "Levels/MHZ/Tiles/Secondary.bin" - even -MHZ_128x128_Secondary_Kos:binclude "Levels/MHZ/Chunks/Secondary.bin" - even -MHZ_16x16_Custom_Kos:binclude "Levels/MHZ/Blocks/Custom.bin" - even -ArtKosM_MHZ_Custom: binclude "Levels/MHZ/Tiles/Custom.bin" - even -MHZ_128x128_Custom_Kos:binclude "Levels/MHZ/Chunks/Custom.bin" - even - -SOZ_16x16_Primary_Kos:binclude "Levels/SOZ/Blocks/Primary.bin" - even -ArtKosM_SOZ_Primary:binclude "Levels/SOZ/Tiles/Primary.bin" - even +FBZ_16x16_Kos: + binclude "Levels/FBZ/Blocks/Primary.bin" + even +ArtKosM_FBZ: + binclude "Levels/FBZ/Tiles/Primary.bin" + even +FBZ_128x128_Kos: + binclude "Levels/FBZ/Chunks/Primary.bin" + even +MHZ_16x16_Primary_Kos: + binclude "Levels/MHZ/Blocks/Primary.bin" + even +ArtKosM_MHZ_Primary: + binclude "Levels/MHZ/Tiles/Primary.bin" + even +MHZ_128x128_Primary_Kos: + binclude "Levels/MHZ/Chunks/Primary.bin" + even +MHZ_16x16_Secondary_Kos: + binclude "Levels/MHZ/Blocks/Secondary.bin" + even +ArtKosM_MHZ_Secondary: + binclude "Levels/MHZ/Tiles/Secondary.bin" + even +MHZ_128x128_Secondary_Kos: + binclude "Levels/MHZ/Chunks/Secondary.bin" + even +MHZ_16x16_Custom_Kos: + binclude "Levels/MHZ/Blocks/Custom.bin" + even +ArtKosM_MHZ_Custom: + binclude "Levels/MHZ/Tiles/Custom.bin" + even +MHZ_128x128_Custom_Kos: + binclude "Levels/MHZ/Chunks/Custom.bin" + even +SOZ_16x16_Primary_Kos: + binclude "Levels/SOZ/Blocks/Primary.bin" + even +ArtKosM_SOZ_Primary: + binclude "Levels/SOZ/Tiles/Primary.bin" + even SOZ_128x128_Kos:binclude "Levels/SOZ/Chunks/Primary.bin" - even - -SOZ1_16x16_Secondary_Kos:binclude "Levels/SOZ/Blocks/Act 1 Secondary.bin" - even -ArtKosM_SOZ1_Secondary:binclude "Levels/SOZ/Tiles/Act 1 Secondary.bin" - even -SOZ_128x128_Unused_Kos:binclude "Levels/SOZ/Chunks/Unused.bin" ; This is in the same spot Act 1 Secondary chunks go - even -SOZ1_16x16_Custom_Kos:binclude "Levels/SOZ/Blocks/Act 1 Custom.bin" - even -ArtKosM_SOZ1_Custom:binclude "Levels/SOZ/Tiles/Act 1 Custom.bin" - even - -SOZ2_16x16_Secondary_Kos:binclude "Levels/SOZ/Blocks/Act 2 Secondary.bin" - even -ArtKosM_SOZ2_Secondary:binclude "Levels/SOZ/Tiles/Act 2 Secondary.bin" - even -SOZ_128x128_Unused2_Kos:binclude "Levels/SOZ/Chunks/Unused2.bin" ; This is in the same spot Act 2 Secondary chunks go - even -SOZ2_16x16_Custom_Kos:binclude "Levels/SOZ/Blocks/Act 2 Custom.bin" - even -ArtKosM_SOZ2_Custom:binclude "Levels/SOZ/Tiles/Act 2 Custom.bin" - even - -LRZ_16x16_Primary_Kos:binclude "Levels/LRZ/Blocks/Primary.bin" - even -ArtKosM_LRZ_Primary:binclude "Levels/LRZ/Tiles/Primary.bin" - even -LRZ_128x128_Primary_Kos:binclude "Levels/LRZ/Chunks/Primary.bin" - even -LRZ1_16x16_Secondary_Kos:binclude "Levels/LRZ/Blocks/Act 1 Secondary.bin" - even -ArtKosM_LRZ1_Secondary:binclude "Levels/LRZ/Tiles/Act 1 Secondary.bin" - even -LRZ1_128x128_Secondary_Kos:binclude "Levels/LRZ/Chunks/Act 1 Secondary.bin" - even - -LRZ2_16x16_Secondary_Kos:binclude "Levels/LRZ/Blocks/Act 2 Secondary.bin" - even -ArtKosM_LRZ2_Secondary:binclude "Levels/LRZ/Tiles/Act 2 Secondary.bin" - even -LRZ2_128x128_Secondary_Kos:binclude "Levels/LRZ/Chunks/Act 2 Secondary.bin" - even - -HPZ_16x16_Primary_Kos:binclude "Levels/HPZ/Blocks/Primary.bin" - even -ArtKosM_HPZ_Primary:binclude "Levels/HPZ/Tiles/Primary.bin" - even -HPZ_128x128_Primary_Kos:binclude "Levels/HPZ/Chunks/Primary.bin" - even - -LRZ3_16x16_Secondary_Kos:binclude "Levels/LRZ/Blocks/Act 3 Secondary.bin" - even -ArtKosM_LRZ3_Secondary:binclude "Levels/LRZ/Tiles/Boss Secondary.bin" - even -LRZ3_128x128_Secondary_Kos:binclude "Levels/LRZ/Chunks/Act 3 Secondary.bin" - even - -HPZ_16x16_Secondary_Kos:binclude "Levels/HPZ/Blocks/Secondary.bin" - even -ArtKosM_HPZ_Secondary:binclude "Levels/HPZ/Tiles/Secondary.bin" - even -HPZ_128x128_Secondary_Kos:binclude "Levels/HPZ/Chunks/Secondary.bin" - even - -SSZ1_16x16_Primary_Kos:binclude "Levels/SSZ/Blocks/Act 1 Primary.bin" - even -ArtKosM_SSZ1_Primary:binclude "Levels/SSZ/Tiles/Act 1 Primary.bin" - even - -SSZ1_128x128_Primary_Kos:binclude "Levels/SSZ/Chunks/Act 1 Primary.bin" - even -SSZ1_16x16_Secondary_Kos:binclude "Levels/SSZ/Blocks/Act 1 Secondary.bin" - even -ArtKosM_SSZ1_Secondary:binclude "Levels/SSZ/Tiles/Act 1 Secondary.bin" - even - -SSZ1_128x128_Secondary_Kos:binclude "Levels/SSZ/Chunks/Act 1 Secondary.bin" - even -SSZ1_16x16_Custom_Kos:binclude "Levels/SSZ/Blocks/Act 1 Custom.bin" - even -ArtKosM_SSZ1_Custom:binclude "Levels/SSZ/Tiles/Act 1 Custom.bin" - even -SSZ1_128x128_Custom_Kos:binclude "Levels/SSZ/Chunks/Act 1 Custom.bin" - even - -SSZ2_16x16_Kos: binclude "Levels/SSZ/Blocks/Act 2.bin" - even -ArtKosM_SSZ2: binclude "Levels/SSZ/Tiles/Act 2.bin" - even -SSZ2_128x128_Kos:binclude "Levels/SSZ/Chunks/Act 2.bin" - even - -DEZ_16x16_Primary_Kos:binclude "Levels/DEZ/Blocks/Primary.bin" - even -ArtKosM_DEZ_Primary:binclude "Levels/DEZ/Tiles/Primary.bin" - even -DEZ_128x128_Kos:binclude "Levels/DEZ/Chunks/Primary.bin" - even - -DEZ1_16x16_Secondary_Kos:binclude "Levels/DEZ/Blocks/Act 1 Secondary.bin" - even -ArtKosM_DEZ1_Secondary:binclude "Levels/DEZ/Tiles/Act 1 Secondary.bin" - even - -DEZ2_16x16_Secondary_Kos:binclude "Levels/DEZ/Blocks/Act 2 Secondary.bin" - even -ArtKosM_DEZ2_Secondary:binclude "Levels/DEZ/Tiles/Act 2 Secondary.bin" - even - -DEZ3_16x16_Kos: binclude "Levels/DEZ/Blocks/Act 3.bin" - even -ArtKosM_DEZ3: binclude "Levels/DEZ/Tiles/Final Boss Act.bin" - even -DEZ3_128x128_Kos:binclude "Levels/DEZ/Chunks/Act 3.bin" - even - -DDZ_16x16_Kos: binclude "Levels/DDZ/Blocks/Primary.bin" - even -ArtKosM_DDZ: binclude "Levels/DDZ/Tiles/Primary.bin" - even -DDZ_128x128_Kos:binclude "Levels/DDZ/Chunks/Primary.bin" - even - -Pachinko_16x16_Kos:binclude "Levels/Pachinko/Blocks/Primary.bin" - even -ArtKosM_Pachinko:binclude "Levels/Pachinko/Tiles/Pachinko.bin" - even -Pachinko_128x128_Kos:binclude "Levels/Pachinko/Chunks/Primary.bin" - even - -Slots_16x16_Kos:binclude "Levels/Slots/Blocks/Primary.bin" - even -ArtKosM_Slots: binclude "Levels/Slots/Tiles/Slots.bin" - even -Slots_128x128_Kos:binclude "Levels/Slots/Chunks/Primary.bin" - even + even +SOZ1_16x16_Secondary_Kos: + binclude "Levels/SOZ/Blocks/Act 1 Secondary.bin" + even +ArtKosM_SOZ1_Secondary: + binclude "Levels/SOZ/Tiles/Act 1 Secondary.bin" + even +SOZ_128x128_Unused_Kos: + binclude "Levels/SOZ/Chunks/Unused.bin" ; This is in the same spot Act 1 Secondary chunks go + even +SOZ1_16x16_Custom_Kos: + binclude "Levels/SOZ/Blocks/Act 1 Custom.bin" + even +ArtKosM_SOZ1_Custom: + binclude "Levels/SOZ/Tiles/Act 1 Custom.bin" + even +SOZ2_16x16_Secondary_Kos: + binclude "Levels/SOZ/Blocks/Act 2 Secondary.bin" + even +ArtKosM_SOZ2_Secondary: + binclude "Levels/SOZ/Tiles/Act 2 Secondary.bin" + even +SOZ_128x128_Unused2_Kos: + binclude "Levels/SOZ/Chunks/Unused2.bin" ; This is in the same spot Act 2 Secondary chunks go + even +SOZ2_16x16_Custom_Kos: + binclude "Levels/SOZ/Blocks/Act 2 Custom.bin" + even +ArtKosM_SOZ2_Custom: + binclude "Levels/SOZ/Tiles/Act 2 Custom.bin" + even +LRZ_16x16_Primary_Kos: + binclude "Levels/LRZ/Blocks/Primary.bin" + even +ArtKosM_LRZ_Primary: + binclude "Levels/LRZ/Tiles/Primary.bin" + even +LRZ_128x128_Primary_Kos: + binclude "Levels/LRZ/Chunks/Primary.bin" + even +LRZ1_16x16_Secondary_Kos: + binclude "Levels/LRZ/Blocks/Act 1 Secondary.bin" + even +ArtKosM_LRZ1_Secondary: + binclude "Levels/LRZ/Tiles/Act 1 Secondary.bin" + even +LRZ1_128x128_Secondary_Kos: + binclude "Levels/LRZ/Chunks/Act 1 Secondary.bin" + even +LRZ2_16x16_Secondary_Kos: + binclude "Levels/LRZ/Blocks/Act 2 Secondary.bin" + even +ArtKosM_LRZ2_Secondary: + binclude "Levels/LRZ/Tiles/Act 2 Secondary.bin" + even +LRZ2_128x128_Secondary_Kos: + binclude "Levels/LRZ/Chunks/Act 2 Secondary.bin" + even +HPZ_16x16_Primary_Kos: + binclude "Levels/HPZ/Blocks/Primary.bin" + even +ArtKosM_HPZ_Primary: + binclude "Levels/HPZ/Tiles/Primary.bin" + even +HPZ_128x128_Primary_Kos: + binclude "Levels/HPZ/Chunks/Primary.bin" + even +LRZ3_16x16_Secondary_Kos: + binclude "Levels/LRZ/Blocks/Act 3 Secondary.bin" + even +ArtKosM_LRZ3_Secondary: + binclude "Levels/LRZ/Tiles/Boss Secondary.bin" + even +LRZ3_128x128_Secondary_Kos: + binclude "Levels/LRZ/Chunks/Act 3 Secondary.bin" + even +HPZ_16x16_Secondary_Kos: + binclude "Levels/HPZ/Blocks/Secondary.bin" + even +ArtKosM_HPZ_Secondary: + binclude "Levels/HPZ/Tiles/Secondary.bin" + even +HPZ_128x128_Secondary_Kos: + binclude "Levels/HPZ/Chunks/Secondary.bin" + even +SSZ1_16x16_Primary_Kos: + binclude "Levels/SSZ/Blocks/Act 1 Primary.bin" + even +ArtKosM_SSZ1_Primary: + binclude "Levels/SSZ/Tiles/Act 1 Primary.bin" + even +SSZ1_128x128_Primary_Kos: + binclude "Levels/SSZ/Chunks/Act 1 Primary.bin" + even +SSZ1_16x16_Secondary_Kos: + binclude "Levels/SSZ/Blocks/Act 1 Secondary.bin" + even +ArtKosM_SSZ1_Secondary: + binclude "Levels/SSZ/Tiles/Act 1 Secondary.bin" + even +SSZ1_128x128_Secondary_Kos: + binclude "Levels/SSZ/Chunks/Act 1 Secondary.bin" + even +SSZ1_16x16_Custom_Kos: + binclude "Levels/SSZ/Blocks/Act 1 Custom.bin" + even +ArtKosM_SSZ1_Custom: + binclude "Levels/SSZ/Tiles/Act 1 Custom.bin" + even +SSZ1_128x128_Custom_Kos: + binclude "Levels/SSZ/Chunks/Act 1 Custom.bin" + even +SSZ2_16x16_Kos: + binclude "Levels/SSZ/Blocks/Act 2.bin" + even +ArtKosM_SSZ2: + binclude "Levels/SSZ/Tiles/Act 2.bin" + even +SSZ2_128x128_Kos: + binclude "Levels/SSZ/Chunks/Act 2.bin" + even +DEZ_16x16_Primary_Kos: + binclude "Levels/DEZ/Blocks/Primary.bin" + even +ArtKosM_DEZ_Primary: + binclude "Levels/DEZ/Tiles/Primary.bin" + even +DEZ_128x128_Kos: + binclude "Levels/DEZ/Chunks/Primary.bin" + even +DEZ1_16x16_Secondary_Kos: + binclude "Levels/DEZ/Blocks/Act 1 Secondary.bin" + even +ArtKosM_DEZ1_Secondary: + binclude "Levels/DEZ/Tiles/Act 1 Secondary.bin" + even +DEZ2_16x16_Secondary_Kos: + binclude "Levels/DEZ/Blocks/Act 2 Secondary.bin" + even +ArtKosM_DEZ2_Secondary: + binclude "Levels/DEZ/Tiles/Act 2 Secondary.bin" + even +DEZ3_16x16_Kos: + binclude "Levels/DEZ/Blocks/Act 3.bin" + even +ArtKosM_DEZ3: + binclude "Levels/DEZ/Tiles/Final Boss Act.bin" + even +DEZ3_128x128_Kos: + binclude "Levels/DEZ/Chunks/Act 3.bin" + even +DDZ_16x16_Kos: + binclude "Levels/DDZ/Blocks/Primary.bin" + even +ArtKosM_DDZ: + binclude "Levels/DDZ/Tiles/Primary.bin" + even +DDZ_128x128_Kos: + binclude "Levels/DDZ/Chunks/Primary.bin" + even +Pachinko_16x16_Kos: + binclude "Levels/Pachinko/Blocks/Primary.bin" + even +ArtKosM_Pachinko: + binclude "Levels/Pachinko/Tiles/Pachinko.bin" + even +Pachinko_128x128_Kos: + binclude "Levels/Pachinko/Chunks/Primary.bin" + even +Slots_16x16_Kos: + binclude "Levels/Slots/Blocks/Primary.bin" + even +ArtKosM_Slots: + binclude "Levels/Slots/Tiles/Slots.bin" + even +Slots_128x128_Kos: + binclude "Levels/Slots/Chunks/Primary.bin" + even if ~~strip_padding align $100 @@ -202495,9 +203065,10 @@ Slots_128x128_Kos:binclude "Levels/Slots/Chunks/Primary.bin" even endif -Character_Speeds: dc.w $600, $10, $20, 0 ; Sonic - dc.w $4C0, $1C, $70, 0 ; Tails - dc.w $580, $10, $200, 0 ; Knuckles +Character_Speeds: + dc.w $600, $10, $20, 0 ; Sonic + dc.w $4C0, $1C, $70, 0 ; Tails + dc.w $580, $10, $200, 0 ; Knuckles Sonic_Start_Locations: binclude "Levels/AIZ/Start Location/Sonic/1.bin" binclude "Levels/AIZ/Start Location/Sonic/2.bin" @@ -202692,7 +203263,7 @@ RingLocPtrs: dc.l AIZ1_Rings dc.l HPZ_Rings dc.l DEZ3_Rings dc.l DEZ3_Rings -AutoTunnel_Data: dc.l AutoTunnel_00 +AutoTunnel_Data:dc.l AutoTunnel_00 dc.l AutoTunnel_01_02 dc.l AutoTunnel_01_02 dc.l AutoTunnel_03 @@ -202724,7 +203295,8 @@ AutoTunnel_Data: dc.l AutoTunnel_00 dc.l SpriteTerminatB dc.l SpriteTerminatB dc.l SpriteTerminatB -FBZSnakePlatform_Data: dc.l word_1EE2D4 +FBZSnakePlatform_Data: + dc.l word_1EE2D4 dc.l word_1EE2E4 dc.l word_1EE2F4 dc.l word_1EE310 @@ -202783,64 +203355,61 @@ DEZTunnelPaths: dc.l word_1FB49E SSCompressedLayoutPtrs: dc.l SSLayoutData1_Kos dc.l SSLayoutData2_Kos -SlotBonusLayout: - binclude "Levels/Slots/SSLayout/Bonus Player Start.bin" - even +SlotBonusLayout:binclude "Levels/Slots/SSLayout/Bonus Player Start.bin" + even binclude "Levels/Slots/SSLayout/Bonus Layout.bin" - even - + even byte_1E4484: dc.b 1, 3, 1, 3, 8, 3, 8, 5, 1, 3, 6, 4, 1, 7, 6, 5, 8, 6, 4, 3 dc.b 4, 3, 4, 5, 8, 4, 5, 3, 7, 3, 8, 3, 6, 5, 6, 7, 4, 3, 7, 5 dc.b 6, 4, 6, 4, 7, 3, 3, 5, 4, 3, 4, 6, 3, 4, 3, 7, 4, 3, 4, 3 dc.b 4, 3, 4, 3 byte_1E44C4: dc.b $50, $32, $28, $23, $23, $1E, $1E, $14, $14, $A, $A, $A, $A, 5, 5, 5 - SpriteTerminat1:dc.w $FFFF, 0, 0 AIZ1_Sprites: binclude "Levels/AIZ/Object Pos/1.bin" - even + even AIZ2_Sprites: binclude "Levels/AIZ/Object Pos/2.bin" - even + even AIZ1_Rings: binclude "Levels/AIZ/Ring Pos/1.bin" - even + even AIZ2_Rings: binclude "Levels/AIZ/Ring Pos/2.bin" - even + even SpriteTerminat2:dc.w $FFFF, 0, 0 HCZ1_Sprites: binclude "Levels/HCZ/Object Pos/1.bin" - even + even HCZ2_Sprites: binclude "Levels/HCZ/Object Pos/2.bin" - even + even HCZ1_Rings: binclude "Levels/HCZ/Ring Pos/1.bin" - even + even HCZ2_Rings: binclude "Levels/HCZ/Ring Pos/2.bin" - even + even SpriteTerminat3:dc.w $FFFF, 0, 0 MGZ1_Sprites: binclude "Levels/MGZ/Object Pos/1.bin" - even + even MGZ1_Rings: binclude "Levels/MGZ/Ring Pos/1.bin" - even + even SpriteTerminat4:dc.w $FFFF, 0, 0 MGZ2_Sprites: binclude "Levels/MGZ/Object Pos/2.bin" - even + even MGZ2_Rings: binclude "Levels/MGZ/Ring Pos/2.bin" - even + even SpriteTerminat5:dc.w $FFFF, 0, 0 CNZ1_Sprites: binclude "Levels/CNZ/Object Pos/1.bin" - even + even CNZ2_Sprites: binclude "Levels/CNZ/Object Pos/2.bin" - even + even CNZ1_Rings: binclude "Levels/CNZ/Ring Pos/1.bin" - even + even CNZ2_Rings: binclude "Levels/CNZ/Ring Pos/2.bin" - even + even SpriteTerminat6:dc.w $FFFF, 0, 0 FBZ1_Sprites: binclude "Levels/FBZ/Object Pos/1.bin" - even + even FBZ2_Sprites: binclude "Levels/FBZ/Object Pos/2.bin" - even + even FBZ1_Rings: binclude "Levels/FBZ/Ring Pos/1.bin" - even + even FBZ2_Rings: binclude "Levels/FBZ/Ring Pos/2.bin" - even + even word_1EE2D4: dc.w $10F1 dc.w $118C dc.w $118C @@ -202963,27 +203532,28 @@ word_1EE398: dc.w $1D79 dc.w 0 SpriteTerminat7:dc.w $FFFF, 0, 0 ICZ1_Sprites: binclude "Levels/ICZ/Object Pos/1.bin" - even + even ICZ2_Sprites: binclude "Levels/ICZ/Object Pos/2.bin" - even + even ICZ1_Rings: binclude "Levels/ICZ/Ring Pos/1.bin" - even + even ICZ2_Rings: binclude "Levels/ICZ/Ring Pos/2.bin" - even + even SpriteTerminat8:dc.w $FFFF, 0, 0 LBZ1_Sprites: binclude "Levels/LBZ/Object Pos/1.bin" - even + even LBZ2_Sprites: binclude "Levels/LBZ/Object Pos/2.bin" - even + even LBZ1_Rings: binclude "Levels/LBZ/Ring Pos/1.bin" - even + even LBZ2_Rings: binclude "Levels/LBZ/Ring Pos/2.bin" - even + even AutoTunnel_00: dc.w $C dc.w $F60, $578 dc.w $F60, $548 dc.w $F60, $378 -AutoTunnel_01_02: dc.w $38 +AutoTunnel_01_02: + dc.w $38 dc.w $D40, $770 dc.w $D48, $770 dc.w $D50, $770 @@ -203355,22 +203925,22 @@ AutoTunnel_14: dc.w $28 dc.w $36A8, $7F0 SpriteTerminat9:dc.w $FFFF, 0, 0 MHZ1_Sprites: binclude "Levels/MHZ/Object Pos/1.bin" - even + even MHZ2_Sprites: binclude "Levels/MHZ/Object Pos/2.bin" - even + even MHZ1_Rings: binclude "Levels/MHZ/Ring Pos/1.bin" - even + even MHZ2_Rings: binclude "Levels/MHZ/Ring Pos/2.bin" - even + even SpriteTerminatA:dc.w $FFFF, 0, 0 SOZ1_Sprites: binclude "Levels/SOZ/Object Pos/1.bin" - even + even SOZ2_Sprites: binclude "Levels/SOZ/Object Pos/2.bin" - even + even SOZ1_Rings: binclude "Levels/SOZ/Ring Pos/1.bin" - even + even SOZ2_Rings: binclude "Levels/SOZ/Ring Pos/2.bin" - even + even word_1F6C70: dc.w $A68, $13A0 dc.w $D00, $FFFF word_1F6C78: dc.w $A70, $19C0 @@ -203497,31 +204067,31 @@ AutoTunnel_19: dc.w $30, $3A38 dc.w $1F0 SpriteTerminatB:dc.w $FFFF, 0, 0 LRZ1_Sprites: binclude "Levels/LRZ/Object Pos/1.bin" - even + even LRZ2_Sprites: binclude "Levels/LRZ/Object Pos/2.bin" - even + even LRZ1_Rings: binclude "Levels/LRZ/Ring Pos/1.bin" - even + even LRZ2_Rings: binclude "Levels/LRZ/Ring Pos/2.bin" - even + even SpriteTerminatC:dc.w $FFFF, 0, 0 SSZ1_Sprites: binclude "Levels/SSZ/Object Pos/1.bin" - even + even SSZ2_SPrites: binclude "Levels/SSZ/Object Pos/2.bin" - even + even SSZ1_Rings: binclude "Levels/SSZ/Ring Pos/1.bin" - even + even SSZ2_Rings: binclude "Levels/SSZ/Ring Pos/2.bin" - even + even SpriteTerminatD:dc.w $FFFF, 0, 0 DEZ1_Sprites: binclude "Levels/DEZ/Object Pos/1.bin" - even + even DEZ2_Sprites: binclude "Levels/DEZ/Object Pos/2.bin" - even + even DEZ1_Rings: binclude "Levels/DEZ/Ring Pos/1.bin" - even + even DEZ2_Rings: binclude "Levels/DEZ/Ring Pos/2.bin" - even + even word_1FB49E: dc.w $1E dc.w $1B80, $331 dc.w $1BD8, $328 @@ -203677,78 +204247,81 @@ word_1FB6CE: dc.w 9 dc.w $24D8, $638 SpriteTerminatE:dc.w $FFFF, 0, 0 DDZ1_Sprites: binclude "Levels/DDZ/Object Pos/1.bin" - even + even DDZ2_Sprites: binclude "Levels/DDZ/Object Pos/2.bin" - even + even DDZ1_Rings: binclude "Levels/DDZ/Ring Pos/1.bin" - even + even DDZ2_Rings: binclude "Levels/DDZ/Ring Pos/2.bin" - even + even SpriteTerminatF:dc.w $FFFF, 0, 0 Ending_Sprites: binclude "Levels/SSZ/Object Pos/Ending.bin" - even + even Ending_Rings: binclude "Levels/SSZ/Ring Pos/Ending.bin" - even + even SpriteTerminatG:dc.w $FFFF, 0, 0 ALZ_Sprites: binclude "Levels/ALZ/Object Pos/1.bin" - even + even ALZ_Rings: binclude "Levels/ALZ/Ring Pos/1.bin" - even + even SpriteTerminatH:dc.w $FFFF, 0, 0 BPZ_Sprites: binclude "Levels/BPZ/Object Pos/1.bin" - even + even BPZ_Rings: binclude "Levels/BPZ/Ring Pos/1.bin" - even + even SpriteTerminatI:dc.w $FFFF, 0, 0 DPZ_Sprites: binclude "Levels/DPZ/Object Pos/1.bin" - even + even DPZ_Rings: binclude "Levels/DPZ/Ring Pos/1.bin" - even + even SpriteTerminatJ:dc.w $FFFF, 0, 0 CGZ_Sprites: binclude "Levels/CGZ/Object Pos/1.bin" - even + even CGZ_Rings: binclude "Levels/CGZ/Ring Pos/1.bin" - even + even SpriteTerminatK:dc.w $FFFF, 0, 0 EMZ_Sprites: binclude "Levels/EMZ/Object Pos/1.bin" - even + even EMZ_Rings: binclude "Levels/EMZ/Ring Pos/1.bin" - even + even SpriteTerminatL:dc.w $FFFF, 0, 0 Gumball_Sprites:binclude "Levels/Gumball/Object Pos/1.bin" - even + even Gumball_Rings: binclude "Levels/Gumball/Ring Pos/1.bin" - even + even SpriteTerminatM:dc.w $FFFF, 0, 0 -Pachinko_Sprites:binclude "Levels/Pachinko/Object Pos/1.bin" - even +Pachinko_Sprites: + binclude "Levels/Pachinko/Object Pos/1.bin" + even Pachinko_Rings: binclude "Levels/Pachinko/Ring Pos/1.bin" - even + even SpriteTerminatN:dc.w $FFFF, 0, 0 Slots_Sprites: binclude "Levels/Slots/Object Pos/1.bin" - even + even Slots_Rings: binclude "Levels/Slots/Ring Pos/1.bin" - even + even SpriteTerminatO:dc.w $FFFF, 0, 0 LRZ3_Sprites: binclude "Levels/LRZ/Object Pos/3.bin" - even + even HPZ_Sprites: binclude "Levels/HPZ/Object Pos/1.bin" - even + even LRZ3_Rings: binclude "Levels/LRZ/Ring Pos/3.bin" - even + even HPZ_Rings: binclude "Levels/HPZ/Ring Pos/1.bin" - even + even SpriteTerminatP:dc.w $FFFF, 0, 0 DEZ3_Sprites: binclude "Levels/DEZ/Object Pos/3.bin" - even + even HPZMini_Sprites:binclude "Levels/HPZ/Object Pos/Mini.bin" - even + even DEZ3_Rings: binclude "Levels/DEZ/Ring Pos/3.bin" - even -SSLayoutData1_Kos: binclude "General/Special Stage/Layout/SK Set 1.bin" - even -SSLayoutData2_Kos: binclude "General/Special Stage/Layout/SK Set 2.bin" - even + even +SSLayoutData1_Kos: + binclude "General/Special Stage/Layout/SK Set 1.bin" + even +SSLayoutData2_Kos: + binclude "General/Special Stage/Layout/SK Set 2.bin" + even ; AS would automatically strip this padding if we didn't specifically declare one byte at the end if ~~strip_padding && (*)&(*-1) From a65b0f4c35452610655830e57714a2821bfeefdf Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Fri, 31 Dec 2021 14:55:46 +0000 Subject: [PATCH 55/72] Format raw animations --- s3.asm | 115 ++++++++-------------------------------------- sonic3k.asm | 129 +++++++++------------------------------------------- 2 files changed, 39 insertions(+), 205 deletions(-) diff --git a/s3.asm b/s3.asm index 9b75bd4d..ff66d676 100644 --- a/s3.asm +++ b/s3.asm @@ -79614,37 +79614,10 @@ DPLCPtr_SSEntryFlash: dc.l ArtUnc_SSEntryFlash dc.l DPLC_SSEntryFlash AniRaw_SSEntryRing: - dc.b 4 - dc.b 0 - dc.b 0 - dc.b 1 - dc.b 2 - dc.b 3 - dc.b 4 - dc.b 5 - dc.b 6 - dc.b 7 - dc.b $F8 - dc.b $C - dc.b 6 - dc.b $A - dc.b 9 - dc.b 8 - dc.b $B - dc.b $FC + dc.b 4, 0, 0, 1, 2, 3, 4, 5, 6, 7, $F8, $C, 6, $A, 9, 8, $B, $FC AniRaw_SSEntryFlash: - dc.b 0 - dc.b 0 - dc.b 0 - dc.b 1 - dc.b 2 - dc.b $43 - dc.b 3 - dc.b 2 - dc.b 1 - dc.b 0 - dc.b $F4 - dc.b 0 + dc.b 0, 0, 0, 1, 2, $43, 3, 2, 1, 0, $F4 + even Map_SSEntryRing: include "General/Sprites/SS Entry/Map - Entry Ring.asm" DPLC_SSEntryRing: @@ -82283,10 +82256,7 @@ Child1_MakeRoboShipFlame: dc.l Obj_RobotnikShipFlame dc.w $1E00 AniRaw_RobotnikHead: - dc.b 5 - dc.b 0 - dc.b 1 - dc.b $FC + dc.b 5, 0, 1, $FC ; --------------------------------------------------------------------------- Obj_AIZMinibossCutscene: @@ -91077,60 +91047,26 @@ Child6_CNZMinibossMakeDebris: dc.w 8 dc.l Obj_CNZMinibossDebris AniRaw_CNZMinibossOpening: - dc.b 0, 3 - dc.b 1, 3 - dc.b 2, 3 - dc.b 3, 3 - dc.b 4, 3 - dc.b 5, 3 - dc.b 6, 3 - dc.b $F4 + dc.b 0, 3, 1, 3, 2, 3, 3, 3, 4, 3, 5, 3, 6, 3, $F4 AniRaw_CNZMinibossClosing: - dc.b 6, 3 - dc.b 5, 3 - dc.b 4, 3 - dc.b 3, 3 - dc.b 2, 3 - dc.b 1, 3 - dc.b 0, 3 - dc.b $F4 + dc.b 6, 3, 5, 3, 4, 3, 3, 3, 2, 3, 1, 3, 0, 3, $F4 AniRaw_CNZMinibossTop: dc.b 7, 8, 7, 8, 9, $FC AniRaw_CNZMinibossTop2: dc.b 0, 7, 8, 9, $FC AniRaw_CNZMinibossTimedSparkLeft: - dc.b $A, 0 - dc.b $11, 2 - dc.b $B, 0 - dc.b $11, 2 - dc.b $FC + dc.b $A, 0, $11, 2, $B, 0, $11, 2, $FC AniRaw_CNZMinibossTimedSparkRight: - dc.b $F, 0 - dc.b $11, 2 - dc.b $10, 0 - dc.b $11, 2 - dc.b $FC + dc.b $F, 0, $11, 2, $10, 0, $11, 2, $FC AniRaw_CNZMinibossSparks1: - dc.b $A, 0 - dc.b $11, 7 - dc.b $B, 0 - dc.b $11, 7 - dc.b $FC + dc.b $A, 0, $11, 7, $B, 0, $11, 7, $FC AniRaw_CNZMinibossSparks2: - dc.b $11, 0 - dc.b $F, 0 - dc.b $11, 7 - dc.b $10, 0 - dc.b $11, 9 - dc.b $FC + dc.b $11, 0, $F, 0, $11, 7, $10, 0, $11, 9, $FC AniRaw_CNZMinibossSparks3: - dc.b $A, 0 - dc.b $11, 7 - dc.b $B, 0 - dc.b $11, $B - dc.b $FC + dc.b $A, 0, $11, 7, $B, 0, $11, $B, $FC AniRaw_CNZMBossBoundEffect: - dc.b $C, 0, $D, 1, $E, 1, $F4, 0 + dc.b $C, 0, $D, 1, $E, 1, $F4 + even Pal_CNZMiniboss:binclude "Levels/CNZ/Palettes/Miniboss.bin" even ; --------------------------------------------------------------------------- @@ -101291,19 +101227,10 @@ Child6_EndSignScore: dc.l Obj_EnemyScore PLCPtr_EndSigns:dc.l ArtUnc_EndSigns dc.l DPLC_EndSigns -AniRaw_EndSigns:dc.b 1, 0 - dc.b 4, 5 - dc.b 6, 1 - dc.b 4, 5 - dc.b 6, 2 - dc.b 4, 5 - dc.b 6, 3 - dc.b 4, 5 - dc.b 6, $FC +AniRaw_EndSigns: + dc.b 1, 0, 4, 5, 6, 1, 4, 5, 6, 2, 4, 5, 6, 3, 4, 5, 6, $FC AniRaw_SignpostSparkle: - dc.b 1, 4 - dc.b 5, 6 - dc.b 7, $FC + dc.b 1, 4, 5, 6, 7, $FC ; =============== S U B R O U T I N E ======================================= @@ -101603,14 +101530,8 @@ ObjDat_BossExplosion: dc.b 0 dc.b 0 AniRaw_BossExplosion: - dc.b 0, 0 - dc.b 0, 1 - dc.b 1, 1 - dc.b 2, 2 - dc.b 3, 3 - dc.b 4, 4 - dc.b 5, 4 - dc.b $F4, 0 + dc.b 0, 0, 0, 1, 1, 1, 2, 2, 3, 3, 4, 4, 5, 4, $F4 + even Child6_MakeBossExplosion1: dc.w 0 dc.l loc_52940 diff --git a/sonic3k.asm b/sonic3k.asm index 3e53d934..184b9913 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -128645,37 +128645,10 @@ DPLCPtr_SSEntryFlash: dc.l ArtUnc_SSEntryFlash dc.l DPLC_SSEntryFlash AniRaw_SSEntryRing: - dc.b 4 - dc.b 0 - dc.b 0 - dc.b 1 - dc.b 2 - dc.b 3 - dc.b 4 - dc.b 5 - dc.b 6 - dc.b 7 - dc.b $F8 - dc.b $C - dc.b 6 - dc.b $A - dc.b 9 - dc.b 8 - dc.b $B - dc.b $FC + dc.b 4, 0, 0, 1, 2, 3, 4, 5, 6, 7, $F8, $C, 6, $A, 9, 8, $B, $FC AniRaw_SSEntryFlash: - dc.b 0 - dc.b 0 - dc.b 0 - dc.b 1 - dc.b 2 - dc.b $43 - dc.b 3 - dc.b 2 - dc.b 1 - dc.b 0 - dc.b $F4 - dc.b 0 + dc.b 0, 0, 0, 1, 2, $43, 3, 2, 1, 0, $F4 + even Map_SSEntryRing: include "General/Sprites/SS Entry/Map - Entry Ring.asm" DPLC_SSEntryRing: @@ -137086,15 +137059,9 @@ Child1_BlueSphereShipHead: dc.l Obj_BlueSphere_ShipHead dc.w $E4 AniRaw_RobotnikHead: - dc.b 5 - dc.b 0 - dc.b 1 - dc.b $FC + dc.b 5, 0, 1, $FC AniRaw_EggRoboHead: - dc.b $F - dc.b 0 - dc.b 1 - dc.b $FC + dc.b $F, 0, 1, $FC Map_EggRoboHead: include "General/Sprites/Robotnik/Map - Egg Robo Head.asm" Map_MechaSonicHead: @@ -146157,60 +146124,26 @@ Child6_CNZMinibossMakeDebris: dc.w 8 dc.l Obj_CNZMinibossDebris AniRaw_CNZMinibossOpening: - dc.b 0, 3 - dc.b 1, 3 - dc.b 2, 3 - dc.b 3, 3 - dc.b 4, 3 - dc.b 5, 3 - dc.b 6, 3 - dc.b $F4 + dc.b 0, 3, 1, 3, 2, 3, 3, 3, 4, 3, 5, 3, 6, 3, $F4 AniRaw_CNZMinibossClosing: - dc.b 6, 3 - dc.b 5, 3 - dc.b 4, 3 - dc.b 3, 3 - dc.b 2, 3 - dc.b 1, 3 - dc.b 0, 3 - dc.b $F4 + dc.b 6, 3, 5, 3, 4, 3, 3, 3, 2, 3, 1, 3, 0, 3, $F4 AniRaw_CNZMinibossTop: - dc.b 7, 8, 7, 8, 9, $FC + dc.b 7, 8, 7, 8, 9, $FC AniRaw_CNZMinibossTop2: - dc.b 0, 7, 8, 9, $FC + dc.b 0, 7, 8, 9, $FC AniRaw_CNZMinibossTimedSparkLeft: - dc.b $A, 0 - dc.b $11, 2 - dc.b $B, 0 - dc.b $11, 2 - dc.b $FC + dc.b $A, 0, $11, 2, $B, 0, $11, 2, $FC AniRaw_CNZMinibossTimedSparkRight: - dc.b $F, 0 - dc.b $11, 2 - dc.b $10, 0 - dc.b $11, 2 - dc.b $FC + dc.b $F, 0, $11, 2, $10, 0, $11, 2, $FC AniRaw_CNZMinibossSparks1: - dc.b $A, 0 - dc.b $11, 7 - dc.b $B, 0 - dc.b $11, 7 - dc.b $FC + dc.b $A, 0, $11, 7, $B, 0, $11, 7, $FC AniRaw_CNZMinibossSparks2: - dc.b $11, 0 - dc.b $F, 0 - dc.b $11, 7 - dc.b $10, 0 - dc.b $11, 9 - dc.b $FC + dc.b $11, 0, $F, 0, $11, 7, $10, 0, $11, 9, $FC AniRaw_CNZMinibossSparks3: - dc.b $A, 0 - dc.b $11, 7 - dc.b $B, 0 - dc.b $11, $B - dc.b $FC + dc.b $A, 0, $11, 7, $B, 0, $11, $B, $FC AniRaw_CNZMBossBoundEffect: - dc.b $C, 0, $D, 1, $E, 1, $F4, 0 + dc.b $C, 0, $D, 1, $E, 1, $F4 + even Pal_CNZMiniboss:binclude "Levels/CNZ/Palettes/Miniboss.bin" even PalSPtr_CNZMinibossNormal: @@ -177226,25 +177159,11 @@ Child6_EndSignScore: PLCPtr_EndSigns:dc.l ArtUnc_EndSigns dc.l DPLC_EndSigns AniRaw_EndSigns1: - dc.b 1, 0 - dc.b 4, 5 - dc.b 6, 1 - dc.b 4, 5 - dc.b 6, 3 - dc.b 4, 5 - dc.b 6, $FC + dc.b 1, 0, 4, 5, 6, 1, 4, 5, 6, 3, 4, 5, 6, $FC AniRaw_EndSigns2: - dc.b 1, 1 - dc.b 4, 5 - dc.b 6, 2 - dc.b 4, 5 - dc.b 6, 3 - dc.b 4, 5 - dc.b 6, $FC + dc.b 1, 1, 4, 5, 6, 2, 4, 5, 6, 3, 4, 5, 6, $FC AniRaw_SignpostSparkle: - dc.b 1, 4 - dc.b 5, 6 - dc.b 7, $FC + dc.b 1, 4, 5, 6, 7, $FC DPLC_EndSigns: include "General/Sprites/Signpost/DPLC - End Signs.asm" Map_EndSigns: @@ -177645,14 +177564,8 @@ ObjDat_BossExplosion2: dc.b 0 dc.b 0 AniRaw_BossExplosion: - dc.b 0, 0 - dc.b 0, 1 - dc.b 1, 1 - dc.b 2, 2 - dc.b 3, 3 - dc.b 4, 4 - dc.b 5, 4 - dc.b $F4, 0 + dc.b 0, 0, 0, 1, 1, 1, 2, 2, 3, 3, 4, 4, 5, 4, $F4 + even Child6_MakeBossExplosion1: dc.w 0 dc.l Obj_BossExplosion1 From c7f218808a8932c992013c6b93a3c4dae028e3fc Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Fri, 31 Dec 2021 14:39:53 +0000 Subject: [PATCH 56/72] Format lock-on pointers --- Lockon S3/LockOn Pointers.asm | 1675 ++++++++++++++------------------- 1 file changed, 685 insertions(+), 990 deletions(-) diff --git a/Lockon S3/LockOn Pointers.asm b/Lockon S3/LockOn Pointers.asm index cad482da..06ce099b 100644 --- a/Lockon S3/LockOn Pointers.asm +++ b/Lockon S3/LockOn Pointers.asm @@ -1,451 +1,341 @@ -; ═══════════════════════════════════════════════════════════════════════════ - - - -LockOnROM_Start:ds.b $11 -S3_Level_Solid_Data EQU $260000 - -byte_200011: ds.b $AC -byte_2000BD: ds.b $43 -LockonHeader: ds.b $14 -SSMagic_TestLoc_200114:ds.b 6 -SSMagic_TestLoc_20011A:ds.b 2 -LockonDate: ds.b $34 -SSMagic_TestLoc_200150:ds.b $19 - ds.b $17 -LockonSerialNumber:ds.b $24 -SSMagic_TestLoc_2001A4:ds.b $51 - ds.b $8C -byte_200281: ds.b $AC -byte_20032D: ds.b $94EB -Pal_Competition1:ds.b $A8 -Map_CompetitionObject:ds.b $870 -MapUnc_CompetitionNumbers:ds.b $42E - - -Pal_Competition2: ds.b $20 -Pal_Competition3: ds.b $40 -Pal_Competition4: ds.b $126 -Map_CompetitionSelect:ds.b $6A0 - -Pal_CompetitionResults:ds.b $DE -MapEni_CompetitionResultsLED:ds.b $1A -MapUnc_CompetitionResultsLetters:ds.b $28 -MapUnc_CompetitionResultsDividers:ds.b $50 -MapUnc_CompetitionResultsTOTAL:ds.b $14 -MapUnc_ResultsWin: ds.b 8 -MapUnc_ResultsLose: ds.b 8 -MapUnc_ResultsTie: ds.b $354 -Pal_CompetitionTimeAttack: ds.b $BA -MapUnc_CompetitionLAPNum:ds.b $64 - -MapUnc_CompetitionRECORDS:ds.b $1C - -MapUnc_Competition1st2nd3rd:ds.b $44 - -MapUnc_CompetitionAZURELAKE:ds.b $34 - -MapUnc_CompetitionBALLOONPARK:ds.b $34 - -MapUnc_CompetitionCHROMEGADGET:ds.b $34 - -MapUnc_CompetitionDESERTPALACE:ds.b $34 - -MapUnc_CompetitionENDLESSMINE:ds.b $1326 - - -ArtKos_SaveScreenS3Zone:ds.b $FC08 -Map_AIZ1Tree: ds.b $42 -Map_AIZ1ZiplinePeg: ds.b $9A0 -Map_HCZBreakableBar: ds.b $280 - -Map_HCZBlock: ds.b $C92 - -Map_AIZRock: ds.b $88 - -Map_AIZRock2: ds.b $88 - -Map_EMZRock: ds.b $8DC - -Map_AIZCollapsingPlatform:ds.b $E4 - -Map_AIZCollapsingPlatform2:ds.b $EA - -Map_LBZCollapsingBridge:ds.b $FC - -Map_LBZCollapsingLedge:ds.b $88 - -Map_HCZCollapsingBridge:ds.b $44E - -Map_MGZCollapsingBridge:ds.b $48A - -Map_ICZCollapsingBridge:ds.b $A60 - -Map_AIZBreakableWall:ds.b $1C6 - -Map_MGZBreakableWall:ds.b $C0 - -Map_HCZBreakableWall:ds.b $86 - -Map_LBZBreakableWall:ds.b $113C - -Map_AIZIntroWaves: ds.b $3750 -Map_LBZUnusedElevator: ds.b $BE -Map_LBZExplodingTrigger:ds.b $1E0 - -Map_MGZDashTrigger:ds.b $25E - -Map_LBZTriggerBridge:ds.b $566 - -Map_LBZPlayerLauncher:ds.b $102 - -Map_LBZFlameThrower:ds.b $D4C -Map_LBZCupElevator:ds.b $346 - -Map_LBZUnusedTiltingBridge:ds.b $374 - -Map_LBZPipePlug:ds.b $136E - -Map_LBZSpinLauncher:ds.b $1FA - -Map_LBZLoweringGrapple:ds.b $47A - -Map_LBZSmashingSpikes:ds.b $10 - -Map_MGZSmashingPillar:ds.b $14E - -Map_LBZGateLaser:ds.b $E10 - -Map_LBZTubeElevator:ds.b $310 - -Map_AIZDisappearingFloor:ds.b $C - -Map_AIZDisappearingFloor2: ds.b $6A0 -Map_AIZCorkFloor:ds.b $74 - -Map_AIZCorkFloor2:ds.b $74 - -Map_CNZCorkFloor:ds.b $98 - -Map_ICZCorkFloor:ds.b $208 - -Map_LBZCorkFloor:ds.b $428 - -Map_AIZFlippingBridge:ds.b $B10 - -Map_AIZFallingLog2:ds.b $10 - -Map_AIZFallingLog:ds.b $10 - -Map_AIZFallingLogSplash2: ds.b $70 -Map_AIZFallingLogSplash: ds.b $240 -Map_AIZSpikedLog:ds.b $7FC - -Map_AIZForegroundPlant:ds.b $42E - -Map_Button2: ds.b $30 - -Map_CNZButton: ds.b $30 - -Map_2PButton: ds.b $2892 - -Map_HCZWaterRush: ds.b $160 -Map_HCZWaterRushBlock: ds.b $6A4 - -Map_HCZWaterWall:ds.b $FE - -Map_HCZWaterWallDebris: ds.b $49C - -Map_HCZFan: ds.b $6E - -Map_HCZLargeFan:ds.b $208 - -Map_CGZFan: ds.b $378 - -Map_HCZHandLauncher:ds.b $9C6 - -Map_HCZConveyorSpike:ds.b $1A4 - -Map_CNZBalloon: ds.b $530 - -Map_CNZCannon: ds.b $2AA - -Map_CNZRisingPlatform:ds.b $F0 - -Map_CNZTrapDoor:ds.b $86 - -Map_CNZLightBulb:ds.b $1BE - -Map_CNZHoverFan:ds.b $7A0 - -Map_CNZCylinder:ds.b $33E - -Map_HCZSpinningColumn:ds.b $7E0 - -Map_Bumper: ds.b $20 - -Map_2PBumper: ds.b $102A - -Map_MGZSwingingPlatform:ds.b $25A - -Map_MGZSwingingSpikeBall:ds.b $2A0 - -Map_MGZHeadTrigger:ds.b $1A0 - -Map_MGZTriggerPlatform:ds.b $1E6 - -Map_MGZMovingSpikePlatform:ds.b $528 - -Map_MGZPulley: ds.b $388E - -Map_HCZWaterDrop:ds.b $312 - -Map_HCZWaterSplash:ds.b $1A - -Map_HCZWaterSplash2: ds.b $29C2 - -Comp_ScreenInit:ds.b $4E -Comp_ScreenEvent:ds.b $22 -CGZ_ScreenEvent:ds.b $20 -ALZ_BackgroundInit:ds.b 6 -BPZ_BackgroundInit: ds.b 6 -DPZ_BackgroundInit:ds.b 6 -CGZ_BackgroundInit:ds.b $38 -EMZ_BackgroundInit:ds.b $28 -ALZ_BackgroundEvent:ds.b $A -BPZ_BackgroundEvent:ds.b $A -CGZ_BackgroundEvent:ds.b $A -EMZ_BackgroundEvent:ds.b $3A -DPZ_BackgroundEvent:ds.b $400 -AIZ_TreeReveal: ds.b $B4 -AIZ_TreeRevealArray: ds.b $388 -AIZ1_IntroDeform: ds.b $6C -AIZ1_Deform: ds.b $96 -AIZ1_ApplyDeformWater: ds.b $7E -AIZ1_FireRise: ds.b $28 -AIZTrans_WavyFlame: ds.b $7C -AIZ1_IntroDrawArray: ds.b $14 -AIZ1_IntroDeformArray: ds.b $4A -AIZ1_BGDrawArray: ds.b $3D2 -AIZ2_Deform: ds.b $5A -AIZ2_ApplyDeform: ds.b $9DA -Pal_AIZBattleship: ds.b $20 -Pal_AIZBossSmall: ds.b $1C -AIZBattleShip_BobbingMotion: ds.b $10 -AIZBattleship_BombScript: ds.b $56 -AIZBombExplodeDat: ds.b $40 -AIZMakeTreeScript: ds.b $46 -Map_AIZShipPropeller: ds.b $28 -Ani_AIZShipPropeller: ds.b 8 -Map_AIZ2BombExplode: ds.b $78 - -Ani_AIZ2BombExplode: ds.b $1E -Map_AIZ2BGTree: ds.b $1C -Map_AIZ2BossSmall: ds.b $32C -HCZ1_BGDeformArray: ds.b $242 -HCZ2_BGDeformArray: ds.b $2E -HCZ2_BGDeformIndex: ds.b $170 -MGZ1_Deform: ds.b $88 -MGZ1_BGDeformArray: ds.b $560 -MGZ2_QuakeEventArray: ds.b $24 -MGZ2_ChunkEventArray: ds.b $24 -MGZ2_ScreenRedrawArray: ds.b $5C -MGZ2_ChunkReplaceArray: ds.b $60 -MGZ2_CollapseScrollDelay: ds.b $14 -MGZ2_FGVScrollArray: ds.b $160 -MGZ2_BGDeform: ds.b $2C4 -MGZ2_BGDrawArray: ds.b 4 -MGZ2_BGDeformArray: ds.b $9EE -ICZ1_SetIntroPal: ds.b $40 -ICZ1_SetIndoorPal: ds.b $34 -ICZ1_IntroBGDeformArray: ds.b $1C8 -ICZ2_OutDeform: ds.b $78 -ICZ2_InDeform: ds.b $70 -ICZ2_SetOutdoorsPal: ds.b $30 -ICZ2_SetIndoorsPal: ds.b $34 -ICZ2_SetICZ1Pal: ds.b $30 -ICZ2_OutBGDeformArray: ds.b 8 -ICZ2_InBGDeformArray: ds.b $212 -LBZ1_CheckLayoutMod: ds.b $78 -LBZ1_DoMod4: ds.b $1C -LBZ1_DoMod3: ds.b $1A -LBZ1_DoMod2: ds.b $20 -LBZ1_DoMod1: ds.b $72 -LBZ1_FGVScrollArray: ds.b $38 -LBZ1_LayoutModExitRange: ds.b $10 -LBZ1_CollapseScrollSpeed: ds.b $176 -LBZ1_Deform: ds.b $78A -LBZ2_BGDeformArray: ds.b $24 -LBZ2_DEBGDeformArray: ds.b $30 -LBZ2_CloudDeformArray: ds.b $1A -LBZ2_BGUWDeformRange: ds.b $A -Gumball_ScreenInit:ds.b $4A -Gumball_ScreenEvent:ds.b $4A -Gumball_BackgroundInit:ds.b $12 -Gumball_BackgroundEvent:ds.b $278C - -Map_S3EndingGraphics: ds.b $1D6 -ArtNem_S3EndingGraphics: ds.b $1C978 -SStageLayoutPtrs:ds.b $ED28 -HCZ_WaterlineScroll_Data:ds.b $2460 -LBZ_WaterlineScroll_Data:ds.b $5300 - -Solid_AIZ1: ds.b $C00 -Solid_AIZ2: ds.b $C00 -Solid_HCZ1: ds.b $C00 -Solid_HCZ2: ds.b $C00 -Solid_MGZ1: ds.b $C00 -Solid_MGZ2: ds.b $C00 -Solid_CNZ: ds.b $C00 -Solid_ICZ1: ds.b $C00 -Solid_ICZ2: ds.b $C00 -Solid_LBZ1: ds.b $C00 -Solid_LBZ2: ds.b $C00 -Solid_ALZ: ds.b $C00 -Solid_BPZ: ds.b $C00 -Solid_DPZ: ds.b $C00 -Solid_CGZ: ds.b $C00 -Solid_EMZ: ds.b $C00 -Solid_Gumball_Special:ds.b $CC0 -Layout_AIZ1: ds.b $84C -Layout_AIZ2: ds.b $D66 -Layout_HCZ1: ds.b $B28 -Layout_HCZ2: ds.b $EA8 -Layout_MGZ1: ds.b $C90 -Layout_MGZ2: ds.b $DB0 -Layout_CNZ1: ds.b $BCA -Layout_CNZ2: ds.b $F8E -Layout_ICZ1: ds.b $FC8 -Layout_ICZ2: ds.b $E50 -Layout_LBZ1: ds.b $FAC -Layout_LBZ2: ds.b $F28 -Layout_ALZ: ds.b $1CC -Layout_BPZ: ds.b $154 -Layout_DPZ: ds.b $F8 -Layout_CGZ: ds.b $F8 -Layout_EMZ: ds.b $F8 -Layout_Gumball_Special:ds.b $1246 -ArtUnc_CNZCannon: ds.b $2AE6 -ArtUnc_SStageTails:ds.b $F60 - -Map_SStageTails: ds.b $18 - -PLC_SStageTails:ds.b $116 - -ArtUnc_SStageTailstails: ds.b $700 -Map_SStageTailstails: ds.b $1E - -PLC_SStageTailstails: ds.b $EB34 - -Map_Sonic2P: ds.b $1AA - -PLC_Sonic2P: ds.b $102 -Map_Tails2P: ds.b $1BE -Map_Tails2P_Tail:ds.b $9A -PLC_Tails2P: ds.b $10E -DPLC_Tails2P_Tail:ds.b $5E -Map_Knuckles2P: ds.b $1EE - -PLC_Knuckles2P: ds.b $24A8 -ArtUnc_AniAIZ1_0:ds.b $900 - -ArtUnc_AniAIZ1_1:ds.b $3C0 -ArtUnc_AniAIZ2_1:ds.b $900 - -ArtUnc_AniAIZ2_0:ds.b $B80 -ArtUnc_AniAIZ2_3:ds.b $C00 -ArtUnc_AniAIZ2_2:ds.b $200 -ArtUnc_AniAIZ2_FirstTree:ds.b $460 -ArtUnc_AniHCZ1_0:ds.b $D80 -ArtUnc_AniHCZ1_WaterlineBelow:ds.b $180 - -ArtUnc_FixHCZ1_UpperBG1:ds.b $180 -ArtUnc_AniHCZ1_WaterlineAbove:ds.b $180 - -ArtUnc_FixHCZ1_LowerBG1:ds.b $180 -ArtUnc_AniHCZ1_WaterlineBelow2: ds.b $180 -ArtUnc_FixHCZ1_UpperBG2:ds.b $180 -ArtUnc_AniHCZ1_WaterlineAbove2:ds.b $180 -ArtUnc_FixHCZ1_LowerBG2:ds.b $180 -ArtUnc_AniHCZ__1:ds.b $6C0 - -ArtUnc_AniHCZ2_0:ds.b $A80 -ArtUnc_AniHCZ2_SmallBGLine:ds.b $400 -ArtUnc_AniHCZ2_2:ds.b $800 -ArtUnc_AniHCZ2_3:ds.b $1000 -ArtUnc_AniHCZ2_4:ds.b $3000 -ArtUnc_AniMGZ__0:ds.b $2400 -ArtUnc_AniMGZ__1:ds.b $60 -ArtUnc_AniCNZ__0:ds.b $1200 - -ArtUnc_AniCNZ__1:ds.b $2000 -ArtUnc_AniCNZ__2:ds.b $2000 -ArtUnc_AniCNZ__3:ds.b $1000 -ArtUnc_AniCNZ__4:ds.b $180 -ArtUnc_AniCNZ__6:ds.b $2000 -ArtUnc_AniCNZ__5:ds.b $A00 -ArtUnc_AniICZ__1:ds.b $1000 -ArtUnc_AniICZ__2:ds.b $200 -ArtUnc_AniICZ__3:ds.b $100 -ArtUnc_AniICZ__4:ds.b $80 -ArtUnc_AniICZ__5:ds.b $40 -ArtUnc_AniICZ__0: ds.b $400 -ArtUnc_AniLBZ1_0: ds.b $500 -ArtUnc_AniLBZ1_1:ds.b $1400 -ArtUnc_AniLBZ1_2:ds.b $100 -ArtUnc_AniLBZ2_2:ds.b $400 -ArtUnc_AniLBZ2_WaterlineBelow:ds.b $200 - -ArtUnc_AniLBZ2_LowerBG:ds.b $200 -ArtUnc_AniLBZ2_WaterlineAbove:ds.b $200 -ArtUnc_AniLBZ2_UpperBG:ds.b $200 -ArtUnc_AniLBZ__0:ds.b $2000 - -ArtUnc_AniLBZ2_0:ds.b $280 - -ArtUnc_AniLBZ2_1:ds.b $300 - -ArtUnc_AniALZ: ds.b $600 -ArtUnc_AniBPZ__0:ds.b $540 -ArtUnc_AniBPZ__1:ds.b $500 -ArtUnc_AniBPZ__2:ds.b $C0 -ArtUnc_AniBPZ__3:ds.b $40 -ArtUnc_AniDPZ: ds.b $780 -ArtUnc_AniDPZ__BG:ds.b $2000 - -ArtUnc_AniGumball:ds.b $100 -ArtUnc_SplashDrown:ds.b $274C - -ArtNem_Title_SonicSprites: ds.b $C58 -DemoDat_AIZ: ds.b $780 -DemoDat_HCZ: ds.b $780 -DemoDat_MGZ: ds.b $1ADC - -Snd_AIZ1: ds.b $1B6D -Snd_AIZ2: ds.b $154F -Snd_HCZ1: ds.b $100A -Snd_HCZ2: ds.b $129E -Snd_MGZ1: ds.b $617 -Snd_MGZ2: ds.b $42E -Snd_CNZ2: ds.b $6E6 -Snd_CNZ1: ds.b $1B71 -Snd_ICZ2: ds.b $6AA -Snd_ICZ1: ds.b $71E -Snd_LBZ2: ds.b $57D -Snd_LBZ1: ds.b $77A3 -Snd_GumBonus: ds.b $F0F -Snd_ALZ: ds.b $B06 -Snd_BPZ: ds.b $BEF -Snd_DPZ: ds.b $1238 -Snd_CGZ: ds.b $1723 -Snd_EMZ: ds.b $B40 -Snd_S3Credits: ds.b $105D -Snd_2PMenu: ds.b $4DA -Snd_Drown: ds.b $8D39 - -DacBank2: -; Special BINCLUDE wrapper function -DSDACBINCLUDE macro size,{INTLABEL} +LockOnROM_Start: ds.b $11 +S3_Level_Solid_Data EQU $260000 +byte_200011: ds.b $AC +byte_2000BD: ds.b $43 +LockonHeader: ds.b $14 +SSMagic_TestLoc_200114: ds.b 6 +SSMagic_TestLoc_20011A: ds.b 2 +LockonDate: ds.b $34 +SSMagic_TestLoc_200150: ds.b $19 + ds.b $17 +LockonSerialNumber: ds.b $24 +SSMagic_TestLoc_2001A4: ds.b $51 + ds.b $8C +byte_200281: ds.b $AC +byte_20032D: ds.b $94EB +Pal_Competition1: ds.b $A8 +Map_CompetitionObject: ds.b $870 +MapUnc_CompetitionNumbers: ds.b $42E +Pal_Competition2: ds.b $20 +Pal_Competition3: ds.b $40 +Pal_Competition4: ds.b $126 +Map_CompetitionSelect: ds.b $6A0 +Pal_CompetitionResults: ds.b $DE +MapEni_CompetitionResultsLED: ds.b $1A +MapUnc_CompetitionResultsLetters: ds.b $28 +MapUnc_CompetitionResultsDividers: ds.b $50 +MapUnc_CompetitionResultsTOTAL: ds.b $14 +MapUnc_ResultsWin: ds.b 8 +MapUnc_ResultsLose: ds.b 8 +MapUnc_ResultsTie: ds.b $354 +Pal_CompetitionTimeAttack: ds.b $BA +MapUnc_CompetitionLAPNum: ds.b $64 +MapUnc_CompetitionRECORDS: ds.b $1C +MapUnc_Competition1st2nd3rd: ds.b $44 +MapUnc_CompetitionAZURELAKE: ds.b $34 +MapUnc_CompetitionBALLOONPARK: ds.b $34 +MapUnc_CompetitionCHROMEGADGET: ds.b $34 +MapUnc_CompetitionDESERTPALACE: ds.b $34 +MapUnc_CompetitionENDLESSMINE: ds.b $1326 +ArtKos_SaveScreenS3Zone: ds.b $FC08 +Map_AIZ1Tree: ds.b $42 +Map_AIZ1ZiplinePeg: ds.b $9A0 +Map_HCZBreakableBar: ds.b $280 +Map_HCZBlock: ds.b $C92 +Map_AIZRock: ds.b $88 +Map_AIZRock2: ds.b $88 +Map_EMZRock: ds.b $8DC +Map_AIZCollapsingPlatform: ds.b $E4 +Map_AIZCollapsingPlatform2: ds.b $EA +Map_LBZCollapsingBridge: ds.b $FC +Map_LBZCollapsingLedge: ds.b $88 +Map_HCZCollapsingBridge: ds.b $44E +Map_MGZCollapsingBridge: ds.b $48A +Map_ICZCollapsingBridge: ds.b $A60 +Map_AIZBreakableWall: ds.b $1C6 +Map_MGZBreakableWall: ds.b $C0 +Map_HCZBreakableWall: ds.b $86 +Map_LBZBreakableWall: ds.b $113C +Map_AIZIntroWaves: ds.b $3750 +Map_LBZUnusedElevator: ds.b $BE +Map_LBZExplodingTrigger: ds.b $1E0 +Map_MGZDashTrigger: ds.b $25E +Map_LBZTriggerBridge: ds.b $566 +Map_LBZPlayerLauncher: ds.b $102 +Map_LBZFlameThrower: ds.b $D4C +Map_LBZCupElevator: ds.b $346 +Map_LBZUnusedTiltingBridge: ds.b $374 +Map_LBZPipePlug: ds.b $136E +Map_LBZSpinLauncher: ds.b $1FA +Map_LBZLoweringGrapple: ds.b $47A +Map_LBZSmashingSpikes: ds.b $10 +Map_MGZSmashingPillar: ds.b $14E +Map_LBZGateLaser: ds.b $E10 +Map_LBZTubeElevator: ds.b $310 +Map_AIZDisappearingFloor: ds.b $C +Map_AIZDisappearingFloor2: ds.b $6A0 +Map_AIZCorkFloor: ds.b $74 +Map_AIZCorkFloor2: ds.b $74 +Map_CNZCorkFloor: ds.b $98 +Map_ICZCorkFloor: ds.b $208 +Map_LBZCorkFloor: ds.b $428 +Map_AIZFlippingBridge: ds.b $B10 +Map_AIZFallingLog2: ds.b $10 +Map_AIZFallingLog: ds.b $10 +Map_AIZFallingLogSplash2: ds.b $70 +Map_AIZFallingLogSplash: ds.b $240 +Map_AIZSpikedLog: ds.b $7FC +Map_AIZForegroundPlant: ds.b $42E +Map_Button2: ds.b $30 +Map_CNZButton: ds.b $30 +Map_2PButton: ds.b $2892 +Map_HCZWaterRush: ds.b $160 +Map_HCZWaterRushBlock: ds.b $6A4 +Map_HCZWaterWall: ds.b $FE +Map_HCZWaterWallDebris: ds.b $49C +Map_HCZFan: ds.b $6E +Map_HCZLargeFan: ds.b $208 +Map_CGZFan: ds.b $378 +Map_HCZHandLauncher: ds.b $9C6 +Map_HCZConveyorSpike: ds.b $1A4 +Map_CNZBalloon: ds.b $530 +Map_CNZCannon: ds.b $2AA +Map_CNZRisingPlatform: ds.b $F0 +Map_CNZTrapDoor: ds.b $86 +Map_CNZLightBulb: ds.b $1BE +Map_CNZHoverFan: ds.b $7A0 +Map_CNZCylinder: ds.b $33E +Map_HCZSpinningColumn: ds.b $7E0 +Map_Bumper: ds.b $20 +Map_2PBumper: ds.b $102A +Map_MGZSwingingPlatform: ds.b $25A +Map_MGZSwingingSpikeBall: ds.b $2A0 +Map_MGZHeadTrigger: ds.b $1A0 +Map_MGZTriggerPlatform: ds.b $1E6 +Map_MGZMovingSpikePlatform: ds.b $528 +Map_MGZPulley: ds.b $388E +Map_HCZWaterDrop: ds.b $312 +Map_HCZWaterSplash: ds.b $1A +Map_HCZWaterSplash2: ds.b $29C2 +Comp_ScreenInit: ds.b $4E +Comp_ScreenEvent: ds.b $22 +CGZ_ScreenEvent: ds.b $20 +ALZ_BackgroundInit: ds.b 6 +BPZ_BackgroundInit: ds.b 6 +DPZ_BackgroundInit: ds.b 6 +CGZ_BackgroundInit: ds.b $38 +EMZ_BackgroundInit: ds.b $28 +ALZ_BackgroundEvent: ds.b $A +BPZ_BackgroundEvent: ds.b $A +CGZ_BackgroundEvent: ds.b $A +EMZ_BackgroundEvent: ds.b $3A +DPZ_BackgroundEvent: ds.b $400 +AIZ_TreeReveal: ds.b $B4 +AIZ_TreeRevealArray: ds.b $388 +AIZ1_IntroDeform: ds.b $6C +AIZ1_Deform: ds.b $96 +AIZ1_ApplyDeformWater: ds.b $7E +AIZ1_FireRise: ds.b $28 +AIZTrans_WavyFlame: ds.b $7C +AIZ1_IntroDrawArray: ds.b $14 +AIZ1_IntroDeformArray: ds.b $4A +AIZ1_BGDrawArray: ds.b $3D2 +AIZ2_Deform: ds.b $5A +AIZ2_ApplyDeform: ds.b $9DA +Pal_AIZBattleship: ds.b $20 +Pal_AIZBossSmall: ds.b $1C +AIZBattleShip_BobbingMotion: ds.b $10 +AIZBattleship_BombScript: ds.b $56 +AIZBombExplodeDat: ds.b $40 +AIZMakeTreeScript: ds.b $46 +Map_AIZShipPropeller: ds.b $28 +Ani_AIZShipPropeller: ds.b 8 +Map_AIZ2BombExplode: ds.b $78 +Ani_AIZ2BombExplode: ds.b $1E +Map_AIZ2BGTree: ds.b $1C +Map_AIZ2BossSmall: ds.b $32C +HCZ1_BGDeformArray: ds.b $242 +HCZ2_BGDeformArray: ds.b $2E +HCZ2_BGDeformIndex: ds.b $170 +MGZ1_Deform: ds.b $88 +MGZ1_BGDeformArray: ds.b $560 +MGZ2_QuakeEventArray: ds.b $24 +MGZ2_ChunkEventArray: ds.b $24 +MGZ2_ScreenRedrawArray: ds.b $5C +MGZ2_ChunkReplaceArray: ds.b $60 +MGZ2_CollapseScrollDelay: ds.b $14 +MGZ2_FGVScrollArray: ds.b $160 +MGZ2_BGDeform: ds.b $2C4 +MGZ2_BGDrawArray: ds.b 4 +MGZ2_BGDeformArray: ds.b $9EE +ICZ1_SetIntroPal: ds.b $40 +ICZ1_SetIndoorPal: ds.b $34 +ICZ1_IntroBGDeformArray: ds.b $1C8 +ICZ2_OutDeform: ds.b $78 +ICZ2_InDeform: ds.b $70 +ICZ2_SetOutdoorsPal: ds.b $30 +ICZ2_SetIndoorsPal: ds.b $34 +ICZ2_SetICZ1Pal: ds.b $30 +ICZ2_OutBGDeformArray: ds.b 8 +ICZ2_InBGDeformArray: ds.b $212 +LBZ1_CheckLayoutMod: ds.b $78 +LBZ1_DoMod4: ds.b $1C +LBZ1_DoMod3: ds.b $1A +LBZ1_DoMod2: ds.b $20 +LBZ1_DoMod1: ds.b $72 +LBZ1_FGVScrollArray: ds.b $38 +LBZ1_LayoutModExitRange: ds.b $10 +LBZ1_CollapseScrollSpeed: ds.b $176 +LBZ1_Deform: ds.b $78A +LBZ2_BGDeformArray: ds.b $24 +LBZ2_DEBGDeformArray: ds.b $30 +LBZ2_CloudDeformArray: ds.b $1A +LBZ2_BGUWDeformRange: ds.b $A +Gumball_ScreenInit: ds.b $4A +Gumball_ScreenEvent: ds.b $4A +Gumball_BackgroundInit: ds.b $12 +Gumball_BackgroundEvent: ds.b $278C +Map_S3EndingGraphics: ds.b $1D6 +ArtNem_S3EndingGraphics: ds.b $1C978 +SStageLayoutPtrs: ds.b $ED28 +HCZ_WaterlineScroll_Data: ds.b $2460 +LBZ_WaterlineScroll_Data: ds.b $5300 +Solid_AIZ1: ds.b $C00 +Solid_AIZ2: ds.b $C00 +Solid_HCZ1: ds.b $C00 +Solid_HCZ2: ds.b $C00 +Solid_MGZ1: ds.b $C00 +Solid_MGZ2: ds.b $C00 +Solid_CNZ: ds.b $C00 +Solid_ICZ1: ds.b $C00 +Solid_ICZ2: ds.b $C00 +Solid_LBZ1: ds.b $C00 +Solid_LBZ2: ds.b $C00 +Solid_ALZ: ds.b $C00 +Solid_BPZ: ds.b $C00 +Solid_DPZ: ds.b $C00 +Solid_CGZ: ds.b $C00 +Solid_EMZ: ds.b $C00 +Solid_Gumball_Special: ds.b $CC0 +Layout_AIZ1: ds.b $84C +Layout_AIZ2: ds.b $D66 +Layout_HCZ1: ds.b $B28 +Layout_HCZ2: ds.b $EA8 +Layout_MGZ1: ds.b $C90 +Layout_MGZ2: ds.b $DB0 +Layout_CNZ1: ds.b $BCA +Layout_CNZ2: ds.b $F8E +Layout_ICZ1: ds.b $FC8 +Layout_ICZ2: ds.b $E50 +Layout_LBZ1: ds.b $FAC +Layout_LBZ2: ds.b $F28 +Layout_ALZ: ds.b $1CC +Layout_BPZ: ds.b $154 +Layout_DPZ: ds.b $F8 +Layout_CGZ: ds.b $F8 +Layout_EMZ: ds.b $F8 +Layout_Gumball_Special: ds.b $1246 +ArtUnc_CNZCannon: ds.b $2AE6 +ArtUnc_SStageTails: ds.b $F60 +Map_SStageTails: ds.b $18 +PLC_SStageTails: ds.b $116 +ArtUnc_SStageTailstails: ds.b $700 +Map_SStageTailstails: ds.b $1E +PLC_SStageTailstails: ds.b $EB34 +Map_Sonic2P: ds.b $1AA +PLC_Sonic2P: ds.b $102 +Map_Tails2P: ds.b $1BE +Map_Tails2P_Tail: ds.b $9A +PLC_Tails2P: ds.b $10E +DPLC_Tails2P_Tail: ds.b $5E +Map_Knuckles2P: ds.b $1EE +PLC_Knuckles2P: ds.b $24A8 +ArtUnc_AniAIZ1_0: ds.b $900 +ArtUnc_AniAIZ1_1: ds.b $3C0 +ArtUnc_AniAIZ2_1: ds.b $900 +ArtUnc_AniAIZ2_0: ds.b $B80 +ArtUnc_AniAIZ2_3: ds.b $C00 +ArtUnc_AniAIZ2_2: ds.b $200 +ArtUnc_AniAIZ2_FirstTree: ds.b $460 +ArtUnc_AniHCZ1_0: ds.b $D80 +ArtUnc_AniHCZ1_WaterlineBelow: ds.b $180 +ArtUnc_FixHCZ1_UpperBG1: ds.b $180 +ArtUnc_AniHCZ1_WaterlineAbove: ds.b $180 +ArtUnc_FixHCZ1_LowerBG1: ds.b $180 +ArtUnc_AniHCZ1_WaterlineBelow2: ds.b $180 +ArtUnc_FixHCZ1_UpperBG2: ds.b $180 +ArtUnc_AniHCZ1_WaterlineAbove2: ds.b $180 +ArtUnc_FixHCZ1_LowerBG2: ds.b $180 +ArtUnc_AniHCZ__1: ds.b $6C0 +ArtUnc_AniHCZ2_0: ds.b $A80 +ArtUnc_AniHCZ2_SmallBGLine: ds.b $400 +ArtUnc_AniHCZ2_2: ds.b $800 +ArtUnc_AniHCZ2_3: ds.b $1000 +ArtUnc_AniHCZ2_4: ds.b $3000 +ArtUnc_AniMGZ__0: ds.b $2400 +ArtUnc_AniMGZ__1: ds.b $60 +ArtUnc_AniCNZ__0: ds.b $1200 +ArtUnc_AniCNZ__1: ds.b $2000 +ArtUnc_AniCNZ__2: ds.b $2000 +ArtUnc_AniCNZ__3: ds.b $1000 +ArtUnc_AniCNZ__4: ds.b $180 +ArtUnc_AniCNZ__6: ds.b $2000 +ArtUnc_AniCNZ__5: ds.b $A00 +ArtUnc_AniICZ__1: ds.b $1000 +ArtUnc_AniICZ__2: ds.b $200 +ArtUnc_AniICZ__3: ds.b $100 +ArtUnc_AniICZ__4: ds.b $80 +ArtUnc_AniICZ__5: ds.b $40 +ArtUnc_AniICZ__0: ds.b $400 +ArtUnc_AniLBZ1_0: ds.b $500 +ArtUnc_AniLBZ1_1: ds.b $1400 +ArtUnc_AniLBZ1_2: ds.b $100 +ArtUnc_AniLBZ2_2: ds.b $400 +ArtUnc_AniLBZ2_WaterlineBelow: ds.b $200 +ArtUnc_AniLBZ2_LowerBG: ds.b $200 +ArtUnc_AniLBZ2_WaterlineAbove: ds.b $200 +ArtUnc_AniLBZ2_UpperBG: ds.b $200 +ArtUnc_AniLBZ__0: ds.b $2000 +ArtUnc_AniLBZ2_0: ds.b $280 +ArtUnc_AniLBZ2_1: ds.b $300 +ArtUnc_AniALZ: ds.b $600 +ArtUnc_AniBPZ__0: ds.b $540 +ArtUnc_AniBPZ__1: ds.b $500 +ArtUnc_AniBPZ__2: ds.b $C0 +ArtUnc_AniBPZ__3: ds.b $40 +ArtUnc_AniDPZ: ds.b $780 +ArtUnc_AniDPZ__BG: ds.b $2000 +ArtUnc_AniGumball: ds.b $100 +ArtUnc_SplashDrown: ds.b $274C +ArtNem_Title_SonicSprites: ds.b $C58 +DemoDat_AIZ: ds.b $780 +DemoDat_HCZ: ds.b $780 +DemoDat_MGZ: ds.b $1ADC +Snd_AIZ1: ds.b $1B6D +Snd_AIZ2: ds.b $154F +Snd_HCZ1: ds.b $100A +Snd_HCZ2: ds.b $129E +Snd_MGZ1: ds.b $617 +Snd_MGZ2: ds.b $42E +Snd_CNZ2: ds.b $6E6 +Snd_CNZ1: ds.b $1B71 +Snd_ICZ2: ds.b $6AA +Snd_ICZ1: ds.b $71E +Snd_LBZ2: ds.b $57D +Snd_LBZ1: ds.b $77A3 +Snd_GumBonus: ds.b $F0F +Snd_ALZ: ds.b $B06 +Snd_BPZ: ds.b $BEF +Snd_DPZ: ds.b $1238 +Snd_CGZ: ds.b $1723 +Snd_EMZ: ds.b $B40 +Snd_S3Credits: ds.b $105D +Snd_2PMenu: ds.b $4DA +Snd_Drown: ds.b $8D39 +DacBank2: ds.b $7F7 + +; Adapted from DACBINCLUDE +DACDECLARE macro size,{INTLABEL} __LABEL__ label * ds.b size __LABEL___Len := little_endian(*-__LABEL__) @@ -453,545 +343,350 @@ __LABEL___Ptr := k68z80Pointer(__LABEL__-DacBank2) __LABEL___Bank := DacBank2 endm - ds.b $7F7 - -DAC_9C_Data: DSDACBINCLUDE $332 -DAC_9D_Data: DSDACBINCLUDE $249 -DAC_9E_Data: DSDACBINCLUDE $280 -DAC_9F_Data: DSDACBINCLUDE $12A5 -DAC_A0_Data: DSDACBINCLUDE $DBA -DAC_A1_Data: DSDACBINCLUDE $BA8 -DAC_A2_Data: DSDACBINCLUDE $D58 -DAC_A3_Data: DSDACBINCLUDE $29E -DAC_A4_Data: DSDACBINCLUDE $28A -DAC_A5_Data: DSDACBINCLUDE $C60 -DAC_A6_Data: DSDACBINCLUDE $6D6 -DAC_A7_Data: DSDACBINCLUDE $6F2 -DAC_A8_Data: DSDACBINCLUDE $37A -DAC_A9_Data: DSDACBINCLUDE $A4F -DAC_AA_Data: DSDACBINCLUDE $68E - - ds.b $4DF - -DAC_AB_Data: DSDACBINCLUDE $904 -DAC_AC_Data: DSDACBINCLUDE $581 -DAC_AD_AE_Data: DSDACBINCLUDE $1BC -DAC_AF_Data: DSDACBINCLUDE $36C - - ds.b $135C - -DAC_B1_Data: DSDACBINCLUDE $B85 - - ds.b $848 - -DAC_B4_C1_C2_C3_C4_Data: DSDACBINCLUDE $5FD -DAC_B5_Data: DSDACBINCLUDE $640 -DAC_B6_Data: DSDACBINCLUDE $555 -DAC_B7_Data: DSDACBINCLUDE $4B1 -DAC_B8_B9_Data: DSDACBINCLUDE $63A -DAC_BA_Data: DSDACBINCLUDE $4B3 -DAC_BB_Data: DSDACBINCLUDE $1B6 -DAC_BC_Data: DSDACBINCLUDE $8B7 -DAC_BD_Data: DSDACBINCLUDE $5BE -DAC_BE_Data: DSDACBINCLUDE $710 -DAC_BF_Data: DSDACBINCLUDE $1DC -DAC_C0_Data: DSDACBINCLUDE $836 - - ds.b $279BF - -; KiS2 -;byte_2E8C80: ds.b $114 -;byte_2E8D94: ds.b $249C -;byte_2EB230: ds.b $24 -;byte_2EB254: ds.b $98A -;byte_2EBBDE: ds.b $16E -;byte_2EBD4C: ds.b $142B4 -;S2KStartup: ds.b $200E0 - -ArtUnc_Tails: ds.b $16540 -ArtUnc_Tails_Tail:ds.b $1160 -ArtUnc_Sonic2P: ds.b $30C0 -ArtUnc_Tails2P: ds.b $2DA0 -ArtUnc_Tails2P_Tail:ds.b $580 -ArtUnc_Knuckles2P:ds.b $150E -byte_33F06E: ds.b $6DE -byte_33F74C: ds.b $546C -Map_Tails_Tail: ds.b $1BC -PLC_Tails_Tail: ds.b $10C -ICZSnowboard_Slope1: ds.b $C8 -ICZSnowboard_Slope2: ds.b $C8 -ArtUnc_SonicSnowboard: ds.b $2840 -ArtUnc_Snowboard: ds.b $5E0 -Map_SonicSnowboard: ds.b $15A -DPLC_SonicSnowboard: ds.b $96 -Map_Snowboard: ds.b $108 -DPLC_Snowboard: ds.b $78 -ArtNem_AIZIntroSprites:ds.b $7442 -ArtNem_2PDashdust: ds.b $BE - -MapEni_S3TitleSonic1:ds.b $BC -MapEni_S3TitleSonic2:ds.b $C2 -MapEni_S3TitleSonic3:ds.b $C4 -MapEni_S3TitleSonic4:ds.b $C4 -MapEni_S3TitleSonic5:ds.b $C4 -MapEni_S3TitleSonic6:ds.b $C6 -MapEni_S3TitleSonic7:ds.b $FE -MapEni_S3TitleSonic8:ds.b $EA -MapEni_S3TitleSonic9:ds.b $CE -MapEni_S3TitleSonicA:ds.b $C4 -MapEni_S3TitleSonicB:ds.b $9E -MapEni_S3TitleSonicC:ds.b $D0 -MapEni_S3TitleSonicD:ds.b $FA - -MapEni_S3TitleBg: ds.b $CE -Map_S3TitleBanner:ds.b $8C - -ArtNem_Title_S3Banner: ds.b $ABA -ArtKos_S3TitleSonic1:ds.b $F60 - -ArtKos_S3TitleSonic8:ds.b $2660 - -ArtKos_S3TitleSonic9:ds.b $2300 -ArtKos_S3TitleSonicA:ds.b $14E0 -ArtKos_S3TitleSonicB:ds.b $1320 -ArtKos_S3TitleSonicC:ds.b $11E0 -ArtKos_S3TitleSonicD:ds.b $3038 - -ArtNem_TailsLifeIcon:ds.b $32CA -Map_LBZMiniboss: ds.b $A2 -Map_LBZMinibossBox: ds.b $96 -Map_SnaleBlaster:ds.b $A4 - -Map_Orbinaut: ds.b $14 - -Map_Ribot: ds.b $10A - -Map_Corkey: ds.b $98 - -Map_Flybot767: ds.b $192 - -DPLC_Flybot767: ds.b $AA -Map_LBZEndBoss: ds.b $114 - -Map_CNZEndBoss: ds.b $11E - -CNZEndBossMagnet_AngleX: ds.b $40 -LBZFinalBoss2_CircleLookup: ds.b $2C8 - -Map_Blastoid: ds.b $A2 - -Map_Poindexter: ds.b $42 - -Map_Buggernaut: ds.b $72 - -Map_MegaChopper:ds.b $2EC - -Map_TurboSpiker:ds.b $152 - -Map_Jawz: ds.b $20A - -DPLC_Rhinobot: ds.b $3A -Map_Rhinobot: ds.b $B4 - -Map_AIZMinibossFlame: ds.b $64 -Map_Bloominator:ds.b $B6 - -Map_MonkeyDude: ds.b $1FC - -Map_MGZMiniboss:ds.b $A6 - -Map_CaterKillerJr:ds.b $60 - -DPLC_Clamer: ds.b $44 -Map_Clamer: ds.b $78 - -Map_Sparkle: ds.b $9C - -Map_Batbot: ds.b $70 - -DPLC_BubblesBadnik: ds.b $28 -Map_BubblesBadnik:ds.b $50 - -Map_Spiker: ds.b $6E - -Map_Mantis: ds.b $128 - -DPLC_Penguinator: ds.b $42 -Map_Penguinator:ds.b $7E - -Map_ICZSnowdust: ds.b $A0 -Map_StarPointer:ds.b $28 - -Map_AIZEndBoss: ds.b $4FA - -Map_AIZMiniboss: ds.b $11A -Map_AIZMinibossSmall: ds.b $1E -Map_MGZEndBoss: ds.b $298 -HCZMiniboss_RocketTwistLookup: ds.b $100 - - - - - - - - - - - - - - - - - -LBZ2FinalBoss2_CircleLookup2: ds.b $40 - - - - -Map_HCZMiniboss: ds.b $244 - -Map_HCZMinibossSplash: ds.b $5A -DPLC_HCZMinibossSplash: ds.b $36 -Map_ICZEndBoss: ds.b $220 - -Map_CNZMiniboss: ds.b $430 - -ICZMiniboss_OrbAngleLookup: ds.b $40 - - - - - - -Map_ICZMiniboss: ds.b $190 - -Map_HCZEndBoss: ds.b $302 - -Map_MGZEndBossDebris: ds.b $1EA - -Map_ICZWallAndColumn:ds.b $284 - -Map_ICZPlatforms:ds.b $3C8 - -Map_LBZKnuxBomb: ds.b $A -Map_CutsceneKnux: ds.b $2F8 -DPLC_CutsceneKnux: ds.b $162 -Map_AIZIntroPlane: ds.b $F2 - -Map_AIZIntroEmeralds: ds.b $46 -Map_LBZFinalBoss1: ds.b $264 - -Map_LBZDeathEggSmall: ds.b $8A - -Pal_MGZFadeCNZ: ds.b $200 -Map_LBZFinalBoss2: ds.b $15C - -ArtNem_AIZMiniboss: ds.b $66E -ArtKosM_AIZEndBoss: ds.b $1F42 -ArtNem_AIZMinibossSmall: ds.b $188 -ArtUnc_AIZRhinobot: ds.b $AA0 -ArtKosM_AIZ_Bloominator:ds.b $242 -ArtKosM_AIZ_MonkeyDude:ds.b $1F2 -ArtKosM_AIZ_CaterkillerJr:ds.b $202 -ArtNem_HCZMiniboss: ds.b $E9E -ArtNem_HCZEndBoss: ds.b $1142 -ArtNem_HCZDragonfly: ds.b $172 - -ArtKosM_Jawz:ds.b $172 -ArtKosM_MegaChopper:ds.b $102 - -ArtKosM_Blastoid:ds.b $1A2 -ArtKosM_TurboSpiker:ds.b $422 - -ArtKosM_Pointdexter: ds.b $2A2 - -ArtKosM_MGZMiniboss:ds.b $2A2 -ArtNem_MGZSpire: ds.b $72 -ArtKosM_MGZEndBoss: ds.b $1232 - -ArtScaled_MGZEndBoss: ds.b $1000 -ArtKosM_MGZEndBossDebris:ds.b $132 - -ArtUnc_BubblesBadnik: ds.b $A20 -ArtKosM_Spiker:ds.b $212 - -ArtKosM_Mantis:ds.b $272 - -ArtNem_CNZMiniboss: ds.b $4BC -ArtNem_CNZEndBoss: ds.b $514 -ArtUnc_Clamer: ds.b $1140 -ArtKosM_ClamerShot:ds.b $72 -ArtKosM_Sparkle:ds.b $322 -ArtKosM_Batbot:ds.b $222 -ArtKosM_CNZBalloon:ds.b $1500 -ArtNem_ICZMisc1: ds.b $C24 - -ArtNem_ICZIntroSprites: ds.b $482 -ArtNem_ICZMisc2: ds.b $36A -ArtNem_ICZEndBoss: ds.b $DAE -ArtNem_ICZMiniboss: ds.b $488 -ArtUnc_Penguinator: ds.b $FE0 -ArtKosM_ICZSnowdust:ds.b $92 -ArtKosM_StarPointer:ds.b $192 -ArtKosM_LBZMiniboss: ds.b $322 -ArtKosM_LBZMinibossBox: ds.b $322 - -ArtNem_LBZFinalBoss1: ds.b $BA6 -ArtKosM_LBZEndBoss: ds.b $332 -ArtKosM_LBZFinalBoss2: ds.b $1122 -ArtKosM_SnaleBlaster:ds.b $252 -ArtKosM_Ribot:ds.b $132 -ArtKosM_Orbinaut:ds.b $E2 -ArtKosM_Corkey:ds.b $C2 -ArtUnc_Flybot767: ds.b $1320 -ArtNem_LBZKnuxBomb: ds.b $3E -ArtKosM_LBZ2DeathEggSmall: ds.b $64D2 -ArtKosM_LBZ2DeathEgg2_8x8:ds.b $462 -ArtNem_AIZBossFire: ds.b $2AD4 -ArtKosM_AIZIntroPlane: ds.b $7A2 -ArtUnc_CutsceneKnux: ds.b $4EE0 -ArtKosM_AIZIntroEmeralds: ds.b $44F4 -ArtKosM_TailsEndPose: ds.b $1246 -ArtNem_S38x16Font: ds.b $1A6 -ArtNem_AIZCorkFloor:ds.b $1A4 -ArtNem_AIZCorkFloor2: ds.b $192 - -ArtNem_AIZSwingVine:ds.b $166 - -ArtNem_AIZSlideRope:ds.b $124 -ArtNem_AIZBackgroundTree:ds.b $14A - -ArtNem_AIZMisc1: ds.b $848 -ArtNem_AIZFallingLog:ds.b $288 -ArtNem_AIZMisc2:ds.b $138C - -ArtNem_HCZSpikeBall: ds.b $C8 - -ArtNem_HCZWaveSplash: ds.b $120 - -ArtNem_HCZButton: ds.b $B4 - -ArtNem_HCZMisc: ds.b $5C0 - -ArtNem_HCZWaterRush: ds.b $5B8 -ArtKosM_HCZLargeFan: ds.b $302 -ArtKosM_HCZGeyserHorz: ds.b $792 -ArtKosM_HCZGeyserVert: ds.b $7A2 - -ArtNem_HCZ2Slide: ds.b $516 -ArtNem_HCZ2BlockPlat: ds.b $348 -ArtUnc_HCZWaterSplash2: ds.b $780 -ArtUnc_HCZWaterSplash: ds.b $C00 -ArtNem_HCZ2KnuxWall: ds.b $11A -ArtNem_MGZMisc1: ds.b $A3E - -ArtNem_MGZMisc2: ds.b $610 - -ArtNem_MGZSigns: ds.b $23A - -ArtNem_CNZMisc: ds.b $DBE -ArtNem_CNZPlatform: ds.b $16A -ArtNem_LBZMisc: ds.b $B1E - -ArtNem_LBZTubeTrans: ds.b $264 -ArtNem_LBZ2Misc: ds.b $43C -ArtNem_2PArt_1: ds.b $174 - -ArtNem_2PArt_2: ds.b $1F2 - -ArtNem_2PArt_3: ds.b $4F6 - -ArtNem_2PStartPost: ds.b $178 - -ArtNem_2PTime: ds.b $65A - -ArtNem_2PLapNum: ds.b $4FA - -ArtNem_2PPosIcon: ds.b $9A - -ArtNem_BPZMisc: ds.b $84A -ArtNem_DPZMisc: ds.b $D16 -ArtNem_CGZMisc: ds.b $374 -ArtNem_EMZMisc: ds.b $292 -ArtKosM_AIZ2Bombership2_8x8:ds.b $D54 -ArtKosM_ResultsMILES: ds.b $152 -ArtKosM_ResultsTAILS: ds.b $125E - -ArtKosM_AIZTitleCard:ds.b $112 -ArtKosM_HCZTitleCard:ds.b $152 -ArtKosM_MGZTitleCard:ds.b $1C2 -ArtKosM_CNZTitleCard:ds.b $2F4 -ArtKosM_ICZTitleCard:ds.b $D2 -ArtKosM_LBZTitleCard:ds.b $152 -ArtKosM_ALZTitleCard:ds.b $1B2 -ArtKosM_BPZTitleCard:ds.b $222 -ArtKosM_CGZTitleCard:ds.b $242 -ArtKosM_DPZTitleCard:ds.b $202 -ArtKosM_EMZTitleCard:ds.b $344 -Pal_SaveMenuBG:ds.b $20 -Pal_CompetitionMenuBG: ds.b $20 -MapEni_S3MenuBG:ds.b $202 -ArtKos_S3MenuBG: ds.b $1C60 -MapEni_CompetitionLevBorder:ds.b $4C -MapUnc_CompetitionTimeBorder:ds.b $D8 - - - - - - - - - -MapUnc_CompetitionBESTTIME:ds.b $24 - - - -MapEni_CompetitionLevImage:ds.b $120 -MapEni_CompetitionLevName:ds.b $102 -ArtKos_CompetitionMode: ds.b $410 -ArtKos_CompetitionLevel: ds.b $1E40 -ArtKos_CompetitionResults: ds.b $430 -Map_CompetitionPlayerSprite: ds.b $42 - -ArtKos_CompetitionPlayer: ds.b $4F0 -MapEni_SaveScreen_Layout:ds.b $BE -MapUnc_SaveScreenNEW:ds.b $8C - - - - - - - -MapPtrs_SaveScreenStatic:ds.b $240 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -ArtKos_SaveScreenMisc:ds.b $13A0 - -AIZ1_16x16_Primary_Kos:ds.b $200 -AIZ1_16x16_Secondary_Kos:ds.b $C40 -AIZ1_16x16_MainLevel_Kos:ds.b $10E0 -AIZ1_8x8_Primary_KosM:ds.b $E12 -AIZ1_8x8_Secondary_KosM:ds.b $2FD2 -AIZ1_8x8_MainLevel_KosM:ds.b $27F2 -AIZ1_128x128_Kos:ds.b $3990 -AIZ1_8x8_Flames_KosM:ds.b $A82 - -AIZ2_16x16_Primary_Kos:ds.b $8A0 -AIZ2_16x16_Secondary_Kos:ds.b $A80 -AIZ2_16x16_BomberShip_Kos:ds.b $260 -AIZ2_8x8_Primary_KosM:ds.b $21B2 -AIZ2_8x8_Secondary_KosM:ds.b $1142 -AIZ2_8x8_BomberShip_KosM:ds.b $922 -AIZ2_128x128_Kos:ds.b $4010 - -HCZ_16x16_Primary_Kos:ds.b $470 -HCZ_8x8_Primary_KosM:ds.b $C42 -HCZ_128x128_Primary_Kos:ds.b $340 - -HCZ1_16x16_Secondary_Kos:ds.b $890 -HCZ1_8x8_Secondary_KosM:ds.b $2252 -HCZ1_128x128_Secondary_Kos:ds.b $20B0 - -HCZ2_16x16_Secondary_Kos:ds.b $8F0 -HCZ2_8x8_Secondary_KosM:ds.b $1E82 -HCZ2_128x128_Secondary_Kos:ds.b $1C80 - -MGZ_16x16_Primary_Kos:ds.b $950 -MGZ_8x8_Primary_KosM:ds.b $25A2 -MGZ_128x128_Primary_Kos:ds.b $2300 - -MGZ1_16x16_Secondary_Kos:ds.b $310 -MGZ1_8x8_Secondary_KosM:ds.b $9E2 -MGZ1_128x128_Secondary_Kos:ds.b $880 - -MGZ2_16x16_Secondary_Kos:ds.b $460 -MGZ2_8x8_Secondary_KosM:ds.b $1092 -MGZ2_128x128_Secondary_Kos:ds.b $9F0 -MGZ2_QuakeChunks: ds.b $1080 - -CNZ_16x16_Kos: ds.b $1040 -CNZ_8x8_KosM: ds.b $3222 -CNZ_128x128_Kos:ds.b $3120 - -ICZ_16x16_Primary_Kos:ds.b $2E0 -ICZ_8x8_Primary_KosM:ds.b $1412 -ICZ_128x128_Primary_Kos:ds.b $2B0 - -ICZ1_16x16_Secondary_Kos:ds.b $B70 -ICZ1_8x8_Secondary_KosM:ds.b $1F82 -ICZ1_128x128_Secondary_Kos:ds.b $1E20 - -ICZ2_16x16_Secondary_Kos:ds.b $CA0 -ICZ2_8x8_Secondary_KosM:ds.b $20B2 -ICZ2_128x128_Secondary_Kos:ds.b $1AD0 - -LBZ_16x16_Primary_Kos:ds.b $540 -LBZ1_16x16_Secondary_Kos:ds.b $AF0 -LBZ_8x8_Primary_KosM:ds.b $1752 -LBZ1_8x8_Secondary_KosM:ds.b $1D92 -LBZ1_128x128_Kos:ds.b $2FD0 - -LBZ2_16x16_Secondary_Kos:ds.b $A40 -LBZ2_16x16_DeathEgg_Kos:ds.b $E20 -LBZ2_8x8_Secondary_KosM:ds.b $17A2 -LBZ2_8x8_DeathEgg_KosM:ds.b $1F92 -LBZ2_128x128_Kos:ds.b $24D0 -LBZ2_128x128_DeathEgg_Kos:ds.b $CF0 - -ALZ_16x16_Kos: ds.b $AC0 -ALZ_8x8_KosM: ds.b $2DB2 -ALZ_128x128_Kos:ds.b $690 - -BPZ_16x16_Kos: ds.b $8D0 -BPZ_8x8_KosM: ds.b $1FE2 -BPZ_128x128_Kos:ds.b $6F0 - -DPZ_16x16_Kos: ds.b $9E0 -DPZ_8x8_KosM: ds.b $1AF2 -DPZ_128x128_Kos:ds.b $630 - -CGZ_16x16_Kos: ds.b $750 -CGZ_8x8_KosM: ds.b $25A2 -CGZ_128x128_Kos:ds.b $4C0 - -EMZ_16x16_Kos: ds.b $AB0 -EMZ_8x8_KosM: ds.b $2C32 -EMZ_128x128_Kos:ds.b $710 - -Gumball_16x16_Kos:ds.b $420 -Gumball_8x8_KosM:ds.b $D52 -Gumball_128x128_Kos:ds.b $480 +DAC_9C_Data: DACDECLARE $332 +DAC_9D_Data: DACDECLARE $249 +DAC_9E_Data: DACDECLARE $280 +DAC_9F_Data: DACDECLARE $12A5 +DAC_A0_Data: DACDECLARE $DBA +DAC_A1_Data: DACDECLARE $BA8 +DAC_A2_Data: DACDECLARE $D58 +DAC_A3_Data: DACDECLARE $29E +DAC_A4_Data: DACDECLARE $28A +DAC_A5_Data: DACDECLARE $C60 +DAC_A6_Data: DACDECLARE $6D6 +DAC_A7_Data: DACDECLARE $6F2 +DAC_A8_Data: DACDECLARE $37A +DAC_A9_Data: DACDECLARE $A4F +DAC_AA_Data: DACDECLARE $68E + ds.b $4DF +DAC_AB_Data: DACDECLARE $904 +DAC_AC_Data: DACDECLARE $581 +DAC_AD_AE_Data: DACDECLARE $1BC +DAC_AF_Data: DACDECLARE $36C + ds.b $135C +DAC_B1_Data: DACDECLARE $B85 + ds.b $848 +DAC_B4_C1_C2_C3_C4_Data: DACDECLARE $5FD +DAC_B5_Data: DACDECLARE $640 +DAC_B6_Data: DACDECLARE $555 +DAC_B7_Data: DACDECLARE $4B1 +DAC_B8_B9_Data: DACDECLARE $63A +DAC_BA_Data: DACDECLARE $4B3 +DAC_BB_Data: DACDECLARE $1B6 +DAC_BC_Data: DACDECLARE $8B7 +DAC_BD_Data: DACDECLARE $5BE +DAC_BE_Data: DACDECLARE $710 +DAC_BF_Data: DACDECLARE $1DC +DAC_C0_Data: DACDECLARE $836 + ds.b $279BF +ArtUnc_Tails: ds.b $16540 +ArtUnc_Tails_Tail: ds.b $1160 +ArtUnc_Sonic2P: ds.b $30C0 +ArtUnc_Tails2P: ds.b $2DA0 +ArtUnc_Tails2P_Tail: ds.b $580 +ArtUnc_Knuckles2P: ds.b $150E +byte_33F06E: ds.b $6DE +byte_33F74C: ds.b $546C +Map_Tails_Tail: ds.b $1BC +PLC_Tails_Tail: ds.b $10C +ICZSnowboard_Slope1: ds.b $C8 +ICZSnowboard_Slope2: ds.b $C8 +ArtUnc_SonicSnowboard: ds.b $2840 +ArtUnc_Snowboard: ds.b $5E0 +Map_SonicSnowboard: ds.b $15A +DPLC_SonicSnowboard: ds.b $96 +Map_Snowboard: ds.b $108 +DPLC_Snowboard: ds.b $78 +ArtNem_AIZIntroSprites: ds.b $7442 +ArtNem_2PDashdust: ds.b $BE +MapEni_S3TitleSonic1: ds.b $BC +MapEni_S3TitleSonic2: ds.b $C2 +MapEni_S3TitleSonic3: ds.b $C4 +MapEni_S3TitleSonic4: ds.b $C4 +MapEni_S3TitleSonic5: ds.b $C4 +MapEni_S3TitleSonic6: ds.b $C6 +MapEni_S3TitleSonic7: ds.b $FE +MapEni_S3TitleSonic8: ds.b $EA +MapEni_S3TitleSonic9: ds.b $CE +MapEni_S3TitleSonicA: ds.b $C4 +MapEni_S3TitleSonicB: ds.b $9E +MapEni_S3TitleSonicC: ds.b $D0 +MapEni_S3TitleSonicD: ds.b $FA +MapEni_S3TitleBg: ds.b $CE +Map_S3TitleBanner: ds.b $8C +ArtNem_Title_S3Banner: ds.b $ABA +ArtKos_S3TitleSonic1: ds.b $F60 +ArtKos_S3TitleSonic8: ds.b $2660 +ArtKos_S3TitleSonic9: ds.b $2300 +ArtKos_S3TitleSonicA: ds.b $14E0 +ArtKos_S3TitleSonicB: ds.b $1320 +ArtKos_S3TitleSonicC: ds.b $11E0 +ArtKos_S3TitleSonicD: ds.b $3038 +ArtNem_TailsLifeIcon: ds.b $32CA +Map_LBZMiniboss: ds.b $A2 +Map_LBZMinibossBox: ds.b $96 +Map_SnaleBlaster: ds.b $A4 +Map_Orbinaut: ds.b $14 +Map_Ribot: ds.b $10A +Map_Corkey: ds.b $98 +Map_Flybot767: ds.b $192 +DPLC_Flybot767: ds.b $AA +Map_LBZEndBoss: ds.b $114 +Map_CNZEndBoss: ds.b $11E +CNZEndBossMagnet_AngleX: ds.b $40 +LBZFinalBoss2_CircleLookup: ds.b $2C8 +Map_Blastoid: ds.b $A2 +Map_Poindexter: ds.b $42 +Map_Buggernaut: ds.b $72 +Map_MegaChopper: ds.b $2EC +Map_TurboSpiker: ds.b $152 +Map_Jawz: ds.b $20A +DPLC_Rhinobot: ds.b $3A +Map_Rhinobot: ds.b $B4 +Map_AIZMinibossFlame: ds.b $64 +Map_Bloominator: ds.b $B6 +Map_MonkeyDude: ds.b $1FC +Map_MGZMiniboss: ds.b $A6 +Map_CaterKillerJr: ds.b $60 +DPLC_Clamer: ds.b $44 +Map_Clamer: ds.b $78 +Map_Sparkle: ds.b $9C +Map_Batbot: ds.b $70 +DPLC_BubblesBadnik: ds.b $28 +Map_BubblesBadnik: ds.b $50 +Map_Spiker: ds.b $6E +Map_Mantis: ds.b $128 +DPLC_Penguinator: ds.b $42 +Map_Penguinator: ds.b $7E +Map_ICZSnowdust: ds.b $A0 +Map_StarPointer: ds.b $28 +Map_AIZEndBoss: ds.b $4FA +Map_AIZMiniboss: ds.b $11A +Map_AIZMinibossSmall: ds.b $1E +Map_MGZEndBoss: ds.b $298 +HCZMiniboss_RocketTwistLookup: ds.b $100 +LBZ2FinalBoss2_CircleLookup2: ds.b $40 +Map_HCZMiniboss: ds.b $244 +Map_HCZMinibossSplash: ds.b $5A +DPLC_HCZMinibossSplash: ds.b $36 +Map_ICZEndBoss: ds.b $220 +Map_CNZMiniboss: ds.b $430 +ICZMiniboss_OrbAngleLookup: ds.b $40 +Map_ICZMiniboss: ds.b $190 +Map_HCZEndBoss: ds.b $302 +Map_MGZEndBossDebris: ds.b $1EA +Map_ICZWallAndColumn: ds.b $284 +Map_ICZPlatforms: ds.b $3C8 +Map_LBZKnuxBomb: ds.b $A +Map_CutsceneKnux: ds.b $2F8 +DPLC_CutsceneKnux: ds.b $162 +Map_AIZIntroPlane: ds.b $F2 +Map_AIZIntroEmeralds: ds.b $46 +Map_LBZFinalBoss1: ds.b $264 +Map_LBZDeathEggSmall: ds.b $8A +Pal_MGZFadeCNZ: ds.b $200 +Map_LBZFinalBoss2: ds.b $15C +ArtNem_AIZMiniboss: ds.b $66E +ArtKosM_AIZEndBoss: ds.b $1F42 +ArtNem_AIZMinibossSmall: ds.b $188 +ArtUnc_AIZRhinobot: ds.b $AA0 +ArtKosM_AIZ_Bloominator: ds.b $242 +ArtKosM_AIZ_MonkeyDude: ds.b $1F2 +ArtKosM_AIZ_CaterkillerJr: ds.b $202 +ArtNem_HCZMiniboss: ds.b $E9E +ArtNem_HCZEndBoss: ds.b $1142 +ArtNem_HCZDragonfly: ds.b $172 +ArtKosM_Jawz: ds.b $172 +ArtKosM_MegaChopper: ds.b $102 +ArtKosM_Blastoid: ds.b $1A2 +ArtKosM_TurboSpiker: ds.b $422 +ArtKosM_Pointdexter: ds.b $2A2 +ArtKosM_MGZMiniboss: ds.b $2A2 +ArtNem_MGZSpire: ds.b $72 +ArtKosM_MGZEndBoss: ds.b $1232 +ArtScaled_MGZEndBoss: ds.b $1000 +ArtKosM_MGZEndBossDebris: ds.b $132 +ArtUnc_BubblesBadnik: ds.b $A20 +ArtKosM_Spiker: ds.b $212 +ArtKosM_Mantis: ds.b $272 +ArtNem_CNZMiniboss: ds.b $4BC +ArtNem_CNZEndBoss: ds.b $514 +ArtUnc_Clamer: ds.b $1140 +ArtKosM_ClamerShot: ds.b $72 +ArtKosM_Sparkle: ds.b $322 +ArtKosM_Batbot: ds.b $222 +ArtKosM_CNZBalloon: ds.b $1500 +ArtNem_ICZMisc1: ds.b $C24 +ArtNem_ICZIntroSprites: ds.b $482 +ArtNem_ICZMisc2: ds.b $36A +ArtNem_ICZEndBoss: ds.b $DAE +ArtNem_ICZMiniboss: ds.b $488 +ArtUnc_Penguinator: ds.b $FE0 +ArtKosM_ICZSnowdust: ds.b $92 +ArtKosM_StarPointer: ds.b $192 +ArtKosM_LBZMiniboss: ds.b $322 +ArtKosM_LBZMinibossBox: ds.b $322 +ArtNem_LBZFinalBoss1: ds.b $BA6 +ArtKosM_LBZEndBoss: ds.b $332 +ArtKosM_LBZFinalBoss2: ds.b $1122 +ArtKosM_SnaleBlaster: ds.b $252 +ArtKosM_Ribot: ds.b $132 +ArtKosM_Orbinaut: ds.b $E2 +ArtKosM_Corkey: ds.b $C2 +ArtUnc_Flybot767: ds.b $1320 +ArtNem_LBZKnuxBomb: ds.b $3E +ArtKosM_LBZ2DeathEggSmall: ds.b $64D2 +ArtKosM_LBZ2DeathEgg2_8x8: ds.b $462 +ArtNem_AIZBossFire: ds.b $2AD4 +ArtKosM_AIZIntroPlane: ds.b $7A2 +ArtUnc_CutsceneKnux: ds.b $4EE0 +ArtKosM_AIZIntroEmeralds: ds.b $44F4 +ArtKosM_TailsEndPose: ds.b $1246 +ArtNem_S38x16Font: ds.b $1A6 +ArtNem_AIZCorkFloor: ds.b $1A4 +ArtNem_AIZCorkFloor2: ds.b $192 +ArtNem_AIZSwingVine: ds.b $166 +ArtNem_AIZSlideRope: ds.b $124 +ArtNem_AIZBackgroundTree: ds.b $14A +ArtNem_AIZMisc1: ds.b $848 +ArtNem_AIZFallingLog: ds.b $288 +ArtNem_AIZMisc2: ds.b $138C +ArtNem_HCZSpikeBall: ds.b $C8 +ArtNem_HCZWaveSplash: ds.b $120 +ArtNem_HCZButton: ds.b $B4 +ArtNem_HCZMisc: ds.b $5C0 +ArtNem_HCZWaterRush: ds.b $5B8 +ArtKosM_HCZLargeFan: ds.b $302 +ArtKosM_HCZGeyserHorz: ds.b $792 +ArtKosM_HCZGeyserVert: ds.b $7A2 +ArtNem_HCZ2Slide: ds.b $516 +ArtNem_HCZ2BlockPlat: ds.b $348 +ArtUnc_HCZWaterSplash2: ds.b $780 +ArtUnc_HCZWaterSplash: ds.b $C00 +ArtNem_HCZ2KnuxWall: ds.b $11A +ArtNem_MGZMisc1: ds.b $A3E +ArtNem_MGZMisc2: ds.b $610 +ArtNem_MGZSigns: ds.b $23A +ArtNem_CNZMisc: ds.b $DBE +ArtNem_CNZPlatform: ds.b $16A +ArtNem_LBZMisc: ds.b $B1E +ArtNem_LBZTubeTrans: ds.b $264 +ArtNem_LBZ2Misc: ds.b $43C +ArtNem_2PArt_1: ds.b $174 +ArtNem_2PArt_2: ds.b $1F2 +ArtNem_2PArt_3: ds.b $4F6 +ArtNem_2PStartPost: ds.b $178 +ArtNem_2PTime: ds.b $65A +ArtNem_2PLapNum: ds.b $4FA +ArtNem_2PPosIcon: ds.b $9A +ArtNem_BPZMisc: ds.b $84A +ArtNem_DPZMisc: ds.b $D16 +ArtNem_CGZMisc: ds.b $374 +ArtNem_EMZMisc: ds.b $292 +ArtKosM_AIZ2Bombership2_8x8: ds.b $D54 +ArtKosM_ResultsMILES: ds.b $152 +ArtKosM_ResultsTAILS: ds.b $125E +ArtKosM_AIZTitleCard: ds.b $112 +ArtKosM_HCZTitleCard: ds.b $152 +ArtKosM_MGZTitleCard: ds.b $1C2 +ArtKosM_CNZTitleCard: ds.b $2F4 +ArtKosM_ICZTitleCard: ds.b $D2 +ArtKosM_LBZTitleCard: ds.b $152 +ArtKosM_ALZTitleCard: ds.b $1B2 +ArtKosM_BPZTitleCard: ds.b $222 +ArtKosM_CGZTitleCard: ds.b $242 +ArtKosM_DPZTitleCard: ds.b $202 +ArtKosM_EMZTitleCard: ds.b $344 +Pal_SaveMenuBG: ds.b $20 +Pal_CompetitionMenuBG: ds.b $20 +MapEni_S3MenuBG: ds.b $202 +ArtKos_S3MenuBG: ds.b $1C60 +MapEni_CompetitionLevBorder: ds.b $4C +MapUnc_CompetitionTimeBorder: ds.b $D8 +MapUnc_CompetitionBESTTIME: ds.b $24 +MapEni_CompetitionLevImage: ds.b $120 +MapEni_CompetitionLevName: ds.b $102 +ArtKos_CompetitionMode: ds.b $410 +ArtKos_CompetitionLevel: ds.b $1E40 +ArtKos_CompetitionResults: ds.b $430 +Map_CompetitionPlayerSprite: ds.b $42 +ArtKos_CompetitionPlayer: ds.b $4F0 +MapEni_SaveScreen_Layout: ds.b $BE +MapUnc_SaveScreenNEW: ds.b $8C +MapPtrs_SaveScreenStatic: ds.b $240 +ArtKos_SaveScreenMisc: ds.b $13A0 +AIZ1_16x16_Primary_Kos: ds.b $200 +AIZ1_16x16_Secondary_Kos: ds.b $C40 +AIZ1_16x16_MainLevel_Kos: ds.b $10E0 +AIZ1_8x8_Primary_KosM: ds.b $E12 +AIZ1_8x8_Secondary_KosM: ds.b $2FD2 +AIZ1_8x8_MainLevel_KosM: ds.b $27F2 +AIZ1_128x128_Kos: ds.b $3990 +AIZ1_8x8_Flames_KosM: ds.b $A82 +AIZ2_16x16_Primary_Kos: ds.b $8A0 +AIZ2_16x16_Secondary_Kos: ds.b $A80 +AIZ2_16x16_BomberShip_Kos: ds.b $260 +AIZ2_8x8_Primary_KosM: ds.b $21B2 +AIZ2_8x8_Secondary_KosM: ds.b $1142 +AIZ2_8x8_BomberShip_KosM: ds.b $922 +AIZ2_128x128_Kos: ds.b $4010 +HCZ_16x16_Primary_Kos: ds.b $470 +HCZ_8x8_Primary_KosM: ds.b $C42 +HCZ_128x128_Primary_Kos: ds.b $340 +HCZ1_16x16_Secondary_Kos: ds.b $890 +HCZ1_8x8_Secondary_KosM: ds.b $2252 +HCZ1_128x128_Secondary_Kos: ds.b $20B0 +HCZ2_16x16_Secondary_Kos: ds.b $8F0 +HCZ2_8x8_Secondary_KosM: ds.b $1E82 +HCZ2_128x128_Secondary_Kos: ds.b $1C80 +MGZ_16x16_Primary_Kos: ds.b $950 +MGZ_8x8_Primary_KosM: ds.b $25A2 +MGZ_128x128_Primary_Kos: ds.b $2300 +MGZ1_16x16_Secondary_Kos: ds.b $310 +MGZ1_8x8_Secondary_KosM: ds.b $9E2 +MGZ1_128x128_Secondary_Kos: ds.b $880 +MGZ2_16x16_Secondary_Kos: ds.b $460 +MGZ2_8x8_Secondary_KosM: ds.b $1092 +MGZ2_128x128_Secondary_Kos: ds.b $9F0 +MGZ2_QuakeChunks: ds.b $1080 +CNZ_16x16_Kos: ds.b $1040 +CNZ_8x8_KosM: ds.b $3222 +CNZ_128x128_Kos: ds.b $3120 +ICZ_16x16_Primary_Kos: ds.b $2E0 +ICZ_8x8_Primary_KosM: ds.b $1412 +ICZ_128x128_Primary_Kos: ds.b $2B0 +ICZ1_16x16_Secondary_Kos: ds.b $B70 +ICZ1_8x8_Secondary_KosM: ds.b $1F82 +ICZ1_128x128_Secondary_Kos: ds.b $1E20 +ICZ2_16x16_Secondary_Kos: ds.b $CA0 +ICZ2_8x8_Secondary_KosM: ds.b $20B2 +ICZ2_128x128_Secondary_Kos: ds.b $1AD0 +LBZ_16x16_Primary_Kos: ds.b $540 +LBZ1_16x16_Secondary_Kos: ds.b $AF0 +LBZ_8x8_Primary_KosM: ds.b $1752 +LBZ1_8x8_Secondary_KosM: ds.b $1D92 +LBZ1_128x128_Kos: ds.b $2FD0 +LBZ2_16x16_Secondary_Kos: ds.b $A40 +LBZ2_16x16_DeathEgg_Kos: ds.b $E20 +LBZ2_8x8_Secondary_KosM: ds.b $17A2 +LBZ2_8x8_DeathEgg_KosM: ds.b $1F92 +LBZ2_128x128_Kos: ds.b $24D0 +LBZ2_128x128_DeathEgg_Kos: ds.b $CF0 +ALZ_16x16_Kos: ds.b $AC0 +ALZ_8x8_KosM: ds.b $2DB2 +ALZ_128x128_Kos: ds.b $690 +BPZ_16x16_Kos: ds.b $8D0 +BPZ_8x8_KosM: ds.b $1FE2 +BPZ_128x128_Kos: ds.b $6F0 +DPZ_16x16_Kos: ds.b $9E0 +DPZ_8x8_KosM: ds.b $1AF2 +DPZ_128x128_Kos: ds.b $630 +CGZ_16x16_Kos: ds.b $750 +CGZ_8x8_KosM: ds.b $25A2 +CGZ_128x128_Kos: ds.b $4C0 +EMZ_16x16_Kos: ds.b $AB0 +EMZ_8x8_KosM: ds.b $2C32 +EMZ_128x128_Kos: ds.b $710 +Gumball_16x16_Kos: ds.b $420 +Gumball_8x8_KosM: ds.b $D52 +Gumball_128x128_Kos: ds.b $480 From d44e5eb47f4c862d47a4bfbe2d6d15b27f8cd6f8 Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Fri, 31 Dec 2021 11:39:56 +0000 Subject: [PATCH 57/72] More formatting --- s3.asm | 126 +++------ sonic3k.asm | 777 +++++++++++++++++++++++++--------------------------- 2 files changed, 412 insertions(+), 491 deletions(-) diff --git a/s3.asm b/s3.asm index ff66d676..a70a3675 100644 --- a/s3.asm +++ b/s3.asm @@ -430,7 +430,7 @@ loc_6EA: move.l d7,(a6)+ dbf d6,loc_6EA move.b (HW_Version).l,d0 - andi.b #-$40,d0 + andi.b #$C0,d0 move.b d0,(Graphics_flags).w move.l #Ref_Checksum_String,(Checksum_string).w @@ -5023,18 +5023,8 @@ loc_4066: locret_406C: rts ; --------------------------------------------------------------------------- -OldDebugCodeDat:dc.b $20 - dc.b $30 - dc.b $70 - dc.b $10 - dc.b $50 - dc.b $70 - dc.b $40 - dc.b $60 - dc.b $70 - dc.b $71 - dc.b $72 - dc.b 0 +OldDebugCodeDat:dc.b $20, $30, $70, $10, $50, $70, $40, $60, $70, $71, $72, 0 + even ; --------------------------------------------------------------------------- Obj_TitleCopyright: @@ -5207,16 +5197,8 @@ locret_42C8: ; End of function S3_Level_Select_Code ; --------------------------------------------------------------------------- -LSelect3CodeDat:dc.b 1 - dc.b 1 - dc.b 2 - dc.b 2 - dc.b 1 - dc.b 1 - dc.b 1 - dc.b 1 - dc.b 0 - dc.b 0 +LSelect3CodeDat:dc.b 1, 1, 2, 2, 1, 1, 1, 1, 0 + even Map_TitleScreenText: include "General/Title/Map - S3 Screen Text.asm" ArtNem_TitleScreenText: @@ -5294,6 +5276,9 @@ loc_4712: loc_471E: move.w (Current_zone_and_act).w,d0 + + ; Useless code. Player_mode has not been set yet, and even if none of + ; these branches get taken, level $D00 has the same PLCs as level 0. bne.s loc_4736 cmpi.w #2,(Player_mode).w beq.s loc_4732 @@ -14843,7 +14828,8 @@ locret_C7BC: byte_C7BE: dc.b $2B, $2C, 0, $30, $1E, $33, $22, $FF, $21, $22, $29, $22, $31, $22, $FF byte_C7CD: dc.b 0, 0, 0, 0, 0, $FF byte_C7D3: dc.b $37, $2C, $2B, $22, 0, $FF -byte_C7D9: dc.b $20, $29, $22, $1E, $2F, $FF, 0 +byte_C7D9: dc.b $20, $29, $22, $1E, $2F, $FF + even ArtKos_SaveScreenS3Zone: binclude "General/Save Menu/Kosinski Art/Zone Art.bin" even @@ -28110,7 +28096,7 @@ Obj_FireShield_Destroy: Obj_LightningShield: move.l #ArtUnc_LightningShield_Sparks,d1 move.w #tiles_to_bytes(ArtTile_Shield_Sparks),d2 - move.w #$50,d3 + move.w #(ArtUnc_LightningShield_Sparks_end-ArtUnc_LightningShield_Sparks)/2,d3 jsr (Add_To_DMA_Queue).l move.l #Map_LightningShield,$C(a0) move.l #DPLC_LightningShield,$3C(a0) @@ -30764,8 +30750,8 @@ Get_LevelSizeStart: move.w #-1,(Screen_Y_wrap_value).w bra.w loc_1A374 ; --------------------------------------------------------------------------- -; xstart xend ystart yend ; Level -LevelSizes: dc.w $1308, $6000, 0, $390 ; AIZ1 +; xstart xend ystart yend ; Level +LevelSizes: dc.w $1308, $6000, 0, $390 ; AIZ1 dc.w 0, $4640, 0, $590 ; AIZ2 dc.w 0, $6000, 0, $1000 ; HCZ1 dc.w 0, $6000, 0, $1000 ; HCZ2 @@ -69056,9 +69042,7 @@ Comp_ScreenInit: moveq #0,d1 move.w #$8000,d7 jmp Refresh_PlaneFull_Competition(pc) - -; =============== S U B R O U T I N E ======================================= - +; --------------------------------------------------------------------------- Comp_ScreenEvent: jsr Update_CameraPositionP2(pc) @@ -69071,8 +69055,6 @@ Comp_ScreenEvent: jsr Adjust_BGDuringLoop(pc) move.w (Camera_X_pos_P2_copy).w,d0 jmp Adjust_BGDuringLoop(pc) -; End of function Comp_ScreenEvent - ; --------------------------------------------------------------------------- CGZ_ScreenEvent: @@ -69138,9 +69120,7 @@ Comp_BackgroundInit: moveq #0,d1 move.w #$A000,d7 jmp Refresh_PlaneFull_Competition(pc) - -; =============== S U B R O U T I N E ======================================= - +; --------------------------------------------------------------------------- ALZ_BackgroundEvent: jsr ALZ_Deformation(pc) @@ -69180,11 +69160,7 @@ loc_3A764: moveq #$73,d1 jsr ApplyDeformation2(pc) jmp Update_VScrollValueP2(pc) -; End of function ALZ_BackgroundEvent - - -; =============== S U B R O U T I N E ======================================= - +; --------------------------------------------------------------------------- DPZ_BackgroundEvent: jsr DPZ_Deformation(pc) @@ -69198,8 +69174,6 @@ DPZ_BackgroundEvent: moveq #$1C,d2 bsr.s sub_3A7BA jmp Update_VScrollValueP2(pc) -; End of function DPZ_BackgroundEvent - ; =============== S U B R O U T I N E ======================================= @@ -73654,11 +73628,7 @@ loc_3DA1E: jmp (Delete_Current_Sprite).l ; --------------------------------------------------------------------------- CNZ1_BGDeformArray: - dc.w $80 - dc.w $30 - dc.w $60 - dc.w $C0 - dc.w $7FFF + dc.w $80, $30, $60, $C0, $7FFF ; --------------------------------------------------------------------------- CNZ2_ScreenInit: @@ -74099,11 +74069,6 @@ ICZ1_SetIntroPal: loc_3DE92: lea (Target_palette_line_4+2).w,a1 -; End of function ICZ1_SetIntroPal - - -; =============== S U B R O U T I N E ======================================= - sub_3DE96: move.l #$EEE0EEC,(a1)+ @@ -74115,7 +74080,7 @@ sub_3DE96: move.l #$AEC0CEA,(a1)+ move.w #$E80,(a1) rts -; End of function sub_3DE96 +; End of function ICZ1_SetIntroPal ; =============== S U B R O U T I N E ======================================= @@ -74129,11 +74094,6 @@ ICZ1_SetIndoorPal: loc_3DED2: lea (Target_palette_line_4+2).w,a1 -; End of function ICZ1_SetIndoorPal - - -; =============== S U B R O U T I N E ======================================= - sub_3DED6: move.l #$EC00E40,(a1)+ @@ -74143,7 +74103,7 @@ sub_3DED6: move.l #$E240A02,(a1)+ move.w #$402,(a1) rts -; End of function sub_3DED6 +; End of function ICZ1_SetIndoorPal ; --------------------------------------------------------------------------- ICZ1_IntroBGDeformArray: @@ -74447,11 +74407,6 @@ ICZ2_SetOutdoorsPal: loc_3E1B6: lea (Target_palette_line_4+2).w,a1 -; End of function ICZ2_SetOutdoorsPal - - -; =============== S U B R O U T I N E ======================================= - sub_3E1BA: move.l #$EEE0EEA,(a1)+ @@ -74460,7 +74415,7 @@ sub_3E1BA: move.l #$C400E20,(a1)+ move.l #$A000E00,(a1) rts -; End of function sub_3E1BA +; End of function ICZ2_SetOutdoorsPal ; =============== S U B R O U T I N E ======================================= @@ -74474,11 +74429,6 @@ ICZ2_SetIndoorsPal: loc_3E1E6: lea (Target_palette_line_4+2).w,a1 -; End of function ICZ2_SetIndoorsPal - - -; =============== S U B R O U T I N E ======================================= - sub_3E1EA: move.l #$EE20E24,(a1)+ @@ -74488,7 +74438,7 @@ sub_3E1EA: move.l #$E400840,(a1)+ move.w #$600,(a1) rts -; End of function sub_3E1EA +; End of function ICZ2_SetIndoorsPal ; =============== S U B R O U T I N E ======================================= @@ -74502,11 +74452,6 @@ ICZ2_SetICZ1Pal: loc_3E21A: lea (Target_palette_line_4+2).w,a1 -; End of function ICZ2_SetICZ1Pal - - -; =============== S U B R O U T I N E ======================================= - sub_3E21E: move.l #$EEC0CC6,(a1)+ @@ -74515,7 +74460,7 @@ sub_3E21E: move.l #$8200620,(a1)+ move.l #$2000600,(a1) rts -; End of function sub_3E21E +; End of function ICZ2_SetICZ1Pal ; --------------------------------------------------------------------------- ICZ2_OutBGDeformArray: @@ -74778,8 +74723,6 @@ loc_3E48A: move.w d2,(Events_bg+$00).w lsr.w #1,d2 jmp LBZ1_LayoutModBranch-2(pc,d2.w) -; End of function LBZ1_CheckLayoutMod - ; --------------------------------------------------------------------------- LBZ1_LayoutModBranch: @@ -74885,6 +74828,9 @@ loc_3E536: dbf d1,loc_3E536 rts +; End of function LBZ1_CheckLayoutMod + + ; =============== S U B R O U T I N E ======================================= @@ -75993,11 +75939,6 @@ Gumball_SetUpVScroll: subi.w #$C8,d1 sub.w d0,d1 neg.w d1 -; End of function Gumball_SetUpVScroll - - -; =============== S U B R O U T I N E ======================================= - Gumball_VScroll: lea (HScroll_table).w,a1 @@ -76008,7 +75949,7 @@ Gumball_VScroll: move.w d1,4(a1) move.w d1,$E(a1) rts -; End of function Gumball_VScroll +; End of function Gumball_SetUpVScroll ; --------------------------------------------------------------------------- Gumball_VScrollArray: @@ -99313,9 +99254,9 @@ loc_510F8: move.w a0,(_unkFAA4).w clr.w (Ctrl_1_logical).w st (Ctrl_1_locked).w - move.b #-$80,(Player_1+object_control).w + move.b #$80,(Player_1+object_control).w lea (ArtKosM_LBZ2DeathEggSmall).l,a1 - move.w #-$6A40,d2 + move.w #$95C0,d2 jsr (Queue_Kos_Module).l loc_51142: @@ -103976,7 +103917,7 @@ loc_53D88: move.w word_53DE8(pc,d0.w),d0 cmpi.w #$20,(Chain_bonus_counter).w bcs.s loc_53DA2 - move.w #$3E8,d0 + move.w #1000,d0 move.w #$A,$3E(a0) loc_53DA2: @@ -104002,10 +103943,10 @@ loc_53DDC: subi.w #$100,$1A(a0) jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -word_53DE8: dc.w $A - dc.w $14 - dc.w $32 - dc.w $64 +word_53DE8: dc.w 10 + dc.w 20 + dc.w 50 + dc.w 100 ; =============== S U B R O U T I N E ======================================= @@ -119081,6 +119022,7 @@ ArtUnc_LightningShield: even ArtUnc_LightningShield_Sparks: binclude "General/Sprites/Shields/Sparks.bin" +ArtUnc_LightningShield_Sparks_end: even ArtUnc_BubbleShield: binclude "General/Sprites/Shields/Bubble Shield.bin" diff --git a/sonic3k.asm b/sonic3k.asm index 184b9913..ef04d3a3 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -86,7 +86,7 @@ Modem_Info: dc.b " " Unknown_Header: dc.w 0 dc.b " " dc.w 0, 0 - dc.l EndOfROM-1 ; 0 ;CHECKLATER (ROM Bank Info) + dc.l EndOfROM-1 ; 0 ;CHECKLATER (ROM Bank Info) dc.b " " KiS2ROM_Info: dc.b "RO" KiS2ROM_Type: dc.w %10000000100000 @@ -114,8 +114,8 @@ EntryPoint: movem.l (a5)+,a0-a4 move.b HW_Version-Z80_bus_request(a1),d0 ; get hardware version andi.b #$F,d0 - beq.s SkipSecurity ; branch if hardware is older than Genesis III - move.l #'SEGA',Security_addr-Z80_bus_request(a1) ; satisfy the TMSS + beq.s SkipSecurity ; branch if hardware is older than Genesis III + move.l #'SEGA',Security_addr-Z80_bus_request(a1) ; satisfy the TMSS SkipSecurity: move.w (a4),d0 ; check if VDP works @@ -143,7 +143,6 @@ WaitForZ80: Init_SoundRAM: move.b (a5)+,(a0)+ dbf d2,Init_SoundRAM - move.w d0,(a2) move.w d0,(a1) ; start the Z80 move.w d7,(a2) ; reset the Z80 @@ -167,7 +166,7 @@ Init_ClearVSRAM: moveq #PSGInitValues_End-PSGInitValues-1,d5 Init_InputPSG: - move.b (a5)+,PSG_input-VDP_data_port(a3) ; reset the PSG + move.b (a5)+,PSG_input-VDP_data_port(a3) ; reset the PSG dbf d5,Init_InputPSG move.w d0,(a2) movem.l (a6),d0-a6 ; clear all registers @@ -176,18 +175,20 @@ Init_InputPSG: Init_SkipPowerOn: bra.s Test_LockOn ; --------------------------------------------------------------------------- -SetupValues: dc.w $8000,bytesToLcnt($10000),$100 - dc.l Z80_RAM - dc.l Z80_bus_request - dc.l Z80_reset - dc.l VDP_data_port, VDP_control_port -VDPInitValues: ; values for VDP registers +SetupValues: dc.w $8000,bytesToLcnt($10000),$100 + dc.l Z80_RAM + dc.l Z80_bus_request + dc.l Z80_reset + dc.l VDP_data_port, VDP_control_port + +; values for VDP registers +VDPInitValues: dc.b 4 ; Command $8004 - HInt off, Enable HV counter read dc.b $14 ; Command $8114 - Display off, VInt off, DMA on, PAL off dc.b $30 ; Command $8230 - Scroll A Address $C000 dc.b $3C ; Command $833C - Window Address $F000 dc.b 7 ; Command $8407 - Scroll B Address $E000 - dc.b $6C ; Command $856C - Sprite Table Addres $D800 + dc.b $6C ; Command $856C - Sprite Table Address $D800 dc.b 0 ; Command $8600 - Null dc.b 0 ; Command $8700 - Background color Pal 0 Color 0 dc.b 0 ; Command $8800 - Null @@ -207,16 +208,16 @@ VDPInitValues: ; values for VDP registers dc.b 0 ; Command $9600 - See above dc.b $80 ; Command $9700 - See above + VRAM fill mode VDPInitValues_End: - dc.l vdpComm($0000,VRAM,DMA) ; value for VRAM write mode + dc.l vdpComm($0000,VRAM,DMA) ; value for VRAM write mode - ; Z80 instructions (not the sound driver; that gets loaded later) +; Z80 instructions (not the sound driver; that gets loaded later) Z80StartupCodeBegin: if (*)+$26 < $10000 save - CPU Z80 ; start assembling Z80 code - phase 0 ; pretend we're at address 0 + CPU Z80 ; start assembling Z80 code + phase 0 ; pretend we're at address 0 xor a ; clear a to 0 - ld bc,((Z80_RAM_end-Z80_RAM)-zStartupCodeEndLoc)-1 ; prepare to loop this many times + ld bc,((Z80_RAM_end-Z80_RAM)-zStartupCodeEndLoc)-1 ; prepare to loop this many times ld de,zStartupCodeEndLoc+1 ; initial destination address ld hl,zStartupCodeEndLoc ; initial source address ld sp,hl ; set the address the stack starts at @@ -238,22 +239,22 @@ Z80StartupCodeBegin: ld sp,hl ; clear sp di ; clear iff1 (for interrupt handler) im 1 ; interrupt handling mode = 1 - ld (hl),0E9h ; replace the first instruction with a jump to itself - jp (hl) ; jump to the first instruction (to stay there forever) + ld (hl),0E9h ; replace the first instruction with a jump to itself + jp (hl) ; jump to the first instruction (to stay there forever) zStartupCodeEndLoc: - dephase ; stop pretending + dephase ; stop pretending restore - padding off ; unfortunately our flags got reset so we have to set them again... - else ; due to an address range limitation I could work around but don't think is worth doing so: + padding off ; unfortunately our flags got reset so we have to set them again... + else ; due to an address range limitation I could work around but don't think is worth doing so: message "Warning: using pre-assembled Z80 startup code." dc.w $AF01,$D91F,$1127,$0021,$2600,$F977,$EDB0,$DDE1,$FDE1,$ED47,$ED4F,$D1E1,$F108,$D9C1,$D1E1,$F1F9,$F3ED,$5636,$E9E9 endif Z80StartupCodeEnd: - dc.w $8104 ; value for VDP display mode - dc.w $8F02 ; value for VDP increment - dc.l vdpComm($0000,CRAM,WRITE) ; value for CRAM write mode - dc.l vdpComm($0000,VSRAM,WRITE) ; value for VSRAM write mode -PSGInitValues: dc.b $9F,$BF,$DF,$FF ; values for PSG channel volumes + dc.w $8104 ; value for VDP display mode + dc.w $8F02 ; value for VDP increment + dc.l vdpComm($0000,CRAM,WRITE) ; value for CRAM write mode + dc.l vdpComm($0000,VSRAM,WRITE) ; value for VSRAM write mode +PSGInitValues: dc.b $9F,$BF,$DF,$FF ; values for PSG channel volumes PSGInitValues_End: ; --------------------------------------------------------------------------- @@ -333,7 +334,7 @@ S2orS3LockedOn: jmp ($300000).l ; May be changed at a later date to become compatible with S2K disassembly ; --------------------------------------------------------------------------- LockonSerialsText: - dc.b "GM 00001051-00" ; Sonic 2 REV00/1/2 + dc.b "GM 00001051-00" ; Sonic 2 REV00/1/2 dc.b "GM 00001051-01" dc.b "GM 00001051-02" dc.b "GM MK-1079 -00" ; Sonic 3 @@ -1271,25 +1272,25 @@ $$clearCRAM: ; --------------------------------------------------------------------------- VDP_register_values: - dc.w $8004 ; H-int disabled - dc.w $8134 ; V-int enabled, display blanked, DMA enabled, 224 line display - dc.w $8230 ; Scroll A PNT base $C000 - dc.w $8320 ; Window PNT base $8000 - dc.w $8407 ; Scroll B PNT base $E000 - dc.w $857C ; Sprite attribute table base $F800 + dc.w $8004 ; H-int disabled + dc.w $8134 ; V-int enabled, display blanked, DMA enabled, 224 line display + dc.w $8230 ; Scroll A PNT base $C000 + dc.w $8320 ; Window PNT base $8000 + dc.w $8407 ; Scroll B PNT base $E000 + dc.w $857C ; Sprite attribute table base $F800 dc.w $8600 - dc.w $8700 ; Backdrop color is color 0 of the first palette line + dc.w $8700 ; Backdrop color is color 0 of the first palette line dc.w $8800 dc.w $8900 dc.w $8A00 - dc.w $8B00 ; Full-screen horizontal and vertical scrolling - dc.w $8C81 ; 40 cell wide display, no interlace - dc.w $8D3C ; Horizontal scroll table base $F000 + dc.w $8B00 ; Full-screen horizontal and vertical scrolling + dc.w $8C81 ; 40 cell wide display, no interlace + dc.w $8D3C ; Horizontal scroll table base $F000 dc.w $8E00 - dc.w $8F02 ; Auto-ncrement is 2 - dc.w $9001 ; Scroll planes are 64x32 cells + dc.w $8F02 ; Auto-ncrement is 2 + dc.w $9001 ; Scroll planes are 64x32 cells dc.w $9100 - dc.w $9200 ; Window disabled + dc.w $9200 ; Window disabled ; =============== S U B R O U T I N E ======================================= @@ -2910,7 +2911,7 @@ GetSineCosine: ; End of function GetSineCosine ; --------------------------------------------------------------------------- -SineTable: binclude "Levels/Misc/sine.bin" ; test +SineTable: binclude "Levels/Misc/sine.bin" even ; --------------------------------------------------------------------------- ; Calculates the arctangent of y/x and returns it in d0 (360 degrees = 256) @@ -4020,7 +4021,7 @@ SuperHyper_PalCycle_FadeIn: SuperHyper_PalCycle_SonicApply: lea (Normal_palette+$4).w,a1 move.l (a0,d0.w),(a1)+ ; Write first two palette entries - move.w 4(a0,d0.w),(a1) ; Write last palette entry + move.w 4(a0,d0.w),(a1) ; Write last palette entry tst.b (Water_flag).w beq.s locret_37EC @@ -4034,7 +4035,7 @@ SuperHyper_PalCycle_SonicApply: SuperHyper_PalCycle_ApplyUnderwater: lea (Water_palette+$4).w,a1 move.l (a0,d0.w),(a1)+ ; Write first two palette entries - move.w 4(a0,d0.w),(a1) ; Write last palette entry + move.w 4(a0,d0.w),(a1) ; Write last palette entry locret_37EC: rts @@ -4127,12 +4128,12 @@ SuperHyper_PalCycle_HyperSonicApply: ; and other areas of code do branch to it instead of duplicating the code as seen here lea (Normal_palette+$4).w,a1 move.l (a0,d0.w),(a1)+ ; Write first two palette entries - move.w 4(a0,d0.w),(a1) ; Write last palette entry + move.w 4(a0,d0.w),(a1) ; Write last palette entry tst.b (Water_flag).w beq.w locret_37EC lea (Water_palette+$4).w,a1 move.l (a0,d0.w),(a1)+ ; Write first two palette entries - move.w 4(a0,d0.w),(a1) ; Write last palette entry + move.w 4(a0,d0.w),(a1) ; Write last palette entry rts ; --------------------------------------------------------------------------- @@ -5126,12 +5127,12 @@ loc_4306: move.l #5000,(Next_extra_life_score_P2).w rts ; --------------------------------------------------------------------------- -DemoLevels: dc.w 0 ; Angel Island - dc.w $100 ; Hydrocity - dc.w $200 ; Marble Garden - dc.w $700 ; Mushroom Hill - dc.w $400 ; Flying Battery - dc.w $800 ; Sandopolis +DemoLevels: dc.w 0 ; Angel Island + dc.w $100 ; Hydrocity + dc.w $200 ; Marble Garden + dc.w $700 ; Mushroom Hill + dc.w $400 ; Flying Battery + dc.w $800 ; Sandopolis dc.w $FFFF ; --------------------------------------------------------------------------- @@ -5508,18 +5509,8 @@ loc_4A0A: locret_4A10: rts ; --------------------------------------------------------------------------- -OldDebugCodeDat:dc.b $20 - dc.b $30 - dc.b $70 - dc.b $10 - dc.b $50 - dc.b $70 - dc.b $40 - dc.b $60 - dc.b $70 - dc.b $71 - dc.b $72 - dc.b 0 +OldDebugCodeDat:dc.b $20, $30, $70, $10, $50, $70, $40, $60, $70, $71, $72, 0 + even ; --------------------------------------------------------------------------- Obj_TitleCopyright: @@ -5679,8 +5670,6 @@ Ani_TitleTailsPlane: S3_Level_Select_Code: rts -; End of function S3_Level_Select_Code - ; --------------------------------------------------------------------------- lea (LSelect3CodeDat).l,a1 move.w (Level_select_cheat_counter).w,d0 @@ -5704,17 +5693,11 @@ loc_4C8A: locret_4C90: rts +; End of function S3_Level_Select_Code + ; --------------------------------------------------------------------------- -LSelect3CodeDat:dc.b 1 - dc.b 1 - dc.b 2 - dc.b 2 - dc.b 1 - dc.b 1 - dc.b 1 - dc.b 1 - dc.b 0 - dc.b 0 +LSelect3CodeDat:dc.b 1, 1, 2, 2, 1, 1, 1, 1, 0 + even Map_TitleScreenText: include "General/Title/Map - S3 Screen Text.asm" ArtNem_TitleScreenText: @@ -6087,13 +6070,13 @@ Prep_MHZDemo: ; --------------------------------------------------------------------------- Pal_SKTitle_Sonic: - binclude "General/Title/Palettes/SK Sonic.bin" ;5588.bin" + binclude "General/Title/Palettes/SK Sonic.bin" even Pal_SKTitle_SegaBG: - binclude "General/Title/Palettes/SK Sega and BG.bin" ;55A8.bin" + binclude "General/Title/Palettes/SK Sega and BG.bin" even Pal_SKTitle_Knux: - binclude "General/Title/Palettes/SK Knuckles.bin" ;5608.bin" + binclude "General/Title/Palettes/SK Knuckles.bin" even ; --------------------------------------------------------------------------- @@ -6121,7 +6104,7 @@ loc_5666: addq.w #8,(Camera_Y_pos).w ; Otherwise scroll foreground by 8 pixels cmpi.w #$C8,(Camera_Y_pos).w bne.s loc_5698 - lea (ArtKosM_SonicLand).l,a1 ; Once foreground has hit C8 Y + lea (ArtKosM_SonicLand).l,a1 ; Once foreground has hit C8 Y move.w #$8C40,d2 jsr (Queue_Kos_Module).l ; Queue the landing frames into VRAM @@ -6845,13 +6828,13 @@ SKTitle_ShakeOffsets: dc.b 2, 0, 3, 2, 2, 3, 2, 2, 1, 3, 0, 0, 1, 0, 1, 3, 1, 2 even Map_SKTitle_Icon: - include "General/Title/Map - SK Icon.asm" ;5ED8.asm" + include "General/Title/Map - SK Icon.asm" even Map_SKTitle_TM: - include "General/Title/Map - SK TM.asm" ;5F62.asm" + include "General/Title/Map - SK TM.asm" even Map_SKTitle_Copyright: - include "General/Title/Map - SK Copyright.asm" ;5F6C.asm" + include "General/Title/Map - SK Copyright.asm" even ; --------------------------------------------------------------------------- LevelMusic_Playlist: @@ -9763,7 +9746,7 @@ loc_7F1E: rts ; --------------------------------------------------------------------------- LevelSelect_SwitchTable: - dc.b $12 + dc.b $12 ; 0 dc.b $13 ; 1 dc.b $14 ; 2 dc.b $15 ; 3 @@ -9916,40 +9899,40 @@ loc_8036: ; --------------------------------------------------------------------------- LevSel_MarkTable: ; 4 bytes per level select entry ; line primary, 2*column ($E fields), line secondary, 2*column secondary (1 field) - dc.b 1, 6, 1,$24 ;0 + dc.b 1, 6, 1,$24 ; 0 dc.b 1, 6, 2,$24 dc.b 4, 6, 4,$24 dc.b 4, 6, 5,$24 - dc.b 7, 6, 7,$24 ;4 + dc.b 7, 6, 7,$24 ; 4 dc.b 7, 6, 8,$24 dc.b $A, 6, $A,$24 dc.b $A, 6, $B,$24 - dc.b $D, 6, $D,$24 ;8 + dc.b $D, 6, $D,$24 ; 8 dc.b $D, 6, $E,$24 dc.b $10, 6,$10,$24 dc.b $10, 6,$11,$24 - dc.b $13, 6,$13,$24 ;$C + dc.b $13, 6,$13,$24 ; $C dc.b $13, 6,$14,$24 dc.b $16, 6,$16,$24 dc.b $16, 6,$17,$24 - dc.b $19, 6,$19,$24 ;$10 + dc.b $19, 6,$19,$24 ; $10 dc.b $19, 6,$1A,$24 ; --- second column --- dc.b 1,$2C, 1,$4A dc.b 1,$2C, 2,$4A - dc.b 4,$2C, 4,$4A ;$14 + dc.b 4,$2C, 4,$4A ; $14 dc.b 4,$2C, 5,$4A dc.b 7,$2C, 7,$4A dc.b 7,$2C, 8,$4A - dc.b $A,$2C, $A,$4A ;$18 + dc.b $A,$2C, $A,$4A ; $18 dc.b $A,$2C, $B,$4A dc.b $D,$2C, $D,$4A dc.b $D,$2C, $E,$4A - dc.b $10,$2C,$10,$4A ;$1C + dc.b $10,$2C,$10,$4A ; $1C dc.b $10,$2C,$11,$4A dc.b $13,$2C,$13,$4A dc.b $13,$2C,$14,$4A - dc.b $16,$2C,$16,$4A ;$20 + dc.b $16,$2C,$16,$4A ; $20 LevSel_MappingOffsets: dc.w planeLocH28(3,1) dc.w planeLocH28(3,4) @@ -15451,7 +15434,7 @@ SaveGame: beq.s loc_C464 cmp.b 3(a1),d0 ; If game is complete, make it uncomplete if last level is less than the current level blo.s loc_C4B4 ; Think of, say, getting all the super emeralds then going to Doomsday on a completed save file - andi.b #-4,(a1) + andi.b #$FC,(a1) loc_C464: move.b d0,3(a1) ; Move next level into current level @@ -15459,7 +15442,7 @@ loc_C464: bne.s loc_C478 cmpi.b #$C,d0 blo.s loc_C4B0 - bra.s loc_C498 ; If playing as Knuckles and level code is Death egg or higher, make it a completed save file + bra.s loc_C498 ; If playing as Knuckles and level code is Death Egg or higher, make it a completed save file ; --------------------------------------------------------------------------- loc_C478: @@ -15467,7 +15450,7 @@ loc_C478: bne.s loc_C488 cmpi.b #$D,d0 blo.s loc_C4B0 - bra.s loc_C498 ; If playing as Knuckles and level code is Doomsday or higher, make it a completed save file + bra.s loc_C498 ; If playing as Tails and level code is Doomsday or higher, make it a completed save file ; --------------------------------------------------------------------------- loc_C488: @@ -16205,7 +16188,7 @@ ObjDat_SaveScreen: dc.w $D8 ; y_pos dc.b $D ; mapping_frame dc.b 0 ; unused - dc.l Obj_SaveScreen_NoSave_Slot ; Slot that starts a non-saving game + dc.l Obj_SaveScreen_NoSave_Slot ; Slot that starts a non-saving game dc.w $B0 ; x_pos, objoff_12 (x_pos copy) dc.w $C8 ; y_pos dc.b 0 ; unused @@ -21175,11 +21158,11 @@ loc_1060E: jmp off_1061C(pc,d1.w) ; --------------------------------------------------------------------------- off_1061C: dc.w loc_10628-off_1061C - dc.w loc_10740-off_1061C; 1 - dc.w loc_122BE-off_1061C; 2 - dc.w loc_12390-off_1061C; 3 - dc.w loc_1257C-off_1061C; 4 - dc.w loc_12590-off_1061C; 5 + dc.w loc_10740-off_1061C + dc.w loc_122BE-off_1061C + dc.w loc_12390-off_1061C + dc.w loc_1257C-off_1061C + dc.w loc_12590-off_1061C ; --------------------------------------------------------------------------- loc_10628: @@ -22912,7 +22895,7 @@ Player_Boundary_Bottom: Player_Boundary_Sides: move.w d0,x_pos(a0) - move.w #0,2+x_pos(a0) ; subpixel x + move.w #0,2+x_pos(a0) ; subpixel x move.w #0,x_vel(a0) move.w #0,ground_vel(a0) bra.s Player_Boundary_CheckBottom @@ -22926,9 +22909,9 @@ SonicKnux_Roll: tst.b status_secondary(a0) bmi.s locret_1177E move.b (Ctrl_1_logical).w,d0 - andi.b #button_left_mask|button_right_mask,d0 ; is left/right being pressed? + andi.b #button_left_mask|button_right_mask,d0 ; is left/right being pressed? bne.s locret_1177E ; if yes, branch - btst #button_down,(Ctrl_1_logical).w ; is down being pressed? + btst #button_down,(Ctrl_1_logical).w ; is down being pressed? beq.s Player_ChkWalk ; if not, branch move.w ground_vel(a0),d0 bpl.s loc_1176A @@ -22989,7 +22972,7 @@ locret_117D8: Sonic_Jump: move.b (Ctrl_1_pressed_logical).w,d0 - andi.b #button_B_mask|button_C_mask|button_A_mask,d0 ; is A, B or C pressed? + andi.b #button_B_mask|button_C_mask|button_A_mask,d0 ; is A, B or C pressed? beq.w locret_118B2 ; if not, return moveq #0,d0 move.b angle(a0),d0 @@ -23804,7 +23787,7 @@ loc_11F9C: ; --------------------------------------------------------------------------- loc_11FAE: - move.w #0,x_vel(a0) ; stop Sonic since he hit a wall + move.w #0,x_vel(a0) ; stop Sonic since he hit a wall cmpi.w #$FC0,y_vel(a0) ble.s loc_11FC2 move.w #$FC0,y_vel(a0) @@ -23863,9 +23846,9 @@ ChooseChkFloorEdge: Player_HitLeftWall: bsr.w CheckLeftWallDist tst.w d1 - bpl.s Player_HitCeiling ; branch if distance is positive (not inside wall) + bpl.s Player_HitCeiling ; branch if distance is positive (not inside wall) sub.w d1,x_pos(a0) - move.w #0,x_vel(a0) ; stop Sonic since he hit a wall + move.w #0,x_vel(a0) ; stop Sonic since he hit a wall move.w y_vel(a0),ground_vel(a0) Player_HitCeiling: @@ -23883,7 +23866,7 @@ loc_12042: add.w d1,y_pos(a0) tst.w y_vel(a0) bpl.s locret_12052 - move.w #0,y_vel(a0) ; stop Sonic in y since he hit a ceiling + move.w #0,y_vel(a0) ; stop Sonic in y since he hit a ceiling locret_12052: rts @@ -23953,7 +23936,7 @@ loc_120D2: addi.b #$20,d0 andi.b #$40,d0 bne.s loc_120EA - move.w #0,y_vel(a0) ; stop Sonic in y since he hit a ceiling + move.w #0,y_vel(a0) ; stop Sonic in y since he hit a ceiling rts ; --------------------------------------------------------------------------- @@ -28301,7 +28284,7 @@ Tails_Test_For_Flight: bne.s loc_1515C cmpi.b #7,(Super_emerald_count).w blo.s loc_1515C - cmpi.w #$32,(Ring_count).w + cmpi.w #50,(Ring_count).w blo.s loc_1515C tst.b (Update_HUD_timer).w bne.s Tails_Transform @@ -29739,46 +29722,46 @@ loc_1615A: ; chooses which animation script to run depending on what Tails is doing Obj_Tails_Tail_AniSelection: - dc.b 0,0 ; TailsAni_Walk,Run -> - dc.b 3 ; TailsAni_Roll -> Directional - dc.b 3 ; TailsAni_Roll2 -> Directional - dc.b 9 ; TailsAni_Push -> Pushing - dc.b 1 ; TailsAni_Wait -> Swish - dc.b 0 ; TailsAni_Balance -> Blank - dc.b 2 ; TailsAni_LookUp -> Flick - dc.b 1 ; TailsAni_Duck -> Swish - dc.b 7 ; TailsAni_Spindash -> Spindash - dc.b 0,0,0 ; TailsAni_Dummy1,2,3 -> - dc.b 8 ; TailsAni_Stop -> Skidding - dc.b 0,0 ; TailsAni_Float,2 -> - dc.b 0 ; TailsAni_Spring -> - dc.b 0 ; TailsAni_Hang -> - dc.b 0 ; - dc.b 0 ; TailsAni_Victory -> - dc.b $A ; TailsAni_Hang2 -> Hanging - dc.b 0 ; TailsAni_Bubble -> - dc.b 0,0,0 ; TailsAni_Death,2,3 -> - dc.b 0 ; TailsAni_Slide2? -> - dc.b 0,0 ; TailsAni_Hurt,Slide -> - dc.b 0 ; TailsAni_Blank -> - dc.b 0,0 ; TailsAni_Dummy4,5 -> - dc.b 0 ; TailsAni_HaulAss -> - dc.b $B,$C ; TailsAni_Fly,2 -> Fly1,2 - dc.b $B ; TailsAni_Carry -> Fly1 - dc.b $C ; TailsAni_Ascend -> Fly2 - dc.b $B ; TailsAni_Tired -> Fly1 - dc.b 0,0 ; TailsAni_Swim,2 -> - dc.b 0 ; TailsAni_Tired2 -> - dc.b 0 ; TailsAni_Tired3 -> - dc.b 0 - dc.b 0 - dc.b 0 - dc.b 0 - dc.b 0 - dc.b 0 - dc.b 0 - dc.b 0 - dc.b 0 + dc.b 0,0 ; TailsAni_Walk,Run -> + dc.b 3 ; TailsAni_Roll -> Directional + dc.b 3 ; TailsAni_Roll2 -> Directional + dc.b 9 ; TailsAni_Push -> Pushing + dc.b 1 ; TailsAni_Wait -> Swish + dc.b 0 ; TailsAni_Balance -> Blank + dc.b 2 ; TailsAni_LookUp -> Flick + dc.b 1 ; TailsAni_Duck -> Swish + dc.b 7 ; TailsAni_Spindash -> Spindash + dc.b 0,0,0 ; TailsAni_Dummy1,2,3 -> + dc.b 8 ; TailsAni_Stop -> Skidding + dc.b 0,0 ; TailsAni_Float,2 -> + dc.b 0 ; TailsAni_Spring -> + dc.b 0 ; TailsAni_Hang -> + dc.b 0 ; + dc.b 0 ; TailsAni_Victory -> + dc.b $A ; TailsAni_Hang2 -> Hanging + dc.b 0 ; TailsAni_Bubble -> + dc.b 0,0,0 ; TailsAni_Death,2,3 -> + dc.b 0 ; TailsAni_Slide2? -> + dc.b 0,0 ; TailsAni_Hurt,Slide -> + dc.b 0 ; TailsAni_Blank -> + dc.b 0,0 ; TailsAni_Dummy4,5 -> + dc.b 0 ; TailsAni_HaulAss -> + dc.b $B,$C ; TailsAni_Fly,2 -> Fly1,2 + dc.b $B ; TailsAni_Carry -> Fly1 + dc.b $C ; TailsAni_Ascend -> Fly2 + dc.b $B ; TailsAni_Tired -> Fly1 + dc.b 0,0 ; TailsAni_Swim,2 -> + dc.b 0 ; TailsAni_Tired2 -> + dc.b 0 ; TailsAni_Tired3 -> + dc.b 0 + dc.b 0 + dc.b 0 + dc.b 0 + dc.b 0 + dc.b 0 + dc.b 0 + dc.b 0 + dc.b 0 AniTails_Tail: include "General/Sprites/Tails/Anim - Tails Tail.asm" ; --------------------------------------------------------------------------- @@ -29829,31 +29812,31 @@ loc_1628C: bsr.w Tails2P_Tail_Load_PLC jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- -byte_162A0: dc.b 0,0 - dc.b 3 - dc.b 3 - dc.b 0 - dc.b 1 - dc.b 1 - dc.b 1 - dc.b 1 - dc.b 0 - dc.b 1,1,1 - dc.b 0 - dc.b 0,0 - dc.b 0 - dc.b 0 - dc.b 0 - dc.b 0 - dc.b 0 - dc.b 0 - dc.b 0,0,0 - dc.b 0 - dc.b 0,0 - dc.b 0 - dc.b 0,0 - dc.b 0 - dc.b 0,0 +byte_162A0: dc.b 0,0 + dc.b 3 + dc.b 3 + dc.b 0 + dc.b 1 + dc.b 1 + dc.b 1 + dc.b 1 + dc.b 0 + dc.b 1,1,1 + dc.b 0 + dc.b 0,0 + dc.b 0 + dc.b 0 + dc.b 0 + dc.b 0 + dc.b 0 + dc.b 0 + dc.b 0,0,0 + dc.b 0 + dc.b 0,0 + dc.b 0 + dc.b 0,0 + dc.b 0 + dc.b 0,0 AniTails2P_Tail:include "General/Sprites/Tails/Anim - Tails 2P Tail.asm" ; --------------------------------------------------------------------------- @@ -29997,12 +29980,12 @@ Knuckles_Normal: jmp Knuckles_Index(pc,d1.w) ; --------------------------------------------------------------------------- Knuckles_Index: dc.w Knuckles_Init-Knuckles_Index - dc.w Knuckles_Control-Knuckles_Index; 1 - dc.w loc_17BB6-Knuckles_Index; 2 - dc.w loc_17C88-Knuckles_Index; 3 - dc.w loc_17CBA-Knuckles_Index; 4 - dc.w loc_17CCE-Knuckles_Index; 5 - dc.w loc_17CEA-Knuckles_Index; 6 + dc.w Knuckles_Control-Knuckles_Index + dc.w loc_17BB6-Knuckles_Index + dc.w loc_17C88-Knuckles_Index + dc.w loc_17CBA-Knuckles_Index + dc.w loc_17CCE-Knuckles_Index + dc.w loc_17CEA-Knuckles_Index ; --------------------------------------------------------------------------- Knuckles_Init: @@ -31909,7 +31892,7 @@ Knux_Test_For_Glide: bne.s loc_1786C loc_1785E: - cmpi.w #$32,(Ring_count).w + cmpi.w #50,(Ring_count).w blo.s loc_1786C tst.b (Update_HUD_timer).w bne.s Knux_Transform @@ -32622,9 +32605,8 @@ locret_18162: ; End of function Knuckles_Load_PLC ; --------------------------------------------------------------------------- -; ---------------------------------------------------------------------------- ; Small bubbles from Sonic's face while underwater -; ---------------------------------------------------------------------------- +; --------------------------------------------------------------------------- Obj_Air_CountDown: moveq #0,d0 move.b routine(a0),d0 @@ -33277,9 +33259,9 @@ Obj_DashDust: jmp off_18B4C(pc,d1.w) ; --------------------------------------------------------------------------- off_18B4C: dc.w loc_18B54-off_18B4C - dc.w loc_18BAA-off_18B4C; 1 - dc.w loc_18CB2-off_18B4C; 2 - dc.w loc_18CB6-off_18B4C; 3 + dc.w loc_18BAA-off_18B4C + dc.w loc_18CB2-off_18B4C + dc.w loc_18CB6-off_18B4C ; --------------------------------------------------------------------------- loc_18B54: @@ -33898,7 +33880,7 @@ Obj_InstaShield: Obj_InstaShield_Main: movea.w parent(a0),a2 - btst #Status_Invincible,status_secondary(a2) ; Is the player invincible? + btst #Status_Invincible,status_secondary(a2) ; Is the player invincible? bne.s locret_195A4 ; If so, return move.w x_pos(a2),x_pos(a0) ; Inherit player's x_pos move.w y_pos(a2),y_pos(a0) ; Inherit player's y_pos @@ -33962,11 +33944,11 @@ loc_195F0: Obj_FireShield_Main: movea.w parent(a0),a2 - btst #Status_Invincible,status_secondary(a2) ; Is player invincible? + btst #Status_Invincible,status_secondary(a2) ; Is player invincible? bne.w locret_19690 ; If so, do not display and do not update variables cmpi.b #$1C,anim(a2) ; Is player in their 'blank' animation? beq.s locret_19690 ; If so, do not display and do not update variables - btst #Status_Shield,status_secondary(a2) ; Should the player still have a shield? + btst #Status_Shield,status_secondary(a2) ; Should the player still have a shield? beq.w Obj_FireShield_Destroy ; If not, change to Insta-Shield btst #Status_Underwater,status(a2) ; Is player underwater? bne.s Obj_FireShield_DestroyUnderwater ; If so, branch @@ -34708,11 +34690,11 @@ Obj_Ring: move.w Ring_Index(pc,d0.w),d1 jmp Ring_Index(pc,d1.w) ; --------------------------------------------------------------------------- -Ring_Index: dc.w Obj_RingInit-Ring_Index ; 0 - dc.w Obj_RingAnimate-Ring_Index ; 2 - dc.w Obj_RingCollect-Ring_Index ; 4 - dc.w Obj_RingSparkle-Ring_Index ; 6 - dc.w Obj_RingDelete-Ring_Index ; 8 +Ring_Index: dc.w Obj_RingInit-Ring_Index + dc.w Obj_RingAnimate-Ring_Index + dc.w Obj_RingCollect-Ring_Index + dc.w Obj_RingSparkle-Ring_Index + dc.w Obj_RingDelete-Ring_Index ; --------------------------------------------------------------------------- Obj_RingInit: @@ -35622,7 +35604,7 @@ loc_1AD4A: lea 2(a5),a4 loc_1AD54: - movea.w (a4)+,a0 ; a0=object + movea.w (a4)+,a0 ; a0=object andi.b #$7F,render_flags(a0) ; clear on-screen flag move.b render_flags(a0),d6 move.w x_pos(a0),d0 @@ -37400,55 +37382,55 @@ Get_LevelSizeStart: move.w #-1,(Screen_Y_wrap_value).w bra.w loc_1BE46 ; --------------------------------------------------------------------------- -; xstart xend ystart yend ; Level -LevelSizes: dc.w $1308, $6000, $0, $390 ; AIZ1 - dc.w $0, $4640, $0, $590 ; AIZ2 - dc.w $0, $6000, $0, $1000 ; HCZ1 - dc.w $0, $6000, $0, $1000 ; HCZ2 - dc.w $0, $6000, -$100, $1000 ; MGZ1 - dc.w $0, $6000, $0, $1000 ; MGZ2 - dc.w $0, $6000, $0, $B20 ; CNZ1 - dc.w $0, $6000, $580, $1000 ; CNZ2 - dc.w $0, $2E60, $0, $B00 ; FBZ1 - dc.w $0, $6000, $0, $B00 ; FBZ2 - dc.w $0, $7000, -$100, $800 ; ICZ1 - dc.w $0, $7000, $0, $B20 ; ICZ2 - dc.w $0, $6000, $0, $1000 ; LBZ1 - dc.w $0, $6000, $0, $B20 ; LBZ2 - dc.w $0, $4298, $0, $AA0 ; MHZ1 - dc.w $98, $3C90, $620, $9A0 ; MHZ2 - dc.w $0, $4310, $0, $B20 ; SOZ1 - dc.w $0, $6000, -$100, $800 ; SOZ2 - dc.w $0, $2CC0, $0, $B20 ; LRZ1 - dc.w $940, $3EC0, $0, $B20 ; LRZ2 - dc.w $0, $19A0, -$100, $1000 ; SSZ1 - dc.w $0, $6000, $0, $400 ; SSZ2 - dc.w $0, $6000, $0, $B20 ; DEZ1 - dc.w $0, $6000, $0, $F10 ; DEZ2 - dc.w $0, $6000, $0, $1000 ; DDZ - dc.w $0, $6000, $0, $1000 ; DDZ - dc.w $0, $6000, $0, $1000 ; AIZ Intro (?) - dc.w $0, $6000, $0, $1000 ; Ending scene - dc.w $0, $12C0, $100, $190 ; ALZ - dc.w $0, $12C0, $100, $190 ; ALZ - dc.w $0, $12C0, $200, $390 ; BPZ - dc.w $0, $12C0, $200, $390 ; BPZ - dc.w $0, $12C0, $100, $190 ; DPZ - dc.w $0, $12C0, $100, $190 ; DPZ - dc.w $0, $12C0, -$100, $1000 ; CGZ - dc.w $0, $12C0, $0, $90 ; CGZ - dc.w $0, $12C0, $100, $190 ; EMZ - dc.w $0, $12C0, $100, $190 ; EMZ - dc.w $60, $60, $0, $240 ; Gumball - dc.w $60, $60, $0, $240 ; Gumball - dc.w $0, $140, $0, $F00 ; Pachinko - dc.w $0, $140, $0, $F00 ; Pachinko - dc.w $0, $6000, $0, $1000 ; Slots - dc.w $0, $6000, $0, $1000 ; Slots - dc.w $0, $EC0, $0, $430 ; LRZ Boss - dc.w $0, $1880, $0, $B20 ; HPZ - dc.w $0, $6000, $20, $20 ; DEZ Boss - dc.w $1500, $1640, $320, $320 ; Special Stage Arena (HPZ) +; xstart xend ystart yend ; Level +LevelSizes: dc.w $1308, $6000, 0, $390 ; AIZ1 + dc.w 0, $4640, 0, $590 ; AIZ2 + dc.w 0, $6000, 0, $1000 ; HCZ1 + dc.w 0, $6000, 0, $1000 ; HCZ2 + dc.w 0, $6000, -$100, $1000 ; MGZ1 + dc.w 0, $6000, 0, $1000 ; MGZ2 + dc.w 0, $6000, 0, $B20 ; CNZ1 + dc.w 0, $6000, $580, $1000 ; CNZ2 + dc.w 0, $2E60, 0, $B00 ; FBZ1 + dc.w 0, $6000, 0, $B00 ; FBZ2 + dc.w 0, $7000, -$100, $800 ; ICZ1 + dc.w 0, $7000, 0, $B20 ; ICZ2 + dc.w 0, $6000, 0, $1000 ; LBZ1 + dc.w 0, $6000, 0, $B20 ; LBZ2 + dc.w 0, $4298, 0, $AA0 ; MHZ1 + dc.w $98, $3C90, $620, $9A0 ; MHZ2 + dc.w 0, $4310, 0, $B20 ; SOZ1 + dc.w 0, $6000, -$100, $800 ; SOZ2 + dc.w 0, $2CC0, 0, $B20 ; LRZ1 + dc.w $940, $3EC0, 0, $B20 ; LRZ2 + dc.w 0, $19A0, -$100, $1000 ; SSZ1 + dc.w 0, $6000, 0, $400 ; SSZ2 + dc.w 0, $6000, 0, $B20 ; DEZ1 + dc.w 0, $6000, 0, $F10 ; DEZ2 + dc.w 0, $6000, 0, $1000 ; DDZ + dc.w 0, $6000, 0, $1000 ; DDZ + dc.w 0, $6000, 0, $1000 ; AIZ Intro (?) + dc.w 0, $6000, 0, $1000 ; Ending scene + dc.w 0, $12C0, $100, $190 ; ALZ + dc.w 0, $12C0, $100, $190 ; ALZ + dc.w 0, $12C0, $200, $390 ; BPZ + dc.w 0, $12C0, $200, $390 ; BPZ + dc.w 0, $12C0, $100, $190 ; DPZ + dc.w 0, $12C0, $100, $190 ; DPZ + dc.w 0, $12C0, -$100, $1000 ; CGZ + dc.w 0, $12C0, 0, $90 ; CGZ + dc.w 0, $12C0, $100, $190 ; EMZ + dc.w 0, $12C0, $100, $190 ; EMZ + dc.w $60, $60, 0, $240 ; Gumball + dc.w $60, $60, 0, $240 ; Gumball + dc.w 0, $140, 0, $F00 ; Pachinko + dc.w 0, $140, 0, $F00 ; Pachinko + dc.w 0, $6000, 0, $1000 ; Slots + dc.w 0, $6000, 0, $1000 ; Slots + dc.w 0, $EC0, 0, $430 ; LRZ Boss + dc.w 0, $1880, 0, $B20 ; HPZ + dc.w 0, $6000, $20, $20 ; DEZ Boss + dc.w $1500, $1640, $320, $320 ; Special Stage Arena (HPZ) ; --------------------------------------------------------------------------- loc_1BE46: @@ -38323,21 +38305,21 @@ AIZ2_Resize: move.w off_1C630(pc,d0.w),d0 jmp off_1C630(pc,d0.w) ; --------------------------------------------------------------------------- -off_1C630: dc.w loc_1C64E-off_1C630 ;0 - dc.w AIZ2_SonicResize1-off_1C630 ;2 - dc.w AIZ2_SonicResize2-off_1C630 ;4 - dc.w AIZ2_SonicResize3-off_1C630 ;6 - dc.w AIZ2_SonicResize4-off_1C630 ;8 - dc.w AIZ2_SonicResize5-off_1C630 ;A - dc.w AIZ2_SonicResize6-off_1C630 ;C - dc.w AIZ2_SonicResize7-off_1C630 ;E - dc.w AIZ2_SonicResizeEnd-off_1C630 ;10 - dc.w AIZ2_KnuxResize1-off_1C630 ;12 - dc.w AIZ2_KnuxResize2-off_1C630 ;14 - dc.w AIZ2_KnuxResize3-off_1C630 ;16 - dc.w AIZ2_KnuxResize4-off_1C630 ;18 - dc.w AIZ2_KnuxResize5-off_1C630 ;1A - dc.w AIZ2_KnuxResizeEnd-off_1C630 ;1C +off_1C630: dc.w loc_1C64E-off_1C630 ; 0 + dc.w AIZ2_SonicResize1-off_1C630 ; 2 + dc.w AIZ2_SonicResize2-off_1C630 ; 4 + dc.w AIZ2_SonicResize3-off_1C630 ; 6 + dc.w AIZ2_SonicResize4-off_1C630 ; 8 + dc.w AIZ2_SonicResize5-off_1C630 ; A + dc.w AIZ2_SonicResize6-off_1C630 ; C + dc.w AIZ2_SonicResize7-off_1C630 ; E + dc.w AIZ2_SonicResizeEnd-off_1C630 ; 10 + dc.w AIZ2_KnuxResize1-off_1C630 ; 12 + dc.w AIZ2_KnuxResize2-off_1C630 ; 14 + dc.w AIZ2_KnuxResize3-off_1C630 ; 16 + dc.w AIZ2_KnuxResize4-off_1C630 ; 18 + dc.w AIZ2_KnuxResize5-off_1C630 ; 1A + dc.w AIZ2_KnuxResizeEnd-off_1C630 ; 1C ; --------------------------------------------------------------------------- loc_1C64E: @@ -39810,7 +39792,7 @@ Obj_MonitorFall: move.b routine_secondary(a0),d0 beq.s locret_1D694 btst #1,render_flags(a0) ; Is monitor upside down? - bne.s Obj_MonitorFallUpsideDown ; If so, branch + bne.s Obj_MonitorFallUpsideDown ; If so, branch bsr.w MoveSprite tst.w y_vel(a0) ; Is monitor moving up? bmi.s locret_1D694 ; If so, return @@ -51732,19 +51714,19 @@ loc_26478: Ani_LBZFlameThrower: include "Levels/LBZ/Misc Object Data/Anim - Flame Thrower.asm" LBZRideGrapple_Range: - dc.w $A08, $C78 ;0 - dc.w $1208, $14F8 ;1 - dc.w $1A08, $1BB8 ;2 - dc.w $1C48, $2078 ;3 - dc.w $2688, $2878 ;4 - dc.w $2988, $2DF8 ;5 - dc.w $2F88, $3178 ;6 - dc.w $E68, $1098 ;7 - dc.w $CE8, $1498 ;8 - dc.w $E68, $1398 ;9 - dc.w $20E8, $2418 ;A - dc.w $2B08, $2E98 ;B - dc.w $39E8, $3C98 ;C + dc.w $A08, $C78 ; 0 + dc.w $1208, $14F8 ; 1 + dc.w $1A08, $1BB8 ; 2 + dc.w $1C48, $2078 ; 3 + dc.w $2688, $2878 ; 4 + dc.w $2988, $2DF8 ; 5 + dc.w $2F88, $3178 ; 6 + dc.w $E68, $1098 ; 7 + dc.w $CE8, $1498 ; 8 + dc.w $E68, $1398 ; 9 + dc.w $20E8, $2418 ; A + dc.w $2B08, $2E98 ; B + dc.w $39E8, $3C98 ; C ; --------------------------------------------------------------------------- Obj_LBZRideGrapple: @@ -52294,17 +52276,17 @@ LBZCupElevator_Action: ; End of function LBZCupElevator_Action ; --------------------------------------------------------------------------- -off_26B1E: dc.w LBZCupElev_WaitEnter-off_26B1E ;0 - dc.w LBZCupElev_MoveUp-off_26B1E ;2 - dc.w LBZCupElev_WaitExit1-off_26B1E ;4 - dc.w LBZCupElev_WaitEnter-off_26B1E ;6 - dc.w LBZCupElev_MoveDown-off_26B1E ;8 - dc.w LBZCupElev_WaitExit2-off_26B1E ;A - dc.w LBZCupElev_Spin1-off_26B1E ;C - dc.w LBZCupElev_Fling1-off_26B1E ;E - dc.w LBZCupElev_Fling2-off_26B1E ;10 - dc.w LBZCupElev_Spin2-off_26B1E ;12 - dc.w LBZCupElev_Fling3-off_26B1E ;14 +off_26B1E: dc.w LBZCupElev_WaitEnter-off_26B1E ; 0 + dc.w LBZCupElev_MoveUp-off_26B1E ; 2 + dc.w LBZCupElev_WaitExit1-off_26B1E ; 4 + dc.w LBZCupElev_WaitEnter-off_26B1E ; 6 + dc.w LBZCupElev_MoveDown-off_26B1E ; 8 + dc.w LBZCupElev_WaitExit2-off_26B1E ; A + dc.w LBZCupElev_Spin1-off_26B1E ; C + dc.w LBZCupElev_Fling1-off_26B1E ; E + dc.w LBZCupElev_Fling2-off_26B1E ; 10 + dc.w LBZCupElev_Spin2-off_26B1E ; 12 + dc.w LBZCupElev_Fling3-off_26B1E ; 14 ; --------------------------------------------------------------------------- LBZCupElev_WaitEnter: @@ -59847,7 +59829,7 @@ Obj_StillSprite: loc_2B962: jmp (Sprite_OnScreen_Test).l ; --------------------------------------------------------------------------- -word_2B968: dc.w $42E9 ; 0 AIZ2 Bridge Post +word_2B968: dc.w $42E9 ; 0 AIZ2 Bridge Post dc.w $300 dc.b $C dc.b $C @@ -92320,12 +92302,12 @@ word_46658: dc.w $FAFA dc.w $1818 dc.w $1919 byte_46698: dc.b 0 - dc.b $A ; - dc.b $12 ; - dc.b $16 ; - dc.b $17 ; - dc.b $16 ; - dc.b $12 ; + dc.b $A + dc.b $12 + dc.b $16 + dc.b $17 + dc.b $16 + dc.b $12 byte_4669F: dc.b $A byte_466A0: dc.b 0, $FF, $FF, 0, 1, 2, 2, 1 dc.b 0, $FD, $FC, $FC, $FD, 0, 4, 6 @@ -98367,8 +98349,8 @@ loc_4B9B6: ; --------------------------------------------------------------------------- off_4B9BC: dc.w loc_4B9CE-off_4B9BC - dc.w loc_4BA4E-off_4B9BC; 1 - dc.w loc_4BC1E-off_4B9BC; 2 + dc.w loc_4BA4E-off_4B9BC + dc.w loc_4BC1E-off_4B9BC off_4B9C2: dc.l Map_Sonic dc.l Map_Tails dc.l Map_Knuckles @@ -98836,7 +98818,7 @@ loc_4BDFC: loc_4BE10: jsr (GiveRing).l - cmpi.w #$32,(Ring_count).w + cmpi.w #50,(Ring_count).w blo.s loc_4BE32 bset #0,(Extra_life_flags).w bne.s loc_4BE32 @@ -100033,8 +100015,9 @@ Pal_SpheresTitle_2: binclude "General/Blue Sphere/Palettes/Title 2.bin" even aNoWayNoWayNoWa:dc.b "NO WAY! NO WAY! NO WAY! NO WAY? ",0 + even aGetBlueSpheres:dc.b "GET BLUE SPHERES ! ",0 - dc.b 0 ; + even ; =============== S U B R O U T I N E ======================================= @@ -101480,8 +101463,10 @@ Pal_SphereResults_012: Pal_SphereResults_3: binclude "General/Blue Sphere/Palettes/Results Line 3.bin" even -aCongratulation:dc.b "CONGRATULATIONS!",0,0 +aCongratulation:dc.b "CONGRATULATIONS!",0 + even aPerfect: dc.b "PERFECT",0 + even ; =============== S U B R O U T I N E ======================================= @@ -101847,7 +101832,7 @@ loc_4E2F0: cmp.b $30(a0),d0 beq.s loc_4E310 move.b d0,$30(a0) - move.w #-$2C00,d4 + move.w #$D400,d4 jsr (loc_18122).l loc_4E310: @@ -101901,7 +101886,9 @@ LevelSetup: move.w (Camera_Y_pos_copy).w,(V_scroll_value).w move.w (Camera_Y_pos_BG_copy).w,(V_scroll_value_BG).w rts -; --------------------------------------------------------------------------- + +; =============== S U B R O U T I N E ======================================= + ScreenEvents: move.w (Camera_X_pos).w,(Camera_X_pos_copy).w @@ -101926,6 +101913,8 @@ ScreenEvents: move.w (Camera_Y_pos_copy).w,(V_scroll_value).w move.w (Camera_Y_pos_BG_copy).w,(V_scroll_value_BG).w rts +; End of function ScreenEvents + ; --------------------------------------------------------------------------- LevelSetupArray:dc.l AIZ1_ScreenInit, AIZ1_BackgroundInit dc.l AIZ2_ScreenInit, AIZ2_BackgroundInit @@ -103738,12 +103727,16 @@ Reset_TileOffsetPositionEff: rts ; End of function Reset_TileOffsetPositionEff -; --------------------------------------------------------------------------- + +; =============== S U B R O U T I N E ======================================= + Update_CameraPositionP2: move.w (Camera_X_pos_P2).w,(Camera_X_pos_P2_copy).w move.w (Camera_Y_pos_P2).w,(Camera_Y_pos_P2_copy).w rts +; End of function Update_CameraPositionP2 + ; --------------------------------------------------------------------------- Update_VScrollValueP2: @@ -116054,26 +116047,16 @@ locret_57788: ; End of function sub_575EA ; --------------------------------------------------------------------------- -word_5778A: dc.w $EE0 - dc.w $D00 - dc.w $11E0 - dc.w $CC0 - dc.w $1340 - dc.w $B20 - dc.w $7FFF - dc.w 0 -word_5779A: dc.w $640 - dc.w $C60 - dc.w $880 - dc.w $CA0 - dc.w $1200 - dc.w $C60 - dc.w $1380 - dc.w $A80 - dc.w $13C0 - dc.w $660 - dc.w $7FFF - dc.w $3E0 +word_5778A: dc.w $EE0, $D00 + dc.w $11E0, $CC0 + dc.w $1340, $B20 + dc.w $7FFF, 0 +word_5779A: dc.w $640, $C60 + dc.w $880, $CA0 + dc.w $1200, $C60 + dc.w $1380, $A80 + dc.w $13C0, $660 + dc.w $7FFF, $3E0 word_577B2: dc.w $19C0 dc.w $20 dc.w $20 @@ -128452,7 +128435,7 @@ loc_61794: bset d0,d1 move.l d1,(Collected_special_ring_array).w ; Set the special stage ring as collected bset #5,$38(a0) - moveq #$32,d0 ; Add 50 rings + moveq #50,d0 ; Add 50 rings jmp (AddRings).l ; --------------------------------------------------------------------------- @@ -130733,7 +130716,7 @@ loc_634CA: lea ObjDat4_663DE(pc),a1 jsr (SetUp_ObjAttributesSlotted).l move.w #$EF,$2E(a0) - move.b #-$7D,(Player_1+object_control).w + move.b #$83,(Player_1+object_control).w move.w #$560,(Camera_X_pos).w move.w #$948,(Camera_Y_pos).w st (Scroll_lock).w @@ -134593,11 +134576,11 @@ loc_66134: loc_66146: movea.l 8(a3),a4 jmp (a4) -; End of function sub_660E2 - ; --------------------------------------------------------------------------- movea.l $C(a3),a4 jmp (a4) +; End of function sub_660E2 + ; --------------------------------------------------------------------------- word_66152: dc.w $FFE8, $30, $FFE8, $30 @@ -152623,7 +152606,7 @@ loc_72BBC: loc_72BFA: lea (ArtKosM_LBZ2DeathEggSmall).l,a1 - move.w #-$6A40,d2 + move.w #$95C0,d2 jmp (Queue_Kos_Module).l ; --------------------------------------------------------------------------- @@ -152677,18 +152660,13 @@ loc_72C68: ; clears player 1's anim here, as P2 is absent from the final boss. clr.b $20(a0) -; =============== S U B R O U T I N E ======================================= - - sub_72C8E: - move.b #-$7D,$2E(a1) + move.b #$83,$2E(a1) clr.b $24(a1) clr.b $23(a1) locret_72C9C: rts -; End of function sub_72C8E - ; --------------------------------------------------------------------------- loc_72C9E: @@ -153851,8 +153829,10 @@ Pal_LBZFinalBoss1: even Pal_LBZEnding: binclude "Levels/LBZ/Palettes/Ending.bin" even -word_738C6: dc.w $460, $6A0, $3900, $3B20 -word_738CE: dc.w $5A0, $5A0, $3A20, $3A20 +word_738C6: dc.w $460, $6A0 + dc.w $3900, $3B20 +word_738CE: dc.w $5A0, $5A0 + dc.w $3A20, $3A20 ; --------------------------------------------------------------------------- Obj_LBZEndBoss: @@ -172490,7 +172470,6 @@ loc_8076A: beq.s loc_8077C move.l #loc_80782,(a0) - loc_8077C: jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- @@ -178570,8 +178549,8 @@ loc_847C6: Swing_UpAndDown: move.w $40(a0),d0 ; Acceleration - move.w $1A(a0),d1 ; Velocity - move.w $3E(a0),d2 ; Maximum acceleration before "swinging" + move.w $1A(a0),d1 ; Velocity + move.w $3E(a0),d2 ; Maximum acceleration before "swinging" moveq #0,d3 btst #0,$38(a0) bne.s loc_84812 @@ -180486,7 +180465,7 @@ loc_8577C: move.w word_857AC(pc,d0.w),d0 cmpi.w #$20,(Chain_bonus_counter).w blo.s loc_85796 - move.w #$3E8,d0 ; 10000 points + move.w #1000,d0 ; 10000 points move.w #$A,$3E(a0) loc_85796: @@ -180498,10 +180477,10 @@ loc_85796: ; End of function EnemyDefeat_Score ; --------------------------------------------------------------------------- -word_857AC: dc.w $A ;100 points - dc.w $14 ;200 points - dc.w $32 ;500 points - dc.w $64 ;1000 points +word_857AC: dc.w 10 ; 100 points + dc.w 20 ; 200 points + dc.w 50 ; 500 points + dc.w 100 ; 1000 points ; =============== S U B R O U T I N E ======================================= @@ -201492,54 +201471,54 @@ Solid_LRZBoss: binclude "Levels/LRZ/Collision/3.bin" even Solid_HPZ: binclude "Levels/HPZ/Collision/1.bin" even -LevelPtrs: dc.l Layout_AIZ1 ; 0 - dc.l Layout_AIZ2 ; 1 - dc.l Layout_HCZ1 ; 2 - dc.l Layout_HCZ2 ; 3 - dc.l Layout_MGZ1 ; 4 - dc.l Layout_MGZ2 ; 5 - dc.l Layout_CNZ1 ; 6 - dc.l Layout_CNZ2 ; 7 - dc.l Layout_FBZ1 ; 8 - dc.l Layout_FBZ2 ; 9 - dc.l Layout_ICZ1 ; 10 - dc.l Layout_ICZ2 ; 11 - dc.l Layout_LBZ1 ; 12 - dc.l Layout_LBZ2 ; 13 - dc.l Layout_MHZ1 ; 14 - dc.l Layout_MHZ2 ; 15 - dc.l Layout_SOZ1 ; 16 - dc.l Layout_SOZ2 ; 17 - dc.l Layout_LRZ1 ; 18 - dc.l Layout_LRZ2 ; 19 - dc.l Layout_SSZ1 ; 20 - dc.l Layout_SSZ2 ; 21 - dc.l Layout_DEZ1 ; 22 - dc.l Layout_DEZ2 ; 23 - dc.l Layout_DDZ ; 24 - dc.l Layout_DDZ ; 25 - dc.l Layout_SSZ2 ; 26 - dc.l Layout_SSZ2 ; 27 - dc.l Layout_ALZ ; 28 - dc.l Layout_ALZ ; 29 - dc.l Layout_BPZ ; 30 - dc.l Layout_BPZ ; 31 - dc.l Layout_DPZ ; 32 - dc.l Layout_DPZ ; 33 - dc.l Layout_CGZ ; 34 - dc.l Layout_CGZ ; 35 - dc.l Layout_EMZ ; 36 - dc.l Layout_EMZ ; 37 - dc.l Layout_Gumball_Special; 38 - dc.l Layout_Gumball_Special; 39 - dc.l Layout_Pachinko_Special; 40 - dc.l Layout_Pachinko_Special; 41 - dc.l Layout_Slots_Special; 42 - dc.l Layout_Slots_Special; 43 - dc.l Layout_LRZBoss ; 44 - dc.l Layout_HPZ ; 45 - dc.l Layout_DEZBoss ; 46 - dc.l Layout_HPZ ; 47 +LevelPtrs: dc.l Layout_AIZ1 + dc.l Layout_AIZ2 + dc.l Layout_HCZ1 + dc.l Layout_HCZ2 + dc.l Layout_MGZ1 + dc.l Layout_MGZ2 + dc.l Layout_CNZ1 + dc.l Layout_CNZ2 + dc.l Layout_FBZ1 + dc.l Layout_FBZ2 + dc.l Layout_ICZ1 + dc.l Layout_ICZ2 + dc.l Layout_LBZ1 + dc.l Layout_LBZ2 + dc.l Layout_MHZ1 + dc.l Layout_MHZ2 + dc.l Layout_SOZ1 + dc.l Layout_SOZ2 + dc.l Layout_LRZ1 + dc.l Layout_LRZ2 + dc.l Layout_SSZ1 + dc.l Layout_SSZ2 + dc.l Layout_DEZ1 + dc.l Layout_DEZ2 + dc.l Layout_DDZ + dc.l Layout_DDZ + dc.l Layout_SSZ2 + dc.l Layout_SSZ2 + dc.l Layout_ALZ + dc.l Layout_ALZ + dc.l Layout_BPZ + dc.l Layout_BPZ + dc.l Layout_DPZ + dc.l Layout_DPZ + dc.l Layout_CGZ + dc.l Layout_CGZ + dc.l Layout_EMZ + dc.l Layout_EMZ + dc.l Layout_Gumball_Special + dc.l Layout_Gumball_Special + dc.l Layout_Pachinko_Special + dc.l Layout_Pachinko_Special + dc.l Layout_Slots_Special + dc.l Layout_Slots_Special + dc.l Layout_LRZBoss + dc.l Layout_HPZ + dc.l Layout_DEZBoss + dc.l Layout_HPZ Layout_FBZ1: binclude "Levels/FBZ/Layout/1.bin" even Layout_FBZ2: binclude "Levels/FBZ/Layout/2.bin" @@ -202067,24 +202046,24 @@ S2K_Sprite_Lists: dc.l S2KSprite_WFZ2 ; 13 dc.l S2KSprite_HTZ1 ; 14 dc.l S2KSprite_HTZ2 ; 15 - dc.l $2E8C80 ;byte_2E8C80 ; 16 - dc.l $2E8D94 ;byte_2E8D94 ; 17 + dc.l $2E8C80 ;byte_2E8C80 ; 16 + dc.l $2E8D94 ;byte_2E8D94 ; 17 dc.l S2KSprite_NULL ; 18 dc.l S2KSprite_NULL ; 19 dc.l S2KSprite_OOZ1 ; 20 dc.l S2KSprite_OOZ2 ; 21 dc.l S2KSprite_MCZ1 ; 22 dc.l S2KSprite_MCZ2 ; 23 - dc.l $33F06E ;byte_33F06E ; 24 - dc.l $33F74C ;byte_33F74C ; 25 + dc.l $33F06E ;byte_33F06E ; 24 + dc.l $33F74C ;byte_33F74C ; 25 dc.l S2KSprite_CPZ1 ; 26 dc.l S2KSprite_CPZ2 ; 27 - dc.l $2EB230 ;byte_2EB230 ; 28 - dc.l $2EB254 ;byte_2EB254 ; 29 + dc.l $2EB230 ;byte_2EB230 ; 28 + dc.l $2EB254 ;byte_2EB254 ; 29 dc.l S2KSprite_ARZ1 ; 30 dc.l S2KSprite_ARZ2 ; 31 - dc.l $2EBBDE ;byte_2EBBDE ; 32 - dc.l $2EBD4C ;byte_2EBD4C ; 33 + dc.l $2EBBDE ;byte_2EBBDE ; 32 + dc.l $2EBD4C ;byte_2EBD4C ; 33 dc.w $FFFF, 0, 0 S2KSprite_EHZ1: binclude "Levels/Misc/S2K Object Pos/EHZ_1.bin" even From b423c1f69bc774d5b1a3a963098053c5c8eb62bd Mon Sep 17 00:00:00 2001 From: Vinny Date: Sun, 16 Jan 2022 18:57:50 +0300 Subject: [PATCH 58/72] Labeled RAM address for updating player 2's timer in competition mode --- s3.asm | 22 +++++++++++----------- sonic3k.asm | 22 +++++++++++----------- sonic3k.constants.asm | 2 +- 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/s3.asm b/s3.asm index a70a3675..aeb48e94 100644 --- a/s3.asm +++ b/s3.asm @@ -21522,7 +21522,7 @@ loc_1328A: loc_132D0: clr.b (Update_HUD_timer).w - clr.b (_unkFEC7).w + clr.b (Update_HUD_timer_P2).w move.b #8,5(a0) move.w #mus_GameOver,d0 jsr (Play_Music).l @@ -63772,7 +63772,7 @@ Obj_2PGoalMarker: clr.w (Events_bg+$14).w clr.b (Update_HUD_timer).w clr.l (Timer).w - clr.b (_unkFEC7).w + clr.b (Update_HUD_timer_P2).w clr.l (Timer_P2).w clr.w (Ring_count).w clr.w (Ring_count_P2).w @@ -63860,7 +63860,7 @@ loc_36352: clr.w (Competition_current_lap).w clr.b (Update_HUD_timer).w clr.l (Timer).w - clr.b (_unkFEC7).w + clr.b (Update_HUD_timer_P2).w clr.l (Timer_P2).w clr.b (Ctrl_1_locked).w clr.b (Ctrl_2_locked).w @@ -64210,7 +64210,7 @@ loc_3676A: cmpi.b #3,$22(a0) bne.s locret_36784 move.b #1,(Update_HUD_timer).w - move.b #1,(_unkFEC7).w + move.b #1,(Update_HUD_timer_P2).w move.b #1,$3A(a0) locret_36784: @@ -64260,7 +64260,7 @@ loc_367E8: move.b #6,$20(a0) bclr #3,4(a0) move.w #$78,(Events_bg+$16).w - move.b #$80,(_unkFEC7).w + move.b #$80,(Update_HUD_timer_P2).w rts ; --------------------------------------------------------------------------- @@ -64281,7 +64281,7 @@ loc_36824: move.w #$168,(Events_bg+$16).w loc_3684E: - move.b #$80,(_unkFEC7).w + move.b #$80,(Update_HUD_timer_P2).w bsr.w sub_36998 moveq #signextendB(sfx_Goal),d0 jsr (Play_SFX).l @@ -64299,7 +64299,7 @@ loc_36862: bpl.s locret_36898 tst.b (Not_ghost_flag).w beq.s loc_36880 - tst.b (_unkFEC7).w + tst.b (Update_HUD_timer_P2).w bpl.s locret_36898 loc_36880: @@ -64349,7 +64349,7 @@ loc_368CE: move.l #$93B63,(a1,d0.w) loc_368FC: - tst.b (_unkFEC7).w + tst.b (Update_HUD_timer_P2).w bmi.s loc_3690A move.l #$93B63,$14(a1,d0.w) @@ -64398,11 +64398,11 @@ loc_36966: move.b (Competition_total_laps).w,d0 cmp.b (Competition_current_lap_2P).w,d0 bcc.s locret_36996 - tst.b (_unkFEC7).w + tst.b (Update_HUD_timer_P2).w bmi.s locret_36996 move.b #5,$20(a0) bset #4,4(a0) - move.b #-$80,(_unkFEC7).w + move.b #-$80,(Update_HUD_timer_P2).w move.w #$78,(Events_bg+$16).w moveq #signextendB(sfx_Goal),d0 jsr (Play_SFX).l @@ -64569,7 +64569,7 @@ loc_372EC: lea (Timer_minute_P2).w,a3 moveq #0,d1 move.b (Competition_lap_count_2P).w,d1 - lea (_unkFEC7).w,a4 + lea (Update_HUD_timer_P2).w,a4 lea (Competition_time_record_P2).w,a5 lea ($FF7840).l,a6 diff --git a/sonic3k.asm b/sonic3k.asm index ef04d3a3..7fda787e 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -24278,7 +24278,7 @@ loc_12432: loc_12478: clr.b (Update_HUD_timer).w - clr.b (_unkFEC7).w + clr.b (Update_HUD_timer_P2).w move.b #8,5(a0) move.w #mus_GameOver,d0 jsr (Play_Music).l @@ -73813,7 +73813,7 @@ Obj_2PGoalMarker: clr.w (Events_bg+$14).w clr.b (Update_HUD_timer).w clr.l (Timer).w - clr.b (_unkFEC7).w + clr.b (Update_HUD_timer_P2).w clr.l (Timer_P2).w clr.w (Ring_count).w clr.w (Ring_count_P2).w @@ -73901,7 +73901,7 @@ loc_36DC0: clr.w (Competition_current_lap).w clr.b (Update_HUD_timer).w clr.l (Timer).w - clr.b (_unkFEC7).w + clr.b (Update_HUD_timer_P2).w clr.l (Timer_P2).w clr.b (Ctrl_1_locked).w clr.b (Ctrl_2_locked).w @@ -74251,7 +74251,7 @@ loc_371D8: cmpi.b #3,$22(a0) bne.s locret_371F2 move.b #1,(Update_HUD_timer).w - move.b #1,(_unkFEC7).w + move.b #1,(Update_HUD_timer_P2).w move.b #1,$3A(a0) locret_371F2: @@ -74301,7 +74301,7 @@ loc_37256: move.b #6,$20(a0) bclr #3,4(a0) move.w #$78,(Events_bg+$16).w - move.b #$80,(_unkFEC7).w + move.b #$80,(Update_HUD_timer_P2).w rts ; --------------------------------------------------------------------------- @@ -74322,7 +74322,7 @@ loc_37292: move.w #$168,(Events_bg+$16).w loc_372BC: - move.b #$80,(_unkFEC7).w + move.b #$80,(Update_HUD_timer_P2).w bsr.w sub_37406 moveq #signextendB(sfx_Goal),d0 jsr (Play_SFX).l @@ -74340,7 +74340,7 @@ loc_372D0: bpl.s locret_37306 tst.b (Not_ghost_flag).w beq.s loc_372EE - tst.b (_unkFEC7).w + tst.b (Update_HUD_timer_P2).w bpl.s locret_37306 loc_372EE: @@ -74390,7 +74390,7 @@ loc_3733C: move.l #$93B63,(a1,d0.w) loc_3736A: - tst.b (_unkFEC7).w + tst.b (Update_HUD_timer_P2).w bmi.s loc_37378 move.l #$93B63,$14(a1,d0.w) @@ -74439,11 +74439,11 @@ loc_373D4: move.b (Competition_total_laps).w,d0 cmp.b (Competition_current_lap_2P).w,d0 bhs.s locret_37404 - tst.b (_unkFEC7).w + tst.b (Update_HUD_timer_P2).w bmi.s locret_37404 move.b #5,$20(a0) bset #4,4(a0) - move.b #-$80,(_unkFEC7).w + move.b #-$80,(Update_HUD_timer_P2).w move.w #$78,(Events_bg+$16).w moveq #signextendB(sfx_Goal),d0 jsr (Play_SFX).l @@ -74610,7 +74610,7 @@ loc_37D5A: lea (Timer_minute_P2).w,a3 moveq #0,d1 move.b (Competition_lap_count_2P).w,d1 - lea (_unkFEC7).w,a4 + lea (Update_HUD_timer_P2).w,a4 lea (Competition_time_record_P2).w,a5 lea ($FF7840).l,a6 diff --git a/sonic3k.constants.asm b/sonic3k.constants.asm index 1e93f037..4e6d09da 100644 --- a/sonic3k.constants.asm +++ b/sonic3k.constants.asm @@ -818,7 +818,7 @@ Max_speed_P2 ds.w 1 Acceleration_P2 ds.w 1 Deceleration_P2 ds.w 1 Life_count_P2 ds.b 1 ; left over from Sonic 2 -_unkFEC7 ds.b 1 ; used in competition mode +Update_HUD_timer_P2 ds.b 1 ; used in competition mode Total_ring_count ds.w 1 ; left over from Sonic 2 Total_ring_count_P2 ds.w 1 ; left over from Sonic 2 Monitors_broken ds.w 1 ; left over from Sonic 2. Apparently Sonic 3 developers liked copypasting, since gaining a life from rings also increments this counter From 7cd4ccbbffb0fe336ffb1d228c9bf737b944fbec Mon Sep 17 00:00:00 2001 From: Vinny Date: Sun, 16 Jan 2022 19:06:44 +0300 Subject: [PATCH 59/72] Give PLC pointer lists some more individually identifiable labels --- s3.asm | 44 +++++++++++------------ sonic3k.asm | 100 ++++++++++++++++++++++++++-------------------------- 2 files changed, 72 insertions(+), 72 deletions(-) diff --git a/s3.asm b/s3.asm index aeb48e94..0f008ae0 100644 --- a/s3.asm +++ b/s3.asm @@ -76328,7 +76328,7 @@ loc_3F47E: move.b 5(a0),d0 move.w off_3F49E(pc,d0.w),d1 jsr off_3F49E(pc,d1.w) - lea (DPLCPtr_4575E).l,a2 + lea (DPLCPtr_CutsceneKnux).l,a2 jsr (Perform_DPLC).l jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- @@ -79591,7 +79591,7 @@ CutsceneKnux_AIZ1: move.b 5(a0),d0 move.w off_4473E(pc,d0.w),d1 jsr off_4473E(pc,d1.w) - lea DPLCPtr_4575E(pc),a2 + lea DPLCPtr_CutsceneKnux(pc),a2 jsr (Perform_DPLC).l jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- @@ -79756,7 +79756,7 @@ CutsceneKnux_AIZ2: move.b 5(a0),d0 move.w off_44944(pc,d0.w),d1 jsr off_44944(pc,d1.w) - lea DPLCPtr_4575E(pc),a2 + lea DPLCPtr_CutsceneKnux(pc),a2 jsr (Perform_DPLC).l jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- @@ -79895,7 +79895,7 @@ CutsceneKnux_HCZ2: move.b 5(a0),d0 move.w off_44ACC(pc,d0.w),d1 jsr off_44ACC(pc,d1.w) - lea DPLCPtr_4575E(pc),a2 + lea DPLCPtr_CutsceneKnux(pc),a2 jsr (Perform_DPLC).l jmp (Sprite_CheckDeleteTouchSlotted).l ; --------------------------------------------------------------------------- @@ -80006,7 +80006,7 @@ CutsceneKnux_CNZ2A: move.b 5(a0),d0 move.w off_44C22(pc,d0.w),d1 jsr off_44C22(pc,d1.w) - lea DPLCPtr_4575E(pc),a2 + lea DPLCPtr_CutsceneKnux(pc),a2 jsr (Perform_DPLC).l jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- @@ -80217,7 +80217,7 @@ CutsceneKnux_CNZ2B: move.b 5(a0),d0 move.w off_44E8A(pc,d0.w),d1 jsr off_44E8A(pc,d1.w) - lea DPLCPtr_4575E(pc),a2 + lea DPLCPtr_CutsceneKnux(pc),a2 jsr (Perform_DPLC).l jmp (Sprite_CheckDeleteTouchSlotted).l ; --------------------------------------------------------------------------- @@ -80338,7 +80338,7 @@ CutsceneKnux_LBZ1: move.b 5(a0),d0 move.w off_44FD8(pc,d0.w),d1 jsr off_44FD8(pc,d1.w) - lea DPLCPtr_4575E(pc),a2 + lea DPLCPtr_CutsceneKnux(pc),a2 jsr (Perform_DPLC).l jmp (Sprite_CheckDeleteTouchSlotted).l ; --------------------------------------------------------------------------- @@ -80539,7 +80539,7 @@ CutsceneKnux_LBZ2: move.b 5(a0),d0 move.w off_45234(pc,d0.w),d1 jsr off_45234(pc,d1.w) - lea DPLCPtr_4575E(pc),a2 + lea DPLCPtr_CutsceneKnux(pc),a2 jsr (Perform_DPLC).l jmp (Sprite_CheckDeleteTouchSlotted).l ; --------------------------------------------------------------------------- @@ -81009,7 +81009,7 @@ ChildObjDat_45756: dc.w 0 dc.l loc_448EE dc.w $18 -DPLCPtr_4575E: dc.l ArtUnc_CutsceneKnux +DPLCPtr_CutsceneKnux: dc.l ArtUnc_CutsceneKnux dc.l DPLC_CutsceneKnux byte_45766: dc.b 7 dc.b 1 @@ -85192,7 +85192,7 @@ loc_48338: loc_48348: lea byte_48C7F(pc),a1 jsr (Animate_RawNoSST).l - lea DPLCPtr_48C28(pc),a2 + lea DPLCPtr_HCZMinibossSplash(pc),a2 jsr (Perform_DPLC).l jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- @@ -86134,7 +86134,7 @@ ChildObjDat_48C08: dc.w $F430 dc.l loc_48732 dc.w $C30 -DPLCPtr_48C28: dc.l ArtUnc_DashDust +DPLCPtr_HCZMinibossSplash: dc.l ArtUnc_DashDust dc.l DPLC_HCZMinibossSplash byte_48C30: dc.b $16, 7 dc.b $17, 7 @@ -105652,7 +105652,7 @@ Obj_Rhinobot: move.b 5(a0),d0 move.w off_54C72(pc,d0.w),d1 jsr off_54C72(pc,d1.w) - lea DPLCPtr_54F2E(pc),a2 + lea DPLCPtr_AIZRhinobot(pc),a2 jsr Perform_DPLC(pc) jmp Sprite_CheckDeleteTouchSlotted(pc) ; --------------------------------------------------------------------------- @@ -105713,7 +105713,7 @@ loc_54CF8: move.b 5(a0),d0 move.w off_54D1E(pc,d0.w),d1 jsr off_54D1E(pc,d1.w) - lea DPLCPtr_54F2E(pc),a2 + lea DPLCPtr_AIZRhinobot(pc),a2 jsr Perform_DPLC(pc) jmp Child_Remember_Draw_Sprite(pc) ; --------------------------------------------------------------------------- @@ -105964,7 +105964,7 @@ ChildObjDat_54F26: dc.w 0 dc.l loc_54CF8 dc.w $1008 -DPLCPtr_54F2E: dc.l ArtUnc_AIZRhinobot +DPLCPtr_AIZRhinobot: dc.l ArtUnc_AIZRhinobot dc.l DPLC_Rhinobot byte_54F36: dc.b 2, 4 dc.b 4, 5 @@ -107931,7 +107931,7 @@ Obj_BubblesBadnik: move.b #$86,$28(a0) loc_5614A: - lea PLCPtr_56222(pc),a2 + lea PLCPtr_BubblesBadnik(pc),a2 jsr Perform_DPLC(pc) jmp Sprite_CheckDeleteTouchSlotted(pc) ; --------------------------------------------------------------------------- @@ -108010,7 +108010,7 @@ ObjDat4_56210: dc.w 1 dc.b $18 dc.b 0 dc.b 0 -PLCPtr_56222: dc.l ArtUnc_BubblesBadnik +PLCPtr_BubblesBadnik: dc.l ArtUnc_BubblesBadnik dc.l DPLC_BubblesBadnik byte_5622A: dc.b 0, $F dc.b 0, $77 @@ -109184,7 +109184,7 @@ Obj_Clamer: move.b 5(a0),d0 move.w off_56D92(pc,d0.w),d1 jsr off_56D92(pc,d1.w) - lea PLCPtr_56F1C(pc),a2 + lea PLCPtr_Clamer(pc),a2 jsr Perform_DPLC(pc) jmp Sprite_CheckDeleteTouchSlotted(pc) ; --------------------------------------------------------------------------- @@ -109356,7 +109356,7 @@ ChildObjDat_56F04: dc.b 2 dc.w $FE00 dc.w 0 -PLCPtr_56F1C: dc.l ArtUnc_Clamer +PLCPtr_Clamer: dc.l ArtUnc_Clamer dc.l DPLC_Clamer byte_56F24: dc.b 1, 1 dc.b 0, $5F @@ -113327,7 +113327,7 @@ Obj_Penguinator: move.b 5(a0),d0 move.w off_59296(pc,d0.w),d1 jsr off_59296(pc,d1.w) - lea DPLCPtr_5959A(pc),a2 + lea DPLCPtr_Penguinator(pc),a2 jsr Perform_DPLC(pc) jmp Sprite_CheckDeleteTouchSlotted(pc) ; --------------------------------------------------------------------------- @@ -113632,7 +113632,7 @@ ChildObjDat_59592: dc.w 0 dc.l Obj_ICZSnowdust dc.w $C -DPLCPtr_5959A: dc.l ArtUnc_Penguinator +DPLCPtr_Penguinator: dc.l ArtUnc_Penguinator dc.l DPLC_Penguinator byte_595A2: dc.b 7, $10 dc.b 0, 1 @@ -114944,7 +114944,7 @@ Obj_Flybot767: move.b 5(a0),d0 move.w off_5A0FC(pc,d0.w),d1 jsr off_5A0FC(pc,d1.w) - lea DPLCPtr_5A28C(pc),a2 + lea DPLCPtr_Flybot767(pc),a2 jsr Perform_DPLC(pc) jmp (Sprite_CheckDeleteTouchSlotted).l ; --------------------------------------------------------------------------- @@ -115090,7 +115090,7 @@ ObjDat4_5A27A: dc.w 2 dc.b $10 dc.b 0 dc.b $1A -DPLCPtr_5A28C: dc.l ArtUnc_Flybot767 +DPLCPtr_Flybot767: dc.l ArtUnc_Flybot767 dc.l DPLC_Flybot767 byte_5A294: dc.b 4 dc.b 0 diff --git a/sonic3k.asm b/sonic3k.asm index 7fda787e..bca42c64 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -126222,7 +126222,7 @@ loc_5F71E: move.b 5(a0),d0 move.w off_5F73E(pc,d0.w),d1 jsr off_5F73E(pc,d1.w) - lea (DPLCPtr_7D4D6).l,a2 + lea (DPLCPtr_MechaSonic).l,a2 jsr (Perform_DPLC).l jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- @@ -128733,7 +128733,7 @@ CutsceneKnux_AIZ1: move.b 5(a0),d0 move.w off_61DB0(pc,d0.w),d1 jsr off_61DB0(pc,d1.w) - lea DPLCPtr_6666A(pc),a2 + lea DPLCPtr_CutsceneKnux(pc),a2 jsr (Perform_DPLC).l jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- @@ -128898,7 +128898,7 @@ CutsceneKnux_AIZ2: move.b 5(a0),d0 move.w off_61FB6(pc,d0.w),d1 jsr off_61FB6(pc,d1.w) - lea DPLCPtr_6666A(pc),a2 + lea DPLCPtr_CutsceneKnux(pc),a2 jsr (Perform_DPLC).l jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- @@ -129035,7 +129035,7 @@ CutsceneKnux_HCZ2: move.b 5(a0),d0 move.w off_62142(pc,d0.w),d1 jsr off_62142(pc,d1.w) - lea DPLCPtr_6666A(pc),a2 + lea DPLCPtr_CutsceneKnux(pc),a2 jsr (Perform_DPLC).l jmp (Sprite_CheckDeleteTouchSlotted).l ; --------------------------------------------------------------------------- @@ -129167,7 +129167,7 @@ CutsceneKnux_CNZ2A: move.b 5(a0),d0 move.w off_622D0(pc,d0.w),d1 jsr off_622D0(pc,d1.w) - lea DPLCPtr_6666A(pc),a2 + lea DPLCPtr_CutsceneKnux(pc),a2 jsr (Perform_DPLC).l jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- @@ -129375,7 +129375,7 @@ CutsceneKnux_CNZ2B: move.b 5(a0),d0 move.w off_62510(pc,d0.w),d1 jsr off_62510(pc,d1.w) - lea DPLCPtr_6666A(pc),a2 + lea DPLCPtr_CutsceneKnux(pc),a2 jsr (Perform_DPLC).l jmp (Sprite_CheckDeleteTouchSlotted).l ; --------------------------------------------------------------------------- @@ -129500,7 +129500,7 @@ CutsceneKnux_LBZ1: move.b 5(a0),d0 move.w off_62668(pc,d0.w),d1 jsr off_62668(pc,d1.w) - lea DPLCPtr_6666A(pc),a2 + lea DPLCPtr_CutsceneKnux(pc),a2 jsr (Perform_DPLC).l jmp (Sprite_CheckDeleteTouchSlotted).l ; --------------------------------------------------------------------------- @@ -129701,7 +129701,7 @@ CutsceneKnux_LBZ2: move.b 5(a0),d0 move.w off_628D2(pc,d0.w),d1 jsr off_628D2(pc,d1.w) - lea DPLCPtr_6666A(pc),a2 + lea DPLCPtr_CutsceneKnux(pc),a2 jsr (Perform_DPLC).l jmp (Sprite_CheckDeleteTouchSlotted).l ; --------------------------------------------------------------------------- @@ -129909,7 +129909,7 @@ CutsceneKnux_MHZ1: move.b 5(a0),d0 move.w off_62B58(pc,d0.w),d1 jsr off_62B58(pc,d1.w) - lea DPLCPtr_6666A(pc),a2 + lea DPLCPtr_CutsceneKnux(pc),a2 jsr (Perform_DPLC).l jmp (Sprite_CheckDeleteTouchSlotted).l ; --------------------------------------------------------------------------- @@ -130395,7 +130395,7 @@ CutsceneKnux_MHZ2: move.b 5(a0),d0 move.w off_6312A(pc,d0.w),d1 jsr off_6312A(pc,d1.w) - lea DPLCPtr_66672(pc),a2 + lea DPLCPtr_MHZKnuxPress(pc),a2 jsr (Perform_DPLC).l jmp (Sprite_CheckDeleteTouchSlotted).l ; --------------------------------------------------------------------------- @@ -130697,7 +130697,7 @@ off_63494: dc.w loc_6349A-off_63494 loc_6349A: move.l #Map_KnuxIntroLay,$C(a0) - lea DPLCPtr_6667A(pc),a2 + lea DPLCPtr_KnuxIntroLay(pc),a2 jmp (Perform_DPLC).l ; --------------------------------------------------------------------------- @@ -130708,7 +130708,7 @@ loc_634AC: loc_634B8: move.l #Map_HPZKnucklesGrab,$C(a0) - lea DPLCPtr_66682(pc),a2 + lea DPLCPtr_HPZKnucklesGrab(pc),a2 jmp (Perform_DPLC).l ; --------------------------------------------------------------------------- @@ -131460,12 +131460,12 @@ loc_63E06: ; --------------------------------------------------------------------------- loc_63E0A: - lea DPLCPtr_66682(pc),a2 + lea DPLCPtr_HPZKnucklesGrab(pc),a2 jmp (Perform_DPLC).l ; --------------------------------------------------------------------------- loc_63E14: - lea DPLCPtr_6668A(pc),a2 + lea DPLCPtr_SSZKnucklesTired(pc),a2 jmp (Perform_DPLC).l ; --------------------------------------------------------------------------- off_63E1E: dc.w loc_63E7C-off_63E1E @@ -133637,7 +133637,7 @@ CutsceneKnux_SSZ: loc_65702: move.l #Map_SSZKnucklesTired,$C(a0) - lea DPLCPtr_6668A(pc),a2 + lea DPLCPtr_SSZKnucklesTired(pc),a2 jsr (Perform_DPLC).l jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- @@ -133913,7 +133913,7 @@ loc_65A8C: move.w off_65AB0(pc,d0.w),d1 jsr off_65AB0(pc,d1.w) jsr (MoveSprite_SSZBGAdjust).l - lea DPLCPtr_66692(pc),a2 + lea DPLCPtr_SSZDeathEggCloud(pc),a2 jsr (Perform_DPLC).l jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- @@ -135256,17 +135256,17 @@ ChildObjDat_6665C: ChildObjDat_66664: dc.w 0 dc.l loc_63916 -DPLCPtr_6666A: dc.l ArtUnc_CutsceneKnux +DPLCPtr_CutsceneKnux: dc.l ArtUnc_CutsceneKnux dc.l DPLC_CutsceneKnux -DPLCPtr_66672: dc.l ArtUnc_MHZKnuxPress +DPLCPtr_MHZKnuxPress: dc.l ArtUnc_MHZKnuxPress dc.l DPLC_MHZKnuxPress -DPLCPtr_6667A: dc.l ArtUnc_KnuxIntroLay +DPLCPtr_KnuxIntroLay: dc.l ArtUnc_KnuxIntroLay dc.l DPLC_KnuxIntroLay -DPLCPtr_66682: dc.l ArtUnc_HPZKnucklesGrab +DPLCPtr_HPZKnucklesGrab: dc.l ArtUnc_HPZKnucklesGrab dc.l DPLC_HPZKnucklesGrab -DPLCPtr_6668A: dc.l ArtUnc_SSZKnucklesTired +DPLCPtr_SSZKnucklesTired: dc.l ArtUnc_SSZKnucklesTired dc.l DPLC_SSZKnucklesTired -DPLCPtr_66692: dc.l ArtUnc_SSZDeathEggCloud +DPLCPtr_SSZDeathEggCloud: dc.l ArtUnc_SSZDeathEggCloud dc.l DPLC_SSZDeathEggCloud byte_6669A: dc.b 7 dc.b 1 @@ -140140,7 +140140,7 @@ loc_6A4F4: loc_6A504: lea byte_6AE3B(pc),a1 jsr (Animate_RawNoSST).l - lea DPLCPtr_6ADE4(pc),a2 + lea DPLCPtr_HCZMinibossSplash(pc),a2 jsr (Perform_DPLC).l jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- @@ -141082,7 +141082,7 @@ ChildObjDat_6ADC4: dc.w $F430 dc.l loc_6A8EE dc.w $C30 -DPLCPtr_6ADE4: dc.l ArtUnc_DashDust +DPLCPtr_HCZMinibossSplash: dc.l ArtUnc_DashDust dc.l DPLC_HCZMinibossSplash byte_6ADEC: dc.b $16, 7 dc.b $17, 7 @@ -164766,7 +164766,7 @@ Obj_SSZEndBoss: lea sub_7D35A(pc),a4 bsr.w sub_7D312 bsr.w sub_7D2D8 - lea DPLCPtr_7D4D6(pc),a2 + lea DPLCPtr_MechaSonic(pc),a2 jsr (Perform_DPLC).l jmp (Draw_And_Touch_Sprite).l ; --------------------------------------------------------------------------- @@ -165237,7 +165237,7 @@ loc_7B81A: move.b 5(a0),d0 move.w off_7B838(pc,d0.w),d1 jsr off_7B838(pc,d1.w) - lea DPLCPtr_7D4D6(pc),a2 + lea DPLCPtr_MechaSonic(pc),a2 jsr (Perform_DPLC).l jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- @@ -165660,7 +165660,7 @@ Obj_SSZ2_Boss: lea loc_7D39E(pc),a4 bsr.w sub_7D312 bsr.w sub_7D2D8 - lea DPLCPtr_7D4D6(pc),a2 + lea DPLCPtr_MechaSonic(pc),a2 jsr (Perform_DPLC).l jmp (Draw_And_Touch_Sprite).l ; --------------------------------------------------------------------------- @@ -167218,7 +167218,7 @@ Obj_Difficulty_7CFA4: move.b 5(a0),d0 move.w off_7CFC2(pc,d0.w),d1 jsr off_7CFC2(pc,d1.w) - lea DPLCPtr_7D4D6(pc),a2 + lea DPLCPtr_MechaSonic(pc),a2 jsr (Perform_DPLC).l jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- @@ -167877,7 +167877,7 @@ ChildObjDat_7D4D0: dc.b 0 dc.b 2 dc.l loc_7CF14 -DPLCPtr_7D4D6: dc.l ArtUnc_MechaSonic +DPLCPtr_MechaSonic: dc.l ArtUnc_MechaSonic dc.l DPLC_MechaSonic byte_7D4DE: dc.b 3, 0 dc.b 4, 1 @@ -183053,7 +183053,7 @@ Obj_Rhinobot: move.b 5(a0),d0 move.w off_86E76(pc,d0.w),d1 jsr off_86E76(pc,d1.w) - lea DPLCPtr_87132(pc),a2 + lea DPLCPtr_AIZRhinobot(pc),a2 jsr Perform_DPLC(pc) jmp Sprite_CheckDeleteTouchSlotted(pc) ; --------------------------------------------------------------------------- @@ -183114,7 +183114,7 @@ loc_86EFC: move.b 5(a0),d0 move.w off_86F22(pc,d0.w),d1 jsr off_86F22(pc,d1.w) - lea DPLCPtr_87132(pc),a2 + lea DPLCPtr_AIZRhinobot(pc),a2 jsr Perform_DPLC(pc) jmp Child_Remember_Draw_Sprite(pc) ; --------------------------------------------------------------------------- @@ -183365,7 +183365,7 @@ ChildObjDat_8712A: dc.w 0 dc.l loc_86EFC dc.w $1008 -DPLCPtr_87132: dc.l ArtUnc_AIZRhinobot +DPLCPtr_AIZRhinobot: dc.l ArtUnc_AIZRhinobot dc.l DPLC_Rhinobot byte_8713A: dc.b 2, 4 dc.b 4, 5 @@ -185337,7 +185337,7 @@ Obj_BubblesBadnik: move.b #$86,$28(a0) loc_8835E: - lea PLCPtr_88436(pc),a2 + lea PLCPtr_BubblesBadnik(pc),a2 jsr Perform_DPLC(pc) jmp Sprite_CheckDeleteTouchSlotted(pc) ; --------------------------------------------------------------------------- @@ -185416,7 +185416,7 @@ ObjDat4_88424: dc.w 1 dc.b $18 dc.b 0 dc.b 0 -PLCPtr_88436: dc.l ArtUnc_BubblesBadnik +PLCPtr_BubblesBadnik: dc.l ArtUnc_BubblesBadnik dc.l DPLC_BubblesBadnik byte_8843E: dc.b 0, $F dc.b 0, $77 @@ -186603,7 +186603,7 @@ Obj_Clamer: move.b 5(a0),d0 move.w off_88FD4(pc,d0.w),d1 jsr off_88FD4(pc,d1.w) - lea PLCPtr_89168(pc),a2 + lea PLCPtr_Clamer(pc),a2 jsr Perform_DPLC(pc) jmp Sprite_CheckDeleteTouchSlotted(pc) ; --------------------------------------------------------------------------- @@ -186777,7 +186777,7 @@ ChildObjDat_89150: dc.b 2 dc.w $FE00 dc.w 0 -PLCPtr_89168: dc.l ArtUnc_Clamer +PLCPtr_Clamer: dc.l ArtUnc_Clamer dc.l DPLC_Clamer byte_89170: dc.b 1, 1 dc.b 0, $5F @@ -191250,7 +191250,7 @@ Obj_Penguinator: move.b 5(a0),d0 move.w off_8BAFE(pc,d0.w),d1 jsr off_8BAFE(pc,d1.w) - lea DPLCPtr_8BE02(pc),a2 + lea DPLCPtr_Penguinator(pc),a2 jsr Perform_DPLC(pc) jmp Sprite_CheckDeleteTouchSlotted(pc) ; --------------------------------------------------------------------------- @@ -191555,7 +191555,7 @@ ChildObjDat_8BDFA: dc.w 0 dc.l Obj_ICZSnowdust dc.w $C -DPLCPtr_8BE02: dc.l ArtUnc_Penguinator +DPLCPtr_Penguinator: dc.l ArtUnc_Penguinator dc.l DPLC_Penguinator byte_8BE0A: dc.b 7, $10 dc.b 0, 1 @@ -192868,7 +192868,7 @@ Obj_Flybot767: move.b 5(a0),d0 move.w off_8C988(pc,d0.w),d1 jsr off_8C988(pc,d1.w) - lea DPLCPtr_8CB22(pc),a2 + lea DPLCPtr_Flybot767(pc),a2 jsr Perform_DPLC(pc) jmp (Sprite_CheckDeleteTouchSlotted).l ; --------------------------------------------------------------------------- @@ -193014,7 +193014,7 @@ ObjDat4_8CB10: dc.w 2 dc.b $10 dc.b 0 dc.b $1A -DPLCPtr_8CB22: dc.l ArtUnc_Flybot767 +DPLCPtr_Flybot767: dc.l ArtUnc_Flybot767 dc.l DPLC_Flybot767 byte_8CB2A: dc.b 4 dc.b 0 @@ -194979,7 +194979,7 @@ Obj_Butterdroid: move.b 5(a0),d0 move.w off_8E0C2(pc,d0.w),d1 jsr off_8E0C2(pc,d1.w) - lea DPLCPtr_8E11C(pc),a2 + lea DPLCPtr_Butterdroid(pc),a2 jsr (Perform_DPLC).l jmp (Sprite_CheckDeleteTouchSlotted).l ; --------------------------------------------------------------------------- @@ -195018,7 +195018,7 @@ ObjDat4_8E10A: dc.w 3 dc.b $C dc.b 0 dc.b $17 -DPLCPtr_8E11C: dc.l ArtUnc_Butterdroid +DPLCPtr_Butterdroid: dc.l ArtUnc_Butterdroid dc.l DPLC_Butterdroid byte_8E124: dc.b 7 dc.b 0 @@ -195042,7 +195042,7 @@ Obj_Cluckoid: move.b 5(a0),d0 move.w off_8E1A2(pc,d0.w),d1 jsr off_8E1A2(pc,d1.w) - lea DPLCPtr_8E410(pc),a2 + lea DPLCPtr_Cluckoid(pc),a2 jsr (Perform_DPLC).l jmp (Sprite_CheckDeleteTouchSlotted).l ; --------------------------------------------------------------------------- @@ -195331,7 +195331,7 @@ ChildObjDat_8E402: ChildObjDat_8E40A: dc.w 0 dc.l loc_8E236 -DPLCPtr_8E410: dc.l ArtUnc_Cluckoid +DPLCPtr_Cluckoid: dc.l ArtUnc_Cluckoid dc.l DPLC_Cluckoid byte_8E418: dc.b 0 dc.b 7 @@ -196527,7 +196527,7 @@ loc_8F11E: move.b 5(a0),d0 move.w off_8F19A(pc,d0.w),d1 jsr off_8F19A(pc,d1.w) - lea DPLCPtr_8F67A(pc),a2 + lea DPLCPtr_SOZGhosts(pc),a2 jsr (Perform_DPLC).l tst.b 4(a0) bpl.s loc_8F16A @@ -196734,7 +196734,7 @@ loc_8F36E: loc_8F37A: jsr (Animate_RawMultiDelay).l - lea DPLCPtr_8F67A(pc),a2 + lea DPLCPtr_SOZGhosts(pc),a2 jsr (Perform_DPLC).l jmp (Draw_Sprite).l ; --------------------------------------------------------------------------- @@ -196816,7 +196816,7 @@ loc_8F45E: jsr off_8F488(pc,d1.w) tst.b $2C(a0) bne.s loc_8F482 - lea DPLCPtr_8F67A(pc),a2 + lea DPLCPtr_SOZGhosts(pc),a2 jsr (Perform_DPLC).l jmp (Sprite_CheckDeleteSlotted).l ; --------------------------------------------------------------------------- @@ -197034,7 +197034,7 @@ ChildObjDat_8F64E: ChildObjDat_8F674: dc.w 0 dc.l loc_8F11E -DPLCPtr_8F67A: dc.l ArtUnc_SOZGhosts +DPLCPtr_SOZGhosts: dc.l ArtUnc_SOZGhosts dc.l DPLC_SOZGhosts byte_8F682: dc.b $11, 3 dc.b $11, 3 @@ -197134,7 +197134,7 @@ loc_8F7A4: move.b 5(a0),d0 move.w off_8F7E0(pc,d0.w),d1 jsr off_8F7E0(pc,d1.w) - lea DPLCPtr_8FA38(pc),a2 + lea DPLCPtr_Fireworm(pc),a2 jsr (Perform_DPLC).l move.w $10(a0),d0 andi.w #-$80,d0 @@ -197375,7 +197375,7 @@ ChildObjDat_8FA30: dc.w 0 dc.l loc_8F95C dc.w $F2 -DPLCPtr_8FA38: dc.l ArtUnc_Fireworm +DPLCPtr_Fireworm: dc.l ArtUnc_Fireworm dc.l DPLC_Fireworm byte_8FA40: dc.b 1, 3 dc.b 1, 6 From ded21e3fe5f4dbafd6253af3974d415d61fc980e Mon Sep 17 00:00:00 2001 From: Vinny Date: Sun, 16 Jan 2022 22:25:40 +0300 Subject: [PATCH 60/72] Labeled and commented on PLC for Super Sonic's unused idle frame --- General/Sprites/Sonic/Sonic pattern load cues S3.asm | 10 +++++----- General/Sprites/Sonic/Sonic pattern load cues.asm | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/General/Sprites/Sonic/Sonic pattern load cues S3.asm b/General/Sprites/Sonic/Sonic pattern load cues S3.asm index f89033ff..dd1fbf43 100644 --- a/General/Sprites/Sonic/Sonic pattern load cues S3.asm +++ b/General/Sprites/Sonic/Sonic pattern load cues S3.asm @@ -404,18 +404,18 @@ PLC_SuperSonic: dc.w word_143290-PLC_SuperSonic dc.w word_143442-PLC_SuperSonic dc.w word_14344A-PLC_SuperSonic dc.w word_143454-PLC_SuperSonic - dc.w word_14344A-PLC_SuperSonic + dc.w word_14344A-PLC_SuperSonic ; word_14345E is the proper pointer here dc.w word_143454-PLC_SuperSonic dc.w word_14344A-PLC_SuperSonic - dc.w word_143454-PLC_SuperSonic + dc.w word_143454-PLC_SuperSonic ; word_14345E is the proper pointer here dc.w word_14344A-PLC_SuperSonic dc.w word_143454-PLC_SuperSonic - dc.w word_14344A-PLC_SuperSonic + dc.w word_14344A-PLC_SuperSonic ; word_14345E is the proper pointer here dc.w word_143214-PLC_SuperSonic dc.w word_14321E-PLC_SuperSonic dc.w word_143454-PLC_SuperSonic dc.w word_14344A-PLC_SuperSonic - dc.w word_143454-PLC_SuperSonic + dc.w word_143454-PLC_SuperSonic ; word_14345E is the proper pointer here dc.w word_143244-PLC_SuperSonic dc.w word_14324C-PLC_SuperSonic dc.w word_143254-PLC_SuperSonic @@ -1495,7 +1495,7 @@ word_143454: dc.w 4 dc.w $7FE0 dc.w $2FE8 dc.w $FEB - dc.w 3 +word_14345E: dc.w 3 ; unused PLCs for Super Sonic's third idle frame dc.w $8E01 dc.w $BFEC dc.w $FF8 diff --git a/General/Sprites/Sonic/Sonic pattern load cues.asm b/General/Sprites/Sonic/Sonic pattern load cues.asm index aee42033..ee6bf2e1 100644 --- a/General/Sprites/Sonic/Sonic pattern load cues.asm +++ b/General/Sprites/Sonic/Sonic pattern load cues.asm @@ -440,18 +440,18 @@ PLC_148378: dc.w word_148CC0-PLC_148378 dc.w word_148E72-PLC_148378 dc.w word_148E7A-PLC_148378 dc.w word_148E84-PLC_148378 - dc.w word_148E7A-PLC_148378 + dc.w word_148E7A-PLC_148378 ; word_148E8E is the proper pointer here dc.w word_148E84-PLC_148378 dc.w word_148E7A-PLC_148378 - dc.w word_148E84-PLC_148378 + dc.w word_148E84-PLC_148378 ; word_148E8E is the proper pointer here dc.w word_148E7A-PLC_148378 dc.w word_148E84-PLC_148378 - dc.w word_148E7A-PLC_148378 + dc.w word_148E7A-PLC_148378 ; word_148E8E is the proper pointer here dc.w word_148B6E-PLC_148378 dc.w word_148B78-PLC_148378 dc.w word_148E84-PLC_148378 dc.w word_148E7A-PLC_148378 - dc.w word_148E84-PLC_148378 + dc.w word_148E84-PLC_148378 ; word_148E8E is the proper pointer here dc.w word_148B9E-PLC_148378 dc.w word_148BA6-PLC_148378 dc.w word_148BAE-PLC_148378 @@ -1836,7 +1836,7 @@ word_148E84: dc.w 4 dc.w $7FE0 dc.w $2FE8 dc.w $FEB - dc.w 3 +word_148E8E: dc.w 3 ; unused PLCs for Super Sonic's third idle frame dc.w $8E01 dc.w $BFEC dc.w $FF8 From 3aee50b88a3e3fbaf1add786a3b11767f8efcdb5 Mon Sep 17 00:00:00 2001 From: Vinny Date: Mon, 17 Jan 2022 07:32:29 +0300 Subject: [PATCH 61/72] Labeled Knuckles' glide turn and ledge climb animations --- sonic3k.asm | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/sonic3k.asm b/sonic3k.asm index bca42c64..f376c39b 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -30881,7 +30881,7 @@ loc_16ED2: sub_16EFE: moveq #0,d0 move.b $25(a0),d0 - lea byte_16F3E(pc,d0.w),a1 + lea Knuckles_ClimbLedge_Frames(pc,d0.w),a1 move.b (a1)+,$22(a0) move.b (a1)+,d0 ext.w d0 @@ -30906,7 +30906,12 @@ loc_16F2A: ; End of function sub_16EFE ; --------------------------------------------------------------------------- -byte_16F3E: dc.b $BD, 3, $FD, 6, $BE, 8, $F6, 6, $BF, $F8, $F4, 6, $D2, 8, $FB, 6 +Knuckles_ClimbLedge_Frames: + ; mapping_frame, x_pos, y_pos, anim_frame_timer + dc.b $BD, 3, -3, 6 + dc.b $BE, 8, -10, 6 + dc.b $BF, -8, -12, 6 + dc.b $D2, 8, -5, 6 ; =============== S U B R O U T I N E ======================================= @@ -30960,7 +30965,7 @@ Knuckles_Set_Gliding_Animation: move.b $25(a0),d0 addi.b #$10,d0 lsr.w #5,d0 - move.b byte_16FEE(pc,d0.w),d1 + move.b RawAni_Knuckles_GlideTurn(pc,d0.w),d1 move.b d1,$22(a0) cmpi.b #$C4,d1 bne.s locret_16FEC @@ -30972,7 +30977,7 @@ locret_16FEC: ; End of function Knuckles_Set_Gliding_Animation ; --------------------------------------------------------------------------- -byte_16FEE: dc.b $C0 +RawAni_Knuckles_GlideTurn: dc.b $C0 dc.b $C1 dc.b $C2 dc.b $C3 From e34b46bf9ee0f2e84054d49f85588712515a564b Mon Sep 17 00:00:00 2001 From: MainMemory Date: Tue, 15 Feb 2022 16:47:43 -0600 Subject: [PATCH 62/72] Report correct ROM size in Sonic3_Complete mode. --- sonic3k.asm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sonic3k.asm b/sonic3k.asm index f376c39b..f04506b2 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -204228,12 +204228,13 @@ SSLayoutData2_Kos: even endif -EndOfROM: if Sonic3_Complete=0 +EndOfROM: org $200000 ; needed if you want to combine the ROM with Sonic 3 or Sonic 2 and the UPMEM include "Lockon S3/LockOn Pointers.asm" else include "Lockon S3/LockOn Data.asm" +EndOfROM: endif END From 788e35cd9e822757c9511f079df3bedef48048b2 Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Sun, 20 Feb 2022 16:54:07 +0000 Subject: [PATCH 63/72] Fix more constant crap --- s3.asm | 4 ++-- sonic3k.asm | 16 ++++++++-------- sonic3k.constants.asm | 9 ++++----- 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/s3.asm b/s3.asm index 0f008ae0..80befc93 100644 --- a/s3.asm +++ b/s3.asm @@ -97307,7 +97307,7 @@ loc_4FE2E: move.l #loc_4FE6A,(a0) tst.b 4(a0) bpl.s loc_4FE42 - moveq #signextendB(sfx_Lazer),d0 + moveq #signextendB(sfx_Laser),d0 jsr (Play_SFX).l loc_4FE42: @@ -114838,7 +114838,7 @@ loc_5A03C: jsr (SetUp_ObjAttributes2).l move.l #loc_5A05C,(a0) move.l #Go_Delete_Sprite,$34(a0) - moveq #signextendB(sfx_Lazer),d0 + moveq #signextendB(sfx_Laser),d0 jsr (Play_SFX).l loc_5A05C: diff --git a/sonic3k.asm b/sonic3k.asm index f04506b2..b3d96b0d 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -148869,7 +148869,7 @@ loc_701EE: addi.w #$3C,$14(a0) move.w #$1F,$2E(a0) move.l #loc_70262,$34(a0) - moveq #signextendB(sfx_BossLazer),d0 + moveq #signextendB(sfx_BossLaser),d0 jsr (Play_SFX).l rts ; --------------------------------------------------------------------------- @@ -153206,7 +153206,7 @@ loc_732BA: move.l #loc_732F6,(a0) tst.b 4(a0) bpl.s loc_732CE - moveq #signextendB(sfx_Lazer),d0 + moveq #signextendB(sfx_Laser),d0 jsr (Play_SFX).l loc_732CE: @@ -159997,7 +159997,7 @@ loc_77E4A: loc_77E56: move.l #loc_77E74,(a0) move.w #8,$2E(a0) - moveq #signextendB(sfx_Lazer),d0 + moveq #signextendB(sfx_Laser),d0 jsr (Play_SFX).l lea ChildObjDat_7833A(pc),a2 jsr (CreateChild1_Normal).l @@ -164101,7 +164101,7 @@ loc_7ABCE: loc_7ABE2: move.w d0,$18(a0) - moveq #signextendB(sfx_Lazer),d0 + moveq #signextendB(sfx_Laser),d0 jsr (Play_SFX).l loc_7ABEE: @@ -166527,7 +166527,7 @@ loc_7C756: loc_7C764: move.l #loc_7C77A,(a0) - moveq #signextendB(sfx_BossLazer),d0 + moveq #signextendB(sfx_BossLaser),d0 jsr (Play_SFX).l moveq #2,d5 jmp (loc_861C0).l @@ -192767,7 +192767,7 @@ loc_8C8C6: jsr (SetUp_ObjAttributes2).l move.l #loc_8C8E6,(a0) move.l #Go_Delete_Sprite,$34(a0) - moveq #signextendB(sfx_Lazer),d0 + moveq #signextendB(sfx_Laser),d0 jsr (Play_SFX).l loc_8C8E6: @@ -199030,7 +199030,7 @@ loc_90CF4: move.l #loc_90D30,(a0) move.w #$3F,$2E(a0) move.w #8,(Screen_shake_flag).w - moveq #signextendB(sfx_BossLazer),d0 + moveq #signextendB(sfx_BossLaser),d0 jsr (Play_SFX).l loc_90D20: @@ -199612,7 +199612,7 @@ loc_91778: loc_917A2: move.w d0,$18(a0) - moveq #signextendB(sfx_Lazer),d0 + moveq #signextendB(sfx_Laser),d0 jsr (Play_SFX).l loc_917AE: diff --git a/sonic3k.constants.asm b/sonic3k.constants.asm index 4e6d09da..01f6990d 100644 --- a/sonic3k.constants.asm +++ b/sonic3k.constants.asm @@ -808,8 +808,7 @@ Slot_machine_peppermint_frame_timer ds.b 1 Slot_machine_peppermint_frame ds.b 1 Ring_spill_anim_counter ds.b 1 Ring_spill_anim_frame ds.b 1 -Ring_spill_anim_accum ds.b 1 - ds.b 1 ; unused +Ring_spill_anim_accum ds.w 1 AIZ_vine_angle ds.w 1 ; controls the angle of AIZ giant vines ds.w 1 ; unused _unkFEBE ds.b 1 ; unused @@ -935,7 +934,7 @@ Debug_mode_cheat_counter := * ; S3 uses a different address Competition_mode := * ; S3 uses a different address ds.w 1 P1_character := * ; S3 uses a different address - ds.b 1 ; 0 := Sonic, 1 := Tails, 2 := Knuckles + ds.b 1 ; 0 = Sonic, 1 = Tails, 2 = Knuckles P2_character := * ; S3 uses a different address ds.b 1 ds.l 1 ; unused @@ -1158,7 +1157,7 @@ sfx_BossActivate ds.b 1 ; $50 sfx_MissileThrow ds.b 1 ; $51 sfx_SpikeMove ds.b 1 ; $52 sfx_Charging ds.b 1 ; $53 -sfx_BossLazer ds.b 1 ; $54 +sfx_BossLaser ds.b 1 ; $54 sfx_BlockConveyor ds.b 1 ; $55 sfx_FlipBridge ds.b 1 ; $56 sfx_Geyser ds.b 1 ; $57 @@ -1168,7 +1167,7 @@ sfx_UnknownCharge ds.b 1 ; $5A sfx_Switch ds.b 1 ; $5B sfx_MechaSpark ds.b 1 ; $5C sfx_FloorThump ds.b 1 ; $5D -sfx_Lazer ds.b 1 ; $5E +sfx_Laser ds.b 1 ; $5E sfx_Crash ds.b 1 ; $5F sfx_BossZoom ds.b 1 ; $60 sfx_BossHitFloor ds.b 1 ; $61 From 7b5416d4c060615f3c7e4fbbc058fcd3f0175fa1 Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Sun, 20 Feb 2022 16:55:20 +0000 Subject: [PATCH 64/72] Add VRAM constants for explosion/star post --- s3.asm | 36 ++++++++++++++++++------------------ sonic3k.asm | 42 +++++++++++++++++++++--------------------- sonic3k.constants.asm | 2 ++ 3 files changed, 41 insertions(+), 39 deletions(-) diff --git a/s3.asm b/s3.asm index 80befc93..e426e6df 100644 --- a/s3.asm +++ b/s3.asm @@ -32025,7 +32025,7 @@ loc_1AE0E: move.w #0,d2 jsr (Queue_Kos_Module).l lea (ArtKosM_LBZ2DeathEgg2_8x8).l,a1 - move.w #$B400,d2 + move.w #tiles_to_bytes(ArtTile_Explosion),d2 jsr (Queue_Kos_Module).l locret_1AE64: @@ -33986,7 +33986,7 @@ loc_1C24C: move.l #Map_Explosion,$C(a0) move.w $A(a0),d0 andi.w #$8000,d0 - ori.w #$5A0,d0 + ori.w #ArtTile_Explosion,d0 move.w d0,$A(a0) move.b #4,4(a0) move.w #$80,8(a0) @@ -34013,7 +34013,7 @@ loc_1C2BA: Obj_FireShield_Dissipate: move.l #Map_Explosion,$C(a0) - move.w #$5A0,$A(a0) + move.w #ArtTile_Explosion,$A(a0) move.b #4,4(a0) move.w #$280,8(a0) move.b #$C,7(a0) @@ -34037,7 +34037,7 @@ loc_1C318: loc_1C31E: move.l #Map_Explosion,$C(a0) - move.w #$85A0,$A(a0) + move.w #make_art_tile(ArtTile_Explosion,0,1),$A(a0) move.b #4,4(a0) move.w #$100,8(a0) move.b #$C,7(a0) @@ -52147,7 +52147,7 @@ sub_2C2DC: Obj_EnemyScore: move.l #Map_EnemyScore,$C(a0) - move.w #$85E4,$A(a0) + move.w #make_art_tile(ArtTile_StarPost,0,1),$A(a0) move.b #4,4(a0) move.w #$80,8(a0) move.b #8,7(a0) @@ -52185,7 +52185,7 @@ off_2C42C: dc.w loc_2C436-off_2C42C loc_2C436: addq.b #2,5(a0) move.l #Map_StarPost,$C(a0) - move.w #$5EC,$A(a0) + move.w #ArtTile_StarPost+8,$A(a0) move.b #4,4(a0) move.b #8,7(a0) move.b #$28,6(a0) @@ -52449,7 +52449,7 @@ loc_2C842: bne.s locret_2C8AC move.l (a0),(a1) move.l #Map_StarpostStars,$C(a1) - move.w #$5EC,$A(a1) + move.w #ArtTile_StarPost+8,$A(a1) move.b #4,4(a1) move.b #8,5(a1) move.w $10(a0),d0 @@ -53026,7 +53026,7 @@ loc_2CE4C: move.w #$B000,d2 tst.b (Apparent_act).w beq.s loc_2CE5A - move.w #$B400,d2 + move.w #tiles_to_bytes(ArtTile_Explosion),d2 loc_2CE5A: jsr (Queue_Kos_Module).l @@ -79523,7 +79523,7 @@ loc_4443C: ; --------------------------------------------------------------------------- ObjSlot_SSEntryRing: dc.w 0 - dc.w make_art_tile($5A0,1,0) + dc.w make_art_tile(ArtTile_Explosion,1,0) dc.w $40 dc.w 4 dc.l Map_SSEntryRing @@ -80962,14 +80962,14 @@ ObjDat3_456FA: dc.l Map_LBZKnuxBomb dc.b 0 dc.b 0 ObjDat3_45706: dc.l Map_LBZKnuxPillar - dc.w $45A0 + dc.w make_art_tile(ArtTile_Explosion,2,0) dc.w $280 dc.b $10 dc.b $10 dc.b 0 dc.b 0 ObjDat3_45712: dc.l Map_LBZKnuxPillar - dc.w $45A0 + dc.w make_art_tile(ArtTile_Explosion,2,0) dc.w $280 dc.b $10 dc.b $80 @@ -87615,7 +87615,7 @@ ObjDat3_49B9C: dc.l Map_HCZEndBoss dc.b 8 dc.b 0 ObjDat3_49BA8: dc.l Map_Explosion - dc.w $85A0 + dc.w make_art_tile(ArtTile_Explosion,0,1) dc.w $80 dc.b $C dc.b $C @@ -101279,7 +101279,7 @@ PLC_Monitors: dc.w 0 PLC_AnimalsAndExplosion: dc.w 2 dc.l ArtNem_Explosion - dc.w $B400 + dc.w tiles_to_bytes(ArtTile_Explosion) dc.l ArtNem_Squirrel dc.w $B000 dc.l ArtNem_BlueFlicky @@ -101290,7 +101290,7 @@ PLC_BossExplosion: dc.w $A000 PLC_Explosion: dc.w 0 dc.l ArtNem_Explosion - dc.w $B400 + dc.w tiles_to_bytes(ArtTile_Explosion) PLC_EggCapsule: dc.w 0 dc.l ArtNem_EggCapsule dc.w $9280 @@ -116079,7 +116079,7 @@ Offs_PLC: dc.w PLC_00-Offs_PLC PLC_00: plrlistheader plreq $7D4, ArtNem_SonicLifeIcon plreq ArtTile_Ring, ArtNem_RingHUDText - plreq $5E4, ArtNem_EnemyPtsStarPost + plreq ArtTile_StarPost, ArtNem_EnemyPtsStarPost plreq ArtTile_Monitors, ArtNem_Monitors PLC_00_End @@ -116087,11 +116087,11 @@ PLC_01: plrlistheader plreq $7D4, ArtNem_SonicLifeIcon plreq ArtTile_Monitors, ArtNem_Monitors plreq ArtTile_Ring, ArtNem_RingHUDText - plreq $5E4, ArtNem_EnemyPtsStarPost + plreq ArtTile_StarPost, ArtNem_EnemyPtsStarPost PLC_01_End PLC_02: plrlistheader - plreq $5A0, ArtNem_Explosion + plreq ArtTile_Explosion, ArtNem_Explosion plreq $580, ArtNem_Squirrel plreq $592, ArtNem_BlueFlicky PLC_02_End @@ -116118,7 +116118,7 @@ PLC_07: plrlistheader plreq $7D4, ArtNem_TailsLifeIcon plreq ArtTile_Monitors, ArtNem_Monitors plreq ArtTile_Ring, ArtNem_RingHUDText - plreq $5E4, ArtNem_EnemyPtsStarPost + plreq ArtTile_StarPost, ArtNem_EnemyPtsStarPost PLC_07_End PLC_08: plrlistheader diff --git a/sonic3k.asm b/sonic3k.asm index b3d96b0d..231eedba 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -38788,7 +38788,7 @@ loc_1CA52: move.w #0,d2 jsr (Queue_Kos_Module).l lea (ArtKosM_LBZ2DeathEgg2_8x8).l,a1 - move.w #$B400,d2 + move.w #tiles_to_bytes(ArtTile_Explosion),d2 jsr (Queue_Kos_Module).l locret_1CAA8: @@ -41454,7 +41454,7 @@ loc_1E626: move.l #Map_Explosion,$C(a0) move.w $A(a0),d0 andi.w #$8000,d0 - ori.w #$5A0,d0 + ori.w #ArtTile_Explosion,d0 move.w d0,$A(a0) move.b #4,4(a0) move.w #$80,8(a0) @@ -41479,7 +41479,7 @@ loc_1E688: Obj_FireShield_Dissipate: move.l #Map_Explosion,$C(a0) - move.w #$5A0,$A(a0) + move.w #ArtTile_Explosion,$A(a0) move.b #4,4(a0) move.w #$280,8(a0) move.b #$C,7(a0) @@ -41503,7 +41503,7 @@ loc_1E6E6: loc_1E6EC: move.l #Map_Explosion,$C(a0) - move.w #$85A0,$A(a0) + move.w #make_art_tile(ArtTile_Explosion,0,1),$A(a0) move.b #4,4(a0) move.w #$100,8(a0) move.b #$C,7(a0) @@ -61053,7 +61053,7 @@ sub_2CCD2: Obj_EnemyScore: move.l #Map_EnemyScore,$C(a0) - move.w #$85E4,$A(a0) + move.w #make_art_tile(ArtTile_StarPost,0,1),$A(a0) move.b #4,4(a0) move.w #$80,8(a0) move.b #8,7(a0) @@ -61237,7 +61237,7 @@ off_2CFB6: dc.w loc_2CFC0-off_2CFB6 loc_2CFC0: addq.b #2,5(a0) move.l #Map_StarPost,$C(a0) - move.w #$5EC,$A(a0) + move.w #ArtTile_StarPost+8,$A(a0) move.b #4,4(a0) move.b #8,7(a0) move.b #$28,6(a0) @@ -61503,7 +61503,7 @@ loc_2D3CC: bne.s loc_2D436 move.l (a0),(a1) move.l #Map_StarpostStars,$C(a1) - move.w #$5EC,$A(a1) + move.w #ArtTile_StarPost+8,$A(a1) move.b #4,4(a1) move.b #8,5(a1) move.w $10(a0),d0 @@ -62211,7 +62211,7 @@ loc_2DB58: move.w #$AF00,d2 tst.w $2C(a0) beq.s loc_2DB66 - move.w #$B400,d2 + move.w #tiles_to_bytes(ArtTile_Explosion),d2 loc_2DB66: jsr (Queue_Kos_Module).l ; Load character name graphics @@ -128604,7 +128604,7 @@ loc_6196A: ; --------------------------------------------------------------------------- ObjSlot_SSEntryRing: dc.w 0 - dc.w make_art_tile($5A0,1,0) + dc.w make_art_tile(ArtTile_Explosion,1,0) dc.w $40 dc.w 4 dc.l Map_SSEntryRing @@ -134936,14 +134936,14 @@ ObjDat3_6640E: dc.l Map_LBZKnuxBomb dc.b 0 dc.b 0 ObjDat3_6641A: dc.l Map_LBZKnuxPillar - dc.w $45A0 + dc.w make_art_tile(ArtTile_Explosion,2,0) dc.w $280 dc.b $10 dc.b $10 dc.b 0 dc.b 0 ObjDat3_66426: dc.l Map_LBZKnuxPillar - dc.w $45A0 + dc.w make_art_tile(ArtTile_Explosion,2,0) dc.w $280 dc.b $10 dc.b $80 @@ -142578,7 +142578,7 @@ ObjDat3_6BD5A: dc.l Map_HCZEndBoss dc.b 8 dc.b 0 ObjDat3_6BD66: dc.l Map_Explosion - dc.w $85A0 + dc.w make_art_tile(ArtTile_Explosion,0,1) dc.w $80 dc.b $C dc.b $C @@ -158350,7 +158350,7 @@ PLC_76A04: dc.w 1 dc.l ArtNem_EggCapsule dc.w $9280 dc.l ArtNem_Explosion - dc.w $B400 + dc.w tiles_to_bytes(ArtTile_Explosion) ; --------------------------------------------------------------------------- Obj_SOZMiniboss: @@ -177303,7 +177303,7 @@ PLC_Monitors: dc.w 0 dc.w tiles_to_bytes(ArtTile_Monitors) dc.w 2 dc.l ArtNem_Explosion - dc.w $B400 + dc.w tiles_to_bytes(ArtTile_Explosion) dc.l ArtNem_Squirrel dc.w $B000 dc.l ArtNem_BlueFlicky @@ -177314,7 +177314,7 @@ PLC_BossExplosion: dc.w $A000 PLC_Explosion: dc.w 0 dc.l ArtNem_Explosion - dc.w $B400 + dc.w tiles_to_bytes(ArtTile_Explosion) PLC_EggCapsule: dc.w 0 dc.l ArtNem_EggCapsule dc.w $9280 @@ -200587,7 +200587,7 @@ Offs_PLC: dc.w PLC_00-Offs_PLC ; Unused PLC_00: plrlistheader plreq $7D4, ArtNem_SonicLifeIcon ; Unused evidently plreq ArtTile_Ring, ArtNem_RingHUDText - plreq $5E4, ArtNem_EnemyPtsStarPost + plreq ArtTile_StarPost, ArtNem_EnemyPtsStarPost plreq ArtTile_Monitors, ArtNem_Monitors PLC_00_End @@ -200595,11 +200595,11 @@ PLC_01: plrlistheader plreq $7D4, ArtNem_SonicLifeIcon plreq ArtTile_Monitors, ArtNem_Monitors plreq ArtTile_Ring, ArtNem_RingHUDText - plreq $5E4, ArtNem_EnemyPtsStarPost + plreq ArtTile_StarPost, ArtNem_EnemyPtsStarPost PLC_01_End PLC_02: plrlistheader - plreq $5A0, ArtNem_Explosion + plreq ArtTile_Explosion, ArtNem_Explosion plreq $580, ArtNem_Squirrel plreq $592, ArtNem_BlueFlicky PLC_02_End @@ -200616,7 +200616,7 @@ PLC_05: plrlistheader plreq $7D4, ArtNem_KnucklesLifeIcon plreq ArtTile_Monitors, ArtNem_Monitors plreq ArtTile_Ring, ArtNem_RingHUDText - plreq $5E4, ArtNem_EnemyPtsStarPost + plreq ArtTile_StarPost, ArtNem_EnemyPtsStarPost PLC_05_End PLC_06: plrlistheader @@ -200629,7 +200629,7 @@ PLC_07: plrlistheader plreq $7D4, ArtNem_TailsLifeIcon plreq ArtTile_Monitors, ArtNem_Monitors plreq ArtTile_Ring, ArtNem_RingHUDText - plreq $5E4, ArtNem_EnemyPtsStarPost + plreq ArtTile_StarPost, ArtNem_EnemyPtsStarPost PLC_07_End PLC_08: plrlistheader @@ -200891,7 +200891,7 @@ PLC_52: plrlistheader plreq $7D4, ArtNem_MilesLifeIcon plreq ArtTile_Monitors, ArtNem_Monitors plreq ArtTile_Ring, ArtNem_RingHUDText - plreq $5E4, ArtNem_EnemyPtsStarPost + plreq ArtTile_StarPost, ArtNem_EnemyPtsStarPost PLC_52_End PLC_53_Through_5A: plrlistheader diff --git a/sonic3k.constants.asm b/sonic3k.constants.asm index 01f6990d..7c4a73ac 100644 --- a/sonic3k.constants.asm +++ b/sonic3k.constants.asm @@ -1036,6 +1036,8 @@ ArtTile_ArtKos_Save_Extra = $0454 ; Universal (used on all standard levels). ArtTile_Monitors = $04C4 ArtTile_CutsceneKnux = $04DA +ArtTile_Explosion = $05A0 +ArtTile_StarPost = $05E4 ArtTile_Player_1 = $0680 ArtTile_Player_2 = $06A0 ArtTile_Player_2_Tail = $06B0 From e242ab1c2be36681384a76ec2ab74c69bbfc2155 Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Sun, 20 Feb 2022 16:56:07 +0000 Subject: [PATCH 65/72] Rename player DPLC files --- ...tern load cues.asm => DPLC - Knuckles.asm} | 0 ...n load cues S3.asm => DPLC - Sonic S3.asm} | 0 ...pattern load cues.asm => DPLC - Sonic.asm} | 0 ...n load cues S3.asm => DPLC - Tails S3.asm} | 0 ...pattern load cues.asm => DPLC - Tails.asm} | 0 .../Tails/Tails tails pattern load cues.asm | 134 ------------------ Lockon S3/LockOn Data.asm | 2 +- SonLVL INI Files/Common/CutsceneKnuckles.cs | 2 +- SonLVL INI Files/Common/KnucklesStartFall.xml | 2 +- SonLVL INI Files/Common/KnucklesStartSpin.xml | 2 +- SonLVL INI Files/Common/KnucklesStartWalk.xml | 2 +- SonLVL INI Files/Common/Main.ini | 4 +- SonLVL INI Files/Common/SonicStartFall.xml | 2 +- SonLVL INI Files/Common/SonicStartSpin.xml | 2 +- SonLVL INI Files/Common/SonicStartTails.xml | 6 +- SonLVL INI Files/Common/SonicStartWalk.xml | 2 +- SonLVL INI Files/HCZ/1.ini | 2 +- SonLVL INI Files/HPZ/3.ini | 4 +- SonLVL INI Files/LBZ/1.ini | 4 +- SonLVL INI Files/LRZ/CutsceneTrigger.cs | 2 +- s3.asm | 6 +- sonic3k.asm | 6 +- 22 files changed, 25 insertions(+), 159 deletions(-) rename General/Sprites/Knuckles/{Knuckles pattern load cues.asm => DPLC - Knuckles.asm} (100%) rename General/Sprites/Sonic/{Sonic pattern load cues S3.asm => DPLC - Sonic S3.asm} (100%) rename General/Sprites/Sonic/{Sonic pattern load cues.asm => DPLC - Sonic.asm} (100%) rename General/Sprites/Tails/{Tails pattern load cues S3.asm => DPLC - Tails S3.asm} (100%) rename General/Sprites/Tails/{Tails pattern load cues.asm => DPLC - Tails.asm} (100%) delete mode 100644 General/Sprites/Tails/Tails tails pattern load cues.asm diff --git a/General/Sprites/Knuckles/Knuckles pattern load cues.asm b/General/Sprites/Knuckles/DPLC - Knuckles.asm similarity index 100% rename from General/Sprites/Knuckles/Knuckles pattern load cues.asm rename to General/Sprites/Knuckles/DPLC - Knuckles.asm diff --git a/General/Sprites/Sonic/Sonic pattern load cues S3.asm b/General/Sprites/Sonic/DPLC - Sonic S3.asm similarity index 100% rename from General/Sprites/Sonic/Sonic pattern load cues S3.asm rename to General/Sprites/Sonic/DPLC - Sonic S3.asm diff --git a/General/Sprites/Sonic/Sonic pattern load cues.asm b/General/Sprites/Sonic/DPLC - Sonic.asm similarity index 100% rename from General/Sprites/Sonic/Sonic pattern load cues.asm rename to General/Sprites/Sonic/DPLC - Sonic.asm diff --git a/General/Sprites/Tails/Tails pattern load cues S3.asm b/General/Sprites/Tails/DPLC - Tails S3.asm similarity index 100% rename from General/Sprites/Tails/Tails pattern load cues S3.asm rename to General/Sprites/Tails/DPLC - Tails S3.asm diff --git a/General/Sprites/Tails/Tails pattern load cues.asm b/General/Sprites/Tails/DPLC - Tails.asm similarity index 100% rename from General/Sprites/Tails/Tails pattern load cues.asm rename to General/Sprites/Tails/DPLC - Tails.asm diff --git a/General/Sprites/Tails/Tails tails pattern load cues.asm b/General/Sprites/Tails/Tails tails pattern load cues.asm deleted file mode 100644 index 2abd62e7..00000000 --- a/General/Sprites/Tails/Tails tails pattern load cues.asm +++ /dev/null @@ -1,134 +0,0 @@ -PLC_344D74: dc.w Frame_344DCE-PLC_344D74 ; ... - dc.w Frame_344DD0-PLC_344D74 - dc.w Frame_344DD4-PLC_344D74 - dc.w Frame_344DD8-PLC_344D74 - dc.w Frame_344DDC-PLC_344D74 - dc.w Frame_344DE0-PLC_344D74 - dc.w Frame_344DE4-PLC_344D74 - dc.w Frame_344DE8-PLC_344D74 - dc.w Frame_344DEC-PLC_344D74 - dc.w Frame_344DF0-PLC_344D74 - dc.w Frame_344DF4-PLC_344D74 - dc.w Frame_344DF8-PLC_344D74 - dc.w Frame_344DFC-PLC_344D74 - dc.w Frame_344E00-PLC_344D74 - dc.w Frame_344E04-PLC_344D74 - dc.w Frame_344E08-PLC_344D74 - dc.w Frame_344E0C-PLC_344D74 - dc.w Frame_344E10-PLC_344D74 - dc.w Frame_344E14-PLC_344D74 - dc.w Frame_344E18-PLC_344D74 - dc.w Frame_344E1C-PLC_344D74 - dc.w Frame_344E20-PLC_344D74 - dc.w Frame_344E24-PLC_344D74 - dc.w Frame_344E28-PLC_344D74 - dc.w Frame_344E2C-PLC_344D74 - dc.w Frame_344E30-PLC_344D74 - dc.w Frame_344E34-PLC_344D74 - dc.w Frame_344E38-PLC_344D74 - dc.w Frame_344E3C-PLC_344D74 - dc.w Frame_344E40-PLC_344D74 - dc.w Frame_344E44-PLC_344D74 - dc.w Frame_344E48-PLC_344D74 - dc.w Frame_344E4C-PLC_344D74 - dc.w Frame_344E50-PLC_344D74 - dc.w Frame_344E54-PLC_344D74 - dc.w Frame_344E58-PLC_344D74 - dc.w Frame_344E5C-PLC_344D74 - dc.w Frame_344E60-PLC_344D74 - dc.w Frame_344E64-PLC_344D74 - dc.w Frame_344E68-PLC_344D74 - dc.w Frame_344E6C-PLC_344D74 - dc.w Frame_344E70-PLC_344D74 - dc.w Frame_344E74-PLC_344D74 - dc.w Frame_344E78-PLC_344D74 - dc.w Frame_344E7C-PLC_344D74 -Frame_344DCE: dc.w 0 -Frame_344DD0: dc.w 1 - dc.w $5000 -Frame_344DD4: dc.w 1 - dc.w $5006 -Frame_344DD8: dc.w 1 - dc.w $500C -Frame_344DDC: dc.w 1 - dc.w $5012 -Frame_344DE0: dc.w 1 - dc.w $5000 -Frame_344DE4: dc.w 1 - dc.w $5006 -Frame_344DE8: dc.w 1 - dc.w $500C -Frame_344DEC: dc.w 1 - dc.w $5012 -Frame_344DF0: dc.w 1 - dc.w $5030 -Frame_344DF4: dc.w 1 - dc.w $5036 -Frame_344DF8: dc.w 1 - dc.w $503C -Frame_344DFC: dc.w 1 - dc.w $5042 -Frame_344E00: dc.w 1 - dc.w $5018 -Frame_344E04: dc.w 1 - dc.w $501E -Frame_344E08: dc.w 1 - dc.w $5024 -Frame_344E0C: dc.w 1 - dc.w $502A -Frame_344E10: dc.w 1 - dc.w $5048 -Frame_344E14: dc.w 1 - dc.w $504E -Frame_344E18: dc.w 1 - dc.w $5054 -Frame_344E1C: dc.w 1 - dc.w $505A -Frame_344E20: dc.w 1 - dc.w $5060 -Frame_344E24: dc.w 1 - dc.w $8066 -Frame_344E28: dc.w 1 - dc.w $806F -Frame_344E2C: dc.w 1 - dc.w $5078 -Frame_344E30: dc.w 1 - dc.w $807E -Frame_344E34: dc.w 1 - dc.w $5000 -Frame_344E38: dc.w 1 - dc.w $5006 -Frame_344E3C: dc.w 1 - dc.w $500C -Frame_344E40: dc.w 1 - dc.w $5012 -Frame_344E44: dc.w 1 - dc.w $5000 -Frame_344E48: dc.w 1 - dc.w $5006 -Frame_344E4C: dc.w 1 - dc.w $500C -Frame_344E50: dc.w 1 - dc.w $5012 -Frame_344E54: dc.w 1 - dc.w $5060 -Frame_344E58: dc.w 1 - dc.w $8066 -Frame_344E5C: dc.w 1 - dc.w $806F -Frame_344E60: dc.w 1 - dc.w $5078 -Frame_344E64: dc.w 1 - dc.w $807E -Frame_344E68: dc.w 1 - dc.w $3087 -Frame_344E6C: dc.w 1 - dc.w $3087 -Frame_344E70: dc.w 1 - dc.w $5000 -Frame_344E74: dc.w 1 - dc.w $5006 -Frame_344E78: dc.w 1 - dc.w $500C -Frame_344E7C: dc.w 1 - dc.w $5012 diff --git a/Lockon S3/LockOn Data.asm b/Lockon S3/LockOn Data.asm index 164d9a1c..9fe4943d 100644 --- a/Lockon S3/LockOn Data.asm +++ b/Lockon S3/LockOn Data.asm @@ -585,7 +585,7 @@ ArtUnc_Knuckles2P: Map_Tails_Tail: include "General/Sprites/Tails/Map - Tails tails.asm" PLC_Tails_Tail: - include "General/Sprites/Tails/Tails tails pattern load cues.asm" + include "General/Sprites/Tails/DPLC - Tails tails.asm" ICZSnowboard_Slope1: binclude "Levels/ICZ/Misc/ICZ Snowboard Slope 1.bin" diff --git a/SonLVL INI Files/Common/CutsceneKnuckles.cs b/SonLVL INI Files/Common/CutsceneKnuckles.cs index 8edfd671..21221cd3 100644 --- a/SonLVL INI Files/Common/CutsceneKnuckles.cs +++ b/SonLVL INI Files/Common/CutsceneKnuckles.cs @@ -182,7 +182,7 @@ protected void BuildSpritesSubtypes(int startpal, bool s3, string girderart = ". art = LevelData.ReadFile("../General/Sprites/Knuckles/Art/Knuckles.bin", CompressionType.Uncompressed); map = LevelData.ASMToBin("../General/Sprites/Knuckles/Map - Knuckles.asm", EngineVersion.S3K); - plc = LevelData.ASMToBin("../General/Sprites/Knuckles/Knuckles pattern load cues.asm", EngineVersion.S2); + plc = LevelData.ASMToBin("../General/Sprites/Knuckles/DPLC - Knuckles.asm", EngineVersion.S2); subtypeNames[9] = "Lava Reef 2"; sprites[10] = BuildFlippedSprites(ObjectHelper.MapDPLCToBmp( diff --git a/SonLVL INI Files/Common/KnucklesStartFall.xml b/SonLVL INI Files/Common/KnucklesStartFall.xml index 2a79e858..a6349791 100644 --- a/SonLVL INI Files/Common/KnucklesStartFall.xml +++ b/SonLVL INI Files/Common/KnucklesStartFall.xml @@ -3,6 +3,6 @@ + dplcfile="../General/Sprites/Knuckles/DPLC - Knuckles.asm" dplcver="S2" frame="140" startpal="4" /> \ No newline at end of file diff --git a/SonLVL INI Files/Common/KnucklesStartSpin.xml b/SonLVL INI Files/Common/KnucklesStartSpin.xml index 27907780..31dfb7ce 100644 --- a/SonLVL INI Files/Common/KnucklesStartSpin.xml +++ b/SonLVL INI Files/Common/KnucklesStartSpin.xml @@ -3,6 +3,6 @@ + dplcfile="../General/Sprites/Knuckles/DPLC - Knuckles.asm" dplcver="S2" frame="150" startpal="4" /> \ No newline at end of file diff --git a/SonLVL INI Files/Common/KnucklesStartWalk.xml b/SonLVL INI Files/Common/KnucklesStartWalk.xml index 2eb2e58d..275f149b 100644 --- a/SonLVL INI Files/Common/KnucklesStartWalk.xml +++ b/SonLVL INI Files/Common/KnucklesStartWalk.xml @@ -3,6 +3,6 @@ + dplcfile="../General/Sprites/Knuckles/DPLC - Knuckles.asm" dplcver="S2" frame="5" startpal="4" /> \ No newline at end of file diff --git a/SonLVL INI Files/Common/Main.ini b/SonLVL INI Files/Common/Main.ini index 080a5b7e..351e6219 100644 --- a/SonLVL INI Files/Common/Main.ini +++ b/SonLVL INI Files/Common/Main.ini @@ -2,13 +2,13 @@ art=../General/Sprites/Sonic/Art/Sonic.bin artcmp=Uncompressed mapasm=../General/Sprites/Sonic/Map - Sonic.asm -dplcasm=../General/Sprites/Sonic/Sonic pattern load cues.asm +dplcasm=../General/Sprites/Sonic/DPLC - Sonic.asm frame=186 [Knuckles] art=../General/Sprites/Knuckles/Art/Knuckles.bin artcmp=Uncompressed mapasm=../General/Sprites/Knuckles/Map - Knuckles.asm -dplcasm=../General/Sprites/Knuckles/Knuckles pattern load cues.asm +dplcasm=../General/Sprites/Knuckles/DPLC - Knuckles.asm frame=86 pal=4 [Ring] diff --git a/SonLVL INI Files/Common/SonicStartFall.xml b/SonLVL INI Files/Common/SonicStartFall.xml index b6ccb064..647d10c0 100644 --- a/SonLVL INI Files/Common/SonicStartFall.xml +++ b/SonLVL INI Files/Common/SonicStartFall.xml @@ -3,6 +3,6 @@ + dplcfile="../General/Sprites/Sonic/DPLC - Sonic.asm" dplcver="S2" frame="141" /> \ No newline at end of file diff --git a/SonLVL INI Files/Common/SonicStartSpin.xml b/SonLVL INI Files/Common/SonicStartSpin.xml index 4a6b4772..45fd5729 100644 --- a/SonLVL INI Files/Common/SonicStartSpin.xml +++ b/SonLVL INI Files/Common/SonicStartSpin.xml @@ -3,6 +3,6 @@ + dplcfile="../General/Sprites/Sonic/DPLC - Sonic.asm" dplcver="S2" frame="151" /> \ No newline at end of file diff --git a/SonLVL INI Files/Common/SonicStartTails.xml b/SonLVL INI Files/Common/SonicStartTails.xml index 901a477a..37eb1d23 100644 --- a/SonLVL INI Files/Common/SonicStartTails.xml +++ b/SonLVL INI Files/Common/SonicStartTails.xml @@ -3,17 +3,17 @@ + dplcfile="../General/Sprites/Tails/DPLC - Tails tails.asm" dplcver="S2" frame="39" /> + dplcfile="../General/Sprites/Tails/DPLC - Tails.asm" dplcver="S2" frame="162" /> + dplcfile="../General/Sprites/Sonic/DPLC - Sonic.asm" dplcver="S2" frame="144" /> \ No newline at end of file diff --git a/SonLVL INI Files/Common/SonicStartWalk.xml b/SonLVL INI Files/Common/SonicStartWalk.xml index 55e323a4..7a7cf389 100644 --- a/SonLVL INI Files/Common/SonicStartWalk.xml +++ b/SonLVL INI Files/Common/SonicStartWalk.xml @@ -3,6 +3,6 @@ + dplcfile="../General/Sprites/Sonic/DPLC - Sonic.asm" dplcver="S2" frame="5" /> \ No newline at end of file diff --git a/SonLVL INI Files/HCZ/1.ini b/SonLVL INI Files/HCZ/1.ini index fc1d12ba..ab195e8c 100644 --- a/SonLVL INI Files/HCZ/1.ini +++ b/SonLVL INI Files/HCZ/1.ini @@ -4,7 +4,7 @@ xmlfile=Common/SonicStartFall.xml art=../General/Sprites/Knuckles/Art/Knuckles.bin artcmp=Uncompressed mapasm=../General/Sprites/Knuckles/Map - Knuckles.asm -dplcasm=../General/Sprites/Knuckles/Knuckles pattern load cues.asm +dplcasm=../General/Sprites/Knuckles/DPLC - Knuckles.asm frame=203 pal=4 [0D] diff --git a/SonLVL INI Files/HPZ/3.ini b/SonLVL INI Files/HPZ/3.ini index cc882be1..1b02136b 100644 --- a/SonLVL INI Files/HPZ/3.ini +++ b/SonLVL INI Files/HPZ/3.ini @@ -2,14 +2,14 @@ art=../General/Sprites/Sonic/Art/Sonic.bin artcmp=Uncompressed mapasm=../General/Sprites/Sonic/Map - Sonic.asm -dplcasm=../General/Sprites/Sonic/Sonic pattern load cues.asm +dplcasm=../General/Sprites/Sonic/DPLC - Sonic.asm frame=186 pri=true [Knuckles] art=../General/Sprites/Knuckles/Art/Knuckles.bin artcmp=Uncompressed mapasm=../General/Sprites/Knuckles/Map - Knuckles.asm -dplcasm=../General/Sprites/Knuckles/Knuckles pattern load cues.asm +dplcasm=../General/Sprites/Knuckles/DPLC - Knuckles.asm frame=86 pal=4 pri=true diff --git a/SonLVL INI Files/LBZ/1.ini b/SonLVL INI Files/LBZ/1.ini index c63aff45..aca1d001 100644 --- a/SonLVL INI Files/LBZ/1.ini +++ b/SonLVL INI Files/LBZ/1.ini @@ -2,13 +2,13 @@ art=../General/Sprites/Sonic/Art/Sonic.bin artcmp=Uncompressed mapasm=../General/Sprites/Sonic/Map - Sonic.asm -dplcasm=../General/Sprites/Sonic/Sonic pattern load cues.asm +dplcasm=../General/Sprites/Sonic/DPLC - Sonic.asm frame=142 [Knuckles] art=../General/Sprites/Knuckles/Art/Knuckles.bin artcmp=Uncompressed mapasm=../General/Sprites/Knuckles/Map - Knuckles.asm -dplcasm=../General/Sprites/Knuckles/Knuckles pattern load cues.asm +dplcasm=../General/Sprites/Knuckles/DPLC - Knuckles.asm frame=142 pal=4 [10] diff --git a/SonLVL INI Files/LRZ/CutsceneTrigger.cs b/SonLVL INI Files/LRZ/CutsceneTrigger.cs index cb453087..3fa65880 100644 --- a/SonLVL INI Files/LRZ/CutsceneTrigger.cs +++ b/SonLVL INI Files/LRZ/CutsceneTrigger.cs @@ -65,7 +65,7 @@ public override void Init(ObjectData data) sprite = ObjectHelper.MapDPLCToBmp(LevelData.ReadFile( "../General/Sprites/Knuckles/Art/Knuckles.bin", CompressionType.Uncompressed), LevelData.ASMToBin( "../General/Sprites/Knuckles/Map - Knuckles.asm", EngineVersion.S3K), EngineVersion.S3K, LevelData.ASMToBin( - "../General/Sprites/Knuckles/Knuckles pattern load cues.asm", EngineVersion.S2), EngineVersion.S2, 0x56, 7, true); + "../General/Sprites/Knuckles/DPLC - Knuckles.asm", EngineVersion.S2), EngineVersion.S2, 0x56, 7, true); sprite.Flip(true, false); sprite.Offset(48, 10); diff --git a/s3.asm b/s3.asm index e426e6df..3322cda4 100644 --- a/s3.asm +++ b/s3.asm @@ -118971,11 +118971,11 @@ ArtUnc_Knuckles2P: binclude "General/Sprites/Knuckles/Art/Knuckles 2P.bin" even Map_Sonic: include "General/Sprites/Sonic/Map - Sonic S3.asm" -PLC_Sonic: include "General/Sprites/Sonic/Sonic pattern load cues S3.asm" +PLC_Sonic: include "General/Sprites/Sonic/DPLC - Sonic S3.asm" Map_Tails: include "General/Sprites/Tails/Map - Tails S3.asm" -PLC_Tails: include "General/Sprites/Tails/Tails pattern load cues S3.asm" +PLC_Tails: include "General/Sprites/Tails/DPLC - Tails S3.asm" Map_Tails_Tail: include "General/Sprites/Tails/Map - Tails tails.asm" -PLC_Tails_Tail: include "General/Sprites/Tails/Tails tails pattern load cues.asm" +PLC_Tails_Tail: include "General/Sprites/Tails/DPLC - Tails tails.asm" ICZSnowboard_Slope1: binclude "Levels/ICZ/Misc/ICZ Snowboard Slope 1.bin" even diff --git a/sonic3k.asm b/sonic3k.asm index 231eedba..58f21be9 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -202121,11 +202121,11 @@ ArtUnc_Tails_Extra: binclude "General/Sprites/Tails/Art/Tails Extra.bin" even Map_Sonic: include "General/Sprites/Sonic/Map - Sonic.asm" -PLC_Sonic: include "General/Sprites/Sonic/Sonic pattern load cues.asm" +PLC_Sonic: include "General/Sprites/Sonic/DPLC - Sonic.asm" Map_Tails: include "General/Sprites/Tails/Map - Tails.asm" -PLC_Tails: include "General/Sprites/Tails/Tails pattern load cues.asm" +PLC_Tails: include "General/Sprites/Tails/DPLC - Tails.asm" Map_Knuckles: include "General/Sprites/Knuckles/Map - Knuckles.asm" -PLC_Knuckles: include "General/Sprites/Knuckles/Knuckles pattern load cues.asm" +PLC_Knuckles: include "General/Sprites/Knuckles/DPLC - Knuckles.asm" ArtKosM_HyperSonicStars: binclude "General/Sprites/Sonic/Art/Hyper Sonic Stars.bin" even From c3c3803f7a142b6e684917b899aa45bbcda573e6 Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Sun, 20 Feb 2022 16:56:23 +0000 Subject: [PATCH 66/72] Rename S2 shield files --- .../Shields/{Anim - Shield S2.asm => Anim - S2 Shield.asm} | 0 .../Shields/{Map - Shield S2.asm => Map - S2 Shield.asm} | 0 s3.asm | 6 ++++-- sonic3k.asm | 4 ++-- 4 files changed, 6 insertions(+), 4 deletions(-) rename General/Sprites/Shields/{Anim - Shield S2.asm => Anim - S2 Shield.asm} (100%) rename General/Sprites/Shields/{Map - Shield S2.asm => Map - S2 Shield.asm} (100%) diff --git a/General/Sprites/Shields/Anim - Shield S2.asm b/General/Sprites/Shields/Anim - S2 Shield.asm similarity index 100% rename from General/Sprites/Shields/Anim - Shield S2.asm rename to General/Sprites/Shields/Anim - S2 Shield.asm diff --git a/General/Sprites/Shields/Map - Shield S2.asm b/General/Sprites/Shields/Map - S2 Shield.asm similarity index 100% rename from General/Sprites/Shields/Map - Shield S2.asm rename to General/Sprites/Shields/Map - S2 Shield.asm diff --git a/s3.asm b/s3.asm index 3322cda4..eec3a3c8 100644 --- a/s3.asm +++ b/s3.asm @@ -27489,8 +27489,10 @@ byte_17782: dc.b 8, 7, 6, 5, 4, 3, 2, 3, 4, 5, 6, 7, $F dc.b 7, 6, 5, 4, 3 byte_1779B: dc.b 7, 6, 5, 4, 3, 2, 1, 2, 3, 4, 5, 6, $FF, 1, 2, 3, 4, 5, 6, 7 dc.b 6, 5, 4, 3, 2 -Ani_S2Shield: include "General/Sprites/Shields/Anim - Shield S2.asm" -Map_S2Shield: include "General/Sprites/Shields/Map - Shield S2.asm" +Ani_S2Shield: + include "General/Sprites/Shields/Anim - S2 Shield.asm" +Map_S2Shield: + include "General/Sprites/Shields/Map - S2 Shield.asm" Map_Invincibility: include "General/Sprites/Shields/Map - Invincibility.asm" ; --------------------------------------------------------------------------- diff --git a/sonic3k.asm b/sonic3k.asm index 58f21be9..86ad1eca 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -33250,9 +33250,9 @@ byte_18A02: dc.b 8, 7, 6, 5, 4, 3, 2, 3, 4, 5, 6, 7, $F byte_18A1B: dc.b 7, 6, 5, 4, 3, 2, 1, 2, 3, 4, 5, 6, $FF, 1, 2, 3, 4, 5, 6, 7 dc.b 6, 5, 4, 3, 2 Ani_S2Shield: - include "General/Sprites/Shields/Anim - Shield S2.asm" + include "General/Sprites/Shields/Anim - S2 Shield.asm" Map_S2Shield: - include "General/Sprites/Shields/Map - Shield S2.asm" + include "General/Sprites/Shields/Map - S2 Shield.asm" Map_Invincibility: include "General/Sprites/Shields/Map - Invincibility.asm" ; --------------------------------------------------------------------------- From 5ca410c4b96f532b6fcc00f92aae5ffb7ceac793 Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Sun, 20 Feb 2022 16:56:50 +0000 Subject: [PATCH 67/72] Rename air countdown files/labels --- Build Scripts/sk.txt | 2 +- .../{Bubbles => Dash Dust}/Air Countdown.bin | Bin .../Anim - Air Countdown.asm} | 30 +++++++++--------- s3.asm | 23 +++++++------- sonic3k.asm | 25 ++++++++------- 5 files changed, 41 insertions(+), 39 deletions(-) rename General/Sprites/{Bubbles => Dash Dust}/Air Countdown.bin (100%) rename General/Sprites/{Shields/Anim - Shields.asm => Dash Dust/Anim - Air Countdown.asm} (60%) diff --git a/Build Scripts/sk.txt b/Build Scripts/sk.txt index 01137eba..5db277f3 100644 --- a/Build Scripts/sk.txt +++ b/Build Scripts/sk.txt @@ -238,7 +238,7 @@ #split 0x0000E18A,0x0000E48A,General\Sprites\HUD Icon\HUD Digits.bin #split 0x0000E48A,0x0000E5CA,General\Sprites\HUD Icon\Lives Digits.bin #split 0x0000E5CA,0x0000E8AA,General\Sprites\HUD Icon\Debug Digits.bin -#split 0x000A9DFC,0x000AA57C,General\Sprites\Bubbles\Air Countdown.bin +#split 0x000A9DFC,0x000AA57C,General\Sprites\Dash Dust\Air Countdown.bin #split 0x000AA57C,0x000AAA7C,General\Sprites\S2Menu\SONICMILES.bin #split 0x000AAA7C,0x000ABDFC,General\Sprites\Sonic\Art\SStage Sonic.bin #split 0x000ABF22,0x000AD302,General\Sprites\Knuckles\Art\SStage Knuckles.bin diff --git a/General/Sprites/Bubbles/Air Countdown.bin b/General/Sprites/Dash Dust/Air Countdown.bin similarity index 100% rename from General/Sprites/Bubbles/Air Countdown.bin rename to General/Sprites/Dash Dust/Air Countdown.bin diff --git a/General/Sprites/Shields/Anim - Shields.asm b/General/Sprites/Dash Dust/Anim - Air Countdown.asm similarity index 60% rename from General/Sprites/Shields/Anim - Shields.asm rename to General/Sprites/Dash Dust/Anim - Air Countdown.asm index df0d4db6..09500a04 100644 --- a/General/Sprites/Shields/Anim - Shields.asm +++ b/General/Sprites/Dash Dust/Anim - Air Countdown.asm @@ -1,18 +1,18 @@ - dc.w byte_186E2-Ani_Shields - dc.w byte_186EB-Ani_Shields - dc.w byte_186F4-Ani_Shields - dc.w byte_186FD-Ani_Shields - dc.w byte_18706-Ani_Shields - dc.w byte_1870F-Ani_Shields - dc.w byte_18718-Ani_Shields - dc.w byte_1871D-Ani_Shields - dc.w byte_18725-Ani_Shields - dc.w byte_1872D-Ani_Shields - dc.w byte_18735-Ani_Shields - dc.w byte_1873D-Ani_Shields - dc.w byte_18745-Ani_Shields - dc.w byte_1874D-Ani_Shields - dc.w byte_1874F-Ani_Shields + dc.w byte_186E2-Ani_AirCountdown + dc.w byte_186EB-Ani_AirCountdown + dc.w byte_186F4-Ani_AirCountdown + dc.w byte_186FD-Ani_AirCountdown + dc.w byte_18706-Ani_AirCountdown + dc.w byte_1870F-Ani_AirCountdown + dc.w byte_18718-Ani_AirCountdown + dc.w byte_1871D-Ani_AirCountdown + dc.w byte_18725-Ani_AirCountdown + dc.w byte_1872D-Ani_AirCountdown + dc.w byte_18735-Ani_AirCountdown + dc.w byte_1873D-Ani_AirCountdown + dc.w byte_18745-Ani_AirCountdown + dc.w byte_1874D-Ani_AirCountdown + dc.w byte_1874F-Ani_AirCountdown byte_186E2: dc.b 5, 0, 1, 2, 3, 4, 9, $D, $FC byte_186EB: dc.b 5, 0, 1, 2, 3, 4, $C, $12, $FC byte_186F4: dc.b 5, 0, 1, 2, 3, 4, $C, $11, $FC diff --git a/s3.asm b/s3.asm index eec3a3c8..b1fb394d 100644 --- a/s3.asm +++ b/s3.asm @@ -19585,7 +19585,7 @@ Sonic_InWater: addq.b #1,(Water_entered_counter).w movea.l a0,a1 bsr.w Player_ResetAirTimer - move.l #Obj_Air_CountDown,(Breathing_bubbles).w + move.l #Obj_AirCountdown,(Breathing_bubbles).w move.b #$81,(Breathing_bubbles+subtype).w move.l a0,(Breathing_bubbles+$40).w move.w #$300,(a4) @@ -24162,7 +24162,7 @@ loc_1528C: addq.b #1,(Water_entered_counter).w movea.l a0,a1 bsr.w Player_ResetAirTimer - move.l #Obj_Air_CountDown,(Breathing_bubbles_P2).w + move.l #Obj_AirCountdown,(Breathing_bubbles_P2).w move.b #$81,(Breathing_bubbles_P2+subtype).w move.l a0,(Breathing_bubbles_P2+$40).w move.w #$300,(a4) @@ -26868,7 +26868,7 @@ locret_16EFA: rts ; --------------------------------------------------------------------------- -Obj_Air_CountDown: +Obj_AirCountdown: moveq #0,d0 move.b 5(a0),d0 move.w AirCountdown_Index(pc,d0.w),d1 @@ -26912,7 +26912,7 @@ loc_16F64: move.w #-$100,$1A(a0) AirCountdown_Animate: - lea (Ani_Shields).l,a1 + lea (Ani_AirCountdown).l,a1 jsr (Animate_Sprite).l AirCountdown_ChkWater: @@ -26955,7 +26955,7 @@ loc_16FE6: AirCountdown_Display: bsr.s AirCountdown_ShowNumber - lea (Ani_Shields).l,a1 + lea (Ani_AirCountdown).l,a1 jsr (Animate_Sprite).l bsr.w AirCountdown_Load_Art jmp (Draw_Sprite).l @@ -26977,7 +26977,7 @@ AirCountdown_AirLeft: ; --------------------------------------------------------------------------- AirCountdown_Display2: - lea (Ani_Shields).l,a1 + lea (Ani_AirCountdown).l,a1 jsr (Animate_Sprite).l bsr.w AirCountdown_Load_Art tst.b 4(a0) @@ -26994,7 +26994,7 @@ AirCountdown_DisplayNumber: cmpi.b #$C,$2C(a2) bhi.s AirCountdown_Delete bsr.s AirCountdown_ShowNumber - lea (Ani_Shields).l,a1 + lea (Ani_AirCountdown).l,a1 jsr (Animate_Sprite).l jmp (Draw_Sprite).l @@ -27062,7 +27062,7 @@ AirCountdown_Load_Art: add.w d1,d1 add.w d0,d1 lsl.w #6,d1 - addi.l #ArtUnc_AirCountDown,d1 + addi.l #ArtUnc_AirCountdown,d1 move.w #tiles_to_bytes(ArtTile_DashDust),d2 tst.b $43(a0) beq.s loc_171F2 @@ -27277,7 +27277,8 @@ loc_1744C: ; End of function Player_ResetAirTimer ; --------------------------------------------------------------------------- -Ani_Shields: include "General/Sprites/Shields/Anim - Shields.asm" +Ani_AirCountdown: + include "General/Sprites/Dash Dust/Anim - Air Countdown.asm" ; --------------------------------------------------------------------------- Obj_S2Shield: @@ -117756,8 +117757,8 @@ Pal_Slot_Special: ArtUnc_CNZCannon: binclude "General/Sprites/CNZ Cannon/CNZ Cannon.bin" even -ArtUnc_AirCountDown: - binclude "General/Sprites/Bubbles/Air Countdown.bin" +ArtUnc_AirCountdown: + binclude "General/Sprites/Dash Dust/Air Countdown.bin" even ArtUnc_SONICMILES: binclude "General/Sprites/S2Menu/SONICMILES.bin" diff --git a/sonic3k.asm b/sonic3k.asm index 86ad1eca..867f66fb 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -21925,7 +21925,7 @@ Sonic_InWater: addq.b #1,(Water_entered_counter).w movea.l a0,a1 bsr.w Player_ResetAirTimer - move.l #Obj_Air_CountDown,(Breathing_bubbles).w ; load Sonic's breathing bubbles + move.l #Obj_AirCountdown,(Breathing_bubbles).w ; load Sonic's breathing bubbles move.b #$81,(Breathing_bubbles+subtype).w move.l a0,(Breathing_bubbles+$40).w move.w #$300,Max_speed-Max_speed(a4) @@ -27108,7 +27108,7 @@ loc_1463A: addq.b #1,(Water_entered_counter).w movea.l a0,a1 bsr.w Player_ResetAirTimer - move.l #Obj_Air_CountDown,(Breathing_bubbles_P2).w + move.l #Obj_AirCountdown,(Breathing_bubbles_P2).w move.b #$81,(Breathing_bubbles_P2+subtype).w move.l a0,(Breathing_bubbles_P2+$40).w move.w #$300,Max_speed-Max_speed(a4) @@ -30196,7 +30196,7 @@ loc_166F6: addq.b #1,(Water_entered_counter).w movea.l a0,a1 bsr.w Player_ResetAirTimer - move.l #Obj_Air_CountDown,(Breathing_bubbles).w + move.l #Obj_AirCountdown,(Breathing_bubbles).w move.b #$81,(Breathing_bubbles+subtype).w move.l a0,(Breathing_bubbles+$40).w move.w #$300,Max_speed-Max_speed(a4) @@ -32612,7 +32612,7 @@ locret_18162: ; --------------------------------------------------------------------------- ; Small bubbles from Sonic's face while underwater ; --------------------------------------------------------------------------- -Obj_Air_CountDown: +Obj_AirCountdown: moveq #0,d0 move.b routine(a0),d0 move.w AirCountdown_Index(pc,d0.w),d1 @@ -32656,7 +32656,7 @@ loc_181CC: move.w #-$100,y_vel(a0) AirCountdown_Animate: - lea (Ani_Shields).l,a1 + lea (Ani_AirCountdown).l,a1 jsr (Animate_Sprite).l AirCountdown_ChkWater: @@ -32705,7 +32705,7 @@ loc_1824E: AirCountdown_Display: bsr.s AirCountdown_ShowNumber - lea (Ani_Shields).l,a1 + lea (Ani_AirCountdown).l,a1 jsr (Animate_Sprite).l bsr.w AirCountdown_Load_Art jmp (Draw_Sprite).l @@ -32727,7 +32727,7 @@ AirCountdown_AirLeft: ; --------------------------------------------------------------------------- AirCountdown_Display2: - lea (Ani_Shields).l,a1 + lea (Ani_AirCountdown).l,a1 jsr (Animate_Sprite).l bsr.w AirCountdown_Load_Art tst.b render_flags(a0) @@ -32744,7 +32744,7 @@ AirCountdown_DisplayNumber: cmpi.b #$C,air_left(a2) bhi.s AirCountdown_Delete bsr.s AirCountdown_ShowNumber - lea (Ani_Shields).l,a1 + lea (Ani_AirCountdown).l,a1 jsr (Animate_Sprite).l jmp (Draw_Sprite).l @@ -32815,7 +32815,7 @@ AirCountdown_Load_Art: add.w d1,d1 add.w d0,d1 lsl.w #6,d1 - addi.l #ArtUnc_AirCountDown,d1 + addi.l #ArtUnc_AirCountdown,d1 move.w #tiles_to_bytes(ArtTile_DashDust),d2 tst.b parent+1(a0) beq.s loc_1845A @@ -33033,7 +33033,8 @@ loc_186BC: ; End of function Player_ResetAirTimer ; --------------------------------------------------------------------------- -Ani_Shields: include "General/Sprites/Shields/Anim - Shields.asm" +Ani_AirCountdown: + include "General/Sprites/Dash Dust/Anim - Air Countdown.asm" ; --------------------------------------------------------------------------- Obj_S2Shield: @@ -201685,8 +201686,8 @@ Pal_HPZ_B: binclude "Levels/HPZ/Palettes/1_B.bin" even Pal_DEZBoss: binclude "Levels/DEZ/Palettes/Boss.bin" even -ArtUnc_AirCountDown: - binclude "General/Sprites/Bubbles/Air Countdown.bin" +ArtUnc_AirCountdown: + binclude "General/Sprites/Dash Dust/Air Countdown.bin" even ArtUnc_SONICMILES: binclude "General/Sprites/S2Menu/SONICMILES.bin" From d7757f372fbd7ccea745ab72425977cd56d850aa Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Sun, 20 Feb 2022 16:57:52 +0000 Subject: [PATCH 68/72] Sprite_CheckDeleteTouch3 --- s3.asm | 24 ++++++++++++------------ sonic3k.asm | 52 ++++++++++++++++++++++++++-------------------------- 2 files changed, 38 insertions(+), 38 deletions(-) diff --git a/s3.asm b/s3.asm index b1fb394d..f43d6621 100644 --- a/s3.asm +++ b/s3.asm @@ -28394,7 +28394,7 @@ Obj_RingInit: Obj_RingAnimate: move.b (Rings_frame).w,$22(a0) - bra.w loc_19CC4 + bra.w Sprite_CheckDeleteTouch3 ; --------------------------------------------------------------------------- Obj_RingCollect: @@ -30162,7 +30162,7 @@ loc_19CC0: bra.w Delete_Current_Sprite ; --------------------------------------------------------------------------- -loc_19CC4: +Sprite_CheckDeleteTouch3: move.w $10(a0),d0 loc_19CC8: @@ -43146,7 +43146,7 @@ loc_2496C: bsr.s sub_24980 loc_2497A: - jmp (loc_19CC4).l + jmp (Sprite_CheckDeleteTouch3).l ; =============== S U B R O U T I N E ======================================= @@ -43804,7 +43804,7 @@ loc_25422: move.w #$7FFF,$10(a0) loc_2543A: - jmp (loc_19CC4).l + jmp (Sprite_CheckDeleteTouch3).l ; --------------------------------------------------------------------------- Ani_LBZFlameThrower: include "Levels/LBZ/Misc Object Data/Anim - Flame Thrower.asm" @@ -48561,7 +48561,7 @@ loc_28BAA: bsr.s sub_28BBE loc_28BB8: - jmp (loc_19CC4).l + jmp (Sprite_CheckDeleteTouch3).l ; =============== S U B R O U T I N E ======================================= @@ -52571,7 +52571,7 @@ loc_2C972: loc_2C99C: move.b d0,$22(a0) - jmp (loc_19CC4).l + jmp (Sprite_CheckDeleteTouch3).l ; --------------------------------------------------------------------------- loc_2C9A6: @@ -56651,7 +56651,7 @@ loc_303F2: asr.w #5,d0 add.w $32(a0),d0 move.w d0,$14(a0) - jmp (loc_19CC4).l + jmp (Sprite_CheckDeleteTouch3).l ; =============== S U B R O U T I N E ======================================= @@ -60496,7 +60496,7 @@ loc_33486: jsr (Play_SFX).l loc_334AE: - jmp (loc_19CC4).l + jmp (Sprite_CheckDeleteTouch3).l ; --------------------------------------------------------------------------- loc_334B4: @@ -60710,7 +60710,7 @@ loc_337B4: jsr (Play_SFX).l loc_337BC: - jmp (loc_19CC4).l + jmp (Sprite_CheckDeleteTouch3).l ; --------------------------------------------------------------------------- loc_337C2: @@ -106344,14 +106344,14 @@ loc_5527C: move.b #8,$1E(a0) move.w #-$200,$18(a0) move.w #-$400,$1A(a0) - jmp (loc_19CC4).l + jmp (Sprite_CheckDeleteTouch3).l ; --------------------------------------------------------------------------- loc_552B2: jsr (MoveSprite_LightGravity).l jsr Animate_RawMultiDelay(pc) jsr ObjHitFloor_DoRoutine(pc) - jmp (loc_19CC4).l + jmp (Sprite_CheckDeleteTouch3).l ; --------------------------------------------------------------------------- loc_552C6: @@ -106360,7 +106360,7 @@ loc_552C6: ; --------------------------------------------------------------------------- loc_552CE: - jmp (loc_19CC4).l + jmp (Sprite_CheckDeleteTouch3).l ; --------------------------------------------------------------------------- movea.w $46(a0),a1 move.b 4(a1),d0 diff --git a/sonic3k.asm b/sonic3k.asm index 867f66fb..ec594528 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -34717,7 +34717,7 @@ Obj_RingInit: Obj_RingAnimate: move.b (Rings_frame).w,mapping_frame(a0) - bra.w loc_1B662 + bra.w Sprite_CheckDeleteTouch3 ; --------------------------------------------------------------------------- Obj_RingCollect: @@ -36669,7 +36669,7 @@ loc_1B65E: bra.w Delete_Current_Sprite ; --------------------------------------------------------------------------- -loc_1B662: +Sprite_CheckDeleteTouch3: move.w $10(a0),d0 loc_1B666: @@ -51067,7 +51067,7 @@ loc_25D18: bsr.s sub_25D2C loc_25D26: - jmp (loc_1B662).l + jmp (Sprite_CheckDeleteTouch3).l ; =============== S U B R O U T I N E ======================================= @@ -51715,7 +51715,7 @@ Obj_AutoSpin460: move.w #$7FFF,$10(a0) loc_26478: - jmp (loc_1B662).l + jmp (Sprite_CheckDeleteTouch3).l ; --------------------------------------------------------------------------- Ani_LBZFlameThrower: include "Levels/LBZ/Misc Object Data/Anim - Flame Thrower.asm" @@ -57360,7 +57360,7 @@ loc_29C38: bsr.s sub_29C4C loc_29C46: - jmp (loc_1B662).l + jmp (Sprite_CheckDeleteTouch3).l ; =============== S U B R O U T I N E ======================================= @@ -61675,7 +61675,7 @@ loc_2D58C: loc_2D5B6: move.b d0,$22(a0) - jmp (loc_1B662).l + jmp (Sprite_CheckDeleteTouch3).l ; --------------------------------------------------------------------------- loc_2D5C0: @@ -66660,7 +66660,7 @@ loc_3178E: asr.w #5,d0 add.w $32(a0),d0 move.w d0,$14(a0) - jmp (loc_1B662).l + jmp (Sprite_CheckDeleteTouch3).l ; =============== S U B R O U T I N E ======================================= @@ -70533,7 +70533,7 @@ loc_34216: jsr (Play_SFX).l loc_3423E: - jmp (loc_1B662).l + jmp (Sprite_CheckDeleteTouch3).l ; --------------------------------------------------------------------------- loc_34244: @@ -70744,7 +70744,7 @@ loc_3450A: jsr (Play_SFX).l loc_34512: - jmp (loc_1B662).l + jmp (Sprite_CheckDeleteTouch3).l ; --------------------------------------------------------------------------- loc_34518: @@ -78620,8 +78620,8 @@ Obj_FBZMagneticSpikeBall: move.b #$10,7(a0) move.b #$10,6(a0) move.b #-$66,$28(a0) - move.l #loc_1B662,(a0) - jmp (loc_1B662).l + move.l #Sprite_CheckDeleteTouch3,(a0) + jmp (Sprite_CheckDeleteTouch3).l ; --------------------------------------------------------------------------- loc_3B122: @@ -78667,7 +78667,7 @@ loc_3B1B2: move.l #loc_3B1C4,(a0) loc_3B1BE: - jmp (loc_1B662).l + jmp (Sprite_CheckDeleteTouch3).l ; --------------------------------------------------------------------------- loc_3B1C4: @@ -78686,7 +78686,7 @@ loc_3B1EA: move.l #loc_3B18C,(a0) loc_3B1F6: - jmp (loc_1B662).l + jmp (Sprite_CheckDeleteTouch3).l ; --------------------------------------------------------------------------- loc_3B1FC: @@ -78838,7 +78838,7 @@ loc_3B462: move.w #-9,d3 move.w $10(a0),d4 jsr SolidObjectFull_Offset - jmp loc_1B662 + jmp Sprite_CheckDeleteTouch3 ; --------------------------------------------------------------------------- loc_3B482: @@ -79756,7 +79756,7 @@ loc_3C1EE: moveq #0,d0 move.b (a2),d0 move.b CollisionEffects_3C208(pc,d0.w),$28(a0) - jmp (loc_1B662).l + jmp (Sprite_CheckDeleteTouch3).l ; --------------------------------------------------------------------------- CollisionEffects_3C208: dc.b $B6 @@ -86879,7 +86879,7 @@ loc_41D48: bsr.s sub_41D5C loc_41D56: - jmp (loc_1B662).l + jmp (Sprite_CheckDeleteTouch3).l ; =============== S U B R O U T I N E ======================================= @@ -87743,7 +87743,7 @@ loc_428BE: move.l #loc_428D6,(a0) loc_428D0: - jmp (loc_1B662).l + jmp (Sprite_CheckDeleteTouch3).l ; --------------------------------------------------------------------------- loc_428D6: @@ -87758,7 +87758,7 @@ loc_428D6: jsr (Play_SFX).l loc_428FE: - jmp (loc_1B662).l + jmp (Sprite_CheckDeleteTouch3).l ; --------------------------------------------------------------------------- loc_42904: @@ -88100,7 +88100,7 @@ loc_42EAC: bsr.s sub_42EC0 loc_42EBA: - jmp (loc_1B662).l + jmp (Sprite_CheckDeleteTouch3).l ; =============== S U B R O U T I N E ======================================= @@ -88736,7 +88736,7 @@ loc_43966: ; --------------------------------------------------------------------------- loc_43978: - jmp (loc_1B662).l + jmp (Sprite_CheckDeleteTouch3).l ; --------------------------------------------------------------------------- loc_4397E: @@ -89590,7 +89590,7 @@ loc_44592: lsr.b #1,d0 andi.b #3,d0 move.b d0,$22(a0) - jmp (loc_1B662).l + jmp (Sprite_CheckDeleteTouch3).l ; --------------------------------------------------------------------------- Map_LRZTurbineSprites: include "Levels/LRZ/Misc Object Data/Map - Turbine.asm" @@ -89680,7 +89680,7 @@ loc_44934: move.l #loc_44954,(a0) loc_44954: - jmp (loc_1B662).l + jmp (Sprite_CheckDeleteTouch3).l ; --------------------------------------------------------------------------- Ani_LRZSpikeBallLauncher: include "Levels/LRZ/Misc Object Data/Anim - Spike Ball Launcher.asm" @@ -93326,7 +93326,7 @@ loc_478E2: loc_47906: cmpi.b #3,$22(a0) bne.s loc_47914 - jmp (loc_1B662).l + jmp (Sprite_CheckDeleteTouch3).l ; --------------------------------------------------------------------------- loc_47914: @@ -183748,14 +183748,14 @@ loc_87480: move.b #8,$1E(a0) move.w #-$200,$18(a0) move.w #-$400,$1A(a0) - jmp (loc_1B662).l + jmp (Sprite_CheckDeleteTouch3).l ; --------------------------------------------------------------------------- loc_874B6: jsr (MoveSprite_LightGravity).l jsr Animate_RawMultiDelay(pc) jsr ObjHitFloor_DoRoutine(pc) - jmp (loc_1B662).l + jmp (Sprite_CheckDeleteTouch3).l ; --------------------------------------------------------------------------- loc_874CA: @@ -183764,7 +183764,7 @@ loc_874CA: ; --------------------------------------------------------------------------- loc_874D2: - jmp (loc_1B662).l + jmp (Sprite_CheckDeleteTouch3).l ; --------------------------------------------------------------------------- movea.w $46(a0),a1 move.b 4(a1),d0 From 5f13fa553d0d9a21756de496c0ac8cab430d51f6 Mon Sep 17 00:00:00 2001 From: Fred Bronze Date: Sun, 20 Feb 2022 17:03:17 +0000 Subject: [PATCH 69/72] Fix up formatting flubs introduced through find/replace --- s3.asm | 18 ++++++++++----- sonic3k.asm | 51 ++++++++++++++++++++++++++++--------------- sonic3k.constants.asm | 2 +- 3 files changed, 47 insertions(+), 24 deletions(-) diff --git a/s3.asm b/s3.asm index f43d6621..98603702 100644 --- a/s3.asm +++ b/s3.asm @@ -81012,7 +81012,8 @@ ChildObjDat_45756: dc.w 0 dc.l loc_448EE dc.w $18 -DPLCPtr_CutsceneKnux: dc.l ArtUnc_CutsceneKnux +DPLCPtr_CutsceneKnux: + dc.l ArtUnc_CutsceneKnux dc.l DPLC_CutsceneKnux byte_45766: dc.b 7 dc.b 1 @@ -86137,7 +86138,8 @@ ChildObjDat_48C08: dc.w $F430 dc.l loc_48732 dc.w $C30 -DPLCPtr_HCZMinibossSplash: dc.l ArtUnc_DashDust +DPLCPtr_HCZMinibossSplash: + dc.l ArtUnc_DashDust dc.l DPLC_HCZMinibossSplash byte_48C30: dc.b $16, 7 dc.b $17, 7 @@ -105967,7 +105969,8 @@ ChildObjDat_54F26: dc.w 0 dc.l loc_54CF8 dc.w $1008 -DPLCPtr_AIZRhinobot: dc.l ArtUnc_AIZRhinobot +DPLCPtr_AIZRhinobot: + dc.l ArtUnc_AIZRhinobot dc.l DPLC_Rhinobot byte_54F36: dc.b 2, 4 dc.b 4, 5 @@ -108013,7 +108016,8 @@ ObjDat4_56210: dc.w 1 dc.b $18 dc.b 0 dc.b 0 -PLCPtr_BubblesBadnik: dc.l ArtUnc_BubblesBadnik +PLCPtr_BubblesBadnik: + dc.l ArtUnc_BubblesBadnik dc.l DPLC_BubblesBadnik byte_5622A: dc.b 0, $F dc.b 0, $77 @@ -113635,7 +113639,8 @@ ChildObjDat_59592: dc.w 0 dc.l Obj_ICZSnowdust dc.w $C -DPLCPtr_Penguinator: dc.l ArtUnc_Penguinator +DPLCPtr_Penguinator: + dc.l ArtUnc_Penguinator dc.l DPLC_Penguinator byte_595A2: dc.b 7, $10 dc.b 0, 1 @@ -115093,7 +115098,8 @@ ObjDat4_5A27A: dc.w 2 dc.b $10 dc.b 0 dc.b $1A -DPLCPtr_Flybot767: dc.l ArtUnc_Flybot767 +DPLCPtr_Flybot767: + dc.l ArtUnc_Flybot767 dc.l DPLC_Flybot767 byte_5A294: dc.b 4 dc.b 0 diff --git a/sonic3k.asm b/sonic3k.asm index ec594528..9c04b507 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -30977,7 +30977,8 @@ locret_16FEC: ; End of function Knuckles_Set_Gliding_Animation ; --------------------------------------------------------------------------- -RawAni_Knuckles_GlideTurn: dc.b $C0 +RawAni_Knuckles_GlideTurn: + dc.b $C0 dc.b $C1 dc.b $C2 dc.b $C3 @@ -135262,17 +135263,23 @@ ChildObjDat_6665C: ChildObjDat_66664: dc.w 0 dc.l loc_63916 -DPLCPtr_CutsceneKnux: dc.l ArtUnc_CutsceneKnux +DPLCPtr_CutsceneKnux: + dc.l ArtUnc_CutsceneKnux dc.l DPLC_CutsceneKnux -DPLCPtr_MHZKnuxPress: dc.l ArtUnc_MHZKnuxPress +DPLCPtr_MHZKnuxPress: + dc.l ArtUnc_MHZKnuxPress dc.l DPLC_MHZKnuxPress -DPLCPtr_KnuxIntroLay: dc.l ArtUnc_KnuxIntroLay +DPLCPtr_KnuxIntroLay: + dc.l ArtUnc_KnuxIntroLay dc.l DPLC_KnuxIntroLay -DPLCPtr_HPZKnucklesGrab: dc.l ArtUnc_HPZKnucklesGrab +DPLCPtr_HPZKnucklesGrab: + dc.l ArtUnc_HPZKnucklesGrab dc.l DPLC_HPZKnucklesGrab -DPLCPtr_SSZKnucklesTired: dc.l ArtUnc_SSZKnucklesTired +DPLCPtr_SSZKnucklesTired: + dc.l ArtUnc_SSZKnucklesTired dc.l DPLC_SSZKnucklesTired -DPLCPtr_SSZDeathEggCloud: dc.l ArtUnc_SSZDeathEggCloud +DPLCPtr_SSZDeathEggCloud: + dc.l ArtUnc_SSZDeathEggCloud dc.l DPLC_SSZDeathEggCloud byte_6669A: dc.b 7 dc.b 1 @@ -141088,7 +141095,8 @@ ChildObjDat_6ADC4: dc.w $F430 dc.l loc_6A8EE dc.w $C30 -DPLCPtr_HCZMinibossSplash: dc.l ArtUnc_DashDust +DPLCPtr_HCZMinibossSplash: + dc.l ArtUnc_DashDust dc.l DPLC_HCZMinibossSplash byte_6ADEC: dc.b $16, 7 dc.b $17, 7 @@ -167883,7 +167891,8 @@ ChildObjDat_7D4D0: dc.b 0 dc.b 2 dc.l loc_7CF14 -DPLCPtr_MechaSonic: dc.l ArtUnc_MechaSonic +DPLCPtr_MechaSonic: + dc.l ArtUnc_MechaSonic dc.l DPLC_MechaSonic byte_7D4DE: dc.b 3, 0 dc.b 4, 1 @@ -183371,7 +183380,8 @@ ChildObjDat_8712A: dc.w 0 dc.l loc_86EFC dc.w $1008 -DPLCPtr_AIZRhinobot: dc.l ArtUnc_AIZRhinobot +DPLCPtr_AIZRhinobot: + dc.l ArtUnc_AIZRhinobot dc.l DPLC_Rhinobot byte_8713A: dc.b 2, 4 dc.b 4, 5 @@ -185422,7 +185432,8 @@ ObjDat4_88424: dc.w 1 dc.b $18 dc.b 0 dc.b 0 -PLCPtr_BubblesBadnik: dc.l ArtUnc_BubblesBadnik +PLCPtr_BubblesBadnik: + dc.l ArtUnc_BubblesBadnik dc.l DPLC_BubblesBadnik byte_8843E: dc.b 0, $F dc.b 0, $77 @@ -191561,7 +191572,8 @@ ChildObjDat_8BDFA: dc.w 0 dc.l Obj_ICZSnowdust dc.w $C -DPLCPtr_Penguinator: dc.l ArtUnc_Penguinator +DPLCPtr_Penguinator: + dc.l ArtUnc_Penguinator dc.l DPLC_Penguinator byte_8BE0A: dc.b 7, $10 dc.b 0, 1 @@ -193020,7 +193032,8 @@ ObjDat4_8CB10: dc.w 2 dc.b $10 dc.b 0 dc.b $1A -DPLCPtr_Flybot767: dc.l ArtUnc_Flybot767 +DPLCPtr_Flybot767: + dc.l ArtUnc_Flybot767 dc.l DPLC_Flybot767 byte_8CB2A: dc.b 4 dc.b 0 @@ -195024,7 +195037,8 @@ ObjDat4_8E10A: dc.w 3 dc.b $C dc.b 0 dc.b $17 -DPLCPtr_Butterdroid: dc.l ArtUnc_Butterdroid +DPLCPtr_Butterdroid: + dc.l ArtUnc_Butterdroid dc.l DPLC_Butterdroid byte_8E124: dc.b 7 dc.b 0 @@ -195337,7 +195351,8 @@ ChildObjDat_8E402: ChildObjDat_8E40A: dc.w 0 dc.l loc_8E236 -DPLCPtr_Cluckoid: dc.l ArtUnc_Cluckoid +DPLCPtr_Cluckoid: + dc.l ArtUnc_Cluckoid dc.l DPLC_Cluckoid byte_8E418: dc.b 0 dc.b 7 @@ -197040,7 +197055,8 @@ ChildObjDat_8F64E: ChildObjDat_8F674: dc.w 0 dc.l loc_8F11E -DPLCPtr_SOZGhosts: dc.l ArtUnc_SOZGhosts +DPLCPtr_SOZGhosts: + dc.l ArtUnc_SOZGhosts dc.l DPLC_SOZGhosts byte_8F682: dc.b $11, 3 dc.b $11, 3 @@ -197381,7 +197397,8 @@ ChildObjDat_8FA30: dc.w 0 dc.l loc_8F95C dc.w $F2 -DPLCPtr_Fireworm: dc.l ArtUnc_Fireworm +DPLCPtr_Fireworm: + dc.l ArtUnc_Fireworm dc.l DPLC_Fireworm byte_8FA40: dc.b 1, 3 dc.b 1, 6 diff --git a/sonic3k.constants.asm b/sonic3k.constants.asm index 7c4a73ac..76c14ed7 100644 --- a/sonic3k.constants.asm +++ b/sonic3k.constants.asm @@ -817,7 +817,7 @@ Max_speed_P2 ds.w 1 Acceleration_P2 ds.w 1 Deceleration_P2 ds.w 1 Life_count_P2 ds.b 1 ; left over from Sonic 2 -Update_HUD_timer_P2 ds.b 1 ; used in competition mode +Update_HUD_timer_P2 ds.b 1 ; used in competition mode Total_ring_count ds.w 1 ; left over from Sonic 2 Total_ring_count_P2 ds.w 1 ; left over from Sonic 2 Monitors_broken ds.w 1 ; left over from Sonic 2. Apparently Sonic 3 developers liked copypasting, since gaining a life from rings also increments this counter From 36a256bc8750342a012d0dcff404fd923e201877 Mon Sep 17 00:00:00 2001 From: Clownacy Date: Mon, 9 May 2022 19:27:16 +0100 Subject: [PATCH 70/72] Explain the purpose of some code in s3p2bin --- AS/s3p2bin/s3p2bin.c | 1 + 1 file changed, 1 insertion(+) diff --git a/AS/s3p2bin/s3p2bin.c b/AS/s3p2bin/s3p2bin.c index b07903c1..0ad08c63 100644 --- a/AS/s3p2bin/s3p2bin.c +++ b/AS/s3p2bin/s3p2bin.c @@ -110,6 +110,7 @@ bool buildRom(FILE* from, FILE* to) unsigned char scratch [scratchSize]; bool lastSegmentCompressed = false; + // KiS2: Fill the spaces between segments with $FF, instead of $00 like the regular Sonic 2 ROM. int check_size = 0; bool done=false; From dc3b0db93230eb31b8c074a878e9bae37c422724 Mon Sep 17 00:00:00 2001 From: Clownacy Date: Mon, 9 May 2022 19:27:29 +0100 Subject: [PATCH 71/72] Document Knuckles' gliding and wall-climbing code This parallels the documentation of this code in my 'Knuckles in Sonic 2' disassembly. Between the two version, there are the following differences: * KiS2 changes Knuckles' radius multiple extra times. * S3K has code for reverse-gravity mode. * S3K has an extra block of code for detaching Knuckles from walls if if the floor is directly under him even when he isn't moving, which introduces a bug where Knuckles' climbing animation always resets to the first frame when he isn't moving up or down. --- sonic3k.asm | 1197 +++++++++++++++++++++++++---------------- sonic3k.constants.asm | 2 +- 2 files changed, 725 insertions(+), 474 deletions(-) diff --git a/sonic3k.asm b/sonic3k.asm index 9c04b507..8de1efca 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -19494,7 +19494,7 @@ loc_F712: andi.b #$C0,d0 beq.w sub_F828 cmpi.b #$80,d0 - beq.w sub_FBEE + beq.w CheckCeilingDist_WithRadius cmpi.b #$40,d0 beq.w loc_FDC8 bra.w loc_FAA4 @@ -20039,9 +20039,9 @@ CheckCeilingDist_Part2: ; =============== S U B R O U T I N E ======================================= - -sub_FBEE: - move.b $1F(a0),d0 +; sub_FBEE: +CheckCeilingDist_WithRadius: + move.b x_radius(a0),d0 ext.w d0 sub.w d0,d2 eori.w #$F,d2 @@ -20051,7 +20051,7 @@ sub_FBEE: bsr.w FindFloor move.b #-$80,d2 bra.w loc_F81A -; End of function sub_FBEE +; End of function CheckCeilingDist_WithRadius ; =============== S U B R O U T I N E ======================================= @@ -30300,7 +30300,7 @@ Knux_Stand_Freespace: tst.b double_jump_flag(a0) bne.s Knux_Glide_Freespace bsr.w Knux_JumpHeight - bsr.w sub_17680 + bsr.w Knux_ChgJumpDir bsr.w Player_LevelBound jsr (MoveSprite_TestGravity).l btst #6,$2A(a0) @@ -30336,618 +30336,841 @@ Knuckles_Glide: beq.w Knuckles_Wall_Climb cmpi.b #5,d0 beq.w Knuckles_Climb_Ledge + + ; This function updates 'Gliding_collision_flags'. bsr.w Knux_DoLevelCollision_CheckRet - btst #1,(_unkF74E).w + + btst #Status_InAir,(Gliding_collision_flags).w beq.s Knux_Gliding_HitFloor - btst #5,(_unkF74E).w + + btst #Status_Push,(Gliding_collision_flags).w bne.w Knuckles_Gliding_HitWall + move.b (Ctrl_1_logical).w,d0 - andi.b #$70,d0 - bne.s loc_1690A + andi.b #button_A_mask|button_B_mask|button_C_mask,d0 + bne.s .continueGliding + + ; The player has let go of the jump button, so exit the gliding state + ; and enter the falling state. move.b #2,double_jump_flag(a0) - move.b #$21,$20(a0) - bclr #0,$2A(a0) - tst.w $18(a0) - bpl.s loc_168F4 - bset #0,$2A(a0) + move.b #$21,anim(a0) + bclr #Status_Facing,status(a0) + tst.w x_vel(a0) + bpl.s .skip1 + bset #Status_Facing,status(a0) + +.skip1: + ; Divide Knuckles' X velocity by 4. + asr.w x_vel(a0) + asr.w x_vel(a0) + + move.b default_y_radius(a0),y_radius(a0) + move.b default_x_radius(a0),x_radius(a0) -loc_168F4: - asr $18(a0) - asr $18(a0) - move.b $44(a0),$1E(a0) - move.b $45(a0),$1F(a0) rts ; --------------------------------------------------------------------------- - -loc_1690A: +; loc_1690A: +.continueGliding: bra.w Knuckles_Set_Gliding_Animation ; --------------------------------------------------------------------------- Knux_Gliding_HitFloor: - bclr #0,$2A(a0) - tst.w $18(a0) - bpl.s loc_16920 - bset #0,$2A(a0) - -loc_16920: - move.b $26(a0),d0 + bclr #Status_Facing,status(a0) + tst.w x_vel(a0) + bpl.s + + bset #Status_Facing,status(a0) ++ + move.b angle(a0),d0 addi.b #$20,d0 andi.b #$C0,d0 beq.s loc_1693E - move.w $1C(a0),$18(a0) - move.w #0,$1A(a0) + + move.w ground_vel(a0),x_vel(a0) + move.w #0,y_vel(a0) + bra.w Knux_TouchFloor ; --------------------------------------------------------------------------- loc_1693E: move.b #3,double_jump_flag(a0) - move.b #-$34,$22(a0) - move.b #$7F,$24(a0) - move.b #0,$23(a0) - cmpi.b #$C,$2C(a0) - blo.s locret_1696A - move.b #6,5(a6) - move.b #$15,$22(a6) + move.b #$CC,mapping_frame(a0) + move.b #$7F,anim_frame_timer(a0) + move.b #0,anim_frame(a0) -locret_1696A: + ; The drowning countdown uses the dust clouds' VRAM, so don't create + ; dust if Knuckles is drowning. + cmpi.b #12,air_left(a0) + blo.s + + ; Create dust clouds. + move.b #6,routine(a6) + move.b #$15,mapping_frame(a6) ++ rts ; --------------------------------------------------------------------------- Knuckles_Gliding_HitWall: tst.b (Disable_wall_grab).w - bmi.w loc_16A6E - move.b $47(a0),d5 - move.b $25(a0),d0 + bmi.w .fail + + move.b lrb_solid_bit(a0),d5 + move.b double_jump_property(a0),d0 addi.b #$40,d0 - bpl.s loc_16996 - bset #0,$2A(a0) + bpl.s .right + +;.left: + bset #Status_Facing,status(a0) + bsr.w CheckLeftCeilingDist or.w d0,d1 - bne.s loc_16A00 - addq.w #1,$10(a0) - bra.s loc_169A6 -; --------------------------------------------------------------------------- + bne.s .checkFloorLeft + + addq.w #1,x_pos(a0) + bra.s .success + +.right: + bclr #Status_Facing,status(a0) -loc_16996: - bclr #0,$2A(a0) bsr.w CheckRightCeilingDist or.w d0,d1 - bne.w loc_16A58 - -loc_169A6: + bne.w .checkFloorRight +; loc_169A6: +.success: moveq #signextendB(sfx_Grab),d0 + + ; If Hyper Knuckles glides into a wall at a high-enough + ; speed, then make the screen shake and harm all enemies + ; on-screen. tst.b (Super_Sonic_Knux_flag).w - bpl.s loc_169C2 - cmpi.w #$480,$1C(a0) - blo.s loc_169C2 + bpl.s .noQuake + + cmpi.w #$480,ground_vel(a0) + blo.s .noQuake + move.w #$14,(Glide_screen_shake).w bsr.w HyperAttackTouchResponse moveq #signextendB(sfx_Thump),d0 - -loc_169C2: +; loc_169C2: +.noQuake: jsr (Play_SFX).l - move.w #0,$1C(a0) - move.w #0,$18(a0) - move.w #0,$1A(a0) + move.w #0,ground_vel(a0) + move.w #0,x_vel(a0) + move.w #0,y_vel(a0) move.b #4,double_jump_flag(a0) - move.b #-$49,$22(a0) - move.b #$7F,$24(a0) - move.b #0,$23(a0) - move.b #3,$25(a0) - move.w $10(a0),$12(a0) + move.b #$B7,mapping_frame(a0) + move.b #$7F,anim_frame_timer(a0) + move.b #0,anim_frame(a0) + move.b #3,double_jump_property(a0) + ; 'x_pos+2' holds the X coordinate that Knuckles was at when he first + ; latched onto the wall. + move.w x_pos(a0),x_pos+2(a0) rts ; --------------------------------------------------------------------------- - -loc_16A00: - move.w $10(a0),d3 - move.b $1E(a0),d0 +; loc_16A00: +.checkFloorLeft: + ; This adds the Y radius to the X coordinate... + ; This appears to be a bug, but, luckily, the X and Y radius are both + ; 10, so this is harmless. + move.w x_pos(a0),d3 + move.b y_radius(a0),d0 ext.w d0 sub.w d0,d3 subq.w #1,d3 - tst.b (Reverse_gravity_flag).w - bne.s loc_16A34 -loc_16A14: - move.w $14(a0),d2 - subi.w #$B,d2 + tst.b (Reverse_gravity_flag).w + bne.s .reverseGravity +; loc_16A14: +.checkFloorCommon: + move.w y_pos(a0),d2 + subi.w #11,d2 jsr (ChkFloorEdge_Part3).l + tst.w d1 - bmi.s loc_16A6E - cmpi.w #$C,d1 - bhs.s loc_16A6E - add.w d1,$14(a0) - bra.w loc_169A6 + bmi.s .fail + cmpi.w #12,d1 + bhs.s .fail + add.w d1,y_pos(a0) + bra.w .success ; --------------------------------------------------------------------------- - -loc_16A34: - move.w $14(a0),d2 - addi.w #$B,d2 +; loc_16A34: +.reverseGravity: + move.w y_pos(a0),d2 + addi.w #11,d2 eori.w #$F,d2 jsr (ChkFloorEdge_ReverseGravity_Part2).l - tst.w d1 - bmi.s loc_16A6E - cmpi.w #$C,d1 - bhs.s loc_16A6E - sub.w d1,$14(a0) - bra.w loc_169A6 -; --------------------------------------------------------------------------- -loc_16A58: - move.w $10(a0),d3 - move.b $1E(a0),d0 + tst.w d1 + bmi.s .fail + cmpi.w #12,d1 + bhs.s .fail + sub.w d1,y_pos(a0) + bra.w .success +; --------------------------------------------------------------------------- +; loc_16A58: +.checkFloorRight: + ; This adds the Y radius to the X coordinate... + ; This appears to be a bug, but, luckily, the X and Y radius are both + ; 10, so this is harmless. + move.w x_pos(a0),d3 + move.b y_radius(a0),d0 ext.w d0 add.w d0,d3 addq.w #1,d3 + tst.b (Reverse_gravity_flag).w - bne.s loc_16A34 - bra.s loc_16A14 -; --------------------------------------------------------------------------- + bne.s Knuckles_Gliding_HitWall.reverseGravity -loc_16A6E: + bra.s .checkFloorCommon +; --------------------------------------------------------------------------- +; loc_16A6E: +.fail: move.b #2,double_jump_flag(a0) - move.b #$21,$20(a0) - move.b $44(a0),$1E(a0) - move.b $45(a0),$1F(a0) - bset #1,(_unkF74E).w + move.b #$21,anim(a0) + move.b default_y_radius(a0),y_radius(a0) + move.b default_x_radius(a0),x_radius(a0) + bset #Status_InAir,(Gliding_collision_flags).w rts ; --------------------------------------------------------------------------- Knuckles_Fall_From_Glide: - bsr.w sub_17680 - addi.w #$38,$1A(a0) - btst #6,$2A(a0) - beq.s loc_16AA6 - subi.w #$28,$1A(a0) + bsr.w Knux_ChgJumpDir + + ; Apply gravity. + addi.w #$38,y_vel(a0) + + ; Fall slower when underwater. + btst #Status_Underwater,status(a0) + beq.s .skip1 + subi.w #$28,y_vel(a0) -loc_16AA6: +.skip1: + ; This function updates 'Gliding_collision_flags'. bsr.w Knux_DoLevelCollision_CheckRet - btst #1,(_unkF74E).w - bne.s locret_16B04 - move.w #0,$1C(a0) - move.w #0,$18(a0) - move.w #0,$1A(a0) - move.b $1E(a0),d0 - sub.b $44(a0),d0 + + btst #Status_InAir,(Gliding_collision_flags).w + bne.s .return + + ; Knuckles has touched the ground. + move.w #0,ground_vel(a0) + move.w #0,x_vel(a0) + move.w #0,y_vel(a0) + + move.b y_radius(a0),d0 + sub.b default_y_radius(a0),d0 ext.w d0 tst.b (Reverse_gravity_flag).w - beq.s loc_16AD6 + beq.s .skip2 neg.w d0 -loc_16AD6: - add.w d0,$14(a0) +.skip2: + add.w d0,y_pos(a0) + moveq #signextendB(sfx_GlideLand),d0 jsr (Play_SFX).l - move.b $26(a0),d0 + + move.b angle(a0),d0 addi.b #$20,d0 andi.b #$C0,d0 - beq.s loc_16AF4 + beq.s .skip3 bra.w Knux_TouchFloor -; --------------------------------------------------------------------------- -loc_16AF4: +.skip3: bsr.w Knux_TouchFloor - move.w #$F,$32(a0) - move.b #$23,$20(a0) - -locret_16B04: + move.w #$F,move_lock(a0) + move.b #$23,anim(a0) +; locret_16B04: +.return: rts ; --------------------------------------------------------------------------- Knuckles_Sliding: move.b (Ctrl_1_logical).w,d0 - andi.b #$70,d0 - beq.s loc_16B2A - tst.w $18(a0) - bpl.s loc_16B22 - addi.w #$20,$18(a0) - bmi.s loc_16B20 - bra.s loc_16B2A -; --------------------------------------------------------------------------- + andi.b #button_A_mask|button_B_mask|button_C_mask,d0 + beq.s .getUp -loc_16B20: - bra.s loc_16B64 -; --------------------------------------------------------------------------- + tst.w x_vel(a0) + bpl.s .goingRight -loc_16B22: - subi.w #$20,$18(a0) - bpl.s loc_16B64 +;.goingLeft: + addi.w #$20,x_vel(a0) + bmi.s .continueSliding2 -loc_16B2A: - move.w #0,$1C(a0) - move.w #0,$18(a0) - move.w #0,$1A(a0) - move.b $1E(a0),d0 - sub.b $44(a0),d0 + bra.s .getUp +; --------------------------------------------------------------------------- +; loc_16B20: +.continueSliding2: + bra.s .continueSliding +; --------------------------------------------------------------------------- +; loc_16B22: +.goingRight: + subi.w #$20,x_vel(a0) + bpl.s .continueSliding +; loc_16B2A: +.getUp: + move.w #0,ground_vel(a0) + move.w #0,x_vel(a0) + move.w #0,y_vel(a0) + + move.b y_radius(a0),d0 + sub.b default_y_radius(a0),d0 ext.w d0 tst.b (Reverse_gravity_flag).w - beq.s loc_16B4E + beq.s .skip1 neg.w d0 -loc_16B4E: - add.w d0,$14(a0) +.skip1: + add.w d0,y_pos(a0) + bsr.w Knux_TouchFloor - move.w #$F,$32(a0) - move.b #$22,$20(a0) + + move.w #$F,move_lock(a0) + move.b #$22,anim(a0) + rts ; --------------------------------------------------------------------------- - -loc_16B64: +; loc_16B64: +.continueSliding: bsr.w Knux_DoLevelCollision_CheckRet + + ; Get distance from floor in 'd1', and angle of floor in 'd3'. bsr.w sub_11FD6 - cmpi.w #$E,d1 - bge.s loc_16B96 + + ; If the distance from the floor is suddenly really high, then + ; Knuckles must have slid off a ledge, so make him enter his falling + ; state. + cmpi.w #14,d1 + bge.s .fail + tst.b (Reverse_gravity_flag).w - beq.s loc_16B7A + beq.s .skip2 neg.w d1 -loc_16B7A: - add.w d1,$14(a0) - move.b d3,$26(a0) +.skip2: + add.w d1,y_pos(a0) + move.b d3,angle(a0) + + ; Play the sliding sound every 8 frames. move.b (Level_frame_counter+1).w,d0 andi.b #7,d0 - bne.s locret_16B94 + bne.s .skip3 + moveq #signextendB(sfx_GroundSlide),d0 jsr (Play_SFX).l - -locret_16B94: +.skip3: rts ; --------------------------------------------------------------------------- - -loc_16B96: +; loc_16B96: +.fail: move.b #2,double_jump_flag(a0) - move.b #$21,$20(a0) - move.b $44(a0),$1E(a0) - move.b $45(a0),$1F(a0) - bset #1,(_unkF74E).w + move.b #$21,anim(a0) + + move.b default_y_radius(a0),y_radius(a0) + move.b default_x_radius(a0),x_radius(a0) + + bset #Status_InAir,(Gliding_collision_flags).w rts ; --------------------------------------------------------------------------- Knuckles_Wall_Climb: tst.b (Disable_wall_grab).w - bmi.w loc_16ED2 - move.w $10(a0),d0 - cmp.w $12(a0),d0 - bne.w loc_16ED2 - btst #3,$2A(a0) - bne.w loc_16ED2 - move.w #0,$1C(a0) - move.w #0,$18(a0) - move.w #0,$1A(a0) + bmi.w Knuckles_LetGoOfWall + + ; If Knuckles' X coordinate is no longer the same as when he first + ; latched onto the wall, then detach him from the wall. This is + ; probably intended to detach Knuckles from the wall if something + ; physically pushes him away from it. + move.w x_pos(a0),d0 + cmp.w x_pos+2(a0),d0 + bne.w Knuckles_LetGoOfWall + + ; If an object is now carrying Knuckles, then detach him from the + ; wall. + btst #Status_OnObj,status(a0) + bne.w Knuckles_LetGoOfWall + + move.w #0,ground_vel(a0) + move.w #0,x_vel(a0) + move.w #0,y_vel(a0) + move.l (Primary_collision_addr).w,(Collision_addr).w - cmpi.b #$D,$47(a0) - beq.s loc_16BFA + cmpi.b #$D,lrb_solid_bit(a0) + beq.s + move.l (Secondary_collision_addr).w,(Collision_addr).w ++ + move.b lrb_solid_bit(a0),d5 -loc_16BFA: - move.b $47(a0),d5 - moveq #0,d1 - btst #0,(Ctrl_1_logical).w - beq.w loc_16D10 + moveq #0,d1 ; Climbing animation delta: make the animation pause. + + btst #button_up,(Ctrl_1_logical).w + beq.w .notClimbingUp + +;.climbingUp: tst.b (Reverse_gravity_flag).w - bne.w loc_16DA8 - move.w $14(a0),d2 - subi.w #$B,d2 - bsr.w sub_16F4E + bne.w .climbingUp_ReverseGravity + + ; Get Knuckles' distance from the wall in 'd1'. + move.w y_pos(a0),d2 + subi.w #11,d2 + bsr.w GetDistanceFromWall + + ; If the wall is far away from Knuckles, then we must have reached a + ; ledge, so make Knuckles climb up onto it. cmpi.w #4,d1 - bge.w loc_16EBA + bge.w Knuckles_ClimbUp + + ; If Knuckles has encountered a small dip in the wall, then make him + ; stop. tst.w d1 - bne.w loc_16E60 - move.b $47(a0),d5 - move.w $14(a0),d2 + bne.w .notMoving + + ; Get Knuckles' distance from the ceiling in 'd1'. + move.b lrb_solid_bit(a0),d5 + move.w y_pos(a0),d2 subq.w #8,d2 - move.w $10(a0),d3 - bsr.w sub_FBEE + move.w x_pos(a0),d3 + bsr.w CheckCeilingDist_WithRadius + + ; Check if Knuckles has room above him. tst.w d1 - bpl.s loc_16C4C - sub.w d1,$14(a0) - moveq #1,d1 - bra.w loc_16E10 + bpl.s .moveUp + + ; Knuckles is bumping into the ceiling, so push him out. + sub.w d1,y_pos(a0) + + moveq #1,d1 ; Climbing animation delta: make the animation play forwards. + bra.w .finishMoving ; --------------------------------------------------------------------------- +; loc_16C4C: +.moveUp: + subq.w #1,y_pos(a0) -loc_16C4C: - subq.w #1,$14(a0) + ; Super Knuckles and Hyper Knuckles climb walls faster. tst.b (Super_Sonic_Knux_flag).w - beq.s loc_16C5A - subq.w #1,$14(a0) + beq.s .notSuperOrHyper1 + subq.w #1,y_pos(a0) -loc_16C5A: - moveq #1,d1 +.notSuperOrHyper1: + moveq #1,d1 ; Climbing animation delta: make the animation play forwards. + + ; Don't let Knuckles climb through the level's upper boundary. move.w (Camera_min_Y_pos).w,d0 + + ; If the level wraps vertically, then don't bother with any of this. cmpi.w #-$100,d0 - beq.w loc_16E10 - addi.w #$10,d0 - cmp.w $14(a0),d0 - ble.w loc_16E10 - move.w d0,$14(a0) - bra.w loc_16E10 -; --------------------------------------------------------------------------- + beq.w .finishMoving -loc_16C7C: - cmpi.b #$BD,$22(a0) - bne.s loc_16C9E - move.b #$B7,$22(a0) - subq.w #3,$14(a0) - subq.w #3,$10(a0) - btst #0,$2A(a0) - beq.s loc_16C9E - addq.w #6,$10(a0) + ; Check if Knuckles is over the level's top boundary. + addi.w #16,d0 + cmp.w y_pos(a0),d0 + ble.w .finishMoving -loc_16C9E: - move.w $14(a0),d2 - subi.w #$B,d2 - bsr.w sub_16F4E + ; Knuckles is climbing over the level's top boundary: push him back + ; down. + move.w d0,y_pos(a0) + bra.w .finishMoving +; --------------------------------------------------------------------------- +; loc_16C7C: +.climbingDown_ReverseGravity: + ; Knuckles is climbing down. + + ; ...I'm not sure what this code is for. + cmpi.b #$BD,mapping_frame(a0) + bne.s .skip3 + move.b #$B7,mapping_frame(a0) + subq.w #3,y_pos(a0) + subq.w #3,x_pos(a0) + btst #Status_Facing,status(a0) + beq.s .skip3 + addq.w #3*2,x_pos(a0) + +.skip3: + ; Get Knuckles' distance from the wall in 'd1'. + move.w y_pos(a0),d2 + subi.w #11,d2 + bsr.w GetDistanceFromWall + + ; If Knuckles is no longer against the wall (he has climbed off the + ; bottom of it) then make him let go. tst.w d1 - bne.w loc_16ED2 - move.b $46(a0),d5 - move.w $14(a0),d2 + bne.w Knuckles_LetGoOfWall + + ; Get Knuckles' distance from the floor in 'd1'. + move.b top_solid_bit(a0),d5 + move.w y_pos(a0),d2 subi.w #9,d2 - move.w $10(a0),d3 - bsr.w sub_FBEE + move.w x_pos(a0),d3 + bsr.w CheckCeilingDist_WithRadius + + ; Check if Knuckles has room below him. tst.w d1 - bpl.s loc_16CFC - sub.w d1,$14(a0) + bpl.s .moveDown_ReverseGravity + + ; Knuckles has reached the floor. + sub.w d1,y_pos(a0) move.b (Primary_Angle).w,d0 addi.b #$40,d0 neg.b d0 subi.b #$40,d0 - move.b d0,$26(a0) - move.w #0,$1C(a0) - move.w #0,$18(a0) - move.w #0,$1A(a0) + move.b d0,angle(a0) + + move.w #0,ground_vel(a0) + move.w #0,x_vel(a0) + move.w #0,y_vel(a0) + bsr.w Knux_TouchFloor - move.b #5,$20(a0) + + move.b #5,anim(a0) + rts ; --------------------------------------------------------------------------- +; loc_16CFC: +.moveDown_ReverseGravity: + subq.w #1,y_pos(a0) -loc_16CFC: - subq.w #1,$14(a0) + ; Super Knuckles and Hyper Knuckles climb walls faster. tst.b (Super_Sonic_Knux_flag).w - beq.s loc_16D0A - subq.w #1,$14(a0) + beq.s .notSuperOrHyper2 + subq.w #1,y_pos(a0) -loc_16D0A: - moveq #-1,d1 - bra.w loc_16E10 +.notSuperOrHyper2: + moveq #-1,d1 ; Climbing animation delta: make the animation play backwards. + bra.w .finishMoving ; --------------------------------------------------------------------------- +; loc_16D10: +.notClimbingUp: + btst #button_down,(Ctrl_1_logical).w + beq.w .finishMoving -loc_16D10: - btst #1,(Ctrl_1_logical).w - beq.w loc_16E10 +;.climbingDown: tst.b (Reverse_gravity_flag).w - bne.w loc_16C7C - cmpi.b #$BD,$22(a0) - bne.s loc_16D44 - move.b #$B7,$22(a0) - addq.w #3,$14(a0) - subq.w #3,$10(a0) - btst #0,$2A(a0) - beq.s loc_16D44 - addq.w #6,$10(a0) + bne.w .climbingDown_ReverseGravity + + ; ...I'm not sure what this code is for. + cmpi.b #$BD,mapping_frame(a0) + bne.s .skip4 + move.b #$B7,mapping_frame(a0) + addq.w #3,y_pos(a0) + subq.w #3,x_pos(a0) + btst #Status_Facing,status(a0) + beq.s .skip4 + addq.w #3*2,x_pos(a0) -loc_16D44: - move.w $14(a0),d2 - addi.w #$B,d2 - bsr.w sub_16F4E +.skip4: + ; Get Knuckles' distance from the wall in 'd1'. + move.w y_pos(a0),d2 + addi.w #11,d2 + bsr.w GetDistanceFromWall + + ; If Knuckles is no longer against the wall (he has climbed off the + ; bottom of it) then make him let go. tst.w d1 - bne.w loc_16ED2 - move.b $46(a0),d5 - move.w $14(a0),d2 + bne.w Knuckles_LetGoOfWall + + ; Get Knuckles' distance from the floor in 'd1'. + move.b top_solid_bit(a0),d5 + move.w y_pos(a0),d2 addi.w #9,d2 - move.w $10(a0),d3 + move.w x_pos(a0),d3 bsr.w sub_F828 + + ; Check if Knuckles has room below him. tst.w d1 - bpl.s loc_16D96 + bpl.s .moveDown +; loc_16D6E: +.reachedFloor: + ; Knuckles has reached the floor. + add.w d1,y_pos(a0) + move.b (Primary_Angle).w,angle(a0) + + move.w #0,ground_vel(a0) + move.w #0,x_vel(a0) + move.w #0,y_vel(a0) -loc_16D6E: - add.w d1,$14(a0) - move.b (Primary_Angle).w,$26(a0) - move.w #0,$1C(a0) - move.w #0,$18(a0) - move.w #0,$1A(a0) bsr.w Knux_TouchFloor - move.b #5,$20(a0) + + move.b #5,anim(a0) + rts ; --------------------------------------------------------------------------- +; loc_16D96: +.moveDown: + addq.w #1,y_pos(a0) -loc_16D96: - addq.w #1,$14(a0) + ; Super Knuckles and Hyper Knuckles climb walls faster. tst.b (Super_Sonic_Knux_flag).w - beq.s loc_16DA4 - addq.w #1,$14(a0) + beq.s .notSuperOrHyper3 + addq.w #1,y_pos(a0) -loc_16DA4: - moveq #-1,d1 - bra.s loc_16E10 +.notSuperOrHyper3: + moveq #-1,d1 ; Climbing animation delta: make the animation play backwards. + bra.s .finishMoving ; --------------------------------------------------------------------------- +; loc_16DA8: +.climbingUp_ReverseGravity: + ; Get Knuckles' distance from the wall in 'd1'. + move.w y_pos(a0),d2 + addi.w #11,d2 + bsr.w GetDistanceFromWall -loc_16DA8: - move.w $14(a0),d2 - addi.w #$B,d2 - bsr.w sub_16F4E + ; If the wall is far away from Knuckles, then we must have reached a + ; ledge, so make Knuckles climb up onto it. cmpi.w #4,d1 - bge.w loc_16EBA + bge.w Knuckles_ClimbUp + + ; If Knuckles has encountered a small dip in the wall, then make him + ; stop. tst.w d1 - bne.w loc_16E60 - move.b $47(a0),d5 - move.w $14(a0),d2 + bne.w .notMoving + + ; Get Knuckles' distance from the ceiling in 'd1'. + move.b lrb_solid_bit(a0),d5 + move.w y_pos(a0),d2 addq.w #8,d2 - move.w $10(a0),d3 + move.w x_pos(a0),d3 bsr.w sub_F828 + + ; Check if Knuckles has room above him. tst.w d1 - bpl.s loc_16DE2 - add.w d1,$14(a0) - moveq #1,d1 - bra.w loc_16E10 + bpl.s .moveUp_ReverseGravity + + ; Knuckles is bumping into the ceiling, so push him out. + add.w d1,y_pos(a0) + + moveq #1,d1 ; Climbing animation delta: make the animation play forwards. + bra.w .finishMoving ; --------------------------------------------------------------------------- +; loc_16DE2: +.moveUp_ReverseGravity: + addq.w #1,y_pos(a0) -loc_16DE2: - addq.w #1,$14(a0) + ; Super Knuckles and Hyper Knuckles climb walls faster. tst.b (Super_Sonic_Knux_flag).w - beq.s loc_16DF0 - addq.w #1,$14(a0) + beq.s .notSuperOrHyper4 + addq.w #1,y_pos(a0) -loc_16DF0: - moveq #1,d1 +.notSuperOrHyper4: + moveq #1,d1 ; Climbing animation delta: make the animation play forwards. + + ; Don't let Knuckles climb through the level's upper boundary. + + ; If the level wraps vertically, then don't bother with any of this. cmpi.w #-$100,(Camera_min_Y_pos).w - beq.w loc_16E10 + beq.w .finishMoving + + ; Check if Knuckles is over the level's top boundary. move.w (Camera_max_Y_pos).w,d0 addi.w #$D0,d0 - cmp.w $14(a0),d0 - bge.w loc_16E10 - move.w d0,$14(a0) + cmp.w y_pos(a0),d0 + bge.w .finishMoving -loc_16E10: - move.b (Ctrl_1_logical).w,d0 - andi.b #3,d0 - bne.s loc_16E34 - move.b $46(a0),d5 - move.w $14(a0),d2 + ; Knuckles is climbing over the level's top boundary: push him back + ; down. + move.w d0,y_pos(a0) +; loc_16E10: +.finishMoving: + ; This block of code was not here in KiS2. + ; This code detaches Knuckles from the wall if there is + ; ground directly below him. Note that this code specifically + ; does not run if the player is holding up or down: this is + ; because similar code already runs if either of those + ; buttons are being held. Presumably, this check was added so + ; that Knuckles would properly detach from the wall if a + ; rising floor (think Marble Garden Zone Act 2) came up from + ; under him. With that said, KiS2 lacks this logic, and yet + ; Knuckles seems to detach from the wall in Hill Top Zone's + ; rising wall section just fine, so I'm not sure whether this + ; code was ever actually needed in the first place. + move.b (Ctrl_1_held_logical).w,d0 + andi.b #button_up_mask|button_down_mask,d0 + bne.s .isMovingUpOrDown + + ; Get Knuckles' distance from the floor in 'd1'. + move.b top_solid_bit(a0),d5 + move.w y_pos(a0),d2 addi.w #9,d2 - move.w $10(a0),d3 + move.w x_pos(a0),d3 bsr.w sub_F828 + + ; Check if Knuckles has room below him. tst.w d1 - bmi.w loc_16D6E + bmi.w .reachedFloor -loc_16E34: + ; Bug! 'd1' has been overwritten by 'sub_F828', but the code + ; after this needs it for updating Knuckles' animation. This + ; bug is the reason why Knuckles resets to his first climbing + ; frame when the player is not holding up or down. + +.isMovingUpOrDown: + ; If Knuckles has not moved, skip this. tst.w d1 - beq.s loc_16E60 - subq.b #1,$25(a0) - bpl.s loc_16E60 - move.b #3,$25(a0) - add.b $22(a0),d1 + beq.s .notMoving + + ; Only animate every 4 frames. + subq.b #1,double_jump_property(a0) + bpl.s .notMoving + move.b #3,double_jump_property(a0) + + ; Add delta to animation frame. + add.b mapping_frame(a0),d1 + + ; Make the animation loop. cmpi.b #$B7,d1 - bhs.s loc_16E52 + bhs.s .noLoop1 move.b #$BC,d1 -loc_16E52: +.noLoop1: cmpi.b #$BC,d1 - bls.s loc_16E5C + bls.s .noLoop2 move.b #$B7,d1 -loc_16E5C: - move.b d1,$22(a0) +.noLoop2: + ; Apply the frame. + move.b d1,mapping_frame(a0) +; loc_16E60: +.notMoving: + move.b #$20,anim_frame_timer(a0) + move.b #0,anim_frame(a0) -loc_16E60: - move.b #$20,$24(a0) - move.b #0,$23(a0) move.w (Ctrl_1_logical).w,d0 - andi.w #$70,d0 - beq.s locret_16EB8 - move.w #-$380,$1A(a0) - move.w #$400,$18(a0) - bchg #0,$2A(a0) - bne.s loc_16E8E - neg.w $18(a0) + andi.w #button_A_mask|button_B_mask|button_C_mask,d0 + beq.s .hasNotJumped -loc_16E8E: - bset #1,$2A(a0) - move.b #1,$40(a0) - move.b #$E,$1E(a0) - move.b #7,$1F(a0) - move.b #2,$20(a0) - bset #2,$2A(a0) - move.b #0,double_jump_flag(a0) + ; Knuckles has jumped off the wall. + move.w #-$380,y_vel(a0) + move.w #$400,x_vel(a0) + + bchg #Status_Facing,status(a0) + bne.s .goingRight + neg.w x_vel(a0) -locret_16EB8: +.goingRight: + bset #Status_InAir,status(a0) + move.b #1,jumping(a0) + + move.b #$E,y_radius(a0) + move.b #7,x_radius(a0) + + move.b #2,anim(a0) + bset #Status_Roll,status(a0) + move.b #0,double_jump_flag(a0) +; locret_16EB8: +.hasNotJumped: rts ; --------------------------------------------------------------------------- - -loc_16EBA: +; loc_16EBA: +Knuckles_ClimbUp: move.b #5,double_jump_flag(a0) - cmpi.b #-$43,$22(a0) - beq.s locret_16ED0 - move.b #0,$25(a0) - bsr.s sub_16EFE -locret_16ED0: + cmpi.b #$BD,mapping_frame(a0) + beq.s + + + move.b #0,double_jump_property(a0) + bsr.s Knuckles_DoLedgeClimbingAnimation ++ rts ; --------------------------------------------------------------------------- - -loc_16ED2: +; loc_16ED2: +Knuckles_LetGoOfWall: move.b #2,double_jump_flag(a0) - move.w #$2121,$20(a0) - move.b #$CB,$22(a0) - move.b #7,$24(a0) - move.b #1,$23(a0) - move.b $44(a0),$1E(a0) - move.b $45(a0),$1F(a0) + + move.w #$2121,anim(a0) + move.b #$CB,mapping_frame(a0) + move.b #7,anim_frame_timer(a0) + move.b #1,anim_frame(a0) + + move.b default_y_radius(a0),y_radius(a0) + move.b default_x_radius(a0),x_radius(a0) + rts ; End of function Knuckles_Glide ; =============== S U B R O U T I N E ======================================= - -sub_16EFE: +; sub_16EFE: +Knuckles_DoLedgeClimbingAnimation: moveq #0,d0 - move.b $25(a0),d0 + move.b double_jump_property(a0),d0 lea Knuckles_ClimbLedge_Frames(pc,d0.w),a1 - move.b (a1)+,$22(a0) + + move.b (a1)+,mapping_frame(a0) + move.b (a1)+,d0 ext.w d0 - btst #0,$2A(a0) - beq.s loc_16F1A + btst #Status_Facing,status(a0) + beq.s + neg.w d0 ++ + add.w d0,x_pos(a0) -loc_16F1A: - add.w d0,$10(a0) move.b (a1)+,d1 ext.w d1 tst.b (Reverse_gravity_flag).w - beq.s loc_16F2A + beq.s + neg.w d1 ++ + add.w d1,y_pos(a0) -loc_16F2A: - add.w d1,$14(a0) - move.b (a1)+,$24(a0) - addq.b #4,$25(a0) - move.b #0,$23(a0) + move.b (a1)+,anim_frame_timer(a0) + + addq.b #4,double_jump_property(a0) + move.b #0,anim_frame(a0) rts -; End of function sub_16EFE +; End of function Knuckles_DoLedgeClimbingAnimation ; --------------------------------------------------------------------------- +; Strangely, the last frame uses frame $D2. It will never be seen, however, +; because it is immediately overwritten by Knuckles' waiting animation. + Knuckles_ClimbLedge_Frames: ; mapping_frame, x_pos, y_pos, anim_frame_timer dc.b $BD, 3, -3, 6 dc.b $BE, 8, -10, 6 dc.b $BF, -8, -12, 6 dc.b $D2, 8, -5, 6 +Knuckles_ClimbLedge_Frames_End: ; =============== S U B R O U T I N E ======================================= +; sub_16F4E: +GetDistanceFromWall: + move.b lrb_solid_bit(a0),d5 + btst #Status_Facing,status(a0) + bne.s .facingLeft -sub_16F4E: - move.b $47(a0),d5 - btst #0,$2A(a0) - bne.s loc_16F62 - move.w $10(a0),d3 +;.facingRight: + move.w x_pos(a0),d3 bra.w loc_FAA4 ; --------------------------------------------------------------------------- - -loc_16F62: - move.w $10(a0),d3 +; loc_16F62: +.facingLeft: + move.w x_pos(a0),d3 subq.w #1,d3 bra.w loc_FDC8 -; End of function sub_16F4E +; End of function GetDistanceFromWall ; --------------------------------------------------------------------------- Knuckles_Climb_Ledge: - tst.b $24(a0) + tst.b anim_frame_timer(a0) bne.s locret_16FA6 - bsr.w sub_16EFE - cmpi.b #$10,$25(a0) + + bsr.w Knuckles_DoLedgeClimbingAnimation + + ; Have we reached the end of the ledge-climbing animation? + cmpi.b #Knuckles_ClimbLedge_Frames_End-Knuckles_ClimbLedge_Frames,double_jump_property(a0) bne.s locret_16FA6 - move.w #0,$1C(a0) - move.w #0,$18(a0) - move.w #0,$1A(a0) - btst #0,$2A(a0) - beq.s loc_16F9C - subq.w #1,$10(a0) -loc_16F9C: + ; Yes. + move.w #0,ground_vel(a0) + move.w #0,x_vel(a0) + move.w #0,y_vel(a0) + + btst #Status_Facing,status(a0) + beq.s + + subq.w #1,x_pos(a0) ++ bsr.w Knux_TouchFloor - move.b #5,$20(a0) + move.b #5,anim(a0) locret_16FA6: rts @@ -30956,23 +31179,24 @@ locret_16FA6: Knuckles_Set_Gliding_Animation: - move.b #$20,$24(a0) - move.b #0,$23(a0) - move.w #$2020,$20(a0) - bclr #5,$2A(a0) - bclr #0,$2A(a0) + move.b #$20,anim_frame_timer(a0) + move.b #0,anim_frame(a0) + move.w #$2020,anim(a0) + bclr #Status_Push,status(a0) + bclr #Status_Facing,status(a0) + + ; Update Knuckles' frame, depending on where he's facing. moveq #0,d0 - move.b $25(a0),d0 + move.b double_jump_property(a0),d0 addi.b #$10,d0 lsr.w #5,d0 move.b RawAni_Knuckles_GlideTurn(pc,d0.w),d1 - move.b d1,$22(a0) + move.b d1,mapping_frame(a0) cmpi.b #$C4,d1 - bne.s locret_16FEC - bset #0,$2A(a0) - move.b #$C0,$22(a0) - -locret_16FEC: + bne.s + + bset #Status_Facing,status(a0) + move.b #$C0,mapping_frame(a0) ++ rts ; End of function Knuckles_Set_Gliding_Animation @@ -30992,96 +31216,123 @@ RawAni_Knuckles_GlideTurn: Knuckles_Move_Glide: cmpi.b #1,double_jump_flag(a0) - bne.w loc_170B4 - move.w $1C(a0),d0 + bne.w .doNotKillspeed + + move.w ground_vel(a0),d0 cmpi.w #$400,d0 - bhs.s loc_1700E + bhs.s .mediumSpeed + +;.lowSpeed: + ; Increase Knuckles' speed. addq.w #8,d0 - bra.s loc_17028 + bra.s .applySpeed ; --------------------------------------------------------------------------- - -loc_1700E: +; loc_1700E: +.mediumSpeed: + ; If Knuckles is at his speed limit, then don't increase his speed. cmpi.w #$1800,d0 - bhs.s loc_17028 - move.b $25(a0),d1 + bhs.s .applySpeed + + ; If Knuckles is turning, then don't increase his speed either. + move.b double_jump_property(a0),d1 andi.b #$7F,d1 - bne.s loc_17028 + bne.s .applySpeed + + ; Increase Knuckles' speed. addq.w #4,d0 + + ; Super Knuckles and Hyper Knuckles glide faster. tst.b (Super_Sonic_Knux_flag).w - beq.s loc_17028 + beq.s .applySpeed addq.w #8,d0 +; loc_17028: +.applySpeed: + move.w d0,ground_vel(a0) -loc_17028: - move.w d0,$1C(a0) - move.b $25(a0),d0 - btst #2,(Ctrl_1_logical).w - beq.s loc_17048 + move.b double_jump_property(a0),d0 + btst #button_left,(Ctrl_1_logical).w + beq.s .notHoldingLeft + +;.holdingLeft: + ; Playing is holding left. cmpi.b #$80,d0 - beq.s loc_17048 + beq.s .notHoldingLeft tst.b d0 - bpl.s loc_17044 + bpl.s .doNotNegate1 neg.b d0 -loc_17044: +.doNotNegate1: addq.b #2,d0 - bra.s loc_17066 + bra.s .setNewTurningValue ; --------------------------------------------------------------------------- +; loc_17048: +.notHoldingLeft: + btst #button_right,(Ctrl_1_logical).w + beq.s .notHoldingRight -loc_17048: - btst #3,(Ctrl_1_logical).w - beq.s loc_1705C +;.holdingRight: + ; Playing is holding right. tst.b d0 - beq.s loc_1705C - bmi.s loc_17058 + beq.s .notHoldingRight + bmi.s .doNotNegate2 neg.b d0 -loc_17058: +.doNotNegate2: addq.b #2,d0 - bra.s loc_17066 + bra.s .setNewTurningValue ; --------------------------------------------------------------------------- - -loc_1705C: +; loc_1705C: +.notHoldingRight: move.b d0,d1 andi.b #$7F,d1 - beq.s loc_17066 + beq.s .setNewTurningValue addq.b #2,d0 +; loc_17066: +.setNewTurningValue: + move.b d0,double_jump_property(a0) -loc_17066: - move.b d0,$25(a0) - move.b $25(a0),d0 + move.b double_jump_property(a0),d0 jsr (GetSineCosine).l - muls.w $1C(a0),d1 + muls.w ground_vel(a0),d1 asr.l #8,d1 - move.w d1,$18(a0) - cmpi.w #$80,$1A(a0) - blt.s loc_1708E - subi.w #$20,$1A(a0) - bra.s loc_17094 -; --------------------------------------------------------------------------- - -loc_1708E: - addi.w #$20,$1A(a0) - -loc_17094: + move.w d1,x_vel(a0) + + ; Is Knuckles is falling at a high speed, then create a parachute + ; effect, where gliding makes Knuckles fall slower. + cmpi.w #$80,y_vel(a0) + blt.s .fallingSlow + subi.w #$20,y_vel(a0) + bra.s .fallingFast +; --------------------------------------------------------------------------- +; loc_1708E: +.fallingSlow: + ; Apply gravity. + addi.w #$20,y_vel(a0) +; loc_17094: +.fallingFast: + ; If Knuckles is above the level's top boundary, then kill his + ; horizontal speed. move.w (Camera_min_Y_pos).w,d0 cmpi.w #-$100,d0 - beq.w loc_170B4 + beq.w .doNotKillspeed + addi.w #$10,d0 - cmp.w $14(a0),d0 - ble.w loc_170B4 - asr $18(a0) - asr $1C(a0) + cmp.w y_pos(a0),d0 + ble.w .doNotKillspeed -loc_170B4: + asr.w x_vel(a0) + asr.w ground_vel(a0) +; loc_170B4: +.doNotKillspeed: cmpi.w #$60,(a5) - beq.s locret_170C0 - bcc.s loc_170BE - addq.w #4,(a5) + beq.s .doNotModifyBias + bhs.s .goUp + addq.w #2*2,(a5) -loc_170BE: +.goUp: subq.w #2,(a5) - -locret_170C0: +; locret_170C0: +.doNotModifyBias: rts ; End of function Knuckles_Move_Glide @@ -31125,7 +31376,7 @@ locret_17116: Knux_Spin_Freespace: bsr.w Knux_JumpHeight - bsr.w sub_17680 + bsr.w Knux_ChgJumpDir bsr.w Player_LevelBound jsr (MoveSprite_TestGravity).l btst #6,$2A(a0) @@ -31700,8 +31951,8 @@ loc_1767A: ; =============== S U B R O U T I N E ======================================= - -sub_17680: +; sub_17680: +Knux_ChgJumpDir: move.w (a4),d6 move.w 2(a4),d5 asl.w #1,d5 @@ -31772,7 +32023,7 @@ loc_1770A: locret_1770E: rts -; End of function sub_17680 +; End of function Knux_ChgJumpDir ; =============== S U B R O U T I N E ======================================= @@ -31926,8 +32177,8 @@ loc_178AE: move.w d0,$18(a0) move.b d1,$25(a0) move.w #0,$26(a0) - move.b #0,(_unkF74E).w - bset #1,(_unkF74E).w + move.b #0,(Gliding_collision_flags).w + bset #Status_InAir,(Gliding_collision_flags).w bsr.w Knuckles_Set_Gliding_Animation locret_178CC: @@ -31992,7 +32243,7 @@ loc_17952: bpl.s loc_1799C sub.w d1,$10(a0) move.w #0,$18(a0) - bset #5,(_unkF74E).w + bset #Status_Push,(Gliding_collision_flags).w loc_1799C: bsr.w CheckRightWallDist @@ -32000,7 +32251,7 @@ loc_1799C: bpl.s loc_179B4 add.w d1,$10(a0) move.w #0,$18(a0) - bset #5,(_unkF74E).w + bset #Status_Push,(Gliding_collision_flags).w loc_179B4: bsr.w sub_11FD6 @@ -32014,7 +32265,7 @@ loc_179C4: add.w d1,$14(a0) move.b d3,$26(a0) move.w #0,$1A(a0) - bclr #1,(_unkF74E).w + bclr #Status_InAir,(Gliding_collision_flags).w locret_179D8: rts @@ -32026,7 +32277,7 @@ loc_179DA: bpl.s loc_179F2 sub.w d1,$10(a0) move.w #0,$18(a0) - bset #5,(_unkF74E).w + bset #Status_Push,(Gliding_collision_flags).w loc_179F2: bsr.w sub_11FEE @@ -32055,7 +32306,7 @@ loc_17A1C: bpl.s locret_17A34 add.w d1,$10(a0) move.w #0,$18(a0) - bset #5,(_unkF74E).w + bset #Status_Push,(Gliding_collision_flags).w locret_17A34: rts @@ -32075,7 +32326,7 @@ loc_17A4C: add.w d1,$14(a0) move.b d3,$26(a0) move.w #0,$1A(a0) - bclr #1,(_unkF74E).w + bclr #Status_InAir,(Gliding_collision_flags).w locret_17A60: rts @@ -32087,7 +32338,7 @@ loc_17A62: bpl.s loc_17A7A sub.w d1,$10(a0) move.w #0,$18(a0) - bset #5,(_unkF74E).w + bset #Status_Push,(Gliding_collision_flags).w loc_17A7A: jsr (CheckRightWallDist).l @@ -32095,7 +32346,7 @@ loc_17A7A: bpl.s loc_17A94 add.w d1,$10(a0) move.w #0,$18(a0) - bset #5,(_unkF74E).w + bset #Status_Push,(Gliding_collision_flags).w loc_17A94: bsr.w sub_11FEE @@ -32119,7 +32370,7 @@ loc_17AB0: bpl.s loc_17ACA add.w d1,$10(a0) move.w #0,$18(a0) - bset #5,(_unkF74E).w + bset #Status_Push,(Gliding_collision_flags).w loc_17ACA: bsr.w sub_11FEE @@ -32153,7 +32404,7 @@ loc_17B02: add.w d1,$14(a0) move.b d3,$26(a0) move.w #0,$1A(a0) - bclr #1,(_unkF74E).w + bclr #Status_InAir,(Gliding_collision_flags).w locret_17B16: rts diff --git a/sonic3k.constants.asm b/sonic3k.constants.asm index 76c14ed7..abc6c191 100644 --- a/sonic3k.constants.asm +++ b/sonic3k.constants.asm @@ -594,7 +594,7 @@ Ctrl_1_pressed_title ds.b 1 _unkF74A ds.b 1 _unkF74B ds.b 1 _unkF74C ds.w 1 -_unkF74E ds.b 1 +Gliding_collision_flags ds.b 1 Disable_wall_grab ds.b 1 ; if set, disables Knuckles wall grab ds.b $10 ; unused Max_speed ds.w 1 From 646e49b92e78bb033fc81ca802a9f967f3a27ec5 Mon Sep 17 00:00:00 2001 From: Clownacy Date: Tue, 21 Jun 2022 23:04:29 +0100 Subject: [PATCH 72/72] Apply dmaFillVRAM macro to some code. --- s3.asm | 13 ++----------- sonic3k.asm | 13 ++----------- 2 files changed, 4 insertions(+), 22 deletions(-) diff --git a/s3.asm b/s3.asm index 98603702..b15b008c 100644 --- a/s3.asm +++ b/s3.asm @@ -13685,18 +13685,9 @@ SaveScreen: andi.b #$BF,d0 move.w d0,(VDP_control_port).l jsr (Clear_DisplayData).l - lea (VDP_control_port).l,a5 - move.w #$8F01,(a5) - move.l #$940F93FF,(a5) - move.w #$9780,(a5) - move.l #$50000083,(a5) - move.w #0,(VDP_data_port).l -loc_B89C: - move.w (a5),d1 - btst #1,d1 - bne.s loc_B89C - move.w #$8F02,(a5) + dmaFillVRAM 0,$D000,$1000 + lea (VDP_control_port).l,a6 move.w #$8004,(a6) move.w #$8238,(a6) diff --git a/sonic3k.asm b/sonic3k.asm index 8de1efca..8bd9cd50 100644 --- a/sonic3k.asm +++ b/sonic3k.asm @@ -15582,18 +15582,9 @@ SaveScreen: andi.b #$BF,d0 move.w d0,(VDP_control_port).l jsr (Clear_DisplayData).l - lea (VDP_control_port).l,a5 - move.w #$8F01,(a5) - move.l #$940F93FF,(a5) - move.w #$9780,(a5) - move.l #$50000083,(a5) - move.w #0,(VDP_data_port).l -loc_C5B0: - move.w (a5),d1 - btst #1,d1 - bne.s loc_C5B0 - move.w #$8F02,(a5) + dmaFillVRAM 0,$D000,$1000 + lea (VDP_control_port).l,a6 move.w #$8004,(a6) move.w #$8238,(a6)