Match ov74_021D0D80.c

This commit is contained in:
Nomura
2022-12-31 17:39:34 +01:00
parent d9c387760a
commit e093cf00a9
4 changed files with 769 additions and 1954 deletions

View File

@@ -1,114 +0,0 @@
.public sub_02002100
.public sub_02002114
.public sub_02002AC8
.public sub_02002D7C
.public sub_02002E7C
.public sub_02002E98
.public sub_02004FB8
.public sub_02005748
.public sub_020057A4
.public sub_0200681C
.public sub_0200682C
.public sub_02006830
.public sub_02006840
.public sub_02006C24
.public sub_02006CA8
.public sub_02006D28
.public sub_02006D84
.public sub_0200B144
.public sub_0200B190
.public sub_0200B1B8
.public sub_0200B1EC
.public sub_0200C800
.public sub_0200DAA4
.public sub_0200DC48
.public sub_0200DC9C
.public sub_0200DD0C
.public sub_0200E060
.public sub_0200E084
.public sub_0200F174
.public sub_0200F2AC
.public sub_0200F32C
.public sub_02017798
.public sub_020177A4
.public sub_02017FC8
.public sub_0201807C
.public sub_02018144
.public sub_02018184
.public sub_020181C4
.public sub_02018340
.public sub_02018368
.public sub_020183C4
.public sub_02019044
.public sub_02019184
.public sub_0201958C
.public sub_02019690
.public sub_0201972C
.public sub_02019964
.public sub_02019CB8
.public sub_02019EBC
.public sub_0201A7E8
.public sub_0201A8FC
.public sub_0201A954
.public sub_0201A9A4
.public sub_0201AA3C
.public sub_0201ACF4
.public sub_0201ADA4
.public sub_0201AE78
.public sub_0201C2B8
.public sub_0201C3C0
.public sub_0201C63C
.public sub_0201D724
.public sub_0201D730
.public sub_0201D78C
.public sub_0201DBEC
.public sub_0201DC3C
.public sub_0201FE94
.public sub_0201FF00
.public sub_0201FF0C
.public sub_0201FF68
.public sub_02023790
.public sub_020237BC
.public sub_020237E8
.public sub_02027A68
.public sub_02027AA4
.public sub_02027AAC
.public sub_02027AC0
.public sub_02027ADC
.public sub_02027AE4
.public sub_02027AF8
.public sub_02027B00
.public sub_02027B14
.public sub_02027B1C
.public sub_02027B30
.public sub_02027B38
.public sub_02027B50
.public sub_02027B58
.public sub_020397E4
.public NNS_GfdDoVramTransfer
.public NNS_G2dGetUnpackedCharacterData
.public NNS_G2dGetUnpackedPaletteData
.public NNS_G2dGetUnpackedScreenData
.public memset
.public _s32_div_f
.public _u32_div_f
.public ov74_021D10F8
.public ov74_021D1118
.public ov74_021D1178
.public ov74_021D122C
.public ov74_021D12D4
.public ov74_021D135C
.public ov74_021D1390
.public ov74_021D14E8
.public ov74_021D14F4
.public ov74_021D1624
.public ov74_021D1668
.public ov74_021D1720
.public ov74_021D17CC
.public ov74_021D1968
.public ov74_021D1A08
.public ov74_021D1A24
.public ov74_021D1B44
.public ov74_021D1BA8
.public ov74_021D1BD0
.public ov74_021D1BE4

File diff suppressed because it is too large Load Diff

View File

@@ -1748,7 +1748,7 @@ Overlay overlay73
Overlay overlay74
{
After main
Object asm/overlay074/ov74_021D0D80.o
Object src/overlay074/ov74_021D0D80.o
}
Overlay overlay75

View File

@@ -0,0 +1,768 @@
#include <nitro.h>
#include <string.h>
#include "data_021BF67C.h"
#include "struct_decls/struct_02001AF4_decl.h"
#include "struct_decls/struct_020067E8_decl.h"
#include "struct_decls/struct_02006C24_decl.h"
#include "struct_decls/struct_0200B144_decl.h"
#include "struct_decls/struct_0200C6E4_decl.h"
#include "struct_decls/struct_0200C704_decl.h"
#include "struct_decls/struct_02018340_decl.h"
#include "struct_decls/struct_02023790_decl.h"
#include "struct_defs/struct_0200D0F4.h"
#include "struct_defs/struct_020279FC.h"
#include "struct_defs/struct_0203D8EC.h"
#include "struct_defs/struct_0205AA50.h"
#include "struct_defs/struct_02099F80.h"
#include "overlay061/struct_ov61_0222C884.h"
#include "overlay084/struct_ov84_0223BA5C.h"
#include "overlay097/struct_ov97_0222DB78.h"
#include "unk_02001AF4.h"
#include "unk_02002328.h"
#include "unk_02002B7C.h"
#include "unk_020041CC.h"
#include "unk_02005474.h"
#include "unk_020067E8.h"
#include "unk_020068C8.h"
#include "unk_0200AC5C.h"
#include "unk_0200C6E4.h"
#include "unk_0200DA60.h"
#include "unk_0200F174.h"
#include "unk_02017728.h"
#include "unk_02017E74.h"
#include "unk_02018340.h"
#include "unk_0201D670.h"
#include "unk_0201DBEC.h"
#include "unk_0201FE94.h"
#include "unk_02023790.h"
#include "unk_020279FC.h"
#include "unk_020393C8.h"
#include "overlay074/ov74_021D0D80.h"
#define WINCLR_COL(col) (((col) << 4) | (col))
typedef struct UnkStruct_ov74_021D1720_t {
u16 unk_00;
u16 unk_02;
UnkStruct_02023790 * unk_04[20];
} UnkStruct_ov74_021D1720;
typedef struct UnkStruct_ov74_021D0D80_t {
int unk_00;
int unk_04;
int unk_08;
int unk_0C;
u32 unk_10_0 : 2;
u32 unk_10_2 : 3;
u32 unk_10_5 : 16;
u32 unk_10_21 : 1;
u32 unk_10_22 : 10;
UnkStruct_02018340 * unk_14;
UnkStruct_0203D8EC unk_18;
UnkStruct_020279FC * unk_1C;
UnkStruct_0200B144 * unk_20;
void * unk_24;
NNSG2dScreenData * unk_28;
UnkStruct_0205AA50 unk_2C[3];
UnkStruct_ov74_021D1720 unk_5C[7];
UnkStruct_02001AF4 * unk_2A8;
u32 unk_2AC;
UnkStruct_0200C6E4 * unk_2B0;
UnkStruct_0200C704 * unk_2B4;
UnkStruct_0200D0F4 * unk_2B8;
} UnkStruct_ov74_021D0D80;
int ov74_021D0D80(UnkStruct_020067E8 * param0, int * param1);
int ov74_021D0F60(UnkStruct_020067E8 * param0, int * param1);
int ov74_021D0E58(UnkStruct_020067E8 * param0, int * param1);
static void ov74_021D1118(void * param0);
static void ov74_021D10F8(void);
static int ov74_021D1178(UnkStruct_ov74_021D0D80 * param0);
static int ov74_021D122C(UnkStruct_ov74_021D0D80 * param0);
static void ov74_021D12D4(UnkStruct_ov74_021D0D80 * param0);
static void ov74_021D135C(UnkStruct_ov74_021D0D80 * param0);
static void ov74_021D1390(UnkStruct_ov74_021D0D80 * param0);
static void ov74_021D14E8(UnkStruct_ov74_021D0D80 * param0);
static void ov74_021D14F4(UnkStruct_ov74_021D0D80 * param0);
static void ov74_021D1624(UnkStruct_ov74_021D0D80 * param0);
static void ov74_021D1668(UnkStruct_ov74_021D0D80 * param0);
static void ov74_021D17CC(UnkStruct_ov74_021D0D80 * param0, u16 param1);
static void ov74_021D1BE4(UnkStruct_ov74_021D0D80 * param0, u16 param1, BOOL param2);
static void ov74_021D1968(UnkStruct_ov74_021D0D80 * param0, u16 param1, BOOL param2);
static BOOL ov74_021D1A08(const UnkStruct_ov74_021D0D80 * param0);
static void ov74_021D1720(UnkStruct_ov74_021D0D80 * param0);
static void ov74_021D1A24(UnkStruct_ov74_021D0D80 * param0);
static BOOL ov74_021D1B44(UnkStruct_ov74_021D0D80 * param0);
static void ov74_021D1BA8(UnkStruct_ov74_021D0D80 * param0);
static u32 ov74_021D1BD0(UnkStruct_ov74_021D0D80 * param0);
int ov74_021D0D80 (UnkStruct_020067E8 * param0, int * param1)
{
UnkStruct_ov74_021D0D80 * v0 = NULL;
UnkStruct_020279FC * v1;
v1 = (UnkStruct_020279FC *)sub_02006840(param0);
sub_02017FC8(3, 38, 0x10000);
v0 = sub_0200681C(param0, sizeof(UnkStruct_ov74_021D0D80), 38);
memset(v0, 0, sizeof(UnkStruct_ov74_021D0D80));
v0->unk_18.unk_00_0 = sub_02027AA4(v1);
v0->unk_18.unk_00_6 = sub_02027AF8(v1);
v0->unk_18.unk_00_7 = sub_02027B14(v1);
v0->unk_18.unk_00_4 = sub_02027ADC(v1);
v0->unk_18.unk_00_8 = sub_02027B30(v1);
v0->unk_18.unk_00_10 = sub_02027B50(v1);
v0->unk_00 = 38;
v0->unk_1C = v1;
sub_02002AC8(0);
return 1;
}
int ov74_021D0E58 (UnkStruct_020067E8 * param0, int * param1)
{
UnkStruct_ov74_021D0D80 * v0 = sub_0200682C(param0);
if (v0->unk_10_0 == 1) {
v0->unk_18.unk_00_0 = v0->unk_5C[0].unk_02;
v0->unk_18.unk_00_6 = v0->unk_5C[2].unk_02;
v0->unk_18.unk_00_7 = v0->unk_5C[3].unk_02;
v0->unk_18.unk_00_4 = v0->unk_5C[1].unk_02;
v0->unk_18.unk_00_8 = v0->unk_5C[4].unk_02;
v0->unk_18.unk_00_10 = v0->unk_5C[5].unk_02;
}
sub_02027AAC(v0->unk_1C, v0->unk_18.unk_00_0);
sub_02027B00(v0->unk_1C, v0->unk_18.unk_00_6);
sub_02027B1C(v0->unk_1C, v0->unk_18.unk_00_7);
sub_02027AE4(v0->unk_1C, v0->unk_18.unk_00_4);
sub_02027B38(v0->unk_1C, v0->unk_18.unk_00_8);
sub_02027B58(v0->unk_1C, v0->unk_18.unk_00_10);
sub_02004FB8(v0->unk_18.unk_00_4);
sub_02027A68(NULL, v0->unk_18.unk_00_8);
sub_02002AC8(1);
sub_02006830(param0);
sub_0201807C(v0->unk_00);
return 1;
}
int ov74_021D0F60 (UnkStruct_020067E8 * param0, int * param1)
{
UnkStruct_ov74_021D0D80 * v0 = sub_0200682C(param0);
BOOL v1;
u32 v2;
switch (v0->unk_04) {
case 0:
if (!ov74_021D1178(v0)) {
return 0;
}
sub_0200F174(3, 1, 1, 0x0, 6, 1, v0->unk_00);
break;
case 1:
if (!sub_0200F2AC()) {
return 0;
}
break;
case 2:
if (((Unk_021BF67C.unk_48 & PAD_BUTTON_A) && (v0->unk_10_2 == (7 - 1))) || (Unk_021BF67C.unk_48 & PAD_BUTTON_B)) {
v1 = ov74_021D1B44(v0);
if (v1 == 1) {
v0->unk_04 = 3;
} else {
sub_02005748(1500);
v0->unk_10_0 = 2;
v0->unk_04 = 6;
}
return 0;
}
ov74_021D1A24(v0);
return 0;
case 3:
sub_02002AC8(1);
ov74_021D1968(v0, 49, 0);
break;
case 4:
if (ov74_021D1A08(v0)) {
sub_02002AC8(0);
ov74_021D1BA8(v0);
v0->unk_04 = 5;
}
return 0;
case 5:
v2 = ov74_021D1BD0(v0);
if (v2 != 0xffffffff) {
if (v2 == 0) {
sub_020057A4(1500, 0);
sub_02005748(1563);
v0->unk_10_0 = 1;
} else {
v0->unk_10_0 = 2;
}
v0->unk_04 = 6;
}
return 0;
case 6:
if (sub_0201D724(v0->unk_2AC)) {
sub_0201D730(v0->unk_2AC);
}
sub_0200F174(3, 0, 0, 0x0, 6, 1, v0->unk_00);
break;
case 7:
if (!sub_0200F2AC()) {
return 0;
}
break;
case 8:
if (!ov74_021D122C(v0)) {
return 0;
}
return 1;
}
++v0->unk_04;
return 0;
}
static void ov74_021D10F8 (void)
{
UnkStruct_02099F80 v0 = {
GX_VRAM_BG_128_A, GX_VRAM_BGEXTPLTT_NONE, GX_VRAM_SUB_BG_128_C, GX_VRAM_SUB_BGEXTPLTT_NONE, GX_VRAM_OBJ_16_G, GX_VRAM_OBJEXTPLTT_NONE, GX_VRAM_SUB_OBJ_16_I, GX_VRAM_SUB_OBJEXTPLTT_NONE, GX_VRAM_TEX_NONE, GX_VRAM_TEXPLTT_NONE
};
sub_0201FE94(&v0);
}
static void ov74_021D1118 (void * param0)
{
UnkStruct_ov74_021D0D80 * v0 = param0;
if (v0->unk_10_21) {
sub_0200DD0C(v0->unk_14, 1, ((((10 + 12 * 2) + 30 * 14) + 27 * 4) + 9), 15, v0->unk_5C[5].unk_02, v0->unk_00);
v0->unk_10_21 = 0;
}
sub_0200C800();
NNS_GfdDoVramTransfer();
sub_0201C2B8(v0->unk_14);
OS_SetIrqCheckFlag(OS_IE_V_BLANK);
}
static int ov74_021D1178 (UnkStruct_ov74_021D0D80 * param0)
{
switch (param0->unk_08) {
case 0:
sub_02017798(NULL, NULL);
sub_020177A4();
sub_0201FF00();
sub_0201FF68();
GX_SetVisiblePlane(0);
GXS_SetVisiblePlane(0);
ov74_021D10F8();
sub_0200F32C(0);
sub_0200F32C(1);
ov74_021D12D4(param0);
break;
case 1:
ov74_021D1390(param0);
param0->unk_20 = sub_0200B144(1, 26, 220, param0->unk_00);
ov74_021D1720(param0);
break;
case 2:
ov74_021D14F4(param0);
ov74_021D1668(param0);
sub_0201DBEC(32, param0->unk_00);
sub_0201FF0C(GX_PLANEMASK_OBJ, 1);
sub_020397E4();
sub_02017798(ov74_021D1118, param0);
param0->unk_08 = 0;
return 1;
}
++param0->unk_08;
return 0;
}
static int ov74_021D122C (UnkStruct_ov74_021D0D80 * param0)
{
int v0 = 0, v1 = 0;
switch (param0->unk_08) {
case 0:
sub_0201DC3C();
ov74_021D1624(param0);
for (v0 = 0; v0 < 7; v0++) {
for (v1 = 0; v1 < param0->unk_5C[v0].unk_00; v1++) {
sub_020237BC(param0->unk_5C[v0].unk_04[v1]);
}
}
sub_0200B190(param0->unk_20);
ov74_021D14E8(param0);
ov74_021D135C(param0);
break;
case 1:
sub_02017798(NULL, NULL);
sub_020177A4();
sub_0201FF00();
sub_0201FF68();
GX_SetVisiblePlane(0);
GXS_SetVisiblePlane(0);
param0->unk_08 = 0;
return 1;
}
++param0->unk_08;
return 0;
}
static void ov74_021D12D4 (UnkStruct_ov74_021D0D80 * param0)
{
int v0;
param0->unk_14 = sub_02018340(param0->unk_00);
{
UnkStruct_ov84_0223BA5C v1 = {
GX_DISPMODE_GRAPHICS,
GX_BGMODE_0,
GX_BGMODE_0,
GX_BG0_AS_2D
};
sub_02018368(&v1);
}
{
UnkStruct_ov97_0222DB78 v2[] = {
{
0,
0,
0x800,
0,
1,
GX_BG_COLORMODE_16,
GX_BG_SCRBASE_0xf800,
GX_BG_CHARBASE_0x00000,
GX_BG_EXTPLTT_01,
1,
0,
0,
0
},
{
0,
0,
0x800,
0,
1,
GX_BG_COLORMODE_16,
GX_BG_SCRBASE_0xf000,
GX_BG_CHARBASE_0x00000,
GX_BG_EXTPLTT_01,
2,
0,
0,
0
},
{
0,
0,
0x800,
0,
1,
GX_BG_COLORMODE_16,
GX_BG_SCRBASE_0xe800,
GX_BG_CHARBASE_0x00000,
GX_BG_EXTPLTT_01,
3,
0,
0,
0
},
{
0,
0,
0x800,
0,
1,
GX_BG_COLORMODE_16,
GX_BG_SCRBASE_0xe000,
GX_BG_CHARBASE_0x00000,
GX_BG_EXTPLTT_01,
0,
0,
0,
0
},
{
0,
0,
0x800,
0,
1,
GX_BG_COLORMODE_16,
GX_BG_SCRBASE_0xf800,
GX_BG_CHARBASE_0x00000,
GX_BG_EXTPLTT_01,
0,
0,
0,
0
},
};
for (v0 = 0; v0 < 5; v0++) {
static const v3[5] = {
0, 1, 2, 3, 4
};
sub_020183C4(param0->unk_14, v3[v0], &(v2[v0]), 0);
sub_02019EBC(param0->unk_14, v3[v0]);
}
}
sub_02019690(0, 32, 0, param0->unk_00);
sub_02019690(4, 32, 0, param0->unk_00);
}
static void ov74_021D135C (UnkStruct_ov74_021D0D80 * param0)
{
sub_02019044(param0->unk_14, 4);
sub_02019044(param0->unk_14, 3);
sub_02019044(param0->unk_14, 2);
sub_02019044(param0->unk_14, 1);
sub_02019044(param0->unk_14, 0);
sub_020181C4(param0->unk_14);
}
static void ov74_021D1390 (UnkStruct_ov74_021D0D80 * param0)
{
void * v0;
u32 v1;
UnkStruct_02006C24 * v2;
void * v3;
NNSG2dCharacterData * v4;
NNSG2dPaletteData * v5;
v2 = sub_02006C24(73, param0->unk_00);
v1 = sub_02006D84(v2, 1);
v3 = sub_02018184(param0->unk_00, v1);
sub_02006D28(v2, 1, (void *)v3);
NNS_G2dGetUnpackedCharacterData(v3, &v4);
sub_0201958C(param0->unk_14, 0, v4->pRawData, v4->szByte, 0);
sub_0201958C(param0->unk_14, 4, v4->pRawData, v4->szByte, 0);
sub_020181C4(v3);
v1 = sub_02006D84(v2, 0);
v3 = sub_02018184(param0->unk_00, v1);
sub_02006D28(v2, 0, (void *)v3);
NNS_G2dGetUnpackedPaletteData(v3, &v5);
sub_0201972C(0, v5->pRawData, 0x20 * 1, 0);
sub_0201972C(4, v5->pRawData, 0x20 * 1, 0);
sub_020181C4(v3);
v1 = sub_02006D84(v2, 2);
param0->unk_24 = sub_02018144(param0->unk_00, v1);
sub_02006D28(v2, 2, (void *)param0->unk_24);
NNS_G2dGetUnpackedScreenData(param0->unk_24, &(param0->unk_28));
sub_02006CA8(v2);
sub_02019CB8(param0->unk_14, 2, 0x1, 0, 0, 32, 32, 17);
sub_02019CB8(param0->unk_14, 4, 0x1, 0, 0, 32, 32, 17);
sub_02019964(param0->unk_14, 0, 0, 0, 32, 2, param0->unk_28->rawData, 0, 0, param0->unk_28->screenWidth / 8, param0->unk_28->screenHeight / 8);
sub_02019184(param0->unk_14, 0, 3, -24);
sub_0201C3C0(param0->unk_14, 2);
sub_0201C3C0(param0->unk_14, 0);
sub_0201C3C0(param0->unk_14, 4);
}
static void ov74_021D14E8 (UnkStruct_ov74_021D0D80 * param0)
{
sub_020181C4(param0->unk_24);
}
static void ov74_021D14F4 (UnkStruct_ov74_021D0D80 * param0)
{
sub_0201A7E8(param0->unk_14, &param0->unk_2C[0], 1, 1, 0, 12, 2, 13, 10);
sub_0201A7E8(param0->unk_14, &param0->unk_2C[1], 1, 1, 3, 30, 14, 13, (10 + 12 * 2));
sub_0201A7E8(param0->unk_14, &param0->unk_2C[2], 1, 2, 19, 27, 4, 12, ((10 + 12 * 2) + 30 * 14));
sub_0200DAA4(param0->unk_14, 1, (((10 + 12 * 2) + 30 * 14) + 27 * 4), 14, 0, param0->unk_00);
sub_0200DD0C(param0->unk_14, 1, ((((10 + 12 * 2) + 30 * 14) + 27 * 4) + 9), 15, param0->unk_18.unk_00_10, param0->unk_00);
sub_02002E7C(0, 13 * 32, param0->unk_00);
sub_02002E7C(4, 13 * 32, param0->unk_00);
sub_02002E98(0, 12 * 32, param0->unk_00);
sub_02002E98(4, 12 * 32, param0->unk_00);
sub_0201ADA4(&(param0->unk_2C[0]), WINCLR_COL(0));
sub_0201ADA4(&(param0->unk_2C[1]), WINCLR_COL(15));
sub_0201ADA4(&(param0->unk_2C[2]), WINCLR_COL(15));
sub_0201AA3C(&(param0->unk_2C[2]));
sub_0201AA3C(&(param0->unk_2C[1]));
sub_0201AA3C(&(param0->unk_2C[0]));
sub_0200DC48(&param0->unk_2C[1], 1, (((10 + 12 * 2) + 30 * 14) + 27 * 4), 14);
sub_0200E060(&param0->unk_2C[2], 1, ((((10 + 12 * 2) + 30 * 14) + 27 * 4) + 9), 15);
}
static void ov74_021D1624 (UnkStruct_ov74_021D0D80 * param0)
{
u16 v0;
sub_0200DC9C(&(param0->unk_2C[1]), 0);
sub_0200E084(&(param0->unk_2C[2]), 0);
for (v0 = 0; v0 < 3; v0++) {
sub_0201ACF4(&(param0->unk_2C[v0]));
sub_0201ADA4(&(param0->unk_2C[v0]), 0);
sub_0201AA3C(&(param0->unk_2C[v0]));
sub_0201A8FC(&param0->unk_2C[v0]);
}
}
static void ov74_021D1668 (UnkStruct_ov74_021D0D80 * param0)
{
u32 v0, v1;
u16 v2;
u32 v3, v4, v5;
UnkStruct_02023790 * v6;
UnkStruct_02023790 * v7;
static const u8 v8[7] = {
3, 6, 4, 5, 7, 8, 42,
};
v5 = (u32)(((1 & 0xff) << 16) | ((2 & 0xff) << 8) | (((0 & 0xff) << 0)));
v3 = (u32)(((1 & 0xff) << 16) | ((2 & 0xff) << 8) | (((15 & 0xff) << 0)));
v4 = (u32)(((3 & 0xff) << 16) | ((4 & 0xff) << 8) | (((15 & 0xff) << 0)));
v6 = sub_02023790(256, param0->unk_00);
sub_0200B1B8(param0->unk_20, 0, v6);
v1 = 2;
sub_0201D78C(&param0->unk_2C[0], 0, v6, v1, 2, 0, v5, NULL);
v1 = 4;
for (v2 = 0; v2 < 7; v2++) {
sub_020237E8(v6);
sub_0200B1B8(param0->unk_20, v8[v2], v6);
sub_0201D78C(&param0->unk_2C[1], 0, v6, v1, 16 * v2, 0xff, v3, NULL);
}
for (v2 = 0; v2 < 7; v2++) {
ov74_021D17CC(param0, v2);
}
ov74_021D1BE4(param0, 0, 1);
sub_0201A954(&param0->unk_2C[0]);
sub_0201A954(&param0->unk_2C[1]);
sub_020237BC(v6);
}
static void ov74_021D1720 (UnkStruct_ov74_021D0D80 * param0)
{
u16 v0, v1;
static const int v3[7] = {
3, 2, 2, 2, 3, 20, 0
};
static const u8 v2[7] = {
10, 17, 13, 15, 19, 22, 0,
};
for (v0 = 0; v0 < 7; v0++) {
param0->unk_5C[v0].unk_00 = v3[v0];
for (v1 = 0; v1 < v3[v0]; v1++) {
param0->unk_5C[v0].unk_04[v1] = sub_0200B1EC(param0->unk_20, v2[v0] + v1);
}
}
param0->unk_5C[0].unk_02 = param0->unk_18.unk_00_0;
param0->unk_5C[2].unk_02 = param0->unk_18.unk_00_6;
param0->unk_5C[3].unk_02 = param0->unk_18.unk_00_7;
param0->unk_5C[1].unk_02 = param0->unk_18.unk_00_4;
param0->unk_5C[4].unk_02 = param0->unk_18.unk_00_8;
param0->unk_5C[5].unk_02 = param0->unk_18.unk_00_10;
}
static void ov74_021D17CC (UnkStruct_ov74_021D0D80 * param0, u16 param1)
{
u32 v0, v1, v2;
u16 v3;
u8 v4;
s8 v5 = 0;
static const s8 v6[] = {0, 0, 0, 0, 0, 0, 0};
v0 = (u32)(((1 & 0xff) << 16) | ((2 & 0xff) << 8) | (((15 & 0xff) << 0)));
v1 = (u32)(((3 & 0xff) << 16) | ((4 & 0xff) << 8) | (((15 & 0xff) << 0)));
sub_0201AE78(&(param0->unk_2C[1]), WINCLR_COL(15), (12 * 8 + 4) + v6[param1], 0 + param1 * 16, (48 * 8), 16);
if (param1 == 5) {
sub_0201D78C(&param0->unk_2C[1], 0, param0->unk_5C[param1].unk_04[param0->unk_5C[param1].unk_02], 1 * 48 + (12 * 8 + 4), 16 * param1 + 0, 0xff, v1, NULL);
sub_0201A954(&param0->unk_2C[1]);
param0->unk_10_21 = 1;
return;
}
if (param1 == 1) {
sub_02004FB8(param0->unk_5C[param1].unk_02);
} else if (param1 == 4) {
sub_02027A68(NULL, param0->unk_5C[param1].unk_02);
} else if (param1 == 0) {
sub_02027AAC(param0->unk_1C, param0->unk_5C[param1].unk_02);
ov74_021D1BE4(param0, param1, 0);
}
v5 = 0;
for (v3 = 0; v3 < param0->unk_5C[param1].unk_00; v3++) {
if (v3 == param0->unk_5C[param1].unk_02) {
v2 = v1;
} else {
v2 = v0;
}
if (v3 == param0->unk_5C[param1].unk_00 - 1) {
v4 = 0xff;
} else {
v4 = 0xff;
}
if (param1 == 4) {
sub_0201D78C(&param0->unk_2C[1], 0, param0->unk_5C[param1].unk_04[v3], (12 * 8 + 4) - 0 + v5, 16 * param1 + 0, v4, v2, NULL);
v5 += sub_02002D7C(0, param0->unk_5C[param1].unk_04[v3], 0) + 12;
} else {
sub_0201D78C(&param0->unk_2C[1], 0, param0->unk_5C[param1].unk_04[v3], v3 * 48 + (12 * 8 + 4) + v6[param1], 16 * param1 + 0, v4, v2, NULL);
}
}
sub_0201A954(&param0->unk_2C[1]);
}
static void ov74_021D1968 (UnkStruct_ov74_021D0D80 * param0, u16 param1, BOOL param2)
{
u32 v0;
UnkStruct_02023790 * v1;
u8 v2;
if (ov74_021D1A08(param0) == 0) {
sub_0201D730(param0->unk_2AC);
}
v2 = sub_02027AC0(param0->unk_1C);
sub_0201ADA4(&(param0->unk_2C[2]), 15);
v0 = (u32)(((1 & 0xff) << 16) | ((2 & 0xff) << 8) | (((15 & 0xff) << 0)));
v1 = sub_02023790(256, param0->unk_00);
sub_0200B1B8(param0->unk_20, param1, v1);
if (param2 == 0) {
param0->unk_2AC = sub_0201D78C(&param0->unk_2C[2], 1, v1, 4, 0, v2, v0, NULL);
} else {
sub_0201D78C(&param0->unk_2C[2], 1, v1, 4, 0, 0xff, v0, NULL);
sub_0201A9A4(&param0->unk_2C[2]);
}
sub_020237BC(v1);
}
static BOOL ov74_021D1A08 (const UnkStruct_ov74_021D0D80 * param0)
{
if (sub_0201D724(param0->unk_2AC) == 0) {
return 1;
}
return 0;
}
static void ov74_021D1A24 (UnkStruct_ov74_021D0D80 * param0)
{
UnkStruct_ov74_021D1720 * v0;
v0 = &(param0->unk_5C[param0->unk_10_2]);
if (param0->unk_10_2 != 6) {
if (Unk_021BF67C.unk_48 & PAD_KEY_RIGHT) {
v0->unk_02 = (v0->unk_02 + 1) % v0->unk_00;
ov74_021D17CC(param0, param0->unk_10_2);
sub_02005748(1500);
} else if (Unk_021BF67C.unk_48 & PAD_KEY_LEFT) {
v0->unk_02 = (v0->unk_02 + v0->unk_00 - 1) % v0->unk_00;
ov74_021D17CC(param0, param0->unk_10_2);
sub_02005748(1500);
}
}
if (Unk_021BF67C.unk_48 & PAD_KEY_UP) {
param0->unk_10_2 = (param0->unk_10_2 + 7 - 1) % 7;
sub_0201C63C(param0->unk_14, 0, 3, -(param0->unk_10_2 * 16 + 24));
ov74_021D1BE4(param0, param0->unk_10_2, 1);
sub_02005748(1500);
} else if (Unk_021BF67C.unk_48 & PAD_KEY_DOWN) {
param0->unk_10_2 = (param0->unk_10_2 + 1) % 7;
sub_0201C63C(param0->unk_14, 0, 3, -(param0->unk_10_2 * 16 + 24));
ov74_021D1BE4(param0, param0->unk_10_2, 1);
sub_02005748(1500);
}
}
static BOOL ov74_021D1B44 (UnkStruct_ov74_021D0D80 * param0)
{
if ((param0->unk_18.unk_00_0 != param0->unk_5C[0].unk_02) || (param0->unk_18.unk_00_6 != param0->unk_5C[2].unk_02) || (param0->unk_18.unk_00_7 != param0->unk_5C[3].unk_02) || (param0->unk_18.unk_00_4 != param0->unk_5C[1].unk_02) || (param0->unk_18.unk_00_8 != param0->unk_5C[4].unk_02) || (param0->unk_18.unk_00_10 != param0->unk_5C[5].unk_02)) {
return 1;
}
return 0;
}
static void ov74_021D1BA8 (UnkStruct_ov74_021D0D80 * param0)
{
static const UnkStruct_ov61_0222C884 v0 = {
3, 25, 13, 6, 4, 13, (((((10 + 12 * 2) + 30 * 14) + 27 * 4) + 9) + (18 + 12))
};
param0->unk_2A8 = sub_02002100(param0->unk_14, &v0, (((10 + 12 * 2) + 30 * 14) + 27 * 4), 14, param0->unk_00);
}
static u32 ov74_021D1BD0 (UnkStruct_ov74_021D0D80 * param0)
{
return sub_02002114(param0->unk_2A8, param0->unk_00);
}
static void ov74_021D1BE4 (UnkStruct_ov74_021D0D80 * param0, u16 param1, BOOL param2)
{
static const u8 v0[7] = {
43, 46, 44, 45, 47, 48, 52,
};
ov74_021D1968(param0, v0[param1], param2);
}