mirror of
https://github.com/n64decomp/mk64
synced 2026-06-12 13:04:50 -04:00
Clang Format
This commit is contained in:
committed by
github-actions[bot]
parent
8ee86d4c78
commit
fe21bb8288
+7
-1
@@ -822,7 +822,13 @@ typedef short ENVMIX_STATE[40];
|
||||
/*
|
||||
* See aEnvMixer for more info.
|
||||
*/
|
||||
#define aEnvSetup1Alt(pkt,initialVolReverb,rampReverbL,rampReverbR,rampLeft,rampRight) { Acmd *_a = (Acmd *)pkt; _a->words.w0 = (_SHIFTL(A_ENVSETUP1, 24, 8) | _SHIFTL(initialVolReverb, 16, 8) | (_SHIFTL(rampReverbL, 8, 8)) | _SHIFTL(rampReverbR, 0, 8)); _a->words.w1 = _SHIFTL(rampLeft, 16, 16) | _SHIFTL(rampRight, 0, 16); }
|
||||
#define aEnvSetup1Alt(pkt, initialVolReverb, rampReverbL, rampReverbR, rampLeft, rampRight) \
|
||||
{ \
|
||||
Acmd* _a = (Acmd*) pkt; \
|
||||
_a->words.w0 = (_SHIFTL(A_ENVSETUP1, 24, 8) | _SHIFTL(initialVolReverb, 16, 8) | \
|
||||
(_SHIFTL(rampReverbL, 8, 8)) | _SHIFTL(rampReverbR, 0, 8)); \
|
||||
_a->words.w1 = _SHIFTL(rampLeft, 16, 16) | _SHIFTL(rampRight, 0, 16); \
|
||||
}
|
||||
|
||||
/*
|
||||
* See aEnvMixer for more info.
|
||||
|
||||
+30
-12
@@ -1983,7 +1983,10 @@ typedef union {
|
||||
_g->words.w0 = _SHIFTL(G_TRI1, 24, 8) | __gsSP1Triangle_w1f(v0, v1, v2, flag); \
|
||||
_g->words.w1 = 0; \
|
||||
}
|
||||
#define gsSP1Triangle(v0, v1, v2, flag) { { _SHIFTL(G_TRI1, 24, 8) | __gsSP1Triangle_w1f(v0, v1, v2, flag), 0 } }
|
||||
#define gsSP1Triangle(v0, v1, v2, flag) \
|
||||
{ \
|
||||
{ _SHIFTL(G_TRI1, 24, 8) | __gsSP1Triangle_w1f(v0, v1, v2, flag), 0 } \
|
||||
}
|
||||
|
||||
/***
|
||||
*** Line
|
||||
@@ -1995,7 +1998,10 @@ typedef union {
|
||||
_g->words.w0 = _SHIFTL(G_LINE3D, 24, 8) | __gsSPLine3D_w1f(v0, v1, 0, flag); \
|
||||
_g->words.w1 = 0; \
|
||||
}
|
||||
#define gsSPLine3D(v0, v1, flag) { { _SHIFTL(G_LINE3D, 24, 8) | __gsSPLine3D_w1f(v0, v1, 0, flag), 0 } }
|
||||
#define gsSPLine3D(v0, v1, flag) \
|
||||
{ \
|
||||
{ _SHIFTL(G_LINE3D, 24, 8) | __gsSPLine3D_w1f(v0, v1, 0, flag), 0 } \
|
||||
}
|
||||
|
||||
/***
|
||||
*** LineW
|
||||
@@ -2013,7 +2019,10 @@ typedef union {
|
||||
_g->words.w0 = _SHIFTL(G_LINE3D, 24, 8) | __gsSPLine3D_w1f(v0, v1, wd, flag); \
|
||||
_g->words.w1 = 0; \
|
||||
}
|
||||
#define gsSPLineW3D(v0, v1, wd, flag) { { _SHIFTL(G_LINE3D, 24, 8) | __gsSPLine3D_w1f(v0, v1, wd, flag), 0 } }
|
||||
#define gsSPLineW3D(v0, v1, wd, flag) \
|
||||
{ \
|
||||
{ _SHIFTL(G_LINE3D, 24, 8) | __gsSPLine3D_w1f(v0, v1, wd, flag), 0 } \
|
||||
}
|
||||
|
||||
/***
|
||||
*** 1 Quadrangle
|
||||
@@ -2093,12 +2102,14 @@ typedef union {
|
||||
/***
|
||||
*** 1 Quadrangle
|
||||
***/
|
||||
#define gSP1Quadrangle(v0, v1, v2, v3, flag) \
|
||||
{ { Gfx* _g = (Gfx*) (pkt); \
|
||||
\
|
||||
_g->words.w0 = _SHIFTL(G_QUAD, 24, 8); \
|
||||
_g->words.w1 = __gsSP1Quadrangle_w1(v0, v1, v2, v3); \
|
||||
} \
|
||||
#define gSP1Quadrangle(v0, v1, v2, v3, flag) \
|
||||
{ \
|
||||
{ \
|
||||
Gfx* _g = (Gfx*) (pkt); \
|
||||
\
|
||||
_g->words.w0 = _SHIFTL(G_QUAD, 24, 8); \
|
||||
_g->words.w1 = __gsSP1Quadrangle_w1(v0, v1, v2, v3); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define gsSP1Quadrangle(v0, v1, v2, v3, flag) \
|
||||
@@ -2602,7 +2613,8 @@ typedef union {
|
||||
#define gsSPLookAtY(l) gsDma1p(G_MOVEMEM, l, sizeof(Light), G_MV_LOOKATY)
|
||||
#endif /* F3DEX_GBI_2 */
|
||||
|
||||
#define gSPLookAt(pkt, la) { gSPLookAtX(pkt, la) gSPLookAtY(pkt, (char*) (la) + 16) }
|
||||
#define gSPLookAt(pkt, la) \
|
||||
{ gSPLookAtX(pkt, la) gSPLookAtY(pkt, (char*) (la) + 16) }
|
||||
#define gsSPLookAt(la) gsSPLookAtX(la), gsSPLookAtY((char*) (la) + 16)
|
||||
|
||||
#define gDPSetHilite1Tile(pkt, tile, hilite, width, height) \
|
||||
@@ -2755,7 +2767,10 @@ typedef union {
|
||||
_g->words.w1 = 0; \
|
||||
}
|
||||
|
||||
#define gsSPEndDisplayList() { { _SHIFTL(G_ENDDL, 24, 8), 0 } }
|
||||
#define gsSPEndDisplayList() \
|
||||
{ \
|
||||
{ _SHIFTL(G_ENDDL, 24, 8), 0 } \
|
||||
}
|
||||
|
||||
#ifdef F3DEX_GBI_2
|
||||
/*
|
||||
@@ -3979,7 +3994,10 @@ typedef union {
|
||||
_g->words.w1 = 0; \
|
||||
}
|
||||
|
||||
#define gsDPNoParam(cmd) { { _SHIFTL(cmd, 24, 8), 0 } }
|
||||
#define gsDPNoParam(cmd) \
|
||||
{ \
|
||||
{ _SHIFTL(cmd, 24, 8), 0 } \
|
||||
}
|
||||
|
||||
#define gDPParam(pkt, cmd, param) \
|
||||
{ \
|
||||
|
||||
@@ -253,7 +253,7 @@ typedef struct {
|
||||
/* 0x0006 */ u16 unk_006;
|
||||
/* 0x0008 */ s16 lapCount;
|
||||
/* 0x000A */ char unk_00A[0x2];
|
||||
/* 0x000C */ s32 triggers; // Bitflag.
|
||||
/* 0x000C */ s32 triggers; // Bitflag.
|
||||
/* 0x0010 */ s16 currentItemCopy; // Has no effect on what item the players has, It is just a synced copy
|
||||
/* 0x0012 */ s16 unk_012;
|
||||
/* 0x0014 */ Vec3f pos;
|
||||
@@ -273,9 +273,10 @@ typedef struct {
|
||||
/* 0x0064 */ Vec3f unk_064;
|
||||
/* 0x0070 */ f32 boundingBoxSize;
|
||||
/* 0x0074 */ f32 unk_074;
|
||||
/* 0x0078 */ s16 unk_078; // One source of angular velocity (turning / swerving)
|
||||
/* 0x0078 */ s16 unk_078; // One source of angular velocity (turning / swerving)
|
||||
/* 0x007A */ s16 unk_07A;
|
||||
/* 0x007C */ s32 steerPosition; // Where the kart is steering, related to joystick position. Basically, in [-53 to 53], but shifted 16 bits left
|
||||
/* 0x007C */ s32 steerPosition; // Where the kart is steering, related to joystick position. Basically, in [-53 to
|
||||
// 53], but shifted 16 bits left
|
||||
/* 0x0080 */ f32 boostPower;
|
||||
/* 0x0084 */ f32 unk_084;
|
||||
/* 0x0088 */ f32 unk_088;
|
||||
@@ -328,7 +329,7 @@ typedef struct {
|
||||
/* 0x01F8 */ f32 unk_1F8;
|
||||
/* 0x01FC */ f32 unk_1FC;
|
||||
/* 0x0200 */ u32 steerChangeIncrement; // May be s32. but less casting required if u32
|
||||
/* 0x0204 */ s16 driftDuration; // charges up while drifting, primarily protects against driving spinouts
|
||||
/* 0x0204 */ s16 driftDuration; // charges up while drifting, primarily protects against driving spinouts
|
||||
/* 0x0206 */ s16 unk_206;
|
||||
/* 0x0208 */ f32 unk_208;
|
||||
/* 0x020C */ f32 unk_20C;
|
||||
|
||||
+57
-53
@@ -334,7 +334,7 @@ enum PLACE { FIRST_PLACE, SECOND_PLACE, THIRD_PLACE, FOURTH_PLACE };
|
||||
// player->unk_046
|
||||
|
||||
/* The first time you touch a penguin or bat, and anytime you touch a thwomp during a
|
||||
race will set a flag which will cause your next spinout to be instant (i.e. no
|
||||
race will set a flag which will cause your next spinout to be instant (i.e. no
|
||||
sliding forward). Probably half-implemented code to prevent sliding through enemies,
|
||||
but causes this bug */
|
||||
#define CRITTER_TOUCH 0x2 // Touched a penguin, bat or thwomp
|
||||
@@ -344,19 +344,21 @@ enum PLACE { FIRST_PLACE, SECOND_PLACE, THIRD_PLACE, FOURTH_PLACE };
|
||||
// player->oobProps
|
||||
/* Deals with the lower out of bounds (OOB) plane on levels. Represented by fluids (water / lava)
|
||||
or nothing for Rainbow Road and Skyscraper. */
|
||||
#define UNDER_OOB_OR_FLUID_LEVEL 0x1 // Set while mostly under the plane. Does not necessarily trigger Lakitu on Koopa Troopa Beach.
|
||||
#define UNDER_OOB_OR_FLUID_LEVEL \
|
||||
0x1 // Set while mostly under the plane. Does not necessarily trigger Lakitu on Koopa Troopa Beach.
|
||||
#define PASS_OOB_OR_FLUID_LEVEL 0x2 // Set when passing through the lower plane in either direction
|
||||
// The next two are also activated when passing through the lower plane.
|
||||
#define UNDER_FLUID_LEVEL 0x4 // Stays active until Lakitu places back on track
|
||||
#define UNDER_OOB_LEVEL 0x8 // Active while under a non-fluid OOB plane. Is momentarily active when passing through fluids.
|
||||
|
||||
#define UNDER_OOB_LEVEL \
|
||||
0x8 // Active while under a non-fluid OOB plane. Is momentarily active when passing through fluids.
|
||||
|
||||
/* UNK_002 has something to do with player animations. Each player has a 32-bit
|
||||
flag broken into 8 groups of 4 bits. Those 4 bits affect how each of the 8 players
|
||||
appear to the specified player */
|
||||
#define CHANGING_ANIMATION 0x1 // Seems to be set when the kart animation has to change.
|
||||
#define UNK_002_UNKNOWN_0x2 0x2
|
||||
#define UNK_002_UNKNOWN_0x4 0x4 /* Unclear, but has to do with viewing the side of player. At least tends to change if target
|
||||
#define UNK_002_UNKNOWN_0x2 0x2
|
||||
#define UNK_002_UNKNOWN_0x4 \
|
||||
0x4 /* Unclear, but has to do with viewing the side of player. At least tends to change if target \
|
||||
player spins. Something with avoding rollover of aniamation frame data? */
|
||||
#define SIDE_OF_KART 0x8 // Seems to be whether you are in a rectangle shooting out from both sides of target player
|
||||
|
||||
@@ -368,62 +370,64 @@ player spins. Something with avoding rollover of aniamation frame data? */
|
||||
#define EXPLOSION 0x1000 // Big shock looking graphic when starting tumble
|
||||
|
||||
// player->lakituProps
|
||||
#define LAKITU_RETRIEVAL 0x1 // While lakitu is grabbing you, but before the scene transition of being placed on the track
|
||||
#define HELD_BY_LAKITU 0x2
|
||||
#define LAKITU_FIZZLE 0x4 // Disintegration and reintegration effect when transitioning from retrieval to placement
|
||||
#define LAKITU_SCENE 0x8 // the whole segment from when lakitu is called to when you regain control
|
||||
#define FRIGID_EFFECT 0x10 // Cold colors on Sherbet Land after in frigid water
|
||||
#define THAWING_EFFECT 0x20 // Regaining usual colors post frigid effect
|
||||
#define FROZEN_EFFECT 0x80 // In the ice cube
|
||||
#define WENT_OVER_OOB 0x100 // Player went over (or is on) an OOB area. Cancelled if touch back in bounds
|
||||
#define LAKITU_LAVA 0x1000 // smoky effect when retrieved from lava
|
||||
#define LAKITU_WATER 0x2000 // dripping effect when retreived from water
|
||||
#define LAKITU_RETRIEVAL \
|
||||
0x1 // While lakitu is grabbing you, but before the scene transition of being placed on the track
|
||||
#define HELD_BY_LAKITU 0x2
|
||||
#define LAKITU_FIZZLE 0x4 // Disintegration and reintegration effect when transitioning from retrieval to placement
|
||||
#define LAKITU_SCENE 0x8 // the whole segment from when lakitu is called to when you regain control
|
||||
#define FRIGID_EFFECT 0x10 // Cold colors on Sherbet Land after in frigid water
|
||||
#define THAWING_EFFECT 0x20 // Regaining usual colors post frigid effect
|
||||
#define FROZEN_EFFECT 0x80 // In the ice cube
|
||||
#define WENT_OVER_OOB 0x100 // Player went over (or is on) an OOB area. Cancelled if touch back in bounds
|
||||
#define LAKITU_LAVA 0x1000 // smoky effect when retrieved from lava
|
||||
#define LAKITU_WATER 0x2000 // dripping effect when retreived from water
|
||||
|
||||
// player->kartProps
|
||||
#define BACK_UP 0x1
|
||||
#define RIGHT_TURN 0x2 // non-drifting (more than 5 degrees)
|
||||
#define LEFT_TURN 0x4 // non-drifting (more than 5 degrees)
|
||||
#define MOVE_BACKWARDS 0x8 // includes lakitu
|
||||
#define LOSE_GP_RACE 0x10 // pointless, only unsets itself
|
||||
#define THROTTLE 0x20 // Closely tied to just pressing A. Possible exception for AB-spins
|
||||
#define EARLY_SPINOUT_RIGHT 0x40 // Spinning out while facing right (not actually used for anything)
|
||||
#define EARLY_SPINOUT_LEFT 0x80 // Spinning out while facing left
|
||||
#define POST_TUMBLE_GAS 0x100 // Causes particles after a vertical tumble, I think
|
||||
#define BECOME_INVISIBLE 0x200
|
||||
#define UNUSED_0x400 0x400 // locked behind 0x800 (func_80091440)
|
||||
#define UNUSED_0x800 0x800 // locked behind 0x400 (func_8002B830 -> func_800911B4)
|
||||
#define UNUSED_0x1000 0x1000 // 0x1000 locked behind 0x400 (func_8002B830 -> func_800911B4)
|
||||
#define UNUSED_0x2000 0x2000 // 0x2000 locked behind 0x400 and 0x800 (func_8002B830 -> func_800911B4, apply_effect -> func_80091298,
|
||||
// func_80091440)
|
||||
#define BACK_UP 0x1
|
||||
#define RIGHT_TURN 0x2 // non-drifting (more than 5 degrees)
|
||||
#define LEFT_TURN 0x4 // non-drifting (more than 5 degrees)
|
||||
#define MOVE_BACKWARDS 0x8 // includes lakitu
|
||||
#define LOSE_GP_RACE 0x10 // pointless, only unsets itself
|
||||
#define THROTTLE 0x20 // Closely tied to just pressing A. Possible exception for AB-spins
|
||||
#define EARLY_SPINOUT_RIGHT 0x40 // Spinning out while facing right (not actually used for anything)
|
||||
#define EARLY_SPINOUT_LEFT 0x80 // Spinning out while facing left
|
||||
#define POST_TUMBLE_GAS 0x100 // Causes particles after a vertical tumble, I think
|
||||
#define BECOME_INVISIBLE 0x200
|
||||
#define UNUSED_0x400 0x400 // locked behind 0x800 (func_80091440)
|
||||
#define UNUSED_0x800 0x800 // locked behind 0x400 (func_8002B830 -> func_800911B4)
|
||||
#define UNUSED_0x1000 0x1000 // 0x1000 locked behind 0x400 (func_8002B830 -> func_800911B4)
|
||||
#define UNUSED_0x2000 \
|
||||
0x2000 // 0x2000 locked behind 0x400 and 0x800 (func_8002B830 -> func_800911B4, apply_effect -> func_80091298,
|
||||
// func_80091440)
|
||||
#define DRIVING_NEAR_SPINOUT 0x4000
|
||||
#define UNKNOWN_BATTLE_VAR 0x8000 // 0x8000 something battle related, unclear if ever set
|
||||
|
||||
/*
|
||||
* @brief triggers indicating that an effect should be applied to a kart
|
||||
*/
|
||||
#define HIT_BANANA_TRIGGER 0x1 // hits a banana
|
||||
#define HIGH_TUMBLE_TRIGGER 0x2 // hit by a red shell, blue shell, or hit a mole
|
||||
#define LOW_TUMBLE_TRIGGER 0x4 // hit by a green shell
|
||||
#define DRIVING_SPINOUT_TRIGGER 0x80 // spinning out from erratic driving
|
||||
#define THWOMP_SQUISH_TRIGGER 0x100 // stomped by thwomp
|
||||
#define SHROOM_TRIGGER 0x200 // being boosted by trigger a mushroom
|
||||
#define BOO_TRIGGER 0x800 // being a boo
|
||||
#define UNUSED_TRIGGER_0x1000 0x1000 // Unused
|
||||
#define STAR_TRIGGER 0x2000 // Starting a star
|
||||
#define LIGHTNING_STRIKE_TRIGGER 0x4000 // Struck by lightning
|
||||
#define BOOST_RAMP_WOOD_TRIGGER 0x8000 // being boosted by a ramp
|
||||
#define UNUSED_TRIGGER_0x20000 0x20000 // Unused
|
||||
#define DRAG_ITEM_EFFECT 0x40000 // holding a non-shell item behind you
|
||||
#define HIT_PADDLE_BOAT_TRIGGER 0x80000 // hit paddle boat
|
||||
#define UNUSED_TRIGGER_0x10000 0x100000 // Unused
|
||||
#define SPINOUT_TRIGGER 0x200000 // hit crab or spiny spinout or losing versus race
|
||||
#define VERTICAL_TUMBLE_TRIGGER 0x400000 // hitting a fake item / bomb / snowman / car / train
|
||||
#define HIT_BANANA_TRIGGER 0x1 // hits a banana
|
||||
#define HIGH_TUMBLE_TRIGGER 0x2 // hit by a red shell, blue shell, or hit a mole
|
||||
#define LOW_TUMBLE_TRIGGER 0x4 // hit by a green shell
|
||||
#define DRIVING_SPINOUT_TRIGGER 0x80 // spinning out from erratic driving
|
||||
#define THWOMP_SQUISH_TRIGGER 0x100 // stomped by thwomp
|
||||
#define SHROOM_TRIGGER 0x200 // being boosted by trigger a mushroom
|
||||
#define BOO_TRIGGER 0x800 // being a boo
|
||||
#define UNUSED_TRIGGER_0x1000 0x1000 // Unused
|
||||
#define STAR_TRIGGER 0x2000 // Starting a star
|
||||
#define LIGHTNING_STRIKE_TRIGGER 0x4000 // Struck by lightning
|
||||
#define BOOST_RAMP_WOOD_TRIGGER 0x8000 // being boosted by a ramp
|
||||
#define UNUSED_TRIGGER_0x20000 0x20000 // Unused
|
||||
#define DRAG_ITEM_EFFECT 0x40000 // holding a non-shell item behind you
|
||||
#define HIT_PADDLE_BOAT_TRIGGER 0x80000 // hit paddle boat
|
||||
#define UNUSED_TRIGGER_0x10000 0x100000 // Unused
|
||||
#define SPINOUT_TRIGGER 0x200000 // hit crab or spiny spinout or losing versus race
|
||||
#define VERTICAL_TUMBLE_TRIGGER 0x400000 // hitting a fake item / bomb / snowman / car / train
|
||||
#define BOOST_RAMP_ASPHALT_TRIGGER 0x800000 // being boosted by a boost pad
|
||||
#define HIT_BY_STAR_TRIGGER 0x1000000 // being hit by a star
|
||||
#define START_BOOST_TRIGGER 0x2000000 // Start boost
|
||||
#define LOSE_BATTLE_EFFECT 0x4000000 // When losing battle mode
|
||||
#define BECOME_BOMB_EFFECT 0x8000000 // When becoming a bomb in battle mode
|
||||
#define START_SPINOUT_TRIGGER 0x10000000 // Spinning out by holding gas at start of race
|
||||
#define HIT_BY_STAR_TRIGGER 0x1000000 // being hit by a star
|
||||
#define START_BOOST_TRIGGER 0x2000000 // Start boost
|
||||
#define LOSE_BATTLE_EFFECT 0x4000000 // When losing battle mode
|
||||
#define BECOME_BOMB_EFFECT 0x8000000 // When becoming a bomb in battle mode
|
||||
#define START_SPINOUT_TRIGGER 0x10000000 // Spinning out by holding gas at start of race
|
||||
|
||||
#define ALL_TRIGGERS (0xFFFFFFFF)
|
||||
#define RACING_SPINOUT_TRIGGERS (SPINOUT_TRIGGER | DRIVING_SPINOUT_TRIGGER | HIT_BANANA_TRIGGER) // 0x200081
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#include <PR/ultratypes.h>
|
||||
|
||||
#ifndef offsetof
|
||||
#define offsetof(st, m) ((size_t) &(((st*) 0)->m))
|
||||
#define offsetof(st, m) ((size_t) & (((st*) 0)->m))
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
+18
-18
@@ -45,11 +45,11 @@ extern u8 _startupLogoSegmentRomEnd[];
|
||||
// Defines duplicated even if the same for both for easier readability
|
||||
#ifdef AVOID_UB
|
||||
|
||||
#define MEMORY_POOL_START (uintptr_t) &_memoryPoolSegmentNoloadStart[0]
|
||||
#define MEMORY_POOL_END (uintptr_t) &_memoryPoolSegmentNoloadEnd[0]
|
||||
#define MEMORY_POOL_START (uintptr_t) & _memoryPoolSegmentNoloadStart[0]
|
||||
#define MEMORY_POOL_END (uintptr_t) & _memoryPoolSegmentNoloadEnd[0]
|
||||
|
||||
#define SEG_ENDING (uintptr_t) &_endingSegmentStart[0]
|
||||
#define SEG_ENDING_ROM_START (uintptr_t) &_endingSegmentRomStart[0]
|
||||
#define SEG_ENDING (uintptr_t) & _endingSegmentStart[0]
|
||||
#define SEG_ENDING_ROM_START (uintptr_t) & _endingSegmentRomStart[0]
|
||||
/**
|
||||
* Ending segment original size is 0xDF00 but much of that remains unused.
|
||||
* This auto fits the segment to its proper size.
|
||||
@@ -57,20 +57,20 @@ extern u8 _startupLogoSegmentRomEnd[];
|
||||
#define SEG_ENDING_SIZE (size_t) ALIGN16((ptrdiff_t) (&_endingSegmentNoloadEnd[0] - &_endingSegmentStart[0]))
|
||||
#define SEG_ENDING_ROM_SIZE (size_t) ALIGN16((ptrdiff_t) (&_endingSegmentRomEnd[0] - &_endingSegmentRomStart[0]))
|
||||
|
||||
#define SEG_RACING (uintptr_t) &_racingSegmentStart[0]
|
||||
#define SEG_RACING_ROM_START (uintptr_t) &_racingSegmentRomStart[0]
|
||||
#define SEG_RACING (uintptr_t) & _racingSegmentStart[0]
|
||||
#define SEG_RACING_ROM_START (uintptr_t) & _racingSegmentRomStart[0]
|
||||
#define SEG_RACING_SIZE (size_t) ALIGN16((ptrdiff_t) (&_racingSegmentNoloadEnd[0] - &_racingSegmentStart[0]))
|
||||
#define SEG_RACING_ROM_SIZE (size_t) ALIGN16((ptrdiff_t) (&_racingSegmentRomEnd[0] - &_racingSegmentRomStart[0]))
|
||||
|
||||
#define TRIG_TABLES (uintptr_t) &_trigTablesSegmentStart[0]
|
||||
#define TRIG_TABLES_ROM_START (uintptr_t) &_trigTablesSegmentRomStart[0]
|
||||
#define TRIG_TABLES (uintptr_t) & _trigTablesSegmentStart[0]
|
||||
#define TRIG_TABLES_ROM_START (uintptr_t) & _trigTablesSegmentRomStart[0]
|
||||
#define TRIG_TABLES_SIZE (size_t) _trigTablesSegmentSize
|
||||
|
||||
#define SEG_DATA_START (uintptr_t) &_data_segment2SegmentRomStart[0]
|
||||
#define SEG_DATA_END (uintptr_t) &_data_segment2SegmentRomEnd[0]
|
||||
#define SEG_DATA_START (uintptr_t) & _data_segment2SegmentRomStart[0]
|
||||
#define SEG_DATA_END (uintptr_t) & _data_segment2SegmentRomEnd[0]
|
||||
|
||||
#define COMMON_TEXTURES_ROM_START (uintptr_t) &_common_texturesSegmentRomStart[0]
|
||||
#define COMMON_TEXTURES_SIZE (ptrdiff_t) (&_common_texturesSegmentRomEnd[0] - &_common_texturesSegmentRomStart[0])
|
||||
#define COMMON_TEXTURES_ROM_START (uintptr_t) & _common_texturesSegmentRomStart[0]
|
||||
#define COMMON_TEXTURES_SIZE (ptrdiff_t)(&_common_texturesSegmentRomEnd[0] - &_common_texturesSegmentRomStart[0])
|
||||
|
||||
#define CEREMONY_DATA_ROM_START &_ceremonyDataSegmentRomStart[0]
|
||||
#define CEREMONY_DATA_ROM_END &_ceremonyDataSegmentRomEnd[0]
|
||||
@@ -80,7 +80,7 @@ extern u8 _startupLogoSegmentRomEnd[];
|
||||
|
||||
#else // Required for ok
|
||||
|
||||
#define MEMORY_POOL_START (uintptr_t) &_memoryPoolSegmentNoloadStart
|
||||
#define MEMORY_POOL_START (uintptr_t) & _memoryPoolSegmentNoloadStart
|
||||
#define MEMORY_POOL_END (uintptr_t) 0x80242F00
|
||||
|
||||
#define SEG_ENDING (uintptr_t) 0x80280000
|
||||
@@ -96,15 +96,15 @@ extern u8 _startupLogoSegmentRomEnd[];
|
||||
#define SEG_RACING_ROM_SIZE (size_t) ALIGN16((ptrdiff_t) (&_racingSegmentRomEnd[0] - &_racingSegmentRomStart[0]))
|
||||
|
||||
#define TRIG_TABLES (uintptr_t) 0x802BA370
|
||||
#define TRIG_TABLES_ROM_START (uintptr_t) &_trigTablesSegmentRomStart[0]
|
||||
#define TRIG_TABLES_ROM_START (uintptr_t) & _trigTablesSegmentRomStart[0]
|
||||
#define TRIG_TABLES_SIZE (size_t) 0x5810
|
||||
|
||||
#define SEG_DATA_START (uintptr_t) &_data_segment2SegmentRomStart[0]
|
||||
#define SEG_DATA_END (uintptr_t) &_data_segment2SegmentRomEnd[0]
|
||||
#define SEG_DATA_START (uintptr_t) & _data_segment2SegmentRomStart[0]
|
||||
#define SEG_DATA_END (uintptr_t) & _data_segment2SegmentRomEnd[0]
|
||||
|
||||
#define COMMON_TEXTURES_ROM_START (uintptr_t) &_common_texturesSegmentRomStart[0]
|
||||
#define COMMON_TEXTURES_ROM_START (uintptr_t) & _common_texturesSegmentRomStart[0]
|
||||
#define COMMON_TEXTURES_SIZE \
|
||||
(ptrdiff_t) ((uintptr_t) &_common_texturesSegmentRomEnd - (uintptr_t) &_common_texturesSegmentRomStart)
|
||||
(ptrdiff_t)((uintptr_t) & _common_texturesSegmentRomEnd - (uintptr_t) & _common_texturesSegmentRomStart)
|
||||
|
||||
#define CEREMONY_DATA_ROM_START &_ceremonyDataSegmentRomStart[0]
|
||||
#define CEREMONY_DATA_ROM_END &_ceremonyDataSegmentRomEnd[0]
|
||||
|
||||
+1
-1
@@ -32,7 +32,7 @@ enum SeqId {
|
||||
SEQ_EVENT_CEREMONY_PRESENTATION_PART2_WIN, // 0x1B (27)
|
||||
SEQ_EVENT_CEREMONY_TROPHY_CREDITS, // 0x1C (28)
|
||||
SEQ_EVENT_CEREMONY_PRESENTATION_PART2_LOSE, // 0x1D (29)
|
||||
SEQ_COUNT
|
||||
SEQ_COUNT
|
||||
};
|
||||
|
||||
#endif // SEQ_IDS_H
|
||||
|
||||
@@ -172,8 +172,8 @@ s16 func_802B3FD0(Player* owner, struct ShellActor* shell) {
|
||||
if (gPlayerBalloonCount[playerIndex] < 0) {
|
||||
continue;
|
||||
}
|
||||
// dist_squared_bugged is not quite a 3D distance function, it doubles (rather than squares) the Z difference of the
|
||||
// positions
|
||||
// dist_squared_bugged is not quite a 3D distance function, it doubles (rather than squares) the Z difference of
|
||||
// the positions
|
||||
playerToShellDistance = dist_squared_bugged(player->pos, shell->pos);
|
||||
if (playerToShellDistance < smallestDistance) {
|
||||
smallestDistance = playerToShellDistance;
|
||||
|
||||
@@ -13,8 +13,7 @@
|
||||
* @param arg2
|
||||
*/
|
||||
void render_actor_cow(Camera* camera, Mat4 arg1, struct Actor* arg2) {
|
||||
if (distance_if_visible(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1],
|
||||
4000000.0f) < 0) {
|
||||
if (distance_if_visible(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 4000000.0f) < 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ void render_actor_fake_item_box(Camera* camera, struct FakeItemBox* fakeItemBox)
|
||||
f32 someMultiplier;
|
||||
|
||||
if (distance_if_visible(camera->pos, fakeItemBox->pos, camera->rot[1], 2500.0f, gCameraZoom[camera - camera1],
|
||||
1000000.0f) < 0) {
|
||||
1000000.0f) < 0) {
|
||||
actor_not_rendered(camera, (struct Actor*) fakeItemBox);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -20,8 +20,8 @@ void render_actor_falling_rock(Camera* camera, struct FallingRock* rock) {
|
||||
return;
|
||||
}
|
||||
|
||||
height = distance_if_visible(camera->pos, rock->pos, camera->rot[1], 400.0f, gCameraZoom[camera - camera1],
|
||||
4000000.0f);
|
||||
height =
|
||||
distance_if_visible(camera->pos, rock->pos, camera->rot[1], 400.0f, gCameraZoom[camera - camera1], 4000000.0f);
|
||||
|
||||
if (height < 0.0f) {
|
||||
return;
|
||||
|
||||
@@ -27,7 +27,7 @@ void render_actor_item_box(Camera* camera, struct ItemBox* item_box) {
|
||||
f32 someMultiplier;
|
||||
|
||||
temp_f0 = distance_if_visible(camera->pos, item_box->pos, camera->rot[1], 0.0f, gCameraZoom[camera - camera1],
|
||||
4000000.0f);
|
||||
4000000.0f);
|
||||
if (!(temp_f0 < 0.0f) && !(600000.0f < temp_f0)) {
|
||||
if ((item_box->state == 2) && (temp_f0 < 100000.0f)) {
|
||||
someRot[0] = 0;
|
||||
|
||||
@@ -28,8 +28,7 @@ void render_actor_paddle_boat(Camera* arg0, struct PaddleWheelBoat* boat, UNUSED
|
||||
return;
|
||||
}
|
||||
|
||||
temp =
|
||||
distance_if_visible(arg0->pos, boat->pos, arg0->rot[1], 90000.0f, gCameraZoom[arg0 - camera1], 9000000.0f);
|
||||
temp = distance_if_visible(arg0->pos, boat->pos, arg0->rot[1], 90000.0f, gCameraZoom[arg0 - camera1], 9000000.0f);
|
||||
|
||||
if (temp < 0.0f) {
|
||||
return;
|
||||
|
||||
@@ -20,8 +20,7 @@ void render_actor_palm_tree(Camera* arg0, UNUSED Mat4 arg1, struct PalmTree* arg
|
||||
return;
|
||||
}
|
||||
|
||||
temp_f0 =
|
||||
distance_if_visible(arg0->pos, arg2->pos, arg0->rot[1], 0.0f, gCameraZoom[arg0 - camera1], 4000000.0f);
|
||||
temp_f0 = distance_if_visible(arg0->pos, arg2->pos, arg0->rot[1], 0.0f, gCameraZoom[arg0 - camera1], 4000000.0f);
|
||||
|
||||
if (!(temp_f0 < 0.0f)) {
|
||||
if (((temp_v0 & 0x400) == 0) && (temp_f0 < 250000.0f)) {
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
void render_actor_railroad_crossing(Camera* arg0, struct RailroadCrossing* rr_crossing) {
|
||||
UNUSED Vec3s sp80 = { 0, 0, 0 };
|
||||
Mat4 sp40;
|
||||
f32 unk = distance_if_visible(arg0->pos, rr_crossing->pos, arg0->rot[1], 0.0f, gCameraZoom[arg0 - camera1],
|
||||
4000000.0f);
|
||||
f32 unk =
|
||||
distance_if_visible(arg0->pos, rr_crossing->pos, arg0->rot[1], 0.0f, gCameraZoom[arg0 - camera1], 4000000.0f);
|
||||
|
||||
if (!(unk < 0.0f)) {
|
||||
mtxf_rotate_zxy_translate(sp40, rr_crossing->pos, rr_crossing->rot);
|
||||
|
||||
@@ -17,8 +17,7 @@ void render_actor_school_bus(Camera* arg0, struct Actor* arg1) {
|
||||
UNUSED s32 pad2[32];
|
||||
f32 temp_f0;
|
||||
|
||||
temp_f0 =
|
||||
distance_if_visible(arg0->pos, arg1->pos, arg0->rot[1], 2500.0f, gCameraZoom[arg0 - camera1], 9000000.0f);
|
||||
temp_f0 = distance_if_visible(arg0->pos, arg1->pos, arg0->rot[1], 2500.0f, gCameraZoom[arg0 - camera1], 9000000.0f);
|
||||
if (temp_f0 < 0.0f) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -14,8 +14,8 @@ void render_actor_tanker_truck(Camera* camera, struct Actor* arg1) {
|
||||
UNUSED s32 pad[6];
|
||||
Mat4 spC8;
|
||||
UNUSED s32 pad2[32];
|
||||
f32 temp_f0 = distance_if_visible(camera->pos, arg1->pos, camera->rot[1], 2500.0f,
|
||||
gCameraZoom[camera - camera1], 9000000.0f);
|
||||
f32 temp_f0 =
|
||||
distance_if_visible(camera->pos, arg1->pos, camera->rot[1], 2500.0f, gCameraZoom[camera - camera1], 9000000.0f);
|
||||
|
||||
if (!(temp_f0 < 0.0f)) {
|
||||
|
||||
|
||||
@@ -19,8 +19,8 @@ void render_actor_train_engine(Camera* camera, struct TrainCar* actor) {
|
||||
Mat4 spE0;
|
||||
Mat4 spA0;
|
||||
|
||||
f32 distance = distance_if_visible(camera->pos, actor->pos, camera->rot[1], 2500.0f,
|
||||
gCameraZoom[camera - camera1], 9000000.0f);
|
||||
f32 distance = distance_if_visible(camera->pos, actor->pos, camera->rot[1], 2500.0f, gCameraZoom[camera - camera1],
|
||||
9000000.0f);
|
||||
|
||||
if (distance < 0.0f) {
|
||||
return;
|
||||
@@ -166,8 +166,8 @@ void render_actor_train_tender(Camera* camera, struct TrainCar* actor) {
|
||||
Mat4 spE0;
|
||||
Mat4 spA0;
|
||||
|
||||
f32 temp_f0 = distance_if_visible(camera->pos, actor->pos, camera->rot[1], 625.0f,
|
||||
gCameraZoom[camera - camera1], 9000000.0f);
|
||||
f32 temp_f0 =
|
||||
distance_if_visible(camera->pos, actor->pos, camera->rot[1], 625.0f, gCameraZoom[camera - camera1], 9000000.0f);
|
||||
|
||||
if (temp_f0 < 0.0f) {
|
||||
return;
|
||||
@@ -251,8 +251,8 @@ void render_actor_train_passenger_car(Camera* camera, struct TrainCar* actor) {
|
||||
Mat4 spE0;
|
||||
Mat4 spA0;
|
||||
|
||||
f32 temp_f0 = distance_if_visible(camera->pos, actor->pos, camera->rot[1], 2025.0f,
|
||||
gCameraZoom[camera - camera1], 9000000.0f);
|
||||
f32 temp_f0 = distance_if_visible(camera->pos, actor->pos, camera->rot[1], 2025.0f, gCameraZoom[camera - camera1],
|
||||
9000000.0f);
|
||||
|
||||
if (temp_f0 < 0.0f) {
|
||||
return;
|
||||
|
||||
@@ -54,8 +54,7 @@ void render_actor_tree_yoshi_valley(Camera* camera, Mat4 arg1, struct Actor* arg
|
||||
return;
|
||||
}
|
||||
|
||||
temp_f0 =
|
||||
distance_if_visible(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 4000000.0f);
|
||||
temp_f0 = distance_if_visible(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 4000000.0f);
|
||||
|
||||
if (temp_f0 < 0.0f) {
|
||||
return;
|
||||
@@ -89,8 +88,7 @@ void render_actor_tree_royal_raceway(Camera* camera, Mat4 arg1, struct Actor* ar
|
||||
return;
|
||||
}
|
||||
|
||||
temp_f0 =
|
||||
distance_if_visible(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 4000000.0f);
|
||||
temp_f0 = distance_if_visible(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 4000000.0f);
|
||||
|
||||
if (temp_f0 < 0.0f) {
|
||||
return;
|
||||
@@ -124,8 +122,7 @@ void render_actor_tree_moo_moo_farm(Camera* camera, Mat4 arg1, struct Actor* arg
|
||||
return;
|
||||
}
|
||||
|
||||
temp_f0 =
|
||||
distance_if_visible(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 6250000.0f);
|
||||
temp_f0 = distance_if_visible(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 6250000.0f);
|
||||
|
||||
if (temp_f0 < 0.0f) {
|
||||
return;
|
||||
@@ -153,8 +150,7 @@ void func_80299864(Camera* camera, Mat4 arg1, struct Actor* arg2) {
|
||||
return;
|
||||
}
|
||||
|
||||
temp_f0 =
|
||||
distance_if_visible(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 4000000.0f);
|
||||
temp_f0 = distance_if_visible(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 4000000.0f);
|
||||
|
||||
if (temp_f0 < 0.0f) {
|
||||
return;
|
||||
@@ -192,8 +188,7 @@ void render_actor_tree_bowser_castle(Camera* camera, Mat4 arg1, struct Actor* ar
|
||||
return;
|
||||
}
|
||||
|
||||
temp_f0 =
|
||||
distance_if_visible(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 4000000.0f);
|
||||
temp_f0 = distance_if_visible(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 4000000.0f);
|
||||
|
||||
if (temp_f0 < 0.0f) {
|
||||
return;
|
||||
@@ -227,8 +222,7 @@ void render_actor_bush_bowser_castle(Camera* camera, Mat4 arg1, struct Actor* ar
|
||||
return;
|
||||
}
|
||||
|
||||
temp_f0 =
|
||||
distance_if_visible(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 640000.0f);
|
||||
temp_f0 = distance_if_visible(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 640000.0f);
|
||||
|
||||
if (temp_f0 < 0.0f) {
|
||||
return;
|
||||
@@ -262,8 +256,7 @@ void render_actor_tree_frappe_snowland(Camera* camera, Mat4 arg1, struct Actor*
|
||||
return;
|
||||
}
|
||||
|
||||
temp_f0 =
|
||||
distance_if_visible(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 4000000.0f);
|
||||
temp_f0 = distance_if_visible(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 4000000.0f);
|
||||
|
||||
if (temp_f0 < 0.0f) {
|
||||
return;
|
||||
@@ -296,8 +289,7 @@ void render_actor_tree_cactus1_kalimari_desert(Camera* camera, Mat4 arg1, struct
|
||||
return;
|
||||
}
|
||||
|
||||
temp_f0 =
|
||||
distance_if_visible(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 4000000.0f);
|
||||
temp_f0 = distance_if_visible(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 4000000.0f);
|
||||
|
||||
if (temp_f0 < 0.0f) {
|
||||
return;
|
||||
@@ -330,8 +322,7 @@ void render_actor_tree_cactus2_kalimari_desert(Camera* camera, Mat4 arg1, struct
|
||||
return;
|
||||
}
|
||||
|
||||
temp_f0 =
|
||||
distance_if_visible(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 4000000.0f);
|
||||
temp_f0 = distance_if_visible(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 4000000.0f);
|
||||
|
||||
if (temp_f0 < 0.0f) {
|
||||
return;
|
||||
@@ -364,8 +355,7 @@ void render_actor_tree_cactus3_kalimari_desert(Camera* camera, Mat4 arg1, struct
|
||||
return;
|
||||
}
|
||||
|
||||
temp_f0 =
|
||||
distance_if_visible(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 4000000.0f);
|
||||
temp_f0 = distance_if_visible(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 4000000.0f);
|
||||
|
||||
if (temp_f0 < 0.0f) {
|
||||
return;
|
||||
|
||||
@@ -20,8 +20,8 @@ void render_actor_yoshi_egg(Camera* arg0, Mat4 arg1, struct YoshiValleyEgg* egg,
|
||||
f32 temp_f0;
|
||||
|
||||
if (gGamestate != CREDITS_SEQUENCE) {
|
||||
temp_f0 = distance_if_visible(arg0->pos, egg->pos, arg0->rot[1], 200.0f, gCameraZoom[arg0 - camera1],
|
||||
16000000.0f);
|
||||
temp_f0 =
|
||||
distance_if_visible(arg0->pos, egg->pos, arg0->rot[1], 200.0f, gCameraZoom[arg0 - camera1], 16000000.0f);
|
||||
if (temp_f0 < 0.0f) {
|
||||
return;
|
||||
}
|
||||
|
||||
+18
-10
@@ -2399,11 +2399,12 @@ void func_800C70A8(u8 playerId) {
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Routine to tell the game which "finish" music to play depending on which mode the player is in (Grand Prix, Time Trials, etc),
|
||||
whether the game is in multiplayer or not, and which position they ended up finishing in (1st, 2nd, 3rd, etc)
|
||||
/*
|
||||
Routine to tell the game which "finish" music to play depending on which mode the player is in (Grand Prix, Time
|
||||
Trials, etc), whether the game is in multiplayer or not, and which position they ended up finishing in (1st, 2nd,
|
||||
3rd, etc)
|
||||
|
||||
Contains a LOT of inlined funcs.
|
||||
Contains a LOT of inlined funcs.
|
||||
Modify if you dare.
|
||||
*/
|
||||
void func_800C76C0(u8 playerId) {
|
||||
@@ -3577,18 +3578,23 @@ void begin_losing_ceremony_sequence() {
|
||||
D_800EA174++;
|
||||
|
||||
if (D_800EA174 == 3) {
|
||||
play_sequence(SEQ_EVENT_CEREMONY_PRESENTATION_PART1); // Begin with Part 1 of the ceremony presentation music --- "Everything seems normal..."
|
||||
play_sequence(SEQ_EVENT_CEREMONY_PRESENTATION_PART1); // Begin with Part 1 of the ceremony presentation
|
||||
// music --- "Everything seems normal..."
|
||||
func_800C3448(0x4000007F);
|
||||
}
|
||||
|
||||
if (D_800EA174 == 300) {
|
||||
play_sequence(SEQ_EVENT_CEREMONY_PRESENTATION_PART2_WIN); // Follow up with Part 2 of the winning ceremony presentation music --- "Looks like I won...?"
|
||||
play_sequence(SEQ_EVENT_CEREMONY_PRESENTATION_PART2_WIN); // Follow up with Part 2 of the winning ceremony
|
||||
// presentation music --- "Looks like I won...?"
|
||||
func_800C3448(0x4000007F);
|
||||
play_sequence2(SEQ_EVENT_CEREMONY_PRESENTATION_PART2_LOSE); // Once it ends, begin the LOSING ceremony presentation music, which has a few notes changed to be off-tune --- "Uh oh..."
|
||||
play_sequence2(SEQ_EVENT_CEREMONY_PRESENTATION_PART2_LOSE); // Once it ends, begin the LOSING ceremony
|
||||
// presentation music, which has a few notes
|
||||
// changed to be off-tune --- "Uh oh..."
|
||||
func_800C3448(0x41000000);
|
||||
}
|
||||
|
||||
if (D_800EA174 == 560) { // (Somewhere in this code it slows down the music, changes the pitch of it and completely breaks the music)
|
||||
if (D_800EA174 == 560) { // (Somewhere in this code it slows down the music, changes the pitch of it and
|
||||
// completely breaks the music)
|
||||
func_800C3448(0x40640000);
|
||||
func_800C3448(0xB0640073);
|
||||
func_800C3448(0x4150007F);
|
||||
@@ -3608,11 +3614,13 @@ void begin_losing_ceremony_sequence() {
|
||||
func_800C3448(0x41320000);
|
||||
}
|
||||
|
||||
if (D_800EA174 == 1200) { // (Player gets hit by the bomb-omb car; play the "explosion" sound effect and the "hurt" voice for the current character)
|
||||
if (D_800EA174 == 1200) { // (Player gets hit by the bomb-omb car; play the "explosion" sound effect and the
|
||||
// "hurt" voice for the current character)
|
||||
func_800C3448(0x110100FF);
|
||||
}
|
||||
|
||||
if (D_800EA174 == 1230) { // Once the music is completely broken by this point, play the "No Trophy For You!" sequence --- "Aw man, I lost... :("
|
||||
if (D_800EA174 == 1230) { // Once the music is completely broken by this point, play the "No Trophy For You!"
|
||||
// sequence --- "Aw man, I lost... :("
|
||||
play_sequence(SEQ_EVENT_CEREMONY_TROPHY_LOSE);
|
||||
func_800C3448(0x4000007F); // (Play the "losing" voice for the current character, twice)
|
||||
}
|
||||
|
||||
+5
-2
@@ -787,7 +787,10 @@ void audio_init(void) {
|
||||
#ifdef TARGET_N64
|
||||
// It seems boot.s doesn't clear the .bss area for audio, so do it here.
|
||||
ptr64 = (u64*) ((u8*) gGfxSPTaskOutputBuffer + sizeof(gGfxSPTaskOutputBuffer));
|
||||
for (k = ((uintptr_t) &gAudioGlobalsEndMarker - (uintptr_t) ((u64 *)((u8 *) gGfxSPTaskOutputBuffer + sizeof(gGfxSPTaskOutputBuffer))) ) / 8; k >= 0; k--) {
|
||||
for (k = ((uintptr_t) &gAudioGlobalsEndMarker -
|
||||
(uintptr_t) ((u64*) ((u8*) gGfxSPTaskOutputBuffer + sizeof(gGfxSPTaskOutputBuffer)))) /
|
||||
8;
|
||||
k >= 0; k--) {
|
||||
*ptr64++ = 0;
|
||||
}
|
||||
#endif
|
||||
@@ -882,7 +885,7 @@ void audio_init(void) {
|
||||
|
||||
// Load bank sets for each sequence
|
||||
gAlBankSets = soundAlloc(&gAudioInitPool, 0x100);
|
||||
audio_dma_copy_immediate((u8 *) &_instrument_setsSegmentRomStart, gAlBankSets, 0x100);
|
||||
audio_dma_copy_immediate((u8*) &_instrument_setsSegmentRomStart, gAlBankSets, 0x100);
|
||||
|
||||
sound_alloc_pool_init(&gUnkPool1.pool, soundAlloc(&gAudioInitPool, (u32) D_800EA5D8), (u32) D_800EA5D8);
|
||||
init_sequence_players();
|
||||
|
||||
+1
-1
@@ -9,7 +9,7 @@
|
||||
#define PRELOAD_BANKS 2
|
||||
#define PRELOAD_SEQUENCE 1
|
||||
|
||||
#define IS_SEQUENCE_CHANNEL_VALID(ptr) ((uintptr_t) (ptr) != (uintptr_t) &gSequenceChannelNone)
|
||||
#define IS_SEQUENCE_CHANNEL_VALID(ptr) ((uintptr_t) (ptr) != (uintptr_t) & gSequenceChannelNone)
|
||||
|
||||
struct SharedDma {
|
||||
/*0x0*/ u8* buffer; // target, points to pre-allocated buffer
|
||||
|
||||
+28
-50
@@ -330,13 +330,13 @@ Acmd* synthesis_do_one_audio_update(s16* aiBuf, s32 bufLen, Acmd* acmd, s32 upda
|
||||
Acmd* synthesis_process_note(s32 noteIndex, struct NoteSubEu* noteSubEu, struct NoteSynthesisState* synthesisState,
|
||||
UNUSED s16* aiBuf, s32 inBuf, Acmd* cmd, s32 updateIndex) {
|
||||
s32 pad[3];
|
||||
struct AudioBankSample *audioBookSample; // sp130
|
||||
struct AdpcmLoop *loopInfo; // sp12C
|
||||
s16 *curLoadedBook; // sp128
|
||||
struct AudioBankSample* audioBookSample; // sp130
|
||||
struct AdpcmLoop* loopInfo; // sp12C
|
||||
s16* curLoadedBook; // sp128
|
||||
s32 pad4;
|
||||
s32 nSamplesToLoad;
|
||||
s32 noteFinished; // sp11C
|
||||
s32 restart; // sp118
|
||||
s32 restart; // sp118
|
||||
s32 flags;
|
||||
u16 resamplingRateFixedPoint; // sp112
|
||||
s32 pad2[1];
|
||||
@@ -347,22 +347,22 @@ Acmd* synthesis_process_note(s32 noteIndex, struct NoteSubEu* noteSubEu, struct
|
||||
s32 pad3;
|
||||
s32 nAdpcmSamplesProcessed;
|
||||
s32 s4;
|
||||
u8 *sampleAddr; // spEC
|
||||
u8* sampleAddr; // spEC
|
||||
s32 s3;
|
||||
s32 samplesLenAdjusted; // spE4
|
||||
s32 leftRight;
|
||||
s32 endPos; // spDC
|
||||
s32 endPos; // spDC
|
||||
s32 nSamplesToProcess; // spD8
|
||||
u32 samplesLenFixedPoint;
|
||||
s32 var_s6;
|
||||
s32 nSamplesInThisIteration;
|
||||
u32 var_t2;
|
||||
u8 *var_a0_2;
|
||||
u8* var_a0_2;
|
||||
s32 s5Aligned;
|
||||
s32 temp_t6;
|
||||
s32 aligned;
|
||||
struct AudioBankSample *bankSample;
|
||||
s32 nParts; // spB0
|
||||
struct AudioBankSample* bankSample;
|
||||
s32 nParts; // spB0
|
||||
s32 curPart; // spAC
|
||||
s32 pad5;
|
||||
s16 addr;
|
||||
@@ -371,7 +371,7 @@ Acmd* synthesis_process_note(s32 noteIndex, struct NoteSubEu* noteSubEu, struct
|
||||
s32 samplesRemaining;
|
||||
s32 s1;
|
||||
u32 nEntries;
|
||||
struct Note *note;
|
||||
struct Note* note;
|
||||
|
||||
curLoadedBook = NULL;
|
||||
note = &gNotes[noteIndex];
|
||||
@@ -420,7 +420,7 @@ Acmd* synthesis_process_note(s32 noteIndex, struct NoteSubEu* noteSubEu, struct
|
||||
if (curLoadedBook != (*bankSample->book).book) {
|
||||
curLoadedBook = bankSample->book->book;
|
||||
nEntries = (16 * bankSample->book->order) * bankSample->book->npredictors;
|
||||
aLoadADPCM(cmd++, nEntries, VIRTUAL_TO_PHYSICAL2(noteSubEu->bookOffset+curLoadedBook));
|
||||
aLoadADPCM(cmd++, nEntries, VIRTUAL_TO_PHYSICAL2(noteSubEu->bookOffset + curLoadedBook));
|
||||
}
|
||||
if (noteSubEu->bookOffset != 0) {
|
||||
curLoadedBook = &gUnknownData_800F6290[0];
|
||||
@@ -567,7 +567,8 @@ Acmd* synthesis_process_note(s32 noteIndex, struct NoteSubEu* noteSubEu, struct
|
||||
noteSubEu->needsInit = false;
|
||||
}
|
||||
|
||||
cmd = final_resample(cmd, synthesisState, inBuf * 2, resamplingRateFixedPoint, noteSamplesDmemAddrBeforeResampling, flags);
|
||||
cmd = final_resample(cmd, synthesisState, inBuf * 2, resamplingRateFixedPoint, noteSamplesDmemAddrBeforeResampling,
|
||||
flags);
|
||||
headsetPanRight = noteSubEu->headsetPanRight;
|
||||
if ((headsetPanRight & 0xFFFF) || synthesisState->prevHeadsetPanRight) {
|
||||
leftRight = 1;
|
||||
@@ -619,13 +620,13 @@ Acmd* func_800B86A0(Acmd* cmd, struct NoteSubEu* note, struct NoteSynthesisState
|
||||
|
||||
sourceLeft = synthesisState->curVolLeft;
|
||||
sourceRight = synthesisState->curVolRight;
|
||||
|
||||
|
||||
targetLeft = (note->targetVolLeft) << 4;
|
||||
targetRight = (note->targetVolRight) << 4;
|
||||
|
||||
rampLeft = ((targetLeft - sourceLeft) / (nSamples >> 3));
|
||||
rampLeft = ((targetLeft - sourceLeft) / (nSamples >> 3));
|
||||
rampRight = ((targetRight - sourceRight) / (nSamples >> 3));
|
||||
targetLeft = sourceLeft + rampLeft * (nSamples >> 3);
|
||||
targetLeft = sourceLeft + rampLeft * (nSamples >> 3);
|
||||
targetRight = sourceRight + rampRight * (nSamples >> 3);
|
||||
|
||||
synthesisState->curVolLeft = targetLeft;
|
||||
@@ -633,52 +634,29 @@ Acmd* func_800B86A0(Acmd* cmd, struct NoteSubEu* note, struct NoteSynthesisState
|
||||
|
||||
if (note->usesHeadsetPanEffects) {
|
||||
aClearBuffer(cmd++, DMEM_ADDR_NOTE_PAN_TEMP, DEFAULT_LEN_1CH);
|
||||
aEnvSetup1Alt(cmd++, note->reverbVol, sourceLeft, sourceRight, (u32)rampLeft, (u32)rampRight);
|
||||
aEnvSetup1Alt(cmd++, note->reverbVol, sourceLeft, sourceRight, (u32) rampLeft, (u32) rampRight);
|
||||
aEnvSetup2(cmd++, sourceLeft, sourceRight);
|
||||
|
||||
switch (headsetPanSettings) {;
|
||||
switch (headsetPanSettings) {
|
||||
;
|
||||
case 1:
|
||||
aEnvMixer(cmd++,
|
||||
inBuf, nSamples,
|
||||
0,
|
||||
note->stereoStrongRight, note->stereoStrongLeft,
|
||||
DMEM_ADDR_NOTE_PAN_TEMP,
|
||||
DMEM_ADDR_RIGHT_CH,
|
||||
DMEM_ADDR_WET_LEFT_CH,
|
||||
DMEM_ADDR_WET_RIGHT_CH);
|
||||
aEnvMixer(cmd++, inBuf, nSamples, 0, note->stereoStrongRight, note->stereoStrongLeft,
|
||||
DMEM_ADDR_NOTE_PAN_TEMP, DMEM_ADDR_RIGHT_CH, DMEM_ADDR_WET_LEFT_CH, DMEM_ADDR_WET_RIGHT_CH);
|
||||
break;
|
||||
case 2:
|
||||
aEnvMixer(cmd++,
|
||||
inBuf, nSamples,
|
||||
0,
|
||||
note->stereoStrongRight, note->stereoStrongLeft,
|
||||
DMEM_ADDR_LEFT_CH,
|
||||
DMEM_ADDR_NOTE_PAN_TEMP,
|
||||
DMEM_ADDR_WET_LEFT_CH,
|
||||
DMEM_ADDR_WET_RIGHT_CH);
|
||||
aEnvMixer(cmd++, inBuf, nSamples, 0, note->stereoStrongRight, note->stereoStrongLeft, DMEM_ADDR_LEFT_CH,
|
||||
DMEM_ADDR_NOTE_PAN_TEMP, DMEM_ADDR_WET_LEFT_CH, DMEM_ADDR_WET_RIGHT_CH);
|
||||
break;
|
||||
default:
|
||||
aEnvMixer(cmd++,
|
||||
inBuf, nSamples,
|
||||
0,
|
||||
note->stereoStrongRight, note->stereoStrongLeft,
|
||||
DMEM_ADDR_LEFT_CH,
|
||||
DMEM_ADDR_RIGHT_CH,
|
||||
DMEM_ADDR_WET_LEFT_CH,
|
||||
DMEM_ADDR_WET_RIGHT_CH);
|
||||
aEnvMixer(cmd++, inBuf, nSamples, 0, note->stereoStrongRight, note->stereoStrongLeft, DMEM_ADDR_LEFT_CH,
|
||||
DMEM_ADDR_RIGHT_CH, DMEM_ADDR_WET_LEFT_CH, DMEM_ADDR_WET_RIGHT_CH);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
aEnvSetup1Alt(cmd++, note->reverbVol, sourceLeft, sourceRight, (u32)rampLeft, (u32)rampRight);
|
||||
aEnvSetup1Alt(cmd++, note->reverbVol, sourceLeft, sourceRight, (u32) rampLeft, (u32) rampRight);
|
||||
aEnvSetup2(cmd++, sourceLeft, sourceRight);
|
||||
aEnvMixer(cmd++,
|
||||
inBuf, nSamples,
|
||||
0,
|
||||
note->stereoStrongRight, note->stereoStrongLeft,
|
||||
DMEM_ADDR_LEFT_CH,
|
||||
DMEM_ADDR_RIGHT_CH,
|
||||
DMEM_ADDR_WET_LEFT_CH,
|
||||
DMEM_ADDR_WET_RIGHT_CH);
|
||||
aEnvMixer(cmd++, inBuf, nSamples, 0, note->stereoStrongRight, note->stereoStrongLeft, DMEM_ADDR_LEFT_CH,
|
||||
DMEM_ADDR_RIGHT_CH, DMEM_ADDR_WET_LEFT_CH, DMEM_ADDR_WET_RIGHT_CH);
|
||||
}
|
||||
return cmd;
|
||||
}
|
||||
|
||||
+75
-42
@@ -2851,12 +2851,12 @@ void set_drift_particles(Player* player, s16 arg1, UNUSED s32 arg2, UNUSED s8 ar
|
||||
|
||||
if (player->unk_0C0 >= 0) {
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], player->tyres[BACK_LEFT].pos[0],
|
||||
player->tyres[BACK_LEFT].baseHeight + 2.0f, player->tyres[BACK_LEFT].pos[2],
|
||||
player->tyres[BACK_LEFT].surfaceType, 1);
|
||||
player->tyres[BACK_LEFT].baseHeight + 2.0f, player->tyres[BACK_LEFT].pos[2],
|
||||
player->tyres[BACK_LEFT].surfaceType, 1);
|
||||
} else {
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], player->tyres[BACK_RIGHT].pos[0],
|
||||
player->tyres[BACK_RIGHT].baseHeight + 2.0f, player->tyres[BACK_RIGHT].pos[2],
|
||||
player->tyres[BACK_RIGHT].surfaceType, 0);
|
||||
player->tyres[BACK_RIGHT].baseHeight + 2.0f,
|
||||
player->tyres[BACK_RIGHT].pos[2], player->tyres[BACK_RIGHT].surfaceType, 0);
|
||||
}
|
||||
|
||||
temp_lo = player->unk_0C0 / 182;
|
||||
@@ -2932,7 +2932,8 @@ void setup_tyre_particles(Player* player, s16 arg1, s32 arg2, UNUSED s8 arg3, UN
|
||||
if ((arg1 == 0) &&
|
||||
((player->particlePool1[arg2].timer > 0) || (player->particlePool1[arg2].isAlive == 0))) {
|
||||
if (((player->speed / 18.0f) * 216.0f) >= 10.0f) {
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], tyre_x, tyre_y, tyre_z, (s8) surfaceType, (s8) var_t3);
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], tyre_x, tyre_y, tyre_z,
|
||||
(s8) surfaceType, (s8) var_t3);
|
||||
init_particle_player(&player->particlePool1[arg1], GROUND_PARTICLE, 0.46f);
|
||||
if ((gCurrentCourseId == COURSE_CHOCO_MOUNTAIN) || (gCurrentCourseId == COURSE_ROYAL_RACEWAY)) {
|
||||
func_8005DAD8(&player->particlePool1[arg1], 1, 0, 0x0080);
|
||||
@@ -2955,7 +2956,8 @@ void setup_tyre_particles(Player* player, s16 arg1, s32 arg2, UNUSED s8 arg3, UN
|
||||
player->particlePool1[arg1].green = random_int(0x0010U);
|
||||
}
|
||||
} else if ((player->particlePool1[arg2].timer > 0) && (((player->speed / 18.0f) * 216.0f) >= 10.0f)) {
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], tyre_x, tyre_y, tyre_z, (s8) surfaceType, (s8) var_t3);
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], tyre_x, tyre_y, tyre_z,
|
||||
(s8) surfaceType, (s8) var_t3);
|
||||
init_particle_player(&player->particlePool1[arg1], GROUND_PARTICLE, 0.46f);
|
||||
if ((gCurrentCourseId == COURSE_CHOCO_MOUNTAIN) || (gCurrentCourseId == COURSE_ROYAL_RACEWAY)) {
|
||||
func_8005DAD8(&player->particlePool1[arg1], 1, 0, 0x0080);
|
||||
@@ -2982,7 +2984,8 @@ void setup_tyre_particles(Player* player, s16 arg1, s32 arg2, UNUSED s8 arg3, UN
|
||||
if ((arg1 == 0) &&
|
||||
((player->particlePool1[arg2].timer > 0) || (player->particlePool1[arg2].isAlive == 0))) {
|
||||
if (((player->speed / 18.0f) * 216.0f) >= 10.0f) {
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], tyre_x, tyre_y, tyre_z, (s8) surfaceType, (s8) var_t3);
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], tyre_x, tyre_y, tyre_z,
|
||||
(s8) surfaceType, (s8) var_t3);
|
||||
init_particle_player(&player->particlePool1[arg1], GRASS_PARTICLE, 1.0f);
|
||||
set_particle_colour(&player->particlePool1[arg1], RGB32(0xFF, 0xFF, 0xFF), 0x00FF);
|
||||
player->particlePool1[arg1].red -= arg1 * 8;
|
||||
@@ -2990,7 +2993,8 @@ void setup_tyre_particles(Player* player, s16 arg1, s32 arg2, UNUSED s8 arg3, UN
|
||||
player->particlePool1[arg1].blue -= arg1 * 8;
|
||||
}
|
||||
} else if ((player->particlePool1[arg2].timer > 0) && (((player->speed / 18.0f) * 216.0f) >= 10.0f)) {
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], tyre_x, tyre_y, tyre_z, (s8) surfaceType, (s8) var_t3);
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], tyre_x, tyre_y, tyre_z,
|
||||
(s8) surfaceType, (s8) var_t3);
|
||||
init_particle_player(&player->particlePool1[arg1], GRASS_PARTICLE, 1.0f);
|
||||
set_particle_colour(&player->particlePool1[arg1], RGB32(0xFF, 0xFF, 0xFF), 0x00FF);
|
||||
player->particlePool1[arg1].red -= arg1 * 8;
|
||||
@@ -3003,13 +3007,15 @@ void setup_tyre_particles(Player* player, s16 arg1, s32 arg2, UNUSED s8 arg3, UN
|
||||
if ((arg1 == 0) &&
|
||||
((player->particlePool1[arg2].timer > 0) || (player->particlePool1[arg2].isAlive == 0))) {
|
||||
if (((player->speed / 18.0f) * 216.0f) >= 10.0f) {
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], tyre_x, tyre_y, tyre_z, (s8) surfaceType, (s8) var_t3);
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], tyre_x, tyre_y, tyre_z,
|
||||
(s8) surfaceType, (s8) var_t3);
|
||||
init_particle_player(&player->particlePool1[arg1], GROUND_PARTICLE, 0.46f);
|
||||
func_8005DAD8(&player->particlePool1[arg1], 2, 1, 0x00A8);
|
||||
player->particlePool1[arg1].green = random_int(0x0010U);
|
||||
}
|
||||
} else if ((player->particlePool1[arg2].timer > 0) && (((player->speed / 18.0f) * 216.0f) >= 10.0f)) {
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], tyre_x, tyre_y, tyre_z, (s8) surfaceType, (s8) var_t3);
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], tyre_x, tyre_y, tyre_z,
|
||||
(s8) surfaceType, (s8) var_t3);
|
||||
init_particle_player(&player->particlePool1[arg1], GROUND_PARTICLE, 0.46f);
|
||||
func_8005DAD8(&player->particlePool1[arg1], 2, 1, 0x00A8);
|
||||
player->particlePool1[arg1].green = random_int(0x0010U);
|
||||
@@ -3019,13 +3025,15 @@ void setup_tyre_particles(Player* player, s16 arg1, s32 arg2, UNUSED s8 arg3, UN
|
||||
if ((arg1 == 0) &&
|
||||
((player->particlePool1[arg2].timer > 0) || (player->particlePool1[arg2].isAlive == 0))) {
|
||||
if (((player->speed / 18.0f) * 216.0f) >= 10.0f) {
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], tyre_x, tyre_y, tyre_z, (s8) surfaceType, (s8) var_t3);
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], tyre_x, tyre_y, tyre_z,
|
||||
(s8) surfaceType, (s8) var_t3);
|
||||
init_particle_player(&player->particlePool1[arg1], GROUND_PARTICLE, 0.46f);
|
||||
func_8005DAD8(&player->particlePool1[arg1], 3, 1, 0x00A8);
|
||||
player->particlePool1[arg1].green = random_int(0x0010U);
|
||||
}
|
||||
} else if ((player->particlePool1[arg2].timer > 0) && (((player->speed / 18.0f) * 216.0f) >= 10.0f)) {
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], tyre_x, tyre_y, tyre_z, (s8) surfaceType, (s8) var_t3);
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], tyre_x, tyre_y, tyre_z,
|
||||
(s8) surfaceType, (s8) var_t3);
|
||||
init_particle_player(&player->particlePool1[arg1], GROUND_PARTICLE, 0.46f);
|
||||
func_8005DAD8(&player->particlePool1[arg1], 3, 1, 0x00A8);
|
||||
player->particlePool1[arg1].green = random_int(0x0010U);
|
||||
@@ -3035,13 +3043,15 @@ void setup_tyre_particles(Player* player, s16 arg1, s32 arg2, UNUSED s8 arg3, UN
|
||||
if ((arg1 == 0) &&
|
||||
((player->particlePool1[arg2].timer > 0) || (player->particlePool1[arg2].isAlive == 0))) {
|
||||
if (((player->speed / 18.0f) * 216.0f) >= 10.0f) {
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], tyre_x, tyre_y, tyre_z, (s8) surfaceType, (s8) var_t3);
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], tyre_x, tyre_y, tyre_z,
|
||||
(s8) surfaceType, (s8) var_t3);
|
||||
init_particle_player(&player->particlePool1[arg1], GROUND_PARTICLE, 0.46f);
|
||||
func_8005DAD8(&player->particlePool1[arg1], 4, 1, 0x00A8);
|
||||
player->particlePool1[arg1].green = random_int(0x0010U);
|
||||
}
|
||||
} else if ((player->particlePool1[arg2].timer > 0) && (((player->speed / 18.0f) * 216.0f) >= 10.0f)) {
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], tyre_x, tyre_y, tyre_z, (s8) surfaceType, (s8) var_t3);
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], tyre_x, tyre_y, tyre_z,
|
||||
(s8) surfaceType, (s8) var_t3);
|
||||
init_particle_player(&player->particlePool1[arg1], GROUND_PARTICLE, 0.46f);
|
||||
func_8005DAD8(&player->particlePool1[arg1], 4, 1, 0x00A8);
|
||||
player->particlePool1[arg1].green = random_int(0x0010U);
|
||||
@@ -3051,13 +3061,15 @@ void setup_tyre_particles(Player* player, s16 arg1, s32 arg2, UNUSED s8 arg3, UN
|
||||
if ((arg1 == 0) &&
|
||||
((player->particlePool1[arg2].timer > 0) || (player->particlePool1[arg2].isAlive == 0))) {
|
||||
if (((player->speed / 18.0f) * 216.0f) >= 10.0f) {
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], tyre_x, tyre_y, tyre_z, (s8) surfaceType, (s8) var_t3);
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], tyre_x, tyre_y, tyre_z,
|
||||
(s8) surfaceType, (s8) var_t3);
|
||||
init_particle_player(&player->particlePool1[arg1], GROUND_PARTICLE, 0.46f);
|
||||
func_8005DAD8(&player->particlePool1[arg1], 5, 1, 0x00A8);
|
||||
player->particlePool1[arg1].green = random_int(0x0010U);
|
||||
}
|
||||
} else if ((player->particlePool1[arg2].timer > 0) && (((player->speed / 18.0f) * 216.0f) >= 10.0f)) {
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], tyre_x, tyre_y, tyre_z, (s8) surfaceType, (s8) var_t3);
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], tyre_x, tyre_y, tyre_z,
|
||||
(s8) surfaceType, (s8) var_t3);
|
||||
init_particle_player(&player->particlePool1[arg1], GROUND_PARTICLE, 0.46f);
|
||||
func_8005D82C(&player->particlePool1[arg1], 0x00FFA54F, 0x00AF);
|
||||
func_8005DAD8(&player->particlePool1[arg1], 5, 1, 0x00A8);
|
||||
@@ -3069,13 +3081,15 @@ void setup_tyre_particles(Player* player, s16 arg1, s32 arg2, UNUSED s8 arg3, UN
|
||||
if ((arg1 == 0) &&
|
||||
((player->particlePool1[arg2].timer > 0) || (player->particlePool1[arg2].isAlive == 0))) {
|
||||
if (((player->speed / 18.0f) * 216.0f) >= 10.0f) {
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], tyre_x, tyre_y, tyre_z, (s8) surfaceType, (s8) var_t3);
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], tyre_x, tyre_y, tyre_z,
|
||||
(s8) surfaceType, (s8) var_t3);
|
||||
init_particle_player(&player->particlePool1[arg1], GROUND_PARTICLE, 0.46f);
|
||||
func_8005DAD8(&player->particlePool1[arg1], 6, 1, 0x00A8);
|
||||
player->particlePool1[arg1].green = random_int(0x0010U);
|
||||
}
|
||||
} else if ((player->particlePool1[arg2].timer > 0) && (((player->speed / 18.0f) * 216.0f) >= 10.0f)) {
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], tyre_x, tyre_y, tyre_z, (s8) surfaceType, (s8) var_t3);
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], tyre_x, tyre_y, tyre_z,
|
||||
(s8) surfaceType, (s8) var_t3);
|
||||
init_particle_player(&player->particlePool1[arg1], GROUND_PARTICLE, 0.46f);
|
||||
func_8005DAD8(&player->particlePool1[arg1], 6, 1, 0x00A8);
|
||||
player->particlePool1[arg1].green = random_int(0x0010U);
|
||||
@@ -3089,7 +3103,8 @@ void setup_tyre_particles(Player* player, s16 arg1, s32 arg2, UNUSED s8 arg3, UN
|
||||
if (((((player->speed / 18.0f) * 216.0f) >= 30.0f) &&
|
||||
((((player->unk_0C0 / 182) > 0x14) || ((player->unk_0C0 / 182) < (-0x14))))) ||
|
||||
((player->previousSpeed - player->speed) >= 0.04)) {
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], tyre_x, tyre_y, tyre_z, (s8) surfaceType, (s8) var_t3);
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], tyre_x, tyre_y, tyre_z,
|
||||
(s8) surfaceType, (s8) var_t3);
|
||||
init_particle_player(&player->particlePool1[arg1], GROUND_PARTICLE, 0.46f);
|
||||
func_8005DAD8(&player->particlePool1[arg1], 0, 0, 0x0080);
|
||||
player->particlePool1[arg1].green = random_int(0x0010U);
|
||||
@@ -3098,7 +3113,8 @@ void setup_tyre_particles(Player* player, s16 arg1, s32 arg2, UNUSED s8 arg3, UN
|
||||
(((((player->speed / 18.0f) * 216.0f) >= 30.0f) &&
|
||||
(((player->unk_0C0 / 182) >= 0x15) || ((player->unk_0C0 / 182) < -0x14))) ||
|
||||
((player->previousSpeed - player->speed) >= 0.04))) {
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], tyre_x, tyre_y, tyre_z, (s8) surfaceType, (s8) var_t3);
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], tyre_x, tyre_y, tyre_z,
|
||||
(s8) surfaceType, (s8) var_t3);
|
||||
init_particle_player(&player->particlePool1[arg1], GROUND_PARTICLE, 0.46f);
|
||||
func_8005DAD8(&player->particlePool1[arg1], 0, 0, 0x0080);
|
||||
player->particlePool1[arg1].green = random_int(0x0010U);
|
||||
@@ -3232,14 +3248,16 @@ void func_8005ED48(Player* player, s16 arg1, s32 arg2, UNUSED s8 arg3, UNUSED s8
|
||||
case GRASS:
|
||||
if ((arg1 == 0) &&
|
||||
((player->particlePool1[arg2].timer > 0) || (player->particlePool1[arg2].isAlive == 0))) {
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], x, y, z, (s8) surfaceType, (s8) var_t3);
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], x, y, z, (s8) surfaceType,
|
||||
(s8) var_t3);
|
||||
init_particle_player(&player->particlePool1[arg1], 5, 0.1f);
|
||||
set_particle_colour(&player->particlePool1[arg1], RGB32(0xFF, 0xFF, 0xFF), 0x00FF);
|
||||
player->particlePool1[arg1].red -= arg1 * 8;
|
||||
player->particlePool1[arg1].green -= arg1 * 8;
|
||||
player->particlePool1[arg1].blue -= arg1 * 8;
|
||||
} else if (player->particlePool1[arg2].timer > 0) {
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], x, y, z, (s8) surfaceType, (s8) var_t3);
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], x, y, z, (s8) surfaceType,
|
||||
(s8) var_t3);
|
||||
init_particle_player(&player->particlePool1[arg1], 5, 0.1f);
|
||||
set_particle_colour(&player->particlePool1[arg1], RGB32(0xFF, 0xFF, 0xFF), 0x00FF);
|
||||
player->particlePool1[arg1].red -= arg1 * 8;
|
||||
@@ -3251,12 +3269,14 @@ void func_8005ED48(Player* player, s16 arg1, s32 arg2, UNUSED s8 arg3, UNUSED s8
|
||||
case SAND_OFFROAD:
|
||||
if ((arg1 == 0) &&
|
||||
((player->particlePool1[arg2].timer > 0) || (player->particlePool1[arg2].isAlive == 0))) {
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], x, y, z, (s8) surfaceType, (s8) var_t3);
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], x, y, z, (s8) surfaceType,
|
||||
(s8) var_t3);
|
||||
init_particle_player(&player->particlePool1[arg1], 5, 0.46f);
|
||||
func_8005DAD8(&player->particlePool1[arg1], 2, 1, 0x00A8);
|
||||
player->particlePool1[arg1].green = random_int(0x0010U);
|
||||
} else if (player->particlePool1[arg2].timer > 0) {
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], x, y, z, (s8) surfaceType, (s8) var_t3);
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], x, y, z, (s8) surfaceType,
|
||||
(s8) var_t3);
|
||||
init_particle_player(&player->particlePool1[arg1], 5, 0.46f);
|
||||
func_8005DAD8(&player->particlePool1[arg1], 2, 1, 0x00A8);
|
||||
player->particlePool1[arg1].green = random_int(0x0010U);
|
||||
@@ -3265,12 +3285,14 @@ void func_8005ED48(Player* player, s16 arg1, s32 arg2, UNUSED s8 arg3, UNUSED s8
|
||||
case SAND:
|
||||
if ((arg1 == 0) &&
|
||||
((player->particlePool1[arg2].timer > 0) || (player->particlePool1[arg2].isAlive == 0))) {
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], x, y, z, (s8) surfaceType, (s8) var_t3);
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], x, y, z, (s8) surfaceType,
|
||||
(s8) var_t3);
|
||||
init_particle_player(&player->particlePool1[arg1], 5, 0.46f);
|
||||
func_8005DAD8(&player->particlePool1[arg1], 3, 1, 0x00A8);
|
||||
player->particlePool1[arg1].green = random_int(0x0010U);
|
||||
} else if (player->particlePool1[arg2].timer > 0) {
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], x, y, z, (s8) surfaceType, (s8) var_t3);
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], x, y, z, (s8) surfaceType,
|
||||
(s8) var_t3);
|
||||
init_particle_player(&player->particlePool1[arg1], 5, 0.46f);
|
||||
func_8005DAD8(&player->particlePool1[arg1], 3, 1, 0x00A8);
|
||||
player->particlePool1[arg1].green = random_int(0x0010U);
|
||||
@@ -3279,12 +3301,14 @@ void func_8005ED48(Player* player, s16 arg1, s32 arg2, UNUSED s8 arg3, UNUSED s8
|
||||
case WET_SAND:
|
||||
if ((arg1 == 0) &&
|
||||
((player->particlePool1[arg2].timer > 0) || (player->particlePool1[arg2].isAlive == 0))) {
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], x, y, z, (s8) surfaceType, (s8) var_t3);
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], x, y, z, (s8) surfaceType,
|
||||
(s8) var_t3);
|
||||
init_particle_player(&player->particlePool1[arg1], 5, 0.46f);
|
||||
func_8005DAD8(&player->particlePool1[arg1], 4, 1, 0x00A8);
|
||||
player->particlePool1[arg1].green = random_int(0x0010U);
|
||||
} else if (player->particlePool1[arg2].timer > 0) {
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], x, y, z, (s8) surfaceType, (s8) var_t3);
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], x, y, z, (s8) surfaceType,
|
||||
(s8) var_t3);
|
||||
init_particle_player(&player->particlePool1[arg1], 5, 0.46f);
|
||||
func_8005DAD8(&player->particlePool1[arg1], 4, 1, 0x00A8);
|
||||
player->particlePool1[arg1].green = random_int(0x0010U);
|
||||
@@ -3293,12 +3317,14 @@ void func_8005ED48(Player* player, s16 arg1, s32 arg2, UNUSED s8 arg3, UNUSED s8
|
||||
case DIRT_OFFROAD:
|
||||
if ((arg1 == 0) &&
|
||||
((player->particlePool1[arg2].timer > 0) || (player->particlePool1[arg2].isAlive == 0))) {
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], x, y, z, (s8) surfaceType, (s8) var_t3);
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], x, y, z, (s8) surfaceType,
|
||||
(s8) var_t3);
|
||||
init_particle_player(&player->particlePool1[arg1], 5, 0.46f);
|
||||
func_8005DAD8(&player->particlePool1[arg1], 5, 1, 0x00A8);
|
||||
player->particlePool1[arg1].green = random_int(0x0010U);
|
||||
} else if (player->particlePool1[arg2].timer > 0) {
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], x, y, z, (s8) surfaceType, (s8) var_t3);
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], x, y, z, (s8) surfaceType,
|
||||
(s8) var_t3);
|
||||
init_particle_player(&player->particlePool1[arg1], 5, 0.46f);
|
||||
func_8005DAD8(&player->particlePool1[arg1], 5, 1, 0x00A8);
|
||||
player->particlePool1[arg1].green = random_int(0x0010U);
|
||||
@@ -3308,12 +3334,14 @@ void func_8005ED48(Player* player, s16 arg1, s32 arg2, UNUSED s8 arg3, UNUSED s8
|
||||
case SNOW_OFFROAD:
|
||||
if ((arg1 == 0) &&
|
||||
((player->particlePool1[arg2].timer > 0) || (player->particlePool1[arg2].isAlive == 0))) {
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], x, y, z, (s8) surfaceType, (s8) var_t3);
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], x, y, z, (s8) surfaceType,
|
||||
(s8) var_t3);
|
||||
init_particle_player(&player->particlePool1[arg1], 5, 0.46f);
|
||||
func_8005DAD8(&player->particlePool1[arg1], 6, 1, 0x00A8);
|
||||
player->particlePool1[arg1].green = random_int(0x0010U);
|
||||
} else if (player->particlePool1[arg2].timer > 0) {
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], x, y, z, (s8) surfaceType, (s8) var_t3);
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], x, y, z, (s8) surfaceType,
|
||||
(s8) var_t3);
|
||||
init_particle_player(&player->particlePool1[arg1], 5, 0.46f);
|
||||
func_8005DAD8(&player->particlePool1[arg1], 6, 1, 0x00A8);
|
||||
player->particlePool1[arg1].green = random_int(0x0010U);
|
||||
@@ -3324,12 +3352,14 @@ void func_8005ED48(Player* player, s16 arg1, s32 arg2, UNUSED s8 arg3, UNUSED s8
|
||||
case BRIDGE:
|
||||
if ((arg1 == 0) &&
|
||||
((player->particlePool1[arg2].timer > 0) || (player->particlePool1[arg2].isAlive == 0))) {
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], x, y, z, (s8) surfaceType, (s8) var_t3);
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], x, y, z, (s8) surfaceType,
|
||||
(s8) var_t3);
|
||||
init_particle_player(&player->particlePool1[arg1], 5, 0.46f);
|
||||
func_8005DAD8(&player->particlePool1[arg1], 0, 0, 0x0080);
|
||||
player->particlePool1[arg1].green = random_int(0x0010U);
|
||||
} else if (player->particlePool1[arg2].timer > 0) {
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], x, y, z, (s8) surfaceType, (s8) var_t3);
|
||||
set_particle_position_and_rotation(player, &player->particlePool1[arg1], x, y, z, (s8) surfaceType,
|
||||
(s8) var_t3);
|
||||
init_particle_player(&player->particlePool1[arg1], 5, 0.46f);
|
||||
func_8005DAD8(&player->particlePool1[arg1], 0, 0, 0x0080);
|
||||
player->particlePool1[arg1].green = random_int(0x0010U);
|
||||
@@ -3897,9 +3927,9 @@ void func_80061EF4(Player* player, s16 arg1, s32 arg2, UNUSED s8 arg3, UNUSED s8
|
||||
y = player->pos[1];
|
||||
}
|
||||
if (var_t0 == 0) {
|
||||
if ((arg1 == 0) &&
|
||||
((player->particlePool3[arg2].timer > 0) || (player->particlePool3[arg2].isAlive == 0))) {
|
||||
set_particle_position_and_rotation(player, &player->particlePool3[arg1], 0.0f, y, 0.0f, (s8) var_t0, (s8) var_t1);
|
||||
if ((arg1 == 0) && ((player->particlePool3[arg2].timer > 0) || (player->particlePool3[arg2].isAlive == 0))) {
|
||||
set_particle_position_and_rotation(player, &player->particlePool3[arg1], 0.0f, y, 0.0f, (s8) var_t0,
|
||||
(s8) var_t1);
|
||||
init_particle_player(&player->particlePool3[arg1], 3, 0.5f);
|
||||
set_particle_colour(&player->particlePool3[arg1], RGB32(0xFF, 0xFF, 0xFF), 0x0060);
|
||||
player->particlePool3[arg1].rotation = 0;
|
||||
@@ -3915,7 +3945,8 @@ void func_80061EF4(Player* player, s16 arg1, s32 arg2, UNUSED s8 arg3, UNUSED s8
|
||||
player->pos[0] +
|
||||
(sins(player->particlePool3[arg1].rotation - player->rotation[1] - player->unk_0C0) * 5.0f);
|
||||
} else if (player->particlePool3[arg2].timer > 0) {
|
||||
set_particle_position_and_rotation(player, &player->particlePool3[arg1], 0.0f, y, 0.0f, (s8) var_t0, (s8) var_t1);
|
||||
set_particle_position_and_rotation(player, &player->particlePool3[arg1], 0.0f, y, 0.0f, (s8) var_t0,
|
||||
(s8) var_t1);
|
||||
init_particle_player(&player->particlePool3[arg1], 3, 0.5f);
|
||||
set_particle_colour(&player->particlePool3[arg1], RGB32(0xFF, 0xFF, 0xFF), 0x0060);
|
||||
player->particlePool3[arg1].rotation = 0;
|
||||
@@ -6378,7 +6409,7 @@ void func_8006CEC0(Player* arg0, s16 arg1, s8 playerId, s8 arg3) {
|
||||
if (--sp20 < 0) {
|
||||
sp20 = 9;
|
||||
}
|
||||
// Spawn particles when oob
|
||||
// Spawn particles when oob
|
||||
if (arg0->particlePool0[arg1].isAlive == 1) {
|
||||
switch (arg0->particlePool0[arg1].type) {
|
||||
case 1:
|
||||
@@ -6439,7 +6470,7 @@ void func_8006CEC0(Player* arg0, s16 arg1, s8 playerId, s8 arg3) {
|
||||
func_80060504(arg0, arg1, sp20, playerId, arg3);
|
||||
}
|
||||
}
|
||||
break;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -6524,9 +6555,11 @@ void func_8006D474(Player* player, s8 playerId, s8 screenId) {
|
||||
break;
|
||||
case 2:
|
||||
if (gActiveScreenMode == SCREEN_MODE_1P) {
|
||||
render_wall_bonk_star_particles(player, playerId, var_s2, screenId, player->particlePool3[var_s2].scale);
|
||||
render_wall_bonk_star_particles(player, playerId, var_s2, screenId,
|
||||
player->particlePool3[var_s2].scale);
|
||||
} else if (screenId == playerId) {
|
||||
render_wall_bonk_star_particles(player, playerId, var_s2, screenId, player->particlePool3[var_s2].scale);
|
||||
render_wall_bonk_star_particles(player, playerId, var_s2, screenId,
|
||||
player->particlePool3[var_s2].scale);
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
|
||||
+59
-59
@@ -420,7 +420,7 @@ void func_8006F8CC(void) {
|
||||
|
||||
void func_8006FA94(void) {
|
||||
s32 i;
|
||||
Player *player;
|
||||
Player* player;
|
||||
|
||||
func_8006F8CC();
|
||||
track_minimap_settings();
|
||||
@@ -440,69 +440,69 @@ void func_8006FA94(void) {
|
||||
D_801658BC = D_801658C6 = D_801658CE = D_801658DC = D_801658EC = D_801658F4 = D_801658E4 = D_801658D6 = 0;
|
||||
|
||||
switch (gPlayerCount) {
|
||||
case 1:
|
||||
if (gModeSelection == GRAND_PRIX) {
|
||||
D_8018D114 = 0;
|
||||
D_8018D178 = 150;
|
||||
D_8018D180 = 240;
|
||||
} else {
|
||||
D_8018D114 = 1;
|
||||
D_8018D178 = 10;
|
||||
D_8018D180 = 0;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (gScreenModeSelection == SCREEN_MODE_2P_SPLITSCREEN_HORIZONTAL) {
|
||||
case 1:
|
||||
if (gModeSelection == GRAND_PRIX) {
|
||||
D_8018D114 = 2;
|
||||
D_8018D114 = 0;
|
||||
D_8018D178 = 150;
|
||||
D_8018D180 = 240;
|
||||
D_8018D2AC = 60;
|
||||
} else if (gModeSelection == VERSUS) {
|
||||
D_8018D114 = 3;
|
||||
D_8018D178 = 30;
|
||||
D_8018D180 = 30;
|
||||
D_8018D2AC = 60;
|
||||
} else {
|
||||
D_8018D114 = 4;
|
||||
D_8018D178 = 40;
|
||||
D_8018D180 = 40;
|
||||
D_8018D2AC = 60;
|
||||
D_8018D114 = 1;
|
||||
D_8018D178 = 10;
|
||||
D_8018D180 = 0;
|
||||
}
|
||||
} else if (gModeSelection == GRAND_PRIX) {
|
||||
D_8018D114 = 5;
|
||||
} else if (gModeSelection == VERSUS) {
|
||||
D_8018D114 = 6;
|
||||
} else {
|
||||
D_8018D114 = 7;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (gModeSelection == VERSUS) {
|
||||
D_8018D114 = 8;
|
||||
D_8018D178 = 0x00000064;
|
||||
D_8018D180 = 0x00000096;
|
||||
D_8018D2AC = 0x0000003C;
|
||||
} else {
|
||||
D_8018D114 = 9;
|
||||
D_8018D178 = 0x00000064;
|
||||
D_8018D180 = 0x00000096;
|
||||
D_8018D2AC = 0x0000003C;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (gModeSelection == VERSUS) {
|
||||
D_8018D114 = 0x0000000A;
|
||||
D_8018D178 = 0x0000001E;
|
||||
D_8018D180 = 0x0000001E;
|
||||
D_8018D2AC = 0x0000000A;
|
||||
} else {
|
||||
D_8018D114 = 0x0000000B;
|
||||
D_8018D178 = 0x0000001E;
|
||||
D_8018D180 = 0x0000001E;
|
||||
D_8018D2AC = 0x0000000A;
|
||||
}
|
||||
break;
|
||||
break;
|
||||
case 2:
|
||||
if (gScreenModeSelection == SCREEN_MODE_2P_SPLITSCREEN_HORIZONTAL) {
|
||||
if (gModeSelection == GRAND_PRIX) {
|
||||
D_8018D114 = 2;
|
||||
D_8018D178 = 150;
|
||||
D_8018D180 = 240;
|
||||
D_8018D2AC = 60;
|
||||
} else if (gModeSelection == VERSUS) {
|
||||
D_8018D114 = 3;
|
||||
D_8018D178 = 30;
|
||||
D_8018D180 = 30;
|
||||
D_8018D2AC = 60;
|
||||
} else {
|
||||
D_8018D114 = 4;
|
||||
D_8018D178 = 40;
|
||||
D_8018D180 = 40;
|
||||
D_8018D2AC = 60;
|
||||
}
|
||||
} else if (gModeSelection == GRAND_PRIX) {
|
||||
D_8018D114 = 5;
|
||||
} else if (gModeSelection == VERSUS) {
|
||||
D_8018D114 = 6;
|
||||
} else {
|
||||
D_8018D114 = 7;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (gModeSelection == VERSUS) {
|
||||
D_8018D114 = 8;
|
||||
D_8018D178 = 0x00000064;
|
||||
D_8018D180 = 0x00000096;
|
||||
D_8018D2AC = 0x0000003C;
|
||||
} else {
|
||||
D_8018D114 = 9;
|
||||
D_8018D178 = 0x00000064;
|
||||
D_8018D180 = 0x00000096;
|
||||
D_8018D2AC = 0x0000003C;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (gModeSelection == VERSUS) {
|
||||
D_8018D114 = 0x0000000A;
|
||||
D_8018D178 = 0x0000001E;
|
||||
D_8018D180 = 0x0000001E;
|
||||
D_8018D2AC = 0x0000000A;
|
||||
} else {
|
||||
D_8018D114 = 0x0000000B;
|
||||
D_8018D178 = 0x0000001E;
|
||||
D_8018D180 = 0x0000001E;
|
||||
D_8018D2AC = 0x0000000A;
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (gEnableDebugMode == 0) {
|
||||
D_8016576A = 0;
|
||||
|
||||
+7
-6
@@ -111,7 +111,7 @@ void func_800AFC54(Vtx* vtx, s32 a, s32 b, s32 c, Vec3s out) {
|
||||
dx = ((varB2 - varA2) * (varC4 - varB4)) - ((varB4 - varA4) * (varC2 - varB2));
|
||||
dy = ((varB4 - varA4) * (varC0 - varB0)) - ((varB0 - varA0) * (varC4 - varB4));
|
||||
dz = ((varB0 - varA0) * (varC2 - varB2)) - ((varB2 - varA2) * (varC0 - varB0));
|
||||
|
||||
|
||||
length = sqrtf((dx * dx) + (dy * dy) + (dz * dz));
|
||||
|
||||
if (length < 0.001) {
|
||||
@@ -163,7 +163,7 @@ void func_800AFF58(Vtx* arg0) {
|
||||
}
|
||||
|
||||
void func_800B0004(void) {
|
||||
Vtx *vtxs;
|
||||
Vtx* vtxs;
|
||||
s32 res1;
|
||||
s32 res2;
|
||||
UNUSED u32 pad[0x4];
|
||||
@@ -176,16 +176,17 @@ void func_800B0004(void) {
|
||||
gSPLight(gDisplayListHead++, VIRTUAL_TO_PHYSICAL2(&D_800E8680), LIGHT_2);
|
||||
gSPNumLights(gDisplayListHead++, NUMLIGHTS_1);
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_SHADE | G_SHADING_SMOOTH);
|
||||
gDPSetCombineLERP(gDisplayListHead++, PRIMITIVE, 0, SHADE, 0, 0, 0, 0, SHADE, PRIMITIVE, 0, SHADE, 0, 0, 0, 0, SHADE);
|
||||
gDPSetCombineLERP(gDisplayListHead++, PRIMITIVE, 0, SHADE, 0, 0, 0, 0, SHADE, PRIMITIVE, 0, SHADE, 0, 0, 0, 0,
|
||||
SHADE);
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_LIGHTING);
|
||||
vtxs = (D_8018EDB4 % 2) ? (D_8018EDB8) : (D_8018EDBC);
|
||||
D_8018EDB2 = 0x9C0;
|
||||
for (i = 0; i < 10; i++) {
|
||||
for (k = 0, j = 0; j < 12; j++, k += 84) {
|
||||
res1 = ((sins(D_8018EDB0 - (j * D_8018EDB2)) * 84.0f) * j) * 0.18f;
|
||||
res2 = ((sins(D_8018EDB0 - ((j + 1) * D_8018EDB2)) * 84.0f) * (j + 1)) * 0.18f;
|
||||
func_800AF9E4(&(&vtxs[j * idx])[i * 48], j, i, 84, res1, res2, k, 84);
|
||||
res1 = ((sins(D_8018EDB0 - (j * D_8018EDB2)) * 84.0f) * j) * 0.18f;
|
||||
res2 = ((sins(D_8018EDB0 - ((j + 1) * D_8018EDB2)) * 84.0f) * (j + 1)) * 0.18f;
|
||||
func_800AF9E4(&(&vtxs[j * idx])[i * 48], j, i, 84, res1, res2, k, 84);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1406,7 +1406,6 @@ void update_player(s32 playerId) {
|
||||
s16 angle;
|
||||
s16 steeringSensitivity;
|
||||
|
||||
|
||||
s32 maxAngle;
|
||||
Player* player;
|
||||
UNUSED s32 pad3[10];
|
||||
@@ -1640,7 +1639,12 @@ void update_player(s32 playerId) {
|
||||
pathIndex %= gSelectedPathCount;
|
||||
set_track_offset_position(pathIndex, -0.7f, gPlayerPathIndex);
|
||||
}
|
||||
if (1) { } if (1) { } if (1) { } if (1) { } if (1) { } if (1) { }
|
||||
if (1) {}
|
||||
if (1) {}
|
||||
if (1) {}
|
||||
if (1) {}
|
||||
if (1) {}
|
||||
if (1) {}
|
||||
if (gPlayerPathIndex == 0) {
|
||||
func_8000B140(playerId);
|
||||
if (D_80162FF8[playerId] > 0) {
|
||||
@@ -1846,7 +1850,6 @@ void func_8000B140(s32 playerId) {
|
||||
sp74[j] = temp_f2 - temp_f0_2;
|
||||
j++;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1866,7 +1869,7 @@ void func_8000B140(s32 playerId) {
|
||||
temp_f2 = gTrackPositionFactor[sp9C[i]];
|
||||
if ((temp_f2 > (-1.0f)) && (temp_f2 < 1.0f)) {
|
||||
|
||||
temp_f12 = temp_ft2 = ((0.2f * (20.0f / (spB0[i] + 20.0f))) * ((sp74[i]) + 10.0f)) / 20.0f;
|
||||
temp_f12 = temp_ft2 = ((0.2f * (20.0f / (spB0[i] + 20.0f))) * ((sp74[i]) + 10.0f)) / 20.0f;
|
||||
|
||||
if ((var_f18 == 1.0f) && (var_f20 == (-1.0f))) {
|
||||
var_f18 = temp_f2 - temp_f12;
|
||||
@@ -2855,12 +2858,14 @@ void func_80017054(Camera* camera, UNUSED Player* player, UNUSED s32 index, s32
|
||||
sp58 = gPathCountByPathIndex[pathIndex];
|
||||
D_80163238 = playerId;
|
||||
sp56 = gNearestPathPointByCameraId[cameraId];
|
||||
gNearestPathPointByCameraId[cameraId] = func_8000D33C(camera->pos[0], camera->pos[1], camera->pos[2], gNearestPathPointByCameraId[cameraId], pathIndex);
|
||||
gNearestPathPointByCameraId[cameraId] =
|
||||
func_8000D33C(camera->pos[0], camera->pos[1], camera->pos[2], gNearestPathPointByCameraId[cameraId], pathIndex);
|
||||
if (gCurrentCourseId == 4) {
|
||||
if ((sp56 != gNearestPathPointByCameraId[cameraId]) && (gNearestPathPointByCameraId[cameraId] == 1)) {
|
||||
D_80163DD8[cameraId] = random_int(4);
|
||||
pathIndex = D_80163DD8[cameraId];
|
||||
gNearestPathPointByCameraId[cameraId] = func_8000D33C(camera->pos[0], camera->pos[1], camera->pos[2], gNearestPathPointByCameraId[cameraId], pathIndex);
|
||||
gNearestPathPointByCameraId[cameraId] = func_8000D33C(camera->pos[0], camera->pos[1], camera->pos[2],
|
||||
gNearestPathPointByCameraId[cameraId], pathIndex);
|
||||
}
|
||||
}
|
||||
sp6E = (gNearestPathPointByCameraId[cameraId] + 0xA) % sp58;
|
||||
@@ -3885,10 +3890,10 @@ void cpu_use_item_strategy(s32 playerId) {
|
||||
bool isValidBanana2;
|
||||
|
||||
// Only used in this function
|
||||
#define BANANA_ACTOR(actor) ((struct BananaActor*)(actor))
|
||||
#define SHELL_ACTOR(actor) ((struct ShellActor*)(actor))
|
||||
#define FAKE_ITEMBOX_ACTOR(actor) ((struct FakeItemBox*)(actor))
|
||||
#define BANANA_BUNCH_ACTOR(actor) ((struct BananaBunchParent*)(actor))
|
||||
#define BANANA_ACTOR(actor) ((struct BananaActor*) (actor))
|
||||
#define SHELL_ACTOR(actor) ((struct ShellActor*) (actor))
|
||||
#define FAKE_ITEMBOX_ACTOR(actor) ((struct FakeItemBox*) (actor))
|
||||
#define BANANA_BUNCH_ACTOR(actor) ((struct BananaBunchParent*) (actor))
|
||||
|
||||
if (gModeSelection == TIME_TRIALS) {
|
||||
return;
|
||||
@@ -3907,9 +3912,9 @@ void cpu_use_item_strategy(s32 playerId) {
|
||||
cpuStrategy->actorIndex = -1;
|
||||
if ((((playerId * 20) + 100) < gNumPathPointsTraversed[playerId]) && (cpuStrategy->timer >= 0x259) &&
|
||||
(cpuStrategy->numItemUse < 3) && (gLapCountByPlayerId[playerId] < 3)) {
|
||||
cpu_decisions_branch_item(playerId, &cpuStrategy->branch,
|
||||
cpu_gen_random_item((s16) gLapCountByPlayerId[playerId],
|
||||
gGPCurrentRaceRankByPlayerId[playerId]));
|
||||
cpu_decisions_branch_item(
|
||||
playerId, &cpuStrategy->branch,
|
||||
cpu_gen_random_item((s16) gLapCountByPlayerId[playerId], gGPCurrentRaceRankByPlayerId[playerId]));
|
||||
} else {
|
||||
func_8001ABE0(playerId, cpuStrategy);
|
||||
}
|
||||
@@ -3917,28 +3922,30 @@ void cpu_use_item_strategy(s32 playerId) {
|
||||
|
||||
case CPU_STRATEGY_ITEM_BANANA:
|
||||
// never true
|
||||
if ((gLapCountByPlayerId[playerId] > 0) && (gGPCurrentRaceRankByPlayerId[playerId] > gGPCurrentRaceRankByPlayerId[gBestRankedHumanPlayer]) && (gGPCurrentRaceRankByPlayerId[gBestRankedHumanPlayer] == FIRST_PLACE)) {
|
||||
if ((gLapCountByPlayerId[playerId] > 0) &&
|
||||
(gGPCurrentRaceRankByPlayerId[playerId] > gGPCurrentRaceRankByPlayerId[gBestRankedHumanPlayer]) &&
|
||||
(gGPCurrentRaceRankByPlayerId[gBestRankedHumanPlayer] == FIRST_PLACE)) {
|
||||
switch (player->characterId) {
|
||||
case DK:
|
||||
if (is_path_point_in_range(gNearestPathPointByPlayerId[playerId],
|
||||
gNearestPathPointByPlayerId[gBestRankedHumanPlayer], 40, 2,
|
||||
gSelectedPathCount) > 0) {
|
||||
gNearestPathPointByPlayerId[gBestRankedHumanPlayer], 40, 2,
|
||||
gSelectedPathCount) > 0) {
|
||||
cpuStrategy->branch = CPU_STRATEGY_THROW_BANANA;
|
||||
}
|
||||
break;
|
||||
|
||||
case PEACH:
|
||||
if (is_path_point_in_range(gNearestPathPointByPlayerId[playerId],
|
||||
gNearestPathPointByPlayerId[gBestRankedHumanPlayer], 4, 2,
|
||||
gSelectedPathCount) > 0) {
|
||||
gNearestPathPointByPlayerId[gBestRankedHumanPlayer], 4, 2,
|
||||
gSelectedPathCount) > 0) {
|
||||
cpuStrategy->branch = CPU_STRATEGY_THROW_BANANA;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
if (is_path_point_in_range(gNearestPathPointByPlayerId[playerId],
|
||||
gNearestPathPointByPlayerId[gBestRankedHumanPlayer], 10, 2,
|
||||
gSelectedPathCount) > 0) {
|
||||
gNearestPathPointByPlayerId[gBestRankedHumanPlayer], 10, 2,
|
||||
gSelectedPathCount) > 0) {
|
||||
cpuStrategy->branch = CPU_STRATEGY_THROW_BANANA;
|
||||
}
|
||||
break;
|
||||
@@ -3960,8 +3967,8 @@ void cpu_use_item_strategy(s32 playerId) {
|
||||
|
||||
case CPU_STRATEGY_HOLD_BANANA:
|
||||
actor = &gActorList[cpuStrategy->actorIndex];
|
||||
if ((!(BANANA_ACTOR(actor)->flags & 0x8000)) || (BANANA_ACTOR(actor)->type != ACTOR_BANANA) || (BANANA_ACTOR(actor)->state != HELD_BANANA) ||
|
||||
(playerId != BANANA_ACTOR(actor)->playerId)) {
|
||||
if ((!(BANANA_ACTOR(actor)->flags & 0x8000)) || (BANANA_ACTOR(actor)->type != ACTOR_BANANA) ||
|
||||
(BANANA_ACTOR(actor)->state != HELD_BANANA) || (playerId != BANANA_ACTOR(actor)->playerId)) {
|
||||
|
||||
// FAKE
|
||||
if (!(BANANA_ACTOR(actor)->flags & 0x8000)) {}
|
||||
@@ -3980,7 +3987,7 @@ void cpu_use_item_strategy(s32 playerId) {
|
||||
case CPU_STRATEGY_DROP_BANANA:
|
||||
actor = &gActorList[cpuStrategy->actorIndex];
|
||||
if ((((!(BANANA_ACTOR(actor)->flags & 0x8000)) || (BANANA_ACTOR(actor)->type != ACTOR_BANANA)) ||
|
||||
(BANANA_ACTOR(actor)->state != HELD_BANANA)) ||
|
||||
(BANANA_ACTOR(actor)->state != HELD_BANANA)) ||
|
||||
(playerId != BANANA_ACTOR(actor)->playerId)) {
|
||||
|
||||
// FAKE
|
||||
@@ -4016,7 +4023,7 @@ void cpu_use_item_strategy(s32 playerId) {
|
||||
cpuStrategy->numItemUse += 1;
|
||||
pathPoint = &gTrackPaths[gPathIndexByPlayerId[0]]
|
||||
[(gNearestPathPointByPlayerId[gBestRankedHumanPlayer] + 30) %
|
||||
gPathCountByPathIndex[gPathIndexByPlayerId[gBestRankedHumanPlayer]]];
|
||||
gPathCountByPathIndex[gPathIndexByPlayerId[gBestRankedHumanPlayer]]];
|
||||
BANANA_ACTOR(actor)->velocity[0] = (pathPoint->posX - player->pos[0]) / 20.0;
|
||||
BANANA_ACTOR(actor)->velocity[1] = ((pathPoint->posY - player->pos[1]) / 20.0) + 4.0;
|
||||
BANANA_ACTOR(actor)->velocity[2] = (pathPoint->posZ - player->pos[2]) / 20.0;
|
||||
@@ -4032,7 +4039,7 @@ void cpu_use_item_strategy(s32 playerId) {
|
||||
case CPU_STRATEGY_HOLD_THROW_BANANA:
|
||||
actor = &gActorList[cpuStrategy->actorIndex];
|
||||
if ((((!(BANANA_ACTOR(actor)->flags & 0x8000)) || (BANANA_ACTOR(actor)->type != ACTOR_BANANA)) ||
|
||||
(BANANA_ACTOR(actor)->state != BANANA_ON_GROUND)) ||
|
||||
(BANANA_ACTOR(actor)->state != BANANA_ON_GROUND)) ||
|
||||
(playerId != BANANA_ACTOR(actor)->playerId)) {
|
||||
|
||||
// FAKE
|
||||
@@ -4058,7 +4065,7 @@ void cpu_use_item_strategy(s32 playerId) {
|
||||
case CPU_STRATEGY_END_THROW_BANANA:
|
||||
actor = &gActorList[cpuStrategy->actorIndex];
|
||||
if ((((!(BANANA_ACTOR(actor)->flags & 0x8000)) || (BANANA_ACTOR(actor)->type != ACTOR_BANANA)) ||
|
||||
(BANANA_ACTOR(actor)->state != BANANA_ON_GROUND)) ||
|
||||
(BANANA_ACTOR(actor)->state != BANANA_ON_GROUND)) ||
|
||||
(playerId != BANANA_ACTOR(actor)->playerId)) {
|
||||
|
||||
// FAKE
|
||||
@@ -4073,7 +4080,8 @@ void cpu_use_item_strategy(s32 playerId) {
|
||||
BANANA_ACTOR(actor)->velocity[1] = 0.0f;
|
||||
BANANA_ACTOR(actor)->velocity[2] = 0.0f;
|
||||
BANANA_ACTOR(actor)->pos[1] =
|
||||
get_surface_height(BANANA_ACTOR(actor)->pos[0], BANANA_ACTOR(actor)->pos[1] + 30.0, BANANA_ACTOR(actor)->pos[2]) +
|
||||
get_surface_height(BANANA_ACTOR(actor)->pos[0], BANANA_ACTOR(actor)->pos[1] + 30.0,
|
||||
BANANA_ACTOR(actor)->pos[2]) +
|
||||
(BANANA_ACTOR(actor)->boundingBoxSize + 1.0f);
|
||||
}
|
||||
player->triggers &= ~DRAG_ITEM_EFFECT;
|
||||
@@ -4099,8 +4107,7 @@ void cpu_use_item_strategy(s32 playerId) {
|
||||
|
||||
case CPU_STRATEGY_HOLD_GREEN_SHELL:
|
||||
actor = &gActorList[cpuStrategy->actorIndex];
|
||||
if ((((!(actor->flags & 0x8000)) || (actor->type != ACTOR_GREEN_SHELL)) ||
|
||||
(actor->state != HELD_SHELL)) ||
|
||||
if ((((!(actor->flags & 0x8000)) || (actor->type != ACTOR_GREEN_SHELL)) || (actor->state != HELD_SHELL)) ||
|
||||
(playerId != actor->rot[2])) {
|
||||
|
||||
// FAKE
|
||||
@@ -4119,8 +4126,7 @@ void cpu_use_item_strategy(s32 playerId) {
|
||||
|
||||
case CPU_STRATEGY_THROW_GREEN_SHELL:
|
||||
actor = &gActorList[cpuStrategy->actorIndex];
|
||||
if ((((!(actor->flags & 0x8000)) || (actor->type != ACTOR_GREEN_SHELL)) ||
|
||||
(actor->state != HELD_SHELL)) ||
|
||||
if ((((!(actor->flags & 0x8000)) || (actor->type != ACTOR_GREEN_SHELL)) || (actor->state != HELD_SHELL)) ||
|
||||
(playerId != actor->rot[2])) {
|
||||
|
||||
// FAKE
|
||||
@@ -4157,7 +4163,7 @@ void cpu_use_item_strategy(s32 playerId) {
|
||||
case CPU_STRATEGY_HOLD_RED_SHELL:
|
||||
actor = &gActorList[cpuStrategy->actorIndex];
|
||||
if ((((!(SHELL_ACTOR(actor)->flags & 0x8000)) || (SHELL_ACTOR(actor)->type != ACTOR_RED_SHELL)) ||
|
||||
(SHELL_ACTOR(actor)->state != HELD_SHELL)) ||
|
||||
(SHELL_ACTOR(actor)->state != HELD_SHELL)) ||
|
||||
(playerId != SHELL_ACTOR(actor)->playerId)) {
|
||||
|
||||
// FAKE
|
||||
@@ -4177,7 +4183,7 @@ void cpu_use_item_strategy(s32 playerId) {
|
||||
clear_expired_strategies(cpuStrategy);
|
||||
actor = &gActorList[cpuStrategy->actorIndex];
|
||||
if ((((!(SHELL_ACTOR(actor)->flags & 0x8000)) || (SHELL_ACTOR(actor)->type != ACTOR_RED_SHELL)) ||
|
||||
(SHELL_ACTOR(actor)->state != HELD_SHELL)) ||
|
||||
(SHELL_ACTOR(actor)->state != HELD_SHELL)) ||
|
||||
(playerId != SHELL_ACTOR(actor)->playerId)) {
|
||||
|
||||
// FAKE
|
||||
@@ -4285,9 +4291,10 @@ void cpu_use_item_strategy(s32 playerId) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (((BANANA_BUNCH_ACTOR(actor)->type == ACTOR_BANANA_BUNCH) && (BANANA_BUNCH_ACTOR(actor)->state == 6)) &&
|
||||
if (((BANANA_BUNCH_ACTOR(actor)->type == ACTOR_BANANA_BUNCH) &&
|
||||
(BANANA_BUNCH_ACTOR(actor)->state == 6)) &&
|
||||
(isValidBanana1 == true)) {
|
||||
drop_banana_in_banana_bunch((struct BananaBunchParent*)actor);
|
||||
drop_banana_in_banana_bunch((struct BananaBunchParent*) actor);
|
||||
}
|
||||
cpuStrategy->numDroppedBananaBunch += 1;
|
||||
} else {
|
||||
@@ -4311,8 +4318,9 @@ void cpu_use_item_strategy(s32 playerId) {
|
||||
|
||||
case CPU_STRATEGY_HOLD_FAKE_ITEM_BOX:
|
||||
actor = &gActorList[cpuStrategy->actorIndex];
|
||||
if ((((!(FAKE_ITEMBOX_ACTOR(actor)->flags & 0x8000)) || (FAKE_ITEMBOX_ACTOR(actor)->type != ACTOR_FAKE_ITEM_BOX)) ||
|
||||
(FAKE_ITEMBOX_ACTOR(actor)->state != 0)) ||
|
||||
if ((((!(FAKE_ITEMBOX_ACTOR(actor)->flags & 0x8000)) ||
|
||||
(FAKE_ITEMBOX_ACTOR(actor)->type != ACTOR_FAKE_ITEM_BOX)) ||
|
||||
(FAKE_ITEMBOX_ACTOR(actor)->state != 0)) ||
|
||||
(playerId != ((s32) FAKE_ITEMBOX_ACTOR(actor)->playerId))) {
|
||||
|
||||
// FAKE
|
||||
@@ -4330,8 +4338,9 @@ void cpu_use_item_strategy(s32 playerId) {
|
||||
|
||||
case CPU_STRATEGY_THROW_FAKE_ITEM_BOX:
|
||||
actor = &gActorList[cpuStrategy->actorIndex];
|
||||
if ((((!(FAKE_ITEMBOX_ACTOR(actor)->flags & 0x8000)) || (FAKE_ITEMBOX_ACTOR(actor)->type != ACTOR_FAKE_ITEM_BOX)) ||
|
||||
(FAKE_ITEMBOX_ACTOR(actor)->state != 0)) ||
|
||||
if ((((!(FAKE_ITEMBOX_ACTOR(actor)->flags & 0x8000)) ||
|
||||
(FAKE_ITEMBOX_ACTOR(actor)->type != ACTOR_FAKE_ITEM_BOX)) ||
|
||||
(FAKE_ITEMBOX_ACTOR(actor)->state != 0)) ||
|
||||
(playerId != ((s32) FAKE_ITEMBOX_ACTOR(actor)->playerId))) {
|
||||
|
||||
// FAKE
|
||||
@@ -4341,10 +4350,11 @@ void cpu_use_item_strategy(s32 playerId) {
|
||||
if (FAKE_ITEMBOX_ACTOR(actor)->rot[0] != playerId) {}
|
||||
|
||||
} else {
|
||||
func_802A1064((struct FakeItemBox*)actor);
|
||||
func_802A1064((struct FakeItemBox*) actor);
|
||||
if (D_801631E0[playerId] == true) {
|
||||
FAKE_ITEMBOX_ACTOR(actor)->pos[1] =
|
||||
get_surface_height(FAKE_ITEMBOX_ACTOR(actor)->pos[0], FAKE_ITEMBOX_ACTOR(actor)->pos[1] + 30.0, FAKE_ITEMBOX_ACTOR(actor)->pos[2]) +
|
||||
get_surface_height(FAKE_ITEMBOX_ACTOR(actor)->pos[0], FAKE_ITEMBOX_ACTOR(actor)->pos[1] + 30.0,
|
||||
FAKE_ITEMBOX_ACTOR(actor)->pos[2]) +
|
||||
FAKE_ITEMBOX_ACTOR(actor)->boundingBoxSize;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -119,7 +119,8 @@ void func_80007FA4(s32 playerId, Player* player, f32 arg2) {
|
||||
(arg2 < ((test * 18.0) / 216.0)) ? func_80038BE4(player, 6) : player_decelerate_alternative(player, 1.0f);
|
||||
} else if (D_80163410[playerId] == 0) {
|
||||
test = 35;
|
||||
(arg2 < (((test ^ 0) * 18.0) / 216.0)) ? func_80038BE4(player, 2) : player_decelerate_alternative(player, 1.0f);
|
||||
(arg2 < (((test ^ 0) * 18.0) / 216.0)) ? func_80038BE4(player, 2)
|
||||
: player_decelerate_alternative(player, 1.0f);
|
||||
} else {
|
||||
player_decelerate_alternative(player, 1.0f);
|
||||
}
|
||||
|
||||
+16
-17
@@ -300,13 +300,19 @@ ThwompSpawn gThomwpSpawns150CC[] = {
|
||||
};
|
||||
|
||||
f32 D_800E594C[] = {
|
||||
-8.0, 8.0,
|
||||
8.0, 8.0,
|
||||
0.0, 0.0,
|
||||
8.0, -8.0,
|
||||
-8.0, -8.0,
|
||||
-8.0,
|
||||
8.0,
|
||||
8.0,
|
||||
8.0,
|
||||
0.0,
|
||||
0.0,
|
||||
8.0,
|
||||
-8.0,
|
||||
-8.0,
|
||||
-8.0,
|
||||
// This feels super fake, but it matches
|
||||
-0.0, 0.0,
|
||||
-0.0,
|
||||
0.0,
|
||||
};
|
||||
|
||||
s16 D_800E597C[] = { 0x0000, 0x0000, 0x4000, 0x8000, 0x8000, 0xc000 };
|
||||
@@ -444,10 +450,8 @@ s8 D_800E5DB4[] = {
|
||||
};
|
||||
|
||||
s16 D_800E5DF4[] = {
|
||||
0xfc7a, 0x0046, 0xfa82, 0x3800,
|
||||
0xfc4c, 0x0046, 0xfa03, 0x3800,
|
||||
0xf786, 0x0000, 0x02d3, 0x0400,
|
||||
0xf76f, 0x0000, 0x02f9, 0x0400,
|
||||
0xfc7a, 0x0046, 0xfa82, 0x3800, 0xfc4c, 0x0046, 0xfa03, 0x3800,
|
||||
0xf786, 0x0000, 0x02d3, 0x0400, 0xf76f, 0x0000, 0x02f9, 0x0400,
|
||||
};
|
||||
|
||||
HegdehogSpawn gHedgehogSpawns[] = {
|
||||
@@ -665,13 +669,8 @@ SplineData* D_800E672C[] = { &D_800E659C, &D_800E6668 };
|
||||
|
||||
// Positions of the neon signs in rainbow road
|
||||
float D_800E6734[] = {
|
||||
1443.0, 1044.0, -5478.0,
|
||||
1678.0, 1012.0, -4840.0,
|
||||
-3924.0, 921.0, 2566.0,
|
||||
-3311.0, 790.0, 3524.0,
|
||||
-1284.0, 1341.0, 4527.0,
|
||||
2268.0, 1041.0, 4456.0,
|
||||
2820.0, 1109.0, 1985.0,
|
||||
1443.0, 1044.0, -5478.0, 1678.0, 1012.0, -4840.0, -3924.0, 921.0, 2566.0, -3311.0, 790.0,
|
||||
3524.0, -1284.0, 1341.0, 4527.0, 2268.0, 1041.0, 4456.0, 2820.0, 1109.0, 1985.0,
|
||||
};
|
||||
|
||||
// This should really be `extern Vec3s gTorchSpawns[];`
|
||||
|
||||
+2
-2
@@ -470,7 +470,7 @@ void apply_driving_near_spinout_effect(Player* player, s8 playerIndex) {
|
||||
swerve_timer++;
|
||||
|
||||
// Standard physics formula: Velo_current = velo_init + (accel_init * time) + (accel_jerk * time**2) / 2
|
||||
swerve_velo_current = (swerve_accel_init * swerve_timer) - (0.1 * (swerve_timer * swerve_timer));
|
||||
swerve_velo_current = (swerve_accel_init * swerve_timer) - (0.1 * (swerve_timer * swerve_timer));
|
||||
|
||||
// Once one swerve finishes, setup to start a smaller one in the opposite direction
|
||||
if ((swerve_timer != 0) && (swerve_velo_current < 0)) { // (10 * swerve_accel_init < swerve_timer))
|
||||
@@ -2029,7 +2029,7 @@ bool prevent_item_use(Player* player) {
|
||||
}
|
||||
}
|
||||
|
||||
//UNUSED
|
||||
// UNUSED
|
||||
void func_800911B4(Player* player, s8 arg1) {
|
||||
s32 temp_v0;
|
||||
|
||||
|
||||
+101
-122
@@ -12,136 +12,115 @@ u16 D_800DDEB0[] = {
|
||||
0x06c0, 0x06e0, 0x06e0, 0x0680, 0x07c0, 0x0700, 0x0680, 0x0910,
|
||||
};
|
||||
|
||||
#define DECLARE_KART_GROUP(var) \
|
||||
u8* var##Group0[] = { \
|
||||
var##000, var##001, var##002, var##003, var##004, var##005, var##006, \
|
||||
var##007, var##008, var##009, var##010, var##011, var##012, var##013, \
|
||||
var##014, var##015, var##016, var##017, var##018, var##019, var##020, \
|
||||
var##195, var##196, var##197, var##198, var##199, var##200, var##201, \
|
||||
var##202, var##203, var##204, var##205, var##206, var##207, var##208, \
|
||||
}; \
|
||||
u8* var##Group1[] = { \
|
||||
var##021, var##022, var##023, var##024, var##025, var##026, var##027, \
|
||||
var##028, var##029, var##030, var##031, var##032, var##033, var##034, \
|
||||
var##035, var##036, var##037, var##038, var##039, var##040, var##041, \
|
||||
var##195, var##196, var##197, var##198, var##199, var##200, var##201, \
|
||||
var##202, var##203, var##204, var##205, var##206, var##207, var##208, \
|
||||
}; \
|
||||
u8* var##Group2[] = { \
|
||||
var##042, var##043, var##044, var##045, var##046, var##047, var##048, \
|
||||
var##049, var##050, var##051, var##052, var##053, var##054, var##055, \
|
||||
var##056, var##057, var##058, var##059, var##060, var##061, var##062, \
|
||||
var##215, var##216, var##217, var##218, var##219, var##220, var##221, \
|
||||
var##222, var##223, var##224, var##225, var##226, var##227, var##228, \
|
||||
}; \
|
||||
u8* var##Group3[] = { \
|
||||
var##063, var##064, var##065, var##066, var##067, var##068, var##069, \
|
||||
var##070, var##071, var##072, var##073, var##074, var##075, var##076, \
|
||||
var##077, var##078, var##079, var##080, var##081, var##082, var##083, \
|
||||
var##235, var##236, var##237, var##238, var##239, var##240, var##241, \
|
||||
var##242, var##243, var##244, var##245, var##246, var##247, var##248, \
|
||||
}; \
|
||||
u8* var##Group4[] = { \
|
||||
var##084, var##085, var##086, var##087, var##088, var##089, var##090, \
|
||||
var##091, var##092, var##093, var##094, var##095, var##096, var##097, \
|
||||
var##098, var##099, var##100, var##101, var##102, var##103, var##104, \
|
||||
var##235, var##236, var##237, var##238, var##239, var##240, var##241, \
|
||||
var##242, var##243, var##244, var##245, var##246, var##247, var##248, \
|
||||
}; \
|
||||
u8* var##Group5[] = { \
|
||||
var##105, var##106, var##107, var##108, var##109, var##110, var##111, \
|
||||
var##112, var##113, var##114, var##115, var##116, var##117, var##118, \
|
||||
var##119, var##120, var##121, var##122, var##123, var##124, var##125, \
|
||||
var##235, var##236, var##237, var##238, var##239, var##240, var##241, \
|
||||
var##242, var##243, var##244, var##245, var##246, var##247, var##248, \
|
||||
}; \
|
||||
u8* var##Group6[] = { \
|
||||
var##126, var##127, var##128, var##129, var##130, var##131, var##132, \
|
||||
var##133, var##134, var##135, var##136, var##137, var##138, var##139, \
|
||||
var##140, var##141, var##142, var##143, var##144, var##145, var##146, \
|
||||
var##255, var##256, var##257, var##258, var##259, var##260, var##261, \
|
||||
var##262, var##263, var##264, var##265, var##266, var##267, var##268, \
|
||||
}; \
|
||||
u8* var##Group7[] = { \
|
||||
var##147, var##148, var##149, var##150, var##151, var##152, var##153, \
|
||||
var##154, var##155, var##156, var##157, var##158, var##159, var##160, \
|
||||
var##161, var##162, var##163, var##164, var##165, var##166, var##167, \
|
||||
var##275, var##276, var##277, var##278, var##279, var##280, var##281, \
|
||||
var##282, var##283, var##284, var##285, var##286, var##287, var##288, \
|
||||
}; \
|
||||
u8* var##Group8[] = { \
|
||||
var##168, var##169, var##170, var##171, var##172, var##173, var##174, \
|
||||
var##175, var##176, var##177, var##178, var##179, var##180, var##181, \
|
||||
var##182, var##183, var##184, var##185, var##186, var##187, var##188, \
|
||||
var##275, var##276, var##277, var##278, var##279, var##280, var##281, \
|
||||
var##282, var##283, var##284, var##285, var##286, var##287, var##288, \
|
||||
}; \
|
||||
u8* var##Group9[] = { \
|
||||
var##189, var##190, var##191, var##192, var##193, var##194, var##195, \
|
||||
var##196, var##197, var##198, var##199, var##200, var##201, var##202, \
|
||||
var##203, var##204, var##205, var##206, var##207, var##208, \
|
||||
}; \
|
||||
u8* var##Group10[] = { \
|
||||
var##189, var##190, var##191, var##192, var##193, var##194, var##195, \
|
||||
var##196, var##197, var##198, var##199, var##200, var##201, var##202, \
|
||||
var##203, var##204, var##205, var##206, var##207, var##208, \
|
||||
}; \
|
||||
u8* var##Group11[] = { \
|
||||
var##209, var##210, var##211, var##212, var##213, var##214, var##215, \
|
||||
var##216, var##217, var##218, var##219, var##220, var##221, var##222, \
|
||||
var##223, var##224, var##225, var##226, var##227, var##228, \
|
||||
}; \
|
||||
u8* var##Group12[] = { \
|
||||
var##229, var##230, var##231, var##232, var##233, var##234, var##235, \
|
||||
var##236, var##237, var##238, var##239, var##240, var##241, var##242, \
|
||||
var##243, var##244, var##245, var##246, var##247, var##248, \
|
||||
}; \
|
||||
u8* var##Group13[] = { \
|
||||
var##229, var##230, var##231, var##232, var##233, var##234, var##235, \
|
||||
var##236, var##237, var##238, var##239, var##240, var##241, var##242, \
|
||||
var##243, var##244, var##245, var##246, var##247, var##248, \
|
||||
}; \
|
||||
u8* var##Group14[] = { \
|
||||
var##229, var##230, var##231, var##232, var##233, var##234, var##235, \
|
||||
var##236, var##237, var##238, var##239, var##240, var##241, var##242, \
|
||||
var##243, var##244, var##245, var##246, var##247, var##248, \
|
||||
}; \
|
||||
u8* var##Group15[] = { \
|
||||
var##249, var##250, var##251, var##252, var##253, var##254, var##255, \
|
||||
var##256, var##257, var##258, var##259, var##260, var##261, var##262, \
|
||||
var##263, var##264, var##265, var##266, var##267, var##268, \
|
||||
}; \
|
||||
u8* var##Group16[] = { \
|
||||
var##269, var##270, var##271, var##272, var##273, var##274, var##275, \
|
||||
var##276, var##277, var##278, var##279, var##280, var##281, var##282, \
|
||||
var##283, var##284, var##285, var##286, var##287, var##288, \
|
||||
}; \
|
||||
u8* var##Group17[] = { \
|
||||
var##269, var##270, var##271, var##272, var##273, var##274, var##275, \
|
||||
var##276, var##277, var##278, var##279, var##280, var##281, var##282, \
|
||||
var##283, var##284, var##285, var##286, var##287, var##288, \
|
||||
#define DECLARE_KART_GROUP(var) \
|
||||
u8* var##Group0[] = { \
|
||||
var##000, var##001, var##002, var##003, var##004, var##005, var##006, var##007, var##008, \
|
||||
var##009, var##010, var##011, var##012, var##013, var##014, var##015, var##016, var##017, \
|
||||
var##018, var##019, var##020, var##195, var##196, var##197, var##198, var##199, var##200, \
|
||||
var##201, var##202, var##203, var##204, var##205, var##206, var##207, var##208, \
|
||||
}; \
|
||||
u8* var##Group1[] = { \
|
||||
var##021, var##022, var##023, var##024, var##025, var##026, var##027, var##028, var##029, \
|
||||
var##030, var##031, var##032, var##033, var##034, var##035, var##036, var##037, var##038, \
|
||||
var##039, var##040, var##041, var##195, var##196, var##197, var##198, var##199, var##200, \
|
||||
var##201, var##202, var##203, var##204, var##205, var##206, var##207, var##208, \
|
||||
}; \
|
||||
u8* var##Group2[] = { \
|
||||
var##042, var##043, var##044, var##045, var##046, var##047, var##048, var##049, var##050, \
|
||||
var##051, var##052, var##053, var##054, var##055, var##056, var##057, var##058, var##059, \
|
||||
var##060, var##061, var##062, var##215, var##216, var##217, var##218, var##219, var##220, \
|
||||
var##221, var##222, var##223, var##224, var##225, var##226, var##227, var##228, \
|
||||
}; \
|
||||
u8* var##Group3[] = { \
|
||||
var##063, var##064, var##065, var##066, var##067, var##068, var##069, var##070, var##071, \
|
||||
var##072, var##073, var##074, var##075, var##076, var##077, var##078, var##079, var##080, \
|
||||
var##081, var##082, var##083, var##235, var##236, var##237, var##238, var##239, var##240, \
|
||||
var##241, var##242, var##243, var##244, var##245, var##246, var##247, var##248, \
|
||||
}; \
|
||||
u8* var##Group4[] = { \
|
||||
var##084, var##085, var##086, var##087, var##088, var##089, var##090, var##091, var##092, \
|
||||
var##093, var##094, var##095, var##096, var##097, var##098, var##099, var##100, var##101, \
|
||||
var##102, var##103, var##104, var##235, var##236, var##237, var##238, var##239, var##240, \
|
||||
var##241, var##242, var##243, var##244, var##245, var##246, var##247, var##248, \
|
||||
}; \
|
||||
u8* var##Group5[] = { \
|
||||
var##105, var##106, var##107, var##108, var##109, var##110, var##111, var##112, var##113, \
|
||||
var##114, var##115, var##116, var##117, var##118, var##119, var##120, var##121, var##122, \
|
||||
var##123, var##124, var##125, var##235, var##236, var##237, var##238, var##239, var##240, \
|
||||
var##241, var##242, var##243, var##244, var##245, var##246, var##247, var##248, \
|
||||
}; \
|
||||
u8* var##Group6[] = { \
|
||||
var##126, var##127, var##128, var##129, var##130, var##131, var##132, var##133, var##134, \
|
||||
var##135, var##136, var##137, var##138, var##139, var##140, var##141, var##142, var##143, \
|
||||
var##144, var##145, var##146, var##255, var##256, var##257, var##258, var##259, var##260, \
|
||||
var##261, var##262, var##263, var##264, var##265, var##266, var##267, var##268, \
|
||||
}; \
|
||||
u8* var##Group7[] = { \
|
||||
var##147, var##148, var##149, var##150, var##151, var##152, var##153, var##154, var##155, \
|
||||
var##156, var##157, var##158, var##159, var##160, var##161, var##162, var##163, var##164, \
|
||||
var##165, var##166, var##167, var##275, var##276, var##277, var##278, var##279, var##280, \
|
||||
var##281, var##282, var##283, var##284, var##285, var##286, var##287, var##288, \
|
||||
}; \
|
||||
u8* var##Group8[] = { \
|
||||
var##168, var##169, var##170, var##171, var##172, var##173, var##174, var##175, var##176, \
|
||||
var##177, var##178, var##179, var##180, var##181, var##182, var##183, var##184, var##185, \
|
||||
var##186, var##187, var##188, var##275, var##276, var##277, var##278, var##279, var##280, \
|
||||
var##281, var##282, var##283, var##284, var##285, var##286, var##287, var##288, \
|
||||
}; \
|
||||
u8* var##Group9[] = { \
|
||||
var##189, var##190, var##191, var##192, var##193, var##194, var##195, var##196, var##197, var##198, \
|
||||
var##199, var##200, var##201, var##202, var##203, var##204, var##205, var##206, var##207, var##208, \
|
||||
}; \
|
||||
u8* var##Group10[] = { \
|
||||
var##189, var##190, var##191, var##192, var##193, var##194, var##195, var##196, var##197, var##198, \
|
||||
var##199, var##200, var##201, var##202, var##203, var##204, var##205, var##206, var##207, var##208, \
|
||||
}; \
|
||||
u8* var##Group11[] = { \
|
||||
var##209, var##210, var##211, var##212, var##213, var##214, var##215, var##216, var##217, var##218, \
|
||||
var##219, var##220, var##221, var##222, var##223, var##224, var##225, var##226, var##227, var##228, \
|
||||
}; \
|
||||
u8* var##Group12[] = { \
|
||||
var##229, var##230, var##231, var##232, var##233, var##234, var##235, var##236, var##237, var##238, \
|
||||
var##239, var##240, var##241, var##242, var##243, var##244, var##245, var##246, var##247, var##248, \
|
||||
}; \
|
||||
u8* var##Group13[] = { \
|
||||
var##229, var##230, var##231, var##232, var##233, var##234, var##235, var##236, var##237, var##238, \
|
||||
var##239, var##240, var##241, var##242, var##243, var##244, var##245, var##246, var##247, var##248, \
|
||||
}; \
|
||||
u8* var##Group14[] = { \
|
||||
var##229, var##230, var##231, var##232, var##233, var##234, var##235, var##236, var##237, var##238, \
|
||||
var##239, var##240, var##241, var##242, var##243, var##244, var##245, var##246, var##247, var##248, \
|
||||
}; \
|
||||
u8* var##Group15[] = { \
|
||||
var##249, var##250, var##251, var##252, var##253, var##254, var##255, var##256, var##257, var##258, \
|
||||
var##259, var##260, var##261, var##262, var##263, var##264, var##265, var##266, var##267, var##268, \
|
||||
}; \
|
||||
u8* var##Group16[] = { \
|
||||
var##269, var##270, var##271, var##272, var##273, var##274, var##275, var##276, var##277, var##278, \
|
||||
var##279, var##280, var##281, var##282, var##283, var##284, var##285, var##286, var##287, var##288, \
|
||||
}; \
|
||||
u8* var##Group17[] = { \
|
||||
var##269, var##270, var##271, var##272, var##273, var##274, var##275, var##276, var##277, var##278, \
|
||||
var##279, var##280, var##281, var##282, var##283, var##284, var##285, var##286, var##287, var##288, \
|
||||
};
|
||||
|
||||
#define DECLARE_KART_TABLE0(var) \
|
||||
u8** var##Table0[] = { \
|
||||
#define DECLARE_KART_TABLE0(var) \
|
||||
u8** var##Table0[] = { \
|
||||
var##Group8, var##Group7, var##Group6, var##Group5, var##Group4, \
|
||||
var##Group3, var##Group2, var##Group1, var##Group0, \
|
||||
var##Group3, var##Group2, var##Group1, var##Group0, \
|
||||
};
|
||||
|
||||
#define DECLARE_KART_TABLE1(var) \
|
||||
u8** var##Table1[] = { \
|
||||
#define DECLARE_KART_TABLE1(var) \
|
||||
u8** var##Table1[] = { \
|
||||
var##Group17, var##Group16, var##Group15, var##Group14, var##Group13, \
|
||||
var##Group12, var##Group11, var##Group10, var##Group9, \
|
||||
var##Group12, var##Group11, var##Group10, var##Group9, \
|
||||
};
|
||||
|
||||
#define DECLARE_KART_TUMBLE_TABLE(var) \
|
||||
u8* var##Tumble[] = { \
|
||||
var##289, var##290, var##291, var##292, var##293, var##294, var##295, \
|
||||
var##296, var##297, var##298, var##299, var##300, var##301, var##302, \
|
||||
var##303, var##304, var##305, var##306, var##307, var##308, var##309, \
|
||||
var##310, var##311, var##312, var##313, var##314, var##315, var##316, \
|
||||
var##317, var##318, var##319, var##320 \
|
||||
};
|
||||
#define DECLARE_KART_TUMBLE_TABLE(var) \
|
||||
u8* var##Tumble[] = { var##289, var##290, var##291, var##292, var##293, var##294, var##295, var##296, \
|
||||
var##297, var##298, var##299, var##300, var##301, var##302, var##303, var##304, \
|
||||
var##305, var##306, var##307, var##308, var##309, var##310, var##311, var##312, \
|
||||
var##313, var##314, var##315, var##316, var##317, var##318, var##319, var##320 };
|
||||
|
||||
DECLARE_KART_GROUP(gKartMario)
|
||||
DECLARE_KART_GROUP(gKartToad)
|
||||
|
||||
+12
-6
@@ -3074,8 +3074,9 @@ Gfx* func_80096CD8(Gfx* displayListHead, s32 xPos, s32 yPos, u32 width, u32 heig
|
||||
if (rectXoffset == 0) {
|
||||
break;
|
||||
}
|
||||
} else
|
||||
} else {
|
||||
rectXoffset = tileWidth;
|
||||
}
|
||||
|
||||
gDPLoadTextureTile(displayListHead++, (D_0B002A00 + random_int(128) * 2), G_IM_FMT_IA, G_IM_SIZ_16b, width,
|
||||
height, x, y, x + rectXoffset, y + rectYoffset, 0, G_TX_WRAP, G_TX_WRAP, masks, maskt,
|
||||
@@ -3794,8 +3795,9 @@ void func_80099EC4(void) {
|
||||
var_s1 = D_8018E0E8;
|
||||
temp_s2 = var_s1->mk64Texture;
|
||||
|
||||
if (temp_s2 == NULL)
|
||||
if (temp_s2 == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
huh = temp_s2->size;
|
||||
if (huh != 0) {
|
||||
@@ -3833,8 +3835,9 @@ void func_80099EC4(void) {
|
||||
D_802BFB80.arraySize4[var_s1->unk6][var_s1->unk4 / 2][(var_s1->unk4 % 2) + 2].pixel_index_array);
|
||||
var_s1->mk64Texture = NULL;
|
||||
var_s1++;
|
||||
if (var_s4 != 0)
|
||||
if (var_s4 != 0) {
|
||||
break;
|
||||
}
|
||||
osRecvMesg(&gDmaMesgQueue, &sp64, 1);
|
||||
if ((var_s1 + 1)->mk64Texture == NULL) {
|
||||
var_s4 += 1;
|
||||
@@ -3857,8 +3860,9 @@ void func_80099EC4(void) {
|
||||
D_802BFB80.arraySize4[var_s1->unk6][var_s1->unk4 / 2][(var_s1->unk4 % 2) + 2].pixel_index_array);
|
||||
var_s1->mk64Texture = NULL;
|
||||
var_s1++;
|
||||
if (var_s4 != 0)
|
||||
if (var_s4 != 0) {
|
||||
break;
|
||||
}
|
||||
osRecvMesg(&gDmaMesgQueue, &sp64, 1);
|
||||
}
|
||||
}
|
||||
@@ -5516,7 +5520,8 @@ void add_menu_item(s32 type, s32 column, s32 row, s8 priority) {
|
||||
load_menu_img_comp_type(D_02004B74, LOAD_MENU_IMG_TKMK00_ONCE);
|
||||
convert_img_to_greyscale(0, 0x00000019);
|
||||
adjust_img_colour(0, SCREEN_WIDTH * SCREEN_HEIGHT, gBackgroundColor[type - MAIN_MENU_BACKGROUND].red,
|
||||
gBackgroundColor[type - MAIN_MENU_BACKGROUND].green, gBackgroundColor[type - MAIN_MENU_BACKGROUND].blue);
|
||||
gBackgroundColor[type - MAIN_MENU_BACKGROUND].green,
|
||||
gBackgroundColor[type - MAIN_MENU_BACKGROUND].blue);
|
||||
break;
|
||||
case MENU_ITEM_UI_OK:
|
||||
menuItem->param1 = 0x20;
|
||||
@@ -11057,7 +11062,8 @@ void func_800ACF40(MenuItem* arg0) {
|
||||
break;
|
||||
case 3:
|
||||
if (D_8018DEE0[arg0->D_8018DEE0_index].sequenceIndex >= D_800E8440[temp_a1]) {
|
||||
func_8009A640(arg0->D_8018DEE0_index, 0, somePlayerIndex, segmented_to_virtual_dupe_2(D_800E83A0[temp_a1]));
|
||||
func_8009A640(arg0->D_8018DEE0_index, 0, somePlayerIndex,
|
||||
segmented_to_virtual_dupe_2(D_800E83A0[temp_a1]));
|
||||
arg0->state = 4;
|
||||
}
|
||||
break;
|
||||
|
||||
+28
-15
@@ -1271,7 +1271,7 @@ void setup_selected_game_mode(void) {
|
||||
*/
|
||||
void main_menu_act(struct Controller* controller, u16 controllerIdx) {
|
||||
u16 btnAndStick;
|
||||
s32 subMode; // subMode
|
||||
s32 subMode; // subMode
|
||||
bool cursorMoved; // cursorMoved
|
||||
|
||||
btnAndStick = controller->buttonPressed | controller->stickPressed;
|
||||
@@ -1354,7 +1354,7 @@ void main_menu_act(struct Controller* controller, u16 controllerIdx) {
|
||||
play_sound2(SOUND_MENU_GO_BACK);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
if (btnAndStick & A_BUTTON) {
|
||||
switch (gGameModePlayerSelection[gPlayerCount - 1][gGameModeMenuColumn[gPlayerCount - 1]]) {
|
||||
default:
|
||||
@@ -1407,11 +1407,13 @@ void main_menu_act(struct Controller* controller, u16 controllerIdx) {
|
||||
if (btnAndStick & D_JPAD) {
|
||||
cursorMoved = false;
|
||||
if (has_unlocked_extra_mode()) {
|
||||
if (subMode < sGameModePlayerColumnExtra[gPlayerCount - 1][gGameModeMenuColumn[gPlayerCount - 1]]) {
|
||||
if (subMode <
|
||||
sGameModePlayerColumnExtra[gPlayerCount - 1][gGameModeMenuColumn[gPlayerCount - 1]]) {
|
||||
cursorMoved = true;
|
||||
}
|
||||
} else {
|
||||
if (subMode < sGameModePlayerColumnDefault[gPlayerCount - 1][gGameModeMenuColumn[gPlayerCount - 1]]) {
|
||||
if (subMode <
|
||||
sGameModePlayerColumnDefault[gPlayerCount - 1][gGameModeMenuColumn[gPlayerCount - 1]]) {
|
||||
cursorMoved = true;
|
||||
}
|
||||
}
|
||||
@@ -1428,7 +1430,7 @@ void main_menu_act(struct Controller* controller, u16 controllerIdx) {
|
||||
reset_cycle_flash_menu();
|
||||
play_sound2(SOUND_MENU_GO_BACK);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (btnAndStick & A_BUTTON) {
|
||||
reset_cycle_flash_menu();
|
||||
if ((gPlayerCount == 1) && ((gGameModeMenuColumn - 1)[gPlayerCount] == 1) && (subMode == 1)) {
|
||||
@@ -1533,10 +1535,12 @@ void player_select_menu_act(struct Controller* controller, u16 controllerIdx) {
|
||||
play_sound2(SOUND_MENU_GO_BACK);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ((btnAndStick & A_BUTTON) && (gCharacterGridIsSelected[controllerIdx] == 0)) {
|
||||
gCharacterGridIsSelected[controllerIdx] = true;
|
||||
func_800C90F4(controllerIdx, ((sCharacterGridOrder - 1)[gCharacterGridSelections[controllerIdx]] * 0x10) + 0x2900800E);
|
||||
func_800C90F4(controllerIdx,
|
||||
((sCharacterGridOrder - 1)[gCharacterGridSelections[controllerIdx]] * 0x10) +
|
||||
0x2900800E);
|
||||
}
|
||||
|
||||
selected = false;
|
||||
@@ -1558,7 +1562,9 @@ void player_select_menu_act(struct Controller* controller, u16 controllerIdx) {
|
||||
}
|
||||
j = gCharacterGridSelections[controllerIdx];
|
||||
if ((btnAndStick & R_JPAD) && (btnAndStick & D_JPAD)) {
|
||||
if ((gCharacterGridSelections[controllerIdx] == 1U) || (gCharacterGridSelections[controllerIdx] == 2U) || (gCharacterGridSelections[controllerIdx] == 3U)) {
|
||||
if ((gCharacterGridSelections[controllerIdx] == 1U) ||
|
||||
(gCharacterGridSelections[controllerIdx] == 2U) ||
|
||||
(gCharacterGridSelections[controllerIdx] == 3U)) {
|
||||
j = gCharacterGridSelections[controllerIdx] + 5;
|
||||
if (is_character_spot_free(j)) {
|
||||
gCharacterGridSelections[controllerIdx] = j;
|
||||
@@ -1568,7 +1574,9 @@ void player_select_menu_act(struct Controller* controller, u16 controllerIdx) {
|
||||
return;
|
||||
}
|
||||
if ((btnAndStick & L_JPAD) && (btnAndStick & D_JPAD)) {
|
||||
if ((gCharacterGridSelections[controllerIdx] == 2U) || (gCharacterGridSelections[controllerIdx] == 3U) || (gCharacterGridSelections[controllerIdx] == 4U)) {
|
||||
if ((gCharacterGridSelections[controllerIdx] == 2U) ||
|
||||
(gCharacterGridSelections[controllerIdx] == 3U) ||
|
||||
(gCharacterGridSelections[controllerIdx] == 4U)) {
|
||||
j = gCharacterGridSelections[controllerIdx] + 3;
|
||||
if (is_character_spot_free(j)) {
|
||||
gCharacterGridSelections[controllerIdx] = j;
|
||||
@@ -1578,7 +1586,9 @@ void player_select_menu_act(struct Controller* controller, u16 controllerIdx) {
|
||||
return;
|
||||
}
|
||||
if ((btnAndStick & R_JPAD) && (btnAndStick & U_JPAD)) {
|
||||
if ((gCharacterGridSelections[controllerIdx] == 5U) || (gCharacterGridSelections[controllerIdx] == 6U) || (gCharacterGridSelections[controllerIdx] == 7U)) {
|
||||
if ((gCharacterGridSelections[controllerIdx] == 5U) ||
|
||||
(gCharacterGridSelections[controllerIdx] == 6U) ||
|
||||
(gCharacterGridSelections[controllerIdx] == 7U)) {
|
||||
j = gCharacterGridSelections[controllerIdx] - 3;
|
||||
if (is_character_spot_free(j)) {
|
||||
gCharacterGridSelections[controllerIdx] = j;
|
||||
@@ -1589,7 +1599,9 @@ void player_select_menu_act(struct Controller* controller, u16 controllerIdx) {
|
||||
}
|
||||
|
||||
if ((btnAndStick & L_JPAD) && (btnAndStick & U_JPAD)) {
|
||||
if ((gCharacterGridSelections[controllerIdx] == 6U) || (gCharacterGridSelections[controllerIdx] == 7U) || (gCharacterGridSelections[controllerIdx] == 8U)) {
|
||||
if ((gCharacterGridSelections[controllerIdx] == 6U) ||
|
||||
(gCharacterGridSelections[controllerIdx] == 7U) ||
|
||||
(gCharacterGridSelections[controllerIdx] == 8U)) {
|
||||
j = gCharacterGridSelections[controllerIdx] - 5;
|
||||
if (is_character_spot_free(j)) {
|
||||
gCharacterGridSelections[controllerIdx] = j;
|
||||
@@ -1597,10 +1609,10 @@ void player_select_menu_act(struct Controller* controller, u16 controllerIdx) {
|
||||
}
|
||||
}
|
||||
return;
|
||||
|
||||
}
|
||||
if (btnAndStick & R_JPAD) {
|
||||
if ((gCharacterGridSelections[controllerIdx] != 4U) && (gCharacterGridSelections[controllerIdx] != 8U)) {
|
||||
if ((gCharacterGridSelections[controllerIdx] != 4U) &&
|
||||
(gCharacterGridSelections[controllerIdx] != 8U)) {
|
||||
j = gCharacterGridSelections[controllerIdx] + 1;
|
||||
do {
|
||||
if (is_character_spot_free(j)) {
|
||||
@@ -1618,7 +1630,8 @@ void player_select_menu_act(struct Controller* controller, u16 controllerIdx) {
|
||||
return;
|
||||
}
|
||||
if (btnAndStick & L_JPAD) {
|
||||
if ((gCharacterGridSelections[controllerIdx] != 1U) && (gCharacterGridSelections[controllerIdx] != 5U)) {
|
||||
if ((gCharacterGridSelections[controllerIdx] != 1U) &&
|
||||
(gCharacterGridSelections[controllerIdx] != 5U)) {
|
||||
j = gCharacterGridSelections[controllerIdx] - 1;
|
||||
do {
|
||||
if (is_character_spot_free(j)) {
|
||||
@@ -1626,7 +1639,7 @@ void player_select_menu_act(struct Controller* controller, u16 controllerIdx) {
|
||||
play_sound2(SOUND_MENU_CURSOR_MOVE);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
j--;
|
||||
if (j == 0 || j == 4) {
|
||||
break;
|
||||
|
||||
+4
-4
@@ -66,7 +66,7 @@ void osSyncPrintfUnused(const char* fmt, ...) {
|
||||
va_list args;
|
||||
va_start(args, fmt);
|
||||
|
||||
_Printf((char* (*) (char*, const char*, size_t) ) is_proutSyncPrintf, NULL, fmt, args);
|
||||
_Printf((char* (*) (char*, const char*, size_t)) is_proutSyncPrintf, NULL, fmt, args);
|
||||
|
||||
va_end(args);
|
||||
}
|
||||
@@ -75,7 +75,7 @@ void osSyncPrintf(const char* fmt, ...) {
|
||||
va_list args;
|
||||
va_start(args, fmt);
|
||||
|
||||
_Printf((char* (*) (char*, const char*, size_t) ) is_proutSyncPrintf, NULL, fmt, args);
|
||||
_Printf((char* (*) (char*, const char*, size_t)) is_proutSyncPrintf, NULL, fmt, args);
|
||||
|
||||
va_end(args);
|
||||
}
|
||||
@@ -84,7 +84,7 @@ void print(const char* fmt, ...) {
|
||||
va_list args;
|
||||
va_start(args, fmt);
|
||||
|
||||
_Printf((char* (*) (char*, const char*, size_t) ) is_proutSyncPrintf, NULL, fmt, args);
|
||||
_Printf((char* (*) (char*, const char*, size_t)) is_proutSyncPrintf, NULL, fmt, args);
|
||||
|
||||
va_end(args);
|
||||
}
|
||||
@@ -94,7 +94,7 @@ void rmonPrintf(const char* fmt, ...) {
|
||||
va_list args;
|
||||
va_start(args, fmt);
|
||||
|
||||
_Printf((char* (*) (char*, const char*, size_t) ) is_proutSyncPrintf, NULL, fmt, args);
|
||||
_Printf((char* (*) (char*, const char*, size_t)) is_proutSyncPrintf, NULL, fmt, args);
|
||||
|
||||
va_end(args);
|
||||
}
|
||||
|
||||
+252
-148
@@ -1684,8 +1684,7 @@ void func_8002BD58(Player* player) {
|
||||
if ((player->unk_234 >= 30) && (player->unk_234 < 80)) {
|
||||
player->steerPosition = spC[(s32) (player->unk_234 - 30) / 12];
|
||||
}
|
||||
if (((player->unk_234 < 80) || (player->unk_234 > 90)) && (player->unk_234 > 90) &&
|
||||
(player->unk_234 <= 160)) {
|
||||
if (((player->unk_234 < 80) || (player->unk_234 > 90)) && (player->unk_234 > 90) && (player->unk_234 <= 160)) {
|
||||
player->steerPosition = spC[1];
|
||||
}
|
||||
} else {
|
||||
@@ -2157,10 +2156,10 @@ void func_8002D268(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
|
||||
}
|
||||
if ((player->tyres[BACK_LEFT].surfaceType == ASPHALT) && (player->tyres[BACK_RIGHT].surfaceType == ASPHALT)) {
|
||||
gravityX = (-1 * (player->unk_064[0] + sp16C[0])) +
|
||||
((-player->collision.orientationVector[0] * player->kartGravity) * 0.925);
|
||||
((-player->collision.orientationVector[0] * player->kartGravity) * 0.925);
|
||||
gravityY = (-player->collision.orientationVector[1] * player->kartGravity);
|
||||
gravityZ = (-1 * (player->unk_064[2] + sp16C[2])) +
|
||||
((-player->collision.orientationVector[2] * player->kartGravity) * 0.925);
|
||||
((-player->collision.orientationVector[2] * player->kartGravity) * 0.925);
|
||||
} else {
|
||||
temp3 = (((player->speed / 18.0f) * 216.0f) / 10.0f);
|
||||
if (temp3 >= 10) {
|
||||
@@ -3046,7 +3045,8 @@ f32 func_80030150(Player* player, s8 playerIndex) {
|
||||
var_f0 += var_v0 * (0.01 + gKartTurnSpeedReductionTable0[player->characterId]);
|
||||
}
|
||||
}
|
||||
if (((player->effects & DRIFT_OUTSIDE_EFFECT) == DRIFT_OUTSIDE_EFFECT) && (player->driftStateCounter < 10)) {
|
||||
if (((player->effects & DRIFT_OUTSIDE_EFFECT) == DRIFT_OUTSIDE_EFFECT) &&
|
||||
(player->driftStateCounter < 10)) {
|
||||
if (var_v0 < 0) {
|
||||
var_f0 += -var_v0 * 0.008;
|
||||
} else {
|
||||
@@ -3757,7 +3757,8 @@ void player_decelerate(Player* player, f32 speedReduction) {
|
||||
}
|
||||
|
||||
void player_accelerate_global(Player* player, s32 playerIndex) {
|
||||
if ((gPlayerCurrentSpeed[playerIndex] >= 0.0) && (gPlayerCurrentSpeed[playerIndex] < ((f64) player->topSpeed * 0.1))) {
|
||||
if ((gPlayerCurrentSpeed[playerIndex] >= 0.0) &&
|
||||
(gPlayerCurrentSpeed[playerIndex] < ((f64) player->topSpeed * 0.1))) {
|
||||
gPlayerCurrentSpeed[playerIndex] += gKartAccelerationTables[player->characterId][0] * 3.2;
|
||||
}
|
||||
if (((player->topSpeed * 0.1) <= gPlayerCurrentSpeed[playerIndex]) &&
|
||||
@@ -3776,19 +3777,24 @@ void player_accelerate_global(Player* player, s32 playerIndex) {
|
||||
(gPlayerCurrentSpeed[playerIndex] < (player->topSpeed * 0.5))) {
|
||||
gPlayerCurrentSpeed[playerIndex] += gKartAccelerationTables[player->characterId][4] * 3.2;
|
||||
}
|
||||
if (((player->topSpeed * 0.5) <= gPlayerCurrentSpeed[playerIndex]) && (gPlayerCurrentSpeed[playerIndex] < (player->topSpeed * 0.6))) {
|
||||
if (((player->topSpeed * 0.5) <= gPlayerCurrentSpeed[playerIndex]) &&
|
||||
(gPlayerCurrentSpeed[playerIndex] < (player->topSpeed * 0.6))) {
|
||||
gPlayerCurrentSpeed[playerIndex] += gKartAccelerationTables[player->characterId][5] * 3.2;
|
||||
}
|
||||
if (((player->topSpeed * 0.6) <= gPlayerCurrentSpeed[playerIndex]) && (gPlayerCurrentSpeed[playerIndex] < (player->topSpeed * 0.7))) {
|
||||
if (((player->topSpeed * 0.6) <= gPlayerCurrentSpeed[playerIndex]) &&
|
||||
(gPlayerCurrentSpeed[playerIndex] < (player->topSpeed * 0.7))) {
|
||||
gPlayerCurrentSpeed[playerIndex] += gKartAccelerationTables[player->characterId][6] * 3.2;
|
||||
}
|
||||
if (((player->topSpeed * 0.7) <= gPlayerCurrentSpeed[playerIndex]) && (gPlayerCurrentSpeed[playerIndex] < (player->topSpeed * 0.8))) {
|
||||
if (((player->topSpeed * 0.7) <= gPlayerCurrentSpeed[playerIndex]) &&
|
||||
(gPlayerCurrentSpeed[playerIndex] < (player->topSpeed * 0.8))) {
|
||||
gPlayerCurrentSpeed[playerIndex] += gKartAccelerationTables[player->characterId][7] * 2.8;
|
||||
}
|
||||
if (((player->topSpeed * 0.8) <= gPlayerCurrentSpeed[playerIndex]) && (gPlayerCurrentSpeed[playerIndex] < (player->topSpeed * 0.9))) {
|
||||
if (((player->topSpeed * 0.8) <= gPlayerCurrentSpeed[playerIndex]) &&
|
||||
(gPlayerCurrentSpeed[playerIndex] < (player->topSpeed * 0.9))) {
|
||||
gPlayerCurrentSpeed[playerIndex] += gKartAccelerationTables[player->characterId][8] * 2.8;
|
||||
}
|
||||
if (((player->topSpeed * 0.9) <= gPlayerCurrentSpeed[playerIndex]) && (gPlayerCurrentSpeed[playerIndex] <= (player->topSpeed * 1.0))) {
|
||||
if (((player->topSpeed * 0.9) <= gPlayerCurrentSpeed[playerIndex]) &&
|
||||
(gPlayerCurrentSpeed[playerIndex] <= (player->topSpeed * 1.0))) {
|
||||
gPlayerCurrentSpeed[playerIndex] += gKartAccelerationTables[player->characterId][9] * 2.8;
|
||||
}
|
||||
player->kartProps |= THROTTLE;
|
||||
@@ -3817,14 +3823,16 @@ void func_80033850(Player* arg0, f32 arg1) {
|
||||
}
|
||||
}
|
||||
|
||||
void update_steering_large(Player* player, s32* desired_steering_change, s32* current_steering, s32 desired_steering, s32 steering_change_threshold, s32 steering_change_minimum, s32 arg6) {
|
||||
void update_steering_large(Player* player, s32* desired_steering_change, s32* current_steering, s32 desired_steering,
|
||||
s32 steering_change_threshold, s32 steering_change_minimum, s32 arg6) {
|
||||
s32 current_steering_change_increment;
|
||||
|
||||
// if (abs(desired_steering_change) >= steering_change_threshold)
|
||||
if ((*desired_steering_change >= steering_change_threshold) || (-steering_change_threshold >= *desired_steering_change)) {
|
||||
if ((*desired_steering_change >= steering_change_threshold) ||
|
||||
(-steering_change_threshold >= *desired_steering_change)) {
|
||||
current_steering_change_increment = player->steerChangeIncrement;
|
||||
player->steerChangeIncrement -= 1 << 11;
|
||||
//signed vs unsigned weirdness, actually checking if negative
|
||||
// signed vs unsigned weirdness, actually checking if negative
|
||||
if (player->steerChangeIncrement >= 0xF0000000) {
|
||||
player->steerChangeIncrement = current_steering_change_increment;
|
||||
}
|
||||
@@ -3833,9 +3841,10 @@ void update_steering_large(Player* player, s32* desired_steering_change, s32* cu
|
||||
}
|
||||
|
||||
// move current_steering toward desired_steering
|
||||
*current_steering = (desired_steering < *current_steering) ? *current_steering - player->steerChangeIncrement : *current_steering + player->steerChangeIncrement;
|
||||
*current_steering = (desired_steering < *current_steering) ? *current_steering - player->steerChangeIncrement
|
||||
: *current_steering + player->steerChangeIncrement;
|
||||
|
||||
//arg6 is always positive and unk_090 is 0 or negative, so this if statement is always true
|
||||
// arg6 is always positive and unk_090 is 0 or negative, so this if statement is always true
|
||||
if (player->unk_090 < ((f32) arg6)) {
|
||||
player->unk_090 = (f32) -arg6;
|
||||
}
|
||||
@@ -3878,10 +3887,12 @@ UNUSED void func_800339C4(Player* player, s32* arg1, s32 arg2, s32 arg3, f32 arg
|
||||
func_80033850(player, arg4);
|
||||
}
|
||||
|
||||
void update_steering_small(Player* player, s32* desired_steering_change, s32* current_steering, s32 desired_steering, s32 steering_change_threshold, s32 steering_change_minimum, f32 arg6) {
|
||||
void update_steering_small(Player* player, s32* desired_steering_change, s32* current_steering, s32 desired_steering,
|
||||
s32 steering_change_threshold, s32 steering_change_minimum, f32 arg6) {
|
||||
s32 current_steering_change_increment;
|
||||
|
||||
if ((*desired_steering_change >= steering_change_threshold) || (-steering_change_threshold >= *desired_steering_change)) {
|
||||
if ((*desired_steering_change >= steering_change_threshold) ||
|
||||
(-steering_change_threshold >= *desired_steering_change)) {
|
||||
current_steering_change_increment = player->steerChangeIncrement;
|
||||
player->steerChangeIncrement -= 1 << 11;
|
||||
if (player->steerChangeIncrement >= 0xF0000000) {
|
||||
@@ -3891,7 +3902,8 @@ void update_steering_small(Player* player, s32* desired_steering_change, s32* cu
|
||||
player->steerChangeIncrement = steering_change_minimum;
|
||||
}
|
||||
|
||||
*current_steering = (desired_steering < *current_steering) ? *current_steering - player->steerChangeIncrement : *current_steering + player->steerChangeIncrement;
|
||||
*current_steering = (desired_steering < *current_steering) ? *current_steering - player->steerChangeIncrement
|
||||
: *current_steering + player->steerChangeIncrement;
|
||||
// identical to update_steering_large before this point
|
||||
|
||||
// set player->unk_090 = min(0, player->unk_90 + arg6)
|
||||
@@ -3899,7 +3911,7 @@ void update_steering_small(Player* player, s32* desired_steering_change, s32* cu
|
||||
}
|
||||
}
|
||||
|
||||
//On or near ground
|
||||
// On or near ground
|
||||
void func_80033AE0(Player* player, struct Controller* controller, s8 playerIndex) {
|
||||
s32 steer_position;
|
||||
s32 clamped_x;
|
||||
@@ -3924,18 +3936,11 @@ void func_80033AE0(Player* player, struct Controller* controller, s8 playerIndex
|
||||
0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8,
|
||||
0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8 };
|
||||
|
||||
if (
|
||||
(
|
||||
((player->effects & HOP_EFFECT) != HOP_EFFECT) &&
|
||||
(
|
||||
((player->unk_0C0 / DEGREES_CONVERSION_FACTOR <= 6) && (player->unk_0C0 / DEGREES_CONVERSION_FACTOR >= -6)) ||
|
||||
((controller->button & R_TRIG) != R_TRIG)
|
||||
)
|
||||
) ||
|
||||
(((player->speed / 18.0f) * 216.0f) <= 20.0f) ||
|
||||
((player->effects & ENEMY_BONK_EFFECT) == ENEMY_BONK_EFFECT)
|
||||
) {
|
||||
cancel_drift_effect(player);
|
||||
if ((((player->effects & HOP_EFFECT) != HOP_EFFECT) &&
|
||||
(((player->unk_0C0 / DEGREES_CONVERSION_FACTOR <= 6) && (player->unk_0C0 / DEGREES_CONVERSION_FACTOR >= -6)) ||
|
||||
((controller->button & R_TRIG) != R_TRIG))) ||
|
||||
(((player->speed / 18.0f) * 216.0f) <= 20.0f) || ((player->effects & ENEMY_BONK_EFFECT) == ENEMY_BONK_EFFECT)) {
|
||||
cancel_drift_effect(player);
|
||||
}
|
||||
|
||||
if ((player->unk_0C0 / DEGREES_CONVERSION_FACTOR) < (-5)) {
|
||||
@@ -3962,7 +3967,8 @@ void func_80033AE0(Player* player, struct Controller* controller, s8 playerIndex
|
||||
steer_position_delta = steer_position - player->steerPosition; // x change
|
||||
steer_position_delta = steer_position_delta >> 16;
|
||||
player->steerPositionDelta = (s16) steer_position_delta;
|
||||
if (((steer_position_delta >= 90) || (steer_position_delta <= -90)) && (!(player->kartProps & DRIVING_NEAR_SPINOUT))) {
|
||||
if (((steer_position_delta >= 90) || (steer_position_delta <= -90)) &&
|
||||
(!(player->kartProps & DRIVING_NEAR_SPINOUT))) {
|
||||
if ((((((!(player->effects & DRIFTING_EFFECT)) && (gCCSelection == CC_150)) && (gModeSelection != BATTLE)) &&
|
||||
(!(player->effects & MIDAIR_EFFECT))) &&
|
||||
(((player->speed / 18.0f) * 216.0f) >= 40.0f)) &&
|
||||
@@ -3971,7 +3977,7 @@ void func_80033AE0(Player* player, struct Controller* controller, s8 playerIndex
|
||||
}
|
||||
}
|
||||
if (((s32) player->tyres[BACK_RIGHT].surfaceType) < 0xF) {
|
||||
//this table is just zeros
|
||||
// this table is just zeros
|
||||
zero += D_800E3610[player->characterId][player->tyres[BACK_RIGHT].surfaceType];
|
||||
}
|
||||
if (((s32) player->tyres[BACK_LEFT].surfaceType) < 0xF) {
|
||||
@@ -3990,19 +3996,19 @@ void func_80033AE0(Player* player, struct Controller* controller, s8 playerIndex
|
||||
if (((player->speed / 18.0f) * 216.0f) >= 15.0f) {
|
||||
if ((player->kartProps & RIGHT_TURN) == RIGHT_TURN) {
|
||||
if ((steer_position_delta <= 35) && (steer_position_delta >= 0)) {
|
||||
//gKartTable800E3650 is always 0
|
||||
steer_resistance_large_turn =
|
||||
(gKartTable800E3650[player->characterId] + 1.0f) * (((f32) (var_a0 + 15)) * (1.0f + zero)); //18 or 15
|
||||
// gKartTable800E3650 is always 0
|
||||
steer_resistance_large_turn = (gKartTable800E3650[player->characterId] + 1.0f) *
|
||||
(((f32) (var_a0 + 15)) * (1.0f + zero)); // 18 or 15
|
||||
steer_resistance_small_turn =
|
||||
(gKartTable800E3650[player->characterId] + 1.0f) * (((f32) (var_a0 + 15)) * (1.0f + zero));
|
||||
} else {
|
||||
steer_resistance_large_turn = (s32) (((f32) (var_a0 + 5)) * (1.0f + zero)); // 8 or 5
|
||||
steer_resistance_small_turn = (s32) (((f32) (var_a0 + 9)) * (1.0f + zero)); //12 or 9
|
||||
steer_resistance_small_turn = (s32) (((f32) (var_a0 + 9)) * (1.0f + zero)); // 12 or 9
|
||||
}
|
||||
} else if ((player->kartProps & LEFT_TURN) == LEFT_TURN) {
|
||||
if ((steer_position_delta >= -35) && (steer_position_delta <= 0)) {
|
||||
steer_resistance_large_turn =
|
||||
(gKartTable800E3650[player->characterId] + 1.0f) * (((f32) (var_a0 + 15)) * (1.0f + zero)); // 18 or 15
|
||||
steer_resistance_large_turn = (gKartTable800E3650[player->characterId] + 1.0f) *
|
||||
(((f32) (var_a0 + 15)) * (1.0f + zero)); // 18 or 15
|
||||
steer_resistance_small_turn =
|
||||
(gKartTable800E3650[player->characterId] + 1.0f) * (((f32) (var_a0 + 15)) * (1.0f + zero));
|
||||
} else {
|
||||
@@ -4035,105 +4041,196 @@ void func_80033AE0(Player* player, struct Controller* controller, s8 playerIndex
|
||||
}
|
||||
|
||||
/*
|
||||
This big group of function calls does 2 things.
|
||||
First, when you steer it sets steer_position (which starts as just your x input) part way between your x input and your previous player->steerPosition
|
||||
(basically, you cannot go from full left to right steering instantaneously)
|
||||
Second, it sets the value of player->unk_090, which has to do with your karts sideways velocity. The code looks like it is intended
|
||||
to set this to larger negative values when you have a large steer_position_delta. However, due to an apparent bug, update_steering_large
|
||||
overwrites this too frequently. The end effect is that player->unk_090 ends up always getting set to -59.85 when steer_position_delta > 30
|
||||
and set to 0 otherwise. -59.85 is -100 (the last value provided to update_steering_large) + the sum of the values provided to update_steering_small
|
||||
This big group of function calls does 2 things.
|
||||
First, when you steer it sets steer_position (which starts as just your x input) part way between your x input and
|
||||
your previous player->steerPosition (basically, you cannot go from full left to right steering instantaneously)
|
||||
Second, it sets the value of player->unk_090, which has to do with your karts sideways velocity. The code looks like
|
||||
it is intended to set this to larger negative values when you have a large steer_position_delta. However, due to an
|
||||
apparent bug, update_steering_large overwrites this too frequently. The end effect is that player->unk_090 ends up
|
||||
always getting set to -59.85 when steer_position_delta > 30 and set to 0 otherwise. -59.85 is -100 (the last value
|
||||
provided to update_steering_large) + the sum of the values provided to update_steering_small
|
||||
*/
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 90, (120 << 12) / steer_resistance_large_turn, 450);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 89, (118 << 12) / steer_resistance_large_turn, 440);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 88, (116 << 12) / steer_resistance_large_turn, 430);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 87, (114 << 12) / steer_resistance_large_turn, 420);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 86, (112 << 12) / steer_resistance_large_turn, 410);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 85, (88 << 12) / steer_resistance_large_turn, 400);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 84, (86 << 12) / steer_resistance_large_turn, 395);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 83, (80 << 12) / steer_resistance_large_turn, 390);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 82, (79 << 12) / steer_resistance_large_turn, 390);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 81, (78 << 12) / steer_resistance_large_turn, 380);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 80, (77 << 12) / steer_resistance_large_turn, 370);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 79, (76 << 12) / steer_resistance_large_turn, 360);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 78, (76 << 12) / steer_resistance_large_turn, 360);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 77, (75 << 12) / steer_resistance_large_turn, 350);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 76, (74 << 12) / steer_resistance_large_turn, 340);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 75, (73 << 12) / steer_resistance_large_turn, 330);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 74, (73 << 12) / steer_resistance_large_turn, 330);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 73, (73 << 12) / steer_resistance_large_turn, 330);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 72, (72 << 12) / steer_resistance_large_turn, 320);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 71, (71 << 12) / steer_resistance_large_turn, 315);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 70, (71 << 12) / steer_resistance_large_turn, 315);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 69, (70 << 12) / steer_resistance_large_turn, 305);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 68, (70 << 12) / steer_resistance_large_turn, 305);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 67, (69 << 12) / steer_resistance_large_turn, 280);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 66, (70 << 12) / steer_resistance_large_turn, 270);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 65, (69 << 12) / steer_resistance_large_turn, 270);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 64, (68 << 12) / steer_resistance_large_turn, 260);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 63, (67 << 12) / steer_resistance_large_turn, 250);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 62, (67 << 12) / steer_resistance_large_turn, 250);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 61, (67 << 12) / steer_resistance_large_turn, 250);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 60, (61 << 12) / steer_resistance_large_turn, 245);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 59, (60 << 12) / steer_resistance_large_turn, 245);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 58, (59 << 12) / steer_resistance_large_turn, 245);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 57, (58 << 12) / steer_resistance_large_turn, 245);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 56, (56 << 12) / steer_resistance_large_turn, 245);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 55, (56 << 12) / steer_resistance_large_turn, 230);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 54, (56 << 12) / steer_resistance_large_turn, 230);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 53, (56 << 12) / steer_resistance_large_turn, 230);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 52, (56 << 12) / steer_resistance_large_turn, 230);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 51, (56 << 12) / steer_resistance_large_turn, 230);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 50, (50 << 12) / steer_resistance_large_turn, 220);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 49, (50 << 12) / steer_resistance_large_turn, 220);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 48, (50 << 12) / steer_resistance_large_turn, 220);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 47, (50 << 12) / steer_resistance_large_turn, 220);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 46, (50 << 12) / steer_resistance_large_turn, 220);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 45, (48 << 12) / steer_resistance_large_turn, 110);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 44, (46 << 12) / steer_resistance_large_turn, 110);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 43, (46 << 12) / steer_resistance_large_turn, 110);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 42, (46 << 12) / steer_resistance_large_turn, 110);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 41, (46 << 12) / steer_resistance_large_turn, 110);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 40, (46 << 12) / steer_resistance_large_turn, 110);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 39, (44 << 12) / steer_resistance_large_turn, 110);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 38, (40 << 12) / steer_resistance_large_turn, 110);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 37, (40 << 12) / steer_resistance_large_turn, 110);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 36, (36 << 12) / steer_resistance_large_turn, 110);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 35, (36 << 12) / steer_resistance_large_turn, 110);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 34, (34 << 12) / steer_resistance_large_turn, 110);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 32, (32 << 12) / steer_resistance_large_turn, 100); // this skips 33
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 31, (32 << 12) / steer_resistance_large_turn, 100);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 90,
|
||||
(120 << 12) / steer_resistance_large_turn, 450);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 89,
|
||||
(118 << 12) / steer_resistance_large_turn, 440);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 88,
|
||||
(116 << 12) / steer_resistance_large_turn, 430);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 87,
|
||||
(114 << 12) / steer_resistance_large_turn, 420);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 86,
|
||||
(112 << 12) / steer_resistance_large_turn, 410);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 85,
|
||||
(88 << 12) / steer_resistance_large_turn, 400);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 84,
|
||||
(86 << 12) / steer_resistance_large_turn, 395);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 83,
|
||||
(80 << 12) / steer_resistance_large_turn, 390);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 82,
|
||||
(79 << 12) / steer_resistance_large_turn, 390);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 81,
|
||||
(78 << 12) / steer_resistance_large_turn, 380);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 80,
|
||||
(77 << 12) / steer_resistance_large_turn, 370);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 79,
|
||||
(76 << 12) / steer_resistance_large_turn, 360);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 78,
|
||||
(76 << 12) / steer_resistance_large_turn, 360);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 77,
|
||||
(75 << 12) / steer_resistance_large_turn, 350);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 76,
|
||||
(74 << 12) / steer_resistance_large_turn, 340);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 75,
|
||||
(73 << 12) / steer_resistance_large_turn, 330);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 74,
|
||||
(73 << 12) / steer_resistance_large_turn, 330);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 73,
|
||||
(73 << 12) / steer_resistance_large_turn, 330);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 72,
|
||||
(72 << 12) / steer_resistance_large_turn, 320);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 71,
|
||||
(71 << 12) / steer_resistance_large_turn, 315);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 70,
|
||||
(71 << 12) / steer_resistance_large_turn, 315);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 69,
|
||||
(70 << 12) / steer_resistance_large_turn, 305);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 68,
|
||||
(70 << 12) / steer_resistance_large_turn, 305);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 67,
|
||||
(69 << 12) / steer_resistance_large_turn, 280);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 66,
|
||||
(70 << 12) / steer_resistance_large_turn, 270);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 65,
|
||||
(69 << 12) / steer_resistance_large_turn, 270);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 64,
|
||||
(68 << 12) / steer_resistance_large_turn, 260);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 63,
|
||||
(67 << 12) / steer_resistance_large_turn, 250);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 62,
|
||||
(67 << 12) / steer_resistance_large_turn, 250);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 61,
|
||||
(67 << 12) / steer_resistance_large_turn, 250);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 60,
|
||||
(61 << 12) / steer_resistance_large_turn, 245);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 59,
|
||||
(60 << 12) / steer_resistance_large_turn, 245);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 58,
|
||||
(59 << 12) / steer_resistance_large_turn, 245);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 57,
|
||||
(58 << 12) / steer_resistance_large_turn, 245);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 56,
|
||||
(56 << 12) / steer_resistance_large_turn, 245);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 55,
|
||||
(56 << 12) / steer_resistance_large_turn, 230);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 54,
|
||||
(56 << 12) / steer_resistance_large_turn, 230);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 53,
|
||||
(56 << 12) / steer_resistance_large_turn, 230);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 52,
|
||||
(56 << 12) / steer_resistance_large_turn, 230);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 51,
|
||||
(56 << 12) / steer_resistance_large_turn, 230);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 50,
|
||||
(50 << 12) / steer_resistance_large_turn, 220);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 49,
|
||||
(50 << 12) / steer_resistance_large_turn, 220);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 48,
|
||||
(50 << 12) / steer_resistance_large_turn, 220);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 47,
|
||||
(50 << 12) / steer_resistance_large_turn, 220);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 46,
|
||||
(50 << 12) / steer_resistance_large_turn, 220);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 45,
|
||||
(48 << 12) / steer_resistance_large_turn, 110);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 44,
|
||||
(46 << 12) / steer_resistance_large_turn, 110);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 43,
|
||||
(46 << 12) / steer_resistance_large_turn, 110);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 42,
|
||||
(46 << 12) / steer_resistance_large_turn, 110);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 41,
|
||||
(46 << 12) / steer_resistance_large_turn, 110);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 40,
|
||||
(46 << 12) / steer_resistance_large_turn, 110);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 39,
|
||||
(44 << 12) / steer_resistance_large_turn, 110);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 38,
|
||||
(40 << 12) / steer_resistance_large_turn, 110);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 37,
|
||||
(40 << 12) / steer_resistance_large_turn, 110);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 36,
|
||||
(36 << 12) / steer_resistance_large_turn, 110);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 35,
|
||||
(36 << 12) / steer_resistance_large_turn, 110);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 34,
|
||||
(34 << 12) / steer_resistance_large_turn, 110);
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 32,
|
||||
(32 << 12) / steer_resistance_large_turn, 100); // this skips 33
|
||||
update_steering_large(player, &steer_position_delta, &steer_position, player->steerPosition, 31,
|
||||
(32 << 12) / steer_resistance_large_turn, 100);
|
||||
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 30, (31 << 12) / steer_resistance_small_turn, 0.9f); // 0.9 * 5
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 29, (30 << 12) / steer_resistance_small_turn, 0.9f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 28, (29 << 12) / steer_resistance_small_turn, 0.9f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 27, (28 << 12) / steer_resistance_small_turn, 0.9f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 26, (27 << 12) / steer_resistance_small_turn, 0.9f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 25, (26 << 12) / steer_resistance_small_turn, 1.0f); // 1.0 * 5
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 24, (25 << 12) / steer_resistance_small_turn, 1.0f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 23, (24 << 12) / steer_resistance_small_turn, 1.0f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 22, (23 << 12) / steer_resistance_small_turn, 1.0f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 21, (22 << 12) / steer_resistance_small_turn, 1.0f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 20, (21 << 12) / steer_resistance_small_turn, 1.05f);// 1.05* 5
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 19, (20 << 12) / steer_resistance_small_turn, 1.05f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 18, (19 << 12) / steer_resistance_small_turn, 1.05f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 17, (18 << 12) / steer_resistance_small_turn, 1.05f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 16, (17 << 12) / steer_resistance_small_turn, 1.05f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 15, (16 << 12) / steer_resistance_small_turn, 1.2f); // 1.2 * 5
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 14, (15 << 12) / steer_resistance_small_turn, 1.2f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 13, (14 << 12) / steer_resistance_small_turn, 1.2f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 12, (13 << 12) / steer_resistance_small_turn, 1.2f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 11, (12 << 12) / steer_resistance_small_turn, 1.2f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 10, (14 << 12) / steer_resistance_small_turn, 1.6f); // 1.6 * 5
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 9, (13 << 12) / steer_resistance_small_turn, 1.6f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 8, (12 << 12) / steer_resistance_small_turn, 1.6f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 7, (11 << 12) / steer_resistance_small_turn, 1.6f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 6, (10 << 12) / steer_resistance_small_turn, 1.6f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 5, (9 << 12) / steer_resistance_small_turn, 1.9f); // 1.9 * 6
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 4, (8 << 12) / steer_resistance_small_turn, 1.9f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 3, (7 << 12) / steer_resistance_small_turn, 1.9f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 2, (6 << 12) / steer_resistance_small_turn, 1.9f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 1, (5 << 12) / steer_resistance_small_turn, 1.9f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 0, 0 / steer_resistance_small_turn, 1.9f); // sum is 40.15
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 30,
|
||||
(31 << 12) / steer_resistance_small_turn, 0.9f); // 0.9 * 5
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 29,
|
||||
(30 << 12) / steer_resistance_small_turn, 0.9f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 28,
|
||||
(29 << 12) / steer_resistance_small_turn, 0.9f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 27,
|
||||
(28 << 12) / steer_resistance_small_turn, 0.9f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 26,
|
||||
(27 << 12) / steer_resistance_small_turn, 0.9f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 25,
|
||||
(26 << 12) / steer_resistance_small_turn, 1.0f); // 1.0 * 5
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 24,
|
||||
(25 << 12) / steer_resistance_small_turn, 1.0f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 23,
|
||||
(24 << 12) / steer_resistance_small_turn, 1.0f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 22,
|
||||
(23 << 12) / steer_resistance_small_turn, 1.0f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 21,
|
||||
(22 << 12) / steer_resistance_small_turn, 1.0f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 20,
|
||||
(21 << 12) / steer_resistance_small_turn, 1.05f); // 1.05* 5
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 19,
|
||||
(20 << 12) / steer_resistance_small_turn, 1.05f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 18,
|
||||
(19 << 12) / steer_resistance_small_turn, 1.05f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 17,
|
||||
(18 << 12) / steer_resistance_small_turn, 1.05f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 16,
|
||||
(17 << 12) / steer_resistance_small_turn, 1.05f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 15,
|
||||
(16 << 12) / steer_resistance_small_turn, 1.2f); // 1.2 * 5
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 14,
|
||||
(15 << 12) / steer_resistance_small_turn, 1.2f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 13,
|
||||
(14 << 12) / steer_resistance_small_turn, 1.2f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 12,
|
||||
(13 << 12) / steer_resistance_small_turn, 1.2f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 11,
|
||||
(12 << 12) / steer_resistance_small_turn, 1.2f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 10,
|
||||
(14 << 12) / steer_resistance_small_turn, 1.6f); // 1.6 * 5
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 9,
|
||||
(13 << 12) / steer_resistance_small_turn, 1.6f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 8,
|
||||
(12 << 12) / steer_resistance_small_turn, 1.6f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 7,
|
||||
(11 << 12) / steer_resistance_small_turn, 1.6f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 6,
|
||||
(10 << 12) / steer_resistance_small_turn, 1.6f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 5,
|
||||
(9 << 12) / steer_resistance_small_turn, 1.9f); // 1.9 * 6
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 4,
|
||||
(8 << 12) / steer_resistance_small_turn, 1.9f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 3,
|
||||
(7 << 12) / steer_resistance_small_turn, 1.9f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 2,
|
||||
(6 << 12) / steer_resistance_small_turn, 1.9f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 1,
|
||||
(5 << 12) / steer_resistance_small_turn, 1.9f);
|
||||
update_steering_small(player, &steer_position_delta, &steer_position, player->steerPosition, 0,
|
||||
0 / steer_resistance_small_turn, 1.9f); // sum is 40.15
|
||||
if ((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT) {
|
||||
var_f2_2 = (f32) ((steer_position >> 16) / 8);
|
||||
} else if (((player->speed / 18.0f) * 216.0f) <= 25.0f) {
|
||||
@@ -4315,7 +4412,8 @@ void apply_cpu_turn(Player* player, s16 targetAngle) {
|
||||
}
|
||||
player->unk_078 = var_v0 * var_f0;
|
||||
}
|
||||
if ((((player->effects & HOP_EFFECT) != HOP_EFFECT) && (player->unk_0C0 <= 60) && (player->unk_0C0 >= -60)) ||
|
||||
if ((((player->effects & HOP_EFFECT) != HOP_EFFECT) && (player->unk_0C0 <= 60) &&
|
||||
(player->unk_0C0 >= -60)) ||
|
||||
(((player->speed / 18.0f) * 216.0f) <= 20.0f) ||
|
||||
((player->effects & ENEMY_BONK_EFFECT) == ENEMY_BONK_EFFECT)) {
|
||||
cancel_drift_effect(player);
|
||||
@@ -4339,12 +4437,12 @@ void cancel_drift_effect(Player* player) {
|
||||
if (((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) {
|
||||
if ((player->unk_0C0 / DEGREES_CONVERSION_FACTOR) > 0) {
|
||||
// linear map, sets -53 to 40 and 53 to 53
|
||||
steer_position_new = ((((player->steerPosition >> 16) * 13) + (13*53)) / (2*53)) + 40;
|
||||
steer_position_new = ((((player->steerPosition >> 16) * 13) + (13 * 53)) / (2 * 53)) + 40;
|
||||
player->steerPosition = steer_position_new << 16;
|
||||
}
|
||||
if ((player->unk_0C0 / DEGREES_CONVERSION_FACTOR) < 0) {
|
||||
// linear map, sets -53 to -53 and 53 to -40
|
||||
steer_position_new = ((((player->steerPosition >> 16) * 13) + (13*53)) / (2*53)) - 53;
|
||||
steer_position_new = ((((player->steerPosition >> 16) * 13) + (13 * 53)) / (2 * 53)) - 53;
|
||||
player->steerPosition = steer_position_new << 16;
|
||||
}
|
||||
player->effects &= ~DRIFTING_EFFECT;
|
||||
@@ -4393,7 +4491,8 @@ void func_80036DB4(Player* player, Vec3f arg1, Vec3f arg2) {
|
||||
sp20 = player->unk_084;
|
||||
} else {
|
||||
var_f18 = player->unk_208 + ((-(player->speed / 18.0f) * 216.0f) * 1.5) +
|
||||
(((player->steerPosition >> 16) * 0.1) + (-player->currentSpeed * 0.05)) + (-player->unk_20C * 50.0f);
|
||||
(((player->steerPosition >> 16) * 0.1) + (-player->currentSpeed * 0.05)) +
|
||||
(-player->unk_20C * 50.0f);
|
||||
sp20 = player->unk_084;
|
||||
}
|
||||
if ((player->effects & STAR_EFFECT) == STAR_EFFECT) {
|
||||
@@ -4509,7 +4608,6 @@ void func_80037614(Player* player, Vec3f arg1, Vec3f arg2) {
|
||||
arg2[2] = arg1[2];
|
||||
}
|
||||
|
||||
|
||||
void func_8003777C(Player* player, Vec3f arg1, Vec3f arg2) {
|
||||
f32 var_f12;
|
||||
f32 var_f2;
|
||||
@@ -4603,7 +4701,8 @@ void func_80037BB4(Player* player, Vec3f arg1) {
|
||||
arg1[2] = 0.0f;
|
||||
} else {
|
||||
if (player->unk_078 < 0) {
|
||||
if (((player->effects & DRIFT_OUTSIDE_EFFECT) != DRIFT_OUTSIDE_EFFECT) || (player->driftStateCounter >= 100)) {
|
||||
if (((player->effects & DRIFT_OUTSIDE_EFFECT) != DRIFT_OUTSIDE_EFFECT) ||
|
||||
(player->driftStateCounter >= 100)) {
|
||||
player->rotation[1] += player->unk_078;
|
||||
}
|
||||
if (!(player->type & PLAYER_CPU)) {
|
||||
@@ -4616,7 +4715,8 @@ void func_80037BB4(Player* player, Vec3f arg1) {
|
||||
func_80037614(player, sp20, arg1);
|
||||
}
|
||||
} else {
|
||||
if (((player->effects & DRIFT_OUTSIDE_EFFECT) != DRIFT_OUTSIDE_EFFECT) || (player->driftStateCounter >= 100)) {
|
||||
if (((player->effects & DRIFT_OUTSIDE_EFFECT) != DRIFT_OUTSIDE_EFFECT) ||
|
||||
(player->driftStateCounter >= 100)) {
|
||||
player->rotation[1] += player->unk_078;
|
||||
}
|
||||
if (!(player->type & PLAYER_CPU)) {
|
||||
@@ -4693,7 +4793,8 @@ void func_80037CFC(Player* player, struct Controller* controller, s8 playerIndex
|
||||
}
|
||||
}
|
||||
if ((!(player->effects & BOOST_RAMP_ASPHALT_EFFECT)) && (!(player->effects & BOOST_RAMP_WOOD_EFFECT))) {
|
||||
if (((get_clamped_stickY_with_deadzone(controller) < (-0x31)) && (((player->speed / 18.0f) * 216.0f) <= 5.0f)) &&
|
||||
if (((get_clamped_stickY_with_deadzone(controller) < (-0x31)) &&
|
||||
(((player->speed / 18.0f) * 216.0f) <= 5.0f)) &&
|
||||
(controller->button & B_BUTTON)) {
|
||||
player->currentSpeed = 140.0f;
|
||||
player->kartProps |= BACK_UP;
|
||||
@@ -4994,9 +5095,12 @@ void func_80038C6C(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
|
||||
newVelocity[1] = player->velocity[1];
|
||||
newVelocity[2] = player->velocity[2];
|
||||
|
||||
newVelocity[0] += ((((((sp114[0] + spA4) + spF0[0])) - (newVelocity[0] * (0.12 * (player->kartFriction)))) / 6000.0) / 1);
|
||||
newVelocity[2] += ((((((sp114[2] + sp9C) + spF0[2])) - (newVelocity[2] * (0.12 * (player->kartFriction)))) / 6000.0) / 1);
|
||||
newVelocity[1] += ((((((sp114[1] + spA0) + spF0[1])) - (newVelocity[1] * (0.12 * (player->kartFriction)))) / 6000.0) / 1);
|
||||
newVelocity[0] +=
|
||||
((((((sp114[0] + spA4) + spF0[0])) - (newVelocity[0] * (0.12 * (player->kartFriction)))) / 6000.0) / 1);
|
||||
newVelocity[2] +=
|
||||
((((((sp114[2] + sp9C) + spF0[2])) - (newVelocity[2] * (0.12 * (player->kartFriction)))) / 6000.0) / 1);
|
||||
newVelocity[1] +=
|
||||
((((((sp114[1] + spA0) + spF0[1])) - (newVelocity[1] * (0.12 * (player->kartFriction)))) / 6000.0) / 1);
|
||||
if ((player->kartProps & LOSE_GP_RACE) == LOSE_GP_RACE) {
|
||||
player->kartProps &= ~LOSE_GP_RACE;
|
||||
}
|
||||
|
||||
+1
-2
@@ -755,8 +755,7 @@ UNUSED void func_8029ABD4(f32* pos, s16 state) {
|
||||
}
|
||||
|
||||
void func_8029AC18(Camera* camera, Mat4 arg1, struct Actor* arg2) {
|
||||
if (distance_if_visible(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 4000000.0f) <
|
||||
0) {
|
||||
if (distance_if_visible(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 4000000.0f) < 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -1354,12 +1354,12 @@ s32 is_between_angle(u16 angleCCW, u16 angleCW, u16 angleToCheck) {
|
||||
* @param preloadDistanceSquared Consider an object within this distance of viweable area as renderable
|
||||
* @param fovDegrees The field of view (FOV) of the camera (degrees).
|
||||
* @param maxDistanceSquared The maximum render distance.
|
||||
* @return The xz-distance squared between the camera and the object if it's within render distance
|
||||
of the camera's vision, or -1.0f if it exceeds the render distance.
|
||||
* @return The xz-distance squared between the camera and the object if it's within render
|
||||
distance of the camera's vision, or -1.0f if it exceeds the render distance.
|
||||
*/
|
||||
|
||||
f32 distance_if_visible(Vec3f cameraPos, Vec3f objectPos, u16 orientationY, f32 preloadDistanceSquared,
|
||||
f32 fovDegrees, f32 maxDistanceSquared) {
|
||||
f32 distance_if_visible(Vec3f cameraPos, Vec3f objectPos, u16 orientationY, f32 preloadDistanceSquared, f32 fovDegrees,
|
||||
f32 maxDistanceSquared) {
|
||||
u16 angleObject;
|
||||
UNUSED u16 pad;
|
||||
u16 preloadAngle;
|
||||
|
||||
+36
-36
@@ -26,44 +26,44 @@ s32 D_802B8CE4 = 0; // pad
|
||||
s32 memoryPadding[2];
|
||||
|
||||
enum PackedOp {
|
||||
PG_LIGHTS_0 = 0x00, /* 0..0x14 mappés sur unpack_lights */
|
||||
PG_LIGHTS_0 = 0x00, /* 0..0x14 mappés sur unpack_lights */
|
||||
/* Presets de combine renommés pour refléter les macros G_CC_* */
|
||||
PG_SETCOMBINE_CC_MODULATERGBA = 0x15,
|
||||
PG_SETCOMBINE_CC_MODULATERGBA = 0x15,
|
||||
PG_SETCOMBINE_CC_MODULATERGBDECALA = 0x16,
|
||||
PG_SETCOMBINE_CC_SHADE = 0x17,
|
||||
PG_RMODE_OPA = 0x18,
|
||||
PG_RMODE_TEXEDGE = 0x19,
|
||||
PG_TILECFG_A = 0x1A,
|
||||
PG_TILECFG_B = 0x1B,
|
||||
PG_TILECFG_C = 0x1C,
|
||||
PG_TILECFG_D = 0x1D,
|
||||
PG_TILECFG_E = 0x1E,
|
||||
PG_TILECFG_F = 0x1F,
|
||||
PG_TIMG_LOADBLOCK_0 = 0x20,
|
||||
PG_TIMG_LOADBLOCK_1 = 0x21,
|
||||
PG_TIMG_LOADBLOCK_2 = 0x22,
|
||||
PG_TIMG_LOADBLOCK_3 = 0x23,
|
||||
PG_TIMG_LOADBLOCK_4 = 0x24,
|
||||
PG_TIMG_LOADBLOCK_5 = 0x25,
|
||||
PG_TEXTURE_ON = 0x26,
|
||||
PG_TEXTURE_OFF = 0x27,
|
||||
PG_VTX1 = 0x28,
|
||||
PG_TRI1 = 0x29,
|
||||
PG_ENDDL = 0x2A,
|
||||
PG_DL = 0x2B,
|
||||
PG_TILECFG_G = 0x2C,
|
||||
PG_CULLDL = 0x2D,
|
||||
PG_SETCOMBINE_ALT = 0x2E,
|
||||
PG_RMODE_XLU = 0x2F,
|
||||
PG_SPLINE3D = 0x30,
|
||||
PG_VTX_BASE = 0x32, /* 0x33..0x52 → variant vtx2 */
|
||||
PG_SETCOMBINE_CC_DECALRGBA = 0x53,
|
||||
PG_RMODE_OPA_DECAL = 0x54,
|
||||
PG_RMODE_XLU_DECAL = 0x55,
|
||||
PG_SETGEOMETRYMODE = 0x56,
|
||||
PG_CLEARGEOMETRYMODE = 0x57,
|
||||
PG_TRI2 = 0x58,
|
||||
PG_EOF = 0xFF,
|
||||
PG_SETCOMBINE_CC_SHADE = 0x17,
|
||||
PG_RMODE_OPA = 0x18,
|
||||
PG_RMODE_TEXEDGE = 0x19,
|
||||
PG_TILECFG_A = 0x1A,
|
||||
PG_TILECFG_B = 0x1B,
|
||||
PG_TILECFG_C = 0x1C,
|
||||
PG_TILECFG_D = 0x1D,
|
||||
PG_TILECFG_E = 0x1E,
|
||||
PG_TILECFG_F = 0x1F,
|
||||
PG_TIMG_LOADBLOCK_0 = 0x20,
|
||||
PG_TIMG_LOADBLOCK_1 = 0x21,
|
||||
PG_TIMG_LOADBLOCK_2 = 0x22,
|
||||
PG_TIMG_LOADBLOCK_3 = 0x23,
|
||||
PG_TIMG_LOADBLOCK_4 = 0x24,
|
||||
PG_TIMG_LOADBLOCK_5 = 0x25,
|
||||
PG_TEXTURE_ON = 0x26,
|
||||
PG_TEXTURE_OFF = 0x27,
|
||||
PG_VTX1 = 0x28,
|
||||
PG_TRI1 = 0x29,
|
||||
PG_ENDDL = 0x2A,
|
||||
PG_DL = 0x2B,
|
||||
PG_TILECFG_G = 0x2C,
|
||||
PG_CULLDL = 0x2D,
|
||||
PG_SETCOMBINE_ALT = 0x2E,
|
||||
PG_RMODE_XLU = 0x2F,
|
||||
PG_SPLINE3D = 0x30,
|
||||
PG_VTX_BASE = 0x32, /* 0x33..0x52 → variant vtx2 */
|
||||
PG_SETCOMBINE_CC_DECALRGBA = 0x53,
|
||||
PG_RMODE_OPA_DECAL = 0x54,
|
||||
PG_RMODE_XLU_DECAL = 0x55,
|
||||
PG_SETGEOMETRYMODE = 0x56,
|
||||
PG_CLEARGEOMETRYMODE = 0x57,
|
||||
PG_TRI2 = 0x58,
|
||||
PG_EOF = 0xFF,
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -480,11 +480,11 @@ void play_music_for_current_track(s32 track) {
|
||||
case COURSE_BIG_DONUT:
|
||||
play_sequence(SEQ_TRACK_BATTLE);
|
||||
break;
|
||||
|
||||
|
||||
#ifdef AVOID_UB
|
||||
default: //! @BUG: No default case. Enable AVOID_UB for custom tracks.
|
||||
play_sequence(SEQ_TRACK_RACEWAY);
|
||||
break;
|
||||
default: //! @BUG: No default case. Enable AVOID_UB for custom tracks.
|
||||
play_sequence(SEQ_TRACK_RACEWAY);
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@@ -916,7 +916,8 @@ void func_8028FCBC(void) {
|
||||
}
|
||||
switch (D_800DC510) {
|
||||
case 0:
|
||||
if (!gDemoMode) { // If we're not in the demo mode, play the starting fanfare for the current mode (Grand Prix / Time Trials / VS / Battle)
|
||||
if (!gDemoMode) { // If we're not in the demo mode, play the starting fanfare for the current mode (Grand
|
||||
// Prix / Time Trials / VS / Battle)
|
||||
if (gModeSelection == GRAND_PRIX) {
|
||||
play_sequence2(SEQ_EVENT_RACE_STARTING);
|
||||
play_sound2(SOUND_ACTION_REV_ENGINE);
|
||||
|
||||
+13
-10
@@ -1798,7 +1798,6 @@ void render_texture_tile_rgba32_block(s16 x, s16 y, u8* texture, u32 width, u32
|
||||
texSize -= (width * heightDiv * 4);
|
||||
}
|
||||
|
||||
|
||||
centerY += heightDiv;
|
||||
}
|
||||
|
||||
@@ -2470,25 +2469,29 @@ void draw_minimap_character(s32 arg0, s32 playerId, s32 characterId) {
|
||||
f32 thing1;
|
||||
s16 x;
|
||||
s16 y;
|
||||
Player *player = &gPlayerOne[playerId];
|
||||
Player* player = &gPlayerOne[playerId];
|
||||
|
||||
if (player->type & (1 << 15)) {
|
||||
thing0 = player->pos[0] * gMiniMapMarkerScale;
|
||||
thing1 = player->pos[2] * gMiniMapMarkerScale;
|
||||
x = ((gMiniMapFinishLineX[arg0] + D_8018D2F0) - (D_8018D2B0 / 2)) + gMiniMapX + (s16)(thing0);
|
||||
y = ((gMiniMapFinishLineY[arg0] + D_8018D2F8) - (D_8018D2B8 / 2)) + gMiniMapY + (s16)(thing1);
|
||||
x = ((gMiniMapFinishLineX[arg0] + D_8018D2F0) - (D_8018D2B0 / 2)) + gMiniMapX + (s16) (thing0);
|
||||
y = ((gMiniMapFinishLineY[arg0] + D_8018D2F8) - (D_8018D2B8 / 2)) + gMiniMapY + (s16) (thing1);
|
||||
// huh?
|
||||
if (characterId != 8) {
|
||||
if ((gGPCurrentRaceRankByPlayerId[playerId] == 0) && (gModeSelection != 3) && (gModeSelection != 1)) {
|
||||
func_80046424(x, y, player->rotation[1] + 0x8000, 1.0f, (u8*)&common_texture_minimap_kart_mario[characterId * 64], common_vtx_player_minimap_icon, 8, 8, 8, 8);
|
||||
func_80046424(x, y, player->rotation[1] + 0x8000, 1.0f,
|
||||
(u8*) &common_texture_minimap_kart_mario[characterId * 64],
|
||||
common_vtx_player_minimap_icon, 8, 8, 8, 8);
|
||||
} else {
|
||||
func_800463B0(x, y, player->rotation[1] + 0x8000, 1.0f, (u8*)&common_texture_minimap_kart_mario[characterId * 64], common_vtx_player_minimap_icon, 8, 8, 8, 8);
|
||||
func_800463B0(x, y, player->rotation[1] + 0x8000, 1.0f,
|
||||
(u8*) &common_texture_minimap_kart_mario[characterId * 64],
|
||||
common_vtx_player_minimap_icon, 8, 8, 8, 8);
|
||||
}
|
||||
} else {
|
||||
if (gGPCurrentRaceRankByPlayerId[playerId] == 0) {
|
||||
func_8004C450(x, y, 8, 8, (u8 *) common_texture_minimap_progress_dot);
|
||||
func_8004C450(x, y, 8, 8, (u8*) common_texture_minimap_progress_dot);
|
||||
} else {
|
||||
draw_hud_2d_texture(x, y, 8, 8, (u8 *) common_texture_minimap_progress_dot);
|
||||
draw_hud_2d_texture(x, y, 8, 8, (u8*) common_texture_minimap_progress_dot);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2944,14 +2947,14 @@ void func_80050E34(s32 playerId, s32 arg1) {
|
||||
s32 objectIndex;
|
||||
s32 spD0;
|
||||
s32 spCC;
|
||||
Player *dummy = &gPlayerOne[playerId];
|
||||
Player* dummy = &gPlayerOne[playerId];
|
||||
s32 spC4;
|
||||
s32 lapCount;
|
||||
s32 characterId;
|
||||
s32 spB8;
|
||||
s32 temp_v0_2;
|
||||
Object* object;
|
||||
Player *player = &gPlayerOne[playerId];
|
||||
Player* player = &gPlayerOne[playerId];
|
||||
|
||||
lapCount = gLapCountByPlayerId[playerId];
|
||||
characterId = player->characterId;
|
||||
|
||||
+62
-32
@@ -483,7 +483,8 @@ void render_players_on_screen_one(void) {
|
||||
|
||||
s32 junk[] = { 0, 0, 0 };
|
||||
|
||||
Vtx* gPlayerVtx[] = { gPlayerOneVtx, gPlayerTwoVtx, gPlayerThreeVtx, gPlayerFourVtx, gPlayerFiveVtx, gPlayerSixVtx, gPlayerSevenVtx, gPlayerEightVtx };
|
||||
Vtx* gPlayerVtx[] = { gPlayerOneVtx, gPlayerTwoVtx, gPlayerThreeVtx, gPlayerFourVtx,
|
||||
gPlayerFiveVtx, gPlayerSixVtx, gPlayerSevenVtx, gPlayerEightVtx };
|
||||
|
||||
f32 gCharacterSize[] = { MARIO_SIZE, LUIGI_SIZE, YOSHI_SIZE, TOAD_SIZE, DK_SIZE, WARIO_SIZE, PEACH_SIZE, BOWSER_SIZE };
|
||||
|
||||
@@ -1074,8 +1075,8 @@ void change_player_color_effect_rgb(UNUSED Player* player, s8 playerIndex, s32 a
|
||||
gPlayerRedEffect[playerIndex] =
|
||||
(s16) ((f32) gPlayerRedEffect[playerIndex] - ((gPlayerRedEffect[playerIndex] - ((arg2 >> 16) & 0xFF)) * alpha));
|
||||
|
||||
gPlayerGreenEffect[playerIndex] =
|
||||
(s16) ((f32) gPlayerGreenEffect[playerIndex] - ((gPlayerGreenEffect[playerIndex] - ((arg2 >> 8) & 0xFF)) * alpha));
|
||||
gPlayerGreenEffect[playerIndex] = (s16) ((f32) gPlayerGreenEffect[playerIndex] -
|
||||
((gPlayerGreenEffect[playerIndex] - ((arg2 >> 8) & 0xFF)) * alpha));
|
||||
|
||||
gPlayerBlueEffect[playerIndex] =
|
||||
(s16) ((f32) gPlayerBlueEffect[playerIndex] - ((gPlayerBlueEffect[playerIndex] - (arg2 & 0xFF)) * alpha));
|
||||
@@ -1094,10 +1095,14 @@ void change_player_color_effect_cmy(UNUSED Player* player, s8 playerIndex, s32 a
|
||||
bool is_player_under_light_luigi_raceway(Player* player, s8 playerIndex) {
|
||||
switch (gCurrentCourseId) {
|
||||
case COURSE_LUIGI_RACEWAY:
|
||||
if (((gNearestPathPointByPlayerId[playerIndex] >= 0x14F) && (gNearestPathPointByPlayerId[playerIndex] < 0x158)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x15E) && (gNearestPathPointByPlayerId[playerIndex] < 0x164)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x169) && (gNearestPathPointByPlayerId[playerIndex] < 0x170)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x174) && (gNearestPathPointByPlayerId[playerIndex] < 0x17A)) ||
|
||||
if (((gNearestPathPointByPlayerId[playerIndex] >= 0x14F) &&
|
||||
(gNearestPathPointByPlayerId[playerIndex] < 0x158)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x15E) &&
|
||||
(gNearestPathPointByPlayerId[playerIndex] < 0x164)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x169) &&
|
||||
(gNearestPathPointByPlayerId[playerIndex] < 0x170)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x174) &&
|
||||
(gNearestPathPointByPlayerId[playerIndex] < 0x17A)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x17E) &&
|
||||
(gNearestPathPointByPlayerId[playerIndex] < 0x184))) { // under a light in the tunnel
|
||||
change_player_color_effect_rgb(player, playerIndex, COLOR_LIGHT, 0.3f);
|
||||
@@ -1115,18 +1120,26 @@ bool is_player_under_light_luigi_raceway(Player* player, s8 playerIndex) {
|
||||
void render_light_environment_on_player(Player* player, s8 playerIndex) {
|
||||
switch (gCurrentCourseId) {
|
||||
case COURSE_BOWSER_CASTLE:
|
||||
if (((gNearestPathPointByPlayerId[playerIndex] >= 0x15) && (gNearestPathPointByPlayerId[playerIndex] < 0x2A)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x14D) && (gNearestPathPointByPlayerId[playerIndex] < 0x15C)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x1D1) && (gNearestPathPointByPlayerId[playerIndex] < 0x1E4)) ||
|
||||
if (((gNearestPathPointByPlayerId[playerIndex] >= 0x15) &&
|
||||
(gNearestPathPointByPlayerId[playerIndex] < 0x2A)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x14D) &&
|
||||
(gNearestPathPointByPlayerId[playerIndex] < 0x15C)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x1D1) &&
|
||||
(gNearestPathPointByPlayerId[playerIndex] < 0x1E4)) ||
|
||||
(player->collision.surfaceDistance[2] >= 500.0f)) { // over lava
|
||||
change_player_color_effect_rgb(player, playerIndex, COLOR_LAVA, 0.3f);
|
||||
change_player_color_effect_cmy(player, playerIndex, 0x004040, 0.3f);
|
||||
D_80164B80[playerIndex] = 0;
|
||||
} else if (((gNearestPathPointByPlayerId[playerIndex] >= 0xF1) && (gNearestPathPointByPlayerId[playerIndex] < 0xF5)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0xFB) && (gNearestPathPointByPlayerId[playerIndex] < 0xFF)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x105) && (gNearestPathPointByPlayerId[playerIndex] < 0x109)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x10F) && (gNearestPathPointByPlayerId[playerIndex] < 0x113)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x145) && (gNearestPathPointByPlayerId[playerIndex] < 0x14A)) ||
|
||||
} else if (((gNearestPathPointByPlayerId[playerIndex] >= 0xF1) &&
|
||||
(gNearestPathPointByPlayerId[playerIndex] < 0xF5)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0xFB) &&
|
||||
(gNearestPathPointByPlayerId[playerIndex] < 0xFF)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x105) &&
|
||||
(gNearestPathPointByPlayerId[playerIndex] < 0x109)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x10F) &&
|
||||
(gNearestPathPointByPlayerId[playerIndex] < 0x113)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x145) &&
|
||||
(gNearestPathPointByPlayerId[playerIndex] < 0x14A)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x15E) &&
|
||||
(gNearestPathPointByPlayerId[playerIndex] < 0x163))) { // under a lamp
|
||||
change_player_color_effect_rgb(player, playerIndex, COLOR_LIGHT, 0.3f);
|
||||
@@ -1139,23 +1152,40 @@ void render_light_environment_on_player(Player* player, s8 playerIndex) {
|
||||
}
|
||||
break;
|
||||
case COURSE_BANSHEE_BOARDWALK:
|
||||
if (((gNearestPathPointByPlayerId[playerIndex] >= 0xD) && (gNearestPathPointByPlayerId[playerIndex] < 0x15)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x29) && (gNearestPathPointByPlayerId[playerIndex] < 0x39)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x46) && (gNearestPathPointByPlayerId[playerIndex] < 0x4E)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x5F) && (gNearestPathPointByPlayerId[playerIndex] < 0x67)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x7B) && (gNearestPathPointByPlayerId[playerIndex] < 0x86)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x9D) && (gNearestPathPointByPlayerId[playerIndex] < 0xA6)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0xB9) && (gNearestPathPointByPlayerId[playerIndex] < 0xC3)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0xB9) && (gNearestPathPointByPlayerId[playerIndex] < 0xC3)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0xD7) && (gNearestPathPointByPlayerId[playerIndex] < 0xE1)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x10E) && (gNearestPathPointByPlayerId[playerIndex] < 0x119)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x154) && (gNearestPathPointByPlayerId[playerIndex] < 0x15F)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x1EF) && (gNearestPathPointByPlayerId[playerIndex] < 0x1F7)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x202) && (gNearestPathPointByPlayerId[playerIndex] < 0x209)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x216) && (gNearestPathPointByPlayerId[playerIndex] < 0x21D)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x230) && (gNearestPathPointByPlayerId[playerIndex] < 0x23A)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x24C) && (gNearestPathPointByPlayerId[playerIndex] < 0x256)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x288) && (gNearestPathPointByPlayerId[playerIndex] < 0x269)) ||
|
||||
if (((gNearestPathPointByPlayerId[playerIndex] >= 0xD) &&
|
||||
(gNearestPathPointByPlayerId[playerIndex] < 0x15)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x29) &&
|
||||
(gNearestPathPointByPlayerId[playerIndex] < 0x39)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x46) &&
|
||||
(gNearestPathPointByPlayerId[playerIndex] < 0x4E)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x5F) &&
|
||||
(gNearestPathPointByPlayerId[playerIndex] < 0x67)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x7B) &&
|
||||
(gNearestPathPointByPlayerId[playerIndex] < 0x86)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x9D) &&
|
||||
(gNearestPathPointByPlayerId[playerIndex] < 0xA6)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0xB9) &&
|
||||
(gNearestPathPointByPlayerId[playerIndex] < 0xC3)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0xB9) &&
|
||||
(gNearestPathPointByPlayerId[playerIndex] < 0xC3)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0xD7) &&
|
||||
(gNearestPathPointByPlayerId[playerIndex] < 0xE1)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x10E) &&
|
||||
(gNearestPathPointByPlayerId[playerIndex] < 0x119)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x154) &&
|
||||
(gNearestPathPointByPlayerId[playerIndex] < 0x15F)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x1EF) &&
|
||||
(gNearestPathPointByPlayerId[playerIndex] < 0x1F7)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x202) &&
|
||||
(gNearestPathPointByPlayerId[playerIndex] < 0x209)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x216) &&
|
||||
(gNearestPathPointByPlayerId[playerIndex] < 0x21D)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x230) &&
|
||||
(gNearestPathPointByPlayerId[playerIndex] < 0x23A)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x24C) &&
|
||||
(gNearestPathPointByPlayerId[playerIndex] < 0x256)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x288) &&
|
||||
(gNearestPathPointByPlayerId[playerIndex] < 0x269)) ||
|
||||
((gNearestPathPointByPlayerId[playerIndex] >= 0x274) &&
|
||||
(gNearestPathPointByPlayerId[playerIndex] < 0x27E))) { // under a lamp
|
||||
change_player_color_effect_rgb(player, playerIndex, COLOR_LIGHT, 0.3f);
|
||||
|
||||
+7
-7
@@ -330,10 +330,10 @@ s32 func_800B5218(void) {
|
||||
fastestLapIndex = 0;
|
||||
character = *gCharacterSelections;
|
||||
for (checkLapIndex = 1; checkLapIndex != 3; checkLapIndex++) {
|
||||
if ((s32)playerHUD->lapDurations[checkLapIndex] < (s32)playerHUD->lapDurations[fastestLapIndex]) {
|
||||
if ((s32) playerHUD->lapDurations[checkLapIndex] < (s32) playerHUD->lapDurations[fastestLapIndex]) {
|
||||
lapBitmask = 1 << checkLapIndex;
|
||||
fastestLapIndex = checkLapIndex;
|
||||
} else if ((s32)playerHUD->lapDurations[fastestLapIndex] == (s32)playerHUD->lapDurations[checkLapIndex]) {
|
||||
} else if ((s32) playerHUD->lapDurations[fastestLapIndex] == (s32) playerHUD->lapDurations[checkLapIndex]) {
|
||||
lapBitmask |= 1 << checkLapIndex;
|
||||
}
|
||||
}
|
||||
@@ -471,7 +471,7 @@ void func_800B559C(s32 arg0) {
|
||||
* But only unknown bytes 7 and 8 ever get set, so why the extra 3, and why in chunks of 17?
|
||||
**/
|
||||
u8 func_800B578C(s32 arg0) {
|
||||
u8* times = (u8*)&gSaveData.onlyBestTimeTrialRecords[arg0];
|
||||
u8* times = (u8*) &gSaveData.onlyBestTimeTrialRecords[arg0];
|
||||
s32 checksum = 0;
|
||||
s32 i;
|
||||
s32 j;
|
||||
@@ -952,14 +952,14 @@ u8 func_800B6828(s32 arg0) {
|
||||
|
||||
u8 func_800B68F4(s32 arg0) {
|
||||
struct_8018EE10_entry* var_v0 = gSomeDLBuffer;
|
||||
u8 *addr = (u8*)(var_v0 + arg0);
|
||||
u8* addr = (u8*) (var_v0 + arg0);
|
||||
s32 i = 0;
|
||||
u32 checksum = 0;
|
||||
|
||||
for (i = 0; i < (s32)offsetof(struct_8018EE10_entry, pad_43); i++) {
|
||||
|
||||
for (i = 0; i < (s32) offsetof(struct_8018EE10_entry, pad_43); i++) {
|
||||
checksum += (addr[i] * (arg0 + 1)) + i;
|
||||
}
|
||||
|
||||
|
||||
return checksum;
|
||||
}
|
||||
|
||||
|
||||
@@ -6738,11 +6738,12 @@ void update_crabs(void) {
|
||||
}
|
||||
|
||||
void func_80082F1C(s32 objectIndex, s32 arg1) {
|
||||
gObjectList[objectIndex].model = (Gfx*)d_course_yoshi_valley_unk5;
|
||||
gObjectList[objectIndex].vertex = (Vtx*)d_course_yoshi_valley_unk4;
|
||||
gObjectList[objectIndex].model = (Gfx*) d_course_yoshi_valley_unk5;
|
||||
gObjectList[objectIndex].vertex = (Vtx*) d_course_yoshi_valley_unk4;
|
||||
gObjectList[objectIndex].sizeScaling = 0.027f;
|
||||
object_next_state(objectIndex);
|
||||
set_obj_origin_pos(objectIndex, D_800E5DF4[arg1 * 4 + 0] * xOrientation, D_800E5DF4[arg1 * 4 + 1], D_800E5DF4[arg1 * 4 + 2]);
|
||||
set_obj_origin_pos(objectIndex, D_800E5DF4[arg1 * 4 + 0] * xOrientation, D_800E5DF4[arg1 * 4 + 1],
|
||||
D_800E5DF4[arg1 * 4 + 2]);
|
||||
set_obj_origin_offset(objectIndex, 0.0f, 0.0f, 0.0f);
|
||||
set_obj_direction_angle(objectIndex, 0U, D_800E5DF4[arg1 * 4 + 3], 0U);
|
||||
}
|
||||
@@ -7807,7 +7808,8 @@ void func_80085F74(s32 objectIndex) {
|
||||
}
|
||||
|
||||
void func_80086074(s32 objectIndex, s32 arg1) {
|
||||
set_obj_origin_pos(objectIndex, D_800E6734[arg1 * 3 + 0] * xOrientation, D_800E6734[arg1 * 3 + 1], D_800E6734[arg1 * 3 + 2]);
|
||||
set_obj_origin_pos(objectIndex, D_800E6734[arg1 * 3 + 0] * xOrientation, D_800E6734[arg1 * 3 + 1],
|
||||
D_800E6734[arg1 * 3 + 2]);
|
||||
init_texture_object(objectIndex, &d_course_rainbow_road_static_tluts[arg1 * 256],
|
||||
&d_course_rainbow_road_static_textures[arg1], 64, 64);
|
||||
func_80085BB4(objectIndex);
|
||||
|
||||
Reference in New Issue
Block a user