mirror of
https://github.com/n64decomp/mk64
synced 2026-06-05 10:47:39 -04:00
f3788f7ac4
* Decompiled staff_ghosts.c * started on 80296A50.c * Matched some of main.c * Added framebuffers.c * Added structs such as Camera
756 lines
22 KiB
C
756 lines
22 KiB
C
#include <ultra64.h>
|
|
#include <macros.h>
|
|
#include "types.h"
|
|
#include "common_structs.h"
|
|
|
|
extern struct Controller gControllers[];
|
|
extern struct Controller *D_800DC4BC;
|
|
extern struct Controller *D_800DC4C4;
|
|
extern struct Controller *D_800DC4C8;
|
|
extern struct Controller *D_800DC4CC;
|
|
extern struct Controller *D_800DC4D0;
|
|
extern struct Controller *D_800DC4D4;
|
|
|
|
extern unsigned char *D_8015F8C4;
|
|
extern unsigned char *D_8015F8C8;
|
|
extern unsigned char *D_8015F8CC;
|
|
extern u8 D_800DC5EB;
|
|
extern s16 D_8018D8C0[];
|
|
extern s32 D_8016348C;
|
|
extern s8 gCourseSelection;
|
|
extern s32 D_800DC544;
|
|
|
|
extern Player gPlayers[];
|
|
extern Player D_800DC4E0[];
|
|
extern Player D_800DC4DC[];
|
|
extern s32 lapCount[];
|
|
extern s32 D_80150120;
|
|
extern s32 gModeSelection;
|
|
extern s32 gPlayerCountSelection1;
|
|
extern u16 D_802BA048;
|
|
extern s32 D_800DC510;
|
|
|
|
extern s32 D_80150124;
|
|
extern u16 D_800DC5B4;
|
|
extern u16 D_800DC5B0;
|
|
extern u16 D_800DC5B8;
|
|
extern s32 D_800E86A0;
|
|
|
|
extern s32 D_8018EE08;
|
|
extern u16 D_800DC51C;
|
|
extern s32 D_80150118;
|
|
extern u16 D_800DC518;
|
|
extern u16 D_8015011E;
|
|
extern float gCourseTimer;
|
|
extern float D_800DC594;
|
|
extern s32 D_800DC530;
|
|
extern s32 D_8018D2AC;
|
|
extern s32 D_800DC52C;
|
|
extern s16 gCurrentCourseId;
|
|
extern u16 D_80162DD4[];
|
|
extern u16 D_8015F890;
|
|
extern u32 D_800DC5AC;
|
|
extern u16 gEnableDebugMode;
|
|
extern s32 D_800DC5E8;
|
|
extern u16 D_800DC5C0, D_800DC5C4;
|
|
extern s32 D_802B91E0;
|
|
extern s16 D_8015F8F6[];
|
|
|
|
extern f32 D_8015F8D8;
|
|
extern f32 D_802B9254;
|
|
|
|
extern void func_800CA118();
|
|
extern void func_800CA49C();
|
|
extern void func_8028E678();
|
|
extern void func_80009B60();
|
|
|
|
extern void func_800CA330();
|
|
extern void func_800CA388();
|
|
|
|
extern void func_80092630();
|
|
extern void func_8028E438();
|
|
extern void func_800C8EF8();
|
|
extern void play_sound2();
|
|
extern void func_80002DAC();
|
|
extern void func_8005C64C();
|
|
extern void func_8028F914();
|
|
extern void func_802A7940();
|
|
extern void func_802A7728();
|
|
extern void func_80078F64();
|
|
extern void func_800925A0();
|
|
extern void func_8028F4E8();
|
|
extern void func_8028EDA8();
|
|
extern void func_8028E0F0();
|
|
extern void func_8028F3F0();
|
|
extern void func_8028F970();
|
|
extern void func_8028E298();
|
|
extern void func_80092564();
|
|
extern void func_8028F8BC();
|
|
extern void func_800029B0();
|
|
extern void func_800C8EAC();
|
|
extern void func_800074D4();
|
|
extern void func_80005AE8();
|
|
|
|
extern u16 D_8015F894;
|
|
|
|
u16 D_802BA030[2];
|
|
|
|
float D_802BA034;
|
|
|
|
|
|
s32 D_802BA038;
|
|
UNUSED s32 D_802BA03C;
|
|
|
|
|
|
s16 D_802BA040[4];
|
|
u16 D_802BA048;
|
|
|
|
void func_8028DF00(void) {
|
|
struct Controller *controllers = &gControllers[0];
|
|
s32 i;
|
|
for (i = 0; i < 4; i++) {
|
|
D_802BA040[i] = controllers->button;
|
|
controllers++;
|
|
}
|
|
}
|
|
|
|
void func_8028DF38(void) {
|
|
struct Controller *controllers = &gControllers[0];
|
|
s32 i;
|
|
for (i = 0; i < 4; i++) {
|
|
controllers->buttonPressed = (controllers->button & (D_802BA040[i] ^ controllers->button));
|
|
controllers->buttonDepressed = (D_802BA040[i] & (D_802BA040[i] ^ controllers->button));
|
|
controllers->button = D_802BA040[i];
|
|
controllers++;
|
|
}
|
|
}
|
|
|
|
void func_8028E028(void) {
|
|
|
|
switch(gPlayerCountSelection1) {
|
|
case 2:
|
|
*(D_8015F8C4 + D_800DC5E8) += 1;
|
|
break;
|
|
case 3:
|
|
*(D_8015F8C8 + D_800DC5E8) += 1;
|
|
break;
|
|
case 4:
|
|
*(D_8015F8CC + D_800DC5E8) += 1;
|
|
break;
|
|
}
|
|
func_800CA118(D_800DC5EB);
|
|
D_800DC510 = 5;
|
|
D_802BA038 = 10;
|
|
}
|
|
/*
|
|
void func_8028E0F0(void) {
|
|
Player *ply;
|
|
s32 i;
|
|
s16 unk_arr2[4];
|
|
s16 unk_arr[4];
|
|
s16 phi_s1 = 0;
|
|
s16 phi_s2 = 0;
|
|
|
|
for(i = 0; i < 4; i++) {
|
|
ply = (Player *)&gPlayers[i];
|
|
if (!(ply->unk_000 & 0x8000)) {
|
|
continue;
|
|
}
|
|
if (ply->unk_000 & 0x800) {
|
|
continue;
|
|
}
|
|
if (D_8018D8C0[i] < 0) {
|
|
ply->unk_000 |= 0x800;
|
|
unk_arr[phi_s2] = (s16) (ply - D_800DC4DC);
|
|
phi_s2++;
|
|
func_800CA118((u8) i);
|
|
} else {
|
|
unk_arr2[phi_s1] = (s16) (ply - D_800DC4DC);
|
|
phi_s1++;
|
|
}
|
|
}
|
|
if (phi_s1 == 1) {
|
|
D_800DC5E8 = (s32) unk_arr2[0];
|
|
func_8028E028();
|
|
} else if (phi_s1 == 0) {
|
|
D_800DC5E8 = (s32) unk_arr[0];
|
|
func_8028E028();
|
|
}
|
|
}
|
|
*/
|
|
GLOBAL_ASM("asm/non_matchings/code_8028DF00/func_8028E0F0.s")
|
|
|
|
/*
|
|
void func_8028E298(u16 arg2) {
|
|
? *temp_a1;
|
|
f32 temp_f8;
|
|
s32 temp_a0;
|
|
s32 temp_v1;
|
|
u16 temp_a2;
|
|
u16 temp_v0;
|
|
? *phi_a1;
|
|
s32 phi_a0;
|
|
f32 phi_f8;
|
|
u16 phi_a2;
|
|
s32 i;
|
|
phi_a1 = &gPlayers;
|
|
phi_a0 = 0;
|
|
phi_a2 = arg2;
|
|
for (i = 0; i < 8; i++) {
|
|
if ((gPlayers[i].unk_000 & 0x800) == 0) {
|
|
temp_a2 = *(&D_801645B0 + (phi_a0 * 2));
|
|
temp_v1 = phi_a0 * 4;
|
|
temp_v0 = *(&D_801645C8 + (temp_a2 * 2));
|
|
temp_f8 = (f32) temp_v0;
|
|
phi_f8 = temp_f8;
|
|
if ((s32) temp_v0 < 0) {
|
|
phi_f8 = temp_f8 + 4294967296.0f;
|
|
}
|
|
*(&D_8015F898 + temp_v1) = (f32) (gCourseTimer + (((f32) (temp_v0 * (2 - phi_a1->unk8)) + (phi_f8 * (1.0f - *(&D_801644A8 + temp_v1)))) / 15.0f));
|
|
phi_a2 = temp_a2;
|
|
}
|
|
temp_a0 = phi_a0 + 1;
|
|
temp_a1 = phi_a1 + 0xDD8;
|
|
phi_a1 = temp_a1;
|
|
phi_a0 = temp_a0;
|
|
}
|
|
D_8016348C = 1;
|
|
func_800070F4();
|
|
}
|
|
*/
|
|
GLOBAL_ASM("asm/non_matchings/code_8028DF00/func_8028E298.s")
|
|
|
|
void func_8028E3A0(void) {
|
|
|
|
if (D_80150120) {
|
|
|
|
if (gCourseSelection == 3) {
|
|
D_80150124 = 5;
|
|
} else {
|
|
D_800DC544++;
|
|
gCourseSelection++;
|
|
D_80150124 = 4;
|
|
}
|
|
} else {
|
|
D_800DC544++;
|
|
gCourseSelection++;
|
|
D_80150124 = 4;
|
|
}
|
|
}
|
|
|
|
/*
|
|
void func_8028E3A0(void) {
|
|
// Todo: Decomp
|
|
}
|
|
*/
|
|
GLOBAL_ASM("asm/non_matchings/code_8028DF00/func_8028E438.s")
|
|
|
|
/*
|
|
void func_8028E678(void) {
|
|
s32 temp_v0;
|
|
u16 temp_t8;
|
|
|
|
void *temp_v0_10;
|
|
void *temp_v0_11;
|
|
void *temp_v0_12;
|
|
void *temp_v0_13;
|
|
void *temp_v0_14;
|
|
void *temp_v0_15;
|
|
void *temp_v0_16;
|
|
void *temp_v0_17;
|
|
void *temp_v0_18;
|
|
void *temp_v0_2;
|
|
void *temp_v0_3;
|
|
void *temp_v0_4;
|
|
void *temp_v0_5;
|
|
void *temp_v0_6;
|
|
void *temp_v0_7;
|
|
void *temp_v0_8;
|
|
void *temp_v0_9;
|
|
void *temp_v1;
|
|
void *temp_v1_10;
|
|
void *temp_v1_11;
|
|
void *temp_v1_2;
|
|
void *temp_v1_3;
|
|
void *temp_v1_4;
|
|
void *temp_v1_5;
|
|
void *temp_v1_6;
|
|
void *temp_v1_7;
|
|
void *temp_v1_8;
|
|
void *temp_v1_9;
|
|
|
|
s32 phi_a0;
|
|
s32 phi_a0_2;
|
|
void *phi_v0;
|
|
void *phi_v1;
|
|
s32 phi_a0_3;
|
|
s32 phi_a0_4;
|
|
s32 phi_a0_5;
|
|
s32 phi_a0_6;
|
|
s32 phi_a0_7;
|
|
s32 phi_a0_8;
|
|
s32 phi_a0_9;
|
|
s32 phi_a0_10;
|
|
s32 phi_a0_11;
|
|
s32 phi_a0_12;
|
|
|
|
D_800DC5B0 = 1;
|
|
|
|
if (D_8015F894) {
|
|
switch (D_8015F894) {
|
|
case 0:
|
|
if (gModeSelection != 0) {
|
|
|
|
}
|
|
temp_v0 = D_800DC530;
|
|
D_800DC5B8 = 0;
|
|
if (temp_v0 != 0) {
|
|
if (temp_v0 != 1) {
|
|
if (temp_v0 != 2) {
|
|
return;
|
|
}
|
|
D_8015F894 = 6U;
|
|
return;
|
|
}
|
|
D_8015F894 = 5U;
|
|
return;
|
|
}
|
|
D_8015F894 = 1U;
|
|
return;
|
|
case 5:
|
|
temp_v0_2 = D_800DC5EC;
|
|
temp_v0_2->unk2C = (s16) (temp_v0_2->unk2C - 4);
|
|
temp_v1 = D_800DC5F0;
|
|
temp_v1->unk2C = (s16) (temp_v1->unk2C - 4);
|
|
temp_v0_3 = D_800DC5EC;
|
|
temp_v0_3->unk30 = (s16) (temp_v0_3->unk30 - 2);
|
|
temp_v1_2 = D_800DC5F0;
|
|
temp_v1_2->unk30 = (s16) (temp_v1_2->unk30 + 2);
|
|
temp_v0_4 = D_800DC5EC;
|
|
phi_a0_10 = 0;
|
|
if ((s32) temp_v0_4->unk2C < 0xA0) {
|
|
temp_v0_4->unk2C = 0xA0;
|
|
phi_a0_10 = 1;
|
|
}
|
|
temp_v1_3 = D_800DC5F0;
|
|
phi_a0_7 = phi_a0_10;
|
|
if ((s32) temp_v1_3->unk2C < 0xA0) {
|
|
temp_v1_3->unk2C = 0xA0;
|
|
phi_a0_7 = phi_a0_10 + 1;
|
|
}
|
|
temp_v0_5 = D_800DC5EC;
|
|
phi_a0_4 = phi_a0_7;
|
|
if ((s32) temp_v0_5->unk30 < 0x50) {
|
|
temp_v0_5->unk30 = 0x50;
|
|
phi_a0_4 = phi_a0_7 + 1;
|
|
}
|
|
temp_v1_4 = D_800DC5F0;
|
|
phi_a0 = phi_a0_4;
|
|
if ((s32) temp_v1_4->unk30 >= 0xF1) {
|
|
temp_v1_4->unk30 = 0xF0;
|
|
phi_a0 = phi_a0_4 + 1;
|
|
}
|
|
temp_v0_6 = D_800DC5EC;
|
|
D_80150148 = (f32) ((f32) temp_v0_6->unk2C / (f32) temp_v0_6->unk2E);
|
|
if (phi_a0 == 4) {
|
|
D_8015F894 = 3U;
|
|
func_80092500(phi_a0, &D_800DC5EC, &D_800DC5F0, &D_8015F894);
|
|
func_80019DE4();
|
|
func_80041D24();
|
|
return;
|
|
}
|
|
// Duplicate return node #47. Try simplifying control flow for better match
|
|
return;
|
|
case 6:
|
|
temp_v0_7 = D_800DC5EC;
|
|
temp_v0_7->unk2E = (s16) (temp_v0_7->unk2E - 4);
|
|
temp_v1_5 = D_800DC5F0;
|
|
temp_v1_5->unk2E = (s16) (temp_v1_5->unk2E - 4);
|
|
temp_v0_8 = D_800DC5EC;
|
|
temp_v0_8->unk32 = (s16) (temp_v0_8->unk32 - 2);
|
|
temp_v1_6 = D_800DC5F0;
|
|
temp_v1_6->unk32 = (s16) (temp_v1_6->unk32 + 2);
|
|
temp_v0_9 = D_800DC5EC;
|
|
phi_a0_11 = 0;
|
|
if ((s32) temp_v0_9->unk2E < 0x78) {
|
|
temp_v0_9->unk2E = 0x78;
|
|
phi_a0_11 = 1;
|
|
}
|
|
temp_v1_7 = D_800DC5F0;
|
|
phi_a0_8 = phi_a0_11;
|
|
if ((s32) temp_v1_7->unk2E < 0x78) {
|
|
temp_v1_7->unk2E = 0x78;
|
|
phi_a0_8 = phi_a0_11 + 1;
|
|
}
|
|
temp_v0_10 = D_800DC5EC;
|
|
phi_a0_5 = phi_a0_8;
|
|
if ((s32) temp_v0_10->unk32 < 0x3C) {
|
|
temp_v0_10->unk32 = 0x3C;
|
|
phi_a0_5 = phi_a0_8 + 1;
|
|
}
|
|
temp_v1_8 = D_800DC5F0;
|
|
phi_a0_2 = phi_a0_5;
|
|
if ((s32) temp_v1_8->unk32 >= 0xB5) {
|
|
temp_v1_8->unk32 = 0xB4;
|
|
phi_a0_2 = phi_a0_5 + 1;
|
|
}
|
|
temp_v0_11 = D_800DC5EC;
|
|
D_80150148 = (f32) ((f32) temp_v0_11->unk2C / (f32) temp_v0_11->unk2E);
|
|
if (phi_a0_2 == 4) {
|
|
D_8015F894 = 3U;
|
|
func_80092500(phi_a0_2, &D_800DC5EC, &D_800DC5F0, &D_8015F894);
|
|
func_80019DE4();
|
|
return;
|
|
}
|
|
// Duplicate return node #47. Try simplifying control flow for better match
|
|
return;
|
|
case 1:
|
|
temp_v0_12 = D_800DC5EC;
|
|
temp_v0_12->unk2E = (s16) (temp_v0_12->unk2E - 2);
|
|
temp_v0_13 = D_800DC5EC;
|
|
temp_v0_13->unk2C = (s16) ((s32) (temp_v0_13->unk2E * 0x140) / 0xF0);
|
|
temp_v0_14 = D_800DC5EC;
|
|
if ((s32) temp_v0_14->unk2E < 0x78) {
|
|
temp_v0_14->unk2E = 0x78;
|
|
temp_v0_15 = D_800DC5EC;
|
|
temp_v0_15->unk2C = (s16) ((s32) (temp_v0_15->unk2E * 0x140) / 0xF0);
|
|
D_8015F894 = 2U;
|
|
D_800DC5F0->unk2C = (s16) D_800DC5EC->unk2C;
|
|
D_800DC5F0->unk2E = (s16) D_800DC5EC->unk2E;
|
|
D_800DC5F0->unk30 = (s16) D_800DC5EC->unk30;
|
|
D_800DC5F0->unk32 = (s16) D_800DC5EC->unk32;
|
|
D_800DC52C = 2;
|
|
D_80150148 = (f32) D_802B9200;
|
|
gPlayerCountSelection1 = 2;
|
|
func_8003DB5C(0, &D_800DC5EC, &D_800DC5F0, &D_8015F894);
|
|
func_8005994C();
|
|
return;
|
|
}
|
|
// Duplicate return node #47. Try simplifying control flow for better match
|
|
return;
|
|
case 2:
|
|
temp_v0_16 = D_800DC5EC;
|
|
temp_v0_16->unk30 = (s16) (temp_v0_16->unk30 - 4);
|
|
temp_v0_17 = D_800DC5EC;
|
|
temp_v0_17->unk32 = (s16) (temp_v0_17->unk32 - 2);
|
|
temp_v0_18 = D_800DC5EC;
|
|
phi_v0 = temp_v0_18;
|
|
phi_a0_12 = 0;
|
|
if ((s32) temp_v0_18->unk30 < 0x50) {
|
|
temp_v0_18->unk30 = 0x50;
|
|
phi_v0 = D_800DC5EC;
|
|
phi_a0_12 = 1;
|
|
}
|
|
phi_a0_9 = phi_a0_12;
|
|
if ((s32) phi_v0->unk32 < 0x3C) {
|
|
phi_v0->unk32 = 0x3C;
|
|
phi_a0_9 = phi_a0_12 + 1;
|
|
}
|
|
temp_v1_9 = D_800DC5F0;
|
|
temp_v1_9->unk30 = (s16) (temp_v1_9->unk30 + 4);
|
|
temp_v1_10 = D_800DC5F0;
|
|
temp_v1_10->unk32 = (s16) (temp_v1_10->unk32 + 2);
|
|
temp_v1_11 = D_800DC5F0;
|
|
phi_v1 = temp_v1_11;
|
|
phi_a0_6 = phi_a0_9;
|
|
if ((s32) temp_v1_11->unk30 >= 0xF1) {
|
|
temp_v1_11->unk30 = 0xF0;
|
|
phi_v1 = D_800DC5F0;
|
|
phi_a0_6 = phi_a0_9 + 1;
|
|
}
|
|
phi_a0_3 = phi_a0_6;
|
|
if ((s32) phi_v1->unk32 >= 0xB5) {
|
|
phi_v1->unk32 = 0xB4;
|
|
phi_a0_3 = phi_a0_6 + 1;
|
|
}
|
|
if (phi_a0_3 == 4) {
|
|
D_8015F894 = 7U;
|
|
D_802BA030 = 3U;
|
|
return;
|
|
}
|
|
// Duplicate return node #47. Try simplifying control flow for better match
|
|
return;
|
|
case 7:
|
|
temp_t8 = D_802BA030 - 1;
|
|
D_802BA030 = temp_t8;
|
|
if ((temp_t8 & 0xFFFF) == 0) {
|
|
D_8015F894 = 3U;
|
|
func_80092500(0, &D_8015F894);
|
|
if (gModeSelection == 0) {
|
|
func_80019DE4();
|
|
return;
|
|
}
|
|
func_80019E58();
|
|
return;
|
|
}
|
|
// Duplicate return node #47. Try simplifying control flow for better match
|
|
return;
|
|
case 4:
|
|
D_800DC5C0 = 1U;
|
|
D_800DC5C4 = 5;
|
|
D_800DC510 = 7;
|
|
func_8028E3A0(0, &D_8015F894);
|
|
// Duplicate return node #47. Try simplifying control flow for better match
|
|
return;
|
|
}
|
|
} else {
|
|
default:
|
|
}
|
|
}
|
|
*/
|
|
|
|
GLOBAL_ASM("asm/non_matchings/code_8028DF00/func_8028E678.s")
|
|
|
|
void func_8028EC38(s32 arg0) {
|
|
D_80150124 = arg0;
|
|
D_800DC510 = 6;
|
|
func_800CA330(25);
|
|
func_800CA388(25);
|
|
D_800DC5B4 = 1;
|
|
D_800DC5B0 = 1;
|
|
D_800DC5B8 = 0;
|
|
D_802BA038 = 5;
|
|
}
|
|
|
|
// Data misalignment
|
|
/*
|
|
void func_8028EC98(s32 arg0) {
|
|
|
|
if (D_800DC530 == 3) {
|
|
return;
|
|
}
|
|
|
|
func_800029B0();
|
|
|
|
switch (arg0) {
|
|
case 0:
|
|
case 7:
|
|
case 8:
|
|
case 14:
|
|
func_800C8EAC(3);
|
|
break;
|
|
case 10:
|
|
func_800C8EAC(21);
|
|
break;
|
|
case 4:
|
|
case 9:
|
|
func_800C8EAC(4);
|
|
break;
|
|
case 1:
|
|
case 15:
|
|
case 17:
|
|
func_800C8EAC(5);
|
|
break;
|
|
case 11:
|
|
func_800C8EAC(10);
|
|
break;
|
|
case 6:
|
|
func_800C8EAC(6);
|
|
break;
|
|
case 2:
|
|
func_800C8EAC(9);
|
|
break;
|
|
case 3:
|
|
func_800C8EAC(7);
|
|
break;
|
|
case 5:
|
|
case 12:
|
|
func_800C8EAC(8);
|
|
break;
|
|
case 13:
|
|
func_800C8EAC(18);
|
|
break;
|
|
case 18:
|
|
func_800C8EAC(19);
|
|
break;
|
|
case 16:
|
|
case 19:
|
|
func_800C8EAC(25);
|
|
break;
|
|
}
|
|
|
|
}
|
|
*/
|
|
GLOBAL_ASM("asm/non_matchings/code_8028DF00/func_8028EC98.s")
|
|
/*
|
|
void func_8028EDA8(void) {
|
|
? *temp_v1;
|
|
u16 temp_v0;
|
|
u16 temp_v0_2;
|
|
u16 temp_v0_3;
|
|
u16 temp_v0_4;
|
|
? *phi_v1;
|
|
|
|
D_8015011E = 0xFFFF;
|
|
if (D_800DC51C == 0) {
|
|
func_8028EC98(gCurrentCourseId);
|
|
}
|
|
if (D_800DC510 == 2) {
|
|
D_800DC510 = 3;
|
|
}
|
|
phi_v1 = &gPlayers;
|
|
do {
|
|
temp_v0 = phi_v1->unk0;
|
|
if (((temp_v0 & 0x8000) != 0) && ((temp_v0 & 0x2000) != 0)) {
|
|
phi_v1->unk0 = (u16) (temp_v0 ^ 0x2000);
|
|
}
|
|
temp_v0_2 = phi_v1->unkDD8;
|
|
if (((temp_v0_2 & 0x8000) != 0) && ((temp_v0_2 & 0x2000) != 0)) {
|
|
phi_v1->unkDD8 = (u16) (temp_v0_2 ^ 0x2000);
|
|
}
|
|
temp_v0_3 = phi_v1->unk1BB0;
|
|
if (((temp_v0_3 & 0x8000) != 0) && ((temp_v0_3 & 0x2000) != 0)) {
|
|
phi_v1->unk1BB0 = (u16) (temp_v0_3 ^ 0x2000);
|
|
}
|
|
temp_v0_4 = phi_v1->unk2988;
|
|
if (((temp_v0_4 & 0x8000) != 0) && ((temp_v0_4 & 0x2000) != 0)) {
|
|
phi_v1->unk2988 = (u16) (temp_v0_4 ^ 0x2000);
|
|
}
|
|
temp_v1 = phi_v1 + 0x3760;
|
|
phi_v1 = temp_v1;
|
|
} while (temp_v1 != &D_800FD850);
|
|
}
|
|
*/
|
|
GLOBAL_ASM("asm/non_matchings/code_8028DF00/func_8028EDA8.s")
|
|
|
|
// Probably data memed
|
|
/*
|
|
f32 func_8028EE8C(s32 i) {
|
|
f32 temp_f14;
|
|
temp_f14 = D_8015F8D8 - gPlayers[i].unk_01C;
|
|
return gCourseTimer - ((D_802B9254 * temp_f14) / (temp_f14 + (gPlayers[i].rotZ - D_8015F8D8)));
|
|
}
|
|
*/
|
|
|
|
GLOBAL_ASM("asm/non_matchings/code_8028DF00/func_8028EE8C.s")
|
|
|
|
void func_8028EEF0(s32 i) {
|
|
gPlayers[i].unk_000 |= 0x800;
|
|
}
|
|
/*
|
|
|
|
void func_8028EF28(void) {
|
|
Player *ply;
|
|
s16 currentPosition;
|
|
s32 i;
|
|
for(i = 0; i < 8; i++)
|
|
{
|
|
ply = (Player *)&gPlayers[i];
|
|
if ((gPlayers[i].unk_000 & 0x8000) == 0) {
|
|
continue;
|
|
}
|
|
if (lapCount[i] < gPlayers[i].unk_008) {
|
|
gPlayers[i].unk_008--;
|
|
} else if (lapCount[i] > gPlayers[i].unk_008) {
|
|
gPlayers[i].unk_008++;
|
|
}
|
|
if ((gPlayers[i].unk_000 & 0x4000) != 0) {
|
|
if (gPlayers[i].unk_008 == 3) {
|
|
func_8028EEF0(i);
|
|
|
|
currentPosition = gPlayers[i].unk_004;
|
|
gPlayers[i].unk_000 |= 0x1000;
|
|
if (currentPosition < 4) {
|
|
D_80150120 = 1;
|
|
}
|
|
func_800CA118((u8)i);
|
|
if ((D_802BA030[1] & 0x8000) == 0) {
|
|
D_802BA030[1] |= 0x8000;
|
|
}
|
|
if (gModeSelection == 0 && gPlayerCountSelection1 == 2 && D_802BA048 == 0) {
|
|
D_802BA048 = 1;
|
|
}
|
|
if ((gPlayers[i].unk_000 & 0x100) == 0) {
|
|
D_800DC510 = 4;
|
|
}
|
|
if (gModeSelection == 1) {
|
|
func_80005AE8(ply);
|
|
}
|
|
if (gModeSelection == 2) {
|
|
D_802BA038 = 180;
|
|
if (currentPosition == 0) {
|
|
D_800DC5E8 = i;
|
|
}
|
|
switch(gPlayerCountSelection1) {
|
|
case 2:
|
|
if (currentPosition == 0) {
|
|
*(D_8015F8C4 + i) += 1;
|
|
}
|
|
if (*(D_8015F8C4 + i) > 99) {
|
|
*(D_8015F8C4 + i) = 99;
|
|
}
|
|
D_800DC510 = 5;
|
|
D_8015F8F6[1] = i;
|
|
gPlayers->unk_00C |= 0x200000;
|
|
gPlayers->unk_000 |= 0x1000;
|
|
func_800CA118((u8)i);
|
|
break;
|
|
case 3:
|
|
if (currentPosition < 3) {
|
|
*(D_8015F8C8 + i * 3 + currentPosition) += 1;
|
|
}
|
|
if (*(D_8015F8C8 + i * 3 + currentPosition) > 99) {
|
|
*(D_8015F8C8 + i * 3 + currentPosition) = 99;
|
|
}
|
|
if (currentPosition == 1) {
|
|
D_800DC510 = 5;
|
|
D_8015F8F6[2] = i;
|
|
*(D_8015F8C8 + i * 3 + 2) += 1;
|
|
if (*(D_8015F8C8 + i * 3 + 2) > 99) {
|
|
*(D_8015F8C8 + i * 3 + 2) == 99;
|
|
}
|
|
gPlayers->unk_00C |= 0x200000;
|
|
gPlayers->unk_000 |= 0x1000;
|
|
func_800CA118((u8)i);
|
|
}
|
|
break;
|
|
case 4:
|
|
if (currentPosition < 3) {
|
|
*(D_8015F8CC + i * 3 + currentPosition) += 1;
|
|
}
|
|
if (*(D_8015F8CC + i * 3 + currentPosition) > 99) {
|
|
*(D_8015F8CC + i * 3 + currentPosition) = 99;
|
|
}
|
|
if (currentPosition == 2) {
|
|
D_800DC510 = 5;
|
|
D_8015F8F6[3] = i;
|
|
gPlayers->unk_00C |= 0x200000;
|
|
gPlayers->unk_000 |= 0x1000;
|
|
func_800CA118((u8)i);
|
|
}
|
|
break;
|
|
}
|
|
|
|
}
|
|
|
|
} else if (gPlayers[i].unk_008 == 2) {
|
|
if ((gPlayers[i].unk_000 & 0x100) == 0) {
|
|
return;
|
|
}
|
|
if ((D_802BA030[1] & 0x4000) == 0) {
|
|
D_802BA030[1] |= 0x4000;
|
|
func_800CA49C(i);
|
|
}
|
|
}
|
|
} else if (gPlayers[i].unk_008 == 3) {
|
|
func_8028EEF0(i);
|
|
if (gModeSelection == 1) {
|
|
func_80005AE8(ply);
|
|
}
|
|
}
|
|
|
|
if ((D_802BA048 != 0) && (D_802BA048 != 100)) {
|
|
D_802BA048 = 100;
|
|
func_800074D4();
|
|
}
|
|
}
|
|
|
|
}
|
|
*/
|
|
GLOBAL_ASM("asm/non_matchings/code_8028DF00/wip.s")
|
|
void func_8028F3E8(void) {
|
|
|
|
}
|
|
|
|
GLOBAL_ASM("asm/non_matchings/code_8028DF00/code_8028DF00.s")
|