Merge pull request #188 from Kelebek1/fragment55
Some checks are pending
C/C++ CI / build (push) Waiting to run

fragment55
This commit is contained in:
Maide 2025-04-17 15:19:11 +01:00 committed by GitHub
commit d2c155517c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 1463 additions and 64 deletions

View File

@ -507,6 +507,8 @@ extern u8 D_200A780[];
extern u8 D_2000980[];
extern u8 D_2000A60[];
extern u8 D_3008200[];
extern u8 D_4000C40[];
extern u8 D_4000DD0[];
extern LEODiskID D_800818E0;
@ -641,4 +643,6 @@ typedef struct unk_D_80072338 {
} unk_D_80072338; // size = 0xC
extern unk_D_80072338 D_80072338[];
extern char D_8006FEE8[][0x1C];
#endif

View File

@ -757,4 +757,6 @@ D_826083D0 = 0x826083D0; // size:0x168
D_82607420 = 0x82607420; // size:0x730
D_82608568 = 0x82608568; // size:0x75F80
D_3008200 = 0x3008200;
D_8267E4F8 = 0x8267E4F8; // size:0x258
D_8267E4F8 = 0x8267E4F8; // size:0x258
D_4000C40 = 0x4000C40;
D_4000DD0 = 0x4000DD0;

View File

@ -91,8 +91,6 @@ char* func_80021C80(char* arg0, char* arg1) {
}
char* func_80021CA4(char* arg0, s32 arg1) {
extern char D_8006FEE8[][0x1C];
func_80021C80(arg0, (char*)*(u32*)D_8006FEE8[arg1]);
return arg0;
}

View File

@ -0,0 +1,109 @@
#ifndef _FRAGMENT55_H_
#define _FRAGMENT55_H_
#include "global.h"
#include "src/29BA0.h"
typedef struct unk_D_83003CE0 {
/* 0x00 */ char* unk_00[29];
/* 0x74 */ char* unk_74;
/* 0x78 */ char* unk_78;
/* 0x7C */ char* unk_7C;
/* 0x80 */ char* unk_80;
/* 0x84 */ char* unk_84;
/* 0x88 */ char* unk_88;
/* 0x8C */ char* unk_8C;
/* 0x90 */ char* unk_90;
/* 0x94 */ char* unk_94;
/* 0x98 */ char* unk_98;
/* 0x9C */ char unk9C[0x64];
} unk_D_83003CE0; // size = 0x100
typedef struct unk_D_83079E70_014_000 {
/* 0x00 */ s16 unk_00;
/* 0x02 */ s16 unk_02;
} unk_D_83079E70_014_000; // size = 0x4
typedef struct unk_D_83079E70_000 {
/* 0x00 */ unk_D_83079E70_014_000 unk_00[6];
/* 0x18 */ struct unk_D_83079E70_000* unk_18;
/* 0x1C */ struct unk_D_83079E70_000* unk_1C;
} unk_D_83079E70_000; // size = 0x20
typedef struct unk_D_83079E70 {
/* 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 */ s16 unk_0C;
/* 0x10 */ unk_D_83079E70_000* unk_10;
/* 0x14 */ unk_D_83079E70_000 unk_14[6];
} unk_D_83079E70; // size = 0xD4
extern unk_D_83003CE0 D_83003CE0;
extern unk_D_83003CE0 D_83003DE0;
extern char** D_830039C0;
char* func_83000020(s32 arg0);
void func_83000058(void);
void func_83000130(void);
s16* func_83000160(unk_D_800AE540* arg0);
char* func_830003A4(s8 arg0);
char* func_83000418(s8 arg0);
s32 func_830004BC(s16* arg0);
void func_83000508(void);
void func_8300059C(void);
void func_83000710(void);
void func_83000750(void);
s32 func_830007C4(void);
void func_830007F4(void);
void func_83000A30(void);
void func_83000F10(s16 arg0, s16 arg1, s16 arg2, s16 arg3);
void func_83001178(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u8 arg4, u8 arg5, u8 arg6);
void func_830014B0(s16 arg0, s16 arg1);
void func_830015EC(s16 arg0, s16 arg1);
void func_830017C0(void);
void func_83001A9C(void);
void func_83001B64(void);
void func_83001C4C(void);
void func_83001CF8(void);
s32 func_83002030(void);
void func_830020D0(void);
s32 func_83002120(UNUSED s32 arg0, UNUSED s32 arg1);
s32 func_83002270(s8* arg0);
void func_830022B0(void);
void func_83002324(void);
void func_83002370(void);
void func_830023B8(void);
void func_830023CC(void);
void func_8300243C(void);
void func_830025F8(s16 arg0);
s32 func_8300269C(void);
s32 func_830026C0(void);
s32 func_830026D0(s16 arg0, s16 arg1);
s16 func_830027C8(s16 arg0);
s32 func_83002848(unk_D_83079E70_000* arg0, s16 arg1, s16 arg2);
unk_D_83079E70_000* func_83002950(unk_D_83079E70_000* arg0, s32 arg1);
s32 func_83002974(unk_D_83079E70* arg0);
s32 func_83002A0C(unk_D_83079E70* arg0);
void func_83002AB4(unk_D_83079E70* arg0);
void func_83002B1C(unk_D_83079E70* arg0);
void func_83002BA4(unk_D_83079E70* arg0);
void func_83002C30(unk_D_83079E70* arg0);
void func_83002C74(s16 arg0, s16 arg1, unk_D_83079E70* arg2);
void func_83002F9C(s16 arg0, s16 arg1);
void func_83003054(s16 arg0, s16 arg1, unk_D_83079E70_000* arg2);
void func_830032D8(s32 arg0);
void func_830033F0(void);
void func_83003484(void);
void func_830038DC(void);
s32 func_83003988(void);
s32 func_830039AC(void);
#endif // _FRAGMENT55_H_

View File

@ -1,53 +1,825 @@
#include "global.h"
#include "fragment55.h"
#include "src/1AB70.h"
#include "src/1CF30.h"
#include "src/20330.h"
#include "src/20470.h"
#include "src/26820.h"
#include "src/2E110.h"
#include "src/3FB0.h"
#include "src/49790.h"
#include "src/controller.h"
#include "src/memory.h"
#include "src/stage_loader.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2BED40/func_83000020.s")
static s16 D_83003C80;
static s16 D_83003C82;
static u16 D_83003C84;
static BinArchive* D_83003C88;
static void* D_83003C8C;
static s16 D_83003C90;
static s16 D_83003C92;
static s16 D_83003C94;
static s32 D_83003C98;
static char* D_83003C9C;
static s16* D_83003CA0;
static s16 D_83003CA4;
static s16 D_83003CA6;
static char* D_83003CA8;
static char* D_83003CAC;
static char* D_83003CB0;
static char* D_83003CB4;
static char* D_83003CB8;
static char* D_83003CBC;
static char* D_83003CC0;
static char* D_83003CC4;
static char* D_83003CC8;
static char* D_83003CCC;
static char* D_83003CD0;
static char* D_83003CD4;
static char* D_83003CD8;
static char* D_83003CDC;
unk_D_83003CE0 D_83003CE0;
unk_D_83003CE0 D_83003DE0;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2BED40/func_83000058.s")
char** D_830039C0 = NULL;
static char** D_830039C4 = NULL;
static u8 D_830039C8[] = {
0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0F,
};
static s16 D_830039D4[] = {
0x0007, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0023, 0xFFFF,
};
static s16 D_830039E8[] = {
0x0007, 0x0000, 0x0001, 0x001D, 0x0003, 0x0004, 0x0005, 0x0009, 0x0023, 0xFFFF,
};
static s16 D_830039FC[] = {
0x0007, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0023, 0xFFFF, 0x0000,
};
static s16 D_83003A10[] = {
0x000B, 0x0000, 0x0001, 0x000A, 0x0004, 0x0005, 0x0006, 0x0023, 0xFFFF, 0x0000,
};
static s16 D_83003A24[] = {
0x000B, 0x0000, 0x0001, 0x001E, 0x0004, 0x0005, 0x0009, 0x0023, 0xFFFF, 0x0000,
};
static s16 D_83003A38[] = {
0x000B, 0x0000, 0x0001, 0x000A, 0x0004, 0x0005, 0x0023, 0xFFFF, 0x000E, 0x0000, 0x0001, 0x000C, 0x000D,
0x0004, 0x0005, 0x0006, 0x0023, 0xFFFF, 0x000E, 0x0000, 0x0001, 0x001F, 0x000D, 0x0004, 0x0005, 0x0009,
0x0023, 0xFFFF, 0x000E, 0x0000, 0x0001, 0x000C, 0x000D, 0x0004, 0x0005, 0x0023, 0xFFFF, 0x0000,
};
static s16 D_83003A84[] = {
0x0013, 0x0000, 0x0001, 0x000F, 0x0010, 0x0011, 0x0012, 0x0004, 0x0005, 0x0006, 0x0023, 0xFFFF,
};
static s16 D_83003A9C[] = {
0x0013, 0x0000, 0x0001, 0x0020, 0x0010, 0x0011, 0x0012, 0x0004, 0x0005, 0x0009, 0x0023, 0xFFFF,
};
static s16 D_83003AB4[] = {
0x0013, 0x0000, 0x0001, 0x000F, 0x0010, 0x0011, 0x0012, 0x0004, 0x0005, 0x0023, 0xFFFF, 0x0000,
};
static s16 D_83003ACC[] = {
0x0000, 0x0001, 0x0016, 0x0017, 0x0004, 0x0005, 0x0006, 0x0023, 0xFFFF, 0x0000,
};
static s16 D_83003AE0[] = {
0x0000, 0x0001, 0x0021, 0x0017, 0x0004, 0x0005, 0x0009, 0x0023, 0xFFFF, 0x0000,
};
static s16 D_83003AF4[] = {
0x0000, 0x0001, 0x0016, 0x0017, 0x0004, 0x0005, 0x0023, 0xFFFF,
};
static s16 D_83003B04[] = {
0x0015, 0x0000, 0x0001, 0x0024, 0x0004, 0x0006, 0x0023, 0xFFFF,
};
static s16 D_83003B14[] = {
0x0015, 0x0000, 0x0001, 0x0014, 0x0004, 0x0009, 0x0023, 0xFFFF,
};
static s16 D_83003B24[] = {
0x0015, 0x0000, 0x0001, 0x0014, 0x0004, 0x0023, 0xFFFF, 0x0000,
};
static s16 D_83003B34[] = {
0x0015, 0x001A, 0x0014, 0x0025, 0x0022, 0x0026, 0x0023, 0xFFFF,
};
static s16 D_83003B44[] = {
0x0015, 0x0000, 0x0001, 0x0014, 0x0019, 0x0004, 0x0023, 0xFFFF,
};
static s16 D_83003B54[] = {
0x0015, 0x001C, 0x001B, 0x0014, 0x0023, 0xFFFF,
};
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2BED40/func_83000130.s")
char* func_83000020(s32 arg0) {
return func_8002D7C0(NULL, 0, D_830039C4, arg0 - 1);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2BED40/func_83000160.s")
void func_83000058(void) {
unk_func_80027FA0 sp20;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2BED40/func_830003A4.s")
if (D_800AE540.unk_0000 != 0xA) {
D_83003C88 = func_800044F4(backgrounds_ROM_START, battle_headers_ROM_START, 1, 1);
if (D_800AE540.unk_0000 == 7) {
func_80028AFC(2);
func_80027FA0(&sp20, D_800AE540.unk_11F2);
if (sp20.unk_04 < 8) {
D_83003C8C = func_8000484C(D_83003C88, 0xD);
} else {
D_83003C8C = func_8000484C(D_83003C88, 0x10);
}
} else {
D_83003C8C = func_8000484C(D_83003C88, D_830039C8[D_800AE540.unk_0000]);
}
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2BED40/func_83000418.s")
void func_83000130(void) {
Cont_StartReadInputs();
Cont_ReadInputs();
func_8001F730();
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2BED40/func_830004BC.s")
s16* func_83000160(unk_D_800AE540* arg0) {
s16* var_v1 = NULL;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2BED40/func_83000508.s")
switch (arg0->unk_0001) {
case 1:
switch (arg0->unk_0000) {
case 1:
var_v1 = D_830039D4;
break;
case 10:
var_v1 = D_830039E8;
break;
case 0:
var_v1 = D_830039FC;
break;
}
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2BED40/func_8300059C.s")
case 2:
switch (arg0->unk_0000) {
case 2:
var_v1 = D_83003A10;
break;
case 10:
var_v1 = D_83003A24;
break;
case 0:
var_v1 = D_83003A38;
break;
}
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2BED40/func_83000710.s")
case 3:
switch (arg0->unk_0000) {
case 3:
var_v1 = D_830039D4;
break;
case 10:
var_v1 = D_830039E8;
break;
case 0:
var_v1 = D_830039FC;
break;
}
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2BED40/func_83000750.s")
case 4:
switch (arg0->unk_0000) {
case 4:
var_v1 = D_83003A84;
break;
case 10:
var_v1 = D_83003A9C;
break;
case 0:
var_v1 = D_83003AB4;
break;
}
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2BED40/func_830007C4.s")
case 5:
switch (arg0->unk_0000) {
case 5:
var_v1 = D_83003ACC;
break;
case 10:
var_v1 = D_83003AE0;
break;
case 0:
var_v1 = D_83003AF4;
break;
}
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2BED40/func_830007F4.s")
case 6:
switch (arg0->unk_0000) {
case 6:
var_v1 = D_83003B04;
break;
case 10:
var_v1 = D_83003B14;
break;
case 0:
var_v1 = D_83003B24;
break;
}
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2BED40/func_83000A30.s")
case 0:
switch (arg0->unk_0000) {
case 0:
var_v1 = D_83003B34;
break;
}
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2BED40/func_83000F10.s")
case 7:
switch (arg0->unk_0000) {
case 7:
var_v1 = D_83003B44;
break;
}
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2BED40/func_83001178.s")
case 8:
switch (arg0->unk_0000) {
case 8:
var_v1 = D_83003B54;
break;
}
break;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2BED40/func_830014B0.s")
return var_v1;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2BED40/func_830015EC.s")
char* func_830003A4(s8 arg0) {
char* ret;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2BED40/func_830017C0.s")
switch (arg0) {
case 0:
ret = D_83003CAC;
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2BED40/func_83001A9C.s")
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
ret = D_83003CA8;
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2BED40/func_83001B64.s")
case 7:
ret = D_83003CB4;
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2BED40/func_83001C4C.s")
case 8:
ret = D_83003CB8;
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2BED40/func_83001CF8.s")
case 10:
ret = D_83003CB0;
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2BED40/func_83002030.s")
default:
ret = NULL;
break;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2BED40/func_830020D0.s")
return ret;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2BED40/func_83002120.s")
char* func_83000418(s8 arg0) {
char* ret;
switch (arg0) {
case 0:
ret = D_83003CBC;
break;
case 1:
ret = D_83003CC0;
break;
case 2:
ret = D_83003CC4;
break;
case 3:
ret = D_83003CC8;
break;
case 4:
ret = D_83003CCC;
break;
case 5:
ret = D_83003CD0;
break;
case 6:
ret = D_83003CD4;
break;
case 7:
ret = D_83003CD8;
break;
case 8:
ret = D_83003CDC;
break;
default:
ret = NULL;
break;
}
return ret;
}
s32 func_830004BC(s16* arg0) {
s32 ret = 0;
while (*arg0 != -1) {
if (D_83003DE0.unk_00[*arg0] == '\x00') {
ret = 1;
break;
}
arg0++;
}
return ret;
}
void func_83000508(void) {
s32 temp_lo;
D_83003C82--;
D_83003C92 = temp_lo = ((0xA - D_83003C82) << 0xA) / 10;
if (D_83003C84 & 4) {
D_83003C94 = temp_lo;
}
if (D_83003C82 <= 0) {
D_83003C80 = 1;
D_83003C90 = 2;
}
}
void func_8300059C(void) {
s16 tmp = D_83003CA6;
if (BTN_IS_PRESSED(gPlayer1Controller, BTN_DUP)) {
D_83003CA6--;
if (D_83003CA6 < 0) {
D_83003CA6 = D_83003CA4 - 1;
}
}
if (BTN_IS_PRESSED(gPlayer1Controller, BTN_DDOWN)) {
D_83003CA6++;
if (D_83003CA6 >= D_83003CA4) {
D_83003CA6 = 0;
}
}
if (D_83003CA6 != tmp) {
func_80048B90(1);
}
if (BTN_IS_PRESSED(gPlayer1Controller, BTN_A)) {
D_83003C80 = 2;
D_83003C82 = 0;
if (D_83003DE0.unk_00[D_83003CA0[D_83003CA6]] != NULL) {
func_830025F8(D_83003CA0[D_83003CA6]);
} else {
func_830038DC();
func_80048B90(4);
}
func_80048B90(2);
} else if (BTN_IS_PRESSED(gPlayer1Controller, BTN_B)) {
D_83003C80 = 3;
D_83003C82 = 0xA;
D_83003C90 = -1;
func_80048B90(3);
}
}
void func_83000710(void) {
if ((func_8300269C() == 0) && (func_83003988() == 0)) {
D_83003C80 = 1;
}
}
void func_83000750(void) {
s32 temp_lo;
D_83003C82--;
temp_lo = (D_83003C82 << 0xA) / 10;
D_83003C92 = temp_lo;
if (D_83003C84 & 4) {
D_83003C94 = temp_lo;
}
if (D_83003C82 <= 0) {
D_83003C80 = 4;
D_83003C82 = 2;
D_83003C90 = -1;
}
}
s32 func_830007C4(void) {
s32 var_v1 = 0;
D_83003C82--;
if (D_83003C82 <= 0) {
var_v1 = 1;
}
return var_v1;
}
void func_830007F4(void) {
gDPPipeSync(gDisplayListHead++);
gDPSetCycleType(gDisplayListHead++, G_CYC_1CYCLE);
gDPSetTexturePersp(gDisplayListHead++, G_TP_NONE);
gDPSetCombineLERP(gDisplayListHead++, ENVIRONMENT, PRIMITIVE, TEXEL0, PRIMITIVE, TEXEL0, 0, ENVIRONMENT, 0,
ENVIRONMENT, PRIMITIVE, TEXEL0, PRIMITIVE, TEXEL0, 0, ENVIRONMENT, 0);
gDPSetRenderMode(gDisplayListHead++, G_RM_OPA_SURF, G_RM_OPA_SURF2);
gDPSetEnvColor(gDisplayListHead++, 140, 190, 200, 255);
gDPSetPrimColor(gDisplayListHead++, 0, 0, 110, 160, 170, 255);
gSPClearGeometryMode(gDisplayListHead++, G_ZBUFFER | G_LIGHTING);
gDPLoadTextureBlock_4b(gDisplayListHead++, D_302EBC0, G_IM_FMT_I, 128, 64, 0, G_TX_NOMIRROR | G_TX_WRAP,
G_TX_NOMIRROR | G_TX_WRAP, 7, 6, G_TX_NOLOD, G_TX_NOLOD);
func_8001C330(0, 0, 0x280, 0x1E0, 0, 0, 0x400, 0x400, 0);
gSPDisplayList(gDisplayListHead++, D_8006F630);
}
void func_83000A30(void) {
UNUSED s32 pad;
s16 temp_s1;
s16 spD8;
if (D_83003C94 == 0) {
return;
}
temp_s1 = (((-D_83003C94 * 0x10) + 0x4000) / 1024) + 0x28;
spD8 = (D_83003C94 << 5) / 1024;
gSPDisplayList(gDisplayListHead++, D_8006F558);
gDPSetEnvColor(gDisplayListHead++, 100, 100, 200, 255);
gDPSetPrimColor(gDisplayListHead++, 0, 0, 40, 40, 140, 255);
gDPLoadTextureBlock(gDisplayListHead++, D_20003C0, G_IM_FMT_IA, G_IM_SIZ_8b, 16, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
func_8001C330(0x38, temp_s1, 0x10, spD8, 0, 0, 0x3F0, 0x8000 / spD8, 0);
gDPLoadTextureBlock(gDisplayListHead++, D_20005C0, G_IM_FMT_IA, G_IM_SIZ_8b, 16, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
func_8001C330(0x240, temp_s1, 0x10, spD8, 0, 0, 0x400, 0x8000 / spD8, 0);
func_8001C330(0x48, temp_s1, 0x1F8, spD8, 0, 0, 0, 0x8000 / spD8, 0);
if (D_83003C94 < 0x400) {
gSPDisplayList(gDisplayListHead++, D_8006F630);
} else {
gSPDisplayList(gDisplayListHead++, D_8006F518);
func_8001C6AC(0x30, temp_s1 - 8, 0x30, 0x18, D_2006C00, 0x30, 0);
func_8001C6AC(0x30, temp_s1 + 0x10, 0x30, 0x18, D_2007500, 0x30, 0);
gSPDisplayList(gDisplayListHead++, D_8006F630);
func_8001F3F4();
func_8001EBE0(0x10, 0);
if (D_83003C98 != 0) {
char sp48[0x40];
char* temp_v0_21;
func_8001F324(0, 0, 0, 0xFF);
func_8002D5D4(0x26, D_83003C98);
temp_v0_21 = func_8002D7C0(sp48, sizeof(sp48), D_830039C0, 0);
func_8001F1E8(0x6A, temp_s1 + 4, temp_v0_21);
func_8001F324(0xFF, 0xFF, 0x77, 0xFF);
func_8001F1E8(0x68, temp_s1 + 2, temp_v0_21);
}
func_8001F444();
}
}
void func_83000F10(s16 arg0, s16 arg1, s16 arg2, s16 arg3) {
gSPDisplayList(gDisplayListHead++, D_8006F518);
func_8001CADC(arg0 - 7, arg1 - 7, 8, 8, D_2000340, 8, 0);
func_8001CADC((arg0 + arg2) - 1, arg1 - 7, 8, 8, D_2000380, 8, 0);
func_8001C330(arg0 + 1, arg1 - 7, arg2 - 2, 8, 0, 0, 0, 0x400, 0);
func_8001CADC(arg0 - 7, (arg1 + arg3) - 1, 8, 8, D_20002C0, 8, 0);
func_8001C330(arg0 - 7, arg1 + 1, 8, arg3 - 2, 0, 0, 0x400, 0, 0);
func_8001CADC((arg0 + arg2) - 1, (arg1 + arg3) - 1, 8, 8, D_2000300, 8, 0);
func_8001C330(arg0 + 1, (arg1 + arg3) - 1, arg2 - 2, 8, 0, 0, 0, 0x400, 0);
func_8001C330((arg0 + arg2) - 1, arg1 + 1, 8, arg3 - 2, 0, 0, 0x400, 0, 0);
gSPDisplayList(gDisplayListHead++, D_8006F630);
}
void func_83001178(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u8 arg4, u8 arg5, u8 arg6) {
gSPDisplayList(gDisplayListHead++, D_8006F518);
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_OPA_SURF, G_RM_AA_OPA_SURF2);
gDPSetEnvColor(gDisplayListHead++, arg4, arg5, arg6, 255);
func_8001CADC(arg0, arg1, 8, 8, D_2000B40, 8, 0);
func_8001CADC((arg0 + arg2) - 8, arg1, 8, 8, D_2000B80, 8, 0);
func_8001C330(arg0 + 8, arg1, arg2 - 0x10, 8, 0, 0, 0, 0x400, 0);
func_8001CADC(arg0, (arg1 + arg3) - 8, 8, 8, D_2000BC0, 8, 0);
func_8001C330(arg0, arg1 + 8, 8, arg3 - 0x10, 0, 0, 0x400, 0, 0);
func_8001CADC((arg0 + arg2) - 8, (arg1 + arg3) - 8, 8, 8, D_2000C00, 8, 0);
func_8001C330(arg0 + 8, (arg1 + arg3) - 8, arg2 - 0x10, 8, 0, 0, 0, 0x400, 0);
func_8001C330((arg0 + arg2) - 8, arg1 + 8, 8, arg3 - 0x10, 0, 0, 0x400, 0, 0);
gSPDisplayList(gDisplayListHead++, D_8006F498);
func_8001C604(arg0 + 8, arg1 + 8, arg2 - 0x10, arg3 - 0x10, arg4, arg5, arg6, 0xFF);
gSPDisplayList(gDisplayListHead++, D_8006F630);
}
void func_830014B0(s16 arg0, s16 arg1) {
gDPLoadTextureTile(gDisplayListHead++, D_4000C40, G_IM_FMT_IA, G_IM_SIZ_8b, 20, 0, 0, 0, 19, 19, 0,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD,
G_TX_NOLOD);
func_8001C330(arg0, arg1, 0x14, 0x14, 0, 0, 0x400, 0x400, 0);
}
void func_830015EC(s16 arg0, s16 arg1) {
s16 tmp;
s32 i;
char sp48[0x40];
func_8001EBE0(0x10, 0);
func_8001F324(0xFF, 0xFF, 0xFF, 0xFF);
if (D_83003C9C != NULL) {
if (D_83003C9C != D_83003CBC) {
func_8002D5D4(0x27, D_83003C9C);
func_8001F1E8(arg0 + 0x10, arg1 + 4, func_8002D7C0(sp48, sizeof(sp48), D_830039C0, 1));
} else {
func_8001F1E8(arg0 + 0x10, arg1 + 4, D_83003C9C);
}
}
func_8001F1E8(arg0 + 0x30, arg1 + 0x134, func_8002D7C0(NULL, 0, D_830039C0, 2));
func_8001EBE0(8, 0);
for (i = 0; i < D_83003CA4; i++) {
if (i != D_83003CA6) {
func_8001F324(0xFF, 0xFF, 0xFF, 0xFF);
} else {
func_8001F324(0xFF, 0xFF, 0, 0xFF);
}
tmp = D_83003CA0[i];
func_8001F1E8(arg0 + 0x54, arg1 + 0x26 + i * 0x18, D_83003CE0.unk_00[tmp]);
}
}
void func_830017C0(void) {
static s16 D_83003B60 = 0;
s32 i;
s16 temp_s3;
s16 temp_s2;
if (D_83003C92 == 0) {
return;
}
temp_s3 = (((-D_83003C92 * 0xA8) + 0x2A000) / 1024) + 0x5C;
temp_s2 = (D_83003C92 * 0x150) / 1024;
func_83000F10(0x38, temp_s3, 0x210, temp_s2);
if (D_83003C92 >= 0x400) {
func_83001178(0x38, temp_s3, 0x210, 0x20, 0x3C, 0x3C, 0xA0);
func_83001178(0x38, temp_s3 + 0x20, 0x210, 0x110, 0x1E, 0x1E, 0x64);
func_83001178(0x38, temp_s3 + 0x130, 0x210, 0x20, 0x3C, 0x3C, 0xA0);
if ((func_830026C0() == 0) && (func_830039AC() == 0)) {
s16 sins = SINS(D_83003B60) * 3.0f;
func_800207FC(sins + 0x48, temp_s3 + (D_83003CA6 * 0x18) + 0x2A);
D_83003B60 += 0x1000;
}
gSPDisplayList(gDisplayListHead++, D_8006F518);
func_8001C6AC(0x48, temp_s3 + 0x132, 0x1C, 0x1C, D_04000000, 0x1C, 0);
for (i = 0; i < D_83003CA4; i++) {
func_830014B0(0x74, temp_s3 + 0x28 + i * 0x18);
}
gSPDisplayList(gDisplayListHead++, D_8006F630);
func_8001F3F4();
func_830015EC(0x38, temp_s3);
func_8001F444();
}
}
void func_83001A9C(void) {
func_800079C4();
if (D_83003C90 != 0) {
if (D_800AE540.unk_0000 == 0xA) {
func_830007F4();
} else {
func_8001D924(D_83003C8C);
}
func_83000A30();
if (D_83003C90 > 0) {
D_83003C90--;
}
}
if ((func_830026C0() < 0x400) && (func_830039AC() < 0x400)) {
func_830017C0();
}
func_8300243C();
func_83003484();
func_80007778();
}
void func_83001B64(void) {
s32 i;
for (i = 0; i < 29; i++) {
D_83003CE0.unk_00[i] = func_8002D7C0(NULL, 0, D_830039C0, i + 4);
}
D_83003CE0.unk_74 = D_83003CE0.unk_00[2];
D_83003CE0.unk_78 = D_83003CE0.unk_00[10];
D_83003CE0.unk_7C = D_83003CE0.unk_00[12];
D_83003CE0.unk_80 = D_83003CE0.unk_00[15];
D_83003CE0.unk_84 = D_83003CE0.unk_00[22];
D_83003CE0.unk_88 = D_83003CE0.unk_00[27];
D_83003CE0.unk_8C = func_8002D7C0(NULL, 0, D_830039C0, 0x21);
D_83003CE0.unk_90 = D_83003CE0.unk_00[20];
D_83003CE0.unk_94 = D_83003CE0.unk_00[4];
D_83003CE0.unk_98 = func_8002D7C0(NULL, 0, D_830039C0, 0x22);
}
void func_83001C4C(void) {
s32 i;
s32 var_s2 = 0;
for (i = 0; i < 39; i++) {
switch (i) {
case 7:
case 11:
case 14:
case 19:
case 24:
D_83003DE0.unk_00[i] = NULL;
break;
default:
D_83003DE0.unk_00[i] = func_8002D7C0(NULL, 0, D_830039C0, var_s2 + 0x23);
var_s2++;
break;
}
}
}
void func_83001CF8(void) {
D_83003C80 = 0;
D_83003C82 = 0xA;
D_83003C90 = -1;
D_83003C92 = 0;
func_80048B90(4);
D_83003C98 = 0;
D_83003C9C = NULL;
D_83003CA6 = 0;
D_83003C84 = 0;
D_83003CA0 = func_83000160(&D_800AE540);
if (D_83003CA0 == 0) {
D_83003CA4 = 0;
} else {
D_83003CA4 = 0;
while (D_83003CA0[D_83003CA4] != -1) {
D_83003CA4++;
}
}
func_83001B64();
func_83001C4C();
D_83003CA8 = func_8002D7C0(NULL, 0, D_830039C0, 0x46);
D_83003CAC = func_8002D7C0(NULL, 0, D_830039C0, 0x45);
D_83003CB0 = func_8002D7C0(NULL, 0, D_830039C0, 0x49);
D_83003CB4 = func_8002D7C0(NULL, 0, D_830039C0, 0x47);
D_83003CB8 = func_8002D7C0(NULL, 0, D_830039C0, 0x48);
D_83003CBC = func_8002D7C0(NULL, 0, D_830039C0, 0x4A);
D_83003CC0 = func_8002D7C0(NULL, 0, D_830039C0, 0x4D);
D_83003CC4 = func_8002D7C0(NULL, 0, D_830039C0, 0x4C);
D_83003CC8 = func_8002D7C0(NULL, 0, D_830039C0, 0x4B);
D_83003CCC = func_8002D7C0(NULL, 0, D_830039C0, 0x4E);
D_83003CD0 = func_8002D7C0(NULL, 0, D_830039C0, 0x4F);
D_83003CD4 = func_8002D7C0(NULL, 0, D_830039C0, 0x50);
D_83003CD8 = D_83003CB4;
D_83003CDC = D_83003CB8;
D_83003C98 = func_830003A4(D_800AE540.unk_0000);
D_83003C9C = func_83000418(D_800AE540.unk_0001);
if (D_800AE540.unk_11F2 != 0) {
D_83003C84 |= 1;
}
if (func_830004BC(D_83003CA0) != 0) {
D_83003C84 |= 2;
}
if (D_83003C84 & 4) {
D_83003C94 = 0;
} else {
D_83003C94 = 0x400;
}
func_830023B8();
func_830032D8((D_83003C84 & 2) ? 1 : 0);
}
s32 func_83002030(void) {
s32 sp1C = 1;
switch (D_83003C80) {
case 0:
func_83000508();
break;
case 1:
func_8300059C();
break;
case 2:
func_83000710();
break;
case 3:
func_83000750();
break;
case 4:
if (func_830007C4() != 0) {
sp1C = 0;
}
break;
}
return sp1C;
}
void func_830020D0(void) {
func_83001CF8();
do {
func_83000130();
func_830023CC();
func_830033F0();
func_83001A9C();
} while (func_83002030() != 0);
}
s32 func_83002120(UNUSED s32 arg0, UNUSED s32 arg1) {
main_pool_push_state('EXPL');
func_8001E94C(0x1C, 0);
ASSET_LOAD(D_1000000, common_menu1_ui, 0);
ASSET_LOAD(D_2000000, common_menu2_ui, 0);
ASSET_LOAD(D_3000000, menu_select_ui, 0);
ASSET_LOAD(D_04000000, rental_rules_ui, 0);
func_83000058();
func_8001B058();
func_8002D510();
D_830039C0 = func_8002D5AC(0x20);
D_830039C4 = func_8002D5AC(0x24);
func_80007754();
func_830020D0();
func_8000771C();
main_pool_pop_state('EXPL');
return 0;
}

View File

@ -1,21 +1,120 @@
#include "global.h"
#include "fragment55.h"
#include "src/1CF30.h"
#include "src/49790.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2C0F90/func_83002270.s")
static s16 D_83003EE0;
static s16 D_83003EE2;
static s16 D_83003EE4;
static s16 D_83003EE6;
static s16 D_83003EE8;
static s16 D_83003EEA;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2C0F90/func_830022B0.s")
s32 func_83002270(s8* arg0) {
s16 var_v1 = 1;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2C0F90/func_83002324.s")
while (*arg0 != 0) {
if (*arg0 == '\n') {
var_v1++;
}
arg0++;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2C0F90/func_83002370.s")
return var_v1;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2C0F90/func_830023B8.s")
void func_830022B0(void) {
D_83003EE2--;
D_83003EE6 = ((5 - D_83003EE2) << 0xA) / 5;
if (D_83003EE2 <= 0) {
D_83003EE0 = 2;
D_83003EE2 = 0;
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2C0F90/func_830023CC.s")
void func_83002324(void) {
if (BTN_IS_PRESSED(gPlayer1Controller, BTN_A | BTN_B)) {
D_83003EE0 = 3;
D_83003EE2 = 5;
func_80048B90(3);
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2C0F90/func_8300243C.s")
void func_83002370(void) {
D_83003EE2--;
D_83003EE6 = (D_83003EE2 << 0xA) / 5;
if (D_83003EE2 <= 0) {
D_83003EE0 = 0;
D_83003EE2 = 0;
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2C0F90/func_830025F8.s")
void func_830023B8(void) {
D_83003EE0 = 0;
D_83003EE6 = 0;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2C0F90/func_8300269C.s")
void func_830023CC(void) {
if (D_83003EE0 != 0) {
switch (D_83003EE0) {
case 1:
func_830022B0();
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2C0F90/func_830026C0.s")
case 2:
func_83002324();
break;
case 3:
func_83002370();
break;
}
}
}
void func_8300243C(void) {
s16 temp_s0;
if (D_83003EE6 != 0) {
temp_s0 = D_83003EE8 + (((D_83003EEA / 2) * (0x400 - D_83003EE6)) / 1024);
func_83000F10(0x48, temp_s0, 0x1F0, (D_83003EEA * D_83003EE6) / 1024);
if (D_83003EE6 >= 0x400) {
func_83001178(0x48, temp_s0, 0x1F0, 0x20, 0x1E, 0x64, 0x64);
func_83001178(0x48, temp_s0 + 0x20, 0x1F0, D_83003EEA - 0x20, 0x3C, 0x3C, 0xA0);
func_8001F3F4();
func_8001EBE0(8, 0);
func_8001F324(0xFF, 0xFF, 0xFF, 0xFF);
func_8001F3B4(0x18);
func_8001F1E8(0x50, temp_s0 + 6, D_83003CE0.unk_00[D_83003EE4]);
func_8001EBE0(8, 0);
func_8001F1E8(0x50, temp_s0 + 0x28, D_83003DE0.unk_00[D_83003EE4]);
func_8001F444();
}
}
}
void func_830025F8(s16 arg0) {
s32 tmp;
D_83003EE0 = 1;
D_83003EE2 = 5;
D_83003EE6 = 0;
D_83003EE4 = arg0;
tmp = (func_83002270(D_83003DE0.unk_00[D_83003EE4]) * 0x18);
D_83003EEA = 0x2C + tmp;
D_83003EE8 = ((0x1E0 - D_83003EEA) / 2) + 0x14;
}
s32 func_8300269C(void) {
s32 ret;
if (D_83003EE0 != 0) {
ret = 1;
} else {
ret = 0;
}
return ret;
}
s32 func_830026C0(void) {
return D_83003EE6;
}

View File

@ -1,39 +1,450 @@
#include "global.h"
#include "fragment55.h"
#include "src/1AB70.h"
#include "src/1CF30.h"
#include "src/20470.h"
#include "src/22630.h"
#include "src/2E110.h"
#include "src/49790.h"
#include "src/6BC0.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2C13F0/func_830026D0.s")
static u16 D_83003EF0[151][0x640];
static unk_D_83079E70 D_83079E70;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2C13F0/func_830027C8.s")
s32 func_830026D0(s16 arg0, s16 arg1) {
s32 var_v1;
s16 sp2;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2C13F0/func_83002848.s")
if ((arg0 <= 0) || (arg0 >= 0x98)) {
return 0;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2C13F0/func_83002950.s")
var_v1 = 0;
switch (arg1) {
case 0:
var_v1 = 1;
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2C13F0/func_83002974.s")
case 1:
sp2 = 1;
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2C13F0/func_83002A0C.s")
case 2:
sp2 = 2;
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2C13F0/func_83002AB4.s")
case 3:
sp2 = 1;
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2C13F0/func_83002B1C.s")
case 4:
sp2 = 8;
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2C13F0/func_83002BA4.s")
case 5:
sp2 = 0x10;
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2C13F0/func_83002C30.s")
case 6:
sp2 = 0x20;
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2C13F0/func_83002C74.s")
case 7:
var_v1 = 1;
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2C13F0/func_83002F9C.s")
case 8:
var_v1 = 1;
break;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2C13F0/func_83003054.s")
if (var_v1 == 0) {
if (D_8006FEE8[arg0][8] & sp2) {
var_v1 = 1;
} else {
var_v1 = 0;
}
}
return var_v1;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2C13F0/func_830032D8.s")
s16 func_830027C8(s16 arg0) {
s16 i;
s16 var_s1 = 0;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2C13F0/func_830033F0.s")
for (i = 1; i < 152; i++) {
if (func_830026D0(i, arg0) != 0) {
var_s1++;
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2C13F0/func_83003484.s")
return var_s1;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2C13F0/func_830038DC.s")
s32 func_83002848(unk_D_83079E70_000* arg0, s16 arg1, s16 arg2) {
s32 i;
s16 var_a0;
s32 var_s1;
s32 var_s3;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2C13F0/func_83003988.s")
for (i = 0; i < 6; i++) {
arg0->unk_00[i].unk_00 = 0;
arg0->unk_00[i].unk_02 = 0;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/55/fragment55_2C13F0/func_830039AC.s")
var_s3 = 0;
var_s1 = (arg1 * 6) + 1;
for (i = 0; i < 6; i++, var_s1++) {
var_a0 = var_s1;
if ((var_a0 <= 0) || (var_a0 >= 0x98)) {
var_a0 = 0;
} else {
var_s3++;
}
arg0->unk_00[i].unk_00 = var_a0;
if (func_830026D0(var_a0, arg2) != 0) {
arg0->unk_00[i].unk_02 = 1;
} else {
arg0->unk_00[i].unk_02 = 0;
}
}
return var_s3;
}
unk_D_83079E70_000* func_83002950(unk_D_83079E70_000* arg0, s32 arg1) {
while (arg1-- > 0) {
arg0 = arg0->unk_18;
}
return arg0;
}
s32 func_83002974(unk_D_83079E70* arg0) {
s32 sp1C = 0;
if (func_83002848(arg0->unk_10->unk_1C, arg0->unk_08 - 1, D_800AE540.unk_0001) > 0) {
arg0->unk_00 = 3;
arg0->unk_02 = 4;
arg0->unk_08--;
arg0->unk_10 = arg0->unk_10->unk_1C;
arg0->unk_0A = -1;
arg0->unk_0C = -1;
sp1C = 1;
func_80048B90(1);
}
return sp1C;
}
s32 func_83002A0C(unk_D_83079E70* arg0) {
s32 sp1C = 0;
if (func_83002848(func_83002950(arg0->unk_10, 5), arg0->unk_08 + 5, D_800AE540.unk_0001) > 0) {
arg0->unk_00 = 3;
arg0->unk_02 = 4;
arg0->unk_08++;
arg0->unk_10 = arg0->unk_10->unk_18;
arg0->unk_0A = 1;
arg0->unk_0C = -1;
sp1C = 1;
func_80048B90(1);
}
return sp1C;
}
void func_83002AB4(unk_D_83079E70* arg0) {
arg0->unk_02--;
arg0->unk_04 = ((5 - arg0->unk_02) << 0xA) / 5;
if (arg0->unk_02 <= 0) {
arg0->unk_00 = 2;
arg0->unk_02 = 0;
arg0->unk_0C = 2;
}
}
void func_83002B1C(unk_D_83079E70* arg0) {
if (BTN_IS_PRESSED(gPlayer1Controller, BTN_A | BTN_B)) {
arg0->unk_00 = 4;
arg0->unk_02 = 5;
arg0->unk_0C = -1;
func_80048B90(3);
} else if (BTN_IS_DOWN(gPlayer1Controller, BTN_DUP)) {
func_83002974(arg0);
} else if (BTN_IS_DOWN(gPlayer1Controller, BTN_DDOWN)) {
func_83002A0C(arg0);
}
}
void func_83002BA4(unk_D_83079E70* arg0) {
s32 var_v1;
arg0->unk_02--;
if (arg0->unk_02 <= 0) {
var_v1 = 0;
if (BTN_IS_DOWN(gPlayer1Controller, BTN_DUP)) {
var_v1 = func_83002974(arg0);
} else if (BTN_IS_DOWN(gPlayer1Controller, BTN_DDOWN)) {
var_v1 = func_83002A0C(arg0);
}
if (var_v1 == 0) {
arg0->unk_00 = 2;
arg0->unk_02 = 0;
arg0->unk_0C = 2;
}
}
}
void func_83002C30(unk_D_83079E70* arg0) {
arg0->unk_02--;
arg0->unk_04 = (arg0->unk_02 << 0xA) / 5;
if (arg0->unk_02 <= 0) {
arg0->unk_00 = 0;
arg0->unk_02 = 0;
arg0->unk_0C = -1;
}
}
void func_83002C74(s16 arg0, s16 arg1, unk_D_83079E70* arg2) {
static s16 D_83003B70 = 0;
s16 temp_t0;
gSPDisplayList(gDisplayListHead++, D_8006F558);
gDPSetEnvColor(gDisplayListHead++, 130, 130, 220, 255);
gDPSetPrimColor(gDisplayListHead++, 0, 0, 60, 60, 150, 255);
func_8001CADC(arg0, arg1, 0x10, 8, D_200A200, 0x10, 0);
func_8001CADC(arg0, arg1 + 0x114, 0x10, 8, D_200A280, 0x10, 0);
func_8001C330(arg0, arg1 + 8, 0x10, 0x10C, 0, 0, 0x400, 0, 0);
if (arg2->unk_00 != 3) {
temp_t0 = (arg2->unk_08 * 0x10C) / 21;
} else if (arg2->unk_0A > 0) {
temp_t0 = (((arg2->unk_08 * 4) - arg2->unk_02) * 0x10C) / 84;
} else {
temp_t0 = (((arg2->unk_08 * 4) + arg2->unk_02) * 0x10C) / 84;
}
gSPDisplayList(gDisplayListHead++, D_8006F518);
if (D_83003B70 < 4) {
func_8001C6AC(arg0 - 4, (arg1 + temp_t0) - 4, 0x18, 0x18, D_200A300, 0x18, 0);
} else {
func_8001C6AC(arg0 - 4, (arg1 + temp_t0) - 4, 0x18, 0x18, D_200A780, 0x18, 0);
}
gSPDisplayList(gDisplayListHead++, D_8006F630);
func_8001F3F4();
D_83003B70 = (D_83003B70 + 1) % 8;
}
void func_83002F9C(s16 arg0, s16 arg1) {
gDPPipeSync(gDisplayListHead++);
gDPSetRenderMode(gDisplayListHead++, G_RM_OPA_SURF, G_RM_OPA_SURF2);
gDPSetEnvColor(gDisplayListHead++, 60, 60, 160, 255);
func_8001CF10(arg0, arg1, 0x20, 0x14, D_4000DD0, 0x20, 0);
}
void func_83003054(s16 arg0, s16 arg1, unk_D_83079E70_000* arg2) {
UNUSED s32 pad;
s32 i;
Color_RGB8* var_v0;
Color_RGB8 sp78 = { 0x3C, 0x3C, 0xA0 };
Color_RGB8 sp74 = { 0x64, 0x1E, 0x1E };
Color_RGB8 sp70 = { 0x1E, 0x1E, 0x64 };
s16 temp_s0;
for (i = 0; i < 6; i++) {
if (arg2->unk_00[i].unk_00 != 0) {
if (arg2->unk_00[i].unk_02 != 0) {
var_v0 = &sp78;
} else {
var_v0 = &sp74;
}
} else {
var_v0 = &sp70;
}
func_83001178(arg0 + i * 0x54, arg1, 0x54, 0x3C, var_v0->r, var_v0->g, var_v0->b);
}
gSPDisplayList(gDisplayListHead++, D_8006F518);
for (i = 0; i < 6; i++) {
temp_s0 = arg2->unk_00[i].unk_00;
if (temp_s0 != NULL) {
func_8001C6AC(arg0 + (i * 0x54) + 0x16, arg1 + 3, 0x28, 0x28, D_83003EF0[temp_s0 - 1], 0x28, 0);
}
}
gSPDisplayList(gDisplayListHead++, D_8006F630);
func_8001F3F4();
func_8001EBE0(4, 0);
func_8001F324(0xFF, 0xFF, 0xFF, 0xFF);
for (i = 0; i < 6; i++) {
temp_s0 = arg2->unk_00[i].unk_00;
if (temp_s0 != NULL) {
func_8001F1E8(arg0 + (i * 0x54) + 2, arg1 + 0x2A, func_83000020(temp_s0));
}
}
func_8001F444();
}
void func_830032D8(s32 arg0) {
unk_D_83079E70* ptr = &D_83079E70;
s32 i;
ptr->unk_00 = 0;
ptr->unk_04 = 0;
for (i = 0; i < 6; i++) {
ptr->unk_14[i].unk_18 = &ptr->unk_14[(i + 1) % 6];
ptr->unk_14[i].unk_1C = &ptr->unk_14[(i + 5) % 6];
}
if (arg0 != 0) {
for (i = 0; i < 151; i++) {
func_8001B0DC(D_83003EF0[i], i + 1, NULL);
}
}
}
void func_830033F0(void) {
unk_D_83079E70* ptr = &D_83079E70;
if (ptr->unk_00 != 0) {
switch (ptr->unk_00) {
case 1:
func_83002AB4(&D_83079E70);
break;
case 2:
func_83002B1C(&D_83079E70);
break;
case 3:
func_83002BA4(&D_83079E70);
break;
case 4:
func_83002C30(&D_83079E70);
break;
}
}
}
void func_83003484(void) {
s16 spA6;
s16 spA4;
unk_D_83079E70* ptr = &D_83079E70;
if (ptr->unk_04 == 0) {
return;
}
spA6 = (((0x400 - ptr->unk_04) * 0x108) / 1024) + 0x38;
spA4 = (((0x400 - ptr->unk_04) * 0xA8) / 1024) + 0x5C;
func_83000F10(spA6, spA4, (ptr->unk_04 * 0x210) / 1024, (ptr->unk_04 * 0x150) / 1024);
if (ptr->unk_04 >= 0x400) {
UNUSED s32 pad;
s32 i;
unk_D_83079E70_000* var_s0;
func_83001178(spA6, spA4, 0x210, 0x24, 0x1E, 0x64, 0x64);
func_83001178(spA6, spA4 + 0x24, 0x18, 0x12C, 0x1E, 0x1E, 0x64);
func_83002C74(spA6 + 4, spA4 + 0x2C, ptr);
gSPDisplayList(gDisplayListHead++, D_8006F518);
func_83002F9C(spA6 + 8, spA4 + 8);
gSPDisplayList(gDisplayListHead++, D_8006F630);
func_8001F3F4();
func_8001F324(0xFF, 0xFF, 0xFF, 0xFF);
func_8001EBE0(8, 0);
func_8002D600(3, ptr->unk_06);
{
char sp4C[64];
func_8001F1E8(spA6 + 0x2C, spA4 + 8, func_8002D7C0(sp4C, sizeof(sp4C), D_830039C0, 3));
}
func_8001F444();
if (ptr->unk_0C == 0) {
return;
}
if (ptr->unk_00 == 3) {
s16 sp4A = spA4 - ((ptr->unk_0A * 0x3C * (4 - ptr->unk_02)) / 4);
func_800060E0(&gDisplayListHead, spA6 + 0x18, spA4 + 0x24, 0x1F8, 0x12C);
if (ptr->unk_0A > 0) {
var_s0 = ptr->unk_10->unk_1C;
for (i = 0; i < 6; i++) {
func_83003054(spA6 + 0x18, sp4A + 0x24 + i * 0x3C, var_s0);
var_s0 = var_s0->unk_18;
}
} else {
var_s0 = ptr->unk_10;
for (i = 0; i < 6; i++) {
func_83003054(spA6 + 0x18, sp4A - 0x18 + i * 0x3C, var_s0);
var_s0 = var_s0->unk_18;
}
}
func_800060E0(&gDisplayListHead, 0, 0, 0x280, 0x1E0);
} else {
var_s0 = ptr->unk_10;
for (i = 0; i < 5; i++) {
func_83003054(spA6 + 0x18, spA4 + 0x24 + i * 0x3C, var_s0);
var_s0 = var_s0->unk_18;
}
}
if (ptr->unk_0C > 0) {
ptr->unk_0C -= 1;
}
}
if (1) {}
}
void func_830038DC(void) {
unk_D_83079E70* ptr = &D_83079E70;
s32 i;
ptr->unk_00 = 1;
ptr->unk_02 = 5;
ptr->unk_04 = 0;
ptr->unk_08 = 0;
ptr->unk_0A = 0;
ptr->unk_0C = -1;
ptr->unk_06 = func_830027C8(D_800AE540.unk_0001);
ptr->unk_10 = &ptr->unk_14[0];
for (i = 0; i < 5; i++) {
func_83002848(&ptr->unk_14[i], i, D_800AE540.unk_0001);
}
}
s32 func_83003988(void) {
s32 ret;
if (D_83079E70.unk_00 != 0) {
ret = 1;
} else {
ret = 0;
}
return ret;
}
s32 func_830039AC(void) {
return D_83079E70.unk_04;
}

View File

@ -1962,10 +1962,14 @@
- [0x2BED40, c, fragments/55/fragment55_2BED40]
- [0x2C0F90, c, fragments/55/fragment55_2C0F90]
- [0x2C13F0, c, fragments/55/fragment55_2C13F0]
- [0x2C26E0, data, fragments/55/fragment55_data]
- [0x2C28A0, rodata, fragments/55/fragment55_rodata]
- [0x2C26E0, .data, fragments/55/fragment55_2BED40]
- [0x2C2890, .data, fragments/55/fragment55_2C13F0]
- [0x2C28A0, .rodata, fragments/55/fragment55_2BED40]
- [0x2C2970, .rodata, fragments/55/fragment55_2C13F0]
- {vram: 0x83003C80, type: bss, name: fragments/55/fragment55_bss}
- {vram: 0x83003C80, type: .bss, name: fragments/55/fragment55_2BED40}
- {vram: 0x83003EE0, type: .bss, name: fragments/55/fragment55_2C0F90}
- {vram: 0x83003EF0, type: .bss, name: fragments/55/fragment55_2C13F0}
- name: fragment55_relocs
type: code