fragment11

This commit is contained in:
Maide
2024-09-05 18:35:52 +01:00
parent 66493ea36c
commit 195f75c6fd
13 changed files with 2342 additions and 77 deletions

View File

@@ -75,20 +75,24 @@ typedef struct unk_D_86002F58_004_000 {
/* 0x044 */ unk_D_86002F58_004_000_044* unk_044;
/* 0x048 */ s32 unk_048;
/* 0x04C */ u32 unk_04C;
/* 0x050 */ char pad50[2];
/* 0x050 */ char pad050[2];
/* 0x052 */ s16 unk_052;
/* 0x054 */ s16 unk_054;
/* 0x058 */ s32 unk_058;
/* 0x05C */ s16 unk_05C;
/* 0x05E */ s16 unk_05E;
/* 0x060 */ s32 unk_060;
/* 0x064 */ char pad64[0x3C];
/* 0x064 */ char pad064[0x3C];
/* 0x0A0 */ s32 unk_0A0;
/* 0x0A4 */ char padA4[2];
/* 0x0A4 */ char pad0A4[2];
/* 0x0A6 */ s8 unk_0A6;
/* 0x0A7 */ char padA7[5];
/* 0x0A7 */ char pad0A7[5];
/* 0x0AC */ Vec3f unk_0AC;
/* 0x0B8 */ char padB8[0xB0];
/* 0x0B8 */ char pad0B8[0x24];
/* 0x0DC */ Vec3f unk_0DC;
/* 0x0E0 */ char pad0E0[0x4];
/* 0x0EC */ Vec3f unk_0EC;
/* 0x0F8 */ char pad0F8[0x70];
} unk_D_86002F58_004_000; // size = 0x168
typedef struct unk_D_86002F34_00C {
@@ -133,4 +137,16 @@ struct UnkStruct800AA660 {
/* 0x2204 */ struct UnkInputStruct8000D738 unk2204;
};
typedef struct unk_D_864027C0 {
/* 0x00 */ f32 unk_00;
/* 0x04 */ f32 unk_04;
/* 0x08 */ f32 unk_08;
/* 0x0C */ f32 unk_0C;
/* 0x10 */ f32 unk_10;
/* 0x14 */ f32 unk_14;
/* 0x18 */ s16 unk_18;
/* 0x1A */ s16 unk_1A;
/* 0x1C */ s16 unk_1C;
} unk_D_864027C0; // size = 0x20
#endif

View File

@@ -19,12 +19,11 @@
#define HW_REG(reg, type) *(volatile type*)((reg) | 0xA0000000)
#endif
#define assert
#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0]))
#define SQ(x) ((x) * (x))
#define ROUND(x) (s32)(((x) >= 0.0) ? ((x) + 0.5) : ((x) - 0.5))
#define assert
// cast thru uintptr_t for integer to pointer casts
#define INT2VOID(i) ((void *)(uintptr_t)(i))
@@ -46,6 +45,8 @@
#define CLAMP_MAX(x, max) ((x) > (max) ? (max) : (x))
#define CLAMP_MIN(x, min) ((x) < (min) ? (min) : (x))
#define ROUND_MAX(x) (((x) > 0.0f ? 0.5f : -0.5f) + (x))
#define ABS(x) ((x) >= 0 ? (x) : -(x))
#define ABS_ALT(x) ((x) < 0 ? -(x) : (x))

View File

@@ -5,6 +5,6 @@
void func_80017788(unk_D_86002F58_004_000*);
void func_80017798(unk_D_86002F58_004_000*, s16, s32, s32);
void func_80017804(unk_D_86002F58_004_000*, s32);
void func_80017804(unk_D_86002F58_004_000*, s16);
#endif // _18140_H_

View File

@@ -21,18 +21,6 @@
#include "src/stage_loader.h"
#include "src/controller.h"
typedef struct unk_D_864027C0 {
/* 0x00 */ f32 unk_00;
/* 0x04 */ f32 unk_04;
/* 0x08 */ f32 unk_08;
/* 0x0C */ f32 unk_0C;
/* 0x10 */ f32 unk_10;
/* 0x14 */ f32 unk_14;
/* 0x18 */ s16 unk_18;
/* 0x1A */ s16 unk_1A;
/* 0x1C */ s16 unk_1C;
} unk_D_864027C0; // size = 0x20
static unk_D_864027C0 D_864027C0[] = {
{ -68.0f, 0.0f, 68.0f, 1.0f, 1.0f, 1.0f, 0, 0x5E80, 0 },
{ -68.0f, 0.0f, -68.0f, 1.0f, 1.0f, 1.0f, 0, 0x1F80, 0 },

View File

@@ -0,0 +1,895 @@
#include "fragment11.h"
#include "src/12D80.h"
#include "src/17300.h"
#include "src/18140.h"
#include "src/18480.h"
#include "src/1C720.h"
#include "src/1CF30.h"
#include "src/20470.h"
#include "src/2E110.h"
#include "src/3FB0.h"
#include "src/49790.h"
#include "src/4BDC0.h"
#include "src/4CBC0.h"
#include "src/50860.h"
#include "src/6A40.h"
#include "src/6BC0.h"
#include "src/E890.h"
#include "src/fragments/2/fragment2.h"
#include "src/fragments/5/fragment5.h"
#include "src/stage_loader.h"
#include "src/controller.h"
static unk_D_86002F58_004_000 D_865092E0;
static unk_D_86002F58_004_000 D_86509448;
static unk_D_86002F58_004_000 D_865095B0;
static unk_D_86002F58_004_000 D_86509718;
static unk_D_86002F58_004_000 D_86509880;
static unk_D_86002F58_004_000 D_865099E8;
static unk_D_86002F58_004_000 D_86509B50;
static unk_D_86002F58_004_000 D_86509CB8;
static unk_D_86002F58_004_000 D_86509E20;
static unk_D_86002F58_004_000 D_86509F88;
static unk_D_86002F58_004_000 D_8650A0F0;
static unk_D_86002F58_004_000 D_8650A258;
static unk_D_86002F58_004_000 D_8650A3C0;
static unk_D_864027C0 D_86502C20[] = {
{ -60.0f, 7.5f, 0.0f, 1.0f, 1.0f, 1.0f, 0, 0xA00, 0 },
{ -20.0f, 7.5f, 0.0f, 1.0f, 1.0f, 1.0f, 0, 0x300, 0 },
{ 20.0f, 7.5f, 0.0f, 1.0f, 1.0f, 1.0f, 0, -0x300, 0 },
{ 60.0f, 7.5f, 0.0f, 1.0f, 1.0f, 1.0f, 0, -0xA00, 0 },
};
static unk_D_86002F58_004_000* D_86502CA0[] = {
&D_865092E0, &D_86509448, &D_865095B0, &D_86509718, &D_86509880, &D_865099E8, &D_86509B50,
&D_86509CB8, &D_86509E20, &D_86509F88, &D_8650A0F0, &D_8650A258, &D_8650A3C0,
};
static u8 D_86502CD4 = 0;
static u16 D_86502CD8 = 0;
static unk_func_87801684 D_86502CDC[] = {
{ 0x0303F980, 2 }, { 0x0303FD80, 2 }, { 0x03040180, 2 }, { 0x0303FD80, 2 }, { 0x0303F980, 2 },
{ 0x0303FD80, 2 }, { 0x03040180, 2 }, { 0x0303FD80, 2 }, { 0x0303F980, 2 }, { 0x0303FD80, 2 },
{ 0x03040180, 2 }, { 0x0303FD80, 2 }, { 0x0303F980, 0x18 }, { NULL, 0 },
};
static unk_func_87801684 D_86502D4C[] = {
{ 0x0303ED80, 0x18 }, { 0x0303F180, 2 }, { 0x0303F580, 2 }, { 0x0303F180, 2 }, { 0x0303ED80, 2 },
{ 0x0303F180, 2 }, { 0x0303F580, 2 }, { 0x0303F180, 2 }, { 0x0303ED80, 2 }, { 0x0303F180, 2 },
{ 0x0303F580, 2 }, { 0x0303F180, 2 }, { 0x0303ED80, 2 }, { NULL, 0 },
};
static unk_func_87801684 D_86502DBC[] = {
{ 0x03040580, 0x12 }, { 0x03040980, 2 }, { 0x03040D80, 8 }, { 0x03040980, 2 }, { NULL, 0 },
};
static u32 D_86502DE4[] = {
0x0C00FFFF, 0x05000000, 0x0B00001E, 0x00000000, 0x014000F0, 0x0000000F, 0x00000000, 0x00000000, 0x05000000,
0x0D000000, 0x05000000, 0x14000000, 0x002B0012, 0xFFFFFF32, 0x16FFFFFF, 0x0F000003, 0x05000000, 0x1F00FFFF,
0x00000000, 0x00000000, 0x00000000, 0x00640064, 0x00640000, 0x06000000, 0x05000000, 0x0A000000, 0x800AC840,
0x06000000, 0x06000000, 0x06000000, 0x03000000, 0x87806398, 0x06000000, 0x01000000,
};
static u8 D_86502E6C = 0;
static u8 D_86502E70 = 0;
unk_D_8650A528 D_8650A528[4];
unk_D_8650A528* D_8650AB28;
static unk_D_86002F58_004_000* D_8650AB2C;
unk_D_8650AB30 D_8650AB30[4];
unk_D_8650AB30* D_8650AD70;
void func_86500020(unk_D_8650A528* arg0, u8 arg1) {
if (arg0->unk_000 == 4) {
arg0->unk_00D = 0;
return;
}
if (arg1 == 0) {
arg0->unk_00D = func_87B00050(3);
} else if ((D_8650AD84 + 1) == D_8650AD85) {
arg0->unk_00D = func_86501FC0(arg0->unk_000, 1);
} else {
arg0->unk_00D = func_86501FC0(arg0->unk_000, 0);
}
}
void func_865000C0(void) {
s8 i;
for (i = 0; i < 4; i++) {
if (D_8780FA30[i] == 0) {
D_8650A528[i].unk_000 = 4;
} else {
D_8650A528[i].unk_000 = D_8780FA38;
}
}
}
void func_86500140(void) {
u8 i;
for (i = 0; i < 4; i++) {
switch (D_8780FA68[i]) {
case 1:
D_8650A528[i].unk_004 = 1;
break;
case 2:
D_8650A528[i].unk_004 = 0;
break;
default:
if (func_87B00050(2) != 0) {
D_8650A528[i].unk_004 = 0;
} else {
D_8650A528[i].unk_004 = 1;
}
break;
}
}
}
void func_86500238(void) {
u8 i;
s8 temp_ft2;
u8 var_s1;
s32 sp58;
UNUSED s32 pad;
u32 var_s0_2;
if (D_8780FC94 != 1) {
for (i = 0; i < 4; i++) {
D_8650AB28 = &D_8650A528[i];
sp58 = D_8650AB28->unk_008;
var_s1 = 0;
if (D_87B000C8 != 0) {
if (D_86502CD8 < 0x57) {
var_s1 = 2;
} else if (D_86502CD8 == 0x57) {
var_s1 = 1;
if (D_8650AB28->unk_00C == 1) {
D_8650AB28->unk_008 = 3;
} else {
D_8650AB28->unk_008 = 4;
}
} else if (D_86502CD8 == 0xB4) {
var_s1 = 1;
if (D_8650AB28->unk_00C == 1) {
D_8650AB28->unk_008 = 6;
} else {
D_8650AB28->unk_008 = 5;
}
} else if (func_80017514(&D_8650AB28->unk_014) != 0) {
switch (D_8650AB28->unk_008) {
case 6:
var_s1 = 1;
if (D_8650AB28->unk_004 == 0) {
D_86502E6C = 1;
} else if (D_8650AB28->unk_004 == 1) {
D_86502E70 = 1;
}
break;
case 4:
var_s1 = 1;
D_8650AB28->unk_008 = 5;
break;
case 0:
case 3:
var_s1 = 1;
D_8650AB28->unk_008 = 0;
break;
}
} else if ((D_8650AB28->unk_008 == 6) &&
(((D_86502E6C != 0) && ((D_8650AB28->unk_014.unk_048 >> 0x10) == 0x37)) ||
((D_86502E70 != 0) && ((D_8650AB28->unk_014.unk_048 >> 0x10) == 0x5E)))) {
var_s1 = 1;
}
} else if ((D_86502CD4 == 0) && (D_8650AB28->unk_00E >= 3) &&
((D_8650AB28->unk_008 == 0) || (D_8650AB28->unk_008 == 3))) {
D_8650AB28->unk_008 = 1;
var_s1 = 1;
if ((D_8780FC92 == 0) && (D_8780FC94 == 0)) {
func_8004D9B0(0x80001, i, 0);
}
} else if ((D_86502CD4 == 0) && (D_8650AB28->unk_00E < 3) && (D_8650AB28->unk_008 == 2)) {
D_8650AB28->unk_008 = 3;
var_s1 = 1;
if ((D_8780FC92 == 0) && (D_8780FC94 == 0)) {
func_8004D9B0(0x80001, i, 5);
}
} else {
if ((D_8780FC92 == 0) && (D_8780FC94 == 0)) {
temp_ft2 = ROUND_MAX((D_8650AB28->unk_010 * 100.0f) / D_8650AB28->unk_012);
if (temp_ft2 >= 0x4B) {
var_s0_2 = 4;
} else if (temp_ft2 >= 0x32) {
var_s0_2 = 3;
} else if (temp_ft2 >= 0x19) {
var_s0_2 = 2;
} else {
var_s0_2 = 1;
}
func_8004D9B0(0x80001, i, var_s0_2);
func_8004D9B0(0x80002, i, var_s0_2);
}
if (func_80017514(&D_8650AB28->unk_014) != 0) {
switch (D_8650AB28->unk_008) {
case 0:
case 3:
var_s1 = 1;
D_8650AB28->unk_008 = 0;
break;
case 1:
case 2:
var_s1 = 1;
D_8650AB28->unk_008 = 2;
break;
}
}
}
if (!!var_s1) {
if (D_8650AB28->unk_008 != sp58) {
func_8001BD04(&D_8650AB28->unk_014, D_8650AB28->unk_008);
if (D_8650AB28->unk_008 != 0) {
func_8001BD9C(&D_8650AB28->unk_014, D_8650AB28->unk_008);
}
} else if (D_8650AB28->unk_008 == 6) {
if (D_8650AB28->unk_004 == 0) {
func_80017464(&D_8650AB28->unk_014, 0x1B);
func_80017804(&D_8650AB28->unk_014, 0x1B);
} else if (D_8650AB28->unk_004 == 1) {
func_80017464(&D_8650AB28->unk_014, 0x4B);
func_80017804(&D_8650AB28->unk_014, 0x4B);
}
} else if (var_s1 == 2) {
func_80017464(&D_8650AB28->unk_014, D_8650AB28->unk_014.unk_048 >> 0x10);
if (D_8650AB28->unk_008 != 0) {
func_80017804(&D_8650AB28->unk_014, D_8650AB28->unk_014.unk_048 >> 0x10);
}
} else {
func_80017464(&D_8650AB28->unk_014, 0);
if (D_8650AB28->unk_008 != 0) {
func_80017804(&D_8650AB28->unk_014, 0);
}
}
}
}
}
}
void func_8650077C(void) {
u8 i;
u32 var_a0;
for (i = 0; i < 13; i++) {
var_a0 = 0;
switch (i) {
case 0:
var_a0 = 1;
break;
case 1:
case 2:
case 3:
case 4:
if (D_8650A528[i - 1].unk_00C != 1) {
var_a0 = 1;
if (D_8650A528[i - 1].unk_004 == 0) {
D_86502CA0[i]->unk_024 = D_8650A528[i - 1].unk_014.unk_0EC;
} else if (D_8650A528[i - 1].unk_004 == 1) {
D_86502CA0[i]->unk_024 = D_8650A528[i - 1].unk_014.unk_0DC;
}
}
break;
case 5:
case 6:
case 7:
case 8:
if (D_8650A528[i - 5].unk_00C == 1) {
var_a0 = 1;
}
break;
case 9:
case 10:
case 11:
case 12:
if (D_8650A528[i - 9].unk_00C != 1) {
var_a0 = 1;
}
break;
}
if (var_a0 != 0) {
func_80017464(D_86502CA0[i], 0);
func_8001BD9C(D_86502CA0[i], 0);
func_80017804(D_86502CA0[i], 0);
}
}
}
void func_86500904(void) {
u8 i;
s16 var_s4 = 0;
for (i = 0; i < 4; i++) {
D_8650AB28 = &D_8650A528[i];
if ((D_8650AB28->unk_010 >= D_8650AB28->unk_012) && (var_s4 < D_8650AB28->unk_010)) {
var_s4 = D_8650AB28->unk_010;
}
}
for (i = 0; i < 4; i++) {
D_8650AB28 = &D_8650A528[i];
if ((D_8650AB28->unk_010 >= D_8650AB28->unk_012) && (var_s4 == D_8650AB28->unk_010)) {
D_8650AB28->unk_00C = 1;
func_87802F00(i);
D_87B000D4++;
if ((D_8780FC92 == 0) && (D_8780FC94 == 0)) {
func_8004D9B0(0x80003, i, 0);
}
}
}
for (i = 0; i < 4; i++) {
D_8650AB28 = &D_8650A528[i];
if (D_8650AB28->unk_010 >= D_8650AB28->unk_012) {
if (D_8650AB28->unk_00C == 1) {
D_8650AB28->unk_010 = D_8650AB28->unk_012 + 1;
} else {
D_8650AB28->unk_010 = D_8650AB28->unk_012;
}
}
}
}
void func_86500AC4(UNUSED s32 arg0) {
func_878025D0();
func_86502A68();
}
void func_86500AEC(void) {
u8 i;
if ((D_8780FC92 != 0) || (D_8780FC94 != 0) || (D_87B000C8 != 0)) {
return;
}
for (i = 0; i < 4; i++) {
D_8650AB28 = &D_8650A528[i];
if (D_8650AB28->unk_000 == 4) {
if ((D_86509250 == 1) || (D_86509250 == 3) || ((D_86509250 == 0) && (D_86509254 == 1))) {
if (gControllers[i].buttonPressed & 0x8000) {
D_8650AB28->unk_00D += 1;
}
if (gControllers[i].buttonPressed & 0x4000) {
D_8650AB28->unk_00D -= 2;
}
} else if ((D_86509250 == 2) || (D_86509250 == 4) || ((D_86509250 == 0) && (D_86509254 == 2))) {
if (gControllers[i].buttonPressed & 0x8000) {
D_8650AB28->unk_00D -= 2;
}
if (gControllers[i].buttonPressed & 0x4000) {
D_8650AB28->unk_00D += 1;
}
}
}
}
D_8650AD84++;
if (D_8650AD84 == 2) {
switch (D_86509250) {
case 3:
D_86509250 = 1;
break;
case 4:
D_86509250 = 2;
break;
}
} else if ((D_8650AD84 + 4) == D_8650AD85) {
D_86509254 = D_86509250;
switch (D_86509250) {
case 1:
D_86509250 = 3;
break;
case 2:
D_86509250 = 4;
break;
}
} else {
if ((D_8650AD84 + 2) == D_8650AD85) {
D_86509250 = 0;
} else if (D_8650AD84 >= D_8650AD85) {
func_865029C0();
}
}
}
void func_86500D38(s32 arg0) {
u8 i;
if ((arg0 == 0) || ((arg0 == 3) && (D_87B000D0 == 1))) {
func_80020460(0x18, 0x16, 0x110, 0x90, 0x15);
func_80020460(0x18, 0xA5, 0x110, 0x36, 0x14B);
gSPDisplayList(gDisplayListHead++, D_8006F518);
func_87801F48(2, 0x19, 0xA6);
func_87801754(0x62, 0xB0, D_86502CDC);
func_87801684(0x74, 0xB0, D_86502D4C);
func_87801824(0x74, 0xC6, D_86502DBC);
gSPDisplayList(gDisplayListHead++, D_8006F630);
} else if ((arg0 == 1) || (arg0 == 2) || ((arg0 == 3) && (D_87B000D0 == 0))) {
s16 sp5C[] = {
0x002B,
0x0071,
0x00B7,
0x00FD,
};
gSPDisplayList(gDisplayListHead++, D_8006F518);
gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, 255);
for (i = 0; i < 4; i++) {
if (D_8650A528[i].unk_000 == 4) {
func_87801644(i, sp5C[i], 0xC6, 0.75f);
} else {
func_87801644(-1 - i, sp5C[i], 0xC6, 0.75f);
}
}
gSPDisplayList(gDisplayListHead++, D_8006F630);
}
if ((arg0 == 1) || (arg0 == 2) || ((arg0 == 3) && (D_87B000D0 == 0))) {
for (i = 0; i < 4; i++) {
D_8650AB28 = &D_8650A528[i];
func_8780024C((i * 0x47) + 0x1C, 0xDB, 0x32, D_8650AB28->unk_010, D_8650AB28->unk_012 + 1);
}
}
func_8001F3F4();
func_8001F470();
if ((arg0 == 0) || ((arg0 == 3) && (D_87B000D0 == 1))) {
s32 temp_s0;
s32 sp48;
s32 sp44;
char* sp40 = func_8002D7C0(NULL, 0, D_87806330, 0x2D);
func_8001EBE0(2, 0);
func_8001F3B4(0xC);
func_8001F324(0xFF, 0xFF, 0xFF, 0xFF);
func_8001F36C(0xF9, 0xF4, 0, 0xFF);
func_8001F1E8(0xA0 - (func_878013D4(D_87B000E0, func_8002D7C0(NULL, 0, D_87806330, 0x2C)) / 2), 0x20,
func_8002D7C0(NULL, 0, D_87806330, 0x2C));
func_8001F324(0xFF, 0xFF, 0xFF, 0xFF);
func_8001F36C(0xFF, 0xFF, 0xFF, 0xFF);
func_8001F1E8(0x28, 0x34, sp40);
temp_s0 = (func_8002D80C(sp40) * 0xC) + 0xC;
func_8001F1E8(0x28, temp_s0 + 0x34, func_8002D7C0(NULL, 0, D_87806330, 0x2E));
temp_s0 += (func_8002D80C(func_8002D7C0(NULL, 0, D_87806330, 0x2E)) * 0xC) + 0xC;
func_8001F1E8(0x28, temp_s0 + 0x34, func_8002D7C0(NULL, 0, D_87806330, 0x2F));
func_8001F1E8(0x8B, 0xB2, func_8002D7C0(NULL, 0, D_87806330, 0x5C));
func_8001F1E8(0x8B, 0xC8, func_8002D7C0(NULL, 0, D_87806330, 0x5C));
func_8001F324(0xC8, 0xC8, 0xFF, 0xFF);
func_8001F36C(0x50, 0x50, 0xFF, 0xFF);
func_87801290(&sp48, &sp44, sp40, func_8002D7C0(NULL, 0, D_87806330, 0x5F), 0xC);
func_8001F1E8(sp48 + 0x28, sp44 + 0x34, func_8002D7C0(NULL, 0, D_87806330, 0x5F));
func_8001F324(0xC8, 0xFA, 0xD2, 0xFF);
func_8001F36C(0x32, 0xE6, 0x82, 0xFF);
func_87801290(&sp48, &sp44, sp40, func_8002D7C0(NULL, 0, D_87806330, 0x60), 0xC);
func_8001F1E8(sp48 + 0x28, sp44 + 0x34, func_8002D7C0(NULL, 0, D_87806330, 0x60));
func_8001F324(0xC8, 0xC8, 0xFF, 0xFF);
func_8001F36C(0x50, 0x50, 0xFF, 0xFF);
func_8001F1E8(0xA2, 0xB2, func_8002D7C0(NULL, 0, D_87806330, 0x30));
func_8001F324(0xFF, 0xFF, 0xFF, 0xFF);
func_8001F36C(0xFF, 0x80, 0x80, 0xFF);
func_8001F1E8(0xA2, 0xC8, func_8002D7C0(NULL, 0, D_87806330, 0x14));
}
func_8001F4C4();
func_8001F444();
}
void func_865013D4(s32 arg0) {
u8 i;
func_800079C4();
func_8000699C(&gDisplayListHead, 0xA6BF);
if (D_8780FC94 == 0) {
func_80015348();
}
func_80015094(D_87B000E8);
if (D_8780FC98 == 0) {
func_86500D38(arg0);
}
func_87804FD4();
func_80007778();
if (D_8780FC94 == 0) {
D_87B000C0++;
if (arg0 == 2) {
if (D_87B000C8 == 0) {
D_86502CD4++;
if (D_86502CD4 >= 0xF) {
D_86502CD4 = 0;
for (i = 0; i < 4; i++) {
D_8650AB28 = &D_8650A528[i];
D_8650AB28->unk_010 += D_8650AB28->unk_00D;
if (D_8650AB28->unk_010 < 0) {
D_8650AB28->unk_010 = 0;
} else if (D_8650AB28->unk_010 >= D_8650AB28->unk_012) {
D_87B000C8 = 1;
}
D_8650AB28->unk_00E = D_8650AB28->unk_00D;
func_86500020(D_8650AB28, 1);
}
if (D_87B000C8 != 0) {
func_86500904();
func_8650077C();
}
}
} else if (D_86502CD8 < 0xC4) {
D_86502CD8++;
switch (D_86502CD8) {
case 0x5B:
case 0x6F:
case 0x83:
if ((D_87B000D4 != 4) && (D_8780FC92 == 0)) {
func_8004D9B0(0x80004, 0, 0);
func_8004D9B0(0x80005, 0, 0);
}
break;
case 0x96:
if ((D_87B000D4 != 4) && (D_8780FC92 == 0)) {
func_8004D9B0(0x80006, 0, 0);
}
break;
case 0xC3:
func_87802EB8(1);
break;
}
}
}
}
}
void func_86501668(void) {
u8 i;
u8 var_s1;
s32 var_s2;
var_s1 = 0;
var_s2 = 1;
func_800077B4(5);
func_80006C6C(0x10);
while (var_s2 != 0) {
if (var_s1 >= 0x11) {
if (D_80068BA0->unk_08 & 0x1000) {
var_s2 = 0;
} else if ((D_8780FA2A == 0) && (D_80068BA0->unk_08 & 0x4000)) {
func_80048B90(3);
func_87802EB8(2);
D_87B000D0 = 1;
return;
}
}
func_87B00020();
func_86500AC4(0);
func_86500238();
func_865013D4(0);
if (var_s1 < 0x11) {
var_s1++;
}
}
func_8004B9C4(0x3C);
if (D_8780FC92 == 0) {
while (true) {
if (D_87B000C4 <= 0) {
break;
}
for (i = 3; i > 0; i--) {
s32 tmp = (i * 0x3C) / 2;
if (tmp == D_87B000C4) {
if (i == 3) {
func_8780295C(1);
}
func_8004D9B0(0x80007, 0, 0);
}
}
D_87B000C4--;
func_87B00020();
func_86500AC4(1);
func_86500238();
func_865013D4(1);
}
}
}
void func_86501828(void) {
static u8 D_86502E7C = 0;
s32 var_s0 = 1;
if (D_8780FC92 == 0) {
func_865029C0();
func_8004D9B0(0x80008, 0, 0);
func_87B00020();
func_86500AC4(2);
func_86500238();
func_865013D4(2);
while (var_s0 != 0) {
if (D_8780FC92 != 0) {
break;
}
if ((D_86502E7C == 0) && (func_87802974() == -2)) {
func_8004B1CC(0x1D);
D_86502E7C = 1;
}
func_87B00020();
func_86500AC4(2);
if (D_87B000C8 == 0) {
func_86500AEC();
} else if (D_8780FC96 != 0) {
var_s0 = 0;
}
func_86502110(2);
func_86500238();
func_865013D4(2);
}
}
}
void func_86501964(void) {
u8 i;
func_8004FC60(1, 0x1E);
func_8004FC60(2, 0x1E);
func_80006CB4(0x1E);
for (i = 0; i < 30; i++) {
func_87B00020();
func_86500AC4(3);
func_86502110(3);
func_86500238();
func_865013D4(3);
}
}
void func_865019E4(void) {
D_87B000EC = D_87B000E8->unk_0C;
D_87B000F0 = -0x200;
D_87B000F2 = 0;
D_87B000F4 = 0xBE;
D_87B000EC->unk_034 = 50.0f;
D_87B000EC->unk_038 = 6400.0f;
D_87B000EC->unk_02C = 40.0f;
D_87B000EC->unk_0B4.y = 51.0f;
func_80010354(&D_87B000EC->unk_0B4, &D_87B000EC->unk_0A8, D_87B000F4, D_87B000F0, D_87B000F2);
}
void func_86501AAC(void) {
u8 j;
u8 i;
MemoryBlock* temp_v0;
temp_v0 = func_80002D10(main_pool_get_available(), 0);
D_87B000E8 = func_80018B70(temp_v0, D_86502DE4);
func_80002D60(temp_v0);
func_8001BB20();
func_8001987C();
func_865000C0();
func_86500140();
for (i = 0; i < 2; i++) {
if (i == 0) {
D_87B000E4 = func_80019D18(0xC5);
} else {
D_87B000E4 = func_80019D18(0xC6);
}
for (j = 0; j < 4; j++) {
if (i == D_8650A528[j].unk_004) {
D_8650AB28 = &D_8650A528[j];
D_8650AB2C = &D_8650AB28->unk_014;
func_8001BB58(D_8650AB2C);
if (i == 0) {
func_8001BC34(D_8650AB2C, 0, 0xC5, D_87B000E4->unk_08[0]->unk_00);
} else {
func_8001BC34(D_8650AB2C, 0, 0xC6, D_87B000E4->unk_08[0]->unk_00);
}
D_8650AB28->unk_008 = 0;
func_8001BD04(D_8650AB2C, D_8650AB28->unk_008);
func_80017464(D_8650AB2C, func_87B00050(D_8650AB2C->unk_044->unk_0A));
D_8650AB2C->unk_024.x = D_86502C20[j].unk_00;
D_8650AB2C->unk_024.y = D_86502C20[j].unk_04;
if (i == 0) {
D_8650AB2C->unk_024.y += 0.15f;
}
D_8650AB2C->unk_024.z = D_86502C20[j].unk_08;
D_8650AB2C->unk_030.x = D_86502C20[j].unk_0C;
D_8650AB2C->unk_030.y = D_86502C20[j].unk_10;
D_8650AB2C->unk_030.z = D_86502C20[j].unk_14;
D_8650AB2C->unk_01E.x = D_86502C20[j].unk_18;
D_8650AB2C->unk_01E.y = D_86502C20[j].unk_1A;
D_8650AB2C->unk_01E.z = D_86502C20[j].unk_1C;
D_8650AB28->unk_00C = 0;
D_8650AB28->unk_00E = 0;
func_86500020(D_8650AB28, 0);
D_8650AB28->unk_010 = 0;
D_8650AB28->unk_012 = 0x28;
}
}
}
{
u16 sp5C[] = {
0x00C9, 0x00C8, 0x00C8, 0x00C8, 0x00C8, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, 0x00D0, 0x00D1,
};
for (j = 0; j < 13; j++) {
if ((j != 2) && (j != 3) && (j != 4)) {
D_87B000E4 = func_80019D18(sp5C[j]);
}
D_8650AB2C = D_86502CA0[j];
func_8001BB58(D_8650AB2C);
func_8001BC34(D_8650AB2C, 0, sp5C[j], D_87B000E4->unk_08[0]->unk_00);
func_8001BD04(D_8650AB2C, 0);
func_80017464(D_8650AB2C, D_8650AB2C->unk_044->unk_0A);
}
}
func_86502BB8();
func_86502848();
func_865019E4();
func_87802528();
func_878029C0();
func_87801684(0, 0, NULL);
func_87801754(0, 0, NULL);
}
void func_86501E9C(UNUSED s32 arg0, UNUSED s32 arg1) {
unk_func_80007444* sp24;
main_pool_push_state(0x4D494E49);
func_80005E40(0x18000, 0);
sp24 = func_80007444(0, 1, 3, 1, 2, 1);
D_87B000E0 = func_8001E94C(0x16, 0);
func_80004258(((u32)&D_1000000 & 0x0F000000) >> 0x18, _4BD6B0_ROM_START, _4BE810_ROM_START, 0);
func_80004454((((u32)&D_81000000 & 0x0FF00000) >> 0x14) - 0x10, fragment31_ROM_START, fragment32_ROM_START);
func_86501AAC();
func_80007678(sp24);
func_86501668();
func_86501828();
func_86501964();
func_800076C0();
func_8001E9CC();
func_80005EAC();
main_pool_pop_state(0x4D494E49);
func_87803118();
}
static s32 pad_D_86502E98 = 0;
s8 func_86501FC0(s32 arg0, s32 arg1) {
static u16 D_86502EA0[4][8] = {
{ 0x0001, 0x0001, 0x0001, 0x0032, 0x0032, 0x0005, 0x0000, 0x0000 },
{ 0x0000, 0x0001, 0x0001, 0x0005, 0x0032, 0x0032, 0x0001, 0x0000 },
{ 0x0000, 0x0000, 0x0001, 0x0001, 0x0005, 0x005A, 0x001E, 0x0005 },
{ 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, 0x001E, 0x005A, 0x000A },
};
static u16 D_86502EE0[4][13] = {
{ 0x0003, 0x0006, 0x0014, 0x0014, 0x0014, 0x0014, 0x000A, 0x0005, 0x0003, 0x0001, 0x0000, 0x0000, 0x0000 },
{ 0x0003, 0x0006, 0x0014, 0x0014, 0x0014, 0x0014, 0x000A, 0x000A, 0x0005, 0x0003, 0x0001, 0x0000, 0x0000 },
{ 0x0003, 0x0006, 0x0014, 0x0014, 0x0014, 0x0014, 0x000A, 0x000A, 0x000A, 0x0007, 0x0005, 0x0003, 0x0001 },
{ 0x0000, 0x0003, 0x0006, 0x000A, 0x0014, 0x0014, 0x0014, 0x0014, 0x000A, 0x000A, 0x0007, 0x0005, 0x0003 },
};
u8 i;
u16 var_a0;
u16 var_a2;
u16* sp24;
s8 sp23;
u8 sp22;
u16 temp_v0;
if (arg1 == 0) {
sp24 = D_86502EA0[arg0];
sp23 = -1;
sp22 = 8;
} else if (arg1 == 1) {
sp24 = D_86502EE0[arg0];
sp23 = -8;
sp22 = 0xD;
}
var_a0 = 0;
for (i = 0; i < sp22; i++) {
var_a0 += sp24[i];
}
temp_v0 = func_87B00050(var_a0);
var_a2 = 0;
for (i = 0; i < sp22; i++) {
if ((temp_v0 >= var_a2) && (temp_v0 < (sp24[i] + var_a2))) {
return i + sp23;
}
var_a2 += sp24[i];
}
return 0;
}

View File

@@ -0,0 +1,51 @@
#ifndef _FRAGMENT11_H_
#define _FRAGMENT11_H_
#include "global.h"
#include "src/11BA0.h"
typedef struct unk_D_8650A528 {
/* 0x000 */ s32 unk_000;
/* 0x004 */ s32 unk_004;
/* 0x008 */ s32 unk_008;
/* 0x00C */ u8 unk_00C;
/* 0x00D */ s8 unk_00D;
/* 0x00E */ s8 unk_00E;
/* 0x010 */ s16 unk_010;
/* 0x010 */ s16 unk_012;
/* 0x014 */ unk_D_86002F58_004_000 unk_014;
/* 0x17C */ unk_D_86404778_190* unk_17C;
} unk_D_8650A528; // size = 0x180
typedef struct unk_D_8650AB30_000 {
/* 0x00 */ s8 unk_00;
/* 0x04 */ f32 unk_04;
/* 0x08 */ f32 unk_08;
} unk_D_8650AB30_000; // size = 0xC
typedef struct unk_D_8650AB30 {
/* 0x00 */ unk_D_8650AB30_000 unk_00[12];
} unk_D_8650AB30; // size = 0x90
extern s32 D_86509250;
extern s32 D_86509254;
extern u8 D_8650AD84;
extern u8 D_8650AD85;
extern unk_D_8650A528 D_8650A528[4];
extern unk_D_8650A528* D_8650AB28;
extern unk_D_8650AB30 D_8650AB30[4];
extern unk_D_8650AB30* D_8650AD70;
extern u32 D_86506750[];
extern u32 D_86506F50[];
extern u32 D_86507750[];
extern u32 D_86507F50[];
extern u32 D_86508750[];
s8 func_86501FC0(s32, s32);
void func_86502110(s32 arg0);
void func_86502848(void);
void func_865029C0(void);
void func_86502A68(void);
void func_86502BB8(void);
#endif // _FRAGMENT11_H_

File diff suppressed because it is too large Load Diff

View File

@@ -1,36 +0,0 @@
#include "global.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/11/fragment11_138F40/func_86500020.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/11/fragment11_138F40/func_865000C0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/11/fragment11_138F40/func_86500140.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/11/fragment11_138F40/func_86500238.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/11/fragment11_138F40/func_8650077C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/11/fragment11_138F40/func_86500904.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/11/fragment11_138F40/func_86500AC4.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/11/fragment11_138F40/func_86500AEC.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/11/fragment11_138F40/func_86500D38.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/11/fragment11_138F40/func_865013D4.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/11/fragment11_138F40/func_86501668.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/11/fragment11_138F40/func_86501828.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/11/fragment11_138F40/func_86501964.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/11/fragment11_138F40/func_865019E4.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/11/fragment11_138F40/func_86501AAC.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/11/fragment11_138F40/func_86501E9C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/11/fragment11_138F40/func_86501FC0.s")

View File

@@ -1,12 +0,0 @@
#include "global.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/11/fragment11_13B030/func_86502110.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/11/fragment11_13B030/func_86502848.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/11/fragment11_13B030/func_865029C0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/11/fragment11_13B030/func_86502A68.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/11/fragment11_13B030/func_86502BB8.s")

View File

@@ -0,0 +1,89 @@
#include "fragment11.h"
#include "src/49790.h"
#include "src/6A40.h"
#include "src/fragments/2/fragment2.h"
#include "src/fragments/5/fragment5.h"
static Vtx D_865091D0[] = {
VTX(-1, 545, -834, 0, 1024, 0x00, 0x00, 0x78, 0xFF),
VTX(219, 545, -834, 1024, 1024, 0x00, 0x00, 0x78, 0xFF),
VTX(219, 764, -834, 1024, 0, 0x00, 0x00, 0x78, 0xFF),
VTX(-1, 764, -834, 0, 0, 0x00, 0x00, 0x78, 0xFF),
};
static Gfx D_86509210[] = {
gsDPPipeSync(),
gsDPSetTextureLUT(G_TT_NONE),
gsDPSetCombineMode(G_CC_DECALRGB, G_CC_PASS2),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsSPEndDisplayList(),
};
static Gfx D_86509238[] = {
gsSPVertex(D_865091D0, 4, 0),
gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0),
gsSPEndDisplayList(),
};
s32 D_86509250 = 0;
s32 D_86509254 = 0;
static u32* D_86509258[] = {
D_86506750, D_86506F50, D_86507750, D_86507F50, D_86508750,
};
const char D_865092C0[] = "%d : TIME = %d\n";
static unk_func_80011B94* D_8650AD80;
u8 D_8650AD84;
u8 D_8650AD85;
void func_865029C0(void) {
switch (D_86509254) {
case 0:
D_86509250 = func_87B00050(2) + 3;
break;
case 1:
D_86509250 = 4;
break;
case 2:
D_86509250 = 3;
break;
}
D_8650AD84 = 0;
D_8650AD85 = (func_87B00050(4) * 0xF) + 0x1E;
if (D_86509254 != 0) {
func_80048B90(0x11);
}
}
void func_86502A68(void) {
Gfx* sp1C;
Mtx* sp18;
sp1C = func_80005F5C(sizeof(Gfx) * 16);
sp18 = func_80005F5C(sizeof(Mtx) * 1);
D_8650AD80->unk_18 = sp1C;
guScale(sp18, 0.1f, 0.1f, 0.1f);
gSPDisplayList(sp1C++, D_86509210);
gDPLoadTextureBlock(sp1C++, D_86509258[D_86509250], G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 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);
gSPMatrix(sp1C++, sp18, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(sp1C++, D_86509238);
gSPEndDisplayList(sp1C++);
}
void func_86502BB8(void) {
MainPoolState* sp1C;
sp1C = func_80002D10(main_pool_get_available(), 0);
D_8650AD80 = func_80011B94(sp1C, NULL, 1, NULL);
func_80012094(&D_800AC840, &D_8650AD80->unk_00);
func_80002D60(sp1C);
}

View File

@@ -21,6 +21,8 @@ extern s16 D_8780FA38;
extern s16 D_8780FA3A;
extern s16 D_8780FA40[4];
extern s16 D_8780FA48;
extern s16 D_8780FA68[4];
extern u32* D_8780FA70;
extern u16 D_8780FC92;
extern u16 D_8780FC94;
extern u16 D_8780FC96;

View File

@@ -12,7 +12,7 @@ extern s16 D_87B000F2;
extern s16 D_87B000F4;
void func_87B00020(void);
s32 func_87B00050(u32);
u32 func_87B00050(u32);
#endif // _FRAGMENT5_H_

View File

@@ -761,14 +761,18 @@
vram: 0x86500000
subsegments:
- [0x138F20, textbin, fragments/11/fragment11_header]
- [0x138F40, c, fragments/11/fragment11_138F40]
- [0x13B030, c, fragments/11/fragment11_13B030]
- [0x13BB40, data, fragments/11/fragment11_data]
- [0x142170, rodata, fragments/11/fragment11_rodata_142170]
- [0x142190, rodata, fragments/11/fragment11_rodata_142190]
- [0x1421D0, rodata, fragments/11/fragment11_rodata_1421D0]
- [0x138F40, c, fragments/11/fragment11]
- [0x13B030, c, fragments/11/fragment11_1]
- [0x13B8E0, c, fragments/11/fragment11_2]
- [0x13BB40, .data, fragments/11/fragment11]
- [0x13BE70, .data, fragments/11/fragment11_1]
- [0x1420F0, .data, fragments/11/fragment11_2]
- [0x142190, .rodata, fragments/11/fragment11]
- [0x1421D0, .rodata, fragments/11/fragment11_1]
- [0x1421E0, .rodata, fragments/11/fragment11_2]
- {vram: 0x865092E0, type: bss, name: fragment11_bss}
- {vram: 0x865092E0, type: .bss, name: fragments/11/fragment11}
- {vram: 0x8650AD80, type: .bss, name: fragments/11/fragment11_2}
- name: fragment11_relocs
type: code