mirror of
https://github.com/n64decomp/mk64
synced 2026-07-30 15:53:22 -04:00
Refresh 1
This commit is contained in:
+291
-1
@@ -1,9 +1,100 @@
|
||||
#include <ultra64.h>
|
||||
#include <macros.h>
|
||||
#include "types.h"
|
||||
#include "variables.h"
|
||||
|
||||
extern void func_800C8F44(u16 arg0);
|
||||
extern u16 D_800DC5A8;
|
||||
|
||||
struct UnkStruct80164490 {
|
||||
s16 unk0;
|
||||
s16 unk2;
|
||||
s16 unk4;
|
||||
};
|
||||
|
||||
extern struct UnkStruct80164490 *D_80164490;
|
||||
|
||||
struct UnkStruct8015F8D0 {
|
||||
f32 unk0;
|
||||
f32 unk4;
|
||||
f32 unk8;
|
||||
};
|
||||
|
||||
extern struct UnkStruct8015F8D0 D_8015F8D0;
|
||||
|
||||
extern struct Controller (*D_800DC4BC)[];
|
||||
|
||||
extern s32 D_800DC510;
|
||||
extern s16 D_8015F6FE;
|
||||
extern s16 D_800DC5B8;
|
||||
extern s16 D_80152308;
|
||||
extern s32 D_802BA038;
|
||||
extern s16 D_802BA048;
|
||||
|
||||
extern s16 D_800DC5A4;
|
||||
|
||||
extern f32 D_8015F784;
|
||||
|
||||
extern s8 D_8018EDF3;
|
||||
|
||||
extern s8 gCupSelection;
|
||||
|
||||
extern u32 D_800DC604;
|
||||
extern u32 D_800DC530;
|
||||
extern u32 D_8015F730;
|
||||
extern u32 D_8015F734;
|
||||
extern u32 gPrevLoadedAddress;
|
||||
extern u32 D_80150120;
|
||||
extern s16 gCupTrackOrder[][4];
|
||||
|
||||
void func_800CA008(u8, u8);
|
||||
|
||||
extern f32 D_8015F738, D_8015F748, D_8015F758, D_8015F768, D_8015F778;
|
||||
extern u32 *D_802B91C8;
|
||||
|
||||
void load_giant_egg(f32 *, f32, f32, f32);
|
||||
|
||||
extern u32 D_8000031C[];
|
||||
|
||||
// gfx?
|
||||
extern u32 *D_0F04FE28;
|
||||
extern u32 *D_0F050118;
|
||||
extern u32 *D_0F051C54;
|
||||
extern u32 *D_0F051FD8;
|
||||
extern u32 *D_0F05232C;
|
||||
extern u32 *D_0F0526B8;
|
||||
extern u32 *D_0F052A20;
|
||||
extern u32 *D_0F052D3C;
|
||||
extern u32 *D_0F05300C;
|
||||
extern u32 *D_0F0532F8;
|
||||
extern u32 *D_0F05363C;
|
||||
extern u32 *D_0F053950;
|
||||
extern u32 *D_0F04F45C;
|
||||
|
||||
extern u32 *D_06009570;
|
||||
extern u32 *D_06014330;
|
||||
|
||||
extern f32 D_8015F784;
|
||||
|
||||
extern u16 D_8015F900;
|
||||
|
||||
struct UnkStruct800DC64C {
|
||||
s32 unk0;
|
||||
s32 unk4;
|
||||
s32 unk8;
|
||||
};
|
||||
extern struct UnkStruct800DC64C D_800DC64C;
|
||||
|
||||
struct UnkStruct800DC658 {
|
||||
u16 unk0;
|
||||
u16 unk2;
|
||||
u16 unk4;
|
||||
};
|
||||
extern struct UnkStruct800DC658 D_800DC658;
|
||||
|
||||
extern s16 D_800DC5BC, D_800DC5C8;
|
||||
extern u16 D_80150110;
|
||||
|
||||
void func_800029B0(void) {
|
||||
switch(D_800DC5A8) {
|
||||
case 0:
|
||||
@@ -18,4 +109,203 @@ void func_800029B0(void) {
|
||||
}
|
||||
}
|
||||
|
||||
GLOBAL_ASM("asm/non_matchings/code_800029B0.s")
|
||||
void func_80002A18(void) {
|
||||
struct Controller *temp_v0;
|
||||
int tmp;
|
||||
|
||||
gPlayerCountSelection1 = D_8018EDF3;
|
||||
if (D_800DC50C != 4) {
|
||||
D_800DC604 = 0;
|
||||
}
|
||||
if (D_800DC604 != 0) {
|
||||
D_8015F784 = -1.0f;
|
||||
} else {
|
||||
D_8015F784 = 1.0f;
|
||||
}
|
||||
if (gModeSelection == 0) {
|
||||
gCurrentCourseId = gCupTrackOrder[gCupSelection][gCourseSelection];
|
||||
}
|
||||
D_800DC52C = D_800DC530;
|
||||
if (gCurrentCourseId != D_800DC5A4) {
|
||||
D_80150120 = 0;
|
||||
D_800DC5A4 = gCurrentCourseId;
|
||||
gPrevLoadedAddress = D_8015F734;
|
||||
load_course(gCurrentCourseId);
|
||||
func_80295D88();
|
||||
D_8015F730 = gPrevLoadedAddress;
|
||||
} else {
|
||||
gPrevLoadedAddress = D_8015F730;
|
||||
}
|
||||
func_802969F8();
|
||||
func_80005310();
|
||||
func_8003D080();
|
||||
func_8006E9C0();
|
||||
D_800DC510 = 0;
|
||||
D_8015F6FE = 0;
|
||||
D_800DC5B8 = 0;
|
||||
D_80152308 = 0;
|
||||
D_802BA038 = -1;
|
||||
D_802BA048 = 0;
|
||||
func_802A74BC();
|
||||
func_802A4D18();
|
||||
func_80091FA4();
|
||||
func_8029E158();
|
||||
|
||||
if (gModeSelection != 3) {
|
||||
D_8015F8D0.unk4 = (f32) (D_80164490->unk2 - 15);;
|
||||
D_8015F8D0.unk8 = D_80164490->unk4;
|
||||
if (gCurrentCourseId == COURSE_TOADS_TURNPIKE) {
|
||||
D_8015F8D0.unk0 = (D_800DC604 != 0) ?
|
||||
D_80164490->unk0 + 138.0f :
|
||||
D_80164490->unk0 - 138.0f;
|
||||
} else if (gCurrentCourseId == COURSE_WARIO_STADIUM) {
|
||||
D_8015F8D0.unk0 = (D_800DC604 != 0) ?
|
||||
D_80164490->unk0 + 12.0f :
|
||||
D_80164490->unk0 - 12.0f;
|
||||
} else {
|
||||
D_8015F8D0.unk0 = D_80164490->unk0;
|
||||
}
|
||||
}
|
||||
if (D_800DC51C == 0) {
|
||||
func_800CA008(gPlayerCountSelection1 - 1, gCurrentCourseId + 4);
|
||||
func_800CB2C4();
|
||||
}
|
||||
|
||||
temp_v0 = *D_800DC4BC;
|
||||
|
||||
for (tmp = 0; tmp < 7; tmp++, temp_v0++){
|
||||
temp_v0->unk0 = 0;
|
||||
temp_v0->unk2 = 0;
|
||||
temp_v0->buttonPressed = 0;
|
||||
temp_v0->unk8 = 0;
|
||||
temp_v0->unk4 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void func_80002DAC(void) {
|
||||
switch (gCurrentCourseId) {
|
||||
case COURSE_MARIO_RACEWAY:
|
||||
load_giant_egg(&D_8015F748, -223.0f, 94.0f, -155.0f);
|
||||
func_800C9D80(&D_8015F748, &D_802B91C8, 0x5103700B);
|
||||
break;
|
||||
case COURSE_ROYAL_RACEWAY:
|
||||
load_giant_egg(&D_8015F748, 177.0f, 87.0f, -393.0f);
|
||||
func_800C9D80(&D_8015F748, &D_802B91C8, 0x5103700B);
|
||||
break;
|
||||
case COURSE_LUIGI_RACEWAY:
|
||||
load_giant_egg(&D_8015F748, 85.0f, 21.0f, -219.0f);
|
||||
func_800C9D80(&D_8015F748, &D_802B91C8, 0x5103700B);
|
||||
break;
|
||||
case COURSE_WARIO_STADIUM:
|
||||
load_giant_egg(&D_8015F748, 298.0f, 202.0f, -850.0f);
|
||||
func_800C9D80(&D_8015F748, &D_802B91C8, 0x5103700B);
|
||||
load_giant_egg(&D_8015F758, -1600.0f, 202.0f, -2430.0f);
|
||||
func_800C9D80(&D_8015F758, &D_802B91C8, 0x5103700B);
|
||||
load_giant_egg(&D_8015F768, -2708.0f, 202.0f, 1762.0f);
|
||||
func_800C9D80(&D_8015F768, &D_802B91C8, 0x5103700B);
|
||||
load_giant_egg(&D_8015F778, -775.0f, 202.0f, 1930.0f);
|
||||
func_800C9D80(&D_8015F778, &D_802B91C8, 0x5103700B);
|
||||
break;
|
||||
case COURSE_KOOPA_BEACH:
|
||||
load_giant_egg(&D_8015F738, 153.0f, 0.0f, 2319.0f);
|
||||
func_800C9D80(&D_8015F738, &D_802B91C8, 0x51028001);
|
||||
break;
|
||||
case COURSE_DK_JUNGLE:
|
||||
load_giant_egg(&D_8015F738, -790.0f, -255.0f, -447.0f);
|
||||
func_800C9D80(&D_8015F738, &D_802B91C8, 0x51028001);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void func_80003010(void) {
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 16; i++) {
|
||||
D_8000031C[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void func_80003040(void) {
|
||||
u32 pad[2];
|
||||
f32 sp34;
|
||||
struct UnkStruct800DC64C sp28;
|
||||
struct UnkStruct800DC658 sp20;
|
||||
|
||||
sp28 = D_800DC64C;
|
||||
sp20 = D_800DC658;
|
||||
|
||||
D_800DC5BC = 0;
|
||||
D_800DC5C8 = 0;
|
||||
D_80150110 = 0;
|
||||
D_800DC604 = 0;
|
||||
D_8015F784 = 1.0f;
|
||||
|
||||
gPlayerCountSelection1 = 1;
|
||||
set_segment_base_addr(0x03, (gPrevLoadedAddress + 0xFFFF7000));
|
||||
func_8029DAB8();
|
||||
switch (gCurrentCourseId) {
|
||||
case COURSE_MARIO_RACEWAY:
|
||||
func_802A84F4(&D_0F04F45C, 0x35B, 0x800);
|
||||
place_segment_06(&D_06009570);
|
||||
break;
|
||||
case COURSE_BOWSER_CASTLE:
|
||||
func_802AF8BC(0x7001350, 0x32, 0, 0, 0);
|
||||
break;
|
||||
case COURSE_BANSHEE_BOARDWALK:
|
||||
func_802AF8BC(0x7000878, -0x80, 0, 0, 0);
|
||||
break;
|
||||
case COURSE_YOSHI_VALLEY:
|
||||
load_giant_egg(&sp34, -2300.0f, 0.0f, 634.0f);
|
||||
sp34 *= D_8015F784;
|
||||
func_8029EC88(&sp34, &sp20, &sp28, 9);
|
||||
break;
|
||||
case COURSE_MOO_MOO_FARM:
|
||||
func_802A84F4(&D_0F04FE28, 0x3E8, 0x800);
|
||||
func_802A84F4(&D_0F050118, 0x3E8, 0x800);
|
||||
func_802A84F4(&D_0F051C54, 0x400, 0x800);
|
||||
func_802A84F4(&D_0F051FD8, 0x400, 0x800);
|
||||
func_802A84F4(&D_0F05232C, 0x400, 0x800);
|
||||
func_802A84F4(&D_0F0526B8, 0x400, 0x800);
|
||||
func_802A84F4(&D_0F052A20, 0x400, 0x800);
|
||||
func_802A84F4(&D_0F052D3C, 0x400, 0x800);
|
||||
func_802A84F4(&D_0F05300C, 0x400, 0x800);
|
||||
func_802A84F4(&D_0F0532F8, 0x400, 0x800);
|
||||
func_802A84F4(&D_0F05363C, 0x400, 0x800);
|
||||
func_802A84F4(&D_0F053950, 0x400, 0x800);
|
||||
place_segment_06(&D_06014330);
|
||||
break;
|
||||
case COURSE_SHERBET_LAND:
|
||||
func_802AF8BC(0x7001EB8, -0x4C, 0xFF, 0xFF, 0xFF);
|
||||
func_802AF8BC(0x7002308, -0x6A, 0xFF, 0xFF, 0xFF);
|
||||
break;
|
||||
case COURSE_RAINBOW_ROAD:
|
||||
func_802AF8BC(0x7002068, -0x6A, 0xFF, 0xFF, 0xFF);
|
||||
func_802AF8BC(0x7001E18, -0x6A, 0xFF, 0xFF, 0xFF);
|
||||
func_802AF8BC(0x7001318, -1, 0xFF, 0xFF, 0);
|
||||
break;
|
||||
case COURSE_WARIO_STADIUM:
|
||||
load_giant_egg(&sp34, -131.0f, 83.0f, 286.0f);
|
||||
func_8029EC88(&sp34, &sp20, &sp28, 0x23);
|
||||
load_giant_egg(&sp34, -2353.0f, 72.0f, -1608.0f);
|
||||
func_8029EC88(&sp34, &sp20, &sp28, 0x23);
|
||||
load_giant_egg(&sp34, -2622.0f, 79.0f, 739.0f);
|
||||
func_8029EC88(&sp34, &sp20, &sp28, 0x23);
|
||||
func_802AF8BC(0x7000C50, 0x64, 0xFF, 0xFF, 0xFF);
|
||||
func_802AF8BC(0x7000BD8, 0x64, 0xFF, 0xFF, 0xFF);
|
||||
func_802AF8BC(0x7000B60, 0x64, 0xFF, 0xFF, 0xFF);
|
||||
func_802AF8BC(0x7000AE8, 0x64, 0xFF, 0xFF, 0xFF);
|
||||
func_802AF8BC(0x7000CC8, 0x64, 0xFF, 0xFF, 0xFF);
|
||||
func_802AF8BC(0x7000D50, 0x64, 0xFF, 0xFF, 0xFF);
|
||||
func_802AF8BC(0x7000DD0, 0x64, 0xFF, 0xFF, 0xFF);
|
||||
func_802AF8BC(0x7000E48, 0x64, 0xFF, 0xFF, 0xFF);
|
||||
break;
|
||||
case COURSE_DK_JUNGLE:
|
||||
func_802AF8BC(0x7003FA8, 0x78, 0xFF, 0xFF, 0xFF);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
D_8015F900 = D_80150110;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,178 @@
|
||||
#include <ultra64.h>
|
||||
#include <macros.h>
|
||||
#include "common_structs.h"
|
||||
|
||||
extern OSIoMesg D_8014F0A0;
|
||||
extern OSMesgQueue D_8014EF58;
|
||||
extern OSMesg D_8014F098;
|
||||
|
||||
extern u8 _kart_texturesSegmentRomStart[];
|
||||
extern u32 gKartPalettes[];
|
||||
|
||||
// arrays?
|
||||
extern u32 *D_802F1F80;
|
||||
extern u32 *D_802DFB80;
|
||||
|
||||
extern s16 D_800DDEB0[];
|
||||
extern s32 D_800DC52C;
|
||||
|
||||
// Structured like a 3D pointer array
|
||||
extern u32 ***gKartTextureTable0, ***gKartTextureTable1, **gKartTextureGroup18s;
|
||||
|
||||
// some larger diffs that need resolving
|
||||
#ifdef MIPS_TO_C
|
||||
void func_80027040(Player *player, s8 arg1, s8 arg2, s8 arg3, s32 arg4) {
|
||||
s32 temp_v0 = player->unk_0BC;
|
||||
void *temp_s0;
|
||||
// void *temp_v1;
|
||||
|
||||
if ((temp_v0 & 0x80) == 0x80 ||
|
||||
(temp_v0 & 0x40) == 0x40 ||
|
||||
(temp_v0 & 0x80000) == 0x80000 ||
|
||||
(temp_v0 & 0x800000) == 0x800000 ||
|
||||
(temp_v0 & 0x20000) == 0x20000 ||
|
||||
(player->unk_044 & 0x800) != 0
|
||||
) {
|
||||
// temp_v1 = player + (arg2 * 2);
|
||||
if (player->unk_244[arg2] == 0) {
|
||||
temp_s0 = (arg4 * 0x9200) + (arg3 * 0x4900) + (arg1 * 0x920) + D_802DFB80;
|
||||
osInvalDCache(temp_s0, D_800DDEB0[player->unk_254]);
|
||||
osPiStartDma(&D_8014F0A0, 0, 0, &_kart_texturesSegmentRomStart[gKartTextureTable0[player->unk_254][player->unk_24C[arg2]][player->unk_244[arg2]] & 0xFFFFFF], temp_s0, D_800DDEB0[temp_v0], &D_8014EF58);
|
||||
osRecvMesg(&D_8014EF58, &D_8014F098, 1);
|
||||
} else {
|
||||
temp_s0 = (arg4 * 0x9200) + (arg3 * 0x4900) + (arg1 * 0x920) + D_802DFB80;
|
||||
osInvalDCache(temp_s0, D_800DDEB0[player->unk_254]);
|
||||
osPiStartDma(&D_8014F0A0, 0, 0, &_kart_texturesSegmentRomStart[gKartTextureTable1[player->unk_254][player->unk_24C[arg2]][player->unk_244[arg2]] & 0xFFFFFF], temp_s0, D_800DDEB0[temp_v0], &D_8014EF58);
|
||||
osRecvMesg(&D_8014EF58, &D_8014F098, 1);
|
||||
}
|
||||
}
|
||||
else if ((temp_v0 & 0x400) == 0x400 ||
|
||||
(temp_v0 & 0x1000000) == 0x1000000 ||
|
||||
(temp_v0 & 0x2000000) == 0x2000000 ||
|
||||
(temp_v0 & 0x10000) == 0x10000
|
||||
) {
|
||||
temp_s0 = (arg4 * 0x9200) + (arg3 * 0x4900) + (arg1 * 0x920) + D_802DFB80;
|
||||
osInvalDCache(temp_s0, 0x780);
|
||||
osPiStartDma(&D_8014F0A0, 0, 0, &_kart_texturesSegmentRomStart[gKartTextureGroup18s[player->unk_254][player->unk_0A8 >> 8] & 0xFFFFFF], temp_s0, 0x900, &D_8014EF58);
|
||||
osRecvMesg(&D_8014EF58, &D_8014F098, 1);
|
||||
} else {
|
||||
temp_s0 = (arg4 * 0x9200) + (arg3 * 0x4900) + (arg1 * 0x920) + D_802DFB80;
|
||||
osInvalDCache(temp_s0, D_800DDEB0[player->unk_254]);
|
||||
osPiStartDma(&D_8014F0A0, 0, 0, &_kart_texturesSegmentRomStart[gKartTextureTable0[player->unk_254][player->unk_24C[arg2]][player->unk_244[arg2]] & 0xFFFFFF], temp_s0, D_800DDEB0[temp_v0], &D_8014EF58);
|
||||
osRecvMesg(&D_8014EF58, &D_8014F098, 1);
|
||||
}
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/code_80027040/func_80027040.s")
|
||||
#endif
|
||||
|
||||
#ifdef MIPS_TO_C
|
||||
//generated by mips_to_c commit 3ec45aadfc2cb619035fb802d88c52eacfab0326
|
||||
void func_80027560(Player *arg0, s8 arg1, s8 arg2, s8 arg3, s8 arg4) {
|
||||
void *sp30;
|
||||
s32 temp_v0;
|
||||
s8 temp_a3;
|
||||
u16 temp_v0;
|
||||
u16 temp_v0;
|
||||
u16 temp_v0;
|
||||
void *temp_s0;
|
||||
void *temp_s0_2;
|
||||
void *temp_s0_3;
|
||||
void *temp_s0_4;
|
||||
void *temp_v1;
|
||||
void *temp_v1_2;
|
||||
|
||||
temp_v0 = arg0->unkBC;
|
||||
temp_a3 = arg3;
|
||||
if ((temp_v0 & 0x80) == 0x80) {
|
||||
block_6:
|
||||
temp_v1_2 = arg0 + (arg2 * 2);
|
||||
if (temp_v1_2->unk244 == 0) {
|
||||
temp_s0_4 = (arg4 * 0x9200) + (temp_a3 * 0x4900) + (arg1 * 0x920) + 0x802DFB80;
|
||||
sp30 = temp_v1_2;
|
||||
osInvalDCache(temp_s0_4, *(&D_800DDEB0 + (arg0->unk254 * 2)));
|
||||
temp_v0 = arg0->unk254;
|
||||
osPiStartDma(&D_8014F0A0, 0, 0, (*(*(*(&gKartTextureTable0 + (temp_v0 * 4)) + (temp_v1_2->unk24C * 4)) + (temp_v1_2->unk244 * 4)) & 0xFFFFFF) + &_kart_texturesSegmentRomStart, temp_s0_4, *(&D_800DDEB0 + (temp_v0 * 2)), &D_8014EF58);
|
||||
return;
|
||||
}
|
||||
temp_s0_3 = (arg4 * 0x9200) + (temp_a3 * 0x4900) + (arg1 * 0x920) + D_802DFB80;
|
||||
sp30 = temp_v1_2;
|
||||
osInvalDCache(temp_s0_3, *(&D_800DDEB0 + (arg0->unk254 * 2)));
|
||||
temp_v0 = arg0->unk254;
|
||||
osPiStartDma(&D_8014F0A0, 0, 0, (*(*(*(&gKartTextureTable1 + (temp_v0 * 4)) + (temp_v1_2->unk24C * 4)) + (temp_v1_2->unk244 * 4)) & 0xFFFFFF) + &_kart_texturesSegmentRomStart, temp_s0_3, *(&D_800DDEB0 + (temp_v0 * 2)), &D_8014EF58);
|
||||
return;
|
||||
}
|
||||
if ((temp_v0 & 0x40) == 0x40) {
|
||||
goto block_6;
|
||||
}
|
||||
if ((temp_v0 & 0x80000) == 0x80000) {
|
||||
goto block_6;
|
||||
}
|
||||
if ((temp_v0 & 0x800000) == 0x800000) {
|
||||
goto block_6;
|
||||
}
|
||||
if ((temp_v0 & 0x20000) == 0x20000) {
|
||||
goto block_6;
|
||||
}
|
||||
if ((arg0->unk44 & 0x800) != 0) {
|
||||
goto block_6;
|
||||
}
|
||||
if ((temp_v0 & 0x400) == 0x400) {
|
||||
block_13:
|
||||
temp_s0_2 = (arg4 * 0x9200) + (temp_a3 * 0x4900) + (arg1 * 0x920) + D_802DFB80;
|
||||
osInvalDCache(temp_s0_2, 0x780);
|
||||
osPiStartDma(&D_8014F0A0, 0, 0, (*(*(&gKartTextureGroup18s + (arg0->unk254 * 4)) + ((arg0->unkA8 >> 8) * 4)) & 0xFFFFFF) + &_kart_texturesSegmentRomStart, temp_s0_2, 0x900, &D_8014EF58);
|
||||
return;
|
||||
}
|
||||
if ((temp_v0 & 0x1000000) == 0x1000000) {
|
||||
goto block_13;
|
||||
}
|
||||
if ((temp_v0 & 0x2000000) == 0x2000000) {
|
||||
goto block_13;
|
||||
}
|
||||
if ((temp_v0 & 0x10000) == 0x10000) {
|
||||
goto block_13;
|
||||
}
|
||||
temp_s0 = (arg4 * 0x9200) + (temp_a3 * 0x4900) + (arg1 * 0x920) + D_802DFB80;
|
||||
osInvalDCache(temp_s0, *(&D_800DDEB0 + (arg0->unk254 * 2)));
|
||||
temp_v0 = arg0->unk254;
|
||||
temp_v1 = arg0 + (arg2 * 2);
|
||||
osPiStartDma(&D_8014F0A0, 0, 0, (*(*(*(&gKartTextureTable0 + (temp_v0 * 4)) + (temp_v1->unk24C * 4)) + (temp_v1->unk244 * 4)) & 0xFFFFFF) + &_kart_texturesSegmentRomStart, temp_s0, *(&D_800DDEB0 + (temp_v0 * 2)), &D_8014EF58);
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/code_80027040/func_80027560.s")
|
||||
#endif
|
||||
|
||||
// regalloc
|
||||
#ifdef NON_MATCHING
|
||||
void func_80027A20(Player *player, s8 arg1, s8 arg2, s8 arg3) {
|
||||
void *temp_s0 = (arg3 << 0xE) + (arg2 << 0xC) + (arg1 << 9) + (s32)&D_802F1F80;
|
||||
|
||||
switch(D_800DC52C) {
|
||||
case 0: case 1: case 2:
|
||||
osInvalDCache(temp_s0, 0x200);
|
||||
osPiStartDma(&D_8014F0A0, 0, 0, &_kart_texturesSegmentRomStart[gKartPalettes[player->unk_254] & 0x00FFFFFF], temp_s0, 0x200, &D_8014EF58);
|
||||
osRecvMesg(&D_8014EF58, &D_8014F098, 1);
|
||||
break;
|
||||
case 3:
|
||||
osInvalDCache(temp_s0, 0x200);
|
||||
osPiStartDma(&D_8014F0A0, 0, 0, &_kart_texturesSegmentRomStart[gKartPalettes[player->unk_254] & 0x00FFFFFF], temp_s0, 0x200, &D_8014EF58);
|
||||
osRecvMesg(&D_8014EF58, &D_8014F098, 1);
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/code_80027040/func_80027A20.s")
|
||||
#endif
|
||||
|
||||
void func_80027BDC(s32 arg0, s32 arg1, void *vAddr, u16 size) {
|
||||
osInvalDCache(vAddr, size);
|
||||
osPiStartDma(&D_8014F0A0, 0, 0, &_kart_texturesSegmentRomStart[arg1 & 0x00FFFFFF], vAddr, size, &D_8014EF58);
|
||||
osRecvMesg(&D_8014EF58, &D_8014F098, 1);
|
||||
}
|
||||
|
||||
void func_80027C74(s32 arg0, s32 arg1, void *vAddr, u16 size) {
|
||||
osInvalDCache(vAddr, size);
|
||||
osPiStartDma(&D_8014F0A0, 0, 0, &_kart_texturesSegmentRomStart[arg1 & 0x00FFFFFF], vAddr, size, &D_8014EF58);
|
||||
}
|
||||
+1242
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,165 @@
|
||||
#include <ultra64.h>
|
||||
#include <macros.h>
|
||||
#include <PR/gu.h>
|
||||
|
||||
#include "main.h"
|
||||
#include "types.h"
|
||||
#include "code_80281780.h"
|
||||
|
||||
extern Gfx *gDisplayListHead;
|
||||
|
||||
extern f32 D_801646F0, D_801646F4, D_801646F8, D_801646FC,
|
||||
D_80164700, D_80164704, D_80164708, D_8016470C, D_80164710;
|
||||
extern f32 D_80150130, D_80150148, D_8015014C, D_80150150;
|
||||
|
||||
extern s16 D_800DC644;
|
||||
extern u16 D_80150112;
|
||||
extern u16 D_80164AF0;
|
||||
extern u32 D_8018D120;
|
||||
extern s32 gPrevLoadedAddress;
|
||||
|
||||
extern u16 D_800DC5C0, D_800DC5C4;
|
||||
extern s32 D_802874A0;
|
||||
|
||||
extern u16 func_802B7830(f32, f32);
|
||||
extern u16 D_80164714, D_80164716, D_80164718;
|
||||
extern u16 D_800DC5E4;
|
||||
extern u32 D_800DC524;
|
||||
extern u32 D_800DC50C;
|
||||
extern u32 D_802874FC;
|
||||
|
||||
extern u16 D_800DC518;
|
||||
|
||||
void func_80280000(void) {
|
||||
func_802966A0();
|
||||
func_80059AC8();
|
||||
func_80059AC8();
|
||||
func_8005A070();
|
||||
}
|
||||
|
||||
void func_80280038(void) {
|
||||
u16 sp44[38];
|
||||
|
||||
D_80150112 = 0;
|
||||
D_80164AF0 = 0;
|
||||
D_8018D120 = 0;
|
||||
func_802A3E3C();
|
||||
func_802A53A4();
|
||||
func_802A3E3C();
|
||||
func_80057FC4(0);
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_ZBUFFER | G_SHADE | G_CULL_BACK | G_SHADING_SMOOTH);
|
||||
guPerspective(&gGfxPool->buffer[8], &sp44[37], D_80150130, D_80150148, D_80150150, D_8015014C, 1.0f);
|
||||
gDPHalf1(gDisplayListHead++, sp44[37]);
|
||||
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[8]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
|
||||
guLookAt(&gGfxPool->buffer[56], D_801646F0, D_801646F4, D_801646F8, D_801646FC, D_80164700, D_80164704, D_80164708, D_8016470C, D_80164710);
|
||||
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[56]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION);
|
||||
gCurrentCourseId = D_800DC644;
|
||||
func_802B53C8(&sp44);
|
||||
func_802B4FF8(&sp44, 0);
|
||||
func_80295A38(D_800DC5EC);
|
||||
func_802A3008(D_800DC5EC);
|
||||
func_80058090(0);
|
||||
func_80058538(0);
|
||||
func_80284CC0();
|
||||
func_80281C40();
|
||||
func_802A3E3C();
|
||||
func_80093F10();
|
||||
func_802A3E3C();
|
||||
}
|
||||
|
||||
void func_80280268(s32 arg0) {
|
||||
D_800DC5C0 = 1;
|
||||
D_800DC5C4 = 5;
|
||||
D_802874A0 = 1;
|
||||
if ((arg0 < 0) || ((arg0 >= 0x14))) {
|
||||
arg0 = 0;
|
||||
}
|
||||
D_800DC644 = arg0;
|
||||
}
|
||||
|
||||
void func_802802AC(void) {
|
||||
f32 sp20;
|
||||
f32 temp_f12;
|
||||
f32 temp;
|
||||
f32 temp_f14;
|
||||
|
||||
D_802874A0 = 0;
|
||||
if (D_800DC5C0 != 0) {
|
||||
D_800DC5C4--;
|
||||
if (D_800DC5C4 == 0) {
|
||||
D_800DC5C0 = 0;
|
||||
D_800DC524 = 9;
|
||||
D_800DC50C = 0xFF;
|
||||
}
|
||||
} else {
|
||||
|
||||
D_802874FC = 0;
|
||||
func_80283648(&D_801646F0);
|
||||
temp_f12 = D_801646FC - D_801646F0;
|
||||
temp = D_80164700 - D_801646F4;
|
||||
temp_f14 = D_80164704 - D_801646F8;
|
||||
D_80164716 = func_802B7830(temp_f12, temp_f14);
|
||||
D_80164714 = func_802B7830(sqrtf((temp_f12 * temp_f12) + (temp_f14 * temp_f14)), temp);
|
||||
D_80164718 = 0;
|
||||
if (D_802874A0 != 0) {
|
||||
D_800DC5E4++;
|
||||
} else {
|
||||
func_80280000();
|
||||
func_80280038();
|
||||
gDPFullSync(gDisplayListHead++);
|
||||
gSPEndDisplayList(gDisplayListHead++);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_80280420(void) {
|
||||
s32 temp_t1;
|
||||
|
||||
gCurrentCourseId = D_800DC644;
|
||||
D_800DC5B4 = 1;
|
||||
D_800DC518 = 1;
|
||||
func_802A4D18();
|
||||
func_802A74BC();
|
||||
D_801647A4 = 60.0f;
|
||||
D_80150130 = 60.0f;
|
||||
D_800DC5EC->unk2C = 0x140;
|
||||
D_800DC5EC->unk2E = 0xF0;
|
||||
D_800DC5EC->unk30 = 0xA0;
|
||||
D_800DC5EC->unk32 = 0x78;
|
||||
D_800DC530 = 0;
|
||||
D_800DC52C = 0;
|
||||
gPrevLoadedAddress = D_8015F734;
|
||||
load_course(gCurrentCourseId);
|
||||
D_8015F730 = gPrevLoadedAddress;
|
||||
set_segment_base_addr(0xB, func_802AA88C(&_data_821D10SegmentRomStart, &_data_825800SegmentRomStart));
|
||||
D_8015F6EA = -0x15A1;
|
||||
D_8015F6EE = -0x15A1;
|
||||
D_8015F6F2 = -0x15A1;
|
||||
D_8015F6E8 = 0x15A1;
|
||||
D_8015F6EC = 0x15A1;
|
||||
D_8015F6F0 = 0x15A1;
|
||||
D_8015F59C = 0;
|
||||
D_8015F5A0 = 0;
|
||||
D_8015F58C = 0;
|
||||
D_8015F588 = 0;
|
||||
D_800DC5BC = 0;
|
||||
D_800DC5C8 = 0;
|
||||
D_8015F580 = gPrevLoadedAddress;
|
||||
D_801646F0 = 1400.0f;
|
||||
D_801646F4 = 300.0f;
|
||||
D_801646F8 = 1400.0f;
|
||||
D_801646FC = 0.0f;
|
||||
D_80164700 = 0.0f;
|
||||
D_80164704 = 0.0f;
|
||||
D_80164708 = 0.0f;
|
||||
D_8016470C = 1.0f;
|
||||
D_80164710 = 0.0f;
|
||||
func_80283430();
|
||||
func_80003040();
|
||||
func_8006E9C0();
|
||||
func_80093E60();
|
||||
func_80092688();
|
||||
if (D_800DC5EC) {}
|
||||
D_801625F8 = ((s32)gHeapEndPtr - gPrevLoadedAddress);
|
||||
D_801625FC = ((f32)D_801625F8 / 1000.0f);
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
#include <ultra64.h>
|
||||
#include <macros.h>
|
||||
|
||||
// guLookAt params
|
||||
extern f32 D_801646F0, D_801646F4, D_801646F8, D_801646FC,
|
||||
D_80164700, D_80164704, D_80164708, D_8016470C, D_80164710;
|
||||
|
||||
extern u16 D_80164714, D_80164716;
|
||||
extern u16 D_80164718;
|
||||
|
||||
extern u16 func_802B7830(f32, f32);
|
||||
|
||||
void func_80281610(void) {
|
||||
f32 sp1C;
|
||||
f32 temp_f12;
|
||||
f32 temp;
|
||||
f32 temp_f14;
|
||||
|
||||
func_80283648(&D_801646F0);
|
||||
temp_f12 = D_801646FC - D_801646F0;
|
||||
temp = D_80164700 - D_801646F4;
|
||||
temp_f14 = D_80164704 - D_801646F8;
|
||||
D_80164716 = func_802B7830(temp_f12, temp_f14);
|
||||
D_80164714 = func_802B7830(sqrtf((temp_f12 * temp_f12) + (temp_f14 * temp_f14)), temp);
|
||||
D_80164718 = 0;
|
||||
}
|
||||
|
||||
// guPerspective params
|
||||
extern f32 D_80150130, D_80150148, D_8015014C, D_80150150;
|
||||
|
||||
// rodata that has not been found
|
||||
extern const f32 D_80286B90, D_80286B94, D_80286B98, D_80286B9C, D_80286BA0;
|
||||
|
||||
// Two functions have evidence that this weird thing here is 8 floats,
|
||||
// but over here they need to be array-indexed to match
|
||||
void func_802816B8(void) {
|
||||
(((f32 *)(&D_801646F0))[0]) = D_80286B90;
|
||||
(((f32 *)(&D_801646F0))[1]) = 19.0f;
|
||||
(((f32 *)(&D_801646F0))[2]) = D_80286B94;
|
||||
(((f32 *)(&D_801646F0))[3]) = D_80286B98;
|
||||
(((f32 *)(&D_801646F0))[4]) = 21.0f;
|
||||
(((f32 *)(&D_801646F0))[5]) = -528.0f;
|
||||
(((f32 *)(&D_801646F0))[6]) = 0.0f;
|
||||
(((f32 *)(&D_801646F0))[7]) = 1.0f;
|
||||
(((f32 *)(&D_801646F0))[8]) = 0.0f;
|
||||
D_80150130 = 40.0f;
|
||||
D_80150148 = D_80286B9C;
|
||||
D_80150150 = 3.0f;
|
||||
D_8015014C = D_80286BA0;
|
||||
func_80283430();
|
||||
}
|
||||
+54
-151
@@ -1,173 +1,77 @@
|
||||
#include <ultra64.h>
|
||||
#include <macros.h>
|
||||
#include "types.h"
|
||||
#include "variables.h"
|
||||
|
||||
extern void func_802A4D18();
|
||||
extern void func_802A74BC();
|
||||
extern void load_course();
|
||||
extern void set_segment_base_addr();
|
||||
extern int func_802AA88C();
|
||||
extern void func_802AF5AC();
|
||||
extern void func_80295C6C();
|
||||
extern void func_80281780();
|
||||
extern void func_802818BC();
|
||||
extern void func_8003D080();
|
||||
extern void func_8006E9C0();
|
||||
extern void func_8001C05C();
|
||||
extern void func_80280FB0();
|
||||
extern void func_802816B8();
|
||||
extern void func_80093E60();
|
||||
extern void *gHeapEndPtr;
|
||||
|
||||
extern s16 gCurrentCourseId;
|
||||
extern u16 D_800DC5B4;
|
||||
|
||||
extern s32 D_800DC604;
|
||||
extern s32 D_800DC530;
|
||||
extern s32 D_800DC52C;
|
||||
extern s32 gModeSelection;
|
||||
extern u16 D_800DC5BC;
|
||||
extern u16 D_800DC5C8;
|
||||
extern struct UnkStruct_800DC5EC *D_800DC5EC;
|
||||
|
||||
extern s32 D_80287550;
|
||||
extern s32 D_80287554;
|
||||
extern f32 D_801647A4;
|
||||
extern f32 D_80150130;
|
||||
|
||||
extern s32 D_8015F728;
|
||||
extern s32 D_8015F734;
|
||||
|
||||
extern s32 D_8015F730;
|
||||
|
||||
extern f32 D_8015F8E4;
|
||||
extern s16 D_8015F6EA;
|
||||
extern s16 D_8015F6EE;
|
||||
extern s16 D_8015F6F2;
|
||||
extern u16 D_8015F6E8;
|
||||
extern u16 D_8015F6EC;
|
||||
extern u16 D_8015F6F0;
|
||||
extern s32 D_8015F59C;
|
||||
extern s32 D_8015F5A0;
|
||||
extern s32 D_8015F58C;
|
||||
extern u16 D_8015F588;
|
||||
|
||||
extern s32 D_8015F580;
|
||||
|
||||
extern s32 D_00821D10;
|
||||
extern s32 D_00825800;
|
||||
extern s32 D_00831DC0;
|
||||
extern s32 D_00835BA0;
|
||||
|
||||
extern s32 D_801625F8;
|
||||
extern f32 D_801625FC;
|
||||
#include "code_80281780.h"
|
||||
|
||||
extern s32 gPrevLoadedAddress;
|
||||
|
||||
// unk4 is buttonDown?
|
||||
#ifdef MIPS_TO_C
|
||||
//generated by mips_to_c commit 09d006c9da5d6bbcd31ac6ca5c9165c1a8533a83
|
||||
void func_80281780(void) {
|
||||
if (gEnableDebugMode != 0) {
|
||||
if ((D_800DC4BC->unk4 & 0xF0F) != 0) {
|
||||
if ((D_800DC4BC->unk4 & 8) != 0) {
|
||||
D_800E86A8 = (u8)1;
|
||||
if (D_800DC4BC->unk4 & 0x0F0F) {
|
||||
if (D_800DC4BC->unk4 & 8) {
|
||||
D_800E86A8[0] = 1;
|
||||
}
|
||||
else if (D_800DC4BC->unk4 & 2) {
|
||||
D_800E86A8[0] = 2;
|
||||
}
|
||||
else if (D_800DC4BC->unk4 & 1) {
|
||||
D_800E86A8[0] = 3;
|
||||
}
|
||||
else if (D_800DC4BC->unk4 & 4) {
|
||||
D_800E86A8[0] = 4;
|
||||
}
|
||||
else if (D_800DC4BC->unk4 & 0x800) {
|
||||
D_800E86A8[0] = 5;
|
||||
}
|
||||
else if (D_800DC4BC->unk4 & 0x200) {
|
||||
D_800E86A8[0] = 6;
|
||||
}
|
||||
else if (D_800DC4BC->unk4 & 0x100) {
|
||||
D_800E86A8[0] = 7;
|
||||
} else {
|
||||
if ((D_800DC4BC->unk4 & 2) != 0) {
|
||||
D_800E86A8 = (u8)2;
|
||||
} else {
|
||||
if ((D_800DC4BC->unk4 & 1) != 0) {
|
||||
D_800E86A8 = (u8)3;
|
||||
} else {
|
||||
if ((D_800DC4BC->unk4 & 4) != 0) {
|
||||
D_800E86A8 = (u8)4;
|
||||
} else {
|
||||
if ((D_800DC4BC->unk4 & 0x800) != 0) {
|
||||
D_800E86A8 = (u8)5;
|
||||
} else {
|
||||
if ((D_800DC4BC->unk4 & 0x200) != 0) {
|
||||
D_800E86A8 = (u8)6;
|
||||
} else {
|
||||
if ((D_800DC4BC->unk4 & 0x100) != 0) {
|
||||
D_800E86A8 = (u8)7;
|
||||
} else {
|
||||
*(void *)0x800F0000 = (u8)0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
D_800E86A8[0] = 0;
|
||||
}
|
||||
bcopy(&D_80284ED0, &D_8018D9D0, 8);
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/code_80281780/func_80281780.s")
|
||||
#endif
|
||||
|
||||
#ifdef MIPS_TO_C
|
||||
//generated by mips_to_c commit 09d006c9da5d6bbcd31ac6ca5c9165c1a8533a83
|
||||
s32 func_80281880(s32 arg0) {
|
||||
s32 temp_v1;
|
||||
void *phi_v0;
|
||||
s32 phi_v1;
|
||||
s32 phi_v1_2;
|
||||
|
||||
phi_v0 = &D_8018D9D0;
|
||||
phi_v1 = 0;
|
||||
loop_1:
|
||||
phi_v1_2 = phi_v1;
|
||||
if (*phi_v0 != (arg0 + 0x800F0000)->unk-7958) {
|
||||
temp_v1 = phi_v1 + 1;
|
||||
phi_v0 = phi_v0 + 1;
|
||||
phi_v1 = temp_v1;
|
||||
phi_v1_2 = temp_v1;
|
||||
if (temp_v1 != 8) {
|
||||
goto loop_1;
|
||||
}
|
||||
s32 i;
|
||||
for (i = 0; i < 8; i++) {
|
||||
if (D_8018D9D0[i] == D_800E86A8[arg0]) break;
|
||||
}
|
||||
return phi_v1_2;
|
||||
return i;
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/code_80281780/func_80281880.s")
|
||||
#endif
|
||||
|
||||
#ifdef MIPS_TO_C
|
||||
//generated by mips_to_c commit 09d006c9da5d6bbcd31ac6ca5c9165c1a8533a83
|
||||
void func_802818BC(void) {
|
||||
s32 sp24;
|
||||
s32 temp_v0;
|
||||
UNUSED s32 pad;
|
||||
s32 sp1C;
|
||||
s32 temp_ret;
|
||||
s32 temp_ret_2;
|
||||
s32 temp_v0_2;
|
||||
|
||||
if (D_8018EDF3 != 2) {
|
||||
D_802874D8.unk1D = func_80281880(0);
|
||||
D_802874D8.unk1E = (s8) D_800E86A8;
|
||||
D_802874D8.unk_1D = func_80281880(0);
|
||||
D_802874D8.unk_1E = D_800E86A8[0];
|
||||
return;
|
||||
}
|
||||
temp_ret = func_80281880(0);
|
||||
sp1C = temp_ret;
|
||||
sp24 = temp_ret;
|
||||
temp_ret_2 = func_80281880(1);
|
||||
if (sp1C < temp_ret_2) {
|
||||
D_802874D8.unk1E = (s8) D_800E86A8;
|
||||
D_802874D8.unk1D = (s8) sp24;
|
||||
return;
|
||||
// weird pattern but if it matches it matches
|
||||
temp_v0 = sp1C = func_80281880(0);
|
||||
temp_v0_2 = func_80281880(1);
|
||||
if (sp1C < temp_v0_2) {
|
||||
D_802874D8.unk_1E = D_800E86A8[0];
|
||||
D_802874D8.unk_1D = temp_v0;
|
||||
} else {
|
||||
D_802874D8.unk_1E = D_800E86A8[1];
|
||||
D_802874D8.unk_1D = temp_v0_2;
|
||||
}
|
||||
D_802874D8.unk1E = (s8) D_800E86A9;
|
||||
D_802874F5 = (s8) temp_ret_2;
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/code_80281780/func_802818BC.s")
|
||||
#endif
|
||||
|
||||
#ifdef NON_MATCHING
|
||||
void *load_ending_sequence_royalraceway(void) {
|
||||
s32 temp_t3;
|
||||
f32 temp_f;
|
||||
|
||||
gCurrentCourseId = 7;
|
||||
void load_ending_sequence_royalraceway(void) {
|
||||
gCurrentCourseId = COURSE_ROYAL_RACEWAY;
|
||||
D_800DC5B4 = (u16)1;
|
||||
D_800DC604 = 0;
|
||||
D_80287550 = 0xFFFF;
|
||||
@@ -181,27 +85,30 @@ void *load_ending_sequence_royalraceway(void) {
|
||||
D_800DC5EC->unk30 = (u16)0xA0;
|
||||
D_800DC5EC->unk32 = (u16)0x78;
|
||||
D_800DC530 = 0;
|
||||
D_8015F728 = (s32) D_8015F734;
|
||||
gPrevLoadedAddress = (s32) D_8015F734;
|
||||
D_800DC52C = 0;
|
||||
gModeSelection = 0;
|
||||
load_course(gCurrentCourseId);
|
||||
D_8015F730 = (s32) D_8015F728;
|
||||
set_segment_base_addr(0xB, func_802AA88C(&D_00821D10, &D_00825800));
|
||||
set_segment_base_addr(6, func_802AA88C(&D_00831DC0, &D_00835BA0));
|
||||
D_8015F730 = (s32) gPrevLoadedAddress;
|
||||
set_segment_base_addr(0xB, func_802AA88C(&_data_821D10SegmentRomStart, &_data_825800SegmentRomStart));
|
||||
set_segment_base_addr(6, func_802AA88C(&_course_banshee_boardwalk_dl_mio0SegmentRomStart, &_course_yoshi_valley_dl_mio0SegmentRomStart));
|
||||
D_8015F8E4 = -2000.0f;
|
||||
|
||||
D_8015F6EA = -0x15A1;
|
||||
D_8015F6EE = -0x15A1;
|
||||
D_8015F6F2 = -0x15A1;
|
||||
|
||||
D_8015F6E8 = 0x15A1;
|
||||
D_8015F6EC = 0x15A1;
|
||||
D_8015F6F0 = 0x15A1;
|
||||
|
||||
D_8015F59C = 0;
|
||||
D_8015F5A0 = 0;
|
||||
D_8015F58C = 0;
|
||||
D_8015F588 = (u16)0;
|
||||
D_800DC5BC = (u16)0;
|
||||
D_800DC5C8 = (u16)0;
|
||||
D_8015F580 = (s32) D_8015F728;
|
||||
D_8015F580 = (s32) gPrevLoadedAddress;
|
||||
func_802AF5AC(0x70067E8, -1);
|
||||
func_802AF5AC(0x700AEF8, -1);
|
||||
func_802AF5AC(0x700A970, 8);
|
||||
@@ -221,10 +128,6 @@ void *load_ending_sequence_royalraceway(void) {
|
||||
func_80280FB0();
|
||||
func_802816B8();
|
||||
func_80093E60();
|
||||
D_801625F8 = (s32) gHeapEndPtr - D_8015F728;
|
||||
D_801625F8 = (s32) gHeapEndPtr - gPrevLoadedAddress;
|
||||
D_801625FC = ((f32) D_801625F8 / 1000.0f);
|
||||
return &D_801625F8;
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/code_80281780/load_ending_sequence_royalraceway.s")
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
#ifndef CODE_80281780_H
|
||||
#define CODE_80281780_H
|
||||
|
||||
// variables found in code_80281780.c; not necessarily ones that belong there
|
||||
extern void func_802A4D18();
|
||||
extern void func_802A74BC();
|
||||
extern void load_course();
|
||||
extern u32 set_segment_base_addr();
|
||||
extern int func_802AA88C();
|
||||
extern void func_802AF5AC();
|
||||
extern void func_80295C6C();
|
||||
extern void func_80281780();
|
||||
extern void func_802818BC();
|
||||
extern void func_8003D080();
|
||||
extern void func_8006E9C0();
|
||||
extern void func_8001C05C();
|
||||
extern void func_80280FB0();
|
||||
extern void func_802816B8();
|
||||
extern void func_80093E60();
|
||||
extern void *gHeapEndPtr;
|
||||
|
||||
extern s16 gCurrentCourseId;
|
||||
extern u16 D_800DC5B4;
|
||||
|
||||
extern s32 D_800DC604;
|
||||
extern s32 D_800DC530;
|
||||
extern s32 D_800DC52C;
|
||||
extern s32 gModeSelection;
|
||||
extern u16 D_800DC5BC;
|
||||
extern u16 D_800DC5C8;
|
||||
extern struct UnkStruct_800DC5EC *D_800DC5EC;
|
||||
|
||||
extern s32 D_80287550;
|
||||
extern s32 D_80287554;
|
||||
extern f32 D_801647A4;
|
||||
extern f32 D_80150130;
|
||||
|
||||
extern s32 D_8015F728;
|
||||
extern s32 D_8015F734;
|
||||
|
||||
extern s32 D_8015F730;
|
||||
|
||||
extern f32 D_8015F8E4;
|
||||
extern s16 D_8015F6EA;
|
||||
extern s16 D_8015F6EE;
|
||||
extern s16 D_8015F6F2;
|
||||
extern u16 D_8015F6E8;
|
||||
extern u16 D_8015F6EC;
|
||||
extern u16 D_8015F6F0;
|
||||
extern s32 D_8015F59C;
|
||||
extern s32 D_8015F5A0;
|
||||
extern s32 D_8015F58C;
|
||||
extern u16 D_8015F588;
|
||||
|
||||
extern s32 D_8015F580;
|
||||
|
||||
extern s32 D_00821D10;
|
||||
extern s32 D_00825800;
|
||||
extern s32 D_00831DC0;
|
||||
extern s32 D_00835BA0;
|
||||
|
||||
extern s32 D_801625F8;
|
||||
extern f32 D_801625FC;
|
||||
|
||||
extern struct Controller *D_800DC4BC;
|
||||
extern s8 D_800E86A8[];
|
||||
extern u16 gEnableDebugMode;
|
||||
|
||||
extern void *D_80284ED0;
|
||||
extern s8 D_8018D9D0[];
|
||||
extern s8 D_8018EDF3;
|
||||
|
||||
extern s32 _data_821D10SegmentRomStart;
|
||||
extern s32 _data_825800SegmentRomStart;
|
||||
extern s32 _course_banshee_boardwalk_dl_mio0SegmentRomStart;
|
||||
extern s32 _course_yoshi_valley_dl_mio0SegmentRomStart;
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,84 @@
|
||||
#include <ultra64.h>
|
||||
#include <PR/gu.h>
|
||||
#include <macros.h>
|
||||
#include "main.h"
|
||||
|
||||
extern Gfx *gDisplayListHead;
|
||||
|
||||
struct UnkStruct80287560 {
|
||||
s16 unk0;
|
||||
s16 unk2;
|
||||
s32 unk4;
|
||||
s32 unk8;
|
||||
}; // 0xC
|
||||
|
||||
extern struct UnkStruct80287560 D_80287560[];
|
||||
extern s32 D_802874FC;
|
||||
|
||||
extern u32 D_80287550;
|
||||
extern s32 D_80287554;
|
||||
extern u16 D_800DC5C0;
|
||||
extern u32 D_800DC524;
|
||||
extern Gfx D_00284F70[];
|
||||
extern Gfx D_00284EE0[];
|
||||
extern f32 D_801646F0, D_801646F4, D_801646F8, D_801646FC,
|
||||
D_80164700, D_80164704, D_80164708, D_8016470C, D_80164710;
|
||||
extern f32 D_80150130, D_80150148, D_8015014C, D_80150150;
|
||||
|
||||
|
||||
void func_80281C40(void) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < D_802874FC; i++) {
|
||||
func_800579F8(D_80287560[i].unk0, D_80287560[i].unk2, D_80287560[i].unk8, D_80287560[i].unk4);
|
||||
}
|
||||
}
|
||||
|
||||
void func_80281CB4(s32 arg0, s32 arg1, s32 arg2, s32 arg3) {
|
||||
if (D_802874FC < 0x1E) {
|
||||
D_80287560[D_802874FC].unk0 = arg0;
|
||||
D_80287560[D_802874FC].unk2 = arg1;
|
||||
D_80287560[D_802874FC].unk4 = arg3;
|
||||
D_80287560[D_802874FC].unk8 = arg2;
|
||||
D_802874FC++;
|
||||
}
|
||||
}
|
||||
|
||||
void func_80281D00(void) {
|
||||
// could be a struct,
|
||||
// but for now we have the oddest way to match this function
|
||||
u16 sp64[48];
|
||||
|
||||
func_802A53A4();
|
||||
func_802A3E3C();
|
||||
if (D_80287550 != 0xFFFF) {
|
||||
func_80000D3C(0);
|
||||
if (D_80287554 >= 4) {
|
||||
D_800DC5C0 = 0;
|
||||
D_800DC524 = D_80287550;
|
||||
}
|
||||
D_80287554++;
|
||||
return;
|
||||
}
|
||||
func_8028150C();
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_ZBUFFER | G_SHADE | G_CULL_BACK | G_SHADING_SMOOTH);
|
||||
guPerspective((Mtx*) &gGfxPool->buffer[8], &sp64[39], D_80150130, D_80150148, D_80150150, D_8015014C, 1.0f);
|
||||
gDPHalf1(gDisplayListHead++, sp64[39]);
|
||||
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[8]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
|
||||
guLookAt((Mtx*) &gGfxPool->buffer[56], D_801646F0, D_801646F4, D_801646F8, D_801646FC, D_80164700, D_80164704, D_80164708, D_8016470C, D_80164710);
|
||||
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[56]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION);
|
||||
func_802B53C8(&sp64[6]);
|
||||
func_802B4FF8(&sp64[6], 0);
|
||||
gSPDisplayList(gDisplayListHead++, &D_00284F70);
|
||||
func_800212B4();
|
||||
gSPDisplayList(gDisplayListHead++, &D_00284EE0);
|
||||
// sp38 = &D_00284EE0;
|
||||
func_80281438();
|
||||
func_80058090(0);
|
||||
func_80021B0C();
|
||||
gSPDisplayList(gDisplayListHead++, &D_00284EE0);
|
||||
func_80093F10();
|
||||
func_80284CC0();
|
||||
func_80281C40();
|
||||
func_802A3E3C();
|
||||
}
|
||||
@@ -0,0 +1,388 @@
|
||||
#include <ultra64.h>
|
||||
#include <macros.h>
|
||||
#include <types.h>
|
||||
|
||||
/*
|
||||
struct D_800F2F90 D_800F2F90[] = {
|
||||
L800C0124, L800C0078, L800C0140, L800C0150,
|
||||
L800C0094, L800C035C, L800C03B4, L800C03EC,
|
||||
L800C03EC, L800C0438, L800C0448, L800C03EC,
|
||||
L800BFE40, L800BFE40, L800BFE40, L800C0468,
|
||||
L800C048C, L800C049C, L800C01E8, L800C034C,
|
||||
L800BFE40, L800BFE40, L800C02B4, L800C0298,
|
||||
L800C0288, L800C026C, L800C0254, L800C0238,
|
||||
L800C021C, L800C01B4, L800C0160, L800C0184,
|
||||
L800C0304, L800C02D0, L800C0338, L800C04BC,
|
||||
L800C04AC, L800C0518, L800C0528, L800C0590,
|
||||
L800C0630, L800BFEC4, L800C00D0, L800C0608,
|
||||
L800BFE40, L800BFE40, L800C0640, L800C0068,
|
||||
L800C0040, L800BFFF8, L800BFFF8, L800BFFF8,
|
||||
L800BFFA0, L800BFF90, L800BFF48, L800BFF10,
|
||||
L800BFFA0, L800BFFA0, L800BFFA0, L800BFED4,
|
||||
L800BFEB4, L800C0880, L800BFE7C
|
||||
};
|
||||
struct D_800F308C D_800F308C[] = {
|
||||
L800C0684, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800BFE40, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800BFE40, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800BFE40, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800C07E4, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800BFE40, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800BFE40, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800BFE40, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800C0814, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800BFE40, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800BFE40, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800BFE40, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800C0830, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800BFE40, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800BFE40, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800BFE40, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800C0858, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800BFE40, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800BFE40, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800BFE40, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800C06EC, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800BFE40, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800BFE40, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800BFE40, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800C0708, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800BFE40, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800BFE40, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800BFE40, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800C06BC, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800BFE40, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800BFE40, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800BFE40, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800C06CC, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800BFE40, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800BFE40, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800BFE40, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800C0714, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800BFE40, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800BFE40, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800BFE40, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800C0760, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800BFE40, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800BFE40, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800BFE40, L800BFE40, L800BFE40, L800BFE40,
|
||||
L800C077C
|
||||
};
|
||||
struct D_800F3350 D_800F3350[] = {
|
||||
L800C0FF4, L800C0FE4, L800C0AE8, L800C0AE8,
|
||||
L800C0FD4, L800C0AE8, L800C0AE8, L800C0AE8,
|
||||
L800C0FC4, L800C0F98, L800C0F98, L800C0F88,
|
||||
L800C0F78, L800C0F4C, L800C0F30, L800C0F14,
|
||||
L800C0AE8, L800C0EE8, L800C0DD4, L800C0E50,
|
||||
L800C0D50, L800C0D50, L800C0D30, L800C0D2C,
|
||||
L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8,
|
||||
L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8,
|
||||
L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8,
|
||||
L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8,
|
||||
L800C0D1C, L800C0CF4, L800C0CAC, L800C0CAC,
|
||||
L800C0CAC, L800C0C54, L800C0AE8, L800C0C0C,
|
||||
L800C0BD4, L800C0C54, L800C0C54, L800C0C54,
|
||||
L800C0B90, L800C0AE8, L800C0AE8, L800C0AE8,
|
||||
};
|
||||
struct D_800F3430 D_800F3430[] = {
|
||||
L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8,
|
||||
L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8,
|
||||
L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8,
|
||||
L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8,
|
||||
L800C1084, L800C0AE8, L800C0AE8, L800C0AE8,
|
||||
L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8,
|
||||
L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8,
|
||||
L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8,
|
||||
L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8,
|
||||
L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8,
|
||||
L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8,
|
||||
L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8,
|
||||
L800C1090, L800C0AE8, L800C0AE8, L800C0AE8,
|
||||
L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8,
|
||||
L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8,
|
||||
L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8,
|
||||
L800C1098, L800C0AE8, L800C0AE8, L800C0AE8,
|
||||
L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8,
|
||||
L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8,
|
||||
L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8,
|
||||
L800C10A0, L800C0AE8, L800C0AE8, L800C0AE8,
|
||||
L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8,
|
||||
L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8,
|
||||
L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8,
|
||||
L800C0AE8,
|
||||
|
||||
0x00000000, 0x00000000, 0x00000000
|
||||
};
|
||||
float D_800F35C0 = 3.333333333;
|
||||
struct D_800F35C4 D_800F35C4[] = {
|
||||
L800C1A34, L800C1A34, L800C1A34, L800C1A34,
|
||||
L800C1AEC, L800C1A34
|
||||
};
|
||||
float D_800F35DC = 0.1;
|
||||
|
||||
float D_800F35E0 = 100000.0;
|
||||
|
||||
float D_800F35E4 = 100000.0;
|
||||
|
||||
float D_800F35E8 = 0.85;
|
||||
|
||||
struct D_800F35EC D_800F35EC[] = {
|
||||
L800C2A80, L800C2AB8, L800C2AD8, L800C2CDC,
|
||||
L800C2E40, L800C2F04, L800C3008, L800C3118,
|
||||
L800C3154, L800C31E4, L800C3218, L800C32B8,
|
||||
L800C32EC, L800C3430, L800C3390, L800C33E0
|
||||
};
|
||||
struct D_800F362C D_800F362C[] = {
|
||||
L800C3DEC, L800C3E10, L800C3E30, L800C3E70,
|
||||
L800C3E98, L800C3EBC, L800C3F04
|
||||
};
|
||||
float D_800F3648 = 100000.0;
|
||||
|
||||
struct D_800F364C D_800F364C[] = {
|
||||
L800C423C, L800C4268, L800C42A4, L800C42C8,
|
||||
L800C42FC, L800C4330
|
||||
};
|
||||
float D_800F3664 = 100000.0;
|
||||
float D_800F3668 = 100000.0;
|
||||
float D_800F366C = 4000000.0;
|
||||
float D_800F3670 = 10000000000.0;
|
||||
float D_800F3674 = 0.6;
|
||||
float D_800F3678 = 0.4;
|
||||
float D_800F367C = 0.005000;
|
||||
float D_800F3680 = 0.01;
|
||||
float D_800F3684 = 12000.0;
|
||||
float D_800F3688 = 0.03;
|
||||
float D_800F368C = 0.03;
|
||||
float D_800F3690 = 0.4;
|
||||
struct D_800F3694 D_800F3694[] = {
|
||||
L800C6544, L800C6618, L800C64E4, L800C65B8
|
||||
L800C65B8, L800C65B8, L800C65B8, L800C65B8
|
||||
L800C65B8, L800C65B8, L800C65B8, L800C65B8
|
||||
L800C6544, L800C6544, L800C6618, L800C6618
|
||||
L800C6544, L800C6618, L800C6618, L800C6618
|
||||
L800C6618, L800C65B8, L800C65B8, L800C65B8
|
||||
L800C6618, L800C6618, L800C6618, L800C6618
|
||||
L800C65B8, L800C65B8, L800C65B8
|
||||
};
|
||||
float D_800F3710 = 0.2;
|
||||
float D_800F3714 = 3500.0;
|
||||
float D_800F3718 = 3000.0;
|
||||
float D_800F371C = 0.4;
|
||||
float D_800F3720 = 0.2;
|
||||
float D_800F3724 = 0.06;
|
||||
float D_800F3728 = 0.56;
|
||||
float D_800F372C = 0.9;
|
||||
float D_800F3730 = 0.6;
|
||||
float D_800F3734 = 13000.0;
|
||||
float D_800F3738 = 0.95;
|
||||
|
||||
struct D_800F373C D_800F373C[] = {
|
||||
L800C69C8, L800C6A0C, L800C6910, L800C6C74,
|
||||
L800C6CB8, L800C6CFC, L800C6D40, L800C6D84,
|
||||
L800C6DC8, L800C6E0C, L800C6E50, L800C6E94,
|
||||
L800C6FA4, L800C6E0C, L800C6A98, L800C6ADC,
|
||||
L800C6A50, L800C6958, L800C6990, L800C6B20,
|
||||
L800C7070, L800C6FA4, L800C6FE8, L800C702C,
|
||||
L800C6B64, L800C6BA8, L800C6BEC, L800C6C30,
|
||||
L800C6ED8, L800C6F1C, L800C6F60
|
||||
};
|
||||
float D_800F37B8 = 3500.0;
|
||||
struct D_800F37BC
|
||||
L800C718C, L800C7198, L800C71B0, L800C71BC,
|
||||
L800C71A4, L800C71F4, L800C71F4, L800C71C8,
|
||||
L800C71F4, L800C71F4, L800C71F4, L800C71F4,
|
||||
L800C71EC, L800C71F4, L800C71D4, L800C71E0,
|
||||
};
|
||||
struct D_800F37FC D_800F37FC[] = {
|
||||
L800C7238, L800C7244, L800C725C, L800C7268,
|
||||
L800C7250, L800C7294, L800C7294, L800C7274,
|
||||
L800C7294, L800C7294, L800C7294, L800C7294,
|
||||
L800C7290, L800C7294, L800C7280, L800C7288,
|
||||
};
|
||||
struct D_800F383C D_800F383C[] = {
|
||||
L800C72F8, L800C72B8, L800C742C, L800C73B8,
|
||||
L800C7378, L800C742C, L800C7338, L800C7428,
|
||||
L800C742C, L800C7418, L800C7420,
|
||||
};
|
||||
struct D_800F3868 D_800F3868[] = {
|
||||
L800C7494, L800C7454, L800C75C8, L800C7554,
|
||||
L800C7514, L800C75C8, L800C74D4, L800C75C4,
|
||||
L800C75C8, L800C75B4, L800C75BC,
|
||||
};
|
||||
float D_800F3894 = 0.7;
|
||||
float D_800F3898 = 0.1;
|
||||
float D_800F389C = 0.03;
|
||||
float D_800F38A0 = 0.16;
|
||||
float D_800F38A4 = 0.15;
|
||||
float D_800F38A8 = 0.03;
|
||||
float D_800F38AC = 0.012000;
|
||||
float D_800F38B0 = 0.85;
|
||||
float D_800F38B4 = 0.85;
|
||||
float D_800F38B8 = {
|
||||
L800C9560, L800C9560, L800C95BC, L800C9618,
|
||||
L800C9674, L800C96D0, L800C95BC, L800C96D0,
|
||||
};
|
||||
float D_800F38D8 = 0.35;
|
||||
float D_800F38DC = 2.800000;
|
||||
float D_800F38E0 = 3844.0;
|
||||
float D_800F38E4 = -0.8;
|
||||
float D_800F38E8 = 1568.979614;
|
||||
float D_800F38EC = 1067.777832;
|
||||
float D_800F38F0 = 2766.064941;
|
||||
float D_800F38F4 = 0.6;
|
||||
float D_800F38F8 = 3.200000;
|
||||
float D_800F38FC = 3844.0;
|
||||
float D_800F3900 = -1.700000;
|
||||
float D_800F3904 = 1478.461548;
|
||||
float D_800F3908 = 784.489807;
|
||||
float D_800F390C = 12813.334961;
|
||||
float D_800F3910 = 0.6;
|
||||
float D_800F3914 = 2.800000;
|
||||
float D_800F3918 = 3844.0;
|
||||
float D_800F391C = -0.6;
|
||||
float D_800F3920 = 1747.272827;
|
||||
float D_800F3924 = 1130.588257;
|
||||
float D_800F3928 = 3844.000977;
|
||||
float D_800F392C = 0.2;
|
||||
float D_800F3930 = 3844.0;
|
||||
float D_800F3934 = -0.4;
|
||||
float D_800F3938 = 2135.555664;
|
||||
float D_800F393C = 1601.666626;
|
||||
float D_800F3940 = 3203.333008;
|
||||
float D_800F3944 = 0.4;
|
||||
float D_800F3948 = 2.400000;
|
||||
float D_800F394C = 3844.0;
|
||||
float D_800F3950 = -0.8;
|
||||
float D_800F3954 = 1922.0;
|
||||
float D_800F3958 = 1201.250000;
|
||||
float D_800F395C = 4805.0;
|
||||
|
||||
struct D_800F3960 = {
|
||||
L800C9B3C, L800C9B3C, L800C9B68, L800C9B94,
|
||||
L800C9BC0, L800C9BEC, L800C9B68, L800C9BEC,
|
||||
};
|
||||
float D_800F3980 = 0.35;
|
||||
float D_800F3984 = 1568.979614;
|
||||
float D_800F3988 = 0.6;
|
||||
float D_800F398C = 1478.461548;
|
||||
float D_800F3990 = 0.6;
|
||||
float D_800F3994 = 1747.272827;
|
||||
float D_800F3998 = 0.2;
|
||||
float D_800F399C = 2135.555664;
|
||||
float D_800F39A0 = 0.4;
|
||||
float D_800F39A4 = 1922.0;
|
||||
float D_800F39A8 = 0.55;
|
||||
float D_800F39AC = 0.45;
|
||||
float D_800F39B0 = 0.7;
|
||||
float D_800F39B4 = 0.1;
|
||||
|
||||
struct D_800F39C0 D_800F39C0[] = {
|
||||
L800CBE60, L800CBE78, L800CBE90, L800CBEA8,
|
||||
L800CBEC0, L800CBECC, L800CBF08, L800CBEEC,
|
||||
};
|
||||
float D_800F39E0 = 0.017453292;
|
||||
double D_800F39F0 = {
|
||||
0.017453292222222222
|
||||
|
||||
0x00000000, 0x00000000
|
||||
};
|
||||
s8 D_800F3A00[] = {
|
||||
0x00, 0x14, 0x18, 0x18, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x00, 0x04, 0x08, 0x08, 0x0c, 0x0c, 0x0c, 0x0c,
|
||||
0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
|
||||
};
|
||||
struct D_800F3A20 D_800F3A20[] = {
|
||||
L800D1668, L800D1630, L800D1610, L800D1474,
|
||||
L800D1420, L800D15B4, L800D13E8, L800D13F4,
|
||||
L800D1400,
|
||||
|
||||
0x00000000, 0x00000000, 0x00000000
|
||||
};
|
||||
struct D_800F3A50 D_800F3A50[] = {
|
||||
L800D3480, L800D3374, L800D33B4, L800D34A0,
|
||||
L800D34A0, L800D33F0, L800D3438, 0x00000000
|
||||
};
|
||||
double D_800F3A70[] = {
|
||||
1.0,
|
||||
-0.16666659550427756,
|
||||
0.0083330662460821547,
|
||||
-0.00019809602901937949,
|
||||
2.6057806379680372e-06
|
||||
};
|
||||
double D_800F3A98 = 0.31830988618379069;
|
||||
double D_800F3AA0 = 3.1415926218032837;
|
||||
double D_800F3AA8 = 3.1786509547056392e-08;
|
||||
float D_800F3AB0[] = {
|
||||
0.0, 0x00000000, 0x00000000, 0x00000000
|
||||
};
|
||||
double D_800F3AC0[] = {
|
||||
1.0,
|
||||
-0.16666659550427756,
|
||||
0.0083330662460821547,
|
||||
-0.00019809602901937949,
|
||||
2.6057806379680372e-06,
|
||||
};
|
||||
double D_800F3AE8 = 0.31830988618379069;
|
||||
double D_800F3AF0 = 3.1415926218032837;
|
||||
double D_800F3AF8 = 3.1786509547056392e-08;
|
||||
|
||||
float D_800F3B00[] = {
|
||||
0.0, 0x00000000, 0x00000000, 0x00000000
|
||||
};
|
||||
char D_800F3B10[] = "hlL";
|
||||
char D_800F3B14[] = " +-#0";
|
||||
|
||||
|
||||
|
||||
|
||||
s32 D_800F3B1C[] = {
|
||||
0x00000001, 0x00000002, 0x00000004, 0x00000008,
|
||||
0x00000010, 0x00000000
|
||||
};
|
||||
|
||||
|
||||
u16 gCupTrackOrder[] = { // ISSUE CHECK WRONG PREVIEW TEXTURES
|
||||
0x0008, 0x0009, 0x0006, 0x000b, // mushroom cup: LR, MMF, KTB, KD
|
||||
0x000a, 0x0005, 0x0001, 0x0000, // flower cup: TT, FS, CM, MR
|
||||
0x000e, 0x000c, 0x0007, 0x0002, // star cup: WS, SL, RRy, BC
|
||||
0x0012, 0x0004, 0x0003, 0x000d, // special cup: DKJP, YV, BB, RRd
|
||||
0x0013, 0x000f, 0x0011, 0x0010, // battle mode: BD, BF, DD, Sky
|
||||
0x0100,
|
||||
0x0000,
|
||||
0x0001, 0x0304
|
||||
};
|
||||
|
||||
|
||||
|
||||
s32 D_800F3B1C[] = {
|
||||
0x00000001, 0x00000002, 0x00000004, 0x00000008, 0x00000010, 0x00000000,
|
||||
};
|
||||
|
||||
*/
|
||||
|
||||
u16 D_800F3C10[] = {
|
||||
0x0555, 0x0556, 0x0559, 0x055a, 0x0565, 0x0566, 0x0569, 0x056a,
|
||||
0x0595, 0x0596, 0x0599, 0x059a, 0x05a5, 0x05a6, 0x05a9, 0x05aa,
|
||||
0x0655, 0x0656, 0x0659, 0x065a, 0x0665, 0x0666, 0x0669, 0x066a,
|
||||
0x0695, 0x0696, 0x0699, 0x069a, 0x06a5, 0x06a6, 0x06a9, 0x06aa,
|
||||
0x0955, 0x0956, 0x0959, 0x095a, 0x0965, 0x0966, 0x0969, 0x096a,
|
||||
0x0995, 0x0996, 0x0999, 0x099a, 0x09a5, 0x09a6, 0x09a9, 0x09aa,
|
||||
0x0a55, 0x0a56, 0x0a59, 0x0a5a, 0x0a65, 0x0a66, 0x0a69, 0x0a6a,
|
||||
0x0a95, 0x0a96, 0x0a99, 0x0a9a, 0x0aa5, 0x0aa6, 0x0aa9, 0x0aaa,
|
||||
};
|
||||
int D_800F3C90[] = {0x7f810000, 0x00000000, 0x00000000, 0x00000000 }; // NaN?
|
||||
|
||||
double D_800F3CA0[] = {
|
||||
10.0, 100.0, 10000.0, 100000000.0, 10000000000000000.0,
|
||||
1.0e+32, 1.0e+64, 1.0e+128, 1.0e+256
|
||||
};
|
||||
|
||||
char D_800F3CE8[] = "NaN";
|
||||
char D_800F3CEC[] = "Inf";
|
||||
|
||||
|
||||
char D_800F3CF0[] = "0";
|
||||
float D_800F3CF4 = 0x00000000; // .word
|
||||
double D_800F3CF8 = 100000000.0;
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
#include <ultra64.h>
|
||||
#include <macros.h>
|
||||
#include "types.h"
|
||||
#include "PR/gu.h"
|
||||
|
||||
extern s16 D_800E43A8;
|
||||
extern Mtx D_0D008E98;
|
||||
extern Gfx* gDisplayListHead;
|
||||
extern Mtx* gGfxPool;
|
||||
|
||||
// rsp init
|
||||
void gfx_func_80040D00(void) {
|
||||
D_800E43A8 = 0;
|
||||
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
|
||||
guFrustum((Mtx *) gGfxPool, 0.0f, 320.0f, 0.0f, 240.0f, -1.0f, 1.0f, 1.0f);
|
||||
gDPHalf1(gDisplayListHead++, 0x0000FFFF);
|
||||
gSPMatrix(gDisplayListHead++, (u32) gGfxPool & 0x1FFFFFFF, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
|
||||
gSPMatrix(gDisplayListHead++, (u32) &D_0D008E98 & 0x1FFFFFFF, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
}
|
||||
@@ -0,0 +1,452 @@
|
||||
#include <ultra64.h>
|
||||
#include <macros.h>
|
||||
#include "types.h"
|
||||
#include "kart_attributes.h"
|
||||
|
||||
// Mario Luigi Yoshi Toad D.K. Wario Peach Bowser
|
||||
float D_800E2360[] = {
|
||||
-10.0, -10.0, -10.0, -10.0, -10.0, -10.0, -10.0, -10.0,
|
||||
};
|
||||
float D_800E2380[] = {
|
||||
-15.0, -15.0, -15.0, -15.0, -15.0, -15.0, -15.0, -15.0,
|
||||
};
|
||||
float D_800E23A0[] = {
|
||||
-20.0, -20.0, -20.0, -20.0, -20.0, -20.0, -20.0, -20.0,
|
||||
};
|
||||
float D_800E23C0[] = {
|
||||
-15.0, -15.0, -15.0, -15.0, -15.0, -15.0, -15.0, -15.0,
|
||||
};
|
||||
float D_800E23E0[] = {
|
||||
-30.0, -30.0, -30.0, -30.0, -30.0, -30.0, -30.0, -30.0,
|
||||
};
|
||||
struct D_800E2400 D_800E2400 = {
|
||||
D_800E2360,
|
||||
};
|
||||
struct D_800E2404 D_800E2404 = {
|
||||
D_800E2380, D_800E23A0, D_800E23C0,
|
||||
};
|
||||
struct D_800E2410 D_800E2410 = {
|
||||
D_800E23E0,
|
||||
};
|
||||
// Mario Luigi Yoshi Toad D.K. Wario Peach Bowser
|
||||
float D_800E2414[] = {
|
||||
28.0, 28.0, 28.0, 28.0, 28.0, 28.0, 28.0, 28.0,
|
||||
};
|
||||
float D_800E2434[] = {
|
||||
28.0, 28.0, 28.0, 28.0, 28.0, 28.0, 28.0, 28.0,
|
||||
};
|
||||
float D_800E2454[] = {
|
||||
35.0, 35.0, 35.0, 35.0, 35.0, 35.0, 35.0, 35.0,
|
||||
};
|
||||
float D_800E2474[] = {
|
||||
28.0, 28.0, 28.0, 28.0, 28.0, 28.0, 28.0, 28.0,
|
||||
};
|
||||
float D_800E2494[] = {
|
||||
48.0, 48.0, 48.0, 48.0, 48.0, 48.0, 48.0, 48.0,
|
||||
};
|
||||
struct D_800E24B4 D_800E24B4 = {
|
||||
D_800E2414,
|
||||
};
|
||||
struct D_800E24B8 D_800E24B8 = {
|
||||
D_800E2434, D_800E2454, D_800E2474,
|
||||
};
|
||||
struct D_800E24C4 D_800E24C4 = {
|
||||
D_800E2494,
|
||||
};
|
||||
// Mario Luigi Yoshi Toad D.K. Wario Peach Bowser
|
||||
float D_800E24C8[] = {
|
||||
3364.0, 3364.0, 3457.0, 3457.0, 3364.0, 3364.0, 3457.0, 3364.0,
|
||||
};
|
||||
float D_800E24E8[] = {
|
||||
3844.0, 3844.0, 3943.0, 3943.0, 3844.0, 3844.0, 3943.0, 3844.0,
|
||||
};
|
||||
float D_800E2508[] = {
|
||||
4096.0, 4096.0, 4199.0, 4199.0, 4096.0, 4096.0, 4199.0, 4096.0,
|
||||
};
|
||||
float D_800E2528[] = {
|
||||
3844.0, 3844.0, 3943.0, 3943.0, 3844.0, 3844.0, 3943.0, 3844.0,
|
||||
};
|
||||
float D_800E2548[] = {
|
||||
2401.0, 2401.0, 2401.0, 2401.0, 2401.0, 2401.0, 2401.0, 2401.0,
|
||||
};
|
||||
struct D_800E2568 D_800E2568 = {
|
||||
D_800E24C8,
|
||||
};
|
||||
struct D_800E256C D_800E256C = {
|
||||
D_800E24E8, D_800E2508, D_800E2528,
|
||||
};
|
||||
struct D_800E2578 D_800E2578 = {
|
||||
D_800E2548,
|
||||
};
|
||||
// Mario Luigi Yoshi Toad D.K. Wario Peach Bowser
|
||||
float D_800E257C[] = { // 50CC
|
||||
290.0, 290.0, 294.0, 294.0, 290.0, 290.0, 294.0, 290.0,
|
||||
};
|
||||
float D_800E259C[] = { // 100CC
|
||||
310.0, 310.0, 314.0, 314.0, 310.0, 310.0, 314.0, 310.0,
|
||||
};
|
||||
float D_800E25BC[] = { // 150CC
|
||||
320.0, 320.0, 324.0, 324.0, 320.0, 320.0, 324.0, 320.0,
|
||||
};
|
||||
float D_800E25DC[] = { // Extra
|
||||
310.0, 310.0, 314.0, 314.0, 310.0, 310.0, 314.0, 310.0,
|
||||
};
|
||||
float D_800E25FC[] = { // Battle mode
|
||||
245.0, 245.0, 245.0, 245.0, 245.0, 245.0, 245.0, 245.0,
|
||||
};
|
||||
|
||||
struct D_800E261C D_800E261C = {
|
||||
D_800E257C,
|
||||
};
|
||||
struct D_800E2620 D_800E2620 = {
|
||||
D_800E259C, D_800E25BC, D_800E25DC,
|
||||
};
|
||||
struct D_800E262C D_800E262C = {
|
||||
D_800E25FC,
|
||||
};
|
||||
// Mario Luigi Yoshi Toad D.K. Wario Peach Bowser
|
||||
float gKartFrictionTable[] = {
|
||||
5800.0, 5800.0, 5800.0, 5800.0, 5800.0, 5800.0, 5800.0, 5800.0,
|
||||
};
|
||||
float gKartGravityTable[] = {
|
||||
2600.0, 2600.0, 2600.0, 2600.0, 2600.0, 2600.0, 2600.0, 2600.0,
|
||||
};
|
||||
float D_800E2670[] = {
|
||||
0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12,
|
||||
};
|
||||
float gKartTopSpeedTable[] = {
|
||||
9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0,
|
||||
};
|
||||
float gKartBoundingBoxTable[] = {
|
||||
5.5, 5.5, 5.5, 5.5, 5.5, 6.0, 5.5, 6.0,
|
||||
};
|
||||
|
||||
// Mario
|
||||
float D_800E26D0[] = {
|
||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.38, 0.38, 0.0, 0.38, 0.1, 0.0, 0.38, 0.0,
|
||||
};
|
||||
// Luigi
|
||||
float D_800E270C[] = {
|
||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.38, 0.38, 0.0, 0.38, 0.1, 0.0, 0.38, 0.0,
|
||||
};
|
||||
// Yoshi
|
||||
float D_800E2748[] = {
|
||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.38, 0.38, 0.0, 0.38, 0.1, 0.0, 0.38, 0.0,
|
||||
};
|
||||
// Toad
|
||||
float D_800E2784[] = {
|
||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.38, 0.38, 0.0, 0.38, 0.1, 0.0, 0.38, 0.0,
|
||||
};
|
||||
// Donkey Kong
|
||||
float D_800E27C0[] = {
|
||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.38, 0.38, 0.0, 0.38, 0.1, 0.0, 0.38, 0.0,
|
||||
};
|
||||
// Wario
|
||||
float D_800E27FC[] = {
|
||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.38, 0.38, 0.0, 0.38, 0.1, 0.0, 0.38, 0.0,
|
||||
};
|
||||
// Peach
|
||||
float D_800E2838[] = {
|
||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.38, 0.38, 0.0, 0.38, 0.1, 0.0, 0.38, 0.0,
|
||||
};
|
||||
// Bowser
|
||||
float D_800E2874[] = {
|
||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.38, 0.38, 0.0, 0.38, 0.1, 0.0, 0.38, 0.0,
|
||||
};
|
||||
// Mario
|
||||
float D_800E28B0[] = {
|
||||
0.0, 0.0, 0.3, 0.3, 0.0, 0.3, 0.0, 0.58, 0.58, 0.0, 0.58, 0.28, 0.0, 0.58, 0.0,
|
||||
};
|
||||
// Luigi
|
||||
float D_800E28EC[] = {
|
||||
0.0, 0.0, 0.3, 0.3, 0.0, 0.3, 0.0, 0.58, 0.58, 0.0, 0.58, 0.28, 0.0, 0.58, 0.0,
|
||||
};
|
||||
// Yoshi
|
||||
float D_800E2928[] = {
|
||||
0.0, 0.0, 0.3, 0.3, 0.0, 0.3, 0.0, 0.58, 0.58, 0.0, 0.58, 0.28, 0.0, 0.58, 0.0,
|
||||
};
|
||||
// Toad
|
||||
float D_800E2964[] = {
|
||||
0.0, 0.0, 0.3, 0.3, 0.0, 0.3, 0.0, 0.58, 0.58, 0.0, 0.58, 0.28, 0.0, 0.58, 0.0,
|
||||
};
|
||||
// Donkey Kong
|
||||
float D_800E29A0[] = {
|
||||
0.0, 0.0, 0.3, 0.3, 0.0, 0.3, 0.0, 0.58, 0.58, 0.0, 0.58, 0.28, 0.0, 0.58, 0.0,
|
||||
};
|
||||
// Wario
|
||||
float D_800E29DC[] = {
|
||||
0.0, 0.0, 0.3, 0.3, 0.0, 0.3, 0.0, 0.58, 0.58, 0.0, 0.58, 0.28, 0.0, 0.58, 0.0,
|
||||
};
|
||||
// Peach
|
||||
float D_800E2A18[] = {
|
||||
0.0, 0.0, 0.3, 0.3, 0.0, 0.3, 0.0, 0.58, 0.58, 0.0, 0.58, 0.28, 0.0, 0.58, 0.0,
|
||||
};
|
||||
// Bowser
|
||||
float D_800E2A54[] = {
|
||||
0.0, 0.0, 0.3, 0.3, 0.0, 0.3, 0.0, 0.58, 0.58, 0.0, 0.58, 0.28, 0.0, 0.58, 0.0,
|
||||
};
|
||||
struct D_800E2A90 D_800E2A90 = {
|
||||
D_800E28B0, D_800E28EC, D_800E2928, D_800E2964,
|
||||
D_800E29A0, D_800E29DC, D_800E2A18, D_800E2A54,
|
||||
};
|
||||
struct D_800E2AB0 D_800E2AB0 = {
|
||||
D_800E26D0, D_800E270C, D_800E2748, D_800E2784,
|
||||
D_800E27C0, D_800E27FC, D_800E2838, D_800E2874,
|
||||
};
|
||||
// Mario
|
||||
float D_800E2AD0[] = {
|
||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.03, 0.03, 0.0, 0.0, 0.03, 0.0, 0.03, 0.03,
|
||||
};
|
||||
// Luigi
|
||||
float D_800E2B0C[] = {
|
||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.03, 0.03, 0.0, 0.0, 0.03, 0.0, 0.03, 0.03,
|
||||
};
|
||||
// Yoshi
|
||||
float D_800E2B48[] = {
|
||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.02, 0.02, 0.0, 0.0, 0.02, 0.0, 0.02, 0.02,
|
||||
};
|
||||
// Toad
|
||||
float D_800E2B84[] = {
|
||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.02, 0.02, 0.0, 0.0, 0.02, 0.0, 0.02, 0.02,
|
||||
};
|
||||
// Donkey Kong
|
||||
float D_800E2BC0[] = {
|
||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.04, 0.04, 0.0, 0.0, 0.04, 0.0, 0.04, 0.04,
|
||||
};
|
||||
// Wario
|
||||
float D_800E2BFC[] = {
|
||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.04, 0.04, 0.0, 0.0, 0.04, 0.0, 0.04, 0.04,
|
||||
};
|
||||
// Peach
|
||||
float D_800E2C38[] = {
|
||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.02, 0.02, 0.0, 0.0, 0.02, 0.0, 0.02, 0.02,
|
||||
};
|
||||
// Bowser
|
||||
float D_800E2C74[] = {
|
||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.04, 0.04, 0.0, 0.0, 0.04, 0.0, 0.04, 0.04,
|
||||
};
|
||||
// Mario
|
||||
float D_800E2CB0[] = {
|
||||
0.0, 0.0, 0.0, 0.03, 0.0, 0.0, 0.0, 0.09, 0.09, 0.0, 0.0, 0.09, 0.0, 0.09, 0.09,
|
||||
};
|
||||
// Luigi
|
||||
float D_800E2CEC[] = {
|
||||
0.0, 0.0, 0.0, 0.03, 0.0, 0.0, 0.0, 0.09, 0.09, 0.0, 0.0, 0.09, 0.0, 0.09, 0.09,
|
||||
};
|
||||
// Yoshi
|
||||
float D_800E2D28[] = {
|
||||
0.0, 0.0, 0.0, 0.02, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0, 0.0, 0.08, 0.0, 0.08, 0.08,
|
||||
};
|
||||
// Toad
|
||||
float D_800E2D64[] = {
|
||||
0.0, 0.0, 0.0, 0.02, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0, 0.0, 0.08, 0.0, 0.08, 0.08,
|
||||
};
|
||||
// Donkey Kong
|
||||
float D_800E2DA0[] = {
|
||||
0.0, 0.0, 0.0, 0.04, 0.0, 0.0, 0.0, 0.1, 0.1, 0.0, 0.0, 0.1, 0.0, 0.1, 0.1,
|
||||
};
|
||||
// Wario
|
||||
float D_800E2DDC[] = {
|
||||
0.0, 0.0, 0.0, 0.04, 0.0, 0.0, 0.0, 0.1, 0.1, 0.0, 0.0, 0.1, 0.0, 0.1, 0.1,
|
||||
};
|
||||
// Peach
|
||||
float D_800E2E18[] = {
|
||||
0.0, 0.0, 0.0, 0.02, 0.0, 0.0, 0.0, 0.08, 0.08, 0.0, 0.0, 0.08, 0.0, 0.08, 0.08,
|
||||
};
|
||||
// Bowser
|
||||
float D_800E2E54[] = {
|
||||
0.0, 0.0, 0.0, 0.04, 0.0, 0.0, 0.0, 0.1, 0.1, 0.0, 0.0, 0.1, 0.0, 0.1, 0.1,
|
||||
};
|
||||
struct D_800E2E90 D_800E2E90 = {
|
||||
D_800E2CB0, D_800E2CEC, D_800E2D28, D_800E2D64,
|
||||
D_800E2DA0, D_800E2DDC, D_800E2E18, D_800E2E54,
|
||||
};
|
||||
struct D_800E2EB0 D_800E2EB0 = {
|
||||
D_800E2AD0, D_800E2B0C, D_800E2B48, D_800E2B84,
|
||||
D_800E2BC0, D_800E2BFC, D_800E2C38, D_800E2C74,
|
||||
};
|
||||
// accel1 accel2 accel3 accel4 accel5 accel6 accel7 accel8 accel9 accel10
|
||||
float gKartAccelerationMario[] = {
|
||||
2.0, 2.0, 2.0, 1.6, 1.4, 1.2, 1.0, 0.8, 0.6, 0.4,
|
||||
};
|
||||
float gKartAccelerationLuigi[] = {
|
||||
2.0, 2.0, 2.0, 1.6, 1.4, 1.2, 1.0, 0.8, 0.6, 0.4,
|
||||
};
|
||||
float gKartAccelerationYoshi[] = {
|
||||
2.0, 2.0, 2.5, 2.6, 2.6, 2.0, 1.5, 0.8, 0.8, 0.8,
|
||||
};
|
||||
float gKartAccelerationToad[] = {
|
||||
2.0, 2.0, 2.5, 2.6, 2.6, 2.0, 1.5, 0.8, 0.8, 0.8,
|
||||
};
|
||||
float gKartAccelerationDK[] = {
|
||||
2.0, 2.0, 2.0, 1.6, 1.0, 1.0, 1.0, 1.8, 1.8, 1.2,
|
||||
};
|
||||
float gKartAccelerationWario[] = {
|
||||
2.0, 2.0, 2.0, 1.6, 1.0, 1.0, 1.0, 1.8, 1.8, 1.2,
|
||||
};
|
||||
float gKartAccelerationPeach[] = {
|
||||
2.0, 2.0, 2.5, 2.6, 2.6, 2.0, 1.5, 0.8, 0.8, 0.8,
|
||||
};
|
||||
float gKartAccelerationBowser[] = {
|
||||
2.0, 2.0, 2.0, 1.6, 1.0, 1.0, 1.0, 1.8, 1.8, 1.2,
|
||||
};
|
||||
struct gKartAccelerationTables gKartAccelerationTables = {
|
||||
gKartAccelerationMario, gKartAccelerationLuigi, gKartAccelerationYoshi, gKartAccelerationToad,
|
||||
gKartAccelerationDK, gKartAccelerationWario, gKartAccelerationPeach, gKartAccelerationBowser,
|
||||
};
|
||||
// Mario
|
||||
float D_800E3030[] = {
|
||||
0.0, 0.0, 0.2, 0.2, 0.0, 0.4, 0.1, 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
||||
};
|
||||
// Luigi
|
||||
float D_800E306C[] = {
|
||||
0.0, 0.0, 0.2, 0.2, 0.0, 0.4, 0.1, 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
||||
};
|
||||
// Yoshi
|
||||
float D_800E30A8[] = {
|
||||
0.0, 0.0, 0.2, 0.2, 0.0, 0.4, 0.1, 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
||||
};
|
||||
// Toad
|
||||
float D_800E30E4[] = {
|
||||
0.0, 0.0, 0.2, 0.2, 0.0, 0.4, 0.1, 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
||||
};
|
||||
// Donkey Kong
|
||||
float D_800E3120[] = {
|
||||
0.0, 0.0, 0.2, 0.2, 0.0, 0.4, 0.1, 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
||||
};
|
||||
// Ware
|
||||
float D_800E315C[] = {
|
||||
0.0, 0.0, 0.2, 0.2, 0.0, 0.4, 0.1, 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
||||
};
|
||||
// Peach
|
||||
float D_800E3198[] = {
|
||||
0.0, 0.0, 0.2, 0.2, 0.0, 0.4, 0.1, 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
||||
};
|
||||
// Bowser
|
||||
float D_800E31D4[] = {
|
||||
0.0, 0.0, 0.2, 0.2, 0.0, 0.4, 0.1, 0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
||||
};
|
||||
struct D_800E3210 D_800E3210 = {
|
||||
D_800E3030, D_800E306C, D_800E30A8, D_800E30E4,
|
||||
D_800E3120, D_800E315C, D_800E3198, D_800E31D4,
|
||||
};
|
||||
// Mario
|
||||
float D_800E3230[] = {
|
||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
||||
};
|
||||
// Luigi
|
||||
float D_800E326C[] = {
|
||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
||||
};
|
||||
// Yoshi
|
||||
float D_800E32A8[] = {
|
||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
||||
};
|
||||
// Toad
|
||||
float D_800E32E4[] = {
|
||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
||||
};
|
||||
// Donkey Kong
|
||||
float D_800E3320[] = {
|
||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
||||
};
|
||||
// Wario
|
||||
float D_800E335C[] = {
|
||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
||||
};
|
||||
// Peach
|
||||
float D_800E3398[] = {
|
||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
||||
};
|
||||
// Bowser
|
||||
float D_800E33D4[] = {
|
||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
||||
};
|
||||
|
||||
|
||||
struct D_800E3410 D_800E3410 = {
|
||||
D_800E3230, D_800E326C, D_800E32A8, D_800E32E4,
|
||||
D_800E3320, D_800E335C, D_800E3398, D_800E33D4,
|
||||
};
|
||||
// Mario
|
||||
float D_800E3430[] = {
|
||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
||||
};
|
||||
// Luigi
|
||||
float D_800E346C[] = {
|
||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
||||
};
|
||||
// Yoshi
|
||||
float D_800E34A8[] = {
|
||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
||||
};
|
||||
// Toad
|
||||
float D_800E34E4[] = {
|
||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
||||
};
|
||||
// Donkey Kong
|
||||
float D_800E3520[] = {
|
||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
||||
};
|
||||
// Wario
|
||||
float D_800E355C[] = {
|
||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
||||
};
|
||||
// Peach
|
||||
float D_800E3598[] = {
|
||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
||||
};
|
||||
// Bowser
|
||||
float D_800E35D4[] = {
|
||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
||||
};
|
||||
struct D_800E3610 D_800E3610 = {
|
||||
D_800E3430, D_800E346C, D_800E34A8, D_800E34E4,
|
||||
D_800E3520, D_800E355C, D_800E3598, D_800E35D4,
|
||||
};
|
||||
// Mario Luigi Yoshi Toad D.K. Wario Peach Bowser
|
||||
float gKartHandlingTable[] = {
|
||||
1.25, 1.25, 1.28, 1.28, 1.15, 1.15, 1.28, 1.15,
|
||||
};
|
||||
float gKartTable800E3650[] = {
|
||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
||||
};
|
||||
float gKartTurnSpeedReductionTable0[] = {
|
||||
0.0, 0.0, 0.002, 0.002, -0.002, -0.002, 0.002, -0.002,
|
||||
};
|
||||
float gKartTurnSpeedReductionTable1[] = {
|
||||
0.0, 0.0, 0.002, 0.002, -0.002, -0.002, 0.002, -0.002,
|
||||
};
|
||||
float gKartTable800E36B0[] = {
|
||||
2.0, 2.0, 3.0, 3.0, 1.5, 1.5, 3.0, 3.0,
|
||||
};
|
||||
float gKartHopHeightTable[] = {
|
||||
0.93, 0.93, 0.93, 0.93, 0.93, 0.93, 0.93, 0.93,
|
||||
};
|
||||
float gKartHopFallSpeedTable[] = {
|
||||
0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03,
|
||||
};
|
||||
float D_800E3710[] = {
|
||||
2.2, 2.2, 2.2, 2.2, 2.2, 2.2, 2.2, 2.2,
|
||||
};
|
||||
float D_800E3730[] = {
|
||||
0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002,
|
||||
};
|
||||
float D_800E3750[] = {
|
||||
2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0,
|
||||
};
|
||||
float D_800E3770[] = {
|
||||
0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002,
|
||||
};
|
||||
float D_800E3790[] = {
|
||||
1.2, 1.45, 1.45, 1.45, 1.45, 1.45, 1.45, 1.45,
|
||||
};
|
||||
float D_800E37B0[] = {
|
||||
0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01,
|
||||
};
|
||||
float D_800E37D0[] = {
|
||||
3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5,
|
||||
};
|
||||
float D_800E37F0[] = {
|
||||
0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002,
|
||||
};
|
||||
+36
-41
@@ -3,6 +3,9 @@
|
||||
#include "types.h"
|
||||
#include "config.h"
|
||||
#include "profiler.h"
|
||||
#include "main.h"
|
||||
#include "segments.h"
|
||||
#include "segment_symbols.h"
|
||||
|
||||
// Declarations (not in this file)
|
||||
void func_8008C214(UNUSED int);
|
||||
@@ -62,13 +65,17 @@ extern u64 gGfxSPTaskOutputBuffer[];
|
||||
extern u32 gGfxSPTaskOutputBufferSize;
|
||||
extern u8 gGfxSPTaskYieldBuffer[];
|
||||
|
||||
#define GFX_POOL_SIZE 6400
|
||||
struct GfxPool {
|
||||
Gfx buffer[GFX_POOL_SIZE];
|
||||
struct SPTask spTask;
|
||||
};
|
||||
|
||||
extern struct GfxPool *gGfxPool;
|
||||
extern u32 gPrevLoadedAddress;
|
||||
extern u32 D_8015F734;
|
||||
extern u8 _data_segment2SegmentRomStart[];
|
||||
extern u8 _data_segment2SegmentRomEnd[];
|
||||
extern u8 _common_texturesSegmentRomStart[];
|
||||
extern u8 _common_texturesSegmentRomEnd[];
|
||||
extern u8 _data_802BA370SegmentRomStart[];
|
||||
extern OSMesg *D_8014F098;
|
||||
extern OSIoMesg *D_8014F0A0;
|
||||
extern u32 gHeapEndPtr;
|
||||
extern u32 *D_801978D0;
|
||||
|
||||
// Declarations (in this file)
|
||||
void thread1_idle(void *arg0);
|
||||
@@ -406,32 +413,21 @@ void *func_80000F34(void) {
|
||||
GLOBAL_ASM("asm/non_matchings/main/func_80000F34.s")
|
||||
#endif
|
||||
|
||||
// Code segment loading functions (relatively similar to SM64 in structure)
|
||||
#ifdef MIPS_TO_C
|
||||
// generated by mips_to_c commit cae1414eb1bf34873a831a523692fe29870a6f3b
|
||||
void func_8000105C(void) {
|
||||
bzero(0x80280000, 0xDF00);
|
||||
bzero(SEG_80280000, 0xDF00);
|
||||
osWritebackDCacheAll();
|
||||
dma_copy(0x80280000, &_code_80280000SegmentRomStart, ((&_code_80280000SegmentRomEnd - &_code_80280000SegmentRomStart) + 0xF) & -0x10);
|
||||
osInvalCache(0x80280000, 0xDF00);
|
||||
osInvalDCache(0x80280000, 0xDF00);
|
||||
dma_copy(SEG_80280000, &_code_80280000SegmentRomStart, ALIGN16((u32)&_code_80280000SegmentRomEnd - (u32)&_code_80280000SegmentRomStart));
|
||||
osInvalCache(SEG_80280000, 0xDF00);
|
||||
osInvalDCache(SEG_80280000, 0xDF00);
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/main/func_8000105C.s")
|
||||
#endif
|
||||
|
||||
#ifdef MIPS_TO_C
|
||||
//generated by mips_to_c commit ffee479fae41a1cdc3e454e9b9d75bbd226a160f
|
||||
void func_800010CC(void) {
|
||||
bzero(0x8028DF00, 0x2C470);
|
||||
bzero(SEG_8028DF00, 0x2C470);
|
||||
osWritebackDCacheAll();
|
||||
dma_copy(0x8028DF00, &_code_8028DF00SegmentRomStart, ((&_code_8028DF00SegmentRomEnd - &_code_8028DF00SegmentRomStart) + 0xF) & -0x10);
|
||||
osInvalCache(0x8028DF00, 0x2C470);
|
||||
osInvalDCache(0x8028DF00, 0x2C470);
|
||||
dma_copy(SEG_8028DF00, &_code_8028DF00SegmentRomStart, ALIGN16((u32)&_code_8028DF00SegmentRomEnd - (u32)&_code_8028DF00SegmentRomStart));
|
||||
osInvalCache(SEG_8028DF00, 0x2C470);
|
||||
osInvalDCache(SEG_8028DF00, 0x2C470);
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/main/func_800010CC.s")
|
||||
#endif
|
||||
|
||||
// Similar to dma_read in SM64
|
||||
#ifdef MIPS_TO_C
|
||||
@@ -481,15 +477,14 @@ GLOBAL_ASM("asm/non_matchings/main/dma_copy.s")
|
||||
#endif
|
||||
|
||||
// Resembles setup_game_memory from SM64
|
||||
#ifdef MIPS_TO_C
|
||||
// generated by mips_to_c commit cae1414eb1bf34873a831a523692fe29870a6f3b
|
||||
#ifdef NON_MATCHING
|
||||
void init_game(void) {
|
||||
s32 sp40;
|
||||
s32 sp38;
|
||||
void *sp2C;
|
||||
s32 temp_t2;
|
||||
u32 *sp2C;
|
||||
s32 temp_a1;
|
||||
s32 temp_t7;
|
||||
void *temp_t0;
|
||||
s32 temp_t2;
|
||||
|
||||
func_800010CC();
|
||||
gHeapEndPtr = 0x8028DF00;
|
||||
@@ -500,17 +495,17 @@ void init_game(void) {
|
||||
osPiStartDma(&D_8014F0A0, 0, 0, &_data_802BA370SegmentRomStart, 0x802BA370, 0x5810, &D_8014EF58);
|
||||
osRecvMesg(&D_8014EF58, &D_8014F098, 1);
|
||||
set_segment_base_addr(2, func_802A7D70(&_data_segment2SegmentRomStart, &_data_segment2SegmentRomEnd));
|
||||
temp_t2 = ((&_common_texturesSegmentRomEnd - &_common_texturesSegmentRomStart) + 0xF) & -0x10;
|
||||
temp_t0 = 0x8028DF00 - temp_t2;
|
||||
sp2C = temp_t0;
|
||||
osPiStartDma(&D_8014F0A0, 0, 0, &_common_texturesSegmentRomStart, temp_t0, temp_t2, &D_8014EF58);
|
||||
temp_t2 = ALIGN16((u32)&_common_texturesSegmentRomEnd - (u32)&_common_texturesSegmentRomStart);
|
||||
sp2C = 0x8028DF00 - temp_t2;
|
||||
osPiStartDma(&D_8014F0A0, 0, 0, &_common_texturesSegmentRomStart, 0x8028DF00 - temp_t2, temp_t2, &D_8014EF58);
|
||||
osRecvMesg(&D_8014EF58, &D_8014F098, 1);
|
||||
sp38 = D_8015F728;
|
||||
sp40 = (sp2C->unk4 + 0xF) & -0x10;
|
||||
mio0decode(sp2C, D_8015F728);
|
||||
set_segment_base_addr(0xD, D_8015F728);
|
||||
temp_t7 = D_8015F728 + sp40;
|
||||
D_8015F728 = temp_t7;
|
||||
temp_a1 = gPrevLoadedAddress;
|
||||
sp38 = temp_a1;
|
||||
sp40 = ALIGN16(sp2C[1]);
|
||||
mio0decode(sp2C, temp_a1);
|
||||
set_segment_base_addr(0xD, temp_a1);
|
||||
temp_t7 = sp40 + gPrevLoadedAddress;
|
||||
gPrevLoadedAddress = temp_t7;
|
||||
D_8015F734 = temp_t7;
|
||||
}
|
||||
#else
|
||||
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
#ifndef MAIN_H
|
||||
#define MAIN_H
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#define GFX_POOL_SIZE 6400
|
||||
struct GfxPool {
|
||||
Gfx buffer[GFX_POOL_SIZE];
|
||||
struct SPTask spTask;
|
||||
};
|
||||
|
||||
extern struct GfxPool *gGfxPool;
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,86 @@
|
||||
#include <ultra64.h>
|
||||
#include <PR/ultratypes.h>
|
||||
#include <macros.h>
|
||||
#include "types.h"
|
||||
#include "memory.h"
|
||||
|
||||
// Includes from SM64
|
||||
//#include "buffers/buffers.h"
|
||||
//#include "decompress.h"
|
||||
//#include "game_init.h"
|
||||
//#include "main.h"
|
||||
|
||||
//#include "segment_symbols.h"
|
||||
//#include "segments.h"
|
||||
|
||||
|
||||
extern uintptr_t gSegmentTable[32];
|
||||
u32 sPoolFreeSpace;
|
||||
u8 *sPoolStart;
|
||||
u8 *sPoolEnd;
|
||||
struct MainPoolBlock *sPoolListHeadL;
|
||||
struct MainPoolBlock *sPoolListHeadR;
|
||||
|
||||
extern s32 gPrevLoadedAddress;
|
||||
extern s32 gPrevMainThreadTask;
|
||||
|
||||
extern s32 gDisplayListHead;
|
||||
extern u32 D_8015F724;
|
||||
u32 D_802BA278;
|
||||
|
||||
struct MainPoolBlock {
|
||||
struct MainPoolBlock *prev;
|
||||
struct MainPoolBlock *next;
|
||||
};
|
||||
|
||||
#define ALIGN16(val) (((val) + 0xF) & ~0xF)
|
||||
#define ALIGN32(val) (((val) + 0xF) & ~0xF)
|
||||
|
||||
|
||||
s32 func_802A7B70(s32 segment) {
|
||||
s32 old;
|
||||
old = gPrevLoadedAddress;
|
||||
segment = ALIGN16(segment);
|
||||
gPrevLoadedAddress += segment;
|
||||
return old;
|
||||
}
|
||||
|
||||
uintptr_t set_segment_base_addr(s32 segment, void *addr) {
|
||||
gSegmentTable[segment] = (uintptr_t) addr & 0x1FFFFFFF;
|
||||
return gSegmentTable[segment];
|
||||
}
|
||||
|
||||
void *get_segment_base_addr(s32 segment) {
|
||||
return (void *) (gSegmentTable[segment] | 0x80000000);
|
||||
}
|
||||
|
||||
s32 lookup_item(u32 segment) {
|
||||
return (gSegmentTable[segment >> 0x18] + (segment & 0xFFFFFF)) | 0x80000000;
|
||||
}
|
||||
/*
|
||||
void move_segment_table_to_dmem(void) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 16; i++) {
|
||||
gSPSegment(gDisplayListHead++, i, gSegmentTable[i]);
|
||||
}
|
||||
}
|
||||
void func_802A7CF0(u32 start, u32 end) {
|
||||
sPoolStart = (u8 *) ALIGN32((uintptr_t) start);
|
||||
sPoolEnd = (u8 *) ALIGN32((uintptr_t) end);
|
||||
|
||||
D_8015F724 = (u32) end - start;
|
||||
gPrevLoadedAddress = (u32) start;
|
||||
}
|
||||
s32 func_802A7D1C(s32 arg0) {
|
||||
s32 temp_t6;
|
||||
s32 temp_v0;
|
||||
|
||||
temp_v0 = gPrevLoadedAddress;
|
||||
temp_t6 = (arg0 + 0xF) & -0x10;
|
||||
D_8015F724 = (s32) (D_8015F724 - temp_t6);
|
||||
gPrevLoadedAddress = (s32) (temp_v0 + temp_t6);
|
||||
return temp_v0;
|
||||
}
|
||||
*/
|
||||
GLOBAL_ASM("asm/non_matchings/memory.s")
|
||||
@@ -0,0 +1,17 @@
|
||||
#ifndef MEMORY_H
|
||||
#define MEMORY_H
|
||||
|
||||
|
||||
|
||||
#define MEMORY_POOL_LEFT 0
|
||||
#define MEMORY_POOL_RIGHT 1
|
||||
extern struct MemoryPool *gEffectsMemoryPool;
|
||||
|
||||
s32 func_802A7B70(s32 segment);
|
||||
uintptr_t set_segment_base_addr(s32 segment, void *addr);
|
||||
void *get_segment_base_addr(s32 segment);
|
||||
s32 lookup_item(u32 segment);
|
||||
|
||||
|
||||
|
||||
#endif // MEMORY_H
|
||||
+1
-1
@@ -123,7 +123,7 @@ void func_80003AFC(void) {
|
||||
Draw Profiler Mode 0. This mode renders bars over each other to make it
|
||||
easier to see which processes take the longest.
|
||||
|
||||
Two lines were added to this function in Mario Kart 64
|
||||
This function differs from the one in SM64 by two lines
|
||||
|
||||
Information:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user