mirror of
https://github.com/izzy2lost/Diddy-Kong-Racing.git
synced 2026-06-19 01:16:26 -07:00
Add a few NON_EQUIVALENT functions from scratches to keep them up to date (#602)
* WIP func_800101AC * WIP func_800452A0 * cleanup * Formatter and func_8004CC20 near match * func_8004CC20 better score and documentation * func_80049794 WIP and compilable * Major cleanup of func_80049794 * Formatter * Update scratch * Add func_80019808 from scratch * Cleanup func_80019808 * func_80019808 score improvment * Improve func_80049794 score (Thanks Dominik!) * func_8001C6C4 WIP * func_8001E93C WIP * small documenting * Eliminate a lot of Obj64 casts.
This commit is contained in:
@@ -885,6 +885,12 @@ typedef struct LevelObjectEntry_Hud {
|
||||
s32 offsetY;
|
||||
} LevelObjectEntry_Hud;
|
||||
|
||||
typedef struct LevelObjectEntry_BHV_UNK_5C {
|
||||
LevelObjectEntryCommon common;
|
||||
s8 unk8;
|
||||
s8 unk9;
|
||||
} LevelObjectEntry_BHV_UNK_5C;
|
||||
|
||||
typedef struct LevelObjectEntry {
|
||||
union {
|
||||
LevelObjectEntry_Racer racer;
|
||||
@@ -978,6 +984,7 @@ typedef struct LevelObjectEntry {
|
||||
LevelObjectEntry_WavePower wavePower;
|
||||
LevelObjectEntry_CharacterSelect characterSelect;
|
||||
LevelObjectEntry_Hud hud;
|
||||
LevelObjectEntry_BHV_UNK_5C bhv_unk_5C;
|
||||
};
|
||||
} LevelObjectEntry;
|
||||
|
||||
|
||||
+14
-8
@@ -1537,12 +1537,17 @@ typedef struct Object_FogChanger {
|
||||
typedef struct Object_NPC {
|
||||
/* 0x00 */ f32 unk0;
|
||||
/* 0x04 */ f32 animFrameF;
|
||||
/* 0x08 */ s32 unk8;
|
||||
/* 0x0C */ s8 nodeBack1; // One node backwards
|
||||
/* 0x0D */ u8 nodeCurrent; // Intended target node
|
||||
/* 0x0E */ u8 nodeBack2; // Two nodes backward
|
||||
/* 0x0F */ u8 nodeForward1; // One node forward
|
||||
/* 0x10 */ u8 nodeForward2; // Two nodes forward
|
||||
/* 0x08 */ f32 unk8;
|
||||
union {
|
||||
/* 0x0C */ u8 nodeData[5];
|
||||
struct {
|
||||
/* 0x0C */ s8 nodeBack1; // One node backwards
|
||||
/* 0x0D */ u8 nodeCurrent; // Intended target node
|
||||
/* 0x0E */ u8 nodeBack2; // Two nodes backward
|
||||
/* 0x0F */ u8 nodeForward1; // One node forward
|
||||
/* 0x10 */ u8 nodeForward2; // Two nodes forward
|
||||
};
|
||||
};
|
||||
/* 0x11 */ u8 fogR;
|
||||
/* 0x12 */ u8 fogG;
|
||||
/* 0x13 */ u8 fogB;
|
||||
@@ -1596,7 +1601,7 @@ typedef struct Object_Log {
|
||||
|
||||
typedef struct Object_Fireball_Octoweapon {
|
||||
u8 pad0[0x1C];
|
||||
SoundHandle soundMask;
|
||||
struct AudioPoint *soundMask;
|
||||
} Object_Fireball_Octoweapon;
|
||||
|
||||
typedef struct Object_AnimatedObject {
|
||||
@@ -1722,6 +1727,7 @@ typedef struct Object_68_38 {
|
||||
typedef struct Object_68 {
|
||||
/* 0x00 */ union {
|
||||
ObjectModel *objModel;
|
||||
Sprite *sprite;
|
||||
TextureHeader *texHeader;
|
||||
};
|
||||
/* 0x04 */ Vertex *vertices[3];
|
||||
@@ -1845,7 +1851,7 @@ typedef struct Object {
|
||||
/* 0x0064 */ Object_64 *unk64; //player + 0x98
|
||||
/* 0x0068 */ Object_68 **unk68; //player + 0x80
|
||||
/* 0x006C */ struct ParticleEmitter *particleEmitter; //player + 0x370
|
||||
/* 0x0070 */ Object_LightData **lightData;
|
||||
/* 0x0070 */ struct ObjectLight **lightData;
|
||||
/* 0x0074 */ u32 particleEmittersEnabled;
|
||||
/* 0x0078 */ ObjProperties properties;
|
||||
/* 0x0080 */ void *unk80;
|
||||
|
||||
+2
-1
@@ -106,10 +106,11 @@ MtxF gCurrentModelMatrixS;
|
||||
|
||||
/******************************/
|
||||
|
||||
extern s32 D_B0000578; // Used as a symbol for anti-piracy checks in the game.
|
||||
|
||||
/**
|
||||
* Official Name: camInit
|
||||
*/
|
||||
extern s32 D_B0000578;
|
||||
void cam_init(void) {
|
||||
s32 i;
|
||||
s32 j;
|
||||
|
||||
+18
-17
@@ -704,7 +704,7 @@ void hud_render_player(Gfx **dList, Mtx **mtx, Vertex **vertexList, Object *obj,
|
||||
}
|
||||
}
|
||||
if (gShowHUD == FALSE) {
|
||||
racer = (Object_Racer *) obj->unk64;
|
||||
racer = &obj->unk64->racer;
|
||||
if (D_8012718A) {
|
||||
gHudController = 1 - racer->playerIndex;
|
||||
} else {
|
||||
@@ -1251,7 +1251,7 @@ void hud_main_battle(s32 countdown, Object *obj, s32 updateRate) {
|
||||
s32 racersFinished;
|
||||
s32 i;
|
||||
|
||||
racer = (Object_Racer *) obj->unk64;
|
||||
racer = &obj->unk64->racer;
|
||||
if (gNumActivePlayers != 1 || racer->raceFinished == FALSE) {
|
||||
sprite_anim_off(TRUE);
|
||||
hud_race_start(countdown, updateRate);
|
||||
@@ -1395,7 +1395,7 @@ void hud_lives_render(Object_Racer *racer, UNUSED s32 updateRate) {
|
||||
*/
|
||||
void hud_main_boss(s32 countdown, Object *obj, s32 updateRate) {
|
||||
LevelHeader *level;
|
||||
Object_Racer *racer = (Object_Racer *) obj->unk64;
|
||||
Object_Racer *racer = &obj->unk64->racer;
|
||||
|
||||
sprite_anim_off(TRUE);
|
||||
hud_wrong_way(racer, updateRate);
|
||||
@@ -1417,7 +1417,7 @@ void hud_main_boss(s32 countdown, Object *obj, s32 updateRate) {
|
||||
* When racing Taj in the overworld, render most of the basic race hud.
|
||||
*/
|
||||
void hud_main_taj(s32 countdown, Object *obj, s32 updateRate) {
|
||||
Object_Racer *racer = (Object_Racer *) obj->unk64;
|
||||
Object_Racer *racer = &obj->unk64->racer;
|
||||
|
||||
sprite_anim_off(TRUE);
|
||||
hud_wrong_way(racer, updateRate);
|
||||
@@ -1438,7 +1438,7 @@ void hud_main_hub(Object *obj, s32 updateRate) {
|
||||
HudElement *portrait;
|
||||
|
||||
if (cam_get_viewport_layout() == PLAYER_ONE) {
|
||||
racer = (Object_Racer *) obj->unk64;
|
||||
racer = &obj->unk64->racer;
|
||||
sprite_anim_off(TRUE);
|
||||
hud_balloons(racer);
|
||||
hud_speedometre(obj, updateRate);
|
||||
@@ -1820,7 +1820,7 @@ void hud_speedometre(Object *obj, UNUSED s32 updateRate) {
|
||||
|
||||
if (gNumActivePlayers == 1) {
|
||||
if (!check_if_showing_cutscene_camera()) {
|
||||
racer = (Object_Racer *) obj->unk64;
|
||||
racer = &obj->unk64->racer;
|
||||
if (racer->raceFinished == FALSE) {
|
||||
if (racer->vehicleID == VEHICLE_PLANE) {
|
||||
vel = sqrtf((obj->segment.x_velocity * obj->segment.x_velocity) +
|
||||
@@ -3031,7 +3031,7 @@ void hud_weapon(Object *obj, s32 updateRate) {
|
||||
Object_Racer *racer;
|
||||
s32 temp_a0;
|
||||
|
||||
racer = (Object_Racer *) obj->unk64;
|
||||
racer = &obj->unk64->racer;
|
||||
if (racer->raceFinished == FALSE) {
|
||||
enable_pal_viewport_height_adjust(TRUE);
|
||||
temp_a0 = (racer->balloon_type * 3) + (racer->balloon_level);
|
||||
@@ -3526,7 +3526,7 @@ void hud_render_general(Gfx **dList, Mtx **mtx, Vertex **vtx, s32 updateRate) {
|
||||
spBC = gCurrentHud->entry[HUD_TREASURE_METRE].pos.y;
|
||||
racerGroup = get_racer_objects(&racerCount);
|
||||
for (sp144 = 0; sp144 < racerCount; sp144++) {
|
||||
someRacer = (Object_Racer *) racerGroup[sp144]->unk64;
|
||||
someRacer = &racerGroup[sp144]->unk64->racer;
|
||||
hud_treasure(someRacer);
|
||||
if (osTvType == OS_TV_TYPE_PAL) {
|
||||
gCurrentHud->entry[HUD_CHALLENGE_PORTRAIT].pos.y += 66.0;
|
||||
@@ -3586,7 +3586,7 @@ void hud_render_general(Gfx **dList, Mtx **mtx, Vertex **vtx, s32 updateRate) {
|
||||
|
||||
sp113 = TRUE;
|
||||
for (i = 0; i < objectCount; i++) {
|
||||
someRacer = (Object_Racer *) objectGroup[i]->unk64;
|
||||
someRacer = &objectGroup[i]->unk64->racer;
|
||||
if (someRacer != NULL && someRacer->playerIndex != PLAYER_COMPUTER && someRacer->raceFinished == FALSE) {
|
||||
sp113 = FALSE;
|
||||
}
|
||||
@@ -3708,7 +3708,7 @@ void hud_render_general(Gfx **dList, Mtx **mtx, Vertex **vtx, s32 updateRate) {
|
||||
// Non AI players get an arrow instead of a blob that rotates.
|
||||
for (i = objectCount - 1; i >= 0; i--) {
|
||||
temp_v0_8 = objectGroup[i];
|
||||
someRacer = (Object_Racer *) objectGroup[i]->unk64;
|
||||
someRacer = &objectGroup[i]->unk64->racer;
|
||||
if (someRacer != NULL) {
|
||||
minimap_marker_pos(objectGroup[i]->segment.trans.x_position, objectGroup[i]->segment.trans.z_position,
|
||||
sp114, sp118, sp11C);
|
||||
@@ -3811,7 +3811,7 @@ void minimap_marker_pos(f32 x, f32 z, f32 angleSin, f32 angleCos, f32 modelAspec
|
||||
* deciding to draw a texture rectangle, ortho tris, or a 3D model entirely.
|
||||
*/
|
||||
void hud_element_render(Gfx **dList, Mtx **mtx, Vertex **vtxList, HudElement *hud) {
|
||||
TextureHeader **textureHeader3;
|
||||
ObjectModel **objModels;
|
||||
TextureHeader *textureHeader2;
|
||||
TextureHeader *textureHeader;
|
||||
Camera *camera;
|
||||
@@ -3949,7 +3949,7 @@ void hud_element_render(Gfx **dList, Mtx **mtx, Vertex **vtxList, HudElement *hu
|
||||
sp48.drawTexture.yOffset = 0;
|
||||
sp48.unk8 = 0;
|
||||
texrect_draw_scaled(&gHudDL, &sp48.drawTexture, hud->pos.x, hud->pos.y, hud->scale, hud->scale, gHudColour,
|
||||
1);
|
||||
TEXRECT_POINT);
|
||||
rendermode_reset(&gHudDL);
|
||||
}
|
||||
} else if (gAssetHudElementIds[spriteID] & ASSET_MASK_SPRITE) {
|
||||
@@ -3973,14 +3973,15 @@ void hud_element_render(Gfx **dList, Mtx **mtx, Vertex **vtxList, HudElement *hu
|
||||
} else {
|
||||
mtx_cam_push(&gHudDL, &gHudMtx, (ObjectTransform *) hud, 1.0f, 0.0f);
|
||||
if (0) {}
|
||||
textureHeader3 = gAssetHudElements->entry[hud->spriteID];
|
||||
hud_draw_model((ObjectModel *) *textureHeader3);
|
||||
objModels = gAssetHudElements->entry[hud->spriteID];
|
||||
hud_draw_model(*objModels);
|
||||
mtx_pop(&gHudDL);
|
||||
}
|
||||
spriteID = hud->spriteID;
|
||||
if (spriteID != 0x28) {
|
||||
if ((spriteID != 0xE) && (spriteID != 0x1B) && ((spriteID < 0x2F) || (spriteID >= 0x36)) &&
|
||||
(spriteID != 0x2E) && (gMinimapXlu & 1)) {
|
||||
if (spriteID != HUD_SPRITE_PRO_AM) {
|
||||
if (spriteID != HUD_SPRITE_MAP_DOT && spriteID != HUD_SPRITE_MAP_ARROW &&
|
||||
(spriteID < HUD_ASSET_47 || spriteID >= HUD_ASSET_54) && spriteID != HUD_SPRITE_SPEEDOMETRE_ARROW &&
|
||||
gMinimapXlu & 1) {
|
||||
hud->pos.y -= objEntry.offsetY;
|
||||
}
|
||||
hud->pos.x -= gHudOffsetX + gHudBounceX;
|
||||
|
||||
+10
-10
@@ -2152,17 +2152,18 @@ void func_8007FFEC(s32 numberOfPanels) {
|
||||
vertexSize = sizeof(Vertex) * (20 * numberOfPanels);
|
||||
triangleCount = sizeof(Triangle) * (10 * numberOfPanels);
|
||||
|
||||
gWoodPanelTriangles[0] = (Triangle *)mempool_alloc_safe(((vertexSize + triangleCount) * 2) + menuGeometrySize, COLOUR_TAG_WHITE);
|
||||
gWoodPanelTriangles[1] = (Triangle *)((u32)gWoodPanelTriangles[0] + triangleCount);
|
||||
gWoodPanelTriangles[0] =
|
||||
(Triangle *) mempool_alloc_safe(((vertexSize + triangleCount) * 2) + menuGeometrySize, COLOUR_TAG_WHITE);
|
||||
gWoodPanelTriangles[1] = (Triangle *) ((u32) gWoodPanelTriangles[0] + triangleCount);
|
||||
|
||||
gMenuGeometry = (unk80080BC8 *)((u32)gWoodPanelTriangles[1] + triangleCount);
|
||||
gMenuGeometry = (unk80080BC8 *) ((u32) gWoodPanelTriangles[1] + triangleCount);
|
||||
|
||||
gWoodPanelVertices[0] = (Vertex *)((u32)gMenuGeometry + menuGeometrySize);
|
||||
gWoodPanelVertices[1] = (Vertex *)((u32)gWoodPanelVertices[0] + vertexSize);
|
||||
gWoodPanelVertices[0] = (Vertex *) ((u32) gMenuGeometry + menuGeometrySize);
|
||||
gWoodPanelVertices[1] = (Vertex *) ((u32) gWoodPanelVertices[0] + vertexSize);
|
||||
|
||||
panelIndex = 0;
|
||||
triangleCount = 0;
|
||||
for(i = 0; i < numberOfPanels; i++) {
|
||||
for (i = 0; i < numberOfPanels; i++) {
|
||||
gMenuGeometry[i].vertices[0] = &gWoodPanelVertices[0][panelIndex];
|
||||
gMenuGeometry[i].vertices[1] = &gWoodPanelVertices[1][panelIndex];
|
||||
gMenuGeometry[i].triangles[0] = &gWoodPanelTriangles[0][triangleCount];
|
||||
@@ -2176,10 +2177,10 @@ void func_8007FFEC(s32 numberOfPanels) {
|
||||
}
|
||||
|
||||
triItemIndex = 0;
|
||||
for(i = 0; i < numberOfPanels; i++) {
|
||||
for (i = 0; i < numberOfPanels; i++) {
|
||||
panelIndex = 0;
|
||||
for(IndicesIndex = 0; IndicesIndex < 10; triItemIndex++, panelIndex += 3, IndicesIndex++) {
|
||||
for(triListIndex = 0; triListIndex < 2; triListIndex++) {
|
||||
for (IndicesIndex = 0; IndicesIndex < 10; triItemIndex++, panelIndex += 3, IndicesIndex++) {
|
||||
for (triListIndex = 0; triListIndex < 2; triListIndex++) {
|
||||
gWoodPanelTriangles[triListIndex][triItemIndex].verticesArray[0] = BACKFACE_DRAW;
|
||||
gWoodPanelTriangles[triListIndex][triItemIndex].verticesArray[1] = gWoodPanelsIndices[panelIndex];
|
||||
gWoodPanelTriangles[triListIndex][triItemIndex].verticesArray[2] = gWoodPanelsIndices[panelIndex + 1];
|
||||
@@ -2198,7 +2199,6 @@ void func_8007FFEC(s32 numberOfPanels) {
|
||||
gWoodPanelAllocCount = numberOfPanels;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Resize the UV's of the menu panels.
|
||||
*/
|
||||
|
||||
+2
-1
@@ -662,6 +662,7 @@ void rankings_render_order(s32 updateRate);
|
||||
void results_render(UNUSED s32 updateRate, f32 opacity);
|
||||
void func_80092188(s32 updateRate);
|
||||
SIDeviceStatus func_80087F14(s32 *controllerIndex, s32 xAxisDirection);
|
||||
void postrace_start(s32 finishState, s32 worldID);
|
||||
|
||||
// Non Matching functions below here
|
||||
void load_menu_text(s32 language); // Non Matching
|
||||
@@ -678,7 +679,7 @@ void dialogue_tt_gamestatus(void);
|
||||
s32 menu_title_screen_loop(s32 updateRate);
|
||||
s32 menu_magic_codes_loop(s32 updateRate);
|
||||
s32 menu_credits_loop(s32 updateRate);
|
||||
void func_8007FFEC(s32 arg0);
|
||||
void func_8007FFEC(s32 numberOfPanels);
|
||||
void set_gIntDisFlag(u8 setting);
|
||||
void init_save_data(void);
|
||||
void func_80080580(Gfx **dList, s32 startX, s32 startY, s32 width, s32 height, s32 borderWidth, s32 borderHeight,
|
||||
|
||||
+119
-119
File diff suppressed because it is too large
Load Diff
@@ -443,8 +443,6 @@ void obj_init_fish(Object *fishObj, LevelObjectEntry_Fish *fishEntry, s32 param)
|
||||
void obj_init_midifade(Object *obj, LevelObjectEntry_MidiFade *entry);
|
||||
void obj_loop_butterfly(Object *butterflyObj, s32 updateRate);
|
||||
s32 ainode_find_nearest(f32 diffX, f32 diffY, f32 diffZ, s32 useElevation);
|
||||
s32 ainode_find_next(s32, s32, s32);
|
||||
f32 func_8001C6C4(Object_64 *, Object *, f32, f32, s32);
|
||||
void func_8000CBF0(Object*, s32);
|
||||
void try_to_collect_egg(Object *, Object_CollectEgg*);
|
||||
|
||||
|
||||
+887
-23
File diff suppressed because it is too large
Load Diff
@@ -501,6 +501,7 @@ void race_transition_adventure(s32 updateRate);
|
||||
void func_8001E4C4(void);
|
||||
void racerfx_alloc(s32 numberOfVertices, s32 numberOfTriangles);
|
||||
s32 func_80014B50(s32 arg0, s32 arg1, f32 arg2, u32 arg3);
|
||||
s32 ainode_find_next(s32 nodeId, s32 nextNodeId, s32 direction);
|
||||
|
||||
/**
|
||||
* Faster variant of the shading function for objects.
|
||||
@@ -542,5 +543,6 @@ void obj_update(s32 updateRate);
|
||||
void func_800159C8(Object *, Object *);
|
||||
void obj_door_number(ObjectModel *, Object *);
|
||||
s16 func_8001CD28(s32 arg0, s32 arg1, s32 arg2, s32 arg3); // NON MATCHING
|
||||
f32 func_8001C6C4(Object_NPC *, Object *, f32, f32, s32);
|
||||
|
||||
#endif
|
||||
|
||||
+1448
-34
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -227,7 +227,7 @@ void update_car_velocity_offground(Object *obj, Object_Racer *racer, s32, f32);
|
||||
s32 func_80017248(void*, s32, s32*, Vec3f*, f32*, f32*, s8* surface);
|
||||
void func_80059208(Object* obj, Object_Racer* racer, s32 updateRate); /* extern */
|
||||
void func_80049794(s32 updateRate, f32 updateRateF, Object* obj, Object_Racer* racer); /* extern */
|
||||
void func_8004CC20(s32 updateRate, f32 updateRateF, Object* obj, Object_Racer* racer); /* extern */
|
||||
void func_8004CC20(s32 updateRate, f32 updateRateF, Object *racerObj, Object_Racer *racer); /* extern */
|
||||
void func_8004447C(Object *aiRacerObj, Object_Racer *aiRacer, s32 updateRate);
|
||||
void func_800452A0(Object *obj, Object_Racer *racer, s32 updateRate);
|
||||
void func_80045C48(Object *obj, Object_Racer *racer, s32 updateRate);
|
||||
|
||||
+1
-1
@@ -2369,7 +2369,7 @@ s32 check_if_in_draw_range(Object *obj) {
|
||||
case BHV_HIT_TESTER_2: // animated objects?
|
||||
case BHV_ANIMATED_OBJECT_2: // space ships
|
||||
obj64 = obj->unk64;
|
||||
obj->segment.object.opacity = obj64->wizpig2.pad0[0x42];
|
||||
obj->segment.object.opacity = obj64->animation.unk42;
|
||||
break;
|
||||
case BHV_PARK_WARDEN:
|
||||
case BHV_GOLDEN_BALLOON:
|
||||
|
||||
+1
-1
@@ -191,7 +191,7 @@ void update_bluey(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *ra
|
||||
if (obj->segment.object.animationID == ANIM_BLUEY_TURN) {
|
||||
racer->headAngleTarget = 0;
|
||||
}
|
||||
racer = (Object_Racer *) firstRacerObj->unk64;
|
||||
racer = &firstRacerObj->unk64->racer;
|
||||
if (obj == firstRacerObj->interactObj->obj && firstRacerObj->interactObj->flags & INTERACT_FLAGS_PUSHING &&
|
||||
obj->segment.object.animationID == ANIM_BLUEY_WALK) {
|
||||
racer->attackType = ATTACK_SQUISHED;
|
||||
|
||||
@@ -167,7 +167,7 @@ void update_bubbler(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *
|
||||
racer->headAngleTarget >>= 1;
|
||||
}
|
||||
}
|
||||
racer = (Object_Racer *) firstRacerObj->unk64;
|
||||
racer = &firstRacerObj->unk64->racer;
|
||||
if (obj == firstRacerObj->interactObj->obj && firstRacerObj->interactObj->flags & INTERACT_FLAGS_PUSHING &&
|
||||
obj->segment.object.animationID == ANIM_BUBBLER_MOVE) {
|
||||
racer->attackType = ATTACK_SQUISHED;
|
||||
|
||||
@@ -134,7 +134,7 @@ void update_rocket(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r
|
||||
if (*startTimer != 100) {
|
||||
someObj = racerfx_get_boost(BOOST_DEFAULT);
|
||||
if (someObj != NULL) {
|
||||
rocket = (Object_WizpigRocket *) someObj->unk64;
|
||||
rocket = &someObj->unk64->wizpigRocket;
|
||||
someObj->properties.racer.unk0 = 0;
|
||||
if (rocket != NULL) {
|
||||
rocket->unk72 += updateRate;
|
||||
@@ -145,7 +145,7 @@ void update_rocket(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r
|
||||
}
|
||||
}
|
||||
firstRacerObj = get_racer_object(PLAYER_ONE);
|
||||
racer = (Object_Racer *) firstRacerObj->unk64;
|
||||
racer = &firstRacerObj->unk64->racer;
|
||||
if (obj == firstRacerObj->interactObj->obj && firstRacerObj->interactObj->flags & INTERACT_FLAGS_PUSHING &&
|
||||
obj->segment.object.animationID == ANIM_ROCKET_DAMAGE) {
|
||||
racer->attackType = ATTACK_SQUISHED;
|
||||
|
||||
@@ -260,7 +260,7 @@ void update_smokey(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r
|
||||
racer->headAngleTarget >>= 1;
|
||||
}
|
||||
}
|
||||
racer = (Object_Racer *) firstRacerObj->unk64;
|
||||
racer = &firstRacerObj->unk64->racer;
|
||||
if (obj == firstRacerObj->interactObj->obj && firstRacerObj->interactObj->flags & INTERACT_FLAGS_PUSHING &&
|
||||
obj->segment.object.animationID == ANIM_SMOKEY_RUN) {
|
||||
racer->attackType = ATTACK_SQUISHED;
|
||||
|
||||
@@ -193,7 +193,7 @@ void update_tricky(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r
|
||||
}
|
||||
}
|
||||
// Record the players height record. Falling 400 units below that will trigger a warp.
|
||||
racer = (Object_Racer *) firstRacerObj->unk64;
|
||||
racer = &firstRacerObj->unk64->racer;
|
||||
if (gTrickyRacerPeakHeight < firstRacerObj->segment.trans.y_position) {
|
||||
gTrickyRacerPeakHeight = firstRacerObj->segment.trans.y_position;
|
||||
}
|
||||
|
||||
@@ -232,7 +232,7 @@ void update_wizpig(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r
|
||||
obj_spawn_particle(obj, updateRate);
|
||||
fade_when_near_camera(obj, racer, 40);
|
||||
firstRacerObj = get_racer_object(PLAYER_ONE);
|
||||
racer = (Object_Racer *) firstRacerObj->unk64;
|
||||
racer = &firstRacerObj->unk64->racer;
|
||||
if (obj == firstRacerObj->interactObj->obj && firstRacerObj->interactObj->flags & INTERACT_FLAGS_PUSHING &&
|
||||
obj->segment.object.animationID == ANIM_WIZPIG_WALK) {
|
||||
racer->attackType = ATTACK_SQUISHED;
|
||||
|
||||
@@ -124,6 +124,7 @@ void weather_init(void);
|
||||
void snow_vertices(void);
|
||||
void lensflare_init(Object *);
|
||||
void lensflare_render(Gfx**, Mtx**, Vertex**, Camera*);
|
||||
void lensflare_override_remove(Object *obj);
|
||||
void weather_reset(s32 weatherType, s32 density, s32 velX, s32 velY, s32 velZ, s32 intensity, s32 opacity);
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user