This commit is contained in:
Maide
2024-10-01 09:13:11 +01:00
parent 926038be99
commit e263e05f4a
15 changed files with 3288 additions and 84 deletions

View File

@@ -142,7 +142,9 @@ typedef struct unk_D_86002F58_004_000 {
/* 0x0DC */ Vec3f unk_0DC;
/* 0x0E0 */ char pad0E0[0x4];
/* 0x0EC */ Vec3f unk_0EC;
/* 0x0F8 */ char pad0F8[0x70];
/* 0x0F8 */ char pad0F8[0x4];
/* 0x0FC */ Vec3f unk_0FC;
/* 0x108 */ char pad108[0x60];
} unk_D_86002F58_004_000; // size = 0x168
typedef struct unk_D_86002F34_000_014_004 {
@@ -166,10 +168,10 @@ typedef struct unk_D_86002F34_000 {
/* 0x04 */ char pad04[0x2];
/* 0x06 */ s16 unk_06;
/* 0x08 */ struct unk_D_86002F34_000* unk_08;
/* 0x0C */ struct unk_D_86002F34_000* unk_0C;
/* 0x0C */ struct unk_D_86002F34_00C* unk_0C;
/* 0x10 */ s32 (*unk_10)(s32, struct unk_D_86002F34_000*);
/* 0x14 */ unk_D_86002F34_000_014* unk_14;
} unk_D_86002F34_000; // size >= 0x18
} unk_D_86002F34_000; // size = 0x18
typedef struct unk_D_86002F34_00C_018 {
/* 0x00 */ Vp* vp;

View File

@@ -51,6 +51,8 @@
#define ABS(x) ((x) < 0 ? -(x) : (x))
#define ABS_ALT(x) ((x) >= 0 ? (x) : -(x))
#define ABS_NORMALIZED(x) ((ABS_ALT((x)) < (0.000001f)) ? 0.0f : (x))
#define FRAGMENT_ID(fragment) ((((u32)fragment##_TEXT_START & 0x0FF00000) >> 0x14) - 0x10)
#define ASSET_ID(asset) (((u32)asset & 0x0F000000) >> 0x18)

View File

@@ -62,7 +62,7 @@ extern Gfx D_1002508[];
extern Gfx D_1002590[];
extern u8 D_2000000[];
extern u8 D_3000000[];
extern u8 D_4000000[];
extern u8 D_04000000[];
extern u8 D_4000008[];
extern u8 D_4000810[];
extern u8 D_4001018[];
@@ -78,6 +78,29 @@ extern u8 D_2028A20[];
extern u8 D_2028A60[];
extern u8 D_2028AA0[];
extern u32 D_B0000D10;
extern u8 D_400C800[];
extern u8 D_400CA00[];
extern u8 D_400CC00[];
extern u8 D_400CE00[];
extern u8 D_400CF00[];
extern u8 D_400D100[];
extern u8 D_400D200[];
extern u8 D_04000000[];
extern u8 D_04000800[];
extern u8 D_04001000[];
extern u8 D_04001800[];
extern u8 D_04002000[];
extern u8 D_04002800[];
extern u8 D_04003000[];
extern u8 D_04003800[];
extern u8 D_04004000[];
extern u8 D_04005000[];
extern u8 D_04006000[];
extern u8 D_04007000[];
extern u8 D_04008000[];
extern u8 D_04009000[];
extern u8 D_0400A000[];
extern u8 D_0400B000[];
extern u8 D_800818E0[0x20];
@@ -94,6 +117,7 @@ extern u8 D_86200000;
extern u8 D_86800000;
extern u8 D_86C00000;
extern u8 D_87A00000;
extern u8 D_87000000[];
typedef struct unk_D_800A7440 {
/* 0x00 */ s16 x1;

View File

@@ -308,3 +308,27 @@ D_879060E0 = 0x879060E0; // size:0xC
D_87906100 = 0x87906100; // size:0xC
D_87906110 = 0x87906110; // size:0xC
D_8140E628 = 0x8140E628; // size:0x90
D_400C800 = 0x400C800;
D_400CA00 = 0x400CA00;
D_400CC00 = 0x400CC00;
D_400CE00 = 0x400CE00;
D_400CF00 = 0x400CF00;
D_400D100 = 0x400D100;
D_400D200 = 0x400D200;
D_86808498 = 0x86808498; // size:0x38
D_04000000 = 0x04000000;
D_04000800 = 0x04000800;
D_04001000 = 0x04001000;
D_04001800 = 0x04001800;
D_04002000 = 0x04002000;
D_04002800 = 0x04002800;
D_04003000 = 0x04003000;
D_04003800 = 0x04003800;
D_04004000 = 0x04004000;
D_04005000 = 0x04005000;
D_04006000 = 0x04006000;
D_04007000 = 0x04007000;
D_04008000 = 0x04008000;
D_04009000 = 0x04009000;
D_0400A000 = 0x0400A000;
D_0400B000 = 0x0400B000;

View File

@@ -94,7 +94,7 @@ extern u8* D_800ABE00;
#pragma GLOBAL_ASM("asm/us/nonmatchings/18480/func_80018AD0.s")
unk_D_86002F34* func_80018B70(MemoryBlock* arg0, void* arg1) {
void* func_80018B70(MemoryBlock* arg0, void* arg1) {
extern func_D_8006F2B0 D_8006F2B0[];
D_800ABD34 = NULL;
@@ -107,7 +107,7 @@ unk_D_86002F34* func_80018B70(MemoryBlock* arg0, void* arg1) {
D_800ABD38[0] = 0;
D_800ABD38[1] = 0;
while (D_800ABE00 != 0) {
while (D_800ABE00 != NULL) {
D_8006F2B0[*D_800ABE00]();
}

View File

@@ -4,7 +4,7 @@
#include "global.h"
#include "src/memory.h"
unk_D_86002F34* func_80018B70(MemoryBlock*, void*);
void* func_80018B70(MemoryBlock*, void*);
#endif // _18480_H_

View File

@@ -0,0 +1,183 @@
#ifndef _FRAGMENT14_H_
#define _FRAGMENT14_H_
#include "global.h"
#include "src/controller.h"
typedef struct unk_D_868084D8_038 {
/* 0x000 */ s16 unk_000;
/* 0x002 */ s16 unk_002;
/* 0x004 */ char unk004[0x2];
/* 0x006 */ s16 unk_006;
/* 0x008 */ struct unk_D_868084D8_038* unk_008;
/* 0x00C */ Vec3f unk_00C;
/* 0x018 */ char unk018[0x1B8];
/* 0x1D0 */ Vec3f unk_1D0;
} unk_D_868084D8_038; // size >= 0x1DC
typedef struct unk_D_868084D8_040 {
/* 0x00 */char unk00[0x1];
/* 0x01 */u8 unk_01;
/* 0x02 */char unk02[0x1];
/* 0x03 */u8 unk_03;
} unk_D_868084D8_040; // size >= 0x2
typedef struct unk_D_868084D8 {
/* 0x00 */ u16 unk_00;
/* 0x02 */ u16 unk_02;
/* 0x04 */ s16 unk_04;
/* 0x06 */ s16 unk_06;
/* 0x08 */ Color_RGBA8_u32 unk_08;
/* 0x0C */ s32 unk_0C;
/* 0x10 */ s32 unk_10;
/* 0x14 */ Vec3f unk_14;
/* 0x20 */ Vec3f unk_20;
/* 0x2C */ f32 unk_2C;
/* 0x30 */ f32 unk_30;
/* 0x34 */ f32 unk_34;
/* 0x38 */ unk_D_868084D8_038* unk_38;
/* 0x3C */ Gfx* unk_3C;
/* 0x40 */ unk_D_86002F34_alt9* unk_40;
} unk_D_868084D8; // size = 0x44
typedef struct unk_D_86807558_040 {
/* 0x00 */ s16 unk_00;
/* 0x02 */ s16 unk_02;
/* 0x04 */ s16 unk_04;
/* 0x08 */ f32 unk_08;
/* 0x0C */ f32 unk_0C;
/* 0x10 */ f32 unk_10;
/* 0x14 */ f32 unk_14;
/* 0x18 */ s16 unk_18;
} unk_D_86807558_040; // size >= 0x1C
typedef struct unk_D_86807558_098 {
/* 0x00 */ Vec3f unk_00;
/* 0x0C */ Vec3f unk_0C;
/* 0x18 */ Vec3f unk_18;
} unk_D_86807558_098; // size = 0x24
typedef struct unk_D_86807558 {
/* 0x000 */ s16 unk_000;
/* 0x002 */ u16 unk_002;
/* 0x004 */ s16 unk_004;
/* 0x004 */ s16 unk_006;
/* 0x008 */ s32 unk_008;
/* 0x00C */ s16 unk_00C;
/* 0x010 */ unk_D_868084D8* unk_010;
/* 0x014 */ s16 unk_014;
/* 0x016 */ u16 unk_016;
/* 0x018 */ s32 unk_018;
/* 0x01C */ s32 unk_01C;
/* 0x020 */ s32 unk_020;
/* 0x024 */ s32 unk_024;
/* 0x028 */ s16 unk_028;
/* 0x02A */ s16 unk_02A;
/* 0x02C */ s16 unk_02C[9];
/* 0x03E */ s16 unk_03E;
/* 0x040 */ unk_D_86807558_040 unk_040;
/* 0x05C */ s32 unk_05C;
/* 0x060 */ s32 unk_060;
/* 0x064 */ Controller* unk_064;
/* 0x068 */ Vec3f unk_068;
/* 0x074 */ Vec3f unk_074;
/* 0x080 */ Vec3f unk_080;
/* 0x08C */ Vec3f unk_08C;
/* 0x098 */ unk_D_86807558_098 unk_098;
/* 0x0BC */ s16 unk_0BC;
/* 0x0BE */ s16 unk_0BE;
/* 0x0C0 */ s32 unk_0C0;
/* 0x0C4 */ s32 unk_0C4;
/* 0x0C8 */ f32 unk_0C8;
/* 0x0CC */ s16 unk_0CC;
/* 0x0D0 */ Color_RGBA8_u32 unk_0D0;
/* 0x0D4 */ s16 unk_0D4;
/* 0x0D8 */ f32 unk_0D8;
/* 0x0DC */ unk_D_868084D8* unk_0DC;
/* 0x0E0 */ s16 unk_0E0;
/* 0x0E2 */ s16 unk_0E2;
/* 0x0E4 */ unk_D_86002F58_004_000 unk_0E4;
/* 0x24C */ unk_D_86002F58_004_000 unk_24C;
/* 0x3B4 */ u32* unk_3B4;
} unk_D_86807558; // size = 0x3B8
typedef struct unk_D_86808498 {
/* 0x00 */ Vec3f unk_00;
/* 0x0C */ Vec3f unk_0C;
/* 0x18 */ s16 unk_18;
/* 0x1A */ s16 unk_1A;
/* 0x1C */ f32 unk_1C;
/* 0x20 */ Vec3f unk_20;
/* 0x2C */ Vec3f unk_2C;
} unk_D_86808498; // size >= 0x38
typedef struct unk_D_86808808_018 {
/* 0x000 */ unk_D_86002F58_004_000_000 unk_000;
/* 0x018 */ char unk018[0xC];
/* 0x024 */ Vec3f unk_024;
/* 0x030 */ Vec3f unk_030;
} unk_D_86808808_018; // size >= 0x3C
typedef struct unk_D_86808808 {
/* 0x000 */ s16 unk_000;
/* 0x002 */ s16 unk_002;
/* 0x004 */ u16 unk_004;
/* 0x006 */ s16 unk_006;
/* 0x008 */ s32 unk_008;
/* 0x00C */ Vec3f unk_00C;
/* 0x018 */ unk_D_86808808_018 unk_018;
/* 0x054 */ char unk054[0x12C];
} unk_D_86808808; // size = 0x180
typedef struct unk_D_86807180 {
/* 0x00 */ s32 unk_00;
/* 0x04 */ u8* unk_04;
/* 0x08 */ u8* unk_08;
/* 0x10 */ char* unk_0C;
/* 0x10 */ s16 unk_10;
/* 0x12 */ s16 unk_12;
/* 0x14 */ s32 unk_14;
/* 0x18 */ s16 unk_18;
} unk_D_86807180; // size = 0x1C
extern s32 D_86807160[];
extern unk_D_86807180 D_86807180[];
extern unk_D_86002F34* D_86807500;
extern s32 D_86807510;
extern unk_D_86807558 D_86807558[4];
extern unk_D_868084D8 D_868084D8[12];
void func_86800020(s32 arg0);
void func_86800070(void);
Gfx* func_868001A8(Gfx* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4);
void func_868004F4(void);
void func_868005A8(Color_RGB8* arg0, Color_RGB8* arg1, s32 arg2, s32 arg3, s32 arg4);
void func_8680091C(s32 arg0, s16 arg1, s16 arg2, f32 arg3);
void func_86800B38(void);
void func_86801644(void);
void func_86801700(void);
s32 func_86801840(void);
s32 func_86801884(void);
void func_86801CA8(void);
void func_86801D48(void);
void func_86801E2C(s32 arg0, UNUSED s32 arg1);
void func_86805108(u16, s32);
s32 func_868055D4(void);
void func_86805858(s32);
void func_86805974(void);
void func_86805BD4(void);
void func_86805CB4(void);
f32 func_86805E94(unk_D_868084D8*, Vec3f*, Vec3f*);
void func_86806868(unk_D_868084D8*, s32, unk_D_86807558*);
s32 func_86806930(unk_D_868084D8*);
s16 func_86806950(s32);
void func_86806964(s32);
void func_86806A50(void);
void func_86806BF0(void);
#endif // _FRAGMENT14_H_

View File

@@ -1,29 +1,766 @@
#include "global.h"
#include "fragment14.h"
#include "src/12D80.h"
#include "src/18480.h"
#include "src/19840.h"
#include "src/1C720.h"
#include "src/1CF30.h"
#include "src/20330.h"
#include "src/20470.h"
#include "src/2E110.h"
#include "src/3FB0.h"
#include "src/490A0.h"
#include "src/49790.h"
#include "src/4BA90.h"
#include "src/4BDC0.h"
#include "src/4CBC0.h"
#include "src/50860.h"
#include "src/6A40.h"
#include "src/6BC0.h"
#include "src/controller.h"
#include "src/fragments/2/fragment2.h"
#include "src/fragments/3/fragment3.h"
#include "src/memory.h"
#include "src/stage_loader.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/14/fragment14_144300/func_86800020.s")
typedef struct unk_D_86806E20 {
/* 0x00 */ u8* texture;
/* 0x02 */ s16 width;
/* 0x04 */ s16 height;
} unk_D_86806E20; // size = 0x8
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/14/fragment14_144300/func_86800070.s")
static u32 D_86806CD0[] = {
0x0C00FFFF, 0x05000000, 0x0B00001E, 0x00000000, 0x014000F0, 0x0000000F, 0x00000000, 0x00000000,
0x05000000, 0x0D000000, 0x05000000, 0x14000000, 0x002B0012, 0xFFFFFF32, 0x16FFFFFF, 0x0F000003,
0x05000000, 0x1F00FFFF, 0x00000000, 0x00000000, 0xFFFF0000, 0x00640064, 0x00640000, 0x05000000,
0x00000000, 0x87006D00, 0x06000000, 0x06000000, 0x05000000, 0x0A000000, 0x800AC840, 0x06000000,
0x06000000, 0x06000000, 0x03000000, 0x87806398, 0x06000000, 0x01000000,
};
static Controller** D_86806D68 = &gPlayer1Controller;
static Controller** D_86806D6C = &gPlayer2Controller;
static Controller** D_86806D70 = &gPlayer3Controller;
static Controller** D_86806D74 = &gPlayer4Controller;
static s16 D_86806D78[] = { 0x1E, 0x1E, 0x108, 0x108 };
static s16 D_86806D80[] = { 0xCC, 0x10, 0x10, 0xCC };
static unk_D_86806E20 D_86806D88 = { 0x400C800, 32, 8 };
static unk_D_86806E20 D_86806D90 = { 0x400CA00, 32, 8 };
static unk_D_86806E20 D_86806D98 = { 0x400CC00, 32, 8 };
static unk_D_86806E20 D_86806DA0 = { 0x400CE00, 32, 4 };
static unk_D_86806E20 D_86806DA8 = { 0x400CF00, 32, 8 };
static unk_D_86806E20 D_86806DB0 = { 0x400D100, 32, 4 };
static unk_D_86806E20 D_86806DB8 = { 0x400D200, 32, 4 };
static unk_D_86806E20* D_86806DC0[] = { &D_86806D90, &D_86806D88, NULL };
static unk_D_86806E20* D_86806DCC[] = { &D_86806DA0, &D_86806D98, &D_86806D88, NULL };
static unk_D_86806E20* D_86806DDC[] = { &D_86806DA0, &D_86806DB0, &D_86806DA8, &D_86806D88, NULL };
static unk_D_86806E20* D_86806DF0[] = { &D_86806DA0, &D_86806DB0, &D_86806DB8, &D_86806DA8, &D_86806D88, NULL };
static unk_D_86806E20* D_86806E08[] = {
&D_86806DA0, &D_86806DB0, &D_86806DB8, &D_86806DB8, &D_86806DA8, &D_86806D88,
};
static unk_D_86806E20** D_86806E20[] = { NULL, D_86806DC0, D_86806DCC, D_86806DDC, D_86806DF0, D_86806E08 };
static unk_func_87801684 D_86806E38[] = {
{ 0x0303ED80, 0xE }, { 0x0303F180, 2 }, { 0x0303F580, 6 }, { 0x0303F180, 2 }, { NULL, 0 },
};
static unk_func_87801684 D_86806E60[] = {
{ 0x03040580, 0x12 }, { 0x03040980, 2 }, { 0x03040D80, 8 }, { 0x03040980, 2 }, { NULL, 0 },
};
static unk_func_87801684 D_86806E88[] = {
{ 0x030397C0, 0xE }, { 0x03034E40, 2 }, { 0x03035A80, 2 }, { 0x03034E40, 2 }, { 0x030397C0, 2 }, { 0x0303D500, 2 },
{ 0x0303E140, 2 }, { 0x03038B80, 2 }, { 0x03037300, 2 }, { 0x03037F40, 2 }, { 0x03035A80, 2 }, { 0x0303BC80, 2 },
{ 0x0303B040, 2 }, { 0x0303A400, 2 }, { 0x030397C0, 2 }, { 0x030366C0, 2 }, { 0x03037300, 2 }, { 0x030366C0, 2 },
{ 0x030397C0, 2 }, { 0x0303A400, 2 }, { 0x0303B040, 2 }, { 0x0303A400, 2 }, { NULL, 0 },
};
static Color_RGB8 D_86806F40 = { 255, 255, 255 };
static Color_RGB8 D_86806F44[] = {
{ 0, 0, 0xFF },
{ 0, 0xFF, 0 },
{ 0xFF, 0, 0 },
{ 0xFF, 0xFF, 0 },
};
static Color_RGB8 D_86806F50[] = {
{ 255, 0, 0 },
{ 0, 255, 0 },
{ 255, 255, 100 },
};
static Color_RGB8 D_86806F5C[] = {
{ 0, 255, 0 },
{ 255, 255, 100 },
{ 255, 0, 0 },
};
static Color_RGB8 D_86806F68[] = {
{ 0, 0, 255 },
{ 255, 0, 0 },
{ 255, 255, 100 },
{ 0, 0, 0 },
};
static s32 D_86806F74[] = { 0x50002, 0x50002, 0x50001, 0x50002, 0, 0, 0 };
unk_D_86002F34* D_86807500;
static unk_D_800AC870* D_86807504;
static u32 D_86807508;
static s32 D_8680750C;
s32 D_86807510;
static Controller D_86807518;
static u16 D_8680753C;
static s16 D_8680753E;
static s16 D_86807540;
void func_86800020(s32 arg0) {
if (D_8680753E == 0) {
func_8004FC60(1, arg0);
func_8004FC60(2, arg0);
} else {
func_8004B094(arg0);
}
}
void func_86800070(void) {
Controller* temp_v0;
Cont_StartReadInputs();
Cont_ReadInputs();
func_8001F730();
bzero(&D_86807518, sizeof(Controller));
temp_v0 = *D_86806D68;
D_86807518.buttonDown |= temp_v0->buttonDown;
D_86807518.buttonPressed |= temp_v0->buttonPressed;
D_86807518.unkA |= temp_v0->unkA;
temp_v0 = *D_86806D6C;
D_86807518.buttonDown |= temp_v0->buttonDown;
D_86807518.buttonPressed |= temp_v0->buttonPressed;
D_86807518.unkA |= temp_v0->unkA;
temp_v0 = *D_86806D70;
D_86807518.buttonDown |= temp_v0->buttonDown;
D_86807518.buttonPressed |= temp_v0->buttonPressed;
D_86807518.unkA |= temp_v0->unkA;
temp_v0 = *D_86806D74;
D_86807518.buttonDown |= temp_v0->buttonDown;
D_86807518.buttonPressed |= temp_v0->buttonPressed;
D_86807518.unkA |= temp_v0->unkA;
if (1) {}
}
#ifdef NON_MATCHING
Gfx* func_868001A8(Gfx* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) {
s32 sp34;
unk_D_86806E20** var_a3;
unk_D_86806E20* ptr;
s32 var_s0;
s32 var_v0;
s32 var_v1;
var_s0 = (arg1 != 0) ? arg2 + 6 : arg2;
var_v1 = arg3 + 24;
while (arg4 > 0) {
sp34 = var_v1;
if (arg4 < 5) {
var_a3 = D_86806E20[arg4];
arg4 = 0;
} else {
var_a3 = &D_86806E08[0];
arg4 -= 5;
}
var_v0 = var_s0;
while (*var_a3 != NULL) {
ptr = *var_a3;
sp34 -= (ptr->height * 3) / 4;
gDPLoadTextureBlock(arg0++, ptr->texture, G_IM_FMT_RGBA, G_IM_SIZ_16b, ptr->width, ptr->height, 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);
gSPTextureRectangle(arg0++, var_v0 << 2, sp34 << 2, (((ptr->width * 9) / 16) + var_v0) << 2,
(sp34 + ((ptr->height * 3) / 4)) << 2, G_TX_RENDERTILE, 0, 0, 0x071C, 0x0555);
var_a3++;
}
if (arg1 == 0) {
var_s0 += 20;
} else {
var_s0 -= 20;
}
}
return arg0;
}
#else
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/14/fragment14_144300/func_868001A8.s")
#endif
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/14/fragment14_144300/func_868004F4.s")
void func_868004F4(void) {
s32 i;
Gfx* var_s4 = gDisplayListHead;
unk_D_86807558* ptr;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/14/fragment14_144300/func_868005A8.s")
for (i = 0, ptr = D_86807558; i < 4; i++, ptr++) {
var_s4 = func_868001A8(var_s4, i / 2, D_86806D78[i], D_86806D80[i], ptr->unk_02A);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/14/fragment14_144300/func_8680091C.s")
gDisplayListHead = var_s4;
}
void func_868005A8(Color_RGB8* arg0, Color_RGB8* arg1, s32 arg2, s32 arg3, s32 arg4) {
Color_RGB8* var_v0;
Color_RGB8* var_v1;
f32 temp_fv0;
f32 var_ft5;
s32 temp_a0;
s32 tmp;
if (arg2 >= 2) {
tmp = D_86807508 % arg3;
temp_fv0 = tmp;
temp_fv0 /= arg3;
temp_a0 = (D_86807508 % (arg3 * arg2)) / arg3;
if (arg4 == 0) {
var_v0 = &arg1[temp_a0];
var_v1 = &arg1[(temp_a0 + 1) % arg2];
} else {
temp_a0 = (arg2 - temp_a0);
temp_a0--;
var_v0 = &arg1[temp_a0];
temp_a0--;
if (temp_a0 < 0) {
temp_a0 += arg2;
}
var_v1 = &arg1[temp_a0];
}
arg0->r = var_v0->r + ((var_v1->r - var_v0->r) * temp_fv0);
arg0->g = var_v0->g + ((var_v1->g - var_v0->g) * temp_fv0);
arg0->b = var_v0->b + ((var_v1->b - var_v0->b) * temp_fv0);
}
}
void func_8680091C(s32 arg0, s16 arg1, s16 arg2, f32 arg3) {
s16 sp36;
s16 sp34;
s16 sp32;
if ((arg0 > 0) && (arg0 < 9) && (arg3 != 0.0f)) {
sp36 = ROUND_MAX(1024.0f / arg3);
sp34 = ROUND_MAX(32.0f * arg3);
sp32 = ROUND_MAX(32.0f * arg3);
gDPLoadTextureBlock(gDisplayListHead++, D_86807180[arg0].unk_08, G_IM_FMT_RGBA, G_IM_SIZ_32b, 32, 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(arg1, arg2, sp34, sp32, 0, 0, sp36, sp36, 0);
}
}
#ifdef NON_MATCHING
void func_86800B38(void) {
s32 pad1;
s32 pad2;
s32 i;
Color_RGB8 spD8[4];
Color_RGB8 spD0[2];
Color_RGB8 spC4[4];
Color_RGB8 spB8[4];
Color_RGB8 spB4 = D_86806F40;
s32 var_v0;
gSPDisplayList(gDisplayListHead++, D_8006F518);
if (D_8680753C & 2) {
func_868004F4();
for (i = 0; i < 4; i++) {
if ((i == 0) || (i == 3)) {
var_v0 = -0x18;
} else {
var_v0 = 0x1C;
}
if (!(D_86807558[i].unk_002 & 4)) {
func_87801644(i, D_86806D78[i], D_86806D80[i] + var_v0, 0.75f);
} else {
func_87801644(-1 - i, D_86806D78[i], D_86806D80[i] + var_v0, 0.75f);
}
}
}
if (D_8680753E != 0) {
func_878021B4(0x1E, 0x17);
}
gSPDisplayList(gDisplayListHead++, D_8006F630);
if (D_8680753C & 1) {
func_80020460(0x18, 0x16, 0x110, 0x90, 0x15);
func_80020460(0x18, 0xA5, 0x110, 0x36, 0x14B);
func_8780118C(0x17, 0x16, 2, 0x90);
func_8780118C(0x127, 0x16, 2, 0x90);
}
func_8001F3F4();
func_8001F470();
if (D_8680753C & 1) {
s32 spA4;
s32 spA0;
s32 sp9C;
s32 sp98;
s32 sp94;
func_8001EBE0(2, 0);
func_8001F324(0xFF, 0xFF, 0xFF, 0xFF);
func_8001F36C(0xF9, 0xF4, 0, 0xFF);
func_8001F1E8(0xA0 - (func_878013D4(D_86807504, func_8002D7C0(NULL, 0, D_87806330, 0xC)) / 2), 0x20,
func_8002D7C0(NULL, 0, D_87806330, 0xC));
func_8001F324(0xFF, 0xFF, 0xFF, 0xFF);
func_8001F36C(0xFF, 0xFF, 0xFF, 0xFF);
func_8001F3B4(0xC);
func_8001F1E8(0x28, 0x34, func_8002D7C0(NULL, 0, D_87806330, 0x32));
func_8001F1E8(0x28, 0x4C, func_8002D7C0(NULL, 0, D_87806330, 0x33));
func_8001F1E8(0x78, 0xB2, func_8002D7C0(NULL, 0, D_87806330, 0x5C));
func_8001F1E8(0xDA, 0xB2, func_8002D7C0(NULL, 0, D_87806330, 0x5C));
func_8001F1E8(0x86, 0xC8, func_8002D7C0(NULL, 0, D_87806330, 0x5C));
func_8001F324(0xE6, 0xD2, 0xFF, 0xFF);
func_8001F36C(0x82, 0x50, 0xD2, 0xFF);
func_8001F1E8(0x8C, 0xB2, func_8002D7C0(NULL, 0, D_87806330, 0x34));
func_8001F324(0xC8, 0xC8, 0xFF, 0xFF);
func_8001F36C(0x50, 0x50, 0xFF, 0xFF);
func_8001F1E8(0xEE, 0xB2, func_8002D7C0(NULL, 0, D_87806330, 0x35));
func_8001F324(0xFF, 0xFF, 0xFF, 0xFF);
func_8001F36C(0xFF, 0x80, 0x80, 0xFF);
func_8001F1E8(0x9A, 0xC8, func_8002D7C0(NULL, 0, D_87806330, 0x14));
func_87801290(&spA4, &spA0, func_8002D7C0(NULL, 0, D_87806330, 0x32), func_8002D7C0(NULL, 0, D_87806330, 0x5F),
0xC);
func_8001F324(0xC8, 0xC8, 0xFF, 0xFF);
func_8001F36C(0x50, 0x50, 0xFF, 0xFF);
func_8001F1E8(spA4 + 0x28, spA0 + 0x34, func_8002D7C0(NULL, 0, D_87806330, 0x5F));
func_8001EBE0(1, 0);
func_8001F324(0xFF, 0xFF, 0xFF, 0xFF);
func_8001F36C(0xFF, 0xFF, 0xFF, 0xFF);
for (i = 0; i < 8; i++) {
pad1 = i % 4;
if (pad1) {}
sp9C = func_8001F5B0(0, 0, func_8002D7C0(NULL, 0, D_87806330, 0x36));
sp98 = func_8001F5B0(0, 0, func_8002D7C0(NULL, 0, D_87806330, i + 0x36));
func_8001F1E8((((pad1 * 60) + sp9C) - sp98) + 0x46, ((i / 4) << 5) + 0x72,
func_8002D7C0(NULL, 0, D_87806330, i + 0x36));
}
}
switch (D_8680750C) {
s32 var_s4;
s32 var_s7;
case 4:
break;
case 2:
case 3:
if (D_8680753E == 0) {
func_8001EBE0(4, 0);
for (i = 0; i < 4; i++) {
f32 v;
if ((D_86807558[i].unk_040.unk_00 != 0) && (D_86807558[i].unk_040.unk_00 != 1)) {
if ((i / 2) != 0) {
var_s7 = -0x14;
} else {
var_s7 = 0x1E;
}
if ((i == 0) || (i == 3)) {
var_s4 = -0x16;
} else {
var_s4 = 0x1E;
}
if (D_86807558[i].unk_03E < 5) {
func_8001F324(0xFF, 0xFF, 0xFF, D_86807558[i].unk_040.unk_18);
func_8001F36C(D_86806F44[i].r, D_86806F44[i].g, D_86806F44[i].b,
D_86807558[i].unk_040.unk_18);
} else {
func_868005A8(spD8, D_86806F68, 4, 4, 0);
func_8001F324(spD8[0].r, spD8[0].g, spD8[0].b, D_86807558[i].unk_040.unk_18);
func_8001F36C(spD8[0].r, spD8[0].g, spD8[0].b, D_86807558[i].unk_040.unk_18);
}
v = D_86807558[i].unk_040.unk_08;
func_8001F1E8(D_86806D78[i] + var_s7 + (s16)v,
(D_86806D80[i] + var_s4) - (s16)D_86807558[i].unk_040.unk_0C, "x%d",
D_86807558[i].unk_03E);
}
}
}
break;
case 5:
case 6:
func_8001EBE0(4, 0);
for (i = 0; i < 4; i++) {
char sp78[16];
spD0[0] = spB4;
spD0[1] = D_86806F44[i];
func_868005A8(&spB8[i], spD0, 2, 0x1E, 0);
func_868005A8(&spC4[i], spD0, 2, 0x1E, 1);
if ((i / 2) != 0) {
var_s7 = -0x32;
} else {
var_s7 = 0x1C;
}
if ((i == 0) || (i == 3)) {
var_s4 = -0x16;
} else {
var_s4 = 0x1E;
}
if ((D_86807558[i].unk_028 == 1) && (D_86807558[i].unk_01C == D_86807558[i].unk_018) &&
(D_86807558[i].unk_018 > 0)) {
func_868005A8(&spD8, &D_86806F50, 3, 4, 0);
func_8001F324(spD8[0].r, spD8[0].g, spD8[0].b, 0xFF);
func_868005A8(&spD8, &D_86806F5C, 3, 4, 0);
func_8001F36C(spD8[0].r, spD8[0].g, spD8[0].b, 0xFF);
} else {
func_8001F324(spB8[i].r, spB8[i].g, spB8[i].b, 0xFF);
func_8001F36C(spB8[i + 4].r, spB8[i + 4].g, spB8[i + 4].b, 0xFF);
}
func_8002D600(6, D_86807558[i].unk_01C);
func_8001F1E8(D_86806D78[i] + var_s7, D_86806D80[i] + var_s4,
func_8002D7C0(&sp78, 0x20, D_87806330, 0x5E));
}
break;
}
func_8001F4C4();
func_8001F444();
if (D_8680753C & 1) {
gSPDisplayList(gDisplayListHead++, D_8006F518);
for (i = 0; i < 8; i++) {
if ((i % 4) >= 2) {
var_v0 = 0x3C;
} else {
var_v0 = 0x40;
}
pad1 = i % 4;
func_8680091C(D_86807160[i], (var_v0 * pad1) + 0x28, ((i / 4) << 5) + 0x68, 0.75f);
}
func_87801D5C(0, 0x5A, 0xA8, D_86806E88);
func_87801684(0xC8, 0xB0, D_86806E38);
func_87801824(0x74, 0xC6, D_86806E60);
func_87801F48(0, 0x19, 0xA6);
}
}
#else
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/14/fragment14_144300/func_86800B38.s")
#endif
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/14/fragment14_144300/func_86801644.s")
void func_86801644(void) {
func_800079C4();
func_800067E4(&gDisplayListHead, 0, 0, 0x140, 0xF0);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/14/fragment14_144300/func_86801700.s")
if (D_8780FC94 == 0) {
func_80015348();
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/14/fragment14_144300/func_86801840.s")
func_80015094(D_86807500);
func_87901C98();
if (D_8780FC98 == 0) {
func_86800B38();
}
if (D_8680753E == 0) {
func_87804FD4();
}
if (D_8680753E != 0) {
func_8780005C();
}
func_80007778();
}
void func_86801700(void) {
func_878001E8(0x80);
if (func_80007604() == 0) {
if (D_8680753E != 0) {
D_8680750C = 1;
D_86807510 = 0x1C2;
D_86807540 = 0xF;
} else if (gPlayer1Controller->buttonPressed & 0x1000) {
D_8680750C = 1;
D_8680753C &= ~1;
D_8680753C |= 2;
D_86807510 = 0x708;
D_86807540 = 0xF;
func_8004B9C4(0x3C);
func_86805108(0xF, 1);
} else if ((D_8780FA2A == 0) && (gPlayer1Controller->buttonPressed & 0x4000)) {
func_80048B90(3);
D_8680750C = 7;
D_86807540 = 0x1E;
func_80006CB4(D_86807540);
func_86800020(D_86807540 / 2);
func_87802EB8(2);
}
}
}
s32 func_86801840(void) {
s32 var_v1 = 0;
if (D_8680753E == 0) {
if (D_86807510 <= 0) {
var_v1 = 1;
}
} else if (D_86807510 <= 0) {
var_v1 = 1;
}
return var_v1;
}
#ifdef NON_MATCHING
s32 func_86801884(void) {
s32 sp1C;
s32 sp18;
unk_D_86807558* ptr;
s32 i;
s32 temp_v0;
s32 var_a0;
sp1C = 0;
sp18 = 0;
if ((D_8680753E != 0) && (gPlayer1Controller->buttonPressed != 0)) {
if (func_80007604() == 0) {
sp18 = 1;
}
}
if (((D_8780FC92 != 0) || (sp18 != 0)) && (D_8680750C != 7)) {
D_8680750C = 7;
D_86807540 = 0x1E;
func_80006CB4(D_86807540);
func_86800020(D_86807540 / 2);
}
switch (D_8680750C) {
case 0:
func_86801700();
break;
case 1:
D_86807540 -= 1;
if (D_86807540 <= 0) {
D_8680750C = 2;
func_8780295C(1);
}
break;
case 2:
temp_v0 = func_87802974();
if ((temp_v0 >= 0) && (temp_v0 < 4)) {
func_8004D9B0(D_86806F74[temp_v0], 0, 0);
} else if (temp_v0 == -2) {
D_8680750C = 3;
func_86805108(0xF, 3);
func_86806964(1);
}
break;
case 3:
if (D_8780FC94 == 0) {
D_86807510--;
if (((D_86807510 % 30) == 0) && (D_8680753E == 0)) {
if (((D_86807510 / 30) > 0) && ((D_86807510 / 30) < 6)) {
func_8004D9B0(0x50002, 0, 0);
}
}
}
if (func_86801840() != 0) {
if (D_8680753E == 0) {
D_8680750C = 4;
D_86807540 = 0x1E;
func_86805108(0xF, 2);
func_86806964(2);
func_8004B9C4(0xA);
func_8004D9B0(0x50004, 0, 0);
} else {
D_8680750C = 7;
D_86807540 = 0x1E;
func_80006CB4(D_86807540);
func_86800020(D_86807540 / 2);
func_87802EB8(2);
}
}
break;
case 4:
if (func_868055D4() != 0) {
D_86807540--;
}
if (D_86807540 <= 0) {
D_8680750C = 5;
func_86805108(0xF, 4);
}
break;
case 5:
var_a0 = 1;
ptr = &D_86807558[0];
for (i = 0; i < 4; i++, ptr++) {
if (ptr->unk_018 != ptr->unk_01C) {
var_a0 = 0;
}
}
if ((var_a0 != 0) && (D_8780FC94 == 0)) {
D_8680750C = 6;
func_86805108(0xF, 5);
func_87802EB8(1);
}
break;
case 6:
if (D_8780FC96 != 0) {
D_8680750C = 7;
D_86807540 = 0x1E;
func_80006CB4(D_86807540);
func_86800020(D_86807540 / 2);
}
break;
case 7:
if (D_86807540 > 0) {
D_86807540--;
}
if ((D_86807540 <= 0) && (func_800484E0() == 0)) {
sp1C = 1;
func_8004B154();
}
break;
}
return sp1C;
}
#else
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/14/fragment14_144300/func_86801884.s")
#endif
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/14/fragment14_144300/func_86801CA8.s")
void func_86801CA8(void) {
s32 var_s0;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/14/fragment14_144300/func_86801D48.s")
func_800077B4(5);
func_80006C6C(0x10);
D_86807508 = 0;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/14/fragment14_144300/func_86801E2C.s")
var_s0 = 1;
while (var_s0 != 0) {
func_86800070();
func_878025D0();
func_86805CB4();
func_86806BF0();
func_86805974();
func_87901C20();
func_86801644();
if (func_86801884() != 0) {
var_s0 = 0;
}
D_86807508++;
}
}
void func_86801D48(void) {
UNUSED s32 pad;
MemoryBlock* sp18;
sp18 = func_80002D10(main_pool_get_available(), 0);
D_86807500 = (unk_D_86002F34_000*)func_80018B70(sp18, &D_86806CD0);
func_80002D60(sp18);
func_8001BB20();
func_8001987C();
func_87802528();
func_86806A50();
if (D_8680753E != 0) {
func_86805858(1);
} else {
func_86805858(0);
}
func_86805BD4();
func_87901620();
func_878029C0();
D_8680750C = 0;
if (D_8680753E == 0) {
D_8680753C |= 1;
}
func_86805108(0xF, 2);
}
void func_86801E2C(s32 arg0, UNUSED s32 arg1) {
unk_func_80007444* sp24;
if (arg0 == 1) {
D_8680753E = 1;
func_878010C8(9);
} else {
D_8680753E = 0;
}
main_pool_push_state('MINI');
func_80005E40(0x18000, 0);
sp24 = func_80007444(0, 1, 3, 1, 2, 1);
D_86807504 = func_8001E94C(0x17, 0);
ASSET_LOAD(D_1000000, common_menu1_ui, 0);
ASSET_LOAD(D_04000000, sushi_go_round_sprites, 0);
FRAGMENT_LOAD(fragment31);
func_80004454((((u32)D_87000000 & 0x0FF00000) >> 0x14) - 0x10, sushi_go_round_ROM_START, order_select_ui_ROM_START);
func_86801D48();
func_80007678(sp24);
func_86801CA8();
func_800076C0();
func_8001E9CC();
func_80005EAC();
main_pool_pop_state('MINI');
func_87803118();
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,33 +1,565 @@
#include "global.h"
#include "fragment14.h"
#include "src/11BA0.h"
#include "src/1C720.h"
#include "src/4BDC0.h"
#include "src/4CBC0.h"
#include "src/6A40.h"
#include "src/F420.h"
#include "src/fragments/2/fragment2.h"
#include "src/memory.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/14/fragment14_14A030/func_86805D50.s")
static const u32 D_868074B0[] = { 0xA4A2A4AC, 0xA4EA0000 }; // "あがり"
static const u32 D_868074B8[] = { 0xA4A8A4D3, 0x00000000 }; // "えび"
static const u32 D_868074C0[] = { 0xA4A4A4AF, 0xA4E90000 }; // "いくら"
static const u32 D_868074C8[] = { 0xA4ABA4C3, 0xA4D10000 }; // "かっぱ"
static const u32 D_868074D0[] = { 0xA4C8A4ED, 0x00000000 }; // "とろ"
static const u32 D_868074D8[] = { 0xA4C6A4C3, 0xA4AB0000 }; // "てっか"
static const u32 D_868074E0[] = { 0xA4BFA4DE, 0xA4B40000 }; // "たまご"
static const u32 D_868074E8[] = { 0xA4A6A4CB, 0x00000000 }; // "うに"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/14/fragment14_14A030/func_86805E94.s")
static f32 D_86807140 = 230.0f;
static Vec3f D_86807144 = { 0.0f, 35.0f, 0.0f };
static Vec3f D_86807150 = { 3.0f, 0.0f, 17.0f };
static f32 D_8680715C = 10.0f;
s32 D_86807160[] = {
8, 5, 2, 3, 6, 7, 4, 1,
};
unk_D_86807180 D_86807180[9] = {
{
0x00000000,
NULL,
NULL,
NULL,
0x0000,
0x0000,
0x00000000,
0x0000,
},
{
0x00000014,
0x04000000,
0x04004000,
D_868074B0,
0x0000,
0x0014,
0x00000000,
0x0000,
},
{
0x0000015E,
0x04000800,
0x04005000,
D_868074B8,
0x0014,
0x000A,
0x00050005,
0x0001,
},
{
0x000000FA,
0x04001000,
0x04006000,
D_868074C0,
0x0000,
0x000C,
0x00000000,
0x0000,
},
{
0x00000032,
0x04001800,
0x04007000,
D_868074C8,
0x0000,
0x0014,
0x00000000,
0x0000,
},
{
0x00000258,
0x04002000,
0x04008000,
D_868074D0,
0x0019,
0x0005,
0x00050006,
0x0001,
},
{
0x000000C8,
0x04002800,
0x04009000,
D_868074D8,
0x0000,
0x000D,
0x00000000,
0x0000,
},
{
0x00000096,
0x04003000,
0x0400A000,
D_868074E0,
0x0000,
0x0011,
0x00000000,
0x0000,
},
{
0x000003E8,
0x04003800,
0x0400B000,
D_868074E8,
0x001E,
0x0003,
0x00050007,
0x0001,
},
};
static Vtx D_86807280[] = {
VTX(-16, 0, -16, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(15, 0, -16, 992, 0, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(-16, 0, 15, 0, 992, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(15, 0, 15, 992, 992, 0xFF, 0xFF, 0xFF, 0xFF),
};
static Gfx D_868072C0[] = {
gsDPPipeSync(),
gsDPSetTextureLUT(G_TT_NONE),
gsSPClearGeometryMode(G_LIGHTING),
gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_PASS2),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsSPVertex(D_86807280, 4, 0),
gsDPLoadTextureBlock(0x0400C000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 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),
gsSP2Triangles(0, 3, 1, 0, 0, 2, 3, 0),
gsSPEndDisplayList(),
};
static Gfx D_86807338[] = {
gsSPEndDisplayList(),
};
static Vtx D_86807340[] = {
VTX(-16, 31, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(15, 31, 0, 992, 0, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(-16, 0, 0, 0, 992, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(15, 0, 0, 992, 992, 0xFF, 0xFF, 0xFF, 0xFF),
};
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/14/fragment14_14A030/func_86805F94.s")
static s32 D_868084D0;
static f32 D_868084D4;
unk_D_868084D8 D_868084D8[12];
static unk_D_86808808 D_86808808[12];
static s32 D_86809A08;
static s16 D_86809A0C;
static s16 D_86809A10[9];
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/14/fragment14_14A030/func_86805FFC.s")
void func_86805D50(s16 arg0, Vec3f* arg1) {
f32 var_fv0 = D_868084D4 + (arg0 * 30.0f);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/14/fragment14_14A030/func_86806100.s")
if (var_fv0 >= 360.0f) {
var_fv0 -= 360.0f;
}
var_fv0 = (var_fv0 * 65536.0f) / 360.0f;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/14/fragment14_14A030/func_868061E8.s")
arg1->x = D_86807144.x + (SINS(var_fv0) * D_86807140);
arg1->y = D_86807144.y;
arg1->z = D_86807144.z + (COSS(var_fv0) * D_86807140);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/14/fragment14_14A030/func_86806388.s")
f32 func_86805E94(unk_D_868084D8* arg0, Vec3f* arg1, Vec3f* arg2) {
f32 var_fv1;
unk_D_868084D8_038* ptr = arg0->unk_38;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/14/fragment14_14A030/func_868063C4.s")
var_fv1 = (0.5f * D_8680715C) + D_868084D4 + (30.0f * ptr->unk_000);
if (var_fv1 >= 360.0f) {
var_fv1 -= 360.0f;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/14/fragment14_14A030/func_868064BC.s")
arg2->x = ((SINS(((s32)var_fv1 << 0xF) / 180) * D_86807140) + D_86807144.x) - arg1->x;
arg2->y = 0.0f;
arg2->z = ((COSS(((s32)var_fv1 << 0xF) / 180) * D_86807140) + D_86807144.z) - arg1->z;
return SQ(arg2->x) + SQ(arg2->z);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/14/fragment14_14A030/func_86806868.s")
void func_86805F94(unk_D_86808808* arg0, s32 arg1) {
unk_D_86808808_018* sp1C = &arg0->unk_018;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/14/fragment14_14A030/func_86806930.s")
arg0->unk_000 = arg1;
arg0->unk_002 = 0;
arg0->unk_004 = 0;
arg0->unk_006 = 0;
arg0->unk_008 = 0;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/14/fragment14_14A030/func_86806950.s")
func_86805D50(arg0->unk_000, &arg0->unk_00C);
func_8001BB58(&sp1C->unk_000);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/14/fragment14_14A030/func_86806964.s")
sp1C->unk_030.x = sp1C->unk_030.y = sp1C->unk_030.z = 2.0f;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/14/fragment14_14A030/func_86806980.s")
void func_86805FFC(unk_D_868084D8* arg0) {
unk_D_868084D8_038* ptr;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/14/fragment14_14A030/func_86806A50.s")
switch (arg0->unk_10) {
case 0:
arg0->unk_14 = D_8006F050;
arg0->unk_20 = arg0->unk_14;
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/14/fragment14_14A030/func_86806BF0.s")
case 1:
case 2:
arg0->unk_14.x = arg0->unk_38->unk_00C.x;
arg0->unk_14.y = arg0->unk_38->unk_00C.y;
arg0->unk_14.z = arg0->unk_38->unk_00C.z;
arg0->unk_20.x = arg0->unk_14.x + D_86807150.x;
arg0->unk_20.y = arg0->unk_14.y + D_86807150.y;
arg0->unk_20.z = arg0->unk_14.z + D_86807150.z;
break;
case 3:
ptr = arg0->unk_38;
arg0->unk_14 = ptr->unk_1D0;
arg0->unk_20 = arg0->unk_14;
break;
}
}
s32 func_86806100(void) {
UNUSED s32 pad[4];
s32 i;
s32 sp20;
s32 sp1C = 1;
s16 var_v0;
s32 temp_a0;
s32 var_a1;
s32 temp_v0;
if (D_86809A10[1] < 3) {
sp20 = 0;
var_v0 = D_86809A0C;
} else {
sp20 = 1;
var_v0 = D_86809A0C - D_86807180[1].unk_12;
}
temp_v0 = func_878001E8(var_v0);
var_a1 = 0;
for (i = 0; i < 9; i++) {
if ((sp20 != 0) && (i == 1)) {
continue;
}
temp_a0 = D_86807180[i].unk_12 + var_a1;
if ((temp_v0 >= var_a1) && (temp_v0 < temp_a0)) {
sp1C = i;
break;
}
var_a1 = temp_a0;
}
return sp1C;
}
void func_868061E8(s32 arg0, unk_D_868084D8* arg1, s32 arg2, unk_D_868084D8_038* arg3) {
if (arg0 == 0) {
if (arg2 != -1) {
arg1->unk_00 = arg2;
}
arg1->unk_02 = 0;
arg1->unk_04 = 0;
arg1->unk_06 = 0;
arg1->unk_08.rgba = -1;
arg1->unk_0C = 0;
arg1->unk_10 = 0;
arg1->unk_38 = NULL;
arg1->unk_2C = 0.0f;
arg1->unk_40->unk_00.unk_01 &= ~1;
} else {
arg3->unk_008 = arg1;
arg1->unk_02 = 0;
arg1->unk_04 = 0;
arg1->unk_06 = 0;
arg1->unk_08.rgba = 0xFFFFFF80;
arg1->unk_0C = func_86806100();
D_86809A10[arg1->unk_0C]++;
arg1->unk_10 = 1;
arg1->unk_2C = 0.0f;
arg1->unk_38 = arg3;
if ((s16)func_878001E8(100) < D_86807180[arg1->unk_0C].unk_10) {
arg1->unk_02 |= 2;
}
arg1->unk_40->unk_00.unk_01 |= 1;
if (arg3->unk_006 >= 2) {
if ((D_86807180[arg1->unk_0C].unk_18 != 0) && (D_86807510 >= 0x3D)) {
func_8004D9B0(D_86807180[arg1->unk_0C].unk_14, 0, 0);
}
}
}
arg1->unk_30 = 1.0f;
arg1->unk_34 = 0.0f;
func_86805FFC(arg1);
arg1->unk_3C = &D_86807338;
}
unk_D_868084D8* func_86806388(void) {
s32 i;
unk_D_868084D8* var_v1 = D_868084D8;
for (i = 0; i < 12; i++, var_v1++) {
if (var_v1->unk_0C == 0) {
break;
}
}
if (i == 0xC) {
var_v1 = NULL;
}
return var_v1;
}
void func_868063C4(unk_D_86808808* arg0) {
unk_D_868084D8* sp24;
func_86805D50(arg0->unk_000, &arg0->unk_00C);
if ((D_8780FC94 == 0) && (arg0->unk_008 == 0) && (arg0->unk_004 & 1)) {
arg0->unk_002 -= 1;
if (arg0->unk_002 <= 0) {
arg0->unk_002 = 0;
sp24 = func_86806388();
if (sp24 != NULL) {
arg0->unk_006++;
if (D_868084D0 == 0) {
D_868084D0 = 1;
func_8004D9B0(0x50003, 0, 0);
func_8004B1CC(0x17);
}
func_868061E8(1, sp24, -1, arg0);
}
}
}
arg0->unk_018.unk_024 = arg0->unk_00C;
}
void func_868064BC(unk_D_868084D8* arg0) {
Gfx* gfx;
f32 var_fv0;
s32 var_v0;
if (D_8780FC94 == 0) {
switch (arg0->unk_10) {
case 1:
if (arg0->unk_30 >= 0.0f) {
arg0->unk_34 -= 0.05f;
} else {
arg0->unk_34 += 0.05f;
}
var_v0 = 0;
var_fv0 = arg0->unk_30;
arg0->unk_30 += arg0->unk_34;
if ((arg0->unk_30 * var_fv0) < 0.0f) {
if (arg0->unk_34 < 0.0f) {
var_fv0 = arg0->unk_34;
var_fv0 = 0.0f - var_fv0;
} else {
var_fv0 = arg0->unk_34;
}
if (var_fv0 < 0.1f) {
var_v0 = 1;
arg0->unk_2C = 1.5f;
}
}
if (var_v0 == 0) {
arg0->unk_34 *= 0.8f;
arg0->unk_2C = (arg0->unk_30 * -1.5f) + 1.5f;
} else {
func_86806868(arg0, 2, NULL);
}
break;
case 3:
if (arg0->unk_04 > 0) {
arg0->unk_04--;
if (arg0->unk_04 > 0) {
var_fv0 = 1.0f - ((f32)(arg0->unk_06 - arg0->unk_04) / arg0->unk_06);
arg0->unk_2C = 1.5f * var_fv0;
} else {
arg0->unk_2C = 0.0f;
arg0->unk_40->unk_00.unk_01 &= ~1;
}
}
break;
}
}
func_86805FFC(arg0);
gfx = func_80005F5C(sizeof(Gfx) * 16);
arg0->unk_3C = gfx;
gSPVertex(gfx++, D_86807340, 4, 0);
if (arg0->unk_08.a != 0xFF) {
gDPPipeSync(gfx++);
gDPSetCombineMode(gfx++, G_CC_MODULATEIA_PRIM, G_CC_PASS2);
gDPSetPrimColor(gfx++, 0, 0, arg0->unk_08.r, arg0->unk_08.g, arg0->unk_08.b, arg0->unk_08.a);
}
gDPLoadTextureBlock(gfx++, D_86807180[arg0->unk_0C].unk_04, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 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);
gSP2Triangles(gfx++, 0, 3, 1, 0, 0, 2, 3, 0);
gSPEndDisplayList(gfx++);
if (arg0->unk_08.a != 0xFF) {
arg0->unk_40->unk_00.unk_03 = 5;
} else {
arg0->unk_40->unk_00.unk_03 = 4;
}
arg0->unk_40->unk_18 = arg0->unk_3C;
arg0->unk_40->unk_1C = arg0->unk_20;
arg0->unk_40->unk_28 = arg0->unk_2C;
}
void func_86806860(void) {
}
void func_86806868(unk_D_868084D8* arg0, s32 arg1, unk_D_86807558* arg2) {
unk_D_868084D8_038* temp_v0;
arg0->unk_10 = arg1;
switch (arg1) {
case 2:
arg0->unk_02 |= 1;
arg0->unk_04 = 0;
arg0->unk_08.a = 0xFF;
arg0->unk_2C = 1.5f;
break;
case 3:
temp_v0 = arg0->unk_38;
temp_v0->unk_008 = 0;
temp_v0->unk_002 = 0x78;
arg0->unk_38 = arg2;
arg0->unk_04 = arg0->unk_06 = arg2->unk_0CC;
break;
case 0:
D_86809A10[arg0->unk_0C]--;
func_868061E8(0, arg0, -1, NULL);
break;
}
}
s32 func_86806930(unk_D_868084D8* arg0) {
return D_86807180[arg0->unk_0C].unk_00;
}
s16 func_86806950(s32 arg0) {
return D_86809A10[arg0];
}
void func_86806964(s32 arg0) {
if ((arg0 >= 0) && (arg0 < 3)) {
D_86809A08 = arg0;
}
}
void func_86806980(void) {
s32 i;
unk_D_86808808* var_v1;
switch (D_86809A08) {
case 1:
for (i = 0, var_v1 = D_86808808; i < 12; i++, var_v1++) {
var_v1->unk_004 |= 1;
}
break;
case 2:
for (i = 0, var_v1 = D_86808808; i < 12; i++, var_v1++) {
var_v1->unk_004 &= ~1;
}
break;
}
D_86809A08 = 0;
}
void func_86806A50(void) {
s32 i;
MainPoolState* temp_s2;
unk_D_868084D8* var_s0;
unk_func_80011B94* temp_a1;
unk_D_86808808* ptr;
Gfx* temp = D_86807338;
D_868084D4 = 0.0f;
D_86809A08 = 0;
D_86809A0C = 0;
for (i = 0; i < 9; i++) {
D_86809A0C += D_86807180[i].unk_12;
D_86809A10[i] = 0;
}
D_868084D0 = 0;
temp_s2 = func_80002D10(main_pool_get_available(), 0);
for (i = 0, ptr = D_86808808; i < 12; i++, ptr++) {
func_86805F94(ptr, i);
temp_a1 = func_80011B94(temp_s2, NULL, 4, D_868072C0);
ptr->unk_018.unk_000.unk_01 |= 1;
func_80012094(&ptr->unk_018, &temp_a1->unk_00);
}
for (i = 0, var_s0 = D_868084D8; i < 12; i++, var_s0++) {
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);
}
func_80002D60(temp_s2);
}
void func_86806BF0(void) {
unk_D_86808808* ptr;
unk_D_868084D8* var_s0;
s32 i;
if (D_86809A08 != 0) {
func_86806980();
}
if (D_8780FC94 == 0) {
D_868084D4 += 0.5f;
if (D_868084D4 >= 360.0f) {
D_868084D4 -= 360.0f;
}
}
for (i = 0, ptr = D_86808808; i < 12; i++, ptr++) {
func_868063C4(ptr);
}
for (i = 0, var_s0 = D_868084D8; i < 12; i++, var_s0++) {
if (var_s0->unk_0C != 0) {
func_868064BC(var_s0);
}
}
}

View File

@@ -79,7 +79,7 @@ void func_878001D0(void) {
D_8780FA20++;
}
u32 func_878001E8(s32 arg0) {
u32 func_878001E8(u32 arg0) {
u32 temp_a0 = guRandom() + D_8780FA20;
u32 var_v1;

View File

@@ -32,7 +32,7 @@ extern u16 D_8780FC98;
void func_87800020(void);
void func_8780005C(void);
void func_878001D0(void);
u32 func_878001E8(s32 arg0);
u32 func_878001E8(u32 arg0);
void func_8780024C(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4);
void func_878009BC(s32 arg0, s32 arg1, s32 arg2, s32 arg3);
void func_878010C8(s16 arg0);

View File

@@ -1404,7 +1404,7 @@ void func_8620369C(s32 arg0, UNUSED s32 arg1) {
D_86204714 = func_8001E94C(0x16, 0);
ASSET_LOAD(D_1000000, common_menu1_ui, 0);
ASSET_LOAD(D_4000000, run_rattata_run_flag_gfx, 0);
ASSET_LOAD(D_04000000, run_rattata_run_flag_gfx, 0);
FRAGMENT_LOAD(fragment31);
func_80004454((((u32)&D_8D000000 & 0x0FF00000) >> 0x14) - 0x10, _5C7A70_ROM_START, _5C7A70_ROM_END);

View File

@@ -17,6 +17,12 @@ POLY_XLU_DISP = "int"
UNK_2B0_DISP = "int"
UNK_2C0_DISP = "int"
LIGHT_DISP = "int"
SQ = "float"
ABS = "float"
ABS_ALT = "float"
ABS_NORMALIZED = "float"
COSS = "float"
SINS = "float"
[decompme.compilers]
"tools/ido/linux/7.1/cc" = "ido7.1"

View File

@@ -898,12 +898,16 @@
- [0x144300, c, fragments/14/fragment14_144300]
- [0x1462A0, c, fragments/14/fragment14_1462A0]
- [0x14A030, c, fragments/14/fragment14_14A030]
- [0x14AFB0, data, fragments/14/fragment14_data]
- [0x14B660, rodata, fragments/14/fragment14_rodata_14B660]
- [0x14B6A0, rodata, fragments/14/fragment14_rodata_14B6A0]
- [0x14B790, rodata, fragments/14/fragment14_rodata_14B790]
- [0x14AFB0, .data, fragments/14/fragment14_144300]
- [0x14B270, .data, fragments/14/fragment14_1462A0]
- [0x14B420, .data, fragments/14/fragment14_14A030]
- [0x14B660, .rodata, fragments/14/fragment14_144300]
- [0x14B6A0, .rodata, fragments/14/fragment14_1462A0]
- [0x14B790, .rodata, fragments/14/fragment14_14A030]
- {vram: 0x86807500, type: bss, name: fragments/14/fragment14_bss}
- {vram: 0x86807500, type: .bss, name: fragments/14/fragment14_144300}
- {vram: 0x86807550, type: .bss, name: fragments/14/fragment14_1462A0}
- {vram: 0x868084D0, type: .bss, name: fragments/14/fragment14_14A030}
- name: fragment14_relocs
type: code