Clang Format

This commit is contained in:
MegaMech
2026-04-18 00:13:25 +00:00
committed by github-actions[bot]
parent 8ee86d4c78
commit fe21bb8288
44 changed files with 947 additions and 762 deletions
+7 -1
View File
@@ -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
View File
@@ -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) \
{ \
+5 -4
View File
@@ -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
View File
@@ -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
+1 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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
+2 -2
View File
@@ -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;
+1 -2
View File
@@ -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;
}
+1 -1
View File
@@ -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;
}
+2 -2
View File
@@ -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;
+1 -1
View File
@@ -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;
+1 -2
View File
@@ -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;
+1 -2
View File
@@ -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)) {
+2 -2
View File
@@ -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);
+1 -2
View File
@@ -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;
}
+2 -2
View File
@@ -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)) {
+6 -6
View File
@@ -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;
+10 -20
View File
@@ -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;
+2 -2
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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);
}
}
+51 -41
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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;
}
+4 -4
View File
@@ -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
View File
@@ -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,
};
/**
+6 -5
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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;
}
+6 -4
View File
@@ -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);