mirror of
https://github.com/CTR-tools/CTR-ModSDK.git
synced 2025-02-22 14:12:21 +00:00
60fps more camera fixes
This commit is contained in:
parent
4f0fba6a3f
commit
9f021a1318
@ -9,10 +9,11 @@ void DECOMP_CAM_EndOfRace_Battle(struct CameraDC* cDC, struct Driver* d) {
|
||||
int height;
|
||||
struct PushBuffer* pb;
|
||||
|
||||
// transition to the radius of
|
||||
// the camera that spins around player
|
||||
// This is NOT TransitionTo,
|
||||
// spin360's spinSpeed (missing union)
|
||||
// and spinHeight, spinDistance, etc
|
||||
height = data.Spin360_heightOffset_cameraPos[sdata->gGT->numPlyrCurrGame];
|
||||
cDC->transitionTo.pos[0] = 0xffe5;
|
||||
cDC->transitionTo.pos[0] = FPS_HALF(0xffe5);
|
||||
cDC->transitionTo.pos[1] = height;
|
||||
cDC->transitionTo.pos[2] = 0xc0;
|
||||
|
||||
|
@ -3,16 +3,21 @@
|
||||
void DECOMP_CAM_FollowDriver_Spin360(struct CameraDC* cDC, int param_2, struct Driver* d, short* desiredPos, short* desiredRot)
|
||||
{
|
||||
int ratio;
|
||||
short posX;
|
||||
short spinSpeed;
|
||||
|
||||
// === Union Missing ===
|
||||
// Not really "transitionTo" but the variables
|
||||
// are shared with other camera modes, therefore
|
||||
// need a union with proper names for each mode
|
||||
|
||||
// rotate one way
|
||||
posX = cDC->transitionTo.pos[0];
|
||||
spinSpeed = cDC->transitionTo.pos[0];
|
||||
|
||||
// rotate other way for odd number
|
||||
if ((d->driverID & 1) != 0)
|
||||
posX = -posX;
|
||||
spinSpeed = -spinSpeed;
|
||||
|
||||
int angle = cDC->unk90 + posX;
|
||||
int angle = cDC->unk90 + spinSpeed;
|
||||
cDC->unk90 = angle;
|
||||
|
||||
ratio = MATH_Sin(angle);
|
||||
|
@ -253,10 +253,16 @@ void DECOMP_CAM_ThTick(struct Thread *t)
|
||||
(cDC->transitionTo).rot[2] = psVar21[7];
|
||||
*(short *)&cDC->unk_b0[0] = psVar21[8];
|
||||
break;
|
||||
|
||||
// Spin360
|
||||
case 10:
|
||||
sVar6 = *psVar19;
|
||||
|
||||
// spinSpeed
|
||||
sVar6 = FPS_HALF(*psVar19);
|
||||
|
||||
psVar19 = psVar21 + 2;
|
||||
goto LAB_8001b928;
|
||||
|
||||
case 11:
|
||||
sVar6 = *(short *)&pb->distanceToScreen_CURR;
|
||||
pb->pos[0] = *psVar19;
|
||||
@ -432,13 +438,19 @@ LAB_8001c128:
|
||||
{
|
||||
if ((gGT->level1->cnt_restart_points != 0) && ((gGT->gameMode1 & 0xf) == 0))
|
||||
{
|
||||
uVar9 = CAM_FollowDriver_TrackPath(cDC, (short *)0x1f800390, (int)*(short *)&cDC->unk_b0[0], 1);
|
||||
iVar7 = FPS_HALF(-0xc0);
|
||||
uVar9 = CAM_FollowDriver_TrackPath(
|
||||
cDC, (short *)0x1f800390,
|
||||
FPS_HALF(*(short *)&cDC->unk_b0[0]),
|
||||
1);
|
||||
|
||||
iVar7 = -0xc0;
|
||||
if (-1 < *(short *)&cDC->unk_b0[0])
|
||||
{
|
||||
iVar7 = FPS_HALF(0xc0);
|
||||
}
|
||||
uVar10 = CAM_FollowDriver_TrackPath(cDC, (short *)0x1f800398, iVar7, 0);
|
||||
iVar7 = 0xc0;
|
||||
|
||||
uVar10 = CAM_FollowDriver_TrackPath(
|
||||
cDC, (short *)0x1f800398,
|
||||
FPS_HALF(iVar7),
|
||||
0);
|
||||
|
||||
// interpolate two rotations
|
||||
|
||||
|
@ -1124,6 +1124,8 @@ void FUN_80018d9c(int param_1,int param_2)
|
||||
undefined2 uVar1;
|
||||
long lVar2;
|
||||
|
||||
// This is NOT TransitionTo,
|
||||
// spin360's spinSpeed (missing union)
|
||||
*(undefined2 *)(param_1 + 0xa4) = 0xffe5;
|
||||
|
||||
// Activate end-of-race Battle flag
|
||||
|
@ -166,6 +166,8 @@ struct CameraDC
|
||||
// difference between 8e and 9e?
|
||||
|
||||
// 0xa4
|
||||
// union shared between camera modes
|
||||
// Spin360 uses 0xa4 for spin speed
|
||||
struct
|
||||
{
|
||||
short pos[3];
|
||||
@ -173,7 +175,8 @@ struct CameraDC
|
||||
} transitionTo;
|
||||
|
||||
// 0xb0 - next byte
|
||||
// 0xb0 - 2 byte short, speed of camera on track path
|
||||
// union between multiple camera modes
|
||||
// TrackPath uses 0xb0 for movement speed
|
||||
char unk_b0[8];
|
||||
|
||||
// X axis (0xb8)
|
||||
|
Loading…
x
Reference in New Issue
Block a user