Difference between revisions of "Fix Sonic 2 Sega Screen"
From Sonic Retro
BSonirachi (talk | contribs) (marked for cleanup) |
|||
Line 1: | Line 1: | ||
+ | {{cleanup}} | ||
Guide By RobiWanKenobi | Guide By RobiWanKenobi | ||
==Github== | ==Github== |
Revision as of 14:23, 19 April 2022
This article needs cleanup. This article needs to be edited to conform to a higher standard of article quality. |
Guide By RobiWanKenobi
Github
If you have ported in sprites from other sonic games or other games, you may have noticed the sega screen is messed up.
Make a copy of the sonic 2 sprites, mappings, and dplcs for sonic.
find this
;---------------------------------------------------------------------------------------
; Uncompressed art
; Patterns for Sonic ; ArtUnc_50000:
;---------------------------------------------------------------------------------------
align $20
ArtUnc_Sonic: BINCLUDE "art/uncompressed/Sonic's art.bin"
;---------------------------------------------------------------------
right after that add in
;---------------------------------------------------------------------
align $20
ArtUnc_SegaSonic: BINCLUDE "art/uncompressed/SegaSonic.bin"
;---------------------------------------------------------------------------------------
and right below this
;--------------------------------------------------------------------------------------
; Sprite Mappings
; Sonic ; MapUnc_6FBE0: SprTbl_Sonic:
;--------------------------------------------------------------------------------------
add
;--------------------------------------------------------------------------------------
Mapunc_SegaSonic: BINCLUDE "mappings/sprite/SegaSonicMap.bin"
;--------------------------------------------------------------------------------------
Now replace this
;--------------------------------------------------------------------------------------
; Sprite Dynamic Pattern Reloading
; Sonic DPLCs ; MapRUnc_714E0:
;--------------------------------------------------------------------------------------
; WARNING: the build script needs editing if you rename this label
; or if you move Sonic's running frame to somewhere else than frame $2D
;Sega Screen Sonic
MapRUnc_Sonic: BINCLUDE "mappings/spriteDPLC/Sonic.bin"
;--------------------------------------------------------------------------------------
wtih this
;--------------------------------------------------------------------------------------
; Sprite Dynamic Pattern Reloading
; Sonic DPLCs ; MapRUnc_714E0:
;--------------------------------------------------------------------------------------
; WARNING: the build script needs editing if you rename this label
; or if you move Sonic's running frame to somewhere else than frame $2D
;Sega Screen Sonic
MapRUnc_Sonic: BINCLUDE "mappings/spriteDPLC/SegaSonic.bin"
;--------------------------------------------------------------------------------------
;--------------------------------------------------------------------------------------
;Sonic's ingame sprites
MapRUnc_Sonic3: BINCLUDE "mappings/spriteDPLC/Sonic.bin"
;--------------------------------------------------------------------------------------
but now, if you have other sprites, you will notice that the sonic sprites are messed up, to fix that, go to LoadSonicDymPLC_Part2 change this
LoadSonicDynPLC_Part2:
cmp.b (Sonic_LastLoadedDPLC).w,d0
beq.s return_1B89A
move.b d0,(Sonic_LastLoadedDPLC).w
lea (MapRUnc_Sonic).l,a2
add.w d0,d0
adda.w (a2,d0.w),a2
move.w (a2)+,d5
subq.w #1,d5
bmi.s return_1B89A
move.w #tiles_to_bytes(ArtTile_ArtUnc_Sonic),d4
to this
LoadSonicDynPLC_Part2:
cmp.b (Sonic_LastLoadedDPLC).w,d0
beq.s return_1B89A
move.b d0,(Sonic_LastLoadedDPLC).w
lea (MapRUnc_Sonic3).l,a2
add.w d0,d0
adda.w (a2,d0.w),a2
move.w (a2)+,d5
subq.w #1,d5
bmi.s return_1B89A
move.w #tiles_to_bytes(ArtTile_ArtUnc_Sonic),d4
change this
ObjB0_Init:
bsr.w LoadSubObject
move.w #$1E8,x_pixel(a0)
move.w #$F0,y_pixel(a0)
move.w #$B,objoff_2A(a0)
move.w #2,(SegaScr_VInt_Subrout).w
bset #0,render_flags(a0)
bset #0,status(a0)
; Initialize streak horizontal offsets for Sonic going left.
; 9 full lines (8 pixels) + 6 pixels, 2-byte interleaved entries for PNT A and PNT B
lea (Horiz_Scroll_Buf + 2 * 2 * (9 * 8 + 6)).w,a1
lea Streak_Horizontal_offsets(pc),a2
moveq #0,d0
moveq #$22,d6 ; Number of streaks-1
- move.b (a2)+,d0
add.w d0,(a1)
addq.w #2 * 2 * 2,a1 ; Advance to next streak 2 pixels down
dbf d6,-
lea off_3A294(pc),a1 ; pointers to mapping DPLC data
lea (ArtUnc_Sonic).l,a3
lea (Chunk_Table).l,a5
moveq #4-1,d5 ; there are 4 mapping frames to loop over
to this
ObjB0_Init:
bsr.w LoadSubObject
move.w #$1E8,x_pixel(a0)
move.w #$F0,y_pixel(a0)
move.w #$B,objoff_2A(a0)
move.w #2,(SegaScr_VInt_Subrout).w
bset #0,render_flags(a0)
bset #0,status(a0)
; Initialize streak horizontal offsets for Sonic going left.
; 9 full lines (8 pixels) + 6 pixels, 2-byte interleaved entries for PNT A and PNT B
lea (Horiz_Scroll_Buf + 2 * 2 * (9 * 8 + 6)).w,a1
lea Streak_Horizontal_offsets(pc),a2
moveq #0,d0
moveq #$22,d6 ; Number of streaks-1
- move.b (a2)+,d0
add.w d0,(a1)
addq.w #2 * 2 * 2,a1 ; Advance to next streak 2 pixels down
dbf d6,-
lea off_3A294(pc),a1 ; pointers to mapping DPLC data
lea (ArtUnc_SegaSonic).l,a3
lea (Chunk_Table).l,a5
moveq #4-1,d5 ; there are 4 mapping frames to loop over
if done right, it works, even with sonic 3 sprites.
This is from a rom hack that uses this fix, but, I am able to use stock sonic 2 for it too
Note: The Images were taken with Kega's built in screenshot function to get a native resolution, they are smaller to make the page not as long