Revert "fragment15"

This commit is contained in:
Revo 2024-10-11 19:52:45 -04:00 committed by GitHub
parent f83ef11dda
commit 67de4f7065
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
31 changed files with 227 additions and 3937 deletions

View File

@ -41,12 +41,6 @@ typedef union unk_D_86002F58_004_000_010_02C {
u32 raw;
} unk_D_86002F58_004_000_010_02C; // size = 0x4
typedef struct unk_D_86002F58_004_000_010_024 {
/* 0x00 */ u16 unk_00;
/* 0x02 */ char unk02[0x6];
/* 0x08 */ struct unk_D_86002F58_004_000_004* unk_08;
} unk_D_86002F58_004_000_010_024; // size >= 0xC
typedef struct unk_D_86002F58_004_000_010 {
/* 0x00 */ u8 unk_00;
/* 0x01 */ u8 unk_01;
@ -56,7 +50,7 @@ typedef struct unk_D_86002F58_004_000_010 {
/* 0x18 */ s32 unk_18;
/* 0x1C */ s32 unk_1C;
/* 0x20 */ s32 unk_20;
/* 0x24 */ unk_D_86002F58_004_000_010_024* unk_24;
/* 0x24 */ u16* unk_24;
/* 0x28 */ s32 unk_28;
/* 0x2C */ unk_D_86002F58_004_000_010_02C unk_2C;
/* 0x30 */ OSMesgQueue unk_30;
@ -123,7 +117,6 @@ typedef struct unk_D_86002F58_004_000_054 {
typedef struct unk_D_86002F58_004_000_0A8 {
/* 0x00 */ u16 unk_00;
/* 0x02 */ u8 unk_02;
/* 0x04 */ Vec3f unk_04;
} unk_D_86002F58_004_000_0A8; // size = 0x10
@ -167,17 +160,16 @@ typedef struct unk_D_86002F34_000_014 {
/* 0x04 */ u8* unk_04;
} unk_D_86002F34_000_014; // size >= 0x8
typedef s32 (*func_D_86002F34_000_010)(s32, struct unk_D_86002F34_000*);
typedef struct unk_D_86002F34_000 {
/* 0x00 */ u8 unk_00;
/* 0x01 */ u8 unk_01;
/* 0x02 */ u8 unk_02;
/* 0x03 */ u8 unk_03;
/* 0x04 */ struct unk_D_86002F34_000* unk_04;
/* 0x04 */ char pad04[0x2];
/* 0x06 */ s16 unk_06;
/* 0x08 */ struct unk_D_86002F34_000* unk_08;
/* 0x0C */ struct unk_D_86002F34_00C* unk_0C;
/* 0x10 */ func_D_86002F34_000_010 unk_10;
/* 0x10 */ s32 (*unk_10)(s32, struct unk_D_86002F34_000*);
/* 0x14 */ unk_D_86002F34_000_014* unk_14;
} unk_D_86002F34_000; // size = 0x18
@ -243,8 +235,7 @@ typedef struct unk_D_86002F34_00C {
/* 0x40 */ unk_D_86002F34_00C_040 unk_40;
/* 0x60 */ unk_D_86002F34_00C_060 unk_60;
/* 0xCC */ unk_D_86002F34_00C_0CC unk_CC;
/* 0xEC */ char unkEC[0x4];
} unk_D_86002F34_00C; // size = 0xF0
} unk_D_86002F34_00C; // size >= 0xEC
typedef struct unk_D_86002F34_alt1 {
/* 0x00 */ unk_D_86002F34_000 unk_00;
@ -258,7 +249,7 @@ typedef struct unk_D_86002F34_alt1 {
typedef struct unk_D_86002F34_alt2 {
/* 0x00 */ unk_D_86002F34_000 unk_00;
/* 0x18 */ unk_D_86002F34_000* unk_18;
/* 0x18 */ u32 unk_18;
} unk_D_86002F34_alt2; // size >= 0x1C
typedef struct unk_D_86002F34_alt3 {
@ -279,7 +270,7 @@ typedef struct unk_D_86002F34_alt5 {
/* 0x00 */ unk_D_86002F34_000 unk_00;
/* 0x18 */ Vec3f unk_18;
/* 0x24 */ Vec3s unk_24;
} unk_D_86002F34_alt5; // size = 0x2C
} unk_D_86002F34_alt5; // size >= 0x2C
typedef struct unk_D_86002F34_alt6 {
/* 0x00 */ unk_D_86002F34_000 unk_00;
@ -289,26 +280,26 @@ typedef struct unk_D_86002F34_alt6 {
/* 0x30 */ u8 unk_30;
/* 0x31 */ u8 unk_31;
/* 0x32 */ s16 unk_32;
} unk_D_86002F34_alt6; // size = 0x34
} unk_D_86002F34_alt6; // size >= 0x58
typedef struct unk_D_86002F34_alt7 {
/* 0x00 */ unk_D_86002F34_000 unk_00;
/* 0x18 */ Gfx* unk_18;
/* 0x1C */ s16 unk_1C;
} unk_D_86002F34_alt7; // size = 0x20
} unk_D_86002F34_alt7; // size >= 0x20
typedef struct unk_D_86002F34_alt8 {
/* 0x00 */ unk_D_86002F34_000 unk_00;
/* 0x18 */ Gfx* unk_18;
/* 0x1C */ MtxF unk_1C;
} unk_D_86002F34_alt8; // size = 0x5C
} unk_D_86002F34_alt8; // size >= 0x5C
typedef struct unk_D_86002F34_alt9 {
/* 0x00 */ unk_D_86002F34_000 unk_00;
/* 0x18 */ Gfx* unk_18;
/* 0x1C */ Vec3f unk_1C;
/* 0x28 */ f32 unk_28;
} unk_D_86002F34_alt9; // size = 0x2C
} unk_D_86002F34_alt9; // size >= 0x2C
typedef struct unk_D_86002F34_alt10 {
/* 0x00 */ unk_D_86002F34_000 unk_00;
@ -340,80 +331,7 @@ typedef struct unk_D_86002F34_alt12 {
/* 0x1A */ s16 unk_1A;
/* 0x1C */ s16 unk_1C;
/* 0x1E */ s16 unk_1E;
} unk_D_86002F34_alt12; // size = 0x20
typedef struct unk_D_86002F34_alt13 {
/* 0x00 */ unk_D_86002F34_000 unk_00;
/* 0x18 */ s16 unk_18;
} unk_D_86002F34_alt13; // size = 0x1C
typedef struct unk_D_86002F34_alt14 {
/* 0x00 */ unk_D_86002F34_000 unk_00;
} unk_D_86002F34_alt14; // size = 0x18
typedef struct unk_D_86002F34_alt15 {
/* 0x00 */ unk_D_86002F34_000 unk_00;
} unk_D_86002F34_alt15; // size = 0x18
typedef struct unk_D_86002F34_alt16 {
/* 0x00 */ unk_D_86002F34_000 unk_00;
/* 0x18 */ u32 unk_18;
} unk_D_86002F34_alt16; // size = 0x1C
typedef struct unk_D_86002F34_alt17 {
/* 0x00 */ unk_D_86002F34_000 unk_00;
} unk_D_86002F34_alt17; // size = 0x18
typedef struct unk_D_86002F34_alt18 {
/* 0x00 */ unk_D_86002F34_000 unk_00;
/* 0x18 */ u8 r;
/* 0x19 */ u8 g;
/* 0x1A */ u8 b;
/* 0x1B */ u8 a;
/* 0x1C */ s16 unk_1C;
/* 0x1E */ s16 unk_1E;
} unk_D_86002F34_alt18; // size = 0x20
typedef struct unk_D_86002F34_alt19 {
/* 0x00 */ unk_D_86002F34_000 unk_00;
/* 0x18 */ u8 r;
/* 0x19 */ u8 g;
/* 0x1A */ u8 b;
} unk_D_86002F34_alt19; // size = 0x1C
typedef struct unk_D_86002F34_alt20 {
/* 0x00 */ unk_D_86002F34_000 unk_00;
/* 0x18 */ s16 unk_18;
/* 0x1A */ s16 unk_1A;
} unk_D_86002F34_alt20; // size = 0x1C
typedef struct unk_D_86002F34_alt21 {
/* 0x00 */ unk_D_86002F34_000 unk_00;
/* 0x18 */ s16 unk_18;
/* 0x1A */ s16 unk_1A;
} unk_D_86002F34_alt21; // size = 0x1C
typedef struct unk_D_86002F34_alt22 {
/* 0x00 */ unk_D_86002F34_000 unk_00;
/* 0x18 */ Vec3f unk_18;
} unk_D_86002F34_alt22; // size = 0x24
typedef struct unk_D_86002F34_alt23 {
/* 0x00 */ unk_D_86002F34_000 unk_00;
/* 0x18 */ s16 unk_18;
} unk_D_86002F34_alt23; // size = 0x1C
typedef struct unk_D_86002F34_alt24 {
/* 0x00 */ unk_D_86002F34_000 unk_00;
/* 0x18 */ s16 unk_18;
/* 0x1A */ s16 unk_1A;
/* 0x1C */ s16 unk_1C;
/* 0x1E */ s16 unk_1E;
/* 0x20 */ s16 unk_20;
/* 0x22 */ s16 unk_22;
/* 0x24 */ s32 unk_24;
/* 0x28 */ Color_RGBA8_u32 unk_28;
} unk_D_86002F34_alt24; // size = 0x2C
} unk_D_86002F34_alt12; // size >= 0x20
typedef void* (*func_unk_D_800ABE10)(s32, s32);
@ -437,12 +355,11 @@ typedef struct unk_D_86002F34 {
/* 0x00 */ unk_D_86002F34_000 unk_00;
/* 0x18 */ unk_D_86002F34_018* unk_18;
/* 0x1C */ unk_D_86002F34_01C* unk_1C;
/* 0x20 */ Vtx* unk_20;
/* 0x20 */ char unk20[0x4];
/* 0x24 */ u8 unk_24;
/* 0x25 */ u8 unk_25;
/* 0x26 */ s16 unk_26;
/* 0x28 */ func_unk_D_800ABE10 unk_28;
} unk_D_86002F34; // size = 0x2C
} unk_D_86002F34; // size >= 0x2C
// Are unk_D_86002F30 and unk_D_800AC840 the same?
typedef struct unk_D_86002F30 {

View File

@ -464,8 +464,6 @@ extern u8 common_menu1_ui_ROM_START[];
extern u8 common_menu1_ui_ROM_END[];
extern u8 common_menu2_ui_ROM_START[];
extern u8 common_menu2_ui_ROM_END[];
extern u8 snap_mode_ui_ROM_START[];
extern u8 snap_mode_ui_ROM_END[];
extern u8 area_select_ui_ROM_START[]; // 4D1330
extern u8 area_select_ui_ROM_END[]; // 4D1330
extern u8 menu_select_ui_ROM_START[]; // 4EB0C0
@ -520,10 +518,6 @@ extern u8 badge_ui_ROM_START[];
extern u8 badge_ui_ROM_END[];
extern u8 gym_leader_castle_ui_ROM_START[];
extern u8 gym_leader_castle_ui_ROM_END[];
extern u8 _70D3A0_ROM_START[];
extern u8 _70D3A0_ROM_END[];
extern u8 D_70110[];
extern u8 D_70290[];
extern u8 D_124570[];

View File

@ -199,10 +199,5 @@ extern u32 D_304F120[];
extern s32 D_800FC820;
extern u8* D_800FF9C0;
extern s32 D_80075BCC[];
typedef struct unk_70D3A0 {
/* 0x00 */ char unk00[0x10];
} unk_70D3A0; // size = 0x10
#endif

View File

@ -332,12 +332,3 @@ D_04008000 = 0x04008000;
D_04009000 = 0x04009000;
D_0400A000 = 0x0400A000;
D_0400B000 = 0x0400B000;
D_8790604A = 0x8790604A; // size:0x2
D_87906050 = 0x87906050;
D_80075BCC = 0x80075BCC;
D_80075E40 = 0x80075E40;
D_80075950 = 0x80075950; // size:0x1C
D_8007596C = 0x8007596C;
D_8690B360 = 0x8690B360; // size:0x18
D_8690B390 = 0x8690B390; // size:0x24
D_8690B5D0 = 0x8690B5D0; // size:0x24

View File

@ -1,9 +1,7 @@
#include "global.h"
#include "11BA0.h"
#include "F420.h"
#include "util.h"
void func_80010FA0(unk_D_86002F34_000* arg0, u8 arg1) {
void func_80010FA0(unk_D_86002F58_004_000_000* arg0, u8 arg1) {
if (arg0 != NULL) {
arg0->unk_00 = arg1;
arg0->unk_01 = 0x11;
@ -12,28 +10,16 @@ void func_80010FA0(unk_D_86002F34_000* arg0, u8 arg1) {
arg0->unk_04 = arg0;
arg0->unk_08 = arg0;
arg0->unk_0C = NULL;
arg0->unk_10 = NULL;
arg0->unk_14 = NULL;
arg0->unk_10 = 0;
arg0->unk_14 = 0;
}
}
void func_80010FDC(unk_D_86002F34_000* arg0, func_D_86002F34_000_010 arg1, unk_D_86002F34_000_014* arg2) {
if (arg1 != NULL) {
arg1 = Util_ConvertAddrToVirtAddr(arg1);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/11BA0/func_80010FDC.s")
if (arg0 != NULL) {
arg0->unk_14 = arg2;
arg0->unk_10 = arg1;
if (arg1 != NULL) {
arg1(0, arg0);
}
}
}
unk_D_86002F34_000* func_8001103C(MainPoolState* arg0, void* arg1) {
if (arg0 != NULL) {
arg1 = func_80002DCC(arg0, sizeof(unk_D_86002F34_000), 4);
unk_D_86002F58_004_000_000* func_8001103C(MainPoolState* arg0, void* arg1) {
if (arg0 != 0) {
arg1 = func_80002DCC(arg0, sizeof(unk_D_86002F58_004_000_000), 4);
}
if (arg1 != NULL) {
@ -43,288 +29,43 @@ unk_D_86002F34_000* func_8001103C(MainPoolState* arg0, void* arg1) {
return arg1;
}
unk_D_86002F34_alt2* func_80011088(MainPoolState* arg0, unk_D_86002F34_alt2* arg1, unk_D_86002F34_000* arg2) {
if (arg0 != NULL) {
arg1 = func_80002DCC(arg0, sizeof(unk_D_86002F34_alt2), 4);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/11BA0/func_80011088.s")
if (arg1 != NULL) {
arg1->unk_18 = arg2;
func_80010FA0(arg1, 1);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/11BA0/func_800110E0.s")
return arg1;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/11BA0/func_800111A4.s")
unk_D_86002F34_00C* func_800110E0(MemoryBlock* arg0, unk_D_86002F34_00C* arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5) {
if (arg0 != NULL) {
arg1 = func_80002DCC(arg0, sizeof(unk_D_86002F34_00C), 4);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/11BA0/func_800111FC.s")
if (arg1 != NULL) {
func_80011DAC(arg1, arg2, arg3, arg4, arg5);
func_80011E68(arg1, 30.0f, 100.0f, 12800.0f);
func_80011EB4(arg1, 0.0f, 512.0f, 4096.0f, 0.0f, 0.0f, 0.0f, 0);
func_80011FC8(arg1, 2, 0, 0, 0, 0);
func_80010FA0(arg1, 2);
}
return arg1;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/11BA0/func_80011258.s")
unk_D_86002F34_alt13* func_800111A4(MemoryBlock* arg0, unk_D_86002F34_alt13* arg1, s16 arg2) {
if (arg0 != NULL) {
arg1 = func_80002DCC(arg0, sizeof(unk_D_86002F34_alt13), 4);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/11BA0/func_800112BC.s")
if (arg1 != NULL) {
arg1->unk_18 = arg2;
func_80010FA0(arg1, 3);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/11BA0/func_80011320.s")
return arg1;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/11BA0/func_800113AC.s")
unk_D_86002F34_alt1* func_800111FC(MemoryBlock* arg0, unk_D_86002F34_alt1* arg1, s16 arg2) {
if (arg0 != NULL) {
arg1 = func_80002DCC(arg0, sizeof(unk_D_86002F34_alt1), 4);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/11BA0/func_800113F8.s")
if (arg1 != NULL) {
arg1->unk_18 = arg2;
arg1->unk_1A = 0;
func_80010FA0(arg1, 4);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/11BA0/func_80011484.s")
return arg1;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/11BA0/func_80011504.s")
unk_D_86002F34_alt14* func_80011258(MainPoolState* arg0, unk_D_86002F34_alt14* arg1, s16 arg2) {
if (arg0 != NULL) {
arg1 = func_80002DCC(arg0, sizeof(unk_D_86002F34_alt14), 4);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/11BA0/func_8001156C.s")
if (arg1 != NULL) {
func_80010FA0(arg1, 5);
arg1->unk_00.unk_02 |= arg2 & 3;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/11BA0/func_800115F0.s")
return arg1;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/11BA0/func_80011660.s")
unk_D_86002F34_alt15* func_800112BC(MainPoolState* arg0, unk_D_86002F34_alt15* arg1, s16 arg2) {
if (arg0 != NULL) {
arg1 = func_80002DCC(arg0, sizeof(unk_D_86002F34_alt15), 4);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/11BA0/func_800116C0.s")
if (arg1 != NULL) {
func_80010FA0(arg1, 6);
arg1->unk_00.unk_02 |= arg2 & 3;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/11BA0/func_80011720.s")
return arg1;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/11BA0/func_800117A8.s")
unk_D_86002F34_alt16* func_80011320(MainPoolState* arg0, unk_D_86002F34_alt16* arg1, u8 arg2, u8 arg3, u8 arg4) {
u32 temp_v0;
#pragma GLOBAL_ASM("asm/us/nonmatchings/11BA0/func_80011814.s")
if (arg0 != NULL) {
arg1 = func_80002DCC(arg0, sizeof(unk_D_86002F34_alt16), 4);
}
if (arg1 != NULL) {
temp_v0 = ((arg2 >> 3) << 0xB) | ((arg3 >> 3) << 6) | ((arg4 >> 3) << 1) | 1;
arg1->unk_18 = (temp_v0 << 0x10) | temp_v0;
func_80010FA0(arg1, 7);
}
return arg1;
}
unk_D_86002F34_alt17* func_800113AC(MainPoolState* arg0, unk_D_86002F34_alt17* arg1) {
if (arg0 != NULL) {
arg1 = func_80002DCC(arg0, sizeof(unk_D_86002F34_alt17), 4);
}
if (arg1 != NULL) {
func_80010FA0(arg1, 8);
}
return arg1;
}
unk_D_8690A610* func_800113F8(s32 arg0, unk_D_8690A610* arg1, s16 arg2, s16 arg3, u8 r, u8 g, u8 b, u8 a) {
if (arg0 != 0) {
arg1 = func_80002DCC(arg0, sizeof(unk_D_8690A610), 4);
}
if (arg1 != NULL) {
arg1->unk_18.unk_00 = arg2;
arg1->unk_18.unk_02 = arg3;
arg1->unk_18.unk_04.rgba = (r << 0x18) | (g << 0x10) | (b << 8) | a;
func_80010FA0(arg1, 0xA);
}
return arg1;
}
unk_D_86002F34_alt18* func_80011484(MainPoolState* arg0, unk_D_86002F34_alt18* arg1, s16 arg2, s16 arg3, u8 r, u8 g,
u8 b, u8 a) {
if (arg0 != NULL) {
arg1 = func_80002DCC(arg0, sizeof(unk_D_86002F34_alt18), 4);
}
if (arg1 != NULL) {
arg1->r = r;
arg1->g = g;
arg1->b = b;
arg1->a = a;
arg1->unk_1C = arg2;
arg1->unk_1E = arg3;
func_80010FA0(arg1, 0xB);
}
return arg1;
}
unk_D_86002F34_alt19* func_80011504(MainPoolState* arg0, unk_D_86002F34_alt19* arg1, u8 r, u8 g, u8 b) {
if (arg0 != NULL) {
arg1 = func_80002DCC(arg0, sizeof(unk_D_86002F34_alt19), 4);
}
if (arg1 != NULL) {
arg1->r = r;
arg1->g = g;
arg1->b = b;
func_80010FA0(arg1, 0xD);
}
return arg1;
}
unk_D_86002F34* func_8001156C(MainPoolState* arg0, unk_D_86002F34* arg1, s32 arg2, unk_D_86002F34_018* arg3, s32 arg4,
unk_D_86002F34_01C* arg5, s32 arg6, Vtx* arg7) {
if (arg0 != NULL) {
arg1 = func_80002DCC(arg0, sizeof(unk_D_86002F34), 4);
}
if (arg1 != NULL) {
arg1->unk_18 = arg3;
arg1->unk_1C = arg5;
arg1->unk_20 = arg7;
arg1->unk_24 = arg2;
arg1->unk_25 = arg4;
arg1->unk_26 = arg6;
arg1->unk_28 = NULL;
func_80010FA0(arg1, 0xE);
}
return arg1;
}
unk_D_86002F34_alt12* func_800115F0(MainPoolState* arg0, unk_D_86002F34_alt12* arg1, s16 arg2, s16 arg3, s16 arg4,
s16 arg5) {
if (arg0 != NULL) {
arg1 = func_80002DCC(arg0, sizeof(unk_D_86002F34_alt12), 4);
}
if (arg1 != NULL) {
arg1->unk_18 = arg2;
arg1->unk_1A = arg3;
arg1->unk_1C = arg4;
arg1->unk_1E = arg5;
func_80010FA0(arg1, 0xF);
}
return arg1;
}
unk_D_86002F34_alt20* func_80011660(MainPoolState* arg0, unk_D_86002F34_alt20* arg1, s16 arg2, s16 arg3) {
if (arg0 != NULL) {
arg1 = func_80002DCC(arg0, sizeof(unk_D_86002F34_alt20), 4);
}
if (arg1 != NULL) {
arg1->unk_18 = arg2;
arg1->unk_1A = arg3;
func_80010FA0(arg1, 0x10);
}
return arg1;
}
unk_D_86002F34_alt21* func_800116C0(MainPoolState* arg0, unk_D_86002F34_alt21* arg1, s16 arg2, s16 arg3) {
if (arg0 != NULL) {
arg1 = func_80002DCC(arg0, sizeof(unk_D_86002F34_alt21), 4);
}
if (arg1 != NULL) {
arg1->unk_18 = arg2;
arg1->unk_1A = arg3;
func_80010FA0(arg1, 0x11);
}
return arg1;
}
unk_D_86002F34_alt5* func_80011720(MainPoolState* arg0, unk_D_86002F34_alt5* arg1, Vec3f* arg2, Vec3s* arg3) {
if (arg0 != NULL) {
arg1 = func_80002DCC(arg0, sizeof(unk_D_86002F34_alt5), 4);
}
if (arg1 != NULL) {
arg1->unk_18 = *arg2;
arg1->unk_24 = *arg3;
func_80010FA0(arg1, 0x12);
}
return arg1;
}
unk_D_86002F34_alt22* func_800117A8(MainPoolState* arg0, unk_D_86002F34_alt22* arg1, Vec3f* arg2) {
if (arg0 != NULL) {
arg1 = func_80002DCC(arg0, sizeof(unk_D_86002F34_alt22), 4);
}
if (arg1 != NULL) {
arg1->unk_18 = *arg2;
func_80010FA0(arg1, 0x13);
}
return arg1;
}
unk_D_86002F34_alt6* func_80011814(MainPoolState* arg0, unk_D_86002F34_alt6* arg1, s16 arg2, s16 arg3, s16 arg4,
Vec3s* arg5, Vec3s* arg6, Vec3f* arg7) {
if (arg0 != NULL) {
arg1 = func_80002DCC(arg0, sizeof(unk_D_86002F34_alt6), 4);
}
if (arg1 != NULL) {
arg1->unk_18 = *arg5;
arg1->unk_1E = *arg6;
arg1->unk_24 = *arg7;
arg1->unk_30 = arg2;
arg1->unk_31 = arg3;
arg1->unk_32 = arg4;
func_80010FA0(arg1, 0x14);
}
return arg1;
}
unk_D_86002F34_alt7* func_800118D0(MainPoolState* arg0, unk_D_86002F34_alt7* arg1, s32 arg2, Gfx* arg3, s16 arg4) {
if (arg0 != NULL) {
arg1 = func_80002DCC(arg0, sizeof(unk_D_86002F34_alt7), 4);
}
if (arg1 != NULL) {
arg1->unk_18 = arg3;
arg1->unk_1C = arg4;
func_80010FA0(arg1, 0x15);
arg1->unk_00.unk_03 = arg2;
}
return arg1;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/11BA0/func_800118D0.s")
unk_D_86002F58_004_000* func_80011938(MainPoolState* arg0, unk_D_86002F58_004_000* arg1, s16 arg2, Vec3f* arg3,
Vec3s* arg4, Vec3f* arg5) {
@ -359,49 +100,11 @@ unk_D_86002F58_004_000* func_80011938(MainPoolState* arg0, unk_D_86002F58_004_00
return arg1;
}
unk_D_86002F34_alt8* func_80011A3C(MainPoolState* arg0, unk_D_86002F34_alt8* arg1, s32 arg2, Gfx* arg3, MtxF* arg4) {
if (arg0 != NULL) {
arg1 = func_80002DCC(arg0, sizeof(unk_D_86002F34_alt8), 4);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/11BA0/func_80011A3C.s")
if (arg1 != NULL) {
arg1->unk_18 = arg3;
if (arg4 == NULL) {
func_8000ED98(&arg1->unk_1C);
} else {
func_8000ED4C(&arg1->unk_1C, arg4);
}
func_80010FA0(arg1, 0x17);
arg1->unk_00.unk_03 = arg2;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/11BA0/func_80011ABC.s")
return arg1;
}
unk_D_86002F34_alt8* func_80011ABC(MainPoolState* arg0, unk_D_86002F34_alt8* arg1, s32 arg2, Gfx* arg3, Vec3f* arg4,
Vec3s* arg5) {
MtxF sp20;
func_8000F2C4(&sp20, arg4, arg5);
return func_80011A3C(arg0, arg1, arg2, arg3, &sp20);
}
unk_D_86002F34_alt9* func_80011B10(MainPoolState* arg0, unk_D_86002F34_alt9* arg1, s32 arg2, Gfx* arg3, Vec3f* arg4,
f32 arg5) {
if (arg0 != NULL) {
arg1 = func_80002DCC(arg0, sizeof(unk_D_86002F34_alt9), 4);
}
if (arg1 != NULL) {
arg1->unk_1C = *arg4;
arg1->unk_28 = arg5;
arg1->unk_18 = arg3;
func_80010FA0(arg1, 0x18);
arg1->unk_00.unk_03 = arg2;
}
return arg1;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/11BA0/func_80011B10.s")
unk_func_80011B94* func_80011B94(MainPoolState* arg0, unk_func_80011B94* arg1, s32 arg2, Gfx* arg3) {
if (arg0 != NULL) {
@ -417,121 +120,25 @@ unk_func_80011B94* func_80011B94(MainPoolState* arg0, unk_func_80011B94* arg1, s
return arg1;
}
unk_D_86002F34_alt10* func_80011BF4(MainPoolState* arg0, unk_D_86002F34_alt10* arg1, s16 arg2, s16 arg3, s32 arg4,
s16 arg5, s16 arg6, u8 r, u8 g, u8 b, u8 a) {
if (arg0 != NULL) {
arg1 = func_80002DCC(arg0, sizeof(unk_D_86002F34_alt10), 4);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/11BA0/func_80011BF4.s")
if (arg1 != NULL) {
arg1->unk_22 = arg2;
arg1->unk_20 = arg3;
arg1->unk_18 = arg4;
arg1->unk_1C = arg5;
arg1->unk_1E = arg6;
arg1->unk_24.rgba = (r << 0x18) | (g << 0x10) | (b << 8) | a;
func_80010FA0(arg1, 0x1A);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/11BA0/func_80011C98.s")
return arg1;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/11BA0/func_80011CF0.s")
unk_D_86002F34_alt23* func_80011C98(MainPoolState* arg0, unk_D_86002F34_alt23* arg1, s16 arg2) {
if (arg0 != NULL) {
arg1 = func_80002DCC(arg0, sizeof(unk_D_86002F34_alt23), 4);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/11BA0/func_80011DAC.s")
if (arg1 != NULL) {
arg1->unk_18 = arg2;
func_80010FA0(arg1, 0x1B);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/11BA0/func_80011E68.s")
return arg1;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/11BA0/func_80011EB4.s")
unk_D_86002F34_alt24* func_80011CF0(MainPoolState* arg0, unk_D_86002F34_alt24* arg1, s32 arg2, s16 arg3, s16 arg4,
s16 arg5, s16 arg6, s16 arg7, s16 arg8, s32 arg9, u8 r, u8 g, u8 b, u8 a) {
if (arg0 != NULL) {
arg1 = func_80002DCC(arg0, sizeof(unk_D_86002F34_alt24), 4);
}
if (arg1 != NULL) {
arg1->unk_1C = arg3;
arg1->unk_1E = arg4;
arg1->unk_20 = arg5;
arg1->unk_22 = arg6;
arg1->unk_18 = arg7;
arg1->unk_1A = arg8;
arg1->unk_24 = arg9;
arg1->unk_28.rgba = (r << 0x18) | (g << 0x10) | (b << 8) | a;
func_80010FA0(arg1, 0x1C);
arg1->unk_00.unk_03 = arg2;
}
return arg1;
}
void func_80011DAC(unk_D_86002F34_00C* arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4) {
arg0->unk_18.x = arg1;
arg0->unk_18.y = arg2;
arg0->unk_18.width = arg3;
arg0->unk_18.height = arg4;
arg0->unk_40.l = -arg3 * 0.5f;
arg0->unk_40.r = arg3 * 0.5f;
arg0->unk_40.t = arg4 * 0.5f;
arg0->unk_40.b = -arg4 * 0.5f;
arg0->unk_40.n = -2.0f;
arg0->unk_40.f = 2.0f;
arg0->unk_40.scale = 1.0f;
}
void func_80011E68(unk_D_86002F34_00C* arg0, f32 arg1, f32 arg2, f32 arg3) {
arg0->unk_24.aspect = (f32)arg0->unk_18.width / arg0->unk_18.height;
arg0->unk_24.fovy = arg1;
arg0->unk_24.near = arg2;
arg0->unk_24.far = arg3;
arg0->unk_24.scale = 1.0f;
}
void func_80011EB4(unk_D_86002F34_00C* arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, s32 arg7) {
unk_D_86002F34_00C_060* sp1C = &arg0->unk_60;
f32 sp28 = arg4 - arg1;
f32 sp24 = arg6 - arg3;
f32 temp_fv1_2 = -1.0 / sqrtf(SQ(sp28) + SQ(sp24));
sp28 *= temp_fv1_2;
sp24 *= temp_fv1_2;
func_8000E88C(&sp1C->eye, arg1, arg2, arg3);
func_8000E88C(&sp1C->at, arg4, arg5, arg6);
func_8000E88C(&sp1C->up, SINS(arg7) * sp24, COSS(arg7), -SINS(arg7) * sp28);
}
void func_80011FC8(unk_D_86002F34_00C* arg0, s16 arg1, s16 arg2, u8 arg3, u8 arg4, u8 arg5) {
unk_D_86002F34_00C_0CC* ptr = &arg0->unk_CC;
if (arg2 < 2) {
if ((arg1 == 2) || (arg1 == 4)) {
ptr->unk_00 = 0;
} else {
ptr->unk_00 = 1;
}
} else {
ptr->unk_00 = arg1;
ptr->unk_08 = arg2;
ptr->unk_0A = 1;
ptr->color.r = arg3;
ptr->color.g = arg4;
ptr->color.b = arg5;
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/11BA0/func_80011FC8.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/11BA0/func_80012044.s")
void func_80012094(unk_D_86002F34_000* arg0, unk_D_86002F34_000* arg1) {
unk_D_86002F34_000* temp_v0;
unk_D_86002F34_000* 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;

View File

@ -9,54 +9,11 @@ typedef struct unk_func_80011B94 {
/* 0x18 */ Gfx* unk_18;
} unk_func_80011B94; // size = 0x1C
typedef struct unk_D_8690A610_018 {
/* 0x00 */ s16 unk_00;
/* 0x02 */ s16 unk_02;
/* 0x04 */ Color_RGBA8_u32 unk_04;
} unk_D_8690A610_018; // size = 0x8
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*, unk_func_80011B94*, s32, Gfx*);
unk_D_86002F34_alt9* func_80011B10(MainPoolState*, s32, s32, s32, Vec3f*, f32);
void func_80012094(unk_D_86002F58_004_000_000*, unk_D_86002F58_004_000_000*);
typedef struct unk_D_8690A610 {
/* 0x00 */ unk_D_86002F58_004_000_000 unk_00;
/* 0x18 */ unk_D_8690A610_018 unk_18;
} unk_D_8690A610; // size = 0x20
void func_80010FA0(unk_D_86002F34_000* arg0, u8 arg1);
void func_80010FDC(unk_D_86002F34_000* arg0, func_D_86002F34_000_010 arg1, unk_D_86002F34_000_014* arg2);
unk_D_86002F34_000* func_8001103C(MainPoolState* arg0, void* arg1);
unk_D_86002F34_alt2* func_80011088(MainPoolState* arg0, unk_D_86002F34_alt2* arg1, unk_D_86002F34_000* arg2);
unk_D_86002F34_00C* func_800110E0(MemoryBlock* arg0, unk_D_86002F34_00C* arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5);
unk_D_86002F34_alt13* func_800111A4(MemoryBlock* arg0, unk_D_86002F34_alt13* arg1, s16 arg2);
unk_D_86002F34_alt1* func_800111FC(MemoryBlock* arg0, unk_D_86002F34_alt1* arg1, s16 arg2);
unk_D_86002F34_alt14* func_80011258(MainPoolState* arg0, unk_D_86002F34_alt14* arg1, s16 arg2);
unk_D_86002F34_alt15* func_800112BC(MainPoolState* arg0, unk_D_86002F34_alt15* arg1, s16 arg2);
unk_D_86002F34_alt16* func_80011320(MainPoolState* arg0, unk_D_86002F34_alt16* arg1, u8 arg2, u8 arg3, u8 arg4);
unk_D_86002F34_alt17* func_800113AC(MainPoolState* arg0, unk_D_86002F34_alt17* arg1);
unk_D_8690A610* func_800113F8(s32 arg0, unk_D_8690A610* arg1, s16 arg2, s16 arg3, u8 r, u8 g, u8 b, u8 a);
unk_D_86002F34_alt18* func_80011484(MainPoolState* arg0, unk_D_86002F34_alt18* arg1, s16 arg2, s16 arg3, u8 r, u8 g, u8 b, u8 a);
unk_D_86002F34_alt19* func_80011504(MainPoolState* arg0, unk_D_86002F34_alt19* arg1, u8 r, u8 g, u8 b);
unk_D_86002F34* func_8001156C(MainPoolState* arg0, unk_D_86002F34* arg1, s32 arg2,
unk_D_86002F34_018* arg3, s32 arg4, unk_D_86002F34_01C* arg5,
s32 arg6, Vtx* arg7);
unk_D_86002F34_alt12* func_800115F0(MainPoolState* arg0, unk_D_86002F34_alt12* arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5);
unk_D_86002F34_alt20* func_80011660(MainPoolState* arg0, unk_D_86002F34_alt20* arg1, s16 arg2, s16 arg3);
unk_D_86002F34_alt21* func_800116C0(MainPoolState* arg0, unk_D_86002F34_alt21* arg1, s16 arg2, s16 arg3);
unk_D_86002F34_alt5* func_80011720(MainPoolState* arg0, unk_D_86002F34_alt5* arg1, Vec3f* arg2, Vec3s* arg3);
unk_D_86002F34_alt22* func_800117A8(MainPoolState* arg0, unk_D_86002F34_alt22* arg1, Vec3f* arg2);
unk_D_86002F34_alt6* func_80011814(MainPoolState* arg0, unk_D_86002F34_alt6* arg1, s16 arg2, s16 arg3, s16 arg4, Vec3s* arg5, Vec3s* arg6, Vec3f* arg7);
unk_D_86002F34_alt7* func_800118D0(MainPoolState* arg0, unk_D_86002F34_alt7* arg1, s32 arg2, Gfx* arg3, s16 arg4);
unk_D_86002F58_004_000* func_80011938(MainPoolState* arg0, unk_D_86002F58_004_000* arg1, s16 arg2, Vec3f* arg3,
Vec3s* arg4, Vec3f* arg5);
unk_D_86002F34_alt8* func_80011A3C(MainPoolState* arg0, unk_D_86002F34_alt8* arg1, s32 arg2, Gfx* arg3, MtxF* arg4);
unk_D_86002F34_alt8* func_80011ABC(MainPoolState* arg0, unk_D_86002F34_alt8* arg1, s32 arg2, Gfx* arg3, Vec3f* arg4, Vec3s* arg5);
unk_D_86002F34_alt9* func_80011B10(MainPoolState* arg0, unk_D_86002F34_alt9* arg1, s32 arg2, Gfx* arg3, Vec3f* arg4, f32 arg5);
unk_func_80011B94* func_80011B94(MainPoolState* arg0, unk_func_80011B94* arg1, s32 arg2, Gfx* arg3);
unk_D_86002F34_alt10* func_80011BF4(MainPoolState* arg0, unk_D_86002F34_alt10* arg1, s16 arg2, s16 arg3, s32 arg4, s16 arg5, s16 arg6, u8 r, u8 g, u8 b, u8 a);
unk_D_86002F34_alt23* func_80011C98(MainPoolState* arg0, unk_D_86002F34_alt23* arg1, s16 arg2);
unk_D_86002F34_alt24* func_80011CF0(MainPoolState* arg0, unk_D_86002F34_alt24* arg1, s32 arg2, s16 arg3, s16 arg4, s16 arg5, s16 arg6, s16 arg7, s16 arg8, s32 arg9,
u8 r, u8 g, u8 b, u8 a);
void func_80011DAC(unk_D_86002F34_00C* arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4);
void func_80011E68(unk_D_86002F34_00C* arg0, f32 arg1, f32 arg2, f32 arg3);
void func_80011EB4(unk_D_86002F34_00C* arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, s32 arg7);
void func_80011FC8(unk_D_86002F34_00C* arg0, s16 arg1, s16 arg2, u8 arg3, u8 arg4, u8 arg5);
void func_80012094(unk_D_86002F34_000* arg0, unk_D_86002F34_000* arg1);
#endif // _11BA0_H_

View File

@ -5,669 +5,105 @@
typedef void (*func_D_8006F2B0)(void);
typedef struct unk_D_800ABE00_cmd0 {
/* 0x00 */ u8 cmd;
/* 0x02 */ u16 unk_02;
/* 0x04 */ s32 unk_04;
} unk_D_800ABE00_cmd0; // size = 0x8
typedef struct unk_D_800ABE00_cmd1 {
/* 0x00 */ u8 cmd;
} unk_D_800ABE00_cmd1; // size = 0x4
typedef struct unk_D_800ABE00_cmd2 {
/* 0x00 */ u8 cmd;
/* 0x04 */ u32 unk_04;
} unk_D_800ABE00_cmd2; // size = 0x8
typedef struct unk_D_800ABE00_cmd3 {
/* 0x00 */ u8 cmd;
/* 0x04 */ u32 unk_04;
} unk_D_800ABE00_cmd3; // size = 0x8
typedef struct unk_D_800ABE00_cmd4 {
/* 0x00 */ u8 cmd;
} unk_D_800ABE00_cmd4; // size = 0x4
typedef struct unk_D_800ABE00_cmd5 {
/* 0x00 */ u8 cmd;
/* 0x01 */ char pad[3];
} unk_D_800ABE00_cmd5; // size = 0x4
typedef struct unk_D_800ABE00_cmd6 {
/* 0x00 */ u8 cmd;
/* 0x01 */ char pad[3];
} unk_D_800ABE00_cmd6; // size = 0x4
typedef struct unk_D_800ABE00_cmd7 {
/* 0x00 */ u8 cmd;
/* 0x04 */ unk_D_8690A610* unk_04;
} unk_D_800ABE00_cmd7; // size = 0x8
typedef struct unk_D_800ABE00_cmd8 {
/* 0x00 */ u8 cmd;
/* 0x04 */ func_D_86002F34_000_010 unk_04;
/* 0x08 */ unk_D_86002F34_000_014* unk_08;
} unk_D_800ABE00_cmd8; // size = 0xC
typedef struct unk_D_800ABE00_cmd9 {
/* 0x00 */ u8 cmd;
/* 0x01 */ char pad[3];
} unk_D_800ABE00_cmd9; // size = 0x4
typedef struct unk_D_800ABE00_cmdA {
/* 0x00 */ u8 cmd;
/* 0x04 */ unk_D_86002F34_000* unk_04;
} unk_D_800ABE00_cmdA; // size = 0x8
typedef struct unk_D_800ABE00_cmdB {
/* 0x00 */ u8 cmd;
/* 0x02 */ u16 unk_02;
/* 0x04 */ u16 unk_04;
/* 0x06 */ u16 unk_06;
/* 0x08 */ s16 unk_08;
/* 0x0A */ s16 unk_0A;
/* 0x0C */ Vec3s unk_0C;
/* 0x12 */ s16 unk_12;
/* 0x14 */ s16 unk_14;
/* 0x16 */ s16 unk_16;
} unk_D_800ABE00_cmdB; // size = 0x18
typedef struct unk_D_800ABE00_cmdC {
/* 0x00 */ u8 cmd;
/* 0x02 */ s16 unk_02;
} unk_D_800ABE00_cmdC; // size = 0x4
typedef struct unk_D_800ABE00_cmdD {
/* 0x00 */ u8 cmd;
/* 0x02 */ s16 unk_02;
} unk_D_800ABE00_cmdD; // size = 0x4
typedef struct unk_D_800ABE00_cmdE {
/* 0x00 */ u8 cmd;
/* 0x02 */ s16 unk_02;
} unk_D_800ABE00_cmdE; // size = 0x4
typedef struct unk_D_800ABE00_cmdF {
/* 0x00 */ u8 cmd;
/* 0x02 */ s16 unk_02;
} unk_D_800ABE00_cmdF; // size = 0x4
typedef struct unk_D_800ABE00_cmd10 {
/* 0x00 */ u8 cmd;
/* 0x01 */ u8 unk_01;
/* 0x02 */ u8 unk_02;
/* 0x03 */ u8 unk_03;
} unk_D_800ABE00_cmd10; // size = 0x4
typedef struct unk_D_800ABE00_cmd11 {
/* 0x00 */ u8 cmd;
/* 0x01 */ char pad[3];
} unk_D_800ABE00_cmd11; // size = 0x4
typedef struct unk_D_800ABE00_cmd13 {
/* 0x00 */ u8 cmd;
/* 0x01 */ u8 r;
/* 0x02 */ u8 g;
/* 0x03 */ u8 b;
/* 0x04 */ s16 unk_04;
/* 0x06 */ s16 unk_06;
} unk_D_800ABE00_cmd13; // size = 0x8
typedef struct unk_D_800ABE00_cmd14 {
/* 0x00 */ u8 cmd;
/* 0x01 */ char unk01[0x3];
/* 0x04 */ s16 unk_04;
/* 0x06 */ s16 unk_06;
/* 0x08 */ u8 r;
/* 0x09 */ u8 g;
/* 0x0A */ u8 b;
/* 0x0B */ u8 a;
} unk_D_800ABE00_cmd14; // size = 0xC
typedef struct unk_D_800ABE00_cmd15 {
/* 0x00 */ u8 cmd;
/* 0x01 */ char unk01[0xB];
} unk_D_800ABE00_cmd15; // size = 0xC
typedef struct unk_D_800ABE00_cmd16 {
/* 0x00 */ u8 cmd;
/* 0x01 */ u8 r;
/* 0x02 */ u8 g;
/* 0x03 */ u8 b;
} unk_D_800ABE00_cmd16; // size = 0x4
typedef struct unk_D_800ABE00_cmd17 {
/* 0x00 */ u8 cmd;
/* 0x02 */ s16 unk_02;
/* 0x04 */ s16 unk_04;
/* 0x06 */ s16 unk_06;
/* 0x08 */ unk_D_86002F34_018* unk_08;
/* 0x0C */ unk_D_86002F34_01C* unk_0C;
/* 0x10 */ Vtx* unk_10;
} unk_D_800ABE00_cmd17; // size = 0x14
typedef struct unk_D_800ABE00_cmd18 {
/* 0x00 */ u8 cmd;
/* 0x01 */ u8 unk_01;
/* 0x02 */ s16 unk_02;
/* 0x04 */ s16 unk_04;
/* 0x06 */ s16 unk_06;
} unk_D_800ABE00_cmd18; // size = 0x8
typedef struct unk_D_800ABE00_cmd19 {
/* 0x00 */ u8 cmd;
/* 0x01 */ char unk01[0x3];
/* 0x04 */ s16 unk_04;
/* 0x06 */ s16 unk_06;
} unk_D_800ABE00_cmd19; // size = 0x8
typedef struct unk_D_800ABE00_cmd1A {
/* 0x00 */ u8 cmd;
/* 0x01 */ u8 unk_01;
/* 0x02 */ s16 unk_02;
} unk_D_800ABE00_cmd1A; // size = 0x4
typedef struct unk_D_800ABE00_cmd1B {
/* 0x00 */ u8 cmd;
/* 0x01 */ char unk01[0x3];
/* 0x04 */ s16 unk_04;
/* 0x06 */ s16 unk_06;
/* 0x08 */ s16 unk_08;
/* 0x0A */ Vec3s unk_0A;
} unk_D_800ABE00_cmd1B; // size = 0x10
typedef struct unk_D_800ABE00_cmd1C {
/* 0x00 */ u8 cmd;
/* 0x01 */ char unk01[0x3];
/* 0x04 */ u32 unk_04;
/* 0x08 */ u32 unk_08;
/* 0x0C */ u32 unk_0C;
} unk_D_800ABE00_cmd1C; // size = 0x10
typedef struct unk_D_800ABE00_cmd1D {
/* 0x00 */ u8 cmd;
/* 0x01 */ u8 unk_01;
/* 0x02 */ u8 unk_02;
/* 0x03 */ u8 unk_03;
/* 0x04 */ Vec3s unk_04;
/* 0x0A */ Vec3s unk_0A;
/* 0x10 */ u32 unk_10;
/* 0x14 */ u32 unk_14;
/* 0x18 */ u32 unk_18;
} unk_D_800ABE00_cmd1D; // size = 0x1C
typedef struct unk_D_800ABE00_cmd1E {
/* 0x00 */ u8 cmd;
/* 0x01 */ u8 unk_01;
/* 0x02 */ s16 unk_02;
/* 0x04 */ Gfx* unk_04;
} unk_D_800ABE00_cmd1E; // size = 0x8
typedef struct unk_D_800ABE00_cmd1F {
/* 0x00 */ u8 cmd;
/* 0x02 */ s16 unk_02;
/* 0x04 */ s16 unk_04;
/* 0x06 */ s16 unk_06;
/* 0x08 */ s16 unk_08;
/* 0x0A */ Vec3s unk_0A;
/* 0x10 */ s16 unk_10;
/* 0x12 */ s16 unk_12;
/* 0x14 */ s16 unk_14;
/* 0x16 */ char pad[0x2];
} unk_D_800ABE00_cmd1F; // size = 0x18
typedef struct unk_D_800ABE00_cmd20 {
/* 0x00 */ u8 cmd;
/* 0x01 */ u8 unk_01;
/* 0x02 */ char unk02[0x2];
/* 0x04 */ s16 unk_04;
/* 0x06 */ s16 unk_06;
/* 0x08 */ s16 unk_08;
/* 0x0A */ Vec3s unk_0A;
/* 0x10 */ Gfx* unk_10;
} unk_D_800ABE00_cmd20; // size = 0x14
typedef struct unk_D_800ABE00_cmd21 {
/* 0x00 */ u8 cmd;
/* 0x01 */ u8 unk_01;
/* 0x02 */ Vec3s unk_02;
/* 0x08 */ u32 unk_08;
/* 0x0C */ Gfx* unk_0C;
} unk_D_800ABE00_cmd21; // size = 0x10
typedef struct unk_D_800ABE00_cmd22 {
/* 0x00 */ u8 cmd;
/* 0x01 */ u8 unk_01;
/* 0x04 */ Gfx* unk_04;
} unk_D_800ABE00_cmd22; // size = 0x8
typedef struct unk_D_800ABE00_cmd23 {
/* 0x00 */ u8 cmd;
/* 0x01 */ u8 unk_01;
/* 0x02 */ s16 unk_02;
/* 0x04 */ s32 unk_04;
/* 0x07 */ s16 unk_08;
/* 0x0A */ s16 unk_0A;
/* 0x0C */ u8 r;
/* 0x0D */ u8 g;
/* 0x0E */ u8 b;
/* 0x0F */ u8 a;
} unk_D_800ABE00_cmd23; // size = 0x10
typedef struct unk_D_800ABE00_cmd24 {
/* 0x00 */ u8 cmd;
/* 0x02 */ s16 unk_02;
} unk_D_800ABE00_cmd24; // size = 0x4
typedef struct unk_D_800ABE00_cmd25 {
/* 0x00 */ u8 cmd;
/* 0x01 */ char pad[3];
} unk_D_800ABE00_cmd25; // size = 0x4
typedef struct unk_D_800ABE00_cmd26 {
/* 0x00 */ u8 cmd;
/* 0x01 */ u8 unk_01;
/* 0x02 */ u8 unk_02;
/* 0x03 */ s8 unk_03;
/* 0x04 */ s16 unk_04;
/* 0x06 */ s16 unk_06;
/* 0x08 */ s16 unk_08;
/* 0x0A */ s16 unk_0A;
/* 0x0C */ s32 unk_0C;
/* 0x10 */ u8 r;
/* 0x11 */ u8 g;
/* 0x12 */ u8 b;
/* 0x13 */ u8 a;
} unk_D_800ABE00_cmd26; // size = 0x14
extern MemoryBlock* D_800ABD30;
extern unk_D_86002F34* D_800ABD34;
extern u32 D_800ABD38[];
extern unk_D_86002F34_000* D_800ABD78[32];
extern s32 D_800ABD38[];
extern s32 D_800ABD78;
extern s16 D_800ABDF8;
extern s16 D_800ABDFA;
extern s16 D_800ABDFE;
extern u8* D_800ABE00;
void func_80017880(void) {
unk_D_800ABE00_cmd0* cmd = (unk_D_800ABE00_cmd0*)D_800ABE00;
u32 v = (u32)D_800ABE00;
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_80017880.s")
D_800ABD38[D_800ABDFA++] = v + sizeof(unk_D_800ABE00_cmd0);
D_800ABD38[D_800ABDFA++] = (D_800ABDF8 << 0x10) + D_800ABDFE;
D_800ABDFE = D_800ABDFA;
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_80017914.s")
D_800ABE00 = (u8*)Util_ConvertAddrToVirtAddr(cmd->unk_04);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_8001799C.s")
void func_80017914(void) {
D_800ABDFA = D_800ABDFE;
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_800179C8.s")
D_800ABDFE = D_800ABD38[--D_800ABDFA] & 0xFFFF;
D_800ABDF8 = D_800ABD38[D_800ABDFA] >> 0x10;
D_800ABE00 = D_800ABD38[--D_800ABDFA];
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_80017A1C.s")
void func_8001799C(void) {
unk_D_800ABE00_cmd2* cmd = (unk_D_800ABE00_cmd2*)D_800ABE00;
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_80017A54.s")
D_800ABE00 = Util_ConvertAddrToVirtAddr(cmd->unk_04);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_80017A98.s")
void func_800179C8(void) {
unk_D_800ABE00_cmd3* cmd = (unk_D_800ABE00_cmd3*)D_800ABE00;
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_80017AC4.s")
cmd += 0;
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_80017B28.s")
D_800ABD38[D_800ABDFA++] = D_800ABE00 + sizeof(unk_D_800ABE00_cmd3);
D_800ABE00 = (u8*)Util_ConvertAddrToVirtAddr(cmd->unk_04);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_80017B60.s")
void func_80017A1C(void) {
D_800ABE00 = D_800ABD38[--D_800ABDFA];
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_80017BBC.s")
void func_80017A54(void) {
D_800ABD78[D_800ABDF8 + 1] = D_800ABD78[D_800ABDF8];
D_800ABDF8++;
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_80017BFC.s")
D_800ABE00 += sizeof(unk_D_800ABE00_cmd5);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_80017C48.s")
void func_80017A98(void) {
D_800ABDF8--;
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_80017D94.s")
D_800ABE00 += sizeof(unk_D_800ABE00_cmd6);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_80017DE0.s")
void func_80017AC4(unk_D_86002F34_000* arg0) {
if (arg0 != NULL) {
D_800ABD78[D_800ABDF8] = arg0;
if (D_800ABDF8 == 0) {
if (D_800ABD34 == NULL) {
D_800ABD34 = arg0;
}
} else {
func_80012094(D_800ABD78[D_800ABDF8 - 1], arg0);
}
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_80017E2C.s")
void func_80017B28(void) {
unk_D_800ABE00_cmd7* cmd = (unk_D_800ABE00_cmd7*)D_800ABE00;
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_80017E78.s")
func_80017AC4(&cmd->unk_04->unk_00);
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_80017EC4.s")
D_800ABE00 += sizeof(unk_D_800ABE00_cmd7);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_80017F1C.s")
void func_80017B60(void) {
unk_D_800ABE00_cmd8* cmd = (unk_D_800ABE00_cmd8*)D_800ABE00;
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_80017F5C.s")
if (D_800ABD78[D_800ABDF8] != NULL) {
func_80010FDC(D_800ABD78[D_800ABDF8], cmd->unk_04, cmd->unk_08);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_80017F64.s")
D_800ABE00 += sizeof(unk_D_800ABE00_cmd8);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_80017FD4.s")
void func_80017BBC(void) {
func_80017AC4(func_8001103C(D_800ABD30, NULL));
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_800180BC.s")
D_800ABE00 += sizeof(unk_D_800ABE00_cmd9);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_800180D4.s")
void func_80017BFC(void) {
unk_D_800ABE00_cmdA* cmd = (unk_D_800ABE00_cmdA*)D_800ABE00;
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_8001812C.s")
func_80017AC4(func_80011088(D_800ABD30, NULL, cmd->unk_04));
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_8001819C.s")
D_800ABE00 += sizeof(unk_D_800ABE00_cmdA);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_800181FC.s")
void func_80017C48(void) {
unk_D_800ABE00_cmdB* cmd = (unk_D_800ABE00_cmdB*)D_800ABE00;
unk_D_86002F34_00C* temp_v0 = func_800110E0(D_800ABD30, NULL, cmd->unk_04, cmd->unk_06, cmd->unk_08, cmd->unk_0A);
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_8001824C.s")
if (temp_v0 != NULL) {
temp_v0->unk_24.fovy = cmd->unk_02;
func_8000E990(&temp_v0->unk_60.at, &cmd->unk_0C);
func_80010354(&temp_v0->unk_60.at, &temp_v0->unk_60.eye, cmd->unk_16, (cmd->unk_12 << 0xF) / 180,
(cmd->unk_14 << 0xF) / 180);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_8001829C.s")
func_80017AC4(&temp_v0->unk_00);
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_800183C4.s")
D_800ABE00 += sizeof(unk_D_800ABE00_cmdB);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_80018490.s")
void func_80017D94(void) {
unk_D_800ABE00_cmdC* cmd = (unk_D_800ABE00_cmdC*)D_800ABE00;
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_800185A8.s")
func_80017AC4(func_800111A4(D_800ABD30, NULL, cmd->unk_02));
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_80018600.s")
D_800ABE00 += sizeof(unk_D_800ABE00_cmdC);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_8001878C.s")
void func_80017DE0(void) {
unk_D_800ABE00_cmdD* cmd = (unk_D_800ABE00_cmdD*)D_800ABE00;
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_800188C8.s")
func_80017AC4(func_800111FC(D_800ABD30, NULL, cmd->unk_02));
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_80018968.s")
D_800ABE00 += sizeof(unk_D_800ABE00_cmdD);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_800189B8.s")
void func_80017E2C(void) {
unk_D_800ABE00_cmdE* cmd = (unk_D_800ABE00_cmdE*)D_800ABE00;
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_80018A40.s")
func_80017AC4(func_80011258(D_800ABD30, NULL, cmd->unk_02));
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_80018A8C.s")
D_800ABE00 += sizeof(unk_D_800ABE00_cmdE);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_80018AD0.s")
void func_80017E78(void) {
unk_D_800ABE00_cmdF* cmd = (unk_D_800ABE00_cmdF*)D_800ABE00;
func_80017AC4(func_800112BC(D_800ABD30, NULL, cmd->unk_02));
D_800ABE00 += sizeof(unk_D_800ABE00_cmdF);
}
void func_80017EC4(void) {
unk_D_800ABE00_cmd10* cmd = (unk_D_800ABE00_cmd10*)D_800ABE00;
func_80017AC4(func_80011320(D_800ABD30, NULL, cmd->unk_01, cmd->unk_02, cmd->unk_03));
D_800ABE00 += sizeof(unk_D_800ABE00_cmd10);
}
void func_80017F1C(void) {
func_80017AC4(func_800113AC(D_800ABD30, NULL));
D_800ABE00 += sizeof(unk_D_800ABE00_cmd11);
}
void func_80017F5C(void) {
}
void func_80017F64(void) {
unk_D_800ABE00_cmd13* cmd = (unk_D_800ABE00_cmd13*)D_800ABE00;
func_80017AC4(func_800113F8(D_800ABD30, NULL, cmd->unk_04, cmd->unk_06, cmd->r, cmd->g, cmd->b, 0xFF));
D_800ABE00 += sizeof(unk_D_800ABE00_cmd13);
}
void func_80017FD4(void) {
unk_D_800ABE00_cmd14* cmd = (unk_D_800ABE00_cmd14*)D_800ABE00;
func_80017AC4(func_80011484(D_800ABD30, NULL, (cmd->unk_04 << 0xF) / 180, (cmd->unk_06 << 0xF) / 180, cmd->r,
cmd->g, cmd->b, cmd->a));
D_800ABE00 += sizeof(unk_D_800ABE00_cmd14);
}
void func_800180BC(void) {
D_800ABE00 += sizeof(unk_D_800ABE00_cmd15);
}
void func_800180D4(void) {
unk_D_800ABE00_cmd16* cmd = (unk_D_800ABE00_cmd16*)D_800ABE00;
func_80017AC4(func_80011504(D_800ABD30, NULL, cmd->r, cmd->g, cmd->b));
D_800ABE00 += sizeof(unk_D_800ABE00_cmd16);
}
void func_8001812C(void) {
unk_D_800ABE00_cmd17* cmd = (unk_D_800ABE00_cmd17*)D_800ABE00;
func_80017AC4(
func_8001156C(D_800ABD30, NULL, cmd->unk_02, cmd->unk_08, cmd->unk_04, cmd->unk_0C, cmd->unk_06, cmd->unk_10));
D_800ABE00 += sizeof(unk_D_800ABE00_cmd17);
}
void func_8001819C(void) {
unk_D_800ABE00_cmd18* cmd = (unk_D_800ABE00_cmd18*)D_800ABE00;
func_80017AC4(func_800115F0(D_800ABD30, NULL, cmd->unk_01, cmd->unk_04, cmd->unk_06, cmd->unk_02));
D_800ABE00 += sizeof(unk_D_800ABE00_cmd18);
}
void func_800181FC(void) {
unk_D_800ABE00_cmd19* cmd = (unk_D_800ABE00_cmd19*)D_800ABE00;
func_80017AC4(func_80011660(D_800ABD30, NULL, cmd->unk_04, cmd->unk_06));
D_800ABE00 += sizeof(unk_D_800ABE00_cmd19);
}
void func_8001824C(void) {
unk_D_800ABE00_cmd1A* cmd = (unk_D_800ABE00_cmd1A*)D_800ABE00;
func_80017AC4(func_800116C0(D_800ABD30, NULL, cmd->unk_01, cmd->unk_02));
D_800ABE00 += sizeof(unk_D_800ABE00_cmd1A);
}
void func_8001829C(void) {
Vec3s sp30;
Vec3f sp24;
UNUSED s32 pad;
unk_D_800ABE00_cmd1B* cmd = (unk_D_800ABE00_cmd1B*)D_800ABE00;
func_8000E990(&sp24, &cmd->unk_0A);
func_8000EB70(&sp30, (cmd->unk_04 << 0xF) / 180, (cmd->unk_06 << 0xF) / 180, (cmd->unk_08 << 0xF) / 180);
func_80017AC4(func_80011720(D_800ABD30, NULL, &sp24, &sp30));
D_800ABE00 += sizeof(unk_D_800ABE00_cmd1B);
}
void func_800183C4(void) {
Vec3f sp24;
unk_D_800ABE00_cmd1C* cmd = (unk_D_800ABE00_cmd1C*)D_800ABE00;
sp24.x = cmd->unk_04 / 65536.0f;
sp24.y = cmd->unk_08 / 65536.0f;
sp24.z = cmd->unk_0C / 65536.0f;
func_80017AC4(func_800117A8(D_800ABD30, NULL, &sp24));
D_800ABE00 += sizeof(unk_D_800ABE00_cmd1C);
}
void func_80018490(void) {
Vec3f sp3C;
s16 var_a3 = 1;
unk_D_800ABE00_cmd1D* cmd = (unk_D_800ABE00_cmd1D*)D_800ABE00;
sp3C.x = cmd->unk_10 / 65536.0f;
sp3C.y = cmd->unk_14 / 65536.0f;
sp3C.z = cmd->unk_18 / 65536.0f;
if (cmd->unk_02 & 1) {
var_a3 = 0;
}
if (cmd->unk_02 & 2) {
var_a3 |= 2;
}
func_80017AC4(func_80011814(D_800ABD30, NULL, cmd->unk_01, var_a3, cmd->unk_03, &cmd->unk_04, &cmd->unk_0A, &sp3C));
D_800ABE00 += sizeof(unk_D_800ABE00_cmd1D);
}
void func_800185A8(void) {
unk_D_800ABE00_cmd1E* cmd = (unk_D_800ABE00_cmd1E*)D_800ABE00;
func_80017AC4(func_800118D0(D_800ABD30, NULL, cmd->unk_01, cmd->unk_04, cmd->unk_02));
D_800ABE00 += sizeof(unk_D_800ABE00_cmd1E);
}
void func_80018600(void) {
Vec3s sp40;
Vec3f sp34;
Vec3f sp28;
unk_D_86002F58_004_000* tmp;
unk_D_800ABE00_cmd1F* cmd = (unk_D_800ABE00_cmd1F*)D_800ABE00;
func_8000E990(&sp34, &cmd->unk_0A);
sp28.x = cmd->unk_10 / 100.0f;
sp28.y = cmd->unk_12 / 100.0f;
sp28.z = cmd->unk_14 / 100.0f;
func_8000EB70(&sp40, (cmd->unk_04 << 0xF) / 180, (cmd->unk_06 << 0xF) / 180, (cmd->unk_08 << 0xF) / 180);
tmp = func_80011938(D_800ABD30, NULL, cmd->unk_02, &sp34, &sp40, &sp28);
func_80017AC4(tmp);
D_800ABE00 += sizeof(unk_D_800ABE00_cmd1F);
}
void func_8001878C(void) {
Vec3f sp34;
Vec3s sp2C;
unk_D_86002F34_alt8* tmp;
unk_D_800ABE00_cmd20* cmd = (unk_D_800ABE00_cmd20*)D_800ABE00;
func_8000E990(&sp34, &cmd->unk_0A);
func_8000EB70(&sp2C, (cmd->unk_04 << 0xF) / 180, (cmd->unk_06 << 0xF) / 180, (cmd->unk_08 << 0xF) / 180);
tmp = func_80011ABC(D_800ABD30, NULL, cmd->unk_01, cmd->unk_10, &sp34, &sp2C);
func_80017AC4(tmp);
D_800ABE00 += sizeof(unk_D_800ABE00_cmd20);
}
void func_800188C8(void) {
Vec3f sp2C;
unk_D_86002F34_alt9* tmp;
unk_D_800ABE00_cmd21* cmd = (unk_D_800ABE00_cmd21*)D_800ABE00;
func_8000E990(&sp2C, &cmd->unk_02);
tmp = func_80011B10(D_800ABD30, NULL, cmd->unk_01, cmd->unk_0C, &sp2C, cmd->unk_08 / 65536.0f);
func_80017AC4(tmp);
D_800ABE00 += sizeof(unk_D_800ABE00_cmd21);
}
void func_80018968(void) {
unk_D_800ABE00_cmd22* cmd = (unk_D_800ABE00_cmd22*)D_800ABE00;
func_80017AC4(func_80011B94(D_800ABD30, NULL, cmd->unk_01, cmd->unk_04));
D_800ABE00 += sizeof(unk_D_800ABE00_cmd22);
}
void func_800189B8(void) {
unk_D_800ABE00_cmd23* cmd = (unk_D_800ABE00_cmd23*)D_800ABE00;
func_80017AC4(func_80011BF4(D_800ABD30, NULL, cmd->unk_01, cmd->unk_02, cmd->unk_04, cmd->unk_08, cmd->unk_0A,
cmd->r, cmd->g, cmd->b, cmd->a));
D_800ABE00 += sizeof(unk_D_800ABE00_cmd23);
}
void func_80018A40(void) {
unk_D_800ABE00_cmd24* cmd = (unk_D_800ABE00_cmd24*)D_800ABE00;
func_80017AC4(func_80011C98(D_800ABD30, NULL, cmd->unk_02));
D_800ABE00 += sizeof(unk_D_800ABE00_cmd24);
}
void func_80018A8C(void) {
unk_D_800ABE00_cmd25* cmd = (unk_D_800ABE00_cmd25*)D_800ABE00;
if (D_800ABD78[D_800ABDF8] != NULL) {
D_800ABD78[D_800ABDF8]->unk_02 |= 4;
}
D_800ABE00 += sizeof(unk_D_800ABE00_cmd25);
}
void func_80018AD0(void) {
unk_D_800ABE00_cmd26* cmd = (unk_D_800ABE00_cmd26*)D_800ABE00;
func_80017AC4(func_80011CF0(D_800ABD30, NULL, cmd->unk_01, cmd->unk_04, cmd->unk_06, cmd->unk_08, cmd->unk_0A,
cmd->unk_02, cmd->unk_03, cmd->unk_0C, cmd->r, cmd->g, cmd->b, cmd->a));
D_800ABE00 += sizeof(unk_D_800ABE00_cmd26);
}
unk_D_86002F34_000* func_80018B70(MemoryBlock* arg0, void* arg1) {
void* func_80018B70(MemoryBlock* arg0, void* arg1) {
extern func_D_8006F2B0 D_8006F2B0[];
D_800ABD34 = NULL;
D_800ABDF8 = 0;
D_800ABDFA = 2;
D_800ABDFE = 2;
D_800ABE00 = Util_ConvertAddrToVirtAddr((uintptr_t)arg1);
D_800ABE00 = Util_ConvertAddrToVirtAddr(arg1);
D_800ABD30 = arg0;
D_800ABD78[0] = NULL;
D_800ABD78 = 0;
D_800ABD38[0] = 0;
D_800ABD38[1] = 0;

View File

@ -4,45 +4,7 @@
#include "global.h"
#include "src/memory.h"
void func_80017880(void); // cmd 0
void func_80017914(void); // cmd 1
void func_8001799C(void); // cmd 2
void func_800179C8(void); // cmd 3
void func_80017A1C(void); // cmd 4
void func_80017A54(void); // cmd 5
void func_80017A98(void); // cmd 6
void func_80017B28(void); // cmd 7
void func_80017B60(void); // cmd 8
void func_80017BBC(void); // cmd 9
void func_80017BFC(void); // cmd 10
void func_80017C48(void); // cmd 11
void func_80017D94(void); // cmd 12
void func_80017DE0(void); // cmd 13
void func_80017E2C(void); // cmd 14
void func_80017E78(void); // cmd 15
void func_80017EC4(void); // cmd 16
void func_80017F1C(void); // cmd 17
void func_80017F5C(void); // cmd 18
void func_80017F64(void); // cmd 19
void func_80017FD4(void); // cmd 20
void func_800180BC(void); // cmd 21
void func_800180D4(void); // cmd 22
void func_8001812C(void); // cmd 23
void func_8001819C(void); // cmd 24
void func_800181FC(void); // cmd 25
void func_8001824C(void); // cmd 26
void func_8001829C(void); // cmd 27
void func_800183C4(void); // cmd 28
void func_80018490(void); // cmd 29
void func_800185A8(void); // cmd 30
void func_80018600(void); // cmd 31
void func_8001878C(void); // cmd 32
void func_800188C8(void); // cmd 33
void func_80018968(void); // cmd 34
void func_800189B8(void); // cmd 35
void func_80018A40(void); // cmd 36
void func_80018A8C(void); // cmd 37
void func_80018AD0(void); // cmd 38
unk_D_86002F34_000* func_80018B70(MemoryBlock*, void*);
void* func_80018B70(MemoryBlock*, void*);
#endif // _18480_H_

View File

@ -372,7 +372,7 @@ s32 func_800198E4(unk_D_86002F58_004_000_010* arg0, u16 arg1, unk_D_86002F58_004
sp18->unk_14 = 0x3C000;
sp18->unk_18 = arg2;
if ((arg0->unk_24 != NULL) && (arg0->unk_24->unk_00 == arg1) && (arg0->unk_2C.raw == sp18->unk_18.raw)) {
if ((arg0->unk_24 != NULL) && (arg1 == *arg0->unk_24) && (arg0->unk_2C.raw == sp18->unk_18.raw)) {
osSendMesg(sp18->unk_04, sp18, 1);
} else {
osSendMesg(&D_800ABE10.unk_9D0, sp18, 1);

View File

@ -120,17 +120,20 @@ unk_D_86002F58_004_000_00C_028* func_8001BE90(unk_D_86002F58_004_000* arg0, s32
}
#ifdef NON_MATCHING
unk_D_86002F58_004_000_010_02C* func_8001BEE8(unk_D_86002F58_004_000_010_02C* arg0, unk_func_8001BEE8* arg1) {
void func_8001BEE8(s32* arg0, unk_func_8001BEE8* arg1) {
char sp38[0xB];
unk_D_86002F58_004_000_010_02C sp34;
s32 sp34;
unk_D_8006FF00* sp30;
UNUSED unk_func_8001BEE8* sp20;
UNUSED s32 i;
u8 var_a0;
s8* var_v1;
char* var_v1;
s8 t;
s32* test;
test = arg0;
sp30 = &D_8006FF00[arg1->unk_00 - 1];
sp34.raw = 0;
sp34 = 0;
func_80021CA4(sp38, arg1->unk_00);
@ -138,20 +141,24 @@ unk_D_86002F58_004_000_010_02C* func_8001BEE8(unk_D_86002F58_004_000_010_02C* ar
var_a0 = (arg1->unk_0E >> 8) + arg1->unk_0E;
var_v1 = arg1->unk_30;
while (*var_v1) {
var_a0 += *var_v1++;
while (*var_v1 != 0) {
t = *var_v1++;
var_a0 += t;
}
var_v1 = arg1->unk_3B;
while (*var_v1) {
var_a0 += *var_v1++;
while (*var_v1 != 0) {
t = *var_v1++;
var_a0 += t;
do {
var_a0 += t;
} while (0);
}
sp34.unk_00 = ((((sp30->unk_12 - sp30->unk_10) << 6) * var_a0) / 255) + (sp30->unk_10 << 6);
*(s16*)&sp34 = ((((sp30->unk_12 - sp30->unk_10) << 6) * var_a0) / 255) + (sp30->unk_10 << 6);
}
*arg0 = sp34;
return arg0;
*test = sp34;
}
#else
#pragma GLOBAL_ASM("asm/us/nonmatchings/1C720/func_8001BEE8.s")

View File

@ -52,7 +52,7 @@ void func_8001BE34(unk_D_86002F58_004_000* arg0, u8 arg1, u8 arg2, u8 arg3, u8 a
void func_8001BE78(unk_D_86002F58_004_000* arg0, u8 arg1);
void func_8001BE84(unk_D_86002F58_004_000* arg0, u8 arg1);
unk_D_86002F58_004_000_00C_028* func_8001BE90(unk_D_86002F58_004_000* arg0, s32 arg1);
unk_D_86002F58_004_000_010_02C* func_8001BEE8(unk_D_86002F58_004_000_010_02C* arg0, unk_func_8001BEE8* arg1);
void func_8001BEE8(s32* arg0, unk_func_8001BEE8* arg1);
void func_8001C014(s32* arg0, unk_func_8001C014* arg1, u16 arg2);
void func_8001C07C(unk_func_8001C07C_arg0* arg0);
void func_8001C198(unk_func_8001C248* arg0);

View File

@ -11,9 +11,7 @@ typedef struct unk_func_8002A728 {
typedef struct unk_func_80027FA0 {
/* 0x00 */ u16 unk_00;
/* 0x02 */ char unk02[0x2];
/* 0x04 */ u8 unk_04;
/* 0x05 */ char unk05[0x2];
/* 0x02 */ char unk02[0x5];
/* 0x07 */ u8 unk_07;
} unk_func_80027FA0; // size = 0x8

View File

@ -51,7 +51,7 @@ s32 Game_DoCopyProtection(s32 state) {
s32 func_80029008(s32 arg0, u8* romStart, u8* romEnd, u32 arg3, u32 arg4) {
s32 result;
FragmentEntry func;
s32 (*func)(s32, s32);
func = func_80004454(arg0, romStart, romEnd);

View File

@ -101,7 +101,7 @@ end:
*arg0++ = 0;
}
char* func_8002D7C0(char* arg0, s32 arg1, char** arg2, u32 file_number) {
char* func_8002D7C0(char* arg0, s32 arg1, char** arg2, s32 file_number) {
char* sp1C;
char* sp18 = (u32)arg2 + (u32)arg2[file_number + 1];

View File

@ -6,7 +6,7 @@
void func_8002D510(void);
char* func_8002D5AC(s32);
void func_8002D600(u32, s32);
char* func_8002D7C0(char* arg0, s32 arg1, char** arg2, u32 arg3);
char* func_8002D7C0(char* arg0, s32 arg1, char** arg2, s32 arg3);
s32 func_8002D80C(s8*);

View File

@ -2,24 +2,8 @@
#define _30640_H_
#include "global.h"
#include "1C720.h"
typedef struct unk_D_83407AC8 {
/* 0x00 */ u16 unk_00;
/* 0x02 */ u8 unk_02;
/* 0x03 */ u8 unk_03[11];
/* 0x0E */ u8 unk_0E;
/* 0x0F */ u8 unk_0F;
/* 0x10 */ u8 unk_10;
} unk_D_83407AC8; // size >= 0x12
typedef struct unk_D_83402EE0_070 {
/* 0x00 */ char unk00[0x1A];
} unk_D_83402EE0_070; // size = 0x1A
void func_8002FA40(void);
void func_8003107C(unk_D_83402EE0_070*, unk_func_8001BEE8*);
void func_80031140(unk_func_8001BEE8*, unk_D_83407AC8*);
f32 func_80031A6C(f32);
void func_80031EF4(MtxF*, MtxF*);
void func_80032034(MtxF* arg0, Vec3f* arg1);

View File

@ -834,7 +834,7 @@ void func_8640203C(void) {
for (i = 0; i < 4; i++) {
D_864052C8 = &D_86404778[i];
D_864052C8->unk_190 = func_80011B10(temp_s5, NULL, 4, NULL, &D_8006F050, 0.0f);
D_864052C8->unk_190 = func_80011B10(temp_s5, 0, 4, 0, &D_8006F050, 0.0f);
func_80012094(&D_800AC840, &D_864052C8->unk_190->unk_00);
}

View File

@ -1250,7 +1250,7 @@ void func_86502848(void) {
for (i = 0; i < 4; i++) {
D_8650AB28 = &D_8650A528[i];
D_8650AB28->unk_17C = func_80011B10(temp_s5, NULL, 4, NULL, &D_8006F050, 1.0f);
D_8650AB28->unk_17C = func_80011B10(temp_s5, 0, 4, 0, &D_8006F050, 1.0f);
func_80012094(&D_800AC840, &D_8650AB28->unk_17C->unk_00);
}

View File

@ -507,7 +507,7 @@ void func_86806A50(void) {
unk_D_868084D8* var_s0;
unk_func_80011B94* temp_a1;
unk_D_86808808* ptr;
Gfx* gfx = D_86807338;
Gfx* temp = D_86807338;
D_868084D4 = 0.0f;
D_86809A08 = 0;
@ -529,7 +529,7 @@ void func_86806A50(void) {
}
for (i = 0, var_s0 = D_868084D8; i < 12; i++, var_s0++) {
var_s0->unk_40 = func_80011B10(temp_s2, NULL, 5, gfx, &D_8006F050, var_s0->unk_2C);
var_s0->unk_40 = func_80011B10(temp_s2, 0, 5, temp, &D_8006F050, var_s0->unk_2C);
func_868061E8(0, var_s0, i, NULL);
func_80012094(&D_800AC840, var_s0->unk_40);
}

View File

@ -1,175 +0,0 @@
#ifndef _FRAGMENT15_H_
#define _FRAGMENT15_H_
#include "global.h"
#include "src/controller.h"
#include "src/1C720.h"
typedef struct unk_D_8690B2F8 {
/* 0x00 */ f32 unk_00;
/* 0x04 */ f32 unk_04;
/* 0x08 */ f32 unk_08;
/* 0x0C */ f32 unk_0C;
} unk_D_8690B2F8; // size >= 0x10
typedef struct unk_D_8690A710 {
/* 0x000 */ char unk000[0x4];
/* 0x004 */ f32 unk_004;
/* 0x008 */ f32 unk_008;
/* 0x00C */ s32 unk_00C;
/* 0x010 */ char unk010[0x4];
/* 0x014 */ u8 unk_014;
/* 0x015 */ char unk015[0x16F];
} unk_D_8690A710; // size = 0x184
typedef struct unk_D_8690B350 {
/* 0x00 */ s32 unk_00;
/* 0x04 */ s32 unk_04;
/* 0x08 */ s16 unk_08;
/* 0x0A */ s16 unk_0A;
/* 0x0C */ s16 unk_0C;
/* 0x0E */ s16 unk_0E;
} unk_D_8690B350; // size = 0x10
typedef struct unk_D_8690B360 {
/* 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 */ f32 unk_0C;
/* 0x10 */ f32 unk_10;
/* 0x14 */ f32 unk_14;
} unk_D_8690B360; // size = 0x18
typedef struct unk_D_8690B308 {
/* 0x00 */ s16 unk_00[8];
/* 0x18 */ f32 unk_10;
/* 0x1C */ f32 unk_14;
/* 0x20 */ f32 unk_18;
/* 0x24 */ f32 unk_1C;
/* 0x28 */ f32 unk_20;
/* 0x2C */ f32 unk_24;
/* 0x30 */ f32 unk_28;
/* 0x34 */ f32 unk_2C;
/* 0x38 */ s16 unk_30;
/* 0x3A */ s16 unk_32;
/* 0x3C */ s16 unk_34;
/* 0x3E */ s16 unk_36;
} unk_D_8690B308; // size >= 0x38
typedef struct unk_D_8690B3C0 {
/* 0x00 */ s32 unk_00;
/* 0x04 */ s32 unk_04;
/* 0x08 */ s32 unk_08;
/* 0x0C */ s32 unk_0C;
} unk_D_8690B3C0; // size >= 0x10
extern Vec3f D_86908C20;
extern Vec3f D_86908C2C;
extern Vec3f D_86908C38;
extern Vec3f D_86908C44;
extern char* D_86908C58[];
extern Color_RGB8 D_86908C98;
extern Color_RGB8 D_86908C9C;
extern const char D_8690A520[];
extern const char D_8690A52C[];
extern const char D_8690A538[];
extern const char D_8690A544[];
extern const char D_8690A550[];
extern const char D_8690A55C[];
extern const char D_8690A568[];
extern const char D_8690A574[];
extern const char D_8690A584[];
extern const char D_8690A594[];
extern const char D_8690A5A0[];
extern const char D_8690A5AC[];
extern const char D_8690A5B8[];
extern const char D_8690A5C8[];
extern const char D_8690A5D8[];
extern const char D_8690A5E8[];
extern char* D_8690A678;
extern f32 D_8690A708;
extern unk_D_8690A710* D_8690A710;
extern unk_D_8690B2F8 D_8690B2F8;
extern unk_D_8690B308 D_8690B308;
extern s32 D_8690B344;
extern s32 D_8690B348;
extern unk_D_8690B350 D_8690B350;
extern unk_D_8690B360 D_8690B360;
extern s32 D_8690B384;
extern s32 D_8690B388;
extern s32 D_8690B380;
extern s32 D_8690B38C;
extern Controller D_8690B390;
extern unk_D_8690B3C0 D_8690B3C0;
extern s8 D_8690B3D0[255];
s32 func_86900020(s32 arg0, unk_D_86002F34_000* arg1);
s32 func_86900088(s32 arg0, unk_D_86002F34_000* arg1);
s32 func_869000F4(s32 arg0, unk_D_86002F34_000* arg1);
void func_86900110(u8 arg0, u8 arg1, u8 arg2);
void func_86900188(void);
unk_D_86002F58_004_000_010_024* func_86900244(unk_func_8001BEE8* arg0);
void func_869002AC(void);
void func_86900410(void);
void func_86900484(s32 arg0);
void func_8690060C(void);
void func_869006DC(f32* arg0, f32* arg1, s16* arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, s16 arg7);
void func_8690079C(void);
void func_869009E8(Controller* arg0, Controller* arg1);
void func_86900A14(void);
void func_86900B04(f32* arg0, f32* arg1, s16 arg2, s16 arg3);
void func_86900B6C(void);
void func_86900B9C(void);
void func_86900CF4(void);
void func_86900D78(void);
void func_86900DE0(void);
void func_86900FFC(u16 arg0);
s32 func_86901044(void);
void func_86901384(void);
s32 func_86901558(void);
s32 func_8690172C(void);
s32 func_869017D0(void);
s32 func_869018A0(void);
s32 func_8690193C(void);
s32 func_869019BC(void);
void func_86901A44(void);
void func_86901B28(void);
void func_86901ECC(void);
void func_86901FB4(void);
void func_86902004(s32 arg0);
s32 func_86902098(s32 arg0, UNUSED s32 arg1);
f32 func_86902230(Vec3f arg0, Vec3f arg1);
f32 func_86902294(f32 arg0);
f32 func_869022D8(Vec3f arg0, Vec3f arg1);
void func_8690232C(void);
void func_86902334(void);
void func_869024B4(void);
void func_869025BC(void);
s32 func_8690274C(void);
void func_86902814(Vec3f* arg0, MtxF* arg1);
void func_86902890(s16 arg0);
void func_86902AE8(void);
void func_86902E6C(Vec3f* arg0, Vec3f* arg1, Vec3f arg2, f32 arg3, s32 arg4);
void func_8690325C(Vec3f* arg0, Vec3f* arg1, Vec3f arg2, f32 arg3);
void func_8690351C(Vec3f* arg0, Vec3f* arg1, f32 arg2, f32 arg3, s32 arg4);
void func_869035F4(Vec3f* arg0, Vec3f* arg1);
void func_86903888(Vec3f* arg0, Vec3f* arg1, s32 arg2);
void func_86903D80(void);
void func_869073D8(char*);
void func_86907858(s32);
void func_86907B78(void);
void func_86907D94(void);
void func_86908418(void);
void func_86908668(void);
void func_869089AC(void);
#endif // _FRAGMENT15_H_

File diff suppressed because it is too large Load Diff

View File

@ -1,498 +1,33 @@
#include "fragment15.h"
#include "src/F420.h"
#include "src/stage_loader.h"
#include "src/fragments/3/fragment3.h"
#include "global.h"
static s16 D_8690B600;
static s16 D_8690B602;
static f32 D_8690B604;
static s16 D_8690B608;
static s16 D_8690B60A;
static f32 D_8690B60C;
static f32 D_8690B610;
static Vec3f D_8690B618;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/15/fragment15_14EC80/func_86902230.s")
f32 func_86902230(Vec3f arg0, Vec3f arg1) {
return sqrtf(SQ(arg1.x - arg0.x) + SQ(arg1.y - arg0.y) + SQ(arg1.z - arg0.z));
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/15/fragment15_14EC80/func_86902294.s")
f32 func_86902294(f32 arg0) {
f32 temp_fv1 = (D_8690B2F8.unk_00 + D_8690A708) * arg0;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/15/fragment15_14EC80/func_869022D8.s")
if (temp_fv1 > 400.0f) {
return 400.0f;
}
return temp_fv1;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/15/fragment15_14EC80/func_86902334.s")
f32 func_869022D8(Vec3f arg0, Vec3f arg1) {
return sqrtf(SQ(arg1.x - arg0.x) + SQ(arg1.z - arg0.z));
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/15/fragment15_14EC80/func_869024B4.s")
void func_8690232C(void) {
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/15/fragment15_14EC80/func_869025BC.s")
void func_86902334(void) {
D_87906054 = D_87906050->unk_00.unk_0C;
D_8690B600 = 0;
D_8690B602 = 0;
D_8690B604 = func_86902294(4.0f);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/15/fragment15_14EC80/func_8690274C.s")
if (D_8690B2F8.unk_08 != 0.0f) {
D_87906054->unk_60.at.y = D_8690B2F8.unk_08;
} else {
D_87906054->unk_60.at.y = D_8690B2F8.unk_04 + D_8690B2F8.unk_0C;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/15/fragment15_14EC80/func_86902814.s")
func_80010354(&D_87906054->unk_60.at, &D_87906054->unk_60.eye, D_8690B604, D_8690B600, D_8690B602);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/15/fragment15_14EC80/func_86902890.s")
if (D_87906054->unk_60.eye.y < 12.0f) {
D_87906054->unk_60.eye.y = 12.5f;
func_800102A4(&D_87906054->unk_60.at, &D_87906054->unk_60.eye, &D_8690B604, &D_8690B600, &D_8690B602);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/15/fragment15_14EC80/func_86902AE8.s")
D_87906054->unk_24.near = 20.0f;
D_87906054->unk_24.far = 10000.0f;
D_87906054->unk_24.fovy = 40.0f;
D_8690A710->unk_008 = 40.0f;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/15/fragment15_14EC80/func_86902E6C.s")
D_8690B610 = 0.0f;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/15/fragment15_14EC80/func_8690325C.s")
func_8000E88C(&D_8690B618, D_87906054->unk_60.at.x, D_87906054->unk_60.at.y, D_87906054->unk_60.at.z);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/15/fragment15_14EC80/func_8690351C.s")
void func_869024B4(void) {
f32 temp_fv1;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/15/fragment15_14EC80/func_869035F4.s")
if (gPlayer2Controller->stickMag != 0.0f) {
if (gPlayer2Controller->stickY >= 0.0f) {
D_8690A708 += gPlayer2Controller->stickMag / 400.0f;
} else {
D_8690A708 -= gPlayer2Controller->stickMag / 400.0f;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/15/fragment15_14EC80/func_86903888.s")
temp_fv1 = 10.0f - D_8690B2F8.unk_00;
if (D_8690A708 < temp_fv1) {
D_8690A708 = temp_fv1;
}
if (D_8690A708 > 60.0f) {
D_8690A708 = 60.0f;
}
}
HAL_Printf(0x14, 0x14, "OFFSET %6.2f", D_8690A708);
}
void func_869025BC(void) {
D_8690B600 = 0;
D_8690B602 = 0;
D_8690B604 = func_86902294(4.0f);
D_87906054->unk_60.at.x = 0.0f;
D_87906054->unk_60.at.z = 0.0f;
if (D_8690B2F8.unk_08 != 0) {
D_87906054->unk_60.at.y = D_8690B2F8.unk_08;
} else {
D_87906054->unk_60.at.y = D_8690B2F8.unk_04 + D_8690B2F8.unk_0C;
}
func_80010354(&D_87906054->unk_60.at, &D_87906054->unk_60.eye, D_8690B604, D_8690B600, D_8690B602);
if (D_87906054->unk_60.eye.y < 12.0f) {
D_87906054->unk_60.eye.y = 12.5f;
func_800102A4(&D_87906054->unk_60.at, &D_87906054->unk_60.eye, &D_8690B604, &D_8690B600, &D_8690B602);
}
D_87906054->unk_24.near = 20.0f;
D_87906054->unk_24.far = 10000.0f;
D_87906054->unk_24.fovy = 40.0f;
D_8690A710->unk_008 = 40.0f;
D_8690B610 = 0.0f;
func_8000E88C(&D_8690B618, D_87906054->unk_60.at.x, D_87906054->unk_60.at.y, D_87906054->unk_60.at.z);
}
s32 func_8690274C(void) {
if (D_8690B390.buttonPressed & 0x10) {
if (D_8690A710->unk_008 == 25.0f) {
D_8690A710->unk_008 = 40.0f;
} else {
D_8690A710->unk_008 = 25.0f;
}
}
D_87906054->unk_24.fovy = func_800104AC(D_87906054->unk_24.fovy, D_8690A710->unk_008, 1.5f, 1.5f);
if (D_87906054->unk_24.fovy == D_8690A710->unk_008) {
return 0;
}
return 1;
}
void func_86902814(Vec3f* arg0, MtxF* arg1) {
f32 x = (arg1->mf[0][0] * arg0->x) + (arg1->mf[0][1] * arg0->y) + (arg1->mf[0][2] * arg0->z);
f32 y = (arg1->mf[1][0] * arg0->x) + (arg1->mf[1][1] * arg0->y) + (arg1->mf[1][2] * arg0->z);
f32 z = (arg1->mf[2][0] * arg0->x) + (arg1->mf[2][1] * arg0->y) + (arg1->mf[2][2] * arg0->z);
arg0->x = x;
arg0->y = y;
arg0->z = z;
}
void func_86902890(s16 arg0) {
MtxF sp70;
Vec3s sp68;
Vec3f sp5C;
Vec3f sp50;
UNUSED s32 pad[3];
Vec3f sp38;
UNUSED s32 pad2;
func_8000E88C(&sp38, 0, 0.0f, 0.0f);
func_800102A4(&sp38, &D_87906054->unk_60.eye, &D_8690B60C, &D_8690B608, &D_8690B60A);
func_8000E88C(&sp50, D_87906054->unk_60.at.x, 0.0f, D_87906054->unk_60.at.z);
func_8000EB70(&sp68, 0, D_8690B60A + arg0, 0);
func_8000E88C(&sp5C, D_8690A710->unk_004 * 4.0f, 0.0f, 0.0f);
func_8000F3FC(&sp70, &D_87906054->unk_60.at, &sp68);
func_86902814(&sp5C, &sp70);
sp50.x += sp5C.x;
sp50.z += sp5C.z;
D_87906054->unk_60.at.x = sp50.x;
D_87906054->unk_60.at.z = sp50.z;
func_800102A4(&sp38, &D_87906054->unk_60.at, &D_8690B60C, &D_8690B608, &D_8690B60A);
D_8690B60C = func_869022D8(sp38, D_87906054->unk_60.at);
if ((func_86902294(1.9f) - 1.0f) <= D_8690B60C) {
func_80010354(&sp38, &sp50, func_86902294(1.9f) - 1.0f, 0, D_8690B60A);
D_87906054->unk_60.at.x = sp50.x;
D_87906054->unk_60.at.z = sp50.z;
}
func_800102A4(&D_87906054->unk_60.at, &D_87906054->unk_60.eye, &D_8690B604, &D_8690B600, &D_8690B602);
}
void func_86902AE8(void) {
if (((D_8690B390.buttonDown & 8) | (D_8690B390.buttonDown & 4) | (D_8690B390.buttonDown & 2) |
(D_8690B390.buttonDown & 1)) != 0) {
D_8690A710->unk_004 = func_800104AC(D_8690A710->unk_004, 1.0f, 0.2f, 0.2f);
} else {
D_8690A710->unk_004 = func_800104AC(D_8690A710->unk_004, 0.0f, 0.2f, 0.2f);
}
if ((D_8690B390.buttonDown & 8) && (D_87906054->unk_60.at.y < 300.0f)) {
D_87906054->unk_60.at.y += 4.0f * D_8690A710->unk_004;
func_800102A4(&D_87906054->unk_60.at, &D_87906054->unk_60.eye, &D_8690B604, &D_8690B600, &D_8690B602);
if (D_8690B600 < -0x38E3) {
D_87906054->unk_60.at.y -= 4.0f * D_8690A710->unk_004;
}
func_800102A4(&D_87906054->unk_60.at, &D_87906054->unk_60.eye, &D_8690B604, &D_8690B600, &D_8690B602);
} else if ((D_8690B390.buttonDown & 4) && (D_87906054->unk_60.at.y > 5.0f)) {
D_87906054->unk_60.at.y -= 4.0f * D_8690A710->unk_004;
func_800102A4(&D_87906054->unk_60.at, &D_87906054->unk_60.eye, &D_8690B604, &D_8690B600, &D_8690B602);
if (D_8690B600 >= 0x38E4) {
D_87906054->unk_60.at.y += 4.0f * D_8690A710->unk_004;
}
func_800102A4(&D_87906054->unk_60.at, &D_87906054->unk_60.eye, &D_8690B604, &D_8690B600, &D_8690B602);
}
if (D_87906054->unk_60.at.y > 200.0f) {
D_87906054->unk_60.at.y = 200.0f;
func_800102A4(&D_87906054->unk_60.at, &D_87906054->unk_60.eye, &D_8690B604, &D_8690B600, &D_8690B602);
}
if (D_87906054->unk_60.at.y < 5.0f) {
D_87906054->unk_60.at.y = 5.0f;
func_800102A4(&D_87906054->unk_60.at, &D_87906054->unk_60.eye, &D_8690B604, &D_8690B600, &D_8690B602);
}
if (D_8690B390.buttonDown & 1) {
func_86902890(0);
} else if (D_8690B390.buttonDown & 2) {
func_86902890(-0x8000);
}
}
void func_86902E6C(Vec3f* arg0, Vec3f* arg1, Vec3f arg2, f32 arg3, s32 arg4) {
Vec3f sp94;
Vec3f sp88;
Vec3f sp7C;
Vec3f sp70;
f32 sp6C;
f32 sp68;
f32 tmp;
f32 sp3C;
f32 sp38;
f32 sp34;
f32 sp54;
sp70 = D_86908C20;
if (arg0->x == arg1->x) {
sp7C.x = arg0->x;
if (arg0->z < 0.0) {
sp7C.z = -arg3;
} else {
sp7C.z = arg3;
}
} else {
sp6C = (arg1->z - arg0->z) / (arg1->x - arg0->x);
sp68 = arg1->z - (arg1->x * sp6C);
sp54 = (((SQ(arg2.x) + SQ(sp68)) - ((2 * arg2.z) * sp68)) + SQ(arg2.z)) - SQ(arg3);
sp38 = SQ(sp6C) + 1.0f;
sp3C = (((2 * sp6C) * sp68) - (2 * arg2.x)) - ((2 * arg2.z) * sp6C);
if (SQ(sp3C) < ((4 * sp38) * sp54)) {
func_8000E88C(arg1, arg0->x, arg0->y, arg0->z);
return;
}
sp34 = SQ(sp3C) - ((4 * sp38) * sp54);
sp94.x = (-sp3C - sqrtf(sp34)) / (2 * sp38);
sp94.y = 0.0f;
sp94.z = (sp6C * sp94.x) + sp68;
sp88.x = (sqrtf(sp34) + -sp3C) / (2 * sp38);
sp88.y = 0.0f;
sp88.z = (sp6C * sp88.x) + sp68;
if (func_869022D8(*arg0, sp94) > func_869022D8(*arg0, sp88)) {
sp7C.x = sp88.x;
sp7C.z = sp88.z;
} else {
sp7C.x = sp94.x;
sp7C.z = sp94.z;
}
}
sp6C = arg0->y - arg1->y;
if (sp6C == 0.0f) {
sp7C.y = arg1->y;
} else {
if (arg1->x == arg0->x) {
tmp = (sp7C.z - arg0->z) / (arg1->z - arg0->z);
} else {
tmp = (sp7C.x - arg0->x) / (arg1->x - arg0->x);
}
if (arg4 == 1) {
sp7C.y = ((arg1->y - arg0->y) * tmp) + arg0->y;
} else {
sp7C.y = ((arg0->y - arg1->y) * tmp) + arg1->y;
}
}
func_8000E88C(arg0, arg1->x, arg1->y, arg1->z);
func_8000E88C(arg1, sp7C.x, sp7C.y, sp7C.z);
func_800102A4(&D_87906054->unk_60.at, arg1, &D_8690B604, &D_8690B600, &D_8690B602);
}
void func_8690325C(Vec3f* arg0, Vec3f* arg1, Vec3f arg2, f32 arg3) {
Vec3f sp84;
Vec3f sp78;
Vec3f tmp;
Vec3f sp60;
f32 sp5C;
f32 sp58;
f32 sp40;
f32 sp3C;
f32 sp38;
f32 sp2C;
f32 sp44;
sp60 = D_86908C2C;
sp2C = arg1->x;
tmp.z = arg3;
if (D_87906054->unk_60.at.x == sp2C) {
tmp.x = D_87906054->unk_60.at.x;
} else {
sp5C = (arg1->z - D_87906054->unk_60.at.z) / (arg1->x - D_87906054->unk_60.at.x);
sp58 = arg1->z - (arg1->x * sp5C);
sp44 = (((SQ(arg2.x) + SQ(sp58)) - ((2 * arg2.z) * sp58)) + SQ(arg2.z)) - SQ(arg3);
sp3C = SQ(sp5C) + 1.0f;
sp38 = ((2 * sp5C * sp58) - (2 * arg2.x)) - ((2 * arg2.z) * sp5C);
sp2C = SQ(sp38) - ((4 * sp3C) * sp44);
sp84.x = (-sp38 - sqrtf(sp2C)) / (2 * sp3C);
sp84.y = 0.0f;
sp84.z = (sp5C * sp84.x) + sp58;
sp78.x = (sqrtf(sp2C) + -sp38) / (2 * sp3C);
sp78.y = 0.0f;
sp78.z = (sp5C * sp78.x) + sp58;
if (func_869022D8(*arg1, sp84) > func_869022D8(*arg1, sp78)) {
tmp.x = sp78.x;
tmp.z = sp78.z;
} else {
tmp.x = sp84.x;
tmp.z = sp84.z;
}
}
tmp.y = arg0->y;
func_8000E88C(arg1, tmp.x, tmp.y, tmp.z);
func_800102A4(&D_87906054->unk_60.at, arg1, &D_8690B604, &D_8690B600, &D_8690B602);
}
void func_8690351C(Vec3f* arg0, Vec3f* arg1, f32 arg2, f32 arg3, s32 arg4) {
f32 temp_fa0;
arg2 += arg3;
if (arg4 == 1) {
temp_fa0 = (arg2 - arg0->y) / (arg1->y - arg0->y);
if (arg1->x == arg0->x) {
arg1->x = arg0->x;
} else {
arg1->x = ((arg1->x - arg0->x) * temp_fa0) + arg0->x;
}
if (arg1->z == arg0->z) {
arg1->z = arg0->z;
} else {
arg1->z = ((arg1->z - arg0->z) * temp_fa0) + arg0->z;
}
}
arg1->y = arg2;
func_800102A4(&D_87906054->unk_60.at, arg1, &D_8690B604, &D_8690B600, &D_8690B602);
}
void func_869035F4(Vec3f* arg0, Vec3f* arg1) {
UNUSED s32 pad[2];
Vec3f sp3C = D_86908C38;
f32 sp38;
if (arg1->y < 12.0f) {
func_8690351C(arg0, arg1, 12.0f, 0.05f, 0);
}
if (arg1->y > 350.0f) {
func_8690351C(arg0, arg1, 350.0f, 0.0f, 0);
}
sp38 = func_86902294(1.9f);
if (func_869022D8(sp3C, *arg1) < sp38) {
func_86902E6C(arg0, arg1, sp3C, func_86902294(1.9f) + 0.05f, 1);
}
if (func_869022D8(sp3C, *arg1) > 400.0f) {
func_86902E6C(arg0, arg1, sp3C, 399.0f, 1);
}
if (func_869022D8(D_87906054->unk_60.at, *arg1) < 30.0f) {
func_86902E6C(arg0, arg1, D_87906054->unk_60.at, 30.1f, 1);
}
}
void func_86903888(Vec3f* arg0, Vec3f* arg1, s32 arg2) {
UNUSED s32 pad[2];
Vec3f sp3C = D_86908C44;
f32 sp38;
if (arg2 == 0) {
if (arg1->y < 12.0f) {
func_8690351C(arg0, arg1, 12.0f, 0.05f, 1);
}
if (arg1->y > 350.0f) {
func_8690351C(arg0, arg1, 350.0f, 0.0f, 1);
}
} else {
if (arg1->y < 12.0f) {
func_8690351C(arg0, arg1, 12.0f, 0.05f, 0);
}
if (arg1->y > 350.0f) {
func_8690351C(arg0, arg1, 350.0f, 0.0f, 0);
}
}
if (arg2 == 0) {
sp38 = func_86902294(1.9f);
if (func_869022D8(sp3C, *arg1) < sp38) {
func_86902E6C(arg0, arg1, sp3C, func_86902294(1.9f) + 0.05f, 0);
}
if (func_869022D8(sp3C, *arg1) > 400.0f) {
func_86902E6C(arg0, arg1, sp3C, 399.0f, 0);
}
if (func_869022D8(D_87906054->unk_60.at, *arg1) < 30.0f) {
func_86902E6C(arg0, arg1, D_87906054->unk_60.at, 30.1f, 0);
}
} else {
sp38 = func_86902294(1.9f);
if (func_869022D8(sp3C, *arg1) < sp38) {
func_8690325C(arg0, arg1, sp3C, func_86902294(1.9f) + 0.05f);
}
if (func_869022D8(sp3C, *arg1) > 400.0f) {
func_8690325C(arg0, arg1, sp3C, 399.0f);
}
if (func_869022D8(D_87906054->unk_60.at, *arg1) < 30.0f) {
func_8690325C(arg0, arg1, D_87906054->unk_60.at, 30.1f);
}
}
}
void func_86903D80(void) {
Vec3f sp44;
Vec3f sp38;
UNUSED s32 pad;
f32 mag;
if (D_8690B390.stickMag != 0.0f) {
func_8000E88C(&sp44, D_87906054->unk_60.eye.x, D_87906054->unk_60.eye.y, D_87906054->unk_60.eye.z);
if (D_8690B390.stickY >= 0.0f) {
mag = -(D_8690B390.stickMag / 6.0f);
func_80010354(&D_87906054->unk_60.eye, &sp38, mag, D_8690B600, D_8690B602);
} else {
mag = D_8690B390.stickMag / 6.0f;
func_80010354(&D_87906054->unk_60.eye, &sp38, mag, D_8690B600, D_8690B602);
}
D_8690B604 = func_86902230(D_87906054->unk_60.at, sp38);
func_869035F4(&sp44, &sp38);
func_8000E88C(&D_87906054->unk_60.eye, sp38.x, sp38.y, sp38.z);
}
if (D_8690B390.buttonDown & 0x200) {
D_8690B602 -= 0x100;
}
if (D_8690B390.buttonDown & 0x100) {
D_8690B602 += 0x100;
}
if (D_8690B390.buttonDown & 0x300) {
func_8000E88C(&sp44, D_87906054->unk_60.eye.x, D_87906054->unk_60.eye.y, D_87906054->unk_60.eye.z);
func_80010354(&D_87906054->unk_60.at, &sp38, D_8690B604, D_8690B600, D_8690B602);
func_86903888(&sp44, &sp38, 1);
func_8000E88C(&D_87906054->unk_60.eye, sp38.x, sp38.y, sp38.z);
}
if (D_8690B390.buttonDown & 0x800) {
D_8690B600 += 0x100;
}
if (D_8690B390.buttonDown & 0x400) {
D_8690B600 -= 0x100;
}
if (D_8690B390.buttonDown & 0xC00) {
func_8000E88C(&sp44, D_87906054->unk_60.eye.x, D_87906054->unk_60.eye.y, D_87906054->unk_60.eye.z);
func_80010354(&D_87906054->unk_60.at, &sp38, D_8690B604, D_8690B600, D_8690B602);
func_86903888(&sp44, &sp38, 0);
func_8000E88C(&D_87906054->unk_60.eye, sp38.x, sp38.y, sp38.z);
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/15/fragment15_14EC80/func_86903D80.s")

View File

@ -1,842 +1,43 @@
#include "fragment15.h"
#include "src/1CF30.h"
#include "src/20470.h"
#include "src/2E110.h"
#include "src/6A40.h"
#include "src/6BC0.h"
#include "src/F420.h"
#include "global.h"
const char D_8690A520[] = "FREE BATTLE";
const char D_8690A52C[] = "POK\xE9 CUP";
const char D_8690A538[] = "POK\xE9 CUP2";
const char D_8690A544[] = "PETIT CUP";
const char D_8690A550[] = "PIKA CUP";
const char D_8690A55C[] = "PRIME CUP";
const char D_8690A568[] = "PEWTER GYM";
const char D_8690A574[] = "CERULEAN GYM";
const char D_8690A584[] = "VERMILION GYM";
const char D_8690A594[] = "CELADON GYM";
const char D_8690A5A0[] = "FUCHSIA GYM";
const char D_8690A5AC[] = "SAFFRON GYM";
const char D_8690A5B8[] = "CINNABAR GYM";
const char D_8690A5C8[] = "VIRIDIAN GYM";
const char D_8690A5D8[] = "VS ELITE FOUR";
const char D_8690A5E8[] = "VS MEWTWO";
extern u8 D_50002A0[];
extern u8 D_50003F0[];
extern u8 D_5000BA0[];
extern u8 D_5000C90[];
extern u8 D_50011D0[];
extern u8 D_5001680[];
extern u8 D_50017E8[];
extern u8 D_5001950[];
extern u8 D_5003AE8[];
void func_86904070(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) {
unk_D_80068BB0* temp_s1 = func_8000648C();
Vtx* temp_s2 = func_80005F5C(sizeof(Vtx) * 4);
Mtx* sp84 = func_80005F5C(sizeof(Mtx) * 1);
Vp* sp80 = func_80005F5C(sizeof(Vp) * 1);
func_8001E6E8(sp80, temp_s1->width, temp_s1->height);
gSPViewport(gDisplayListHead++, (u32)sp80 & 0x1FFFFFFF);
guOrtho(sp84, 0.5f, temp_s1->width - 0.5f, temp_s1->height - 0.5f, 0.5f, -2.0f, 2.0f, 1.0f);
func_8001E680(&temp_s2[0], arg0, arg1, -1, 0, 0, 0, 0, 0, arg4);
func_8001E680(&temp_s2[1], arg0 + arg2, arg1, -1, 0, 0, 0, 0, 0, arg4);
func_8001E680(&temp_s2[2], arg0, arg1 + arg3, -1, 0, 0, 0, 0, 0, arg4);
func_8001E680(&temp_s2[3], arg0 + arg2, arg1 + arg3, -1, 0, 0, 0, 0, 0, arg4);
gDPPipeSync(gDisplayListHead++);
gDPSetCycleType(gDisplayListHead++, G_CYC_1CYCLE);
gSPClearGeometryMode(gDisplayListHead++, G_ZBUFFER | G_FOG | G_LIGHTING);
gSPSetGeometryMode(gDisplayListHead++, G_SHADE);
gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE);
gDPSetRenderMode(gDisplayListHead++, G_RM_XLU_SURF, G_RM_XLU_SURF2);
gSPPerspNormalize(gDisplayListHead++, 0xFFFF);
gSPMatrix(gDisplayListHead++, (u32)sp84 & 0x1FFFFFFF, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
gSPMatrix(gDisplayListHead++, (u32)&D_8006F010 & 0x1FFFFFFF, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPVertex(gDisplayListHead++, (u32)temp_s2 & 0x1FFFFFFF, 4, 0);
gSP2Triangles(gDisplayListHead++, 0, 2, 3, 0, 0, 3, 1, 0);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/15/fragment15_150AC0/func_86904070.s")
void func_869043F4(void) {
}
void func_869043FC(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u8 arg4, u8 arg5, u8 arg6, u8 arg7) {
s16 var_s2;
s16 var_s3;
s16 sp4C;
s16 sp48;
if (arg2 >= 0x10) {
var_s3 = 8;
} else {
var_s3 = arg2 / 2;
}
if (arg3 >= 0x10) {
var_s2 = 8;
} else {
var_s2 = arg3 / 2;
}
sp4C = arg2 - (var_s3 * 2);
sp48 = arg3 - (var_s2 * 2);
gSPDisplayList(gDisplayListHead++, D_8006F518);
gDPSetEnvColor(gDisplayListHead++, arg4, arg5, arg6, arg7);
gDPLoadTextureBlock_4b(gDisplayListHead++, D_2028A60, G_IM_FMT_I, 16, 8, 0, G_TX_NOMIRROR | G_TX_WRAP,
G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD);
func_8001C330(arg0, arg1, var_s3, var_s2, 0, 0, 0x2000 / var_s3, 0x2000 / var_s2, 0);
gDPLoadTextureBlock_4b(gDisplayListHead++, D_2028AA0, G_IM_FMT_I, 16, 8, 0, G_TX_NOMIRROR | G_TX_WRAP,
G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD);
func_8001C330((arg0 + arg2) - var_s3, arg1, var_s3, var_s2, 0, 0, 0x2000 / var_s3, 0x2000 / var_s2, 0);
gDPLoadTextureBlock_4b(gDisplayListHead++, D_20289E0, G_IM_FMT_I, 16, 8, 0, G_TX_NOMIRROR | G_TX_WRAP,
G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD);
func_8001C330(arg0, (arg1 + arg3) - var_s2, var_s3, var_s2, 0, 0, 0x2000 / var_s3, 0x2000 / var_s2, 0);
gDPLoadTextureBlock_4b(gDisplayListHead++, D_2028A20, G_IM_FMT_I, 16, 8, 0, G_TX_NOMIRROR | G_TX_WRAP,
G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD);
func_8001C330((arg0 + arg2) - var_s3, (arg1 + arg3) - var_s2, var_s3, var_s2, 0, 0, 0x2000 / var_s3,
0x2000 / var_s2, 0);
gSPDisplayList(gDisplayListHead++, D_8006F498);
if ((sp4C > 0) && (sp48 > 0)) {
func_8001C604(arg0 + var_s3, arg1, sp4C, var_s2, arg4, arg5, arg6, arg7);
func_8001C604(arg0, (arg1 + var_s3), arg2, sp48, arg4, arg5, arg6, arg7);
func_8001C604(arg0 + var_s3, (arg1 + var_s3) + sp48, sp4C, var_s2, arg4, arg5, arg6, arg7);
} else if (sp4C > 0) {
func_8001C604(arg0 + var_s3, arg1, sp4C, arg3, arg4, arg5, arg6, arg7);
} else if (sp48 > 0) {
func_8001C604(arg0, arg1 + var_s2, arg2, sp48, arg4, arg5, arg6, arg7);
}
gSPDisplayList(gDisplayListHead++, D_8006F630);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/15/fragment15_150AC0/func_869043FC.s")
void func_86904BFC(void) {
}
void func_86904C04(s16 arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5, s16 arg6, s16 arg7) {
unk_D_800A7440 sp30;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/15/fragment15_150AC0/func_86904C04.s")
func_80005FC0(&sp30, arg0, arg1, (arg0 + arg2) - 1, (arg1 + arg3) - 1);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/15/fragment15_150AC0/func_86904D98.s")
if (func_80006030(&sp30) != 0) {
if (arg6 != 0) {
arg4 += ((sp30.x1 - arg0) * arg6) >> 5;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/15/fragment15_150AC0/func_86904F2C.s")
if (arg7 != 0) {
arg5 += ((sp30.y2 - arg1) * arg7) >> 5;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/15/fragment15_150AC0/func_869050C8.s")
sp30.y1 += 1;
sp30.x2 += 1;
gSPTextureRectangle(gDisplayListHead++, sp30.x1 << 2, sp30.y2 << 2, sp30.y1 << 2, sp30.x2 << 2, G_TX_RENDERTILE,
arg4, arg5, arg6, arg7);
}
}
void func_86904D98(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u8* arg4, s16 arg5) {
gDPLoadTextureTile(gDisplayListHead++, arg4, G_IM_FMT_IA, G_IM_SIZ_8b, arg2, 0, 0, 0, arg2 - 1, arg3 - 1, 0,
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 3, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
func_86904C04(arg0, arg1, arg2, arg3, D_8690B360.unk_02 << 5, 0, 0x400, 0x400);
}
void func_86904F2C(u8* arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4) {
gDPPipeSync(gDisplayListHead++);
gDPSetCycleType(gDisplayListHead++, G_CYC_2CYCLE);
gSPClearGeometryMode(gDisplayListHead++, G_ZBUFFER | G_FOG | G_LIGHTING);
gDPSetTexturePersp(gDisplayListHead++, G_TP_NONE);
gDPSetRenderMode(gDisplayListHead++, G_RM_XLU_SURF, G_RM_XLU_SURF2);
gDPSetCombineLERP(gDisplayListHead++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0,
COMBINED, 0, 0, 0, COMBINED);
gDPSetEnvColor(gDisplayListHead++, 0, 0, 0, 255);
gDPSetPrimColor(gDisplayListHead++, 0, 0, 95, 55, 0, 255);
gDPSetTextureFilter(gDisplayListHead++, G_TF_BILERP);
func_86904D98(arg1, arg2, arg3, arg4, arg0, arg3);
gSPDisplayList(gDisplayListHead++, D_8006F630);
}
void func_869050C8(u8* arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4) {
Vec3s spD8;
Vec3f spCC;
Vec3f spC0;
UNUSED s32 pad;
unk_D_80068BB0* spB8;
Vtx* spB4;
MtxF* spB0;
Mtx* spAC;
MtxF* spA8;
Vp* spA4;
spB8 = func_8000648C();
spB4 = func_80005F5C(sizeof(Vtx) * 4);
spB0 = func_80005F5C(sizeof(MtxF) * 1);
spAC = func_80005F5C(sizeof(Mtx) * 1);
spA8 = func_80005F5C(sizeof(MtxF) * 1);
spA4 = func_80005F5C(sizeof(Vp) * 1);
func_8000EB70(&spD8, 0, 0, D_8690B360.unk_06);
func_8000E88C(&spCC, (f32)arg1 + (arg3 / 2), (f32)arg2 + arg4, 0.0f);
func_8000E88C(&spC0, 1.0f, 1.0f, 1.0f);
func_8000F2C4(spA8, &spCC, &spD8);
func_8000FDE4(spA8, spA8, &spC0);
func_80010090(spB0, spA8);
func_8001E6E8(spA4, spB8->width, spB8->height);
gSPViewport(gDisplayListHead++, (u32)spA4 & 0x1FFFFFFF);
guOrtho(spAC, 0.5f, spB8->width - 0.5f, spB8->height - 0.5f, 0.5f, -2.0f, 2.0f, 1.0f);
func_8001E680(&spB4[0], -(arg3 / 2), -arg4, -1, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF);
func_8001E680(&spB4[1], (arg3 / 2), -arg4, -1, arg3 << 5, 0, 0xFF, 0xFF, 0xFF, 0xFF);
func_8001E680(&spB4[2], -(arg3 / 2), 0, -1, 0, arg4 << 5, 0xFF, 0xFF, 0xFF, 0xFF);
func_8001E680(&spB4[3], (arg3 / 2), 0, -1, arg3 << 5, arg4 << 5, 0xFF, 0xFF, 0xFF, 0xFF);
gSPDisplayList(gDisplayListHead++, D_8006F518);
gSPClearGeometryMode(gDisplayListHead++, G_ZBUFFER | G_LIGHTING);
if (D_8690B360.unk_06 == 0) {
gDPSetTextureFilter(gDisplayListHead++, G_TF_POINT);
gDPSetRenderMode(gDisplayListHead++, G_RM_TEX_EDGE, G_RM_TEX_EDGE2);
} else {
gDPSetTextureFilter(gDisplayListHead++, G_TF_BILERP);
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_TEX_EDGE, G_RM_AA_TEX_EDGE2);
}
gDPSetTexturePersp(gDisplayListHead++, G_TP_PERSP);
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
gDPLoadTextureTile(gDisplayListHead++, arg0, G_IM_FMT_RGBA, G_IM_SIZ_16b, arg3, 0, 0, 0, arg3 - 1, arg4 - 1, 0,
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD,
G_TX_NOLOD);
gSPPerspNormalize(gDisplayListHead++, 0xFFFF);
gSPMatrix(gDisplayListHead++, (u32)spAC & 0x1FFFFFFF, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
gSPMatrix(gDisplayListHead++, (u32)spB0 & 0x1FFFFFFF, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPVertex(gDisplayListHead++, (u32)spB4 & 0x1FFFFFFF, 4, 0);
gSP2Triangles(gDisplayListHead++, 0, 2, 3, 0, 0, 3, 1, 0);
gSPDisplayList(gDisplayListHead++, D_8006F630);
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF);
}
#ifdef NON_MATCHING
void func_86905734(u8* arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5, u8 arg6) {
f32 a1;
f32 a2;
s16 spF8[4];
s16 spF0[4];
unk_D_80068BB0* spEC;
Vtx* spE8;
Mtx* spE4;
Vp* spE0;
f32 sp64;
f32 sp60;
f32 sp5C;
s32 tmp1;
spEC = func_8000648C();
spE8 = func_80005F5C(sizeof(Vtx) * 4);
spE4 = func_80005F5C(sizeof(Mtx) * 1);
spE0 = func_80005F5C(sizeof(Vp) * 1);
sp64 = arg1;
sp5C = arg2;
spF8[0] = ((-(arg3 / 2) * COSS(arg5)) - (SINS(arg5) * -arg4)) + sp64;
spF0[0] = (COSS(arg5) * -arg4) + (-(arg3 / 2) * SINS(arg5)) + sp5C;
spF8[1] = (((arg3 / 2) * COSS(arg5)) - (SINS(arg5) * -arg4)) + sp64;
spF0[1] = (COSS(arg5) * -arg4) + ((arg3 / 2) * SINS(arg5)) + sp5C;
spF8[2] = (-(arg3 / 2) * COSS(arg5)) + sp64;
spF0[2] = (-(arg3 / 2) * SINS(arg5)) + sp5C;
spF8[3] = ((arg3 / 2) * COSS(arg5)) + sp64;
spF0[3] = ((arg3 / 2) * SINS(arg5)) + sp5C;
func_8001E6E8(spE0, spEC->width, spEC->height);
gSPViewport(gDisplayListHead++, (u32)spE0 & 0x1FFFFFFF);
guOrtho(spE4, 0.5f, spEC->width - 0.5f, spEC->height - 0.5f, 0.5f, -2.0f, 2.0f, 1.0f);
func_8001E680(&spE8[0], spF8[0], spF0[0], -1, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF);
func_8001E680(&spE8[1], spF8[1], spF0[1], -1, arg3 << 5, 0, 0xFF, 0xFF, 0xFF, 0xFF);
func_8001E680(&spE8[2], spF8[2], spF0[2], -1, 0, arg4 << 5, 0xFF, 0xFF, 0xFF, 0xFF);
func_8001E680(&spE8[3], spF8[3], spF0[3], -1, arg3 << 5, arg4 << 5, 0xFF, 0xFF, 0xFF, 0xFF);
if (arg6 == 0) {
gDPLoadTextureBlock(gDisplayListHead++, arg0, G_IM_FMT_IA, G_IM_SIZ_8b, arg3, arg4, 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);
}
gSPDisplayList(gDisplayListHead++, D_8006F518);
gDPPipeSync(gDisplayListHead++);
gDPSetCycleType(gDisplayListHead++, G_CYC_2CYCLE);
gSPClearGeometryMode(gDisplayListHead++, G_ZBUFFER | G_FOG | G_LIGHTING);
gDPSetTexturePersp(gDisplayListHead++, G_TP_NONE);
gDPSetRenderMode(gDisplayListHead++, G_RM_XLU_SURF, G_RM_XLU_SURF2);
gDPSetCombineLERP(gDisplayListHead++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0,
COMBINED, 0, 0, 0, COMBINED);
gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, 255);
gDPSetPrimColor(gDisplayListHead++, 0, 0, 255, 255, 255, 255);
gDPSetTextureFilter(gDisplayListHead++, G_TF_BILERP);
gDPSetTexturePersp(gDisplayListHead++, G_TP_PERSP);
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
gSPPerspNormalize(gDisplayListHead++, 0xFFFF);
gSPMatrix(gDisplayListHead++, (u32)spE4 & 0x1FFFFFFF, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
gSPMatrix(gDisplayListHead++, (u32)&D_8006F010 & 0x1FFFFFFF, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPVertex(gDisplayListHead++, (u32)spE8 & 0x1FFFFFFF, 4, 0);
gSP2Triangles(gDisplayListHead++, 0, 2, 3, 0, 0, 3, 1, 0);
gSPDisplayList(gDisplayListHead++, D_8006F630);
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF);
}
#else
void func_86905734(u8* arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5, u8 arg6);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/15/fragment15_150AC0/func_86905734.s")
#endif
void func_86905F24(u8* arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5, u8 arg6) {
f32 a1;
f32 a2;
s16 spE0[4];
s16 spD8[4];
unk_D_80068BB0* spD4;
Vtx* spD0;
Mtx* spCC;
Vp* spC8;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/15/fragment15_150AC0/func_86905F24.s")
spD4 = func_8000648C();
spD0 = func_80005F5C(sizeof(Vtx) * 4);
spCC = func_80005F5C(sizeof(Mtx) * 1);
spC8 = func_80005F5C(sizeof(Vp) * 1);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/15/fragment15_150AC0/func_869066C4.s")
a1 = arg1;
a2 = arg2;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/15/fragment15_150AC0/func_86906E70.s")
spE0[0] = (COSS(arg5) * -12.0f) + a1;
spD8[0] = (SINS(arg5) * -12.0f) + a2;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/15/fragment15_150AC0/func_869073D8.s")
spE0[1] = (COSS(arg5) * 12.0f) + a1;
spD8[1] = (SINS(arg5) * 12.0f) + a2;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/15/fragment15_150AC0/func_86907858.s")
spE0[2] = ((COSS(arg5) * -12.0f) - (SINS(arg5) * 56.0f)) + a1;
spD8[2] = (((SINS(arg5) * -12.0f) + COSS(arg5) * 56.0f)) + a2;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/15/fragment15_150AC0/func_86907B78.s")
spE0[3] = ((COSS(arg5) * 12.0f) - (SINS(arg5) * 56.0f)) + a1;
spD8[3] = (((SINS(arg5) * 12.0f) + COSS(arg5) * 56.0f)) + a2;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/15/fragment15_150AC0/func_86907D38.s")
func_8001E6E8(spC8, spD4->width, spD4->height);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/15/fragment15_150AC0/func_86907D94.s")
gSPViewport(gDisplayListHead++, (u32)spC8 & 0x1FFFFFFF);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/15/fragment15_150AC0/func_86908418.s")
guOrtho(spCC, 0.5f, spD4->width - 0.5f, spD4->height - 0.5f, 0.5f, -2.0f, 2.0f, 1.0f);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/15/fragment15_150AC0/func_86908668.s")
func_8001E680(&spD0[0], spE0[0], spD8[0], -1, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF);
func_8001E680(&spD0[1], spE0[1], spD8[1], -1, arg3 << 5, 0, 0xFF, 0xFF, 0xFF, 0xFF);
func_8001E680(&spD0[2], spE0[2], spD8[2], -1, 0, arg4 << 5, 0xFF, 0xFF, 0xFF, 0xFF);
func_8001E680(&spD0[3], spE0[3], spD8[3], -1, arg3 << 5, arg4 << 5, 0xFF, 0xFF, 0xFF, 0xFF);
if (arg6 == 0) {
gDPLoadTextureBlock(gDisplayListHead++, arg0, G_IM_FMT_IA, G_IM_SIZ_8b, arg3, arg4, 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);
}
gSPDisplayList(gDisplayListHead++, D_8006F518);
gDPPipeSync(gDisplayListHead++);
gDPSetCycleType(gDisplayListHead++, G_CYC_2CYCLE);
gSPClearGeometryMode(gDisplayListHead++, G_ZBUFFER | G_FOG | G_LIGHTING);
gDPSetTexturePersp(gDisplayListHead++, G_TP_NONE);
gDPSetRenderMode(gDisplayListHead++, G_RM_XLU_SURF, G_RM_XLU_SURF2);
gDPSetCombineLERP(gDisplayListHead++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0,
COMBINED, 0, 0, 0, COMBINED);
gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, 255);
gDPSetPrimColor(gDisplayListHead++, 0, 0, 255, 255, 255, 255);
gDPSetTextureFilter(gDisplayListHead++, G_TF_BILERP);
gDPSetTexturePersp(gDisplayListHead++, G_TP_PERSP);
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
gSPPerspNormalize(gDisplayListHead++, 0xFFFF);
gSPMatrix(gDisplayListHead++, (u32)spCC & 0x1FFFFFFF, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
gSPMatrix(gDisplayListHead++, (u32)&D_8006F010 & 0x1FFFFFFF, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPVertex(gDisplayListHead++, (u32)spD0 & 0x1FFFFFFF, 4, 0);
gSP2Triangles(gDisplayListHead++, 0, 2, 3, 0, 0, 3, 1, 0);
gSPDisplayList(gDisplayListHead++, D_8006F630);
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF);
}
void func_869066C4(u8* arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5, u8 arg6) {
f32 temp_fv0;
f32 temp_fv1;
s16 spE0[4];
s16 spD8[4];
unk_D_80068BB0* spD4;
Vtx* spD0;
Mtx* spCC;
Vp* spC8;
spD4 = func_8000648C();
spD0 = func_80005F5C(sizeof(Vtx) * 4);
spCC = func_80005F5C(sizeof(Mtx) * 1);
spC8 = func_80005F5C(sizeof(Vp) * 1);
temp_fv0 = arg1;
temp_fv1 = arg2;
spE0[0] = (COSS(arg5 + 0xC000) * -12.0f) + temp_fv0;
spD8[0] = (SINS(arg5 + 0xC000) * -12.0f) + temp_fv1;
spE0[1] = (COSS(arg5 + 0xC000) * 12.0f) + temp_fv0;
spD8[1] = (SINS(arg5 + 0xC000) * 12.0f) + temp_fv1;
spE0[2] = ((COSS(arg5 + 0xC000) * -12.0f) - (SINS(arg5 + 0xC000) * 56.0f)) + temp_fv0;
spD8[2] = ((SINS(arg5 + 0xC000) * -12.0f) + (COSS(arg5 + 0xC000) * 56.0f)) + temp_fv1;
spE0[3] = ((COSS(arg5 + 0xC000) * 12.0f) - (SINS(arg5 + 0xC000) * 56.0f)) + temp_fv0;
spD8[3] = ((SINS(arg5 + 0xC000) * 12.0f) + (COSS(arg5 + 0xC000) * 56.0f)) + temp_fv1;
func_8001E6E8(spC8, spD4->width, spD4->height);
gSPViewport(gDisplayListHead++, (u32)spC8 & 0x1FFFFFFF);
guOrtho(spCC, 0.5f, spD4->width - 0.5f, spD4->height - 0.5f, 0.5f, -2.0f, 2.0f, 1.0f);
func_8001E680(&spD0[0], spE0[0], spD8[0], -1, arg3 << 5, 0, 0xFF, 0xFF, 0xFF, 0xFF);
func_8001E680(&spD0[1], spE0[1], spD8[1], -1, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF);
func_8001E680(&spD0[2], spE0[2], spD8[2], -1, arg3 << 5, arg4 << 5, 0xFF, 0xFF, 0xFF, 0xFF);
func_8001E680(&spD0[3], spE0[3], spD8[3], -1, 0, arg4 << 5, 0xFF, 0xFF, 0xFF, 0xFF);
if (arg6 == 0) {
gDPLoadTextureBlock(gDisplayListHead++, arg0, G_IM_FMT_IA, G_IM_SIZ_8b, arg3, arg4, 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);
}
gSPDisplayList(gDisplayListHead++, D_8006F518);
gDPPipeSync(gDisplayListHead++);
gDPSetCycleType(gDisplayListHead++, G_CYC_2CYCLE);
gSPClearGeometryMode(gDisplayListHead++, G_ZBUFFER | G_FOG | G_LIGHTING);
gDPSetTexturePersp(gDisplayListHead++, G_TP_NONE);
gDPSetRenderMode(gDisplayListHead++, G_RM_XLU_SURF, G_RM_XLU_SURF2);
gDPSetCombineLERP(gDisplayListHead++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0,
COMBINED, 0, 0, 0, COMBINED);
gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, 255);
gDPSetPrimColor(gDisplayListHead++, 0, 0, 255, 255, 255, 255);
gDPSetTextureFilter(gDisplayListHead++, G_TF_BILERP);
gDPSetTexturePersp(gDisplayListHead++, G_TP_PERSP);
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
gSPPerspNormalize(gDisplayListHead++, 0xFFFF);
gSPMatrix(gDisplayListHead++, (u32)spCC & 0x1FFFFFFF, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
gSPMatrix(gDisplayListHead++, (u32)&D_8006F010 & 0x1FFFFFFF, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPVertex(gDisplayListHead++, (u32)spD0 & 0x1FFFFFFF, 4, 0);
gSP2Triangles(gDisplayListHead++, 0, 2, 3, 0, 0, 3, 1, 0);
gSPDisplayList(gDisplayListHead++, D_8006F630);
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF);
}
void func_86906E70(u8* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, u8 arg5, u8 arg6, u8 arg7, u8 arg8, u8 arg9,
u8 argA, u8 argB, u8 argC) {
unk_D_80068BB0* temp_s1 = func_8000648C();
Vtx* temp_s2 = func_80005F5C(sizeof(Vtx) * 4);
Mtx* spAC = func_80005F5C(sizeof(Mtx) * 1);
Vp* spA8 = func_80005F5C(sizeof(Vp));
func_8001E6E8(spA8, temp_s1->width, temp_s1->height);
gSPViewport(gDisplayListHead++, (u32)spA8 & 0x1FFFFFFF);
guOrtho(spAC, 0.5f, temp_s1->width - 0.5f, temp_s1->height - 0.5f, 0.5f, -2.0f, 2.0f, 1.0f);
func_8001E680(&temp_s2[0], arg1, arg2, -1, argC << 5, 0, 0xFF, 0xFF, 0xFF, 0xFF);
func_8001E680(&temp_s2[1], arg1 + arg3, arg2, -1, argB << 5, 0, 0xFF, 0xFF, 0xFF, 0xFF);
func_8001E680(&temp_s2[2], arg1, arg2 + arg4, -1, argC << 5, arg6 << 5, 0xFF, 0xFF, 0xFF, 0xFF);
func_8001E680(&temp_s2[3], arg1 + arg3, arg2 + arg4, -1, argB << 5, arg6 << 5, 0xFF, 0xFF, 0xFF, 0xFF);
gSPDisplayList(gDisplayListHead++, D_8006F518);
gDPSetRenderMode(gDisplayListHead++, G_RM_XLU_SURF, G_RM_XLU_SURF2);
gDPSetTextureFilter(gDisplayListHead++, G_TF_POINT);
gDPSetTexturePersp(gDisplayListHead++, G_TP_PERSP);
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
gDPLoadTextureTile(gDisplayListHead++, arg0, G_IM_FMT_RGBA, G_IM_SIZ_16b, arg5, 0, arg7, arg8, arg9 - 1, argA - 1,
0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD,
G_TX_NOLOD);
gSPPerspNormalize(gDisplayListHead++, 0xFFFF);
gSPMatrix(gDisplayListHead++, (u32)spAC & 0x1FFFFFFF, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
gSPMatrix(gDisplayListHead++, (u32)&D_8006F010 & 0x1FFFFFFF, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPVertex(gDisplayListHead++, (u32)temp_s2 & 0x1FFFFFFF, 4, 0);
gSP2Triangles(gDisplayListHead++, 0, 2, 3, 0, 0, 3, 1, 0);
gSPDisplayList(gDisplayListHead++, D_8006F630);
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF);
}
void func_869073D8(char* arg0) {
Color_RGB8 sp4C;
Color_RGB8 sp48;
s32 sp44;
UNUSED s16 pad2;
s16 sp40;
if (D_8690A710->unk_014 != 0) {
sp44 = func_8001F5B0(0x10, 0, arg0);
if (D_8690A710->unk_014 == 1) {
func_86906E70(&D_5001950, 0x3C, 0xAE, 0x22, 0x2B, 0x64, 0x2B, 0, 0, 0x22, 0x2B, 0x21, 0);
func_86906E70(&D_5001950, 0x5E, 0xAE, 0x22, 0x2B, 0x64, 0x2B, 0x22, 0, 0x44, 0x2B, 0x43, 0x22);
func_86906E70(&D_5001950, 0x80, 0xAE, 0x20, 0x2B, 0x64, 0x2B, 0x44, 0, 0x64, 0x2B, 0x63, 0x44);
func_86906E70(&D_5001950, 0xE2, 0xAE, 0x22, 0x2B, 0x64, 0x2B, 0, 0, 0x22, 0x2B, 0, 0x21);
func_86906E70(&D_5001950, 0xC0, 0xAE, 0x22, 0x2B, 0x64, 0x2B, 0x22, 0, 0x44, 0x2B, 0x22, 0x43);
func_86906E70(&D_5001950, 0xA0, 0xAE, 0x20, 0x2B, 0x64, 0x2B, 0x44, 0, 0x64, 0x2B, 0x44, 0x63);
// clang-format off
sp4C.r = 0xF0; sp4C.g = 0x78; sp4C.b = 0x6E;
sp48.r = 0xF0; sp48.g = 0xF0; sp48.b = 0x78;
// clang-format on
sp40 = 5;
} else {
func_86906E70(&D_5003AE8, 0x4C, 0xAE, 0x20, 0x28, 0x20, 0x28, 0, 0, 0x20, 0x28, 0x1F, 0);
func_86906E70(&D_5003AE8, 0x6C, 0xAE, 0x68, 0x28, 0x20, 0x28, 0x1C, 0, 0x20, 0x2B, 0x87, 0x20);
func_86906E70(&D_5003AE8, 0xD4, 0xAE, 0x20, 0x28, 0x20, 0x28, 0, 0, 0x20, 0x28, 0, 0x20);
// clang-format off
sp4C.r = 0xDC; sp4C.g = 0xFF; sp4C.b = 0xDC;
sp48.r = 0x78; sp48.g = 0xB4; sp48.b = 0xFF;
// clang-format on
sp40 = 7;
}
func_8001F3F4();
func_8001F470();
func_8001EBE0(0x10, 0);
func_8001F324(sp4C.r, sp4C.g, sp4C.b, 0xFF);
func_8001F36C(sp48.r, sp48.g, sp48.b, 0xFF);
func_8001F1E8(0xA0 - (sp44 / 2), sp40 + 0xAE, arg0);
func_8001F4C4();
func_8001F444();
func_86904070(0x50, 0xAC, 0xA0, 0x2D, 0);
}
}
void func_86907858(UNUSED s32 arg0) {
s32 i;
s32 var_v1;
if (D_8690B380 != 0) {
func_869043FC(0x55, 0x20, 0x96, 0x8C, 0, 0, 0x8C, 0x64);
gSPDisplayList(gDisplayListHead++, D_8006F518);
if (D_8690B384 != 0) {
var_v1 = 0xFF;
} else {
var_v1 = 0x37;
}
gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, var_v1);
func_8001CADC(0x93, 0x20, 0x18, 0xF, &D_50017E8, 0x18, 0);
if ((D_8690B38C - 4) != D_8690B384) {
var_v1 = 0xFF;
} else {
var_v1 = 0x37;
}
gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, var_v1);
func_8001CADC(0x93, 0x9C, 0x18, 0xF, &D_5001680, 0x18, 0);
gSPDisplayList(gDisplayListHead++, D_8006F630);
gSPDisplayList(gDisplayListHead++, D_8006F5A0);
func_8001D560(0x59, (D_8690B388 * 0x14) + 0x35, 0x18, 0xE, D_5000000, &D_50002A0, 0x18, 0x100000);
gSPDisplayList(gDisplayListHead++, D_8006F630);
func_8001F3F4();
func_8001EBE0(4, 0);
for (i = D_8690B384; i < D_8690B384 + 5; i++) {
if (D_8690B388 == (i - D_8690B384)) {
func_8001F324(0xFF, 0xFF, 0, 0xFF);
} else {
func_8001F324(0xFF, 0xFF, 0xFF, 0xFF);
}
func_8001F1E8(0xA0 - (func_8001F5B0(4, 0, D_86908C58[i]) / 2), ((i - D_8690B384) * 0x14) + 0x36,
D_86908C58[i]);
}
func_8001F444();
func_86904070(0x4D, 0x34, 0xA6, 0x88, 0);
}
}
void func_86907B78(void) {
s32 sp3C;
s32 sp38;
Color_RGB8 sp34 = D_86908C98;
Color_RGB8 sp30 = D_86908C9C;
if (D_8690B348 >= 3) {
func_86904070(0, 0, 0x140, 0xF0, D_8690B350.unk_04);
}
if (D_8690B348 == 4) {
if (D_8690B350.unk_0E < 0x15) {
func_8002053C(D_8690B350.unk_08, D_8690B350.unk_0A - (D_8690B350.unk_0E / 2), D_8690B350.unk_0C,
D_8690B350.unk_0E, &sp34, &sp34);
} else {
func_8002053C(D_8690B350.unk_08, D_8690B350.unk_0A - (D_8690B350.unk_0E / 2), D_8690B350.unk_0C,
D_8690B350.unk_0E, &sp34, &sp30);
}
if (D_8690B350.unk_0E >= 0x1F) {
func_8001F3F4();
func_8001EBE0(4, 0);
sp3C = func_8001F5B0(4, 0, func_8002D7C0(NULL, 0, D_8690A678, 0));
sp38 = func_8002D7C0(NULL, 0, D_8690A678, 0);
func_8001F1E8((D_8690B350.unk_08 - (sp3C / 2)) + (D_8690B350.unk_0C / 2), D_8690B350.unk_0A - 8, sp38);
func_8001F444();
}
}
}
s16 func_86907D38(s16 arg0) {
if ((arg0 - D_8690B360.unk_04) <= (D_8690B360.unk_0C + 15.0f)) {
return 1000;
}
return arg0 - D_8690B360.unk_04;
}
void func_86907D94(void) {
s16 sp4E = D_8690B360.unk_0C;
char sp40[12];
char sp34[12];
s16 sp32;
s16 sp24 = sp4E + 0x17;
if (D_8690B348 >= 2) {
return;
}
func_86904F2C(D_5000BA0, func_86907D38(sp24 + 8), 0x18, 8, 0x1E);
func_86904F2C(D_5000BA0, func_86907D38(sp24 + 0x10), 0x18, 8, 0x1E);
if (D_8690B348 == 0) {
if (D_8690B360.unk_00 == 0) {
sprintf(&sp40, "%d", 0x18 - D_8690B344);
func_8001F3F4();
func_8001EBE0(2, 0);
if ((0x18 - D_8690B344) >= 0xB) {
func_8001F324(0xFF, 0xFF, 0xFF, 0xFF);
} else {
func_8001F324(0xFF, 0, 0, 0xFF);
}
sp32 = 0;
if ((0x18 - D_8690B344) < 0xA) {
sp32 = 3;
}
func_8001F1E8(sp24 + sp32 + 9, 0x21, &sp40);
func_8001F444();
} else {
sprintf(&sp40, "%d", 0x19 - D_8690B344);
sprintf(&sp34, "%d", 0x18 - D_8690B344);
func_8001F3F4();
func_8001EBE0(2, 0);
if ((0x19 - D_8690B344) >= 0xB) {
func_8001F324(0xFF, 0xFF, 0xFF, 0xFF);
} else {
func_8001F324(0xFF, 0, 0, 0xFF);
}
sp32 = 0;
if ((0x18 - D_8690B344) < 0xA) {
sp32 = 3;
}
func_8001F1E8((sp24 - D_8690B360.unk_00) + sp32 + 0x1D, 0x21, &sp40);
if ((0x18 - D_8690B344) >= 0xB) {
func_8001F324(0xFF, 0xFF, 0xFF, 0xFF);
} else {
func_8001F324(0xFF, 0, 0, 0xFF);
}
sp32 = 0;
if ((0x18 - D_8690B344) < 0xA) {
sp32 = 3;
}
func_8001F1E8((sp24 - D_8690B360.unk_00) + sp32 + 9, 0x21, &sp34);
func_8001F444();
}
} else if (D_8690B360.unk_00 == 0) {
if (D_8690B344 != 0) {
sprintf(&sp40, "%d", 0x18 - D_8690B344);
func_8001F3F4();
func_8001EBE0(2, 0);
if ((0x18 - D_8690B344) >= 0xB) {
func_8001F324(0xFF, 0xFF, 0xFF, 0xFF);
} else {
func_8001F324(0xFF, 0, 0, 0xFF);
}
sp32 = 0;
if ((0x18 - D_8690B344) < 0xA) {
sp32 = 3;
}
func_8001F1E8(sp24 + sp32 + 9, 0x21, &sp40);
func_8001F444();
}
} else {
sprintf(&sp40, "%d", 0x17 - D_8690B344);
sprintf(&sp34, "%d", 0x18 - D_8690B344);
func_8001F3F4();
func_8001EBE0(2, 0);
if ((0x19 - D_8690B344) >= 0xB) {
func_8001F324(0xFF, 0xFF, 0xFF, 0xFF);
} else {
func_8001F324(0xFF, 0, 0, 0xFF);
}
sp32 = 0;
if ((0x18 - D_8690B344) < 0xA) {
sp32 = 3;
}
func_8001F1E8((sp24 + D_8690B360.unk_00 + sp32) - 0xB, 0x21, &sp40);
if ((0x18 - D_8690B344) >= 0xB) {
func_8001F324(0xFF, 0xFF, 0xFF, 0xFF);
} else {
func_8001F324(0xFF, 0, 0, 0xFF);
}
sp32 = 0;
if ((0x18 - D_8690B344) < 0xA) {
sp32 = 3;
}
func_8001F1E8(sp24 + D_8690B360.unk_00 + sp32 + 9, 0x21, &sp34);
func_8001F444();
}
func_869050C8(D_50003F0, sp4E, 0x13, 0x18, 0x29);
func_86904F2C(D_5000BA0, func_86907D38(sp24), 0x18, 8, 0x1E);
func_86904F2C(D_5000BA0, func_86907D38(sp24 + 0x18), 0x18, 8, 0x1E);
func_86904F2C(D_5000BA0, func_86907D38(sp24 + 0x20), 0x18, 8, 0x1E);
func_86904F2C(D_5000BA0, func_86907D38(sp24 + 0x28), 0x18, 8, 0x1E);
}
void func_86908418(void) {
s16 sp30 = D_8690B360.unk_0C;
s16 sp2E;
if (D_8690B348 < 2) {
return;
}
sp2E = sp30 + 0x17;
if (func_86907D38(sp2E + 0) != 0x3E8) {
func_86904F2C(D_5000BA0, func_86907D38(sp2E + 0), 0x18, 8, 0x1E);
}
if (func_86907D38(sp2E + 8) != 0x3E8) {
func_86904F2C(D_5000BA0, func_86907D38(sp2E + 8), 0x18, 8, 0x1E);
}
if (func_86907D38(sp2E + 0x10) != 0x3E8) {
func_86904F2C(D_5000BA0, func_86907D38(sp2E + 0x10), 0x18, 8, 0x1E);
}
if (func_86907D38(sp2E + 0x18) != 0x3E8) {
func_86904F2C(D_5000BA0, func_86907D38(sp2E + 0x18), 0x18, 8, 0x1E);
}
if (func_86907D38(sp2E + 0x20) != 0x3E8) {
func_86904F2C(D_5000BA0, func_86907D38(sp2E + 0x20), 0x18, 8, 0x1E);
}
if (func_86907D38(sp2E + 0x28) != 0x3E8) {
func_86904F2C(D_5000BA0, func_86907D38(sp2E + 0x28), 0x18, 8, 0x1E);
}
func_869050C8(D_50003F0, sp30, 0x13, 0x18, 0x29);
}
void func_86908668(void) {
if (D_8690B348 == 0) {
func_86905734(&D_50011D0, D_8690B308.unk_00[0], D_8690B308.unk_00[4], 0x30, 0x19, 0, 0);
func_86905734(&D_50011D0, D_8690B308.unk_00[1], D_8690B308.unk_00[5], 0x30, 0x19, 0x4000, 1);
func_86905734(&D_50011D0, D_8690B308.unk_00[2], D_8690B308.unk_00[6], 0x30, 0x19, -0x8000, 1);
func_86905734(&D_50011D0, D_8690B308.unk_00[3], D_8690B308.unk_00[7], 0x30, 0x19, -0x4000, 1);
func_86905F24(&D_5000C90, D_8690B308.unk_10, D_8690B308.unk_20, 0x18, 0x38, 0, 0);
func_869066C4(&D_5000C90, D_8690B308.unk_10, D_8690B308.unk_20, 0x18, 0x38, 0, 1);
func_86905F24(&D_5000C90, D_8690B308.unk_14, D_8690B308.unk_24, 0x18, 0x38, 0x4000, 1);
func_869066C4(&D_5000C90, D_8690B308.unk_14, D_8690B308.unk_24, 0x18, 0x38, 0x4000, 1);
func_86905F24(&D_5000C90, D_8690B308.unk_18, D_8690B308.unk_28, 0x18, 0x38, -0x8000, 1);
func_869066C4(&D_5000C90, D_8690B308.unk_18, D_8690B308.unk_28, 0x18, 0x38, -0x8000, 1);
func_86905F24(&D_5000C90, D_8690B308.unk_1C, D_8690B308.unk_2C, 0x18, 0x38, -0x4000, 1);
func_869066C4(&D_5000C90, D_8690B308.unk_1C, D_8690B308.unk_2C, 0x18, 0x38, -0x4000, 1);
}
}
void func_869089AC(void) {
if (D_8690B3C0.unk_00 != 0xFF) {
func_869043FC(0x3C, 0x9B - (D_8690B3C0.unk_0C / 2), D_8690B3C0.unk_08, D_8690B3C0.unk_0C, 0, 0, 0x9B, 0x7D);
func_8001F3F4();
func_8001EBE0(2, 0);
func_8001F3B4(0xC);
func_8001F1E8(0x46, 0x9F - (D_8690B3C0.unk_0C / 2), D_8690B3D0);
func_8001F444();
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/15/fragment15_150AC0/func_869089AC.s")

View File

@ -150,7 +150,7 @@ extern s16 D_87906044;
extern s16 D_87906046;
extern s16 D_87906048;
extern s16 D_8790604A;
extern unk_D_86002F34_00C* D_87906050;
extern unk_D_86002F34_00C* D_87906054;
extern s16 D_87906060;
extern s16 D_87906062;

View File

@ -11,7 +11,7 @@ s16 D_87906046;
s16 D_87906048;
s16 D_8790604A;
s32 pad_D_8790604C;
unk_D_86002F34_00C* D_87906050;
s32 D_87906050;
unk_D_86002F34_00C* D_87906054;
s32 pad_D_87906058[2];
s16 D_87906060;

View File

@ -3,11 +3,6 @@
#include "global.h"
typedef struct unk_D_83402EE0_00A {
/* 0x00 */ u8 unk_00[7];
} unk_D_83402EE0_00A; // size = 0x7
void func_810007A8(unk_D_86002F58_004_000*);
void func_81002174(unk_D_83402EE0_00A*);
#endif // _FRAGMENT31_H_

View File

@ -764,7 +764,7 @@ void func_8140C5BC(UNUSED unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1)
void func_8140C5D0(void);
void func_8140C734(void);
void func_8140D5A0(unk_D_8140E720*, u16);

View File

@ -430,52 +430,57 @@ void func_822018D4(s16 arg0, s16 arg1, s16 arg2) {
func_8001C330(arg0 - (arg2 / 2), arg1 - (arg2 / 2), arg2, arg2, 0, 0, 0x10000 / arg2, 0x10000 / arg2, 0);
}
#ifdef NON_MATCHING
void func_82201AC8(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u8 arg4, u8 arg5, u8 arg6, u8 arg7) {
s16 sp54;
s16 sp50;
s16 sp4C;
s16 var_s2;
s16 var_s3;
s16 sp50;
if (arg2 >= 0x10) {
var_s3 = 8;
} else {
var_s3 = arg2 / 2;
}
sp4C = 0x2000 / var_s3;
if (arg3 >= 0x10) {
var_s2 = 8;
} else {
var_s2 = arg3 / 2;
}
sp50 = 0x2000 / var_s2;
sp50 = arg2 - (var_s3 * 2);
sp54 = arg3 - (var_s2 * 2);
sp54 = (arg0 + arg2) - var_s3;
gSPDisplayList(gDisplayListHead++, D_8006F518);
gDPSetEnvColor(gDisplayListHead++, arg4, arg5, arg6, arg7);
gDPLoadTextureBlock_4b(gDisplayListHead++, D_2028A60, G_IM_FMT_I, 16, 8, 0, G_TX_NOMIRROR | G_TX_WRAP,
G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD);
func_8001C330(arg0, arg1, var_s3, var_s2, 0, 0, 0x2000 / var_s3, 0x2000 / var_s2, 0);
func_8001C330(arg0, arg1, var_s3, var_s2, 0, 0, sp4C, sp50, 0);
gDPLoadTextureBlock_4b(gDisplayListHead++, D_2028AA0, G_IM_FMT_I, 16, 8, 0, G_TX_NOMIRROR | G_TX_WRAP,
G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD);
func_8001C330((arg0 + arg2) - var_s3, arg1, var_s3, var_s2, 0, 0, 0x2000 / var_s3, 0x2000 / var_s2, 0);
func_8001C330(sp54, arg1, var_s3, var_s2, 0, 0, sp4C, sp50, 0);
gDPLoadTextureBlock_4b(gDisplayListHead++, D_20289E0, G_IM_FMT_I, 16, 8, 0, G_TX_NOMIRROR | G_TX_WRAP,
G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD);
func_8001C330(arg0, (arg1 + arg3) - var_s2, var_s3, var_s2, 0, 0, 0x2000 / var_s3, 0x2000 / var_s2, 0);
func_8001C330(arg0, (arg1 + arg3) - var_s2, var_s3, var_s2, 0, 0, sp4C, sp50, 0);
gDPLoadTextureBlock_4b(gDisplayListHead++, D_2028A20, G_IM_FMT_I, 16, 8, 0, G_TX_NOMIRROR | G_TX_WRAP,
G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD);
func_8001C330((arg0 + arg2) - var_s3, (arg1 + arg3) - var_s2, var_s3, var_s2, 0, 0, 0x2000 / var_s3,
0x2000 / var_s2, 0);
func_8001C330(sp54, (arg1 + arg3) - var_s2, var_s3, var_s2, 0, 0, sp4C, sp50, 0);
gSPDisplayList(gDisplayListHead++, D_8006F498);
sp54 = arg3 - (var_s2 * 2);
sp50 = arg2 - (var_s3 * 2);
if ((sp50 > 0) && (sp54 > 0)) {
func_8001C604(arg0 + var_s3, arg1, sp50, var_s2, arg4, arg5, arg6, arg7);
func_8001C604(arg0, arg1 + var_s3, arg2, sp54, arg4, arg5, arg6, arg7);
@ -488,6 +493,9 @@ void func_82201AC8(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u8 arg4, u8 arg5, u8
gSPDisplayList(gDisplayListHead++, D_8006F630);
}
#else
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/37/fragment37/func_82201AC8.s")
#endif
void func_822022C8(s32 arg0) {
func_82201AC8(0x38, 0x17C, 0x210, 0x3C, 0x1E, 0x1E, 0x82, 0x96);

View File

@ -2,31 +2,6 @@
#define _FRAGMENT43_H_
#include "global.h"
#include "30640.h"
#include "src/fragments/31/fragment31.h"
typedef struct unk_D_83402EE0 {
/* 0x00 */ f32 unk_00;
/* 0x04 */ u8 unk_04;
/* 0x05 */ u8 unk_05;
/* 0x06 */ s16 unk_06;
/* 0x08 */ u8 unk_08;
/* 0x09 */ u8 unk_09;
/* 0x0A */ unk_D_83402EE0_00A unk_0A[10];
/* 0x50 */ Vec3f unk_50;
/* 0x5C */ Vec3f unk_5C;
/* 0x68 */ u32 unk_68;
/* 0x6C */ u8 unk_6C;
/* 0x6D */ char unk6D[3];
/* 0x70 */ unk_D_83402EE0_070 unk_70;
} unk_D_83402EE0; // size = 0x8C
extern s32 D_83402E20;
extern s32 D_83402E24;
extern unk_D_83402EE0 D_83402EE0[];
extern unk_D_83407AC8 D_83407AC8;
extern u8 D_83407ACA;
void func_8340051C(void);

View File

@ -28,8 +28,6 @@ struct RelocTable {
/* 0x04 */ u32 relocations[RELOCATIONS_SIZE]; // variable size
};
typedef s32 (*FragmentEntry)(s32, s32);
typedef struct Fragment {
/* 0x00 */ u32 inst[2]; // MIPS instructions to jump to the main function, typically something like "j 0x8xx00020; nop"
/* 0x08 */ char magic[8]; // "FRAGMENT"

View File

@ -928,13 +928,12 @@
- [0x14CA70, c, fragments/15/fragment15_14CA70]
- [0x14EC80, c, fragments/15/fragment15_14EC80]
- [0x150AC0, c, fragments/15/fragment15_150AC0]
- [0x1554D0, .data, fragments/15/fragment15_14CA70]
- [0x156EB0, .rodata, fragments/15/fragment15_14CA70]
- [0x156F00, .rodata, fragments/15/fragment15_14EC80]
- [0x156F70, .rodata, fragments/15/fragment15_150AC0]
- [0x1554D0, data, fragments/15/fragment15_data]
- [0x156EB0, rodata, fragments/15/fragment15_rodata_156EB0]
- [0x156F00, rodata, fragments/15/fragment15_rodata_156F00]
- [0x156F70, rodata, fragments/15/fragment15_rodata_156F70]
- {vram: 0x8690A610, type: .bss, name: fragments/15/fragment15_14CA70}
- {vram: 0x8690B600, type: .bss, name: fragments/15/fragment15_14EC80}
- {vram: 0x8690A610, type: bss, name: fragments/15/fragment15_bss}
- name: fragment15_relocs
type: code