Merge pull request #193 from Kelebek1/fragment60
Some checks failed
C/C++ CI / build (push) Has been cancelled

fragment60
This commit is contained in:
Maide 2025-04-18 20:13:07 +01:00 committed by GitHub
commit 098c9194a3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 508 additions and 16 deletions

View File

@ -570,6 +570,10 @@ extern u8 D_0302A9C0[];
extern u8 D_0302B740[];
extern u8 D_0302C4C0[];
extern u8 D_0302D480[];
extern u8 D_3024000[];
extern u8 D_3009000[];
extern u8 D_3012000[];
extern u8 D_301B000[];
extern LEODiskID D_800818E0;

View File

@ -823,4 +823,10 @@ D_03029C40 = 0x03029C40;
D_0302A9C0 = 0x0302A9C0;
D_0302B740 = 0x0302B740;
D_0302C4C0 = 0x0302C4C0;
D_0302D480 = 0x0302D480;
D_0302D480 = 0x0302D480;
D_82E019C8 = 0x82E019C8; // size:0x5A0
D_82E01F68 = 0x82E01F68; // size:0x438
D_3024000 = 0x3024000;
D_3009000 = 0x3009000;
D_3012000 = 0x3012000;
D_301B000 = 0x301B000;

View File

@ -343,4 +343,5 @@ D_03029C40 = 0x03029C40;
D_0302A9C0 = 0x0302A9C0;
D_0302B740 = 0x0302B740;
D_0302C4C0 = 0x0302C4C0;
D_0302D480 = 0x0302D480;
D_0302D480 = 0x0302D480;
D_301B000 = 0x301B000;

View File

@ -1,21 +1,484 @@
#include "global.h"
#include "fragment60.h"
#include "src/12D80.h"
#include "src/1C720.h"
#include "src/1CF30.h"
#include "src/20330.h"
#include "src/26820.h"
#include "src/3FB0.h"
#include "src/49790.h"
#include "src/F420.h"
#include "src/controller.h"
#include "src/geo_layout.h"
#include "src/memmap.h"
#include "src/memory.h"
#include "src/stage_loader.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/60/fragment60/func_82E00020.s")
static BinArchive* D_82E019B0;
static void* D_82E019B4;
static GraphNode* D_82E019B8;
static GraphNode* D_82E019BC;
static GraphNode* D_82E019C0;
static unk_D_86002F58_004_000 D_82E019C8[4];
static unk_D_86002F58_004_000 D_82E01F68[3];
static unk_func_80027FA0 D_82E023A0;
static s16 D_82E023A8;
static s16 D_82E023AA;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/60/fragment60/func_82E00058.s")
static u32 D_82E01110[] = {
0x0C000000, 0x05000000, 0x0B00002D, 0x00000000, 0x028001E0, 0x00000000, 0xFDBD0000, 0x00000243,
0x05000000, 0x0D000000, 0x05000000, 0x14000000, 0x00000000, 0xFFFFFF32, 0x16FFFFFF, 0x0F000002,
0x05000000, 0x0A000000, &D_800AC840, 0x06000000, 0x06000000, 0x06000000, 0x06000000, 0x01000000,
};
static u8* D_82E01170[] = { D_3000000, D_3009000, D_3012000, D_301B000 };
static Vtx D_82E01180[] = {
VTX(-128, 36, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(-128, 12, 0, 0, 768, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(-64, 12, 0, 2048, 768, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(-64, 36, 0, 2048, 0, 0xFF, 0xFF, 0xFF, 0xFF),
};
static Vtx D_82E011C0[] = {
VTX(-64, 36, 0, 2048, 0, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(-64, 12, 0, 2048, 768, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(0, 12, 0, 4096, 768, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(0, 36, 0, 4096, 0, 0xFF, 0xFF, 0xFF, 0xFF),
};
static Vtx D_82E01200[] = {
VTX(0, 36, 0, 4096, 0, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(0, 12, 0, 4096, 768, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(64, 12, 0, 6144, 768, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(64, 36, 0, 6144, 0, 0xFF, 0xFF, 0xFF, 0xFF),
};
static Vtx D_82E01240[] = {
VTX(64, 36, 0, 6144, 0, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(64, 12, 0, 6144, 768, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(128, 12, 0, 8192, 768, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(128, 36, 0, 8192, 0, 0xFF, 0xFF, 0xFF, 0xFF),
};
static Vtx D_82E01280[] = {
VTX(-128, 12, 0, 0, 768, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(-128, -12, 0, 0, 1536, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(-64, -12, 0, 2048, 1536, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(-64, 12, 0, 2048, 768, 0xFF, 0xFF, 0xFF, 0xFF),
};
static Vtx D_82E012C0[] = {
VTX(-64, 12, 0, 2048, 768, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(-64, -12, 0, 2048, 1536, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(0, -12, 0, 4096, 1536, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(0, 12, 0, 4096, 768, 0xFF, 0xFF, 0xFF, 0xFF),
};
static Vtx D_82E01300[] = {
VTX(0, 12, 0, 4096, 768, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(0, -12, 0, 4096, 1536, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(64, -12, 0, 6144, 1536, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(64, 12, 0, 6144, 768, 0xFF, 0xFF, 0xFF, 0xFF),
};
static Vtx D_82E01340[] = {
VTX(64, 12, 0, 6144, 768, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(64, -12, 0, 6144, 1536, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(128, -12, 0, 8192, 1536, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(128, 12, 0, 8192, 768, 0xFF, 0xFF, 0xFF, 0xFF),
};
static Vtx D_82E01380[] = {
VTX(-128, -12, 0, 0, 1536, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(-128, -36, 0, 0, 2304, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(-64, -36, 0, 2048, 2304, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(-64, -12, 0, 2048, 1536, 0xFF, 0xFF, 0xFF, 0xFF),
};
static Vtx D_82E013C0[] = {
VTX(-64, -12, 0, 2048, 1536, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(-64, -36, 0, 2048, 2304, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(0, -36, 0, 4096, 2304, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(0, -12, 0, 4096, 1536, 0xFF, 0xFF, 0xFF, 0xFF),
};
static Vtx D_82E01400[] = {
VTX(0, -12, 0, 4096, 1536, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(0, -36, 0, 4096, 2304, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(64, -36, 0, 6144, 2304, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(64, -12, 0, 6144, 1536, 0xFF, 0xFF, 0xFF, 0xFF),
};
static Vtx D_82E01440[] = {
VTX(64, -12, 0, 6144, 1536, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(64, -36, 0, 6144, 2304, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(128, -36, 0, 8192, 2304, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(128, -12, 0, 8192, 1536, 0xFF, 0xFF, 0xFF, 0xFF),
};
static Gfx D_82E01480[] = {
gsSPSetGeometryMode(G_CULL_BACK),
gsDPSetCombineLERP(0, 0, 0, TEXEL0, TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsDPLoadTextureTile(0x0F000000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 256, 0, 0, 0, 63, 23, 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),
gsSPVertex(D_82E01180, 4, 0),
gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0),
gsDPLoadTextureTile(0x0F000000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 256, 0, 64, 0, 127, 23, 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),
gsSPVertex(D_82E011C0, 4, 0),
gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0),
gsDPLoadTextureTile(0x0F000000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 256, 0, 128, 0, 191, 23, 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),
gsSPVertex(D_82E01200, 4, 0),
gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0),
gsDPLoadTextureTile(0x0F000000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 256, 0, 192, 0, 255, 23, 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),
gsSPVertex(D_82E01240, 4, 0),
gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0),
gsDPLoadTextureTile(0x0F000000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 256, 0, 0, 24, 63, 47, 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),
gsSPVertex(D_82E01280, 4, 0),
gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0),
gsDPLoadTextureTile(0x0F000000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 256, 0, 64, 24, 127, 47, 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),
gsSPVertex(D_82E012C0, 4, 0),
gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0),
gsDPLoadTextureTile(0x0F000000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 256, 0, 128, 24, 191, 47, 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),
gsSPVertex(D_82E01300, 4, 0),
gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0),
gsDPLoadTextureTile(0x0F000000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 256, 0, 192, 24, 255, 47, 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),
gsSPVertex(D_82E01340, 4, 0),
gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0),
gsDPLoadTextureTile(0x0F000000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 256, 0, 0, 48, 63, 71, 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),
gsSPVertex(D_82E01380, 4, 0),
gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0),
gsDPLoadTextureTile(0x0F000000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 256, 0, 64, 48, 127, 71, 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),
gsSPVertex(D_82E013C0, 4, 0),
gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0),
gsDPLoadTextureTile(0x0F000000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 256, 0, 128, 48, 191, 71, 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),
gsSPVertex(D_82E01400, 4, 0),
gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0),
gsDPLoadTextureTile(0x0F000000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 256, 0, 192, 48, 255, 71, 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),
gsSPVertex(D_82E01440, 4, 0),
gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0),
gsSPEndDisplayList(),
};
static u32 D_82E01800[] = {
0x17000000, 0x00000000, 0x00000000, 0x00000000, D_82E01180, 0x05000000, 0x22050000,
0x00000000, 0x08000000, func_82E00274, 0x00000000, 0x06000000, 0x01000000, 0x00000000,
};
static Vtx D_82E01838[] = {
VTX(-38, 18, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF), VTX(-38, 0, 0, 0, 576, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(38, 0, 0, 2432, 576, 0xFF, 0xFF, 0xFF, 0xFF), VTX(38, 18, 0, 2432, 0, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(-38, 0, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF), VTX(-38, -18, 0, 0, 576, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(38, -18, 0, 2432, 576, 0xFF, 0xFF, 0xFF, 0xFF), VTX(38, 0, 0, 2432, 0, 0xFF, 0xFF, 0xFF, 0xFF),
};
static Gfx D_82E018B8[] = {
gsSPSetGeometryMode(G_CULL_BACK),
gsDPSetCombineLERP(0, 0, 0, TEXEL0, TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsSPVertex(D_82E01838, 8, 0),
gsDPLoadTextureBlock(0x0F000000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 76, 18, 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, 1, 2, 0, 0, 2, 3, 0),
gsDPLoadTextureBlock(0x0F000AB0, G_IM_FMT_RGBA, G_IM_SIZ_16b, 76, 18, 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(4, 5, 6, 0, 4, 6, 7, 0),
gsSPEndDisplayList(),
};
static u32 D_82E01960[] = {
0x17000000, 0x00000000, 0x00000000, 0x00000000, D_82E01838, 0x05000000, 0x22050000,
0x00000000, 0x08000000, func_82E0036C, 0x00000000, 0x06000000, 0x01000000,
};
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/60/fragment60/func_82E00274.s")
void func_82E00020(void) {
Cont_StartReadInputs();
Cont_ReadInputs();
func_8001F730();
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/60/fragment60/func_82E0036C.s")
void func_82E00050(void) {
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/60/fragment60/func_82E0045C.s")
void func_82E00058(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u8 arg4, u8 arg5, u8 arg6, u8 arg7) {
static s16 D_82E01994 = 0;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/60/fragment60/func_82E00A54.s")
s16 sp56 = SINS(D_82E01994) * 2;
UNUSED s32 pad[2];
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/60/fragment60/func_82E00BDC.s")
gSPDisplayList(gDisplayListHead++, D_8006F518);
gDPSetEnvColor(gDisplayListHead++, arg4, arg5, arg6, arg7);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/60/fragment60/func_82E00CF0.s")
func_8001CADC((arg0 + sp56) - 8, (arg1 + sp56) - 8, 0x10, 0x10, D_2000C80, 0x10, 0);
func_8001CADC((arg0 + sp56) - 8, ((arg1 + arg3) - sp56) - 8, 0x10, 0x10, D_2000F80, 0x10, 0);
func_8001CADC(((arg0 + arg2) - sp56) - 8, (arg1 + sp56) - 8, 0x10, 0x10, D_2000D80, 0x10, 0);
func_8001CADC(((arg0 + arg2) - sp56) - 8, ((arg1 + arg3) - sp56) - 8, 0x10, 0x10, D_2000E80, 0x10, 0);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/60/fragment60/func_82E00E2C.s")
gSPDisplayList(gDisplayListHead++, D_8006F630);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/60/fragment60/func_82E00F2C.s")
D_82E01994 += 0x2000;
}
s32 func_82E00274(s32 arg0, unk_func_80011B94* arg1) {
s32 temp_a3;
s32 var_t0;
if (arg0 == 5) {
temp_a3 = D_8006F09C->unk_000.unk_14;
if (D_82E023AA >= temp_a3) {
var_t0 = 0xFF;
} else {
var_t0 = 0x80;
}
gDPPipeSync(gDisplayListHead++);
gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, var_t0);
gSPSegment(gDisplayListHead++, 0x0F, Memmap_GetSegmentVaddr(D_82E01170[temp_a3]));
gSPDisplayList(gDisplayListHead++, D_82E01480);
func_80015684();
}
return 0;
}
s32 func_82E0036C(s32 arg0, unk_func_80011B94* arg1) {
s32 var_a3;
if (arg0 == 5) {
s32 tmp = D_8006F09C->unk_000.unk_14;
if (tmp < D_82E023AA) {
var_a3 = 0xFF;
} else {
var_a3 = 0x80;
}
gDPPipeSync(gDisplayListHead++);
gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, var_a3);
gSPSegment(gDisplayListHead++, 0x0F, Memmap_GetSegmentVaddr(D_3024000));
gSPDisplayList(gDisplayListHead++, D_82E018B8);
func_80015684();
}
return 0;
}
void func_82E0045C(s32 arg0, s32 arg1) {
func_800079C4();
func_8001D924(D_82E019B4);
func_80015094(D_82E019B8);
if (arg0 == 0) {
if ((arg1 >= 0) && (arg1 < 0xB)) {
D_82E019C8[0].unk_01E.y = ((0xA - arg1) * -0x5000) / 10;
}
if ((arg1 >= 2) && (arg1 < 0xD)) {
D_82E01F68[0].unk_01E.y = ((0xC - arg1) * -0x5000) / 10;
}
if ((arg1 >= 4) && (arg1 < 0xF)) {
D_82E019C8[1].unk_01E.y = ((0xE - arg1) * -0x5000) / 10;
}
if ((arg1 >= 6) && (arg1 < 0x11)) {
D_82E01F68[1].unk_01E.y = ((0x10 - arg1) * -0x5000) / 10;
}
if ((arg1 >= 8) && (arg1 < 0x13)) {
D_82E019C8[2].unk_01E.y = ((0x12 - arg1) * -0x5000) / 10;
}
if ((arg1 >= 0xA) && (arg1 < 0x15)) {
D_82E01F68[2].unk_01E.y = ((0x14 - arg1) * -0x5000) / 10;
}
if ((arg1 >= 0xC) && (arg1 < 0x17)) {
D_82E019C8[3].unk_01E.y = ((0x16 - arg1) * -0x5000) / 10;
}
}
if (arg0 == 2) {
if ((arg1 >= 0) && (arg1 < 0xB)) {
D_82E019C8[0].unk_01E.y = ((arg1 - 0) * 0x5000) / 10;
}
if ((arg1 >= 2) && (arg1 < 0xD)) {
D_82E01F68[0].unk_01E.y = (((arg1 - 0x2) * 0x5000)) / 10;
}
if ((arg1 >= 4) && (arg1 < 0xF)) {
D_82E019C8[1].unk_01E.y = (((arg1 - 0x4) * 0x5000)) / 10;
}
if ((arg1 >= 6) && (arg1 < 0x11)) {
D_82E01F68[1].unk_01E.y = (((arg1 - 0x6) * 0x5000)) / 10;
}
if ((arg1 >= 8) && (arg1 < 0x13)) {
D_82E019C8[2].unk_01E.y = (((arg1 - 0x8) * 0x5000)) / 10;
}
if ((arg1 >= 0xA) && (arg1 < 0x15)) {
D_82E01F68[2].unk_01E.y = (((arg1 - 0xA) * 0x5000)) / 10;
}
if ((arg1 >= 0xC) && (arg1 < 0x17)) {
D_82E019C8[3].unk_01E.y = (((arg1 - 0xC) * 0x5000)) / 10;
}
}
if (arg0 == 1) {
func_82E00058(0xD0, (D_82E023A8 * 0x6C) + 0x32, 0xE0, 0x38, 0xFF, 0xF0, 0x64, 0xFF);
}
func_80007778();
}
void func_82E00A54(void) {
s32 i;
unk_D_86002F58_004_000* var_s1;
unk_D_86002F58_004_000* var_s2;
for (var_s1 = &D_82E019C8[0], i = 0; i < 4; i++, var_s1++) {
func_8001BC34(var_s1, 0, 0, D_82E019BC);
D_82E019C8[i].unk_01E.y = -0x5000;
}
func_8000E88C(&D_82E019C8[0].unk_024, 0.0f, 162.0f, -579.0f);
func_8000E88C(&D_82E019C8[1].unk_024, 0.0f, 54.0f, -579.0f);
func_8000E88C(&D_82E019C8[2].unk_024, 0.0f, -54.0f, -579.0f);
func_8000E88C(&D_82E019C8[3].unk_024, 0.0f, -162.0f, -579.0f);
for (var_s2 = &D_82E01F68[0], i = 0; i < 3; i++, var_s2++) {
func_8001BC34(var_s2, 0, 0, D_82E019C0);
D_82E01F68[i].unk_01E.y = -0x5000;
}
func_8000E88C(&D_82E01F68[0].unk_024, 0.0f, 108.0f, -579.0f);
func_8000E88C(&D_82E01F68[1].unk_024, 0.0f, 0, -579.0f);
func_8000E88C(&D_82E01F68[2].unk_024, 0.0f, -108.0f, -579.0f);
}
s32 func_82E00BDC(void) {
s32 var_v1 = 'exec';
if (BTN_IS_PRESSED(gPlayer1Controller, BTN_A)) {
func_80048B90(0x26);
D_800AE540.unk_0002 = D_82E023A8;
var_v1 = 'slct';
} else if (BTN_IS_PRESSED(gPlayer1Controller, BTN_B)) {
func_80048B90(3);
var_v1 = 'quit';
} else if (BTN_IS_PRESSED(gPlayer1Controller, BTN_DUP)) {
if (D_82E023A8 > 0) {
func_80048B90(1);
D_82E023A8--;
}
} else if (BTN_IS_PRESSED(gPlayer1Controller, BTN_DDOWN) && (D_82E023A8 < D_82E023AA)) {
func_80048B90(1);
D_82E023A8++;
}
return var_v1;
}
s32 func_82E00CF0(void) {
s16 i;
s32 temp_v0 = 'exec';
s32 temp_v1;
func_82E00A54();
D_82E023A8 = D_82E023AA;
for (i = 0; i < 23; i++) {
func_82E00020();
func_82E0045C(0, i);
}
while (temp_v0 == 'exec') {
func_82E00020();
func_82E0045C(1, 0);
temp_v0 = func_82E00BDC();
}
temp_v1 = temp_v0 == 'slct';
if (temp_v1) {
for (i = 0; i < 23; i++) {
func_82E00020();
func_82E0045C(2, i);
}
} else {
func_80007990(0xFFFF);
func_80006CB4(8);
while (func_80007604() != 1) {
func_82E00020();
func_82E0045C(1, 0);
}
func_800077B4(2);
}
return temp_v1;
}
void func_82E00E2C(void) {
MemoryBlock* temp_v0 = func_80002D10(main_pool_get_available(), 0);
s32 i;
unk_D_86002F58_004_000* var_s2;
D_82E019B8 = process_geo_layout(temp_v0, &D_82E01110);
D_82E019BC = process_geo_layout(temp_v0, &D_82E01800);
D_82E019C0 = process_geo_layout(temp_v0, &D_82E01960);
func_80002D60(temp_v0);
func_8001BB20();
for (var_s2 = &D_82E019C8[0], i = 0; i < 4; var_s2++, i++) {
func_8001BB58(var_s2);
D_82E019C8[i].unk_000.unk_14 = i;
}
for (var_s2 = &D_82E01F68[0], i = 0; i < 3; var_s2++, i++) {
func_8001BB58(var_s2);
D_82E01F68[i].unk_000.unk_14 = i;
}
}
s32 func_82E00F2C(UNUSED s32 arg0, UNUSED s32 arg1) {
s16 var_v1 = -1;
s32 sp18 = 1;
switch (D_800AE540.unk_0000) {
case 3:
var_v1 = 9;
break;
case 6:
var_v1 = 0xC;
break;
}
if (var_v1 != -1) {
main_pool_push_state('LVSL');
func_8001E94C(0x10, 0);
func_80028AFC(2);
func_80027FA0(&D_82E023A0, D_800AE540.unk_11F2);
if (D_800AE540.unk_0000 == 3) {
D_82E023AA = D_82E023A0.unk_05;
} else {
D_82E023AA = D_82E023A0.unk_06;
}
if (D_82E023AA == 4) {
D_82E023AA -= 1;
}
ASSET_LOAD(D_1000000, common_menu1_ui, 0);
ASSET_LOAD(D_2000000, common_menu2_ui, 0);
ASSET_LOAD(D_3000000, cup_ball_select_ui, 0);
D_82E019B0 = ASSET_LOAD2(backgrounds, 1, 1);
D_82E019B4 = func_8000484C(D_82E019B0, var_v1);
func_82E00E2C();
func_80007754();
sp18 = func_82E00CF0();
func_8000771C();
main_pool_pop_state('LVSL');
}
return sp18;
}

View File

@ -0,0 +1,18 @@
#ifndef _FRAGMENT60_H_
#define _FRAGMENT60_H_
#include "global.h"
#include "src/11BA0.h"
void func_82E00020(void);
void func_82E00058(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u8 arg4, u8 arg5, u8 arg6, u8 arg7);
s32 func_82E00274(s32 arg0, unk_func_80011B94* arg1);
s32 func_82E0036C(s32 arg0, unk_func_80011B94* arg1);
void func_82E0045C(s32 arg0, s32 arg1);
void func_82E00A54(void);
s32 func_82E00BDC(void);
s32 func_82E00CF0(void);
void func_82E00E2C(void);
s32 func_82E00F2C(UNUSED s32 arg0, UNUSED s32 arg1);
#endif // _FRAGMENT60_H_

View File

@ -2074,10 +2074,10 @@
subsegments:
- [0x2D5CB0, textbin, fragments/60/fragment60_header]
- [0x2D5CD0, c, fragments/60/fragment60]
- [0x2D6DC0, data, fragments/60/fragment60_data]
- [0x2D7650, rodata, fragments/60/fragment60_rodata]
- [0x2D6DC0, .data, fragments/60/fragment60]
- [0x2D7650, .rodata, fragments/60/fragment60]
- {vram: 0x82E019B0, type: bss, name: fragments/60/fragment60_bss}
- {vram: 0x82E019B0, type: .bss, name: fragments/60/fragment60}
- name: fragment60_relocs
type: code