mirror of
https://github.com/pret/pokestadium.git
synced 2026-09-12 13:25:55 -05:00
@@ -44,4 +44,6 @@ void func_8002B274(s32, s32);
|
||||
// exception_set.s
|
||||
void set_watch_lohi(s32);
|
||||
|
||||
unsigned long long __ull_rem(unsigned long long a0, unsigned long long a1);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -9,6 +9,15 @@
|
||||
#define SHT_MAX 32767.0f
|
||||
#define SHT_MINV (1.0f / SHT_MAX)
|
||||
|
||||
extern long long __d_to_ll(double d);
|
||||
extern long long __f_to_ll(float f);
|
||||
extern unsigned long long __d_to_ull(double d);
|
||||
extern unsigned long long __f_to_ull(float f);
|
||||
extern double __ll_to_d(long long s);
|
||||
extern float __ll_to_f(long long s);
|
||||
extern double __ull_to_d(unsigned long long u);
|
||||
extern float __ull_to_f(unsigned long long u);
|
||||
|
||||
typedef float MtxF_t[4][4];
|
||||
typedef union {
|
||||
MtxF_t mf;
|
||||
|
||||
@@ -95,8 +95,6 @@ typedef struct unk_D_800A7440 {
|
||||
} unk_D_800A7440; // size >= 0x8
|
||||
extern unk_D_800A7440 D_800A7440;
|
||||
|
||||
|
||||
|
||||
extern struct unk_D_800AC840 D_800AC840;
|
||||
extern struct unk_D_800AC840 D_800AC858;
|
||||
extern struct unk_D_86002F58_004_000* D_8006F09C;
|
||||
@@ -146,5 +144,59 @@ extern s8 D_80077DE4;
|
||||
extern s32 D_80078E60;
|
||||
extern s32 D_80078E64;
|
||||
extern s32 D_80078E68;
|
||||
extern u8 D_8007840C;
|
||||
extern s32 D_80078E70;
|
||||
extern s32 D_80078ECC;
|
||||
extern u8 D_80078ED0;
|
||||
extern u8 D_80078390[];
|
||||
extern u32 D_80078404;
|
||||
extern s32 D_80078408;
|
||||
extern s32 D_80078E74;
|
||||
extern u8 D_80078E78;
|
||||
extern u8 D_80078E7C;
|
||||
extern u8 D_80078E80;
|
||||
extern s32 D_80078EC8;
|
||||
extern s32 D_800FC680;
|
||||
extern s32 D_800FC684;
|
||||
extern u32 D_800FC6DC;
|
||||
extern s32 D_80078ED4;
|
||||
extern s32 D_80078ED8;
|
||||
extern s32 D_80078EDC;
|
||||
|
||||
typedef struct unk_D_800FC6E4 {
|
||||
/* 0x00 */ char pad00[0x8];
|
||||
/* 0x08 */ s32 unk_08;
|
||||
/* 0x0C */ u32 unk_0C[2];
|
||||
} unk_D_800FC6E4; // size >= 0x10
|
||||
|
||||
extern unk_D_800FC6E4* D_800FC6E0;
|
||||
extern unk_D_800FC6E4* D_800FC6E4;
|
||||
|
||||
extern s32 D_800FC688;
|
||||
extern s32 D_800FC68C;
|
||||
extern s32 D_800FC6A4;
|
||||
extern s32 D_800FC6A8;
|
||||
|
||||
typedef struct unk_D_800FC6F4 {
|
||||
/* 0x00 */ char pad00[0x14];
|
||||
/* 0x14 */ u32 unk_14;
|
||||
/* 0x18 */ char pad18[0x4];
|
||||
/* 0x1C */ u32 unk_1C;
|
||||
/* 0x20 */ char pad20[0x4];
|
||||
/* 0x24 */ u32 unk_24;
|
||||
} unk_D_800FC6F4; /// size >= 0x28
|
||||
extern unk_D_800FC6F4* D_800FC6F4;
|
||||
|
||||
typedef struct unk_D_800FC6F8 {
|
||||
/* 0x00 */ u32 unk_00[2];
|
||||
} unk_D_800FC6F8; // size = 0x8
|
||||
extern unk_D_800FC6F8* D_800FC6F8;
|
||||
|
||||
typedef struct unk_D_800FC798 {
|
||||
/* 0x00 */ u32 unk_00;
|
||||
/* 0x04 */ u32 unk_04;
|
||||
/* 0x08 */ u32 unk_08;
|
||||
} unk_D_800FC798; // size >= 0xC
|
||||
extern unk_D_800FC798* D_800FC798;
|
||||
|
||||
#endif
|
||||
|
||||
@@ -239,3 +239,5 @@ D_87A01178 = 0x87A01178;
|
||||
D_87A01180 = 0x87A01180;
|
||||
D_87A01190 = 0x87A01190;
|
||||
D_87A011A4 = 0x87A011A4;
|
||||
D_800A7428 = 0x800A7428;
|
||||
D_80079014 = 0x80079014;
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
#include "global.h"
|
||||
#include "2E110.h"
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/2E110/func_8002D510.s")
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
#include "global.h"
|
||||
|
||||
char* func_8002D7C0(char*, s32, s32, s32);
|
||||
char* func_8002D7C0(char* arg0, s32 arg1, s32 arg2, s32 arg3);
|
||||
|
||||
|
||||
#endif // _2E110_H_
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "global.h"
|
||||
#include "373A0.h"
|
||||
#include "4CBC0.h"
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/373A0/func_800367A0.s")
|
||||
|
||||
|
||||
10
src/373A0.h
Normal file
10
src/373A0.h
Normal file
@@ -0,0 +1,10 @@
|
||||
#ifndef _373A0_H_
|
||||
#define _373A0_H_
|
||||
|
||||
#include "global.h"
|
||||
|
||||
void func_800367A0(s32, u8, s32);
|
||||
void func_80037234(s32, s32);
|
||||
void func_80037360(u32, u32, s32);
|
||||
|
||||
#endif // _373A0_H_
|
||||
11
src/38BB0.h
11
src/38BB0.h
@@ -4,8 +4,19 @@
|
||||
#include "global.h"
|
||||
|
||||
void func_80038E98(s32, s32);
|
||||
s32 func_80038F30(s32, s32);
|
||||
s32 func_80039024(s32, s32, s32, s32, u32, s32);
|
||||
void func_800392A8(s32, s32);
|
||||
s32 func_80039354(s32);
|
||||
void func_800393DC(s32, s32);
|
||||
void func_80039534(s32, f32);
|
||||
void func_800395FC(s32, s32);
|
||||
void func_8003979C(s32, s32);
|
||||
void func_800397BC(s32);
|
||||
void func_8003986C(s32);
|
||||
void func_800398F0(s32);
|
||||
void func_80039940(void);
|
||||
s32 func_80039A7C(s32, s32, s32);
|
||||
void func_80039B88(s32, s32, s32, s32);
|
||||
|
||||
#endif // _38BB0_H_
|
||||
|
||||
753
src/3D140.c
753
src/3D140.c
@@ -1,4 +1,111 @@
|
||||
#include "global.h"
|
||||
#include "3D140.h"
|
||||
#include "373A0.h"
|
||||
#include "45720.h"
|
||||
|
||||
extern u8 D_800783FC;
|
||||
extern u8 D_80078400;
|
||||
extern u16 D_80078410[1][9];
|
||||
extern u16 D_80078446[1][9];
|
||||
extern u16 D_800784EA[1][9];
|
||||
extern u16 D_80077DF0[];
|
||||
extern u16 D_80077E00[];
|
||||
extern u16 D_80077E10[];
|
||||
extern u16 D_80077E18[];
|
||||
extern u16 D_80077E20[];
|
||||
extern u16 D_80077E28[];
|
||||
extern u16 D_80077E30[];
|
||||
extern u16 D_80077E38[];
|
||||
extern u16 D_80077E40[];
|
||||
extern u16 D_80077E48[];
|
||||
extern u16 D_80077E50[];
|
||||
extern u16 D_80077E58[];
|
||||
extern u16 D_80077E60[];
|
||||
extern u16 D_80077E68[];
|
||||
extern u16 D_80077E70[];
|
||||
extern u16 D_80077E78[];
|
||||
extern u16 D_80077E88[];
|
||||
extern u16 D_80077E90[];
|
||||
extern u16 D_800780A8[];
|
||||
extern u8 D_800783BC;
|
||||
extern u8 D_800783C0;
|
||||
extern u8 D_800783C4;
|
||||
extern s32 D_800783C8;
|
||||
extern u32 D_800783CC;
|
||||
extern u8 D_800783D4;
|
||||
extern u8 D_800783D8;
|
||||
extern u8 D_800783DC;
|
||||
extern u8 D_800783E4;
|
||||
extern u8 D_800783E8;
|
||||
extern u8 D_800783EC;
|
||||
extern f64 D_8007C7E0;
|
||||
extern f64 D_8007C7E8;
|
||||
extern f64 D_8007C7F0;
|
||||
extern f64 D_8007C7F8;
|
||||
extern u8 D_800FCD18[];
|
||||
|
||||
typedef struct unk_D_800FCB18 {
|
||||
/* 0x00 */ char pad00[0xC];
|
||||
/* 0x0C */ u16 unk_0C;
|
||||
/* 0x0E */ char pad0E[0xE];
|
||||
/* 0x1C */ u8 unk_1C;
|
||||
/* 0x1D */ u8 unk_1D;
|
||||
/* 0x1E */ char pad1E[0x8];
|
||||
/* 0x26 */ u8 unk_26;
|
||||
/* 0x28 */ u16 unk_28;
|
||||
} unk_D_800FCB18; // size >= 0x2C
|
||||
|
||||
extern unk_D_800FCB18* D_800FCB18[2];
|
||||
extern s32 D_800FCB28;
|
||||
extern s32 D_800FCB2C;
|
||||
|
||||
typedef struct unk_D_800FCB48 {
|
||||
/* 0x00 */ u16 unk_00[16];
|
||||
/* 0x20 */ char pad20[0x4];
|
||||
/* 0x24 */ s32 unk_24;
|
||||
/* 0x28 */ char pad28[0x50];
|
||||
/* 0x78 */ s32 unk_78;
|
||||
/* 0x7C */ s32 unk_7C;
|
||||
/* 0x80 */ char pad80[0x4];
|
||||
} unk_D_800FCB48; // size = 0x84
|
||||
extern unk_D_800FCB48 D_800FCB48[2];
|
||||
extern s32 D_800FCCA4;
|
||||
extern u8 D_800FCCAE;
|
||||
extern u8 D_800FCCAF;
|
||||
extern u8 D_800FCCB0;
|
||||
extern u8 D_800FCCB1;
|
||||
extern u8 D_800FCCB2;
|
||||
extern u8 D_800FCCB3;
|
||||
extern u8 D_800FCCB4;
|
||||
extern u8 D_800FCCB5;
|
||||
extern u8 D_800FCCB6;
|
||||
extern s8 D_8007839C[];
|
||||
extern s8 D_800783E0;
|
||||
extern s16 D_800783F0;
|
||||
extern s16 D_800783F4;
|
||||
extern s16 D_800783F8;
|
||||
extern u8 D_800FCB38[2][8];
|
||||
extern s32 D_800FCC50[];
|
||||
extern s8 D_800FCCA0;
|
||||
extern s8 D_800FCCA1;
|
||||
extern s8 D_800FCCA2;
|
||||
extern s8 D_800FCCAC;
|
||||
extern s8 D_800FCCB7;
|
||||
extern s8 D_800FCCB8[];
|
||||
extern s8 D_800FCCBA[];
|
||||
extern s8 D_800FCCBC[];
|
||||
extern s8 D_800FCCBE[];
|
||||
extern s8 D_800FCCC0[];
|
||||
extern s8 D_800FCCC2[];
|
||||
extern s8 D_800FCCD4[];
|
||||
extern s8 D_800FCCD6[];
|
||||
extern s8 D_800FCCD8[];
|
||||
extern s32 D_80078388;
|
||||
extern u32 D_800783A4[4];
|
||||
extern s32 D_800783B8;
|
||||
|
||||
void func_80041A98(void);
|
||||
void func_80041C70(u32);
|
||||
void func_800420C0(u16*);
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/3D140/func_8003C540.s")
|
||||
|
||||
@@ -36,9 +143,496 @@
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/3D140/func_8003D828.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/3D140/func_8003D918.s")
|
||||
#ifdef NON_MATCHING
|
||||
void func_8003D918(u32 arg0, u32 arg1) {
|
||||
u32 temp_v0 = arg1 == 0x10;
|
||||
u8 sp1B = 0;
|
||||
u16 var_a0;
|
||||
|
||||
func_80041A98();
|
||||
D_80078404 = arg1;
|
||||
D_80078408 = arg0;
|
||||
|
||||
if (arg1 < 0x11) {
|
||||
D_800783FC = 1;
|
||||
D_8007840C = 1;
|
||||
|
||||
if ((arg0 == 0) && (arg1 != 0x10) && (arg1 != 0xF)) {
|
||||
func_80041C70(0x34);
|
||||
} else if ((arg0 == 0xFF) && (arg1 != 0x10) && (arg1 != 0xF)) {
|
||||
func_80041C70(0x47);
|
||||
arg0 = 0;
|
||||
sp1B = 1;
|
||||
}
|
||||
|
||||
if (arg1 < 0xC) {
|
||||
if (arg0 < 9) {
|
||||
var_a0 = D_80078410[arg1][arg0];
|
||||
D_800783FC = 1;
|
||||
D_80078400 = 1;
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
} else if (arg1 == 0xC) {
|
||||
if ((arg0 < 0x21) && (arg0 != 0)) {
|
||||
var_a0 = D_800784EA[(arg0 - 1) / 8][(arg0 - 1) % 8];
|
||||
D_800783FC = 1;
|
||||
D_80078400 = 0;
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
} else if (arg1 == 0xD) {
|
||||
if (arg0 < 6) {
|
||||
var_a0 = D_80078446[arg1][arg0];
|
||||
D_800783FC = 1;
|
||||
D_80078400 = 0;
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
if (arg1 == 0xE) {
|
||||
var_a0 = 0x49;
|
||||
D_800783FC = 1;
|
||||
D_80078400 = 2;
|
||||
} else if (arg1 == 0xF) {
|
||||
var_a0 = 0;
|
||||
D_800783FC = 0;
|
||||
D_80078400 = 0;
|
||||
arg0 = 1;
|
||||
} else {
|
||||
D_800783FC = 1;
|
||||
if (temp_v0) {
|
||||
var_a0 = 0x48;
|
||||
D_80078400 = 1;
|
||||
arg0 = 1;
|
||||
} else {
|
||||
var_a0 = 0;
|
||||
D_80078400 = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ((arg0 == 0) && (sp1B == 0)) {
|
||||
D_80078400 = 2;
|
||||
}
|
||||
|
||||
if (var_a0 != 0) {
|
||||
func_80041C70(var_a0);
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/3D140/func_8003D918.s")
|
||||
#endif
|
||||
|
||||
#ifdef NON_MATCHING
|
||||
void func_8003DB84(s32 arg0) {
|
||||
s32 i;
|
||||
s32 var_t0;
|
||||
s32 var_t2;
|
||||
s32 var_t4;
|
||||
s32 var_t5;
|
||||
s32 var_v0;
|
||||
u32 var_a0;
|
||||
u32 temp_v0;
|
||||
|
||||
if (arg0 != 0) {
|
||||
temp_v0 = osSetIntMask(1);
|
||||
D_800783BC = 1;
|
||||
D_800783C8 = 0;
|
||||
D_800783C0 = 0;
|
||||
D_800783C4 = 0;
|
||||
osSetIntMask(temp_v0);
|
||||
D_800783D4 = 0;
|
||||
D_800783D8 = 0;
|
||||
D_800783DC = 0;
|
||||
D_800FCCAE = 0;
|
||||
D_800FCCAF = 0;
|
||||
D_800FCCB2 = 0;
|
||||
D_800FCCB6 = 0;
|
||||
D_800783E8 = 0;
|
||||
D_800783EC = 0;
|
||||
D_800FCCA4 = 0;
|
||||
func_800367A0(0x5A, D_80078400, 0);
|
||||
|
||||
if ((D_800FCB18[0] != NULL) && (D_800FCB18[1] != NULL)) {
|
||||
if (D_800FCB18[0] != NULL) {
|
||||
D_800FCB28 = D_800FCB18[0]->unk_0C;
|
||||
}
|
||||
|
||||
if (D_800FCB18[1] != NULL) {
|
||||
D_800FCB2C = D_800FCB18[1]->unk_0C;
|
||||
}
|
||||
|
||||
D_800FCB48[0].unk_24++;
|
||||
D_800FCB48[0].unk_00[D_800FCB48[0].unk_24 & 0xF] = D_800FCB18[0]->unk_0C;
|
||||
D_800FCB48[1].unk_24++;
|
||||
D_800FCB48[1].unk_00[D_800FCB48[1].unk_24 & 0xF] = D_800FCB18[1]->unk_0C;
|
||||
|
||||
if (D_800783CC != 0) {
|
||||
var_t0 = 1;
|
||||
if (D_800FCB18[0]->unk_26 < D_800FCB18[1]->unk_26) {
|
||||
var_t2 = 0;
|
||||
var_t4 = 1;
|
||||
} else {
|
||||
var_t4 = 0;
|
||||
var_t2 = 1;
|
||||
}
|
||||
|
||||
if (D_800FCB18[0]->unk_0C < D_800FCB18[1]->unk_0C) {
|
||||
var_t0 = 0;
|
||||
var_t5 = 1;
|
||||
} else {
|
||||
var_t5 = 0;
|
||||
}
|
||||
|
||||
if (D_800783CC < 2) {
|
||||
if ((D_800FCB18[0]->unk_0C == 0) || (D_800FCB18[1]->unk_0C == 0)) {
|
||||
temp_v0 = osSetIntMask(1);
|
||||
D_800783C0 = 1;
|
||||
osSetIntMask(temp_v0);
|
||||
|
||||
if (D_800FCB18[0]->unk_0C == 0) {
|
||||
D_800FCCB0 = 1;
|
||||
} else {
|
||||
D_800FCCB0 = 2;
|
||||
}
|
||||
|
||||
if ((D_800FCB18[0]->unk_0C == 0) && (D_800FCB18[1]->unk_0C == 0)) {
|
||||
func_800420C0(D_80077E90);
|
||||
return;
|
||||
}
|
||||
|
||||
func_800420C0(D_80077E48);
|
||||
return;
|
||||
}
|
||||
|
||||
if ((((D_800FCB18[0]->unk_0C * 0x64u) / D_800FCB18[0]->unk_28) < 0x1E) &&
|
||||
(((D_800FCB18[1]->unk_0C * 0x64u) / D_800FCB18[1]->unk_28) < 0x1E)) {
|
||||
func_800420C0(D_80077E88);
|
||||
return;
|
||||
}
|
||||
|
||||
if (((((D_800FCB18[var_t4]->unk_26 - D_800FCB18[var_t2]->unk_26) * 0x64u) /
|
||||
D_800FCB18[var_t2]->unk_26) >= 0x15) &&
|
||||
(((D_800FCB18[var_t2]->unk_0C * 0x64u) / D_800FCB18[var_t2]->unk_28) < 0x28) &&
|
||||
(((D_800FCB18[var_t4]->unk_0C * 0x64u) / D_800FCB18[var_t4]->unk_28) >= 0x51)) {
|
||||
if (__ull_rem(osGetTime(), 3) == 0) {
|
||||
var_a0 = 0x256;
|
||||
goto block_53;
|
||||
}
|
||||
}
|
||||
|
||||
if ((((D_800FCB18[0]->unk_0C * 0x64u) / D_800FCB18[0]->unk_28) >= 0x5B) &&
|
||||
(((D_800FCB18[1]->unk_0C * 0x64u) / D_800FCB18[1]->unk_28) >= 0x5B)) {
|
||||
func_800420C0(D_80077E68);
|
||||
return;
|
||||
}
|
||||
|
||||
if (D_80078400 == 0) {
|
||||
func_800420C0(D_80077E78);
|
||||
return;
|
||||
}
|
||||
|
||||
func_800420C0(D_80077DF0);
|
||||
return;
|
||||
}
|
||||
|
||||
if ((D_800FCB18[0]->unk_0C == 0) || (D_800FCB18[1]->unk_0C == 0)) {
|
||||
temp_v0 = osSetIntMask(1);
|
||||
D_800783C0 = 1;
|
||||
osSetIntMask(temp_v0);
|
||||
|
||||
if (D_800FCB18[0]->unk_0C == 0) {
|
||||
D_800FCCB0 = 1;
|
||||
} else {
|
||||
D_800FCCB0 = 2;
|
||||
}
|
||||
|
||||
if (D_80078390[0] >= D_80078390[1]) {
|
||||
var_v0 = D_80078390[0] - D_80078390[1];
|
||||
} else {
|
||||
var_v0 = D_80078390[1] - D_80078390[0];
|
||||
}
|
||||
|
||||
if (var_v0 >= 2) {
|
||||
func_800420C0(D_80077E70);
|
||||
return;
|
||||
}
|
||||
|
||||
if ((D_80078390[0] == 1) && (D_80078390[1] == 1)) {
|
||||
var_a0 = 0x290;
|
||||
if (D_800783E4 != 0) {
|
||||
D_800783E4 = 0;
|
||||
} else {
|
||||
if (__ull_rem(osGetTime(), 2) != 0) {
|
||||
var_a0 = 0x254;
|
||||
} else {
|
||||
var_a0 = 0x26B;
|
||||
}
|
||||
}
|
||||
block_53:
|
||||
func_80041C70(var_a0);
|
||||
return;
|
||||
}
|
||||
|
||||
if (D_80078390[D_800FCCB0 - 1] == 1) {
|
||||
func_80041C70(0x26A);
|
||||
return;
|
||||
}
|
||||
|
||||
func_800420C0(D_80077E00);
|
||||
return;
|
||||
}
|
||||
|
||||
if (D_800FCCB0 != 0) {
|
||||
if (((D_80078390[0] == 1) || (D_80078390[1] == 1)) && (D_80078390[0] < 4) && (D_80078390[1] < 4)) {
|
||||
if (D_80078390[0] == 1) {
|
||||
switch (D_80078390[1]) {
|
||||
case 1:
|
||||
func_80041C70(0x260);
|
||||
func_80041C70(0x266);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
func_80041C70(0x261);
|
||||
if (D_800FCCB0 == 1) {
|
||||
func_80041C70(0x265);
|
||||
} else {
|
||||
func_80041C70(0x267);
|
||||
}
|
||||
break;
|
||||
|
||||
case 3:
|
||||
func_80041C70(0x262);
|
||||
func_80041C70(0x264);
|
||||
break;
|
||||
|
||||
default:
|
||||
func_80041C70(0x271);
|
||||
break;
|
||||
}
|
||||
|
||||
D_800FCCB0 = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
switch (D_80078390[0]) {
|
||||
case 2:
|
||||
func_80041C70(0x25E);
|
||||
if (D_800FCCB0 == 2) {
|
||||
func_80041C70(0x265);
|
||||
} else {
|
||||
func_80041C70(0x267);
|
||||
}
|
||||
break;
|
||||
|
||||
case 3:
|
||||
func_80041C70(0x25C);
|
||||
func_80041C70(0x264);
|
||||
break;
|
||||
|
||||
default:
|
||||
func_80041C70(0x271);
|
||||
break;
|
||||
}
|
||||
|
||||
D_800FCCB0 = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
if (D_800FCCB1 != 0) {
|
||||
if (__ull_rem(osGetTime(), 2) != 0) {
|
||||
D_800FCCB0 = 0;
|
||||
func_800420C0(D_80077E10);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (D_800FCB18[0]->unk_1C != D_800FCB18[1]->unk_1C) {
|
||||
if (D_800FCB18[0]->unk_1C != D_800FCB18[1]->unk_1D) {
|
||||
if ((D_800FCB18[0]->unk_1D != D_800FCB18[1]->unk_1C) &&
|
||||
(D_800FCB18[0]->unk_1D != D_800FCB18[1]->unk_1D)) {
|
||||
D_800FCCB0 = 0;
|
||||
func_800420C0(D_80077E18);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
D_800FCCB0 = 0;
|
||||
switch (D_80078390[0]) {
|
||||
case 2:
|
||||
switch (D_80078390[1]) {
|
||||
case 2:
|
||||
func_80041C70(0x25D);
|
||||
func_80041C70(0x268);
|
||||
return;
|
||||
|
||||
case 3:
|
||||
func_80041C70(0x25F);
|
||||
func_80041C70(0x263);
|
||||
return;
|
||||
|
||||
default:
|
||||
func_80041C70(0x271);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
||||
case 3:
|
||||
if (D_80078390[1] == 2) {
|
||||
func_80041C70(0x25B);
|
||||
func_80041C70(0x263);
|
||||
return;
|
||||
}
|
||||
|
||||
func_80041C70(0x271);
|
||||
return;
|
||||
|
||||
default:
|
||||
if (D_80078400 == 0) {
|
||||
func_800420C0(D_80077E78);
|
||||
return;
|
||||
}
|
||||
|
||||
func_800420C0(D_80077DF0);
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
|
||||
if (D_800FCCB3 != 0) {
|
||||
func_800420C0(D_80077E38);
|
||||
D_800FCCB3 = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
if (D_800FCCB4 != 0) {
|
||||
func_800420C0(D_80077E40);
|
||||
D_800FCCB4 = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
if (D_800FCCB5 != 0) {
|
||||
func_800420C0(D_80077E50);
|
||||
D_800FCCB5 = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
if ((D_800FCB18[0]->unk_28 * 0.5f) < (D_800FCB48[0].unk_00[(D_800FCB48[0].unk_24 - 1) & 0xF] -
|
||||
D_800FCB48[0].unk_00[D_800FCB48[0].unk_24 & 0xF])) {
|
||||
if ((D_800FCB18[1]->unk_28 * 0.5f) < (D_800FCB48[1].unk_00[(D_800FCB48[1].unk_24 - 1) & 0xF] -
|
||||
D_800FCB48[1].unk_00[(D_800FCB48[1].unk_24 & 0xF)])) {
|
||||
if ((((D_800FCB18[0]->unk_0C * 0x64u) / D_800FCB18[0]->unk_28) < 0x14u) &&
|
||||
(((D_800FCB18[1]->unk_0C * 0x64u) / D_800FCB18[1]->unk_28) < 0x14u)) {
|
||||
func_800420C0(D_80077E60);
|
||||
} else {
|
||||
func_800420C0(D_80077E58);
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (D_800FCB18[0]->unk_0C >= D_800FCB18[1]->unk_0C) {
|
||||
var_v0 = D_800FCB18[0]->unk_0C - D_800FCB18[1]->unk_0C;
|
||||
} else {
|
||||
var_v0 = D_800FCB18[1]->unk_0C - D_800FCB18[0]->unk_0C;
|
||||
}
|
||||
|
||||
if ((D_800FCB18[var_t0]->unk_28 * D_8007C7E0) < var_v0) {
|
||||
if ((((D_800FCB18[var_t5]->unk_0C * 0x64u) / D_800FCB18[var_t5]->unk_28) >= 0x47) &&
|
||||
(D_800FCB18[0]->unk_0C != D_800FCB18[0]->unk_28) &&
|
||||
(D_800FCB18[1]->unk_0C != D_800FCB18[1]->unk_28)) {
|
||||
if ((D_800FCB18[var_t5]->unk_28 * D_8007C7E8) < D_800FCB18[var_t5]->unk_0C) {
|
||||
if (D_800FCB18[var_t0]->unk_0C < (D_800FCB18[var_t0]->unk_28 * D_8007C7F0)) {
|
||||
func_800420C0(D_80077E20);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (D_800FCB18[0]->unk_0C >= D_800FCB18[1]->unk_0C) {
|
||||
var_v0 = D_800FCB18[0]->unk_0C - D_800FCB18[1]->unk_0C;
|
||||
} else {
|
||||
var_v0 = D_800FCB18[1]->unk_0C - D_800FCB18[0]->unk_0C;
|
||||
}
|
||||
|
||||
if (var_v0 < 0xA) {
|
||||
if ((D_800FCB18[0]->unk_28 * 0.5) < D_800FCB18[0]->unk_0C) {
|
||||
if (((D_800FCB18[1]->unk_28 * 0.5) < D_800FCB18[1]->unk_0C) &&
|
||||
(D_800FCB18[0]->unk_0C < D_800FCB18[0]->unk_28) &&
|
||||
(D_800FCB18[1]->unk_0C < D_800FCB18[1]->unk_28)) {
|
||||
func_800420C0(D_80077E30);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (D_800FCB18[0]->unk_0C >= D_800FCB18[1]->unk_0C) {
|
||||
var_v0 = D_800FCB18[0]->unk_0C - D_800FCB18[1]->unk_0C;
|
||||
} else {
|
||||
var_v0 = D_800FCB18[1]->unk_0C - D_800FCB18[0]->unk_0C;
|
||||
}
|
||||
|
||||
if (var_v0 < 0xA) {
|
||||
if (D_800FCB18[0]->unk_0C < (D_800FCB18[0]->unk_28 * D_8007C7F8)) {
|
||||
if (D_800FCB18[1]->unk_0C < (D_800FCB18[1]->unk_28 * D_8007C7F8)) {
|
||||
func_800420C0(D_80077E28);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (D_80078400 == 0) {
|
||||
func_800420C0(D_80077E78);
|
||||
} else {
|
||||
func_800420C0(D_80077DF0);
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
temp_v0 = osSetIntMask(1);
|
||||
D_800783BC = 0;
|
||||
osSetIntMask(temp_v0);
|
||||
func_80037234(0x5A, 0);
|
||||
func_80037234(0x5B, 0);
|
||||
|
||||
if (D_800FCB18[0] != NULL) {
|
||||
D_800FCB28 = D_800FCB18[0]->unk_0C;
|
||||
}
|
||||
|
||||
if (D_800FCB18[1] != NULL) {
|
||||
D_800FCB2C = D_800FCB18[1]->unk_0C;
|
||||
}
|
||||
|
||||
D_800783CC++;
|
||||
|
||||
for (i = 0; i < 2; i++) {
|
||||
D_800FCB48[i].unk_78++;
|
||||
if (D_800FCB48[i].unk_7C != 0) {
|
||||
D_800FCB48[i].unk_7C++;
|
||||
}
|
||||
}
|
||||
|
||||
D_800FCCB4 = 0;
|
||||
D_800FCCB3 = 0;
|
||||
D_800FCCB5 = 0;
|
||||
D_800783E4 = 0;
|
||||
|
||||
if ((D_800FCB18[0] != NULL) && (D_800FCB18[1] != NULL) && (D_8007840C != 0) && (D_800FCB18[0]->unk_0C != 0) &&
|
||||
(D_800FCB18[1]->unk_0C != 0) && (func_80044E54(1) == 0)) {
|
||||
if (__ull_rem(osGetTime(), 2) == 0) {
|
||||
func_800420C0(D_800780A8);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/3D140/func_8003DB84.s")
|
||||
#endif
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/3D140/func_8003EB40.s")
|
||||
|
||||
@@ -60,23 +654,162 @@
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/3D140/func_800416BC.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/3D140/func_80041A98.s")
|
||||
#ifdef NON_MATCHING
|
||||
void func_80041A98(void) {
|
||||
s32 i;
|
||||
s32 j;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/3D140/func_80041C70.s")
|
||||
D_800783CC = 0;
|
||||
|
||||
for (i = 0; i < 2; i++) {
|
||||
for (j = 0; j < 8; j++) {
|
||||
D_800FCB38[i][j] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
D_8007839C[0] = 0;
|
||||
D_8007839C[1] = 0;
|
||||
D_800FCCA1 = 0;
|
||||
D_800FCCA0 = 0;
|
||||
D_800FCCA2 = 0;
|
||||
D_800FCCA4 = 0;
|
||||
D_800FCCAC = 0;
|
||||
D_800783E0 = 0;
|
||||
D_800FCCAF = 0;
|
||||
D_800FCCB0 = 0;
|
||||
D_800FCCB2 = 0;
|
||||
D_800FCCB3 = 0;
|
||||
D_800FCCB4 = 0;
|
||||
D_800FCCB5 = 0;
|
||||
D_800FCCB7 = 0;
|
||||
D_800FCCB6 = 0;
|
||||
D_800783E4 = 0;
|
||||
D_800783E8 = 0;
|
||||
D_800783EC = 0;
|
||||
D_800783F0 = 0;
|
||||
D_800783F4 = 0;
|
||||
D_800783F8 = 0;
|
||||
|
||||
for (i = 0; i < 21; i++) {
|
||||
D_800FCCD8[i] = 0;
|
||||
}
|
||||
|
||||
for (i = 0; i < 80; i++) {
|
||||
D_800FCC50[i] = 0;
|
||||
}
|
||||
|
||||
for (i = 0; i < 2; i++) {
|
||||
D_800FCCB8[i] = 0;
|
||||
D_800FCCBA[i] = 0;
|
||||
D_800FCCBC[i] = 0;
|
||||
D_800FCCBE[i] = 0;
|
||||
D_800FCCC0[i] = 0;
|
||||
D_800FCCC2[i] = 0;
|
||||
D_800FCCD4[i] = 0;
|
||||
D_800FCCD6[i] = 0;
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/3D140/func_80041A98.s")
|
||||
#endif
|
||||
|
||||
void func_80041C70(u32 arg0) {
|
||||
u32 temp_v0;
|
||||
|
||||
if ((D_80078388 != 0) && (D_800783FC != 0) && (arg0 != 0)) {
|
||||
temp_v0 = osSetIntMask(1);
|
||||
D_800783A4[D_800783B8 & 3] = arg0;
|
||||
D_800783B8++;
|
||||
osSetIntMask(temp_v0);
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/3D140/func_80041CEC.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/3D140/func_80041D50.s")
|
||||
void func_80041D50(u8* arg0, u8* arg1) {
|
||||
u8 temp_v0 = *arg0;
|
||||
u8 temp_v1 = *arg1;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/3D140/func_80041D70.s")
|
||||
if (temp_v1 != temp_v0) {
|
||||
*arg0 = temp_v1;
|
||||
*arg1 = temp_v0;
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/3D140/func_80041DF4.s")
|
||||
u16 func_80041D70(u16 arg0) {
|
||||
s32 i;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/3D140/func_80041E40.s")
|
||||
for (i = 0; i < 20; i++) {
|
||||
if (arg0 == D_800FCC50[i]) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/3D140/func_80041EF4.s")
|
||||
return arg0;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/3D140/func_800420C0.s")
|
||||
void func_80041DF4(u16 arg0) {
|
||||
u16 i;
|
||||
|
||||
for (i = 0; i < 19; i++) {
|
||||
D_800FCC50[i] = D_800FCC50[i + 1];
|
||||
}
|
||||
|
||||
D_800FCC50[19] = arg0;
|
||||
}
|
||||
|
||||
void func_80041E40(u16 arg0) {
|
||||
u32 i;
|
||||
|
||||
for (i = arg0; i > 0; i--) {
|
||||
D_800FCC50[i] = D_800FCC50[i - 1];
|
||||
}
|
||||
|
||||
D_800FCC50[0] = 0;
|
||||
}
|
||||
|
||||
u32 func_80041EF4(u16* arg0) {
|
||||
u16 temp_v0 = *arg0;
|
||||
u32 i;
|
||||
u32 j;
|
||||
u16 sp5A;
|
||||
|
||||
for (i = 0; i < temp_v0; i++) {
|
||||
D_800FCD18[i] = i + 1;
|
||||
}
|
||||
|
||||
for (i = 0; i < temp_v0 << 1; i++) {
|
||||
func_80041D50(D_800FCD18, D_800FCD18 + __ull_rem(osGetTime(), (s32)temp_v0));
|
||||
}
|
||||
|
||||
for (i = 0; i < temp_v0; i++) {
|
||||
sp5A = func_80041D70(arg0[D_800FCD18[i]]);
|
||||
if (sp5A != 0) {
|
||||
func_80041DF4(sp5A);
|
||||
return sp5A;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < 20; i++) {
|
||||
for (j = 1; j <= temp_v0; j++) {
|
||||
if (D_800FCC50[i] == arg0[j]) {
|
||||
func_80041E40(i);
|
||||
func_80041DF4(arg0[j]);
|
||||
return arg0[j];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void func_800420C0(u16* arg0) {
|
||||
u32 temp_v0 = func_80041EF4(arg0);
|
||||
|
||||
if (temp_v0 != 0) {
|
||||
func_80041C70(temp_v0);
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/3D140/func_800420F0.s")
|
||||
|
||||
|
||||
17
src/3D140.h
Normal file
17
src/3D140.h
Normal file
@@ -0,0 +1,17 @@
|
||||
#ifndef _3D140_H_
|
||||
#define _3D140_H_
|
||||
|
||||
#include "global.h"
|
||||
|
||||
void func_8003D918(u32 arg0, u32 arg1);
|
||||
void func_8003DB84(s32 arg0);
|
||||
void func_80041A98(void);
|
||||
void func_80041C70(u32 arg0);
|
||||
void func_80041D50(u8* arg0, u8* arg1);
|
||||
u16 func_80041D70(u16 arg0);
|
||||
void func_80041DF4(u16 arg0);
|
||||
void func_80041E40(u16 arg0);
|
||||
u32 func_80041EF4(u16* arg0);
|
||||
void func_800420C0(u16* arg0);
|
||||
|
||||
#endif // _3D140_H_
|
||||
30
src/3FB0.c
30
src/3FB0.c
@@ -29,25 +29,25 @@
|
||||
|
||||
// PERSJPEG header
|
||||
struct UnkInputStruct80003C80 {
|
||||
char filler0[0x8];
|
||||
u32 unk8;
|
||||
u32 unkC;
|
||||
char filler0[0x8];
|
||||
u32 unk8;
|
||||
u32 unkC;
|
||||
};
|
||||
|
||||
s32 func_80003C80(s32 arg0, struct UnkInputStruct80003C80* arg1, s32 side) {
|
||||
s32 addr = main_pool_alloc(arg1->unkC + 0x100, side);
|
||||
s32 addr = main_pool_alloc(arg1->unkC + 0x100, side);
|
||||
|
||||
if (addr != 0) {
|
||||
s32 size = func_80003680(addr, arg1->unkC + 0x100, (u32)arg1 + arg1->unk8, arg1);
|
||||
if (size == 0) {
|
||||
main_pool_try_free(addr);
|
||||
addr = NULL;
|
||||
} else if (side == 0) {
|
||||
main_pool_realloc(addr, size);
|
||||
}
|
||||
}
|
||||
main_pool_try_free(arg0);
|
||||
return addr;
|
||||
if (addr != 0) {
|
||||
s32 size = func_80003680(addr, arg1->unkC + 0x100, (u32)arg1 + arg1->unk8, arg1);
|
||||
if (size == 0) {
|
||||
main_pool_try_free(addr);
|
||||
addr = NULL;
|
||||
} else if (side == 0) {
|
||||
main_pool_realloc(addr, size);
|
||||
}
|
||||
}
|
||||
main_pool_try_free(arg0);
|
||||
return addr;
|
||||
}
|
||||
|
||||
// PERS-SZP header
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "global.h"
|
||||
#include "45720.h"
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/45720/func_80044B20.s")
|
||||
|
||||
|
||||
10
src/45720.h
Normal file
10
src/45720.h
Normal file
@@ -0,0 +1,10 @@
|
||||
#ifndef _45720_H_
|
||||
#define _45720_H_
|
||||
|
||||
#include "global.h"
|
||||
|
||||
void func_80044D78(s32, s32);
|
||||
s32 func_80044E54(s32);
|
||||
void func_80044E80(s32);
|
||||
|
||||
#endif // _45720_H_
|
||||
50
src/4B940.c
50
src/4B940.c
@@ -1,5 +1,49 @@
|
||||
#include "global.h"
|
||||
#include "4B940.h"
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/4B940/func_8004AD40.s")
|
||||
static OSMesgQueue D_800FF990;
|
||||
static OSPiHandle* D_800FF9A8;
|
||||
static OSMesg D_800FF9AC;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/4B940/func_8004ADB0.s")
|
||||
void func_8004AD40(s32 arg0) {
|
||||
switch (arg0) {
|
||||
case 1:
|
||||
D_800FF9A8 = osDriveRomInit();
|
||||
break;
|
||||
|
||||
case 2:
|
||||
default:
|
||||
D_800FF9A8 = osCartRomInit();
|
||||
break;
|
||||
}
|
||||
|
||||
osCreateMesgQueue(&D_800FF990, &D_800FF9AC, 1);
|
||||
}
|
||||
|
||||
void func_8004ADB0(u32 dev_addr, u32 dram_addr, u32 size) {
|
||||
OSIoMesg msg;
|
||||
u32 dev = dev_addr;
|
||||
u32 dram = dram_addr;
|
||||
s32 var_s0;
|
||||
|
||||
while (size != 0) {
|
||||
if (size > 0x4000) {
|
||||
var_s0 = 0x4000;
|
||||
} else {
|
||||
var_s0 = size;
|
||||
}
|
||||
|
||||
msg.hdr.pri = 0;
|
||||
msg.hdr.retQueue = &D_800FF990;
|
||||
msg.dramAddr = dram;
|
||||
msg.devAddr = dev;
|
||||
msg.size = var_s0;
|
||||
|
||||
osInvalDCache(msg.dramAddr, var_s0);
|
||||
osEPiStartDma(D_800FF9A8, &msg, 0);
|
||||
osRecvMesg(&D_800FF990, NULL, 1);
|
||||
|
||||
dev += var_s0;
|
||||
dram += var_s0;
|
||||
size -= var_s0;
|
||||
}
|
||||
}
|
||||
|
||||
8
src/4B940.h
Normal file
8
src/4B940.h
Normal file
@@ -0,0 +1,8 @@
|
||||
#ifndef _4B940_H_
|
||||
#define _4B940_H_
|
||||
|
||||
#include "global.h"
|
||||
|
||||
void func_8004ADB0(u32 dev_addr, u32 dram_addr, u32 size);
|
||||
|
||||
#endif // _4B940_H_
|
||||
598
src/4BDC0.c
598
src/4BDC0.c
@@ -1,14 +1,600 @@
|
||||
#include "global.h"
|
||||
#include "4BDC0.h"
|
||||
#include "src/38BB0.h"
|
||||
#include "src/4BA90.h"
|
||||
#include "src/4CBC0.h"
|
||||
#include "src/4B940.h"
|
||||
#include "src/45720.h"
|
||||
#include "src/50CC0.h"
|
||||
#include "src/3D140.h"
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/4BDC0/func_8004B1C0.s")
|
||||
static s32 D_800FF9B0;
|
||||
static s32 D_800FF9B4;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/4BDC0/func_8004B1CC.s")
|
||||
void func_8004B1C0(s32 arg0) {
|
||||
D_80078EC8 = arg0;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/4BDC0/func_8004B9C4.s")
|
||||
s32 func_8004B1CC(s32 arg0) {
|
||||
u32 sp2C;
|
||||
s32 var_a2;
|
||||
UNUSED s32 pad;
|
||||
s32 sp20;
|
||||
s32 sp1C;
|
||||
|
||||
sp20 = arg0;
|
||||
sp1C = 0x80;
|
||||
func_80044E80(1);
|
||||
func_800398F0(1);
|
||||
D_800FF9B4 = arg0;
|
||||
if (arg0 == 0x50) {
|
||||
D_80078E78 = 0;
|
||||
D_80078E7C = 0;
|
||||
if (D_80078ED0 == 1) {
|
||||
func_80039B88(D_80078ECC, 0, 0x80, 0x50);
|
||||
D_80078ED0 = 2;
|
||||
return 0;
|
||||
}
|
||||
func_80039940();
|
||||
D_80078E70 = 0;
|
||||
func_800392A8(D_80078ECC, 1);
|
||||
D_80078ED0 = 0;
|
||||
D_80078ECC = func_8004DDA4(0x01000003, 0, 0);
|
||||
arg0 = 0x28;
|
||||
D_80078ED0 = 2;
|
||||
} else if (arg0 == 0x28) {
|
||||
D_80078E78 = 0;
|
||||
if (D_80078ED0 == 2) {
|
||||
func_80039B88(D_80078ECC, 0x80, 0, 0x50);
|
||||
D_80078ED0 = 1;
|
||||
return 0;
|
||||
}
|
||||
func_80039940();
|
||||
D_80078E70 = 0;
|
||||
func_800392A8(D_80078ECC, 1);
|
||||
D_80078ED0 = 0;
|
||||
D_80078ECC = func_8004DDA4(0x01000003, 0, 0);
|
||||
func_800393DC(D_80078ECC, 0);
|
||||
D_80078ED0 = 1;
|
||||
} else {
|
||||
func_80039940();
|
||||
D_80078E70 = 0;
|
||||
func_800392A8(D_80078ECC, 1);
|
||||
D_80078ED0 = 0;
|
||||
}
|
||||
|
||||
if (arg0 == 0x32) {
|
||||
if ((D_80078404 < 0xC) && (D_80078390[0] > 0) && (D_80078390[1] == 0) && (D_80078408 == 8)) {
|
||||
arg0 = 0x3C;
|
||||
} else if ((D_80078404 == 0xD) && (D_80078390[0] > 0) && (D_80078390[1] == 0) && (D_80078408 == 5)) {
|
||||
arg0 = 0x3E;
|
||||
D_800FF9B4 = 0x3E;
|
||||
} else if ((D_80078404 == 0xF) && (D_80078390[0] > 0) && (D_80078390[1] == 0)) {
|
||||
arg0 = 0x40;
|
||||
}
|
||||
}
|
||||
|
||||
if ((arg0 == 0x3F) && (D_80078404 == 0xD) && (D_80078408 == 5)) {
|
||||
arg0 = 0x41;
|
||||
}
|
||||
|
||||
if ((arg0 == 0x31) && (D_80078E78 != 0)) {
|
||||
arg0 = 0x46;
|
||||
}
|
||||
|
||||
if ((arg0 == 0x3A) && (D_80078E7C != 0)) {
|
||||
arg0 = 0x48;
|
||||
}
|
||||
|
||||
sp2C = arg0;
|
||||
switch (arg0) {
|
||||
case 0x0:
|
||||
D_80078E78 = 0;
|
||||
D_80078E7C = 0;
|
||||
D_80078E80 = 1;
|
||||
sp20 = 0x98;
|
||||
break;
|
||||
|
||||
case 0x1:
|
||||
sp20 = 0x68;
|
||||
D_80078E80 = 1;
|
||||
func_8003D918(0, 0xF);
|
||||
break;
|
||||
|
||||
case 0x9:
|
||||
sp20 = 0x50;
|
||||
break;
|
||||
|
||||
case 0x7:
|
||||
sp20 = 0x78;
|
||||
break;
|
||||
|
||||
case 0x8:
|
||||
sp20 = 0xA0;
|
||||
break;
|
||||
|
||||
case 0xF:
|
||||
sp20 = 0x60;
|
||||
break;
|
||||
|
||||
case 0xA:
|
||||
sp20 = 0x60;
|
||||
break;
|
||||
|
||||
case 0x11:
|
||||
sp20 = 0x60;
|
||||
break;
|
||||
|
||||
case 0x17:
|
||||
sp20 = 0x60;
|
||||
break;
|
||||
|
||||
case 0x18:
|
||||
sp20 = 0x60;
|
||||
break;
|
||||
|
||||
case 0x19:
|
||||
sp20 = 0x58;
|
||||
break;
|
||||
|
||||
case 0x1C:
|
||||
sp20 = 0x60;
|
||||
break;
|
||||
|
||||
case 0x1D:
|
||||
sp20 = D_80078E74;
|
||||
break;
|
||||
|
||||
case 0x1E:
|
||||
sp20 = 0x65;
|
||||
break;
|
||||
|
||||
case 0x1F:
|
||||
sp20 = 0x70;
|
||||
break;
|
||||
|
||||
case 0x20:
|
||||
sp20 = 0x70;
|
||||
break;
|
||||
|
||||
case 0x21:
|
||||
sp20 = 0x50;
|
||||
break;
|
||||
|
||||
case 0x1A:
|
||||
sp20 = 0x60;
|
||||
func_8004B154();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
sp20 = 0x58;
|
||||
func_8004B154();
|
||||
break;
|
||||
|
||||
case 0x2C:
|
||||
sp20 = 0x70;
|
||||
break;
|
||||
|
||||
case 0x13:
|
||||
sp20 = 0x68;
|
||||
break;
|
||||
|
||||
case 0x38:
|
||||
sp20 = 0x60;
|
||||
break;
|
||||
|
||||
case 0x15:
|
||||
sp20 = 0x60;
|
||||
break;
|
||||
|
||||
case 0x2D:
|
||||
sp20 = 0x60;
|
||||
break;
|
||||
|
||||
case 0x16:
|
||||
sp20 = 0x60;
|
||||
break;
|
||||
|
||||
case 0x10:
|
||||
sp20 = 0x68;
|
||||
break;
|
||||
|
||||
case 0x2A:
|
||||
sp20 = 0x60;
|
||||
break;
|
||||
|
||||
case 0x27:
|
||||
sp20 = 0x58;
|
||||
break;
|
||||
|
||||
case 0x2B:
|
||||
sp20 = 0x60;
|
||||
break;
|
||||
|
||||
case 0x30:
|
||||
D_80078E78 = 1;
|
||||
sp20 = 0x64;
|
||||
break;
|
||||
|
||||
case 0x28:
|
||||
D_80078E78 = 0;
|
||||
D_80078E7C = 0;
|
||||
sp20 = 0x48;
|
||||
break;
|
||||
|
||||
case 0x29:
|
||||
D_80078E78 = 0;
|
||||
D_80078E7C = 0;
|
||||
sp20 = 0x78;
|
||||
sp1C = 0x87;
|
||||
break;
|
||||
|
||||
case 0x31:
|
||||
sp20 = 0x60;
|
||||
break;
|
||||
|
||||
case 0x33:
|
||||
sp20 = 0x60;
|
||||
break;
|
||||
|
||||
case 0x46:
|
||||
sp20 = 0x60;
|
||||
break;
|
||||
|
||||
case 0x32:
|
||||
sp20 = 0x60;
|
||||
break;
|
||||
|
||||
case 0x3C:
|
||||
sp20 = 0x60;
|
||||
break;
|
||||
|
||||
case 0x3D:
|
||||
sp20 = 0x88;
|
||||
break;
|
||||
|
||||
case 0x3E:
|
||||
sp20 = 0x60;
|
||||
break;
|
||||
|
||||
case 0x3F:
|
||||
sp20 = 0x60;
|
||||
break;
|
||||
|
||||
case 0x40:
|
||||
sp20 = 0x50;
|
||||
break;
|
||||
|
||||
case 0x41:
|
||||
sp20 = 0x60;
|
||||
break;
|
||||
|
||||
case 0x45:
|
||||
sp20 = 0x60;
|
||||
break;
|
||||
|
||||
case 0x44:
|
||||
sp20 = 0x90;
|
||||
break;
|
||||
|
||||
case 0x47:
|
||||
sp20 = 0x88;
|
||||
D_80078E7C = 1;
|
||||
break;
|
||||
|
||||
case 0x5B:
|
||||
sp20 = 0x78;
|
||||
sp2C = 1;
|
||||
break;
|
||||
|
||||
case 0x3A:
|
||||
sp20 = 0x68;
|
||||
func_8003D918(0, 0xF);
|
||||
func_8004DF94(0x01100016, 0, 0);
|
||||
break;
|
||||
|
||||
case 0x48:
|
||||
func_8003D918(0, 0xF);
|
||||
func_8004DF94(0x01100016, 0, 0);
|
||||
sp20 = 0x70;
|
||||
break;
|
||||
|
||||
case 0x49:
|
||||
sp20 = 0x68;
|
||||
break;
|
||||
|
||||
case 0x4A:
|
||||
sp20 = 0xA8;
|
||||
break;
|
||||
|
||||
case 0x4B:
|
||||
sp20 = 0x60;
|
||||
break;
|
||||
|
||||
case 0x42:
|
||||
D_80078E78 = 0;
|
||||
D_80078E7C = 0;
|
||||
sp20 = 0x80;
|
||||
break;
|
||||
|
||||
case 0x43:
|
||||
D_80078E78 = 0;
|
||||
D_80078E7C = 0;
|
||||
sp20 = 0x80;
|
||||
break;
|
||||
|
||||
case 0x22:
|
||||
sp20 = 0x48;
|
||||
break;
|
||||
|
||||
case 0x24:
|
||||
sp20 = 0x48;
|
||||
break;
|
||||
|
||||
case 0x26:
|
||||
sp20 = 0x40;
|
||||
break;
|
||||
|
||||
case 0x23:
|
||||
sp20 = 0x50;
|
||||
break;
|
||||
|
||||
case 0x25:
|
||||
sp20 = 0x50;
|
||||
break;
|
||||
|
||||
case 0xE:
|
||||
sp20 = 0x64;
|
||||
break;
|
||||
|
||||
case 0xD:
|
||||
sp20 = 0x48;
|
||||
break;
|
||||
|
||||
case 0xB:
|
||||
sp20 = 0x38;
|
||||
break;
|
||||
|
||||
case 0xC:
|
||||
sp20 = 0x38;
|
||||
break;
|
||||
|
||||
case 0x12:
|
||||
sp20 = 0x2E;
|
||||
break;
|
||||
|
||||
case 0x36:
|
||||
sp20 = 0x38;
|
||||
break;
|
||||
|
||||
case 0x6:
|
||||
sp20 = 0x38;
|
||||
break;
|
||||
|
||||
case 0x37:
|
||||
sp20 = 0x38;
|
||||
break;
|
||||
|
||||
case 0x3B:
|
||||
sp20 = 0x3C;
|
||||
break;
|
||||
|
||||
case 0x39:
|
||||
sp20 = 0x38;
|
||||
break;
|
||||
|
||||
case 0x34:
|
||||
sp20 = 0x60;
|
||||
break;
|
||||
|
||||
case 0x2F:
|
||||
sp20 = 0x58;
|
||||
break;
|
||||
|
||||
case 0x2E:
|
||||
sp20 = 0x54;
|
||||
break;
|
||||
|
||||
case 0x35:
|
||||
sp20 = 0x54;
|
||||
break;
|
||||
|
||||
case 0x14:
|
||||
sp20 = 0x58;
|
||||
break;
|
||||
|
||||
case 0x2:
|
||||
sp20 = 0x34;
|
||||
break;
|
||||
|
||||
case 0x3:
|
||||
sp20 = 0x44;
|
||||
break;
|
||||
|
||||
case 0x4:
|
||||
sp20 = 0x38;
|
||||
break;
|
||||
|
||||
case 0x5:
|
||||
sp20 = 0x34;
|
||||
break;
|
||||
|
||||
case 0x5A:
|
||||
sp20 = 0x50;
|
||||
D_80078E80 = 0;
|
||||
sp2C = 2;
|
||||
break;
|
||||
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (sp2C < D_800FC6E4->unk_08 - 1) {
|
||||
var_a2 = D_800FC6E4->unk_0C[sp2C + 1] - D_800FC6E4->unk_0C[sp2C];
|
||||
} else if (sp2C == D_800FC6E4->unk_08 - 1) {
|
||||
var_a2 = D_800FC6E0->unk_08 - D_800FC6E4->unk_0C[sp2C];
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
|
||||
func_8004ADB0(D_800FC6E4->unk_0C[sp2C], D_800FC6DC, var_a2);
|
||||
func_80050B40(D_800FC6DC, D_800FC680, 0x98D8);
|
||||
|
||||
if (D_80078EC8 <= 0) {
|
||||
D_80078E70 = func_80038F30(D_800FC684, D_800FC680);
|
||||
} else {
|
||||
D_80078E70 = func_80039A7C(D_800FC684, D_800FC680, D_80078EC8 ^ 0);
|
||||
}
|
||||
|
||||
D_80078EC8 = -1;
|
||||
func_800393DC(D_80078E70, sp20);
|
||||
|
||||
if (sp1C != 0x80) {
|
||||
func_800395FC(D_80078E70, sp1C);
|
||||
}
|
||||
|
||||
if (arg0 == 0x1D) {
|
||||
D_800FF9B0 = D_80078E70;
|
||||
}
|
||||
|
||||
return D_80078E70;
|
||||
}
|
||||
|
||||
void func_8004B9C4(s32 arg0) {
|
||||
s32 i;
|
||||
|
||||
if (arg0 == 0) {
|
||||
arg0 = 1;
|
||||
}
|
||||
|
||||
func_800392A8(D_80078E70, arg0);
|
||||
D_80078EC8 = -1;
|
||||
func_800392A8(D_80078ECC, arg0);
|
||||
D_80078ED0 = 0;
|
||||
D_8007840C = 0;
|
||||
func_800392A8(D_80078FA8, arg0);
|
||||
func_80044E80(0);
|
||||
func_8003DB84(0);
|
||||
|
||||
if (D_800FF9B4 != 0x50) {
|
||||
for (i = 0; i < 2; i++) {
|
||||
func_80044D78(i, arg0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/4BDC0/func_8004BA88.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/4BDC0/func_8004BC84.s")
|
||||
s32 func_8004BC84(s32 arg0, u32 arg1) {
|
||||
s32 var_a3;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/4BDC0/func_8004BFB0.s")
|
||||
switch (arg0) {
|
||||
case 30:
|
||||
switch (D_80078ED4) {
|
||||
case 0:
|
||||
D_80078ED4 = 1;
|
||||
return func_8004B1CC(0x1E);
|
||||
|
||||
case 1:
|
||||
return 0;
|
||||
|
||||
case 2:
|
||||
return 0;
|
||||
|
||||
case 3:
|
||||
if (func_80039354(D_80078EDC) == 0) {
|
||||
D_80078ED4 = 1;
|
||||
if (arg1 == 0) {
|
||||
return func_8004B1CC(0x1E);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
return 0;
|
||||
|
||||
case 31:
|
||||
D_80078ED4 = 2;
|
||||
switch (arg1) {
|
||||
case 0:
|
||||
var_a3 = (arg1 * 0x48) + 0xD6;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
var_a3 = (arg1 * 0x48) + 0xD6;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
var_a3 = (arg1 * 0x48) + 0xD6;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
var_a3 = (arg1 * 0x48) + 0xD6;
|
||||
break;
|
||||
|
||||
case 4:
|
||||
var_a3 = (arg1 * 0x48) + 0xD6;
|
||||
break;
|
||||
|
||||
default:
|
||||
var_a3 = 0xD6;
|
||||
break;
|
||||
}
|
||||
|
||||
switch (arg1) {
|
||||
case 0:
|
||||
func_8004D9B0(0x9000D, 0, 0);
|
||||
break;
|
||||
|
||||
case 1:
|
||||
func_8004D9B0(0x9000E, 0, 0);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
func_8004D9B0(0x9000F, 0, 0);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
func_8004D9B0(0x90010, 0, 0);
|
||||
break;
|
||||
|
||||
case 4:
|
||||
func_8004D9B0(0x90011, 0, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
func_8004B1C0(var_a3);
|
||||
D_80078ED8 = func_8004B1CC(0x1F);
|
||||
return D_80078ED8;
|
||||
|
||||
case 32:
|
||||
switch (D_80078ED4) {
|
||||
case 0:
|
||||
return 0;
|
||||
|
||||
case 1:
|
||||
return 0;
|
||||
|
||||
case 2:
|
||||
if (func_80039354(D_80078ED8) == 0) {
|
||||
if (arg1 == 0) {
|
||||
D_80078ED4 = 3;
|
||||
D_80078EDC = 0;
|
||||
} else {
|
||||
func_8004B1C0(0x46);
|
||||
D_80078ED4 = 3;
|
||||
D_80078EDC = func_8004B1CC(0x20);
|
||||
return D_80078EDC;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
|
||||
case 3:
|
||||
return 0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
u32 func_8004BFB0(void) {
|
||||
return D_80078ED4;
|
||||
}
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
#include "global.h"
|
||||
|
||||
void func_8004B9C4(s32);
|
||||
void func_8004B1CC(s32);
|
||||
void func_8004BC84(s32, u32);
|
||||
s32 func_8004B1CC(s32);
|
||||
s32 func_8004BC84(s32, u32);
|
||||
u32 func_8004BFB0(void);
|
||||
|
||||
#endif // _4BDC0_H_
|
||||
|
||||
1440
src/4CBC0.c
1440
src/4CBC0.c
File diff suppressed because it is too large
Load Diff
@@ -3,6 +3,11 @@
|
||||
|
||||
#include "global.h"
|
||||
|
||||
extern s32 D_80078FA8;
|
||||
extern u32 D_80079014;
|
||||
|
||||
s32 func_8004D9B0(s32 arg0, s32 arg1, s32 arg2);
|
||||
s32 func_8004DDA4(s32, s32, s32);
|
||||
s32 func_8004DF94(s32, s32, s32);
|
||||
|
||||
#endif // _4CBC0_H_
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "global.h"
|
||||
#include "50860.h"
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/50860/func_8004FC60.s")
|
||||
|
||||
|
||||
8
src/50860.h
Normal file
8
src/50860.h
Normal file
@@ -0,0 +1,8 @@
|
||||
#ifndef _50860_H_
|
||||
#define _50860_H_
|
||||
|
||||
#include "global.h"
|
||||
|
||||
void func_8004FC60(s32, s32);
|
||||
|
||||
#endif // _50860_H_
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "global.h"
|
||||
#include "50CC0.h"
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/50CC0/func_800500C0.s")
|
||||
|
||||
|
||||
8
src/50CC0.h
Normal file
8
src/50CC0.h
Normal file
@@ -0,0 +1,8 @@
|
||||
#ifndef _50CC0_H_
|
||||
#define _50CC0_H_
|
||||
|
||||
#include "global.h"
|
||||
|
||||
void func_80050B40(s32, s32, s32);
|
||||
|
||||
#endif // _50CC0_H_
|
||||
@@ -98,10 +98,10 @@
|
||||
- [0x49DC0, c]
|
||||
- [0x4A360, c]
|
||||
- [0x4A3E0, c]
|
||||
- [0x4B940, c]
|
||||
- [0x4B940, c, 4B940]
|
||||
- [0x4BA90, c, 4BA90]
|
||||
- [0x4BDC0, c]
|
||||
- [0x4CBC0, c]
|
||||
- [0x4BDC0, c, 4BDC0]
|
||||
- [0x4CBC0, c, 4CBC0]
|
||||
- [0x4F410, c]
|
||||
- [0x4F7F0, c]
|
||||
- [0x4F870, c]
|
||||
@@ -331,6 +331,8 @@
|
||||
- [0x6A3E0, data, rom_data_6A3E0]
|
||||
- [0x6A3F0, .data, math_util]
|
||||
- [0x6FC00, data, rom_data_6FC00]
|
||||
- [0x79AE0, .data, 4CBC0]
|
||||
- [0x79C70, data, rom_data_79C70]
|
||||
|
||||
# libleo
|
||||
- [0x7A180, .data, libleo/driverominit]
|
||||
@@ -396,8 +398,8 @@
|
||||
- [0x7DFD0, rodata, rom_rodata_7DFD0]
|
||||
- [0x7E0D0, rodata, rom_rodata_7E0D0]
|
||||
- [0x7E0E0, .rodata, 4BA90]
|
||||
- [0x7E110, rodata, rom_rodata_7E110]
|
||||
- [0x7E2F0, rodata, rom_rodata_7E2F0]
|
||||
- [0x7E110, .rodata, 4BDC0]
|
||||
- [0x7E2F0, .rodata, 4CBC0]
|
||||
- [0x7E560, rodata, rom_rodata_7E560]
|
||||
- [0x7E5D0, rodata, rom_rodata_7E5D0]
|
||||
- [0x7E600, rodata, rom_rodata_7E600]
|
||||
@@ -446,6 +448,9 @@
|
||||
- {vram: 0x800A74C0, type: .bss, name: crash_screen}
|
||||
- {vram: 0x800A7EA0, type: .bss, name: profiler}
|
||||
- {vram: 0x800A8100, type: bss, name: unk_bss_2}
|
||||
- {vram: 0x800FF990, type: .bss, name: 4B940}
|
||||
- {vram: 0x800FF9B0, type: .bss, name: 4BDC0}
|
||||
- {vram: 0x800FF9C0, type: bss, name: unk_bss_10}
|
||||
|
||||
# libleo
|
||||
- {vram: 0x80100740, type: .bss, name: libleo/driverominit}
|
||||
|
||||
Reference in New Issue
Block a user