Merge pull request #114 from Kelebek1/fragment2

fragment2
This commit is contained in:
Revo
2024-09-02 16:48:55 -04:00
committed by GitHub
23 changed files with 3308 additions and 191 deletions

View File

@@ -44,16 +44,20 @@ typedef struct unk_D_86002F58_004_000_004 {
/* 0x08 */ unk_D_86002F58_004_000_010* unk_08;
} unk_D_86002F58_004_000_004; // size >= 0x0C
typedef struct unk_D_86002F58_004_000_000 {
/* 0x00 */ u8 unk_00;
/* 0x01 */ u8 unk_01;
/* 0x02 */ u8 unk_02;
/* 0x03 */ u8 unk_03;
/* 0x04 */ struct unk_D_86002F58_004_000_000* unk_04;
/* 0x08 */ struct unk_D_86002F58_004_000_000* unk_08;
/* 0x0C */ unk_D_86002F58_004_000_00C* unk_0C;
/* 0x10 */ s32 unk_10;
/* 0x14 */ s32 unk_14;
} unk_D_86002F58_004_000_000; // size = 0x18
typedef struct unk_D_86002F58_004_000 {
/* 0x000 */ u8 unk_000;
/* 0x001 */ u8 unk_001;
/* 0x002 */ u8 unk_002;
/* 0x003 */ u8 unk_003;
/* 0x004 */ struct unk_D_86002F58_004_000* unk_004;
/* 0x008 */ struct unk_D_86002F58_004_000* unk_008;
/* 0x00C */ unk_D_86002F58_004_000_00C* unk_00C;
/* 0x010 */ s32 unk_010;
/* 0x014 */ s32 unk_014;
/* 0x000 */ unk_D_86002F58_004_000_000 unk_000;
/* 0x018 */ s16 unk_018;
/* 0x01A */ s16 unk_01A;
/* 0x01C */ u8 unk_01C;
@@ -83,7 +87,6 @@ typedef struct unk_D_86002F58_004_000 {
/* 0x0B4 */ char padB4[0xB4];
} unk_D_86002F58_004_000; // size = 0x168
// possibly unk_D_86002F58_004_000
typedef struct unk_D_86002F34_00C {
/* 0x00 */ char pad0[0x24];
/* 0x24 */ MtxF* unk_024;
@@ -115,12 +118,6 @@ typedef struct unk_D_86002F30 {
/* 0x08 */ unk_D_86002F58_004_000_004* unk_08[4];
} unk_D_86002F30; // size = 0x18 ??
typedef struct unk_D_800AC840 {
/* 0x00 */ char pad0[0xC];
/* 0x0C */ unk_D_86002F58_004_000* unk_0C;
/* 0x10 */ char pad10[8];
} unk_D_800AC840; // size = 0x18
struct UnkInputStruct8000D738 {
s32 unk0;
s32 unk4;

View File

@@ -37,4 +37,16 @@
#define ALIGN16(val) (((val) + 0xF) & ~0xF)
#define ALIGN64(val) (((val) + 0x3F) & ~0x3F)
#define DECR(x) ((x) == 0 ? 0 : --(x))
//! checks min first
#define CLAMP(x, min, max) ((x) < (min) ? (min) : (x) > (max) ? (max) : (x))
//! checks max first
#define CLAMP_ALT(x, min, max) ((x) > (max) ? (max) : (x) < (min) ? (min) : (x))
#define CLAMP_MAX(x, max) ((x) > (max) ? (max) : (x))
#define CLAMP_MIN(x, min) ((x) < (min) ? (min) : (x))
#define ABS(x) ((x) >= 0 ? (x) : -(x))
#define ABS_ALT(x) ((x) < 0 ? -(x) : (x))
#endif

View File

@@ -29,13 +29,13 @@ typedef union {
};
} MtxF;
typedef struct {
typedef struct Vec3f {
/* 0x0 */ f32 x;
/* 0x4 */ f32 y;
/* 0x8 */ f32 z;
} Vec3f; // size = 0xC
typedef struct {
typedef struct Vec3s {
/* 0x0 */ s16 x;
/* 0x2 */ s16 y;
/* 0x4 */ s16 z;

View File

@@ -36,9 +36,11 @@ extern u32 D_81000000;
extern u32 D_8D000000;
typedef struct unk_D_80068BA0 {
/* 0x00 */ char pad00[6];
/* 0x00 */ char pad00[0x4];
/* 0x04 */ s16 unk_04;
/* 0x06 */ u16 unk_06;
/* 0x08 */ u16 unk_08;
/* 0x0A */ char pad0A[0x2];
} unk_D_80068BA0; // size >= 0xC
extern unk_D_80068BA0* D_80068BA0;
@@ -95,13 +97,13 @@ 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_000 D_800AC840;
extern struct unk_D_86002F58_004_000_000 D_800AC858;
extern struct unk_D_86002F58_004_000* D_8006F09C;
extern s32 D_8006F050[];
extern s16 D_8006F05C[];
extern f32 D_8006F064[];
extern struct Vec3f D_8006F050;
extern struct Vec3s D_8006F05C;
extern struct Vec3f D_8006F064;
typedef struct unk_D_8006FF00 {
/* 0x00 */ char unk_00[0x10];
@@ -111,11 +113,6 @@ typedef struct unk_D_8006FF00 {
} unk_D_8006FF00; // size = 0x1C
extern unk_D_8006FF00 D_8006FF00[];
extern s16 D_8780FA2C;
extern s16 D_8780FA32;
extern s16 D_8780FA34;
extern s16 D_8780FA36;
typedef struct unk_D_800AC870_sub {
/* 0x00 */ s16 unk_00;
/* 0x02 */ s16 unk_02;
@@ -199,4 +196,20 @@ typedef struct unk_D_800FC798 {
} unk_D_800FC798; // size >= 0xC
extern unk_D_800FC798* D_800FC798;
typedef struct unk_D_800A6CF4 {
/* 0x00 */ char unk00[0x20];
/* 0x20 */ s32 unk_20;
} unk_D_800A6CF4; // size = 0x24
extern unk_D_800A6CF4 D_800A6CF4;
extern Mtx D_8006F010;
extern u32 D_3010000;
extern u32 D_3016E80;
extern u32 D_30200C0;
extern u32 D_3004000;
extern u32 D_3008000;
extern u32 D_300C000;
extern u32 D_1003E78[];
extern u32 D_304F120[];
#endif

View File

@@ -71,8 +71,7 @@ gSIEventMesgBuf = 0x800A73F8;
gEepromMesgQueue = 0x800A7400;
gEepromMesgBuf = 0x800A73FC;
.L8120A860 = 0x8120A860;
D_8780FA30 = 0x8780FA30;
D_8780FA34 = 0x8780FA34;
D_8780FA30 = 0x8780FA30; // size:0x8
D_87906044 = 0x87906044;
D_87906048 = 0x87906048;
D_87906060 = 0x87906060;
@@ -241,3 +240,6 @@ D_87A01190 = 0x87A01190;
D_87A011A4 = 0x87A011A4;
D_800A7428 = 0x800A7428;
D_80079014 = 0x80079014;
D_3004000 = 0x3004000;
D_8780FCB8 = 0x8780FCB8; // size:0x20
D_8780FA68 = 0x8780FA68; // size:0x8

View File

@@ -1,25 +1,25 @@
#include "global.h"
#include "11BA0.h"
void func_80010FA0(unk_D_86002F58_004_000* arg0, u8 arg1) {
void func_80010FA0(unk_D_86002F58_004_000_000* arg0, u8 arg1) {
if (arg0 != NULL) {
arg0->unk_000 = arg1;
arg0->unk_001 = 0x11;
arg0->unk_002 = 0;
arg0->unk_003 = 0;
arg0->unk_004 = arg0;
arg0->unk_008 = arg0;
arg0->unk_00C = NULL;
arg0->unk_010 = 0;
arg0->unk_014 = 0;
arg0->unk_00 = arg1;
arg0->unk_01 = 0x11;
arg0->unk_02 = 0;
arg0->unk_03 = 0;
arg0->unk_04 = arg0;
arg0->unk_08 = arg0;
arg0->unk_0C = NULL;
arg0->unk_10 = 0;
arg0->unk_14 = 0;
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/11BA0/func_80010FDC.s")
unk_D_86002F58_004_000* func_8001103C(MainPoolState* arg0, void* arg1) {
unk_D_86002F58_004_000_000* func_8001103C(MainPoolState* arg0, void* arg1) {
if (arg0 != 0) {
arg1 = func_80002DCC(arg0, 0x18, 4);
arg1 = func_80002DCC(arg0, sizeof(unk_D_86002F58_004_000_000), 4);
}
if (arg1 != NULL) {
@@ -67,10 +67,10 @@ unk_D_86002F58_004_000* func_8001103C(MainPoolState* arg0, void* arg1) {
#pragma GLOBAL_ASM("asm/us/nonmatchings/11BA0/func_800118D0.s")
unk_D_86002F58_004_000* func_80011938(s32 arg0, unk_D_86002F58_004_000* arg1, s16 arg2, Vec3f* arg3, Vec3s* arg4,
Vec3f* arg5) {
unk_D_86002F58_004_000* func_80011938(MainPoolState* arg0, unk_D_86002F58_004_000* arg1, s16 arg2, Vec3f* arg3,
Vec3s* arg4, Vec3f* arg5) {
if (arg0 != 0) {
arg1 = func_80002DCC(arg0, 0x168, 4);
arg1 = func_80002DCC(arg0, sizeof(unk_D_86002F58_004_000), 4);
}
if (arg1 != NULL) {
@@ -93,8 +93,8 @@ unk_D_86002F58_004_000* func_80011938(s32 arg0, unk_D_86002F58_004_000* arg1, s1
arg1->unk_058 = 0;
arg1->unk_05C = 0;
arg1->unk_05E = 0;
func_80010FA0(arg1, 0x16);
arg1->unk_002 |= 0x60;
func_80010FA0(&arg1->unk_000, 0x16);
arg1->unk_000.unk_02 |= 0x60;
}
return arg1;
@@ -124,21 +124,21 @@ unk_D_86002F58_004_000* func_80011938(s32 arg0, unk_D_86002F58_004_000* arg1, s1
#pragma GLOBAL_ASM("asm/us/nonmatchings/11BA0/func_80012044.s")
void func_80012094(unk_D_800AC840* arg0, unk_D_86002F58_004_000* arg1) {
unk_D_86002F58_004_000* temp_v0;
unk_D_86002F58_004_000_004* temp_v1;
void func_80012094(unk_D_86002F58_004_000_000* arg0, unk_D_86002F58_004_000_000* arg1) {
unk_D_86002F58_004_000_000* temp_v0;
unk_D_86002F58_004_000_000* temp_v1;
if ((arg0 != NULL) && (arg1 != NULL)) {
temp_v0 = arg0->unk_0C;
if (temp_v0 == NULL) {
arg0->unk_0C = arg1;
arg1->unk_004 = arg1;
arg1->unk_008 = arg1;
arg1->unk_04 = arg1;
arg1->unk_08 = arg1;
} else {
temp_v1 = temp_v0->unk_004;
arg1->unk_008 = temp_v0;
arg1->unk_004 = temp_v1;
temp_v0->unk_004 = arg1;
temp_v1 = temp_v0->unk_04;
arg1->unk_08 = temp_v0;
arg1->unk_04 = temp_v1;
temp_v0->unk_04 = arg1;
temp_v1->unk_08 = arg1;
}
}

View File

@@ -4,9 +4,15 @@
#include "global.h"
#include "src/memory.h"
unk_D_86002F58_004_000* func_8001103C(MainPoolState*, void*);
unk_D_86002F58_004_000* func_80011938(s32 arg0, unk_D_86002F58_004_000* arg1, s16 arg2, Vec3f* arg3, Vec3s* arg4, Vec3f* arg5);
void func_80012094(unk_D_800AC840*, unk_D_86002F58_004_000*);
typedef struct unk_func_80011B94 {
/* 0x00 */ unk_D_86002F58_004_000_000 unk_00;
/* 0x18 */ Gfx* unk_18;
} unk_func_80011B94; // size = 0x1C
unk_D_86002F58_004_000_000* func_8001103C(MainPoolState*, void*);
unk_D_86002F58_004_000* func_80011938(MainPoolState* arg0, unk_D_86002F58_004_000* arg1, s16 arg2, Vec3f* arg3, Vec3s* arg4, Vec3f* arg5);
unk_func_80011B94* func_80011B94(MainPoolState*, void*, s32, Gfx*);
void func_80012094(unk_D_86002F58_004_000_000*, unk_D_86002F58_004_000_000*);
#endif // _11BA0_H_

View File

@@ -15,20 +15,20 @@ void func_8001BB20(void) {
}
void func_8001BB58(unk_D_86002F58_004_000* arg0) {
func_80011938(0, arg0, 0, D_8006F050, D_8006F05C, D_8006F064);
func_80012094(&D_800AC840, arg0);
func_80011938(NULL, arg0, 0, &D_8006F050, &D_8006F05C, &D_8006F064);
func_80012094(&D_800AC840, &arg0->unk_000);
arg0->unk_0A6 = 0;
arg0->unk_001 &= ~1;
arg0->unk_000.unk_01 &= ~1;
}
void func_8001BBC8(unk_D_86002F58_004_000* arg0) {
func_80011938(0, arg0, 0, D_8006F050, D_8006F05C, D_8006F064);
func_80012094(&D_800AC858, arg0);
arg0->unk_001 &= ~1;
func_80011938(NULL, arg0, 0, &D_8006F050, &D_8006F05C, &D_8006F064);
func_80012094(&D_800AC858, &arg0->unk_000);
arg0->unk_000.unk_01 &= ~1;
}
void func_8001BC34(unk_D_86002F58_004_000* arg0, s16 arg1, s16 arg2, unk_D_86002F58_004_000_004* arg3) {
func_80012094(arg0, arg3);
func_80012094(&arg0->unk_000, arg3);
func_8000ED98(&arg0->unk_060);
arg0->unk_018 = arg1;
arg0->unk_01A = arg2;
@@ -36,12 +36,12 @@ void func_8001BC34(unk_D_86002F58_004_000* arg0, s16 arg1, s16 arg2, unk_D_86002
arg0->unk_01D = 0xFF;
arg0->unk_01C = 0;
arg0->unk_001 |= 0x1;
arg0->unk_000.unk_01 |= 0x1;
arg0->unk_002 &= ~0x4;
arg0->unk_002 |= 0x20;
arg0->unk_002 |= 0x40;
arg0->unk_002 &= ~0x2;
arg0->unk_000.unk_02 &= ~0x4;
arg0->unk_000.unk_02 |= 0x20;
arg0->unk_000.unk_02 |= 0x40;
arg0->unk_000.unk_02 &= ~0x2;
arg0->unk_0A0 = -0x100;
arg0->unk_03C = -0x100;
@@ -50,7 +50,7 @@ void func_8001BC34(unk_D_86002F58_004_000* arg0, s16 arg1, s16 arg2, unk_D_86002
arg0->unk_054 = -1;
arg0->unk_058 = 0;
arg0->unk_002 &= ~0x8;
arg0->unk_000.unk_02 &= ~0x8;
if (arg2 > 0) {
func_8003260C(arg0);
@@ -58,12 +58,12 @@ void func_8001BC34(unk_D_86002F58_004_000* arg0, s16 arg1, s16 arg2, unk_D_86002
}
void func_8001BCF0(unk_D_86002F58_004_000* arg0) {
arg0->unk_00C = NULL;
arg0->unk_001 &= ~1;
arg0->unk_000.unk_0C = NULL;
arg0->unk_000.unk_01 &= ~1;
}
s32 func_8001BD04(unk_D_86002F58_004_000* arg0, s32 arg1) {
unk_D_86002F58_004_000_00C* tmp = arg0->unk_00C;
unk_D_86002F58_004_000_00C* tmp = arg0->unk_000.unk_0C;
unk_D_86002F58_004_000_00C_028* temp_v0 = tmp->unk_28(0, 0);
if (arg1 == -1) {
@@ -77,7 +77,7 @@ s32 func_8001BD04(unk_D_86002F58_004_000* arg0, s32 arg1) {
}
s32 func_8001BD9C(unk_D_86002F58_004_000* arg0, s32 arg1) {
unk_D_86002F58_004_000_00C* temp_v0 = arg0->unk_00C;
unk_D_86002F58_004_000_00C* temp_v0 = arg0->unk_000.unk_0C;
unk_D_86002F58_004_000_00C_028* temp_v1 = temp_v0->unk_28(0, 0);
if (arg1 == -1) {
@@ -110,7 +110,7 @@ unk_D_86002F58_004_000_00C_028* func_8001BE90(unk_D_86002F58_004_000* arg0, s32
}
if (arg0 != NULL) {
unk_D_86002F58_004_000_00C* tmp = arg0->unk_00C;
unk_D_86002F58_004_000_00C* tmp = arg0->unk_000.unk_0C;
var_v1 = tmp->unk_28(arg1, 0);
}

View File

@@ -58,7 +58,7 @@ void func_8001C604(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u8 arg4, u8 arg5, u8
func_8001C330(arg0, arg1, arg2, arg3, 0, 0, 0, 0, 0);
}
void func_8001C6AC(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32 arg4, s16 arg5, s32 arg6) {
void func_8001C6AC(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32* arg4, s16 arg5, s32 arg6) {
gDPLoadTextureBlock(gDisplayListHead++, arg4, G_IM_FMT_RGBA, G_IM_SIZ_16b, arg5, arg3, 0,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD,
G_TX_NOLOD);
@@ -66,7 +66,7 @@ void func_8001C6AC(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32 arg4, s16 arg5, s
func_8001C330(arg0, arg1, arg2, arg3, 0, 0, 0x400, 0x400, arg6);
}
void func_8001C8C4(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32 arg4, s16 arg5, s32 arg6) {
void func_8001C8C4(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32* arg4, s16 arg5, s32 arg6) {
gDPLoadTextureBlock(gDisplayListHead++, arg4, G_IM_FMT_RGBA, G_IM_SIZ_32b, arg5, arg3, 0,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD,
G_TX_NOLOD);
@@ -74,40 +74,40 @@ void func_8001C8C4(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32 arg4, s16 arg5, s
func_8001C330(arg0, arg1, arg2, arg3, 0, 0, 0x400, 0x400, arg6);
}
void func_8001CADC(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32 arg4, s16 arg5, s32 arg6) {
void func_8001CADC(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32* arg4, s16 arg5, s32 arg6) {
gDPLoadTextureBlock(gDisplayListHead++, arg4, G_IM_FMT_IA, G_IM_SIZ_8b, arg5, arg3, 0, G_TX_NOMIRROR | G_TX_CLAMP,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
func_8001C330(arg0, arg1, arg2, arg3, 0, 0, 0x400, 0x400, arg6);
}
void func_8001CCF8(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32 arg4, s16 arg5, s32 arg6) {
void func_8001CCF8(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32* arg4, s16 arg5, s32 arg6) {
gDPLoadTextureBlock(gDisplayListHead++, arg4, G_IM_FMT_IA, G_IM_SIZ_16b, arg5, arg3, 0, G_TX_NOMIRROR | G_TX_CLAMP,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
func_8001C330(arg0, arg1, arg2, arg3, 0, 0, 0x400, 0x400, arg6);
}
void func_8001CF10(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32 arg4, s16 arg5, s32 arg6) {
void func_8001CF10(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32* arg4, s16 arg5, s32 arg6) {
gDPLoadTextureBlock_4b(gDisplayListHead++, arg4, G_IM_FMT_I, arg5, arg3, 0, G_TX_NOMIRROR | G_TX_CLAMP,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
func_8001C330(arg0, arg1, arg2, arg3, 0, 0, 0x400, 0x400, arg6);
}
void func_8001D12C(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32 arg4, s16 arg5, s32 arg6) {
void func_8001D12C(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32* arg4, s16 arg5, s32 arg6) {
gDPLoadTextureBlock(gDisplayListHead++, arg4, G_IM_FMT_I, G_IM_SIZ_8b, arg5, arg3, 0, G_TX_NOMIRROR | G_TX_CLAMP,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
func_8001C330(arg0, arg1, arg2, arg3, 0, 0, 0x400, 0x400, arg6);
}
void func_8001D348(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32 arg4, s16 arg5, s32 arg6) {
void func_8001D348(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32* arg4, s16 arg5, s32 arg6) {
gDPLoadTextureBlock(gDisplayListHead++, arg4, G_IM_FMT_I, G_IM_SIZ_16b, arg5, arg3, 0, G_TX_NOMIRROR | G_TX_CLAMP,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
func_8001C330(arg0, arg1, arg2, arg3, 0, 0, 0x400, 0x400, arg6);
}
void func_8001D560(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32 arg4, u32 arg5, s16 arg6, s32 arg7) {
void func_8001D560(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32* arg4, u32* arg5, s16 arg6, s32 arg7) {
gDPLoadTextureBlock(gDisplayListHead++, arg4, G_IM_FMT_RGBA, G_IM_SIZ_16b, arg6, arg3, 0,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD,
G_TX_NOLOD);
@@ -260,11 +260,11 @@ void func_8001E000(s16 arg0, s16 arg1, s16 arg2, f32 arg3, Vtx* arg4, u32 arg5)
}
#ifdef NON_MATCHING
unk_func_8001E680* func_8001E490(void) {
Vtx* func_8001E490(void) {
s16 i;
s16 j;
unk_func_8001E680* sp54;
unk_func_8001E680* var_s0;
Vtx* sp54;
Vtx* var_s0;
sp54 = main_pool_alloc(0x4B00, 0);
if (sp54 != NULL) {
@@ -283,22 +283,21 @@ unk_func_8001E680* func_8001E490(void) {
return sp54;
}
#else
unk_func_8001E680* func_8001E490(void);
Vtx* func_8001E490(void);
#pragma GLOBAL_ASM("asm/us/nonmatchings/1CF30/func_8001E490.s")
#endif
void func_8001E680(unk_func_8001E680* arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5, u8 arg6, u8 arg7, u8 arg8,
u8 arg9) {
arg0->unk_00 = arg1;
arg0->unk_02 = arg2;
arg0->unk_04 = arg3;
arg0->unk_06 = 0;
arg0->unk_08 = arg4;
arg0->unk_0A = arg5;
arg0->unk_0C = arg6;
arg0->unk_0D = arg7;
arg0->unk_0E = arg8;
arg0->unk_0F = arg9;
void func_8001E680(Vtx* arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5, u8 arg6, u8 arg7, u8 arg8, u8 arg9) {
arg0->v.ob[0] = arg1;
arg0->v.ob[1] = arg2;
arg0->v.ob[2] = arg3;
arg0->v.flag = 0;
arg0->v.tc[0] = arg4;
arg0->v.tc[1] = arg5;
arg0->v.cn[0] = arg6;
arg0->v.cn[1] = arg7;
arg0->v.cn[2] = arg8;
arg0->v.cn[3] = arg9;
}
void func_8001E6E8(Vp* arg0, s16 arg1, s16 arg2) {

View File

@@ -3,35 +3,23 @@
#include "global.h"
typedef struct unk_func_8001E680 {
/* 0x00 */ s16 unk_00;
/* 0x02 */ s16 unk_02;
/* 0x04 */ s16 unk_04;
/* 0x06 */ s16 unk_06;
/* 0x08 */ s16 unk_08;
/* 0x0A */ s16 unk_0A;
/* 0x0C */ u8 unk_0C;
/* 0x0D */ u8 unk_0D;
/* 0x0E */ u8 unk_0E;
/* 0x0F */ u8 unk_0F;
} unk_func_8001E680; // size = 0x10
void func_8001C330(s16 arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5, s16 arg6, s16 arg7, s32 arg8);
void func_8001C4E4(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6);
void func_8001C560(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u8 arg4, u8 arg5, u8 arg6);
void func_8001C604(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u8 arg4, u8 arg5, u8 arg6, u8 arg7);
void func_8001C6AC(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32 arg4, s16 arg5, s32 arg6);
void func_8001C8C4(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32 arg4, s16 arg5, s32 arg6);
void func_8001CADC(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32 arg4, s16 arg5, s32 arg6);
void func_8001CCF8(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32 arg4, s16 arg5, s32 arg6);
void func_8001CF10(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32 arg4, s16 arg5, s32 arg6);
void func_8001D12C(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32 arg4, s16 arg5, s32 arg6);
void func_8001D348(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32 arg4, s16 arg5, s32 arg6);
void func_8001D560(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32 arg4, u32 arg5, s16 arg6, s32 arg7);
void func_8001C6AC(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32* arg4, s16 arg5, s32 arg6);
void func_8001C8C4(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32* arg4, s16 arg5, s32 arg6);
void func_8001CADC(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32* arg4, s16 arg5, s32 arg6);
void func_8001CCF8(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32* arg4, s16 arg5, s32 arg6);
void func_8001CF10(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32* arg4, s16 arg5, s32 arg6);
void func_8001D12C(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32* arg4, s16 arg5, s32 arg6);
void func_8001D348(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32* arg4, s16 arg5, s32 arg6);
void func_8001D560(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32* arg4, u32* arg5, s16 arg6, s32 arg7);
void func_8001D924(u32 arg0);
void func_8001DBDC(u32 arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4);
void func_8001E000(s16 arg0, s16 arg1, s16 arg2, f32 arg3, Vtx* arg4, u32 arg5);
unk_func_8001E680* func_8001E490(void);
void func_8001E680(unk_func_8001E680* arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5, u8 arg6, u8 arg7, u8 arg8, u8 arg9);
Vtx* func_8001E490(void);
void func_8001E680(Vtx* arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5, u8 arg6, u8 arg7, u8 arg8, u8 arg9);
void func_8001E6E8(Vp* arg0, s16 arg1, s16 arg2);
u8 func_8001E730(u16 arg0);
u8 func_8001E78C(unk_D_800AC870_sub* arg0, u16 arg1);
@@ -62,5 +50,4 @@ void func_8001F504(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s
s32 func_8001F5B0(s32 x, s32 y, const char* fmt, ...);
void func_8001F6E8(s32 arg0, s32 arg1);
#endif // _1CF30_H_

View File

@@ -4,6 +4,7 @@
#include "global.h"
void func_80020460(s32, s32, s32, s32, s32);
void func_8002053C(s32 arg0, s32 arg1, s32 arg2, s32 arg3, u8*, u8*);
#endif // _20470_H_

View File

@@ -1,4 +1,4 @@
#include "global.h"
#include "26820.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/26820/func_80025C20.s")

11
src/26820.h Normal file
View File

@@ -0,0 +1,11 @@
#ifndef _26820_H_
#define _26820_H_
#include "global.h"
void func_80026684(s32, s32);
void func_800280D4(s32);
void func_800284B4(s32);
void func_80028AFC(s32);
#endif // _26820_H_

View File

@@ -3,7 +3,11 @@
#include "global.h"
void func_8002D510(void);
s32 func_8002D5AC(s32);
void func_8002D600(s32, s16);
char* func_8002D7C0(char* arg0, s32 arg1, s32 arg2, s32 arg3);
s32 func_8002D80C(char*);
#endif // _2E110_H_

View File

@@ -3,6 +3,7 @@
#include "global.h"
s32 func_800484C0(s32);
s32 func_800484E0(void);
#endif // _490A0_H_

View File

@@ -3,7 +3,10 @@
#include "global.h"
void func_8004B094(u32);
void func_8004AE90(s32 arg0, u32 arg1);
void func_8004AF24(s32 arg0);
void func_8004AF44(u32 arg0);
void func_8004B094(u32 arg0);
void func_8004B154(void);
#endif // _4BA90_H_

View File

@@ -952,7 +952,7 @@ s32 func_8004D3B0(s32 arg0, s32 arg1, s32 arg2) {
void func_8004D848(UNUSED s32 arg0, UNUSED s32 arg1, UNUSED s32 arg2) {
}
s32 func_8004D858(s32 arg0, s32 arg1) {
s32 func_8004D858(s32 arg0, u32 arg1) {
static s32 D_80079008 = 0x00000000;
static s32 D_8007900C = 0x00000000;
static s32 D_80079010 = 0x00000000;

View File

@@ -6,8 +6,33 @@
extern s32 D_80078FA8;
extern u32 D_80079014;
s32 func_8004BFC0(s32 arg0, s32 arg1, s32 arg2);
void func_8004C16C(UNUSED s32 arg0, UNUSED s32 arg1, UNUSED s32 arg2);
s32 func_8004C17C(s32 arg0, s32 arg1, s32 arg2);
void func_8004C444(UNUSED s32 arg0, UNUSED s32 arg1, UNUSED s32 arg2);
s32 func_8004C454(u32 arg0, u32 arg1);
s32 func_8004C4FC(s32 arg0, s32 arg1, s32 arg2);
void func_8004C6CC(UNUSED s32 arg0, UNUSED s32 arg1, UNUSED s32 arg2);
s32 func_8004C6DC(s32 arg0, s32 arg1, s32 arg2);
void func_8004C8A4(UNUSED s32 arg0, UNUSED s32 arg1, UNUSED s32 arg2);
s32 func_8004C8B4(s32 arg0, s32 arg1, UNUSED s32 arg2);
void func_8004CA6C(UNUSED s32 arg0, UNUSED s32 arg1, UNUSED s32 arg2);
s32 func_8004CA7C(s32 arg0, s32 arg1, UNUSED s32 arg2);
void func_8004CC10(UNUSED s32 arg0, UNUSED s32 arg1, UNUSED s32 arg2);
void func_8004CC20(s32 arg0, u32 arg1);
u32 func_8004CC34(void);
f32 func_8004CC94(void);
s32 func_8004CCD8(s32 arg0, s32 arg1, s32 arg2);
void func_8004D16C(s32 arg0, s32 arg1, UNUSED s32 arg2);
s32 func_8004D1B0(s32 arg0, UNUSED s32 arg1, UNUSED s32 arg2);
void func_8004D3A0(UNUSED s32 arg0, UNUSED s32 arg1, UNUSED s32 arg2);
s32 func_8004D3B0(s32 arg0, s32 arg1, s32 arg2);
void func_8004D848(UNUSED s32 arg0, UNUSED s32 arg1, UNUSED s32 arg2);
s32 func_8004D858(s32 arg0, u32 arg1);
s32 func_8004D9B0(s32 arg0, s32 arg1, s32 arg2);
s32 func_8004DDA4(s32, s32, s32);
s32 func_8004DF94(s32, s32, s32);
void func_8004DC8C(s32 arg0, s32 arg1, s32 arg2);
s32 func_8004DDA4(s32 arg0, UNUSED s32 arg1, UNUSED s32 arg2);
s32 func_8004DF94(s32 arg0, s32 arg1, s32 arg2);
s32 func_8004E304(s32 arg0, UNUSED s32 arg1, UNUSED s32 arg2);
#endif // _4CBC0_H_

View File

@@ -1,88 +1,598 @@
#include "global.h"
#include "fragment2.h"
#include "src/1CF30.h"
#include "src/2E110.h"
#include "src/controller.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87800020.s")
extern u32 D_878067F0[];
extern u32 D_87807690[];
extern u32 D_87808530[];
extern u32 D_878093D0[];
extern u32 D_8780B110[];
extern u32 D_8780BFB0[];
extern u32 D_8780CE50[];
extern u32 D_8780DCF0[];
extern u32 D_8780A270[];
extern u32 D_878064F0[];
extern u32 D_87806670[];
extern u32 D_878065B0[];
extern u32 D_87806730[];
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_8780005C.s")
s32 D_87806330 = 0;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_878001D0.s")
static s32 D_8780FA20;
static s32 D_8780FA24;
u16 D_8780FA28;
s16 D_8780FA2A;
s16 D_8780FA2C;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_878001E8.s")
s16 D_8780FA30[4];
s16 D_8780FA38;
s16 D_8780FA3A;
s16 D_8780FA40[4];
s16 D_8780FA48;
static s32 pad_D_8780FA4C;
s16 D_8780FA50;
s16 D_8780FA52[2][4];
s16 D_8780FA68[4];
u32* D_8780FA70;
void func_87800020(void) {
func_8002D510();
D_87806330 = func_8002D5AC(0x1D);
D_8780FA24 = func_8002D5AC(0x14);
}
void func_8780005C(void) {
static s32 D_87806334 = 0;
s32 sp24;
s16 temp_s0;
if (!(Cont_GetControllerBits() & 1)) {
sp24 = func_8001F5B0(4, 0, func_8002D7C0(NULL, 0, D_8780FA24, 0));
temp_s0 = 0x50 - D_87806334;
gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 16, 0, 304, 240);
func_8001F3F4();
func_8001EBE0(4, 0);
func_8001F1E8(temp_s0, 0xB3, func_8002D7C0(NULL, 0, D_8780FA24, 0));
temp_s0 += sp24 + 0x1E;
if (temp_s0 < 0x140) {
func_8001F1E8(temp_s0, 0xB3, func_8002D7C0(NULL, 0, D_8780FA24, 0));
}
func_8001F444();
gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, 0, 320, 240);
D_87806334++;
if (D_87806334 >= (sp24 + 0x50)) {
D_87806334 = 0x32;
}
}
}
void func_878001D0(void) {
D_8780FA20++;
}
u32 func_878001E8(s32 arg0) {
u32 temp_a0 = guRandom() + D_8780FA20;
u32 var_v1;
if (arg0 == 0) {
var_v1 = 0;
} else {
var_v1 = (temp_a0 / 10) % arg0;
}
return var_v1;
}
#ifdef NON_MATCHING
void func_8780024C(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) {
s32 temp_lo;
s32 spF0;
spF0 = arg2 - 2;
temp_lo = ((arg4 - arg3) * spF0) / arg4;
gSPDisplayList(gDisplayListHead++, D_8006F518);
gDPPipeSync(gDisplayListHead++);
gDPSetPrimColor(gDisplayListHead++, 0, 0, 0, 0, 0, 0);
gDPSetCombineMode(gDisplayListHead++, G_CC_PRIMITIVE, G_CC_PRIMITIVE);
gDPSetRenderMode(gDisplayListHead++, G_RM_XLU_SURF, G_RM_XLU_SURF2);
gSPTextureRectangle(gDisplayListHead++, (arg0 - 2) << 2, (arg1 - 2) << 2, (arg0 + arg2 + 8) << 2, (arg1 + 16) << 2,
G_TX_RENDERTILE, 0, 0, 0, 0);
gDPSetCombineMode(gDisplayListHead++, G_CC_DECALRGBA, G_CC_DECALRGBA);
gDPLoadTextureBlock(gDisplayListHead++, D_878064F0, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 12, 0,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD,
G_TX_NOLOD);
gSPTextureRectangle(gDisplayListHead++, arg0 << 2, arg1 << 2, (arg0 + 2) << 2, (arg1 + 0xC) << 2, G_TX_RENDERTILE,
0, 0, 0x0400, 0x0400);
gDPLoadTextureBlock(gDisplayListHead++, D_87806670, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 12, 0,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD,
G_TX_NOLOD);
gSPTextureRectangle(gDisplayListHead++, ((arg0 + spF0) + 2) << 2, arg1 << 2, ((arg0 + spF0) + 4) << 2,
(arg1 + 0xC) << 2, G_TX_RENDERTILE, 0x00C0, 0, 0x0400, 0x0400);
spF0 = (arg2 - temp_lo) - 2;
if (spF0 > 0) {
gDPLoadTextureBlock(gDisplayListHead++, D_87806730, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 12, 0,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK,
G_TX_NOLOD, G_TX_NOLOD);
gSPTextureRectangle(gDisplayListHead++, (arg0 + 2) << 2, arg1 << 2, ((arg0 + 2) + spF0) << 2, (arg1 + 0xC) << 2,
G_TX_RENDERTILE, 0, 0, 0, 0x0400);
}
if (temp_lo > 0) {
gDPLoadTextureBlock(gDisplayListHead++, D_878065B0, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 12, 0,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK,
G_TX_NOLOD, G_TX_NOLOD);
gSPTextureRectangle(gDisplayListHead++, ((arg0 + 2) + spF0) << 2, arg1 << 2,
(((arg0 + 2) + spF0) + temp_lo) << 2, (arg1 + 0xC) << 2, G_TX_RENDERTILE, 0, 0, 0, 0x0400);
}
gSPDisplayList(gDisplayListHead++, D_8006F630);
}
#else
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_8780024C.s")
#endif
#ifdef NON_MATCHING
void func_878009BC(s32 arg0, s32 arg1, s32 arg2, s32 arg3) {
u32* spCC;
s32 sp14;
s32 temp_lo;
if (arg2 < ((arg3 * 0xA) / 48)) {
spCC = D_87806730;
} else if (arg2 < ((arg3 * 0x1B) / 48)) {
spCC = D_87806730;
} else {
spCC = D_878065B0;
}
gSPDisplayList(gDisplayListHead++, D_8006F518);
gDPLoadTextureBlock(gDisplayListHead++, D_878064F0, G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 5, 0,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD,
G_TX_NOLOD);
gSPTextureRectangle(gDisplayListHead++, arg0 << 2, arg1 << 2, (arg0 + 0x10) << 2, (arg1 + 5) << 2, G_TX_RENDERTILE,
0, 0, 0x0400, 0x0400);
gDPLoadTextureBlock(gDisplayListHead++, D_87806670, G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 5, 0,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD,
G_TX_NOLOD);
gSPTextureRectangle(gDisplayListHead++, (arg0 + 0x40) << 2, arg1 << 2, (arg0 + 0x41) << 2, (arg1 + 5) << 2,
G_TX_RENDERTILE, 0, 0, 0x0400, 0x0400);
temp_lo = ((arg3 - arg2) * 0x30) / arg3;
sp14 = 0x30 - temp_lo;
if (sp14 > 0) {
gDPLoadTextureBlock(gDisplayListHead++, spCC, G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 5, 0, G_TX_NOMIRROR | G_TX_CLAMP,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
gSPTextureRectangle(gDisplayListHead++, (arg0 + 0x10) << 2, arg1 << 2, (arg0 + sp14 + 0x10) << 2,
(arg1 + 5) << 2, G_TX_RENDERTILE, 0, 0, 0, 0x0400);
}
if (temp_lo > 0) {
gDPLoadTextureBlock(gDisplayListHead++, D_1003E78, G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 5, 0,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK,
G_TX_NOLOD, G_TX_NOLOD);
gSPTextureRectangle(gDisplayListHead++, ((arg0 + sp14) + 0x10) << 2, arg1 << 2,
((arg0 + sp14) + temp_lo + 0x10) << 2, (arg1 + 5) << 2, G_TX_RENDERTILE, 0, 0, 0, 0x0400);
}
gSPDisplayList(gDisplayListHead++, D_8006F630);
}
#else
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_878009BC.s")
#endif
s16 D_87806338 = -1;
u32* D_8780633C[] = { D_878067F0, D_87807690, D_87808530, D_878093D0 };
u32* D_8780634C[] = { D_8780B110, D_8780BFB0, D_8780CE50, D_8780DCF0, D_8780A270 };
#ifdef NON_MATCHING
void func_878010C8(s16 arg0) {
s32 i;
D_8780FA28 = 0;
D_87806338 = arg0;
D_8780FA2A = 0;
D_8780FA2C = 0;
for (i = 0; i < 4; i++) {
D_8780FA30[i] = 1;
}
if (arg0 == 3) {
D_8780FA38 = 1;
} else {
D_8780FA38 = 3;
}
D_8780FA3A = 3;
for (i = 0; i < 4; i++) {
D_8780FA40[i] = 0;
}
for (i = 0; i < 4; i++) {
D_8780FA68[i] = 0;
}
func_87800020();
}
#else
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_878010C8.s")
#endif
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_8780118C.s")
void func_8780118C(s16 arg0, s16 arg1, s16 arg2, s16 arg3) {
gDPPipeSync(gDisplayListHead++);
gDPSetRenderMode(gDisplayListHead++,
IM_RD | CVG_DST_FULL | ZMODE_OPA | CVG_X_ALPHA | FORCE_BL |
GBL_c1(G_BL_CLR_MEM, G_BL_0, G_BL_CLR_MEM, G_BL_1MA),
IM_RD | CVG_DST_FULL | ZMODE_OPA | CVG_X_ALPHA | FORCE_BL |
GBL_c2(G_BL_CLR_MEM, G_BL_0, G_BL_CLR_MEM, G_BL_1MA));
gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE);
gDPSetCycleType(gDisplayListHead++, G_CYC_1CYCLE);
gDPFillRectangle(gDisplayListHead++, arg0, arg1, arg0 + arg2, arg1 + arg3);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87801290.s")
void func_87801290(s32* arg0, s32* arg1, s8* arg2, s8* arg3, s32 arg4) {
s32 var_a1;
s32 var_t2;
s8 sp38[0x100];
s8* var_a2;
s32 sp30;
s8* var_t0;
s8* var_t1;
s8* var_v0;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_878013D4.s")
*arg0 = -1;
var_t1 = arg2;
*arg1 = -1;
var_t0 = sp38;
var_t2 = 0;
while (*var_t1 != 0) {
var_a2 = arg3;
var_v0 = var_t1;
if (*var_t1 != *var_a2) {
*var_t0++ = *var_t1;
} else {
var_a1 = 1;
while (*var_a2 != 0) {
if (*var_v0 != *var_a2) {
var_a1 = 0;
break;
}
var_v0++;
var_a2++;
}
if (var_a1 != 0) {
var_t2 = 1;
break;
}
*var_t0++ = *var_t1;
}
var_t1++;
}
*var_t0 = 0;
var_t0 = sp38;
var_a2 = var_t0;
sp30 = 0;
while (*var_t0 != 0) {
if (*var_t0 == 0xA) {
sp30 += 1;
var_a2 = var_t0;
}
var_t0++;
}
if (var_t2 != 0) {
*arg0 = func_8001F5B0(0, 0, (char*)var_a2);
*arg1 = arg4 * sp30;
}
}
s32 func_878013D4(UNUSED unk_D_800AC870* arg0, char* arg1) {
return func_8001F5B0(0, 0, arg1);
}
#ifdef NON_MATCHING
void func_87801400(s32 arg0, s16 arg1, s16 arg2, f32 arg3, f32 arg4) {
f32 temp_fa0;
f32 temp_fv1;
s16 a;
s16 b;
u32* var_t3;
if ((arg3 != 0.0f) && (arg4 != 0.0f)) {
if (arg0 < 0) {
arg0 = -1 - arg0;
var_t3 = D_8780634C[arg0];
} else {
var_t3 = D_8780633C[arg0 % 4];
}
gDPLoadTextureBlock(gDisplayListHead++, var_t3, G_IM_FMT_RGBA, G_IM_SIZ_32b, 36, 26, 0,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK,
G_TX_NOLOD, G_TX_NOLOD);
D_8780FA70 = var_t3;
temp_fa0 = 36.0f * arg3;
if (temp_fa0 > 0.0f) {
temp_fv1 = 0.5f;
} else {
temp_fv1 = -0.5f;
}
a = temp_fv1 + temp_fa0;
temp_fa0 = 26.0f * arg4;
if (temp_fa0 > 0.0f) {
temp_fv1 = 0.5f;
} else {
temp_fv1 = -0.5f;
}
b = temp_fv1 + temp_fa0;
func_8001C330(arg1, arg2, a, b, 0, 0, 1024.0f / arg3, 1024.0f / arg4, 0);
}
}
#else
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87801400.s")
#endif
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87801644.s")
void func_87801644(s32 arg0, s16 arg1, s16 arg2, f32 arg3) {
func_87801400(arg0, arg1, arg2, arg3, arg3);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87801684.s")
void func_87801684(s16 arg0, s16 arg1, unk_func_87801684* arg2) {
static unk_func_87801684* D_87806360 = NULL;
static unk_func_87801684* D_8780FA74;
static s16 D_8780FA78;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87801754.s")
if ((D_87806360 != arg2) || (arg2 == NULL)) {
D_87806360 = arg2;
if (arg2 == NULL) {
return;
}
D_8780FA74 = arg2;
D_8780FA78 = arg2->unk_04;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87801824.s")
D_8780FA78--;
if (D_8780FA78 <= 0) {
D_8780FA74++;
if (D_8780FA74->unk_00 == NULL) {
D_8780FA74 = arg2;
}
D_8780FA78 = D_8780FA74->unk_04;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_878018F4.s")
func_8001C8C4(arg0, arg1, 0x10, 0x10, D_8780FA74->unk_00, 0x10, 0);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87801AC0.s")
void func_87801754(s16 arg0, s16 arg1, unk_func_87801684* arg2) {
static unk_func_87801684* D_87806364 = NULL;
static unk_func_87801684* D_8780FA7C;
static s16 D_8780FA80;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87801C8C.s")
if ((D_87806364 != arg2) || (arg2 == NULL)) {
D_87806364 = arg2;
if (arg2 == NULL) {
return;
}
D_8780FA7C = arg2;
D_8780FA80 = arg2->unk_04;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87801D5C.s")
D_8780FA80--;
if (D_8780FA80 <= 0) {
D_8780FA7C++;
if (D_8780FA7C->unk_00 == NULL) {
D_8780FA7C = arg2;
}
D_8780FA80 = D_8780FA7C->unk_04;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87801F48.s")
func_8001C8C4(arg0, arg1, 0x10, 0x10, D_8780FA7C->unk_00, 0x10, 0);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_878021B4.s")
void func_87801824(s16 arg0, s16 arg1, unk_func_87801684* arg2) {
static unk_func_87801684* D_87806368 = NULL;
static unk_func_87801684* D_8780FA84;
static s16 D_8780FA88;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87802360.s")
if ((D_87806368 != arg2) || (arg2 == NULL)) {
D_87806368 = arg2;
if (arg2 == NULL) {
return;
}
D_8780FA84 = arg2;
D_8780FA88 = arg2->unk_04;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87802528.s")
D_8780FA88--;
if (D_8780FA88 <= 0) {
D_8780FA84++;
if (D_8780FA84->unk_00 == NULL) {
D_8780FA84 = arg2;
}
D_8780FA88 = D_8780FA84->unk_04;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_878025D0.s")
func_8001C8C4(arg0, arg1, 0x10, 0x10, D_8780FA84->unk_00, 0x10, 0);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_8780295C.s")
void func_878018F4(s16 arg0, s16 arg1, unk_func_87801684* arg2) {
static unk_func_87801684* D_8780636C = NULL;
static unk_func_87801684* D_8780FA8C;
static s16 D_8780FA90;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87802974.s")
if ((D_8780636C != arg2) || (arg2 == NULL)) {
D_8780636C = arg2;
if (arg2 == NULL) {
return;
}
D_8780FA8C = arg2;
D_8780FA90 = arg2->unk_04;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_878029C0.s")
D_8780FA90--;
if (D_8780FA90 <= 0) {
D_8780FA8C++;
if (D_8780FA8C->unk_00 == NULL) {
D_8780FA8C = arg2;
}
D_8780FA90 = D_8780FA8C->unk_04;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87802E1C.s")
gDPLoadTextureTile(gDisplayListHead++, D_8780FA8C->unk_00, G_IM_FMT_RGBA, G_IM_SIZ_32b, 40, 0, 0, 0, 39, 19, 0,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD,
G_TX_NOLOD);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87802E58.s")
func_8001C330(arg0, arg1, 0x28, 0x14, 0, 0, 0x400, 0x400, 0);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87802EB8.s")
void func_87801AC0(s16 arg0, s16 arg1, unk_func_87801684* arg2) {
static unk_func_87801684* D_87806370 = NULL;
static unk_func_87801684* D_8780FA94;
static s16 D_8780FA98;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87802F00.s")
if ((D_87806370 != arg2) || (arg2 == NULL)) {
D_87806370 = arg2;
if (arg2 == NULL) {
return;
}
D_8780FA94 = arg2;
D_8780FA98 = arg2->unk_04;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87802F4C.s")
D_8780FA98--;
if (D_8780FA98 <= 0) {
D_8780FA94++;
if (D_8780FA94->unk_00 == NULL) {
D_8780FA94 = arg2;
}
D_8780FA98 = D_8780FA94->unk_04;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87802FA0.s")
gDPLoadTextureTile(gDisplayListHead++, D_8780FA94->unk_00, G_IM_FMT_RGBA, G_IM_SIZ_32b, 40, 0, 0, 0, 39, 19, 0,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD,
G_TX_NOLOD);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_8780304C.s")
func_8001C330(arg0, arg1, 0x28, 0x14, 0, 0, 0x400, 0x400, 0);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87803118.s")
void func_87801C8C(s16 arg0, s16 arg1, unk_func_87801684* arg2) {
static unk_func_87801684* D_87806374 = NULL;
static unk_func_87801684* D_8780FA9C;
static s16 D_8780FAA0;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87803200.s")
if ((D_87806374 != arg2) || (arg2 == NULL)) {
D_87806374 = arg2;
if (arg2 == NULL) {
return;
}
D_8780FA9C = arg2;
D_8780FAA0 = arg2->unk_04;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87803280.s")
D_8780FAA0--;
if (D_8780FAA0 <= 0) {
D_8780FA9C++;
if (D_8780FA9C->unk_00 == NULL) {
D_8780FA9C = arg2;
}
D_8780FAA0 = D_8780FA9C->unk_04;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87803368.s")
func_8001C8C4(arg0, arg1, 0x18, 0x13, D_8780FA9C->unk_00, 0x18, 0);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_878038B8.s")
void func_87801D5C(s16 arg0, s16 arg1, s16 arg2, unk_func_87801684* arg3) {
static unk_func_87801684* D_87806378[] = {
NULL,
NULL,
};
static unk_func_87801684* D_8780FAA8[2];
static s16 D_8780FAB0[2];
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87803EAC.s")
if ((arg3 != D_87806378[arg0]) || (arg3 == NULL)) {
D_87806378[arg0] = arg3;
if (arg3 == NULL) {
return;
}
D_8780FAA8[arg0] = arg3;
D_8780FAB0[arg0] = arg3->unk_04;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87804320.s")
D_8780FAB0[arg0]--;
if (D_8780FAB0[arg0] <= 0) {
D_8780FAA8[arg0]++;
if (D_8780FAA8[arg0]->unk_00 == NULL) {
D_8780FAA8[arg0] = arg3;
}
D_8780FAB0[arg0] = D_8780FAA8[arg0]->unk_04;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87804AD0.s")
gDPLoadTextureTile(gDisplayListHead++, D_8780FAA8[arg0]->unk_00, G_IM_FMT_RGBA, G_IM_SIZ_32b, 28, 0, 0, 0, 27, 27,
0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD,
G_TX_NOLOD);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87804FD4.s")
func_8001C330(arg1, arg2, 0x1C, 0x1C, 0, 0, 0x400, 0x400, 0);
}
void func_87801F48(s16 arg0, s16 arg1, s16 arg2) {
static u32 D_87806380[] = { 0x03049CA0, 0x0304B1C0, 0x0304C6E0, 0x0304DC00 };
u32 sp34 = D_87806380[arg0];
gDPLoadTextureTile(gDisplayListHead++, sp34, G_IM_FMT_RGBA, G_IM_SIZ_16b, 52, 0, 0, 0, 51, 25, 0,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD,
G_TX_NOLOD);
func_8001C330(arg1, arg2, 0x34, 0x1A, 0, 0, 0x400, 0x400, 0);
gDPLoadTextureTile(gDisplayListHead++, sp34 + 0xA90, G_IM_FMT_RGBA, G_IM_SIZ_16b, 52, 0, 0, 0, 51, 25, 0,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD,
G_TX_NOLOD);
func_8001C330(arg1, arg2 + 0x1A, 0x34, 0x1A, 0, 0, 0x400, 0x400, 0);
}
void func_878021B4(s16 arg0, s16 arg1) {
u32* ptr = D_304F120;
s32 i;
for (i = 0; i < 7; i++, ptr += 800) {
gDPLoadTextureTile(gDisplayListHead++, ptr, G_IM_FMT_RGBA, G_IM_SIZ_32b, 100, 0, 0, 0, 99, 7, 0,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD,
G_TX_NOLOD);
func_8001C330(arg0, arg1 + (i * 8), 0x64, 8, 0, 0, 0x400, 0x400, 0);
}
}

View File

@@ -3,36 +3,74 @@
#include "global.h"
typedef struct unk_func_87801684 {
/* 0x00 */ u32* unk_00;
/* 0x04 */ s16 unk_04;
} unk_func_87801684; // size = 0x8
extern s32 D_87806330;
extern s16 D_87806338;
extern u32* D_8780633C[];
extern u32* D_8780634C[];
extern u16 D_8780FA28;
extern s16 D_8780FA2A;
extern s16 D_8780FA2C;
extern s16 D_8780FA30[4];
extern s16 D_8780FA38;
extern s16 D_8780FA3A;
extern s16 D_8780FA40[4];
extern s16 D_8780FA48;
extern u16 D_8780FC92;
extern u16 D_8780FC94;
extern u16 D_8780FC96;
extern u16 D_8780FC98;
void func_87800020(void);
void func_8780005C(void);
u32 func_878001E8(s32);
void func_8780024C(s32, s32, s32, s32, s32);
void func_878010C8(s32);
void func_87801290(s32*, s32*, char*, char*, s32);
s32 func_878013D4(unk_D_800AC870*, char*);
void func_87801644(s32, s16, s16, f32);
void func_87801684(s32, s32, u8*);
void func_87801824(s32, s32, u8*);
void func_87801C8C(s32, s32, s32*);
void func_87801F48(s32, s32, s32);
void func_878021B4(s32, s32);
void func_878001D0(void);
u32 func_878001E8(s32 arg0);
void func_8780024C(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4);
void func_878009BC(s32 arg0, s32 arg1, s32 arg2, s32 arg3);
void func_878010C8(s16 arg0);
void func_8780118C(s16 arg0, s16 arg1, s16 arg2, s16 arg3);
void func_87801290(s32* arg0, s32* arg1, s8* arg2, s8* arg3, s32 arg4);
s32 func_878013D4(UNUSED unk_D_800AC870* arg0, char* arg1);
void func_87801400(s32 arg0, s16 arg1, s16 arg2, f32 arg3, f32 arg4);
void func_87801644(s32 arg0, s16 arg1, s16 arg2, f32 arg3);
void func_87801684(s16 arg0, s16 arg1, unk_func_87801684* arg2);
void func_87801754(s16 arg0, s16 arg1, unk_func_87801684* arg2);
void func_87801824(s16 arg0, s16 arg1, unk_func_87801684* arg2);
void func_878018F4(s16 arg0, s16 arg1, unk_func_87801684* arg2);
void func_87801AC0(s16 arg0, s16 arg1, unk_func_87801684* arg2);
void func_87801C8C(s16 arg0, s16 arg1, unk_func_87801684* arg2);
void func_87801D5C(s16 arg0, s16 arg1, s16 arg2, unk_func_87801684* arg3);
void func_87801F48(s16 arg0, s16 arg1, s16 arg2);
void func_878021B4(s16 arg0, s16 arg1);
void func_87802360(s16 arg0, s16 arg1, f32* arg2, f32* arg3);
void func_87802528(void);
void func_878025D0(void);
void func_8780295C(s16);
void func_8780295C(s16 arg0);
s32 func_87802974(void);
void func_878029C0(void);
void func_87802EB8(s16);
void func_87802F00(s32);
void func_87803118(void);
void func_87804FD4(void);
void func_878029C0(void);
void func_87802E1C(void);
void func_87802E58(void);
void func_87802EB8(s16 arg0);
void func_87802F00(s32 arg0);
void func_87802F4C(void);
s32 func_87802FA0(void);
void func_8780304C(void);
s32 func_87803118(void);
void func_87803200(s32 arg0, s32 arg1, s32 arg2, s32 arg3, u8* arg4, u8* arg5);
void func_87803280(Mtx* arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, f32 arg7, f32 arg8, f32 arg9, f32 argA);
void func_87803368(s16 arg0);
void func_878038B8(s32 arg0, u32* arg1, u8 arg2, u8 arg3, s16 arg4, s16 arg5, s16 arg6, s16 arg7, f32 arg8, f32 arg9, f32 argA, f32 argB, f32 argC, f32 argD, f32 argE);
void func_87803EAC(u32* arg0, u16 arg1, UNUSED u16 arg2, u16 arg3, u16 arg4, u8 arg5, u8 arg6);
void func_87804320(u8 arg0, s8 arg1, s8 arg2, s8 arg3, s8 arg4);
void func_87804AD0(s16 arg0);
s32 func_87804FD4(void);
#endif // _FRAGMENT2_H_

View File

@@ -0,0 +1,196 @@
#include "global.h"
#include "fragment2.h"
#include "src/6A40.h"
#include "src/11BA0.h"
#include "src/1C720.h"
#include "src/math_util.h"
static Gfx D_87806390[] = {
gsSPEndDisplayList(),
};
u32 D_87806398[] = {
0x0B00001E, 0x00000000, 0x014000F0, 0x00000000, 0x000016A8, 0x00000190, 0x05000000, 0x0D000000, 0x05000000,
0x0F000002, 0x05000000, 0x0A000000, 0x800AC858, 0x06000000, 0x06000000, 0x06000000, 0x04000000, 0x00000000,
};
static Vtx D_878063E0[] = {
VTX(-32, 32, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF), VTX(-32, 16, 0, 0, 512, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(32, 16, 0, 2048, 512, 0xFF, 0xFF, 0xFF, 0xFF), VTX(32, 32, 0, 2048, 0, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(-32, 16, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF), VTX(-32, 0, 0, 0, 512, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(32, 0, 0, 2048, 512, 0xFF, 0xFF, 0xFF, 0xFF), VTX(32, 16, 0, 2048, 0, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(-32, 0, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF), VTX(-32, -16, 0, 0, 512, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(32, -16, 0, 2048, 512, 0xFF, 0xFF, 0xFF, 0xFF), VTX(32, 0, 0, 2048, 0, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(-32, -16, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF), VTX(-32, -32, 0, 0, 512, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(32, -32, 0, 2048, 512, 0xFF, 0xFF, 0xFF, 0xFF), VTX(32, -16, 0, 2048, 0, 0xFF, 0xFF, 0xFF, 0xFF),
};
static u32* D_878064E0[] = { &D_300C000, &D_3000000, 0x3004000, &D_3008000 };
static s16 D_8780FAC0;
static s16 D_8780FAC2;
static s16 D_8780FAC4;
static s16 D_8780FAC6;
static unk_D_86002F58_004_000 D_8780FAC8;
static unk_func_80011B94* D_8780FC30;
void func_87802360(s16 arg0, s16 arg1, f32* arg2, f32* arg3) {
f32 var_fv0;
s32 temp_ft1;
s32 var_v0;
if (arg1 >= 0x12) {
var_v0 = 0;
} else if (arg1 >= 8) {
var_v0 = 1;
} else if (arg1 > 0) {
var_v0 = 2;
} else {
var_v0 = 3;
}
*arg3 = 0.0f;
*arg2 = 0.0f;
switch (var_v0) {
case 0:
var_fv0 = 0.5f;
temp_ft1 = (1.0f - ((0x1B - arg1) / 10.0f)) * (0, 81920.0f);
if (temp_ft1 <= 0x10000) {
if (temp_ft1 > 0x10000) {
var_fv0 *= .5f;
} else {
var_fv0 *= 0.25f;
}
}
var_fv0 *= ABS_ALT(gSineTable[((u16)temp_ft1 & 0xFFFF) >> 4]);
*arg3 = 1.0f - var_fv0;
*arg2 = 1.0f - var_fv0;
break;
case 1:
*arg3 = 1.0f;
*arg2 = 1.0f;
break;
case 2:
if (arg0 == 0) {
*arg2 = arg1 / 7.0f;
if (0.001f < *arg2) {
*arg3 = 1.0f / *arg2;
} else {
*arg2 = 0.0f;
}
}
break;
}
}
void func_87802528(void) {
MainPoolState* sp1C;
D_8780FAC4 = 0;
D_8780FAC0 = 4;
D_8780FAC2 = 0;
D_8780FAC6 = 0;
func_8001BBC8(&D_8780FAC8);
sp1C = func_80002D10(main_pool_get_available(), 0);
D_8780FC30 = func_80011B94(sp1C, NULL, 4, D_87806390);
D_8780FAC8.unk_000.unk_02 |= 8;
func_80012094(&D_8780FAC8.unk_000, &D_8780FC30->unk_00);
func_80002D60(sp1C);
}
void func_878025D0(void) {
s32 i;
Gfx* temp_v0;
s32 var_s2;
u32* temp_s1;
u32* img;
var_s2 = 0;
switch (D_8780FAC4) {
case 0:
if (D_8780FAC6 != 0) {
D_8780FAC6 = 0;
D_8780FAC4 = 1;
var_s2 = 1;
D_8780FAC8.unk_000.unk_01 |= 1;
D_8780FAC8.unk_030.x = 0.5f;
D_8780FAC8.unk_030.y = 0.5f;
}
break;
case 1:
D_8780FAC2 -= 1;
if (D_8780FAC2 <= 0) {
D_8780FAC2 = 0x1B;
D_8780FAC0 -= 1;
}
if ((D_8780FAC0 >= 0) && (D_8780FAC0 < 4)) {
var_s2 = 1;
func_87802360(D_8780FAC0, D_8780FAC2, &D_8780FAC8.unk_030.x, &D_8780FAC8.unk_030.y);
} else {
D_8780FC30->unk_18 = D_87806390;
}
if (D_8780FAC0 < 0) {
D_8780FAC4 = 2;
D_8780FAC2 = 0x1B;
D_8780FAC8.unk_000.unk_01 &= ~1;
}
break;
case 2:
if (D_8780FAC2 == 0x1B) {
D_8780FAC2 = 0;
}
break;
}
if ((var_s2 != 0) && (D_8780FAC0 < 4)) {
temp_s1 = D_878064E0[D_8780FAC0];
temp_v0 = func_80005F5C(sizeof(Gfx) * 48);
D_8780FC30->unk_18 = temp_v0;
gSPSetGeometryMode(&temp_v0[0], G_CULL_BACK);
gSPTexture(&temp_v0[1], 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
gDPPipeSync(&temp_v0[2]);
gDPSetCombineMode(&temp_v0[3], G_CC_DECALRGBA, G_CC_PASS2);
gSPVertex(&temp_v0[4], D_878063E0, 16, 0);
temp_v0 += 5;
img = temp_s1;
for (i = 0; i < 4; i++, img += 0x400) {
gDPLoadTextureTile(temp_v0++, img, G_IM_FMT_RGBA, G_IM_SIZ_32b, 64, 0, 0, 0, 63, 15, 0,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK,
G_TX_NOLOD, G_TX_NOLOD);
gSP2Triangles(temp_v0++, (i * 4) + 0, (i * 4) + 1, (i * 4) + 2, 0, (i * 4) + 0, (i * 4) + 2, (i * 4) + 3,
0);
}
gSPEndDisplayList(temp_v0++);
}
}
void func_8780295C(s16 arg0) {
D_8780FAC6 = arg0;
}
s32 func_87802974(void) {
s16 var_v1 = -1;
if (D_8780FAC4 == 2) {
var_v1 = -2;
} else if ((D_8780FAC2 == 0x1B) && (D_8780FAC4 == 1)) {
var_v1 = D_8780FAC0;
}
return var_v1;
}

File diff suppressed because it is too large Load Diff

View File

@@ -534,10 +534,17 @@
subsegments:
- [0x107FA0, textbin, fragments/2/fragment2_header]
- [0x107FC0, c, fragments/2/fragment2]
- [0x10E2D0, data, fragments/2/fragment2_data]
- [0x117850, rodata, fragments/2/fragment2_rodata]
- [0x10A300, c, fragments/2/fragment2_1]
- [0x10A960, c, fragments/2/fragment2_2]
- [0x10E2D0, .data, fragments/2/fragment2]
- [0x10E330, .data, fragments/2/fragment2_1]
- [0x10E490, .data, fragments/2/fragment2_2]
- [0x117970, .rodata, fragments/2/fragment2_1]
- [0x117980, .rodata, fragments/2/fragment2_2]
- {vram: 0x8780FA20, type: bss, name: unk_frag2_bss}
- {vram: 0x8780FA20, type: .bss, name: fragments/2/fragment2}
- {vram: 0x8780FAC0, type: .bss, name: fragments/2/fragment2_1}
- {vram: 0x8780FC40, type: .bss, name: fragments/2/fragment2_2}
- name: fragment2_relocs
type: code