Also, if Sonic Spindashes at Level Start or respawning at a Lamp Post, he can screw up the camera. To fix this, open "_inc\LevelSizeLoad & BgScrollSpeed (JP1).asm" and "_inc\LevelSizeLoad & BgScrollSpeed.asm" and add these lines after the label "LevSz_SkipStartPos:" in both of them.
That fix seems like it removes the need for the fix with "Sonic_Death:" but I want to have both to be sure.
Syntax Highlighted Code: ASM
clr.w (v_trackpos).w ; reset Sonic's position tracking index
lea (v_tracksonic).w,a2 ; load the tracking array into a2
moveq #63,d2 ; begin a 64-step loop
@looppoint:
move.w d1,(a2)+ ; fill in X
move.w d0,(a2)+ ; fill in Y
dbf d2,@looppoint ; loop
That fix seems like it removes the need for the fix with "Sonic_Death:" but I want to have both to be sure.
I can't seem to find it anywhere in the 2007 disasm, but I'll keep looking. What does the surrounding code look like, so I can search for that code?
Here it is:
Syntax Highlighted Code: ASM
LevSz_SonicPos:
moveq #0,d1
move.w (a1)+,d1
move.w d1,(v_player+obX).w ; set Sonic's position on x-axis
moveq #0,d0
move.w (a1),d0
move.w d0,(v_player+obY).w ; set Sonic's position on y-axis
SetScreen:
LevSz_SkipStartPos:
subi.w #160,d1 ; is Sonic more than 160px from left edge?
bcc.s SetScr_WithinLeft ; if yes, branch
moveq #0,d1
SetScr_WithinLeft:
move.w (v_limitright2).w,d2
cmp.w d2,d1 ; is Sonic inside the right edge?
bcs.s SetScr_WithinRight ; if yes, branch
move.w d2,d1
You can check out the whole file here on the SVN.
Thanks, I'll go ahead and implement it when I get my computer back from the Apple store tomorrow, hard drive died, and I needed the keyboard replaced anyways, so I sent it in. Thank god I keep backups.
Well, the Collision Chaos Port is coming along quite nicely, but I have no idea why I can't do it as fast as I did with the Tidal Tempest one. Hopefully I can release something on Sunday. I'll make this weekend a hack fest :P


