mirror of
https://github.com/pret/pokestadium.git
synced 2026-03-21 17:24:20 -05:00
Merge pull request #215 from dplewis/frag1
Some checks failed
C/C++ CI / build (push) Has been cancelled
Some checks failed
C/C++ CI / build (push) Has been cancelled
Fragment 1 various functions
This commit is contained in:
commit
48e58de33e
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -27,4 +27,5 @@ ctx.c.m2c
|
|||
.vscode/*
|
||||
!.vscode/c_cpp_properties.json
|
||||
tools/vtxdis
|
||||
tools/permuter/
|
||||
.DS_Store
|
||||
|
|
|
|||
|
|
@ -535,6 +535,77 @@ typedef struct TrainerData {
|
|||
/* 0x03A */ char unk3A[0x1F6];
|
||||
} TrainerData; // size = 0x230
|
||||
|
||||
// GB Emulator State
|
||||
typedef struct unk_D_8122B2C0 {
|
||||
/* 0x00000 */ u8 unk_00[0x208];
|
||||
/* 0x00208 */ u8 unk_208[0x40];
|
||||
/* 0x00248 */ u8 unk_248[0x40];
|
||||
/* 0x00288 */ u8 unk_288[0x100];
|
||||
/* 0x00388 */ u8 unk_388[0x400];
|
||||
/* 0x00788 */ u8 unk_788[0x4000];
|
||||
/* 0x04788 */ u8 unk_4788[0xC00];
|
||||
/* 0x05388 */ s32 unk_5388;
|
||||
/* 0x0538C */ char unk0538C[4];
|
||||
/* 0x05390 */ u32 unk_5390;
|
||||
/* 0x05394 */ u32 unk_5394;
|
||||
/* 0x05398 */ u32 unk_5398;
|
||||
/* 0x0539C */ u32 unk_539C;
|
||||
/* 0x53A0 */ char unk053A0[0x8];
|
||||
/* 0x053A8 */ void* unk_53A8;
|
||||
/* 0x053AC */ void* unk_53AC;
|
||||
/* 0x053B0 */ void* unk_53B0;
|
||||
/* 0x053B4 */ void* unk_53B4;
|
||||
/* 0x053B8 */ char unk053B8[0x4];
|
||||
/* 0x053BC */ void* unk_53BC;
|
||||
/* 0x053C0 */ char unk053C0[0x2E];
|
||||
/* 0x053EE */ u16 unk_53EE;
|
||||
/* 0x053F0 */ u16 unk_53F0;
|
||||
/* 0x053F2 */ char unk053F1[0xA];
|
||||
/* 0x053FC */ u8 unk_53FC;
|
||||
/* 0x053FD */ u8 unk_53FD;
|
||||
/* 0x053FE */ u8 unk_53FE;
|
||||
/* 0x053FF */ char unk053FF[0x86];
|
||||
/* 0x05485 */ u8 unk_5485;
|
||||
/* 0x05486 */ char unk05486[0x8];
|
||||
/* 0x0548E */ u8 unk_548E;
|
||||
/* 0x0548F */ char unk0548F[0xD];
|
||||
/* 0x0549C */ u8 unk_549C[0x100];
|
||||
/* 0x0559C */ u8 unk_559C[0x10];
|
||||
/* 0x055AC */ u8 unk_55AC[0x40];
|
||||
/* 0x055EC */ u8 unk_55EC[0x40];
|
||||
/* 0x0562C */ u8 unk_562C[0x200];
|
||||
/* 0x0582C */ u8 unk_582C[0x200];
|
||||
/* 0x05A2C */ u8 unk_5A2C[0x200];
|
||||
/* 0x05C2C */ char unk05C2C[0x2C];
|
||||
/* 0x05C58 */ void* unk_5C58;
|
||||
/* 0x05C5C */ char unk_5C5C[0x50];
|
||||
/* 0x05CAC */ OSGbpakId gbpakId;
|
||||
/* 0x05CFC */ OSPfs* pfs;
|
||||
/* 0x05D00 */ char unk05D00[0x64];
|
||||
/* 0x05D64 */ u8* transferBuffer;
|
||||
/* 0x05D68 */ u32 gbAddress;
|
||||
/* 0x05D6C */ s32 transferSize;
|
||||
/* 0x05D70 */ u32 unk_5D70[4];
|
||||
/* 0x05D80 */ u32 unk_5D80[4];
|
||||
/* 0x05D90 */ u32 unk_5D90[4];
|
||||
/* 0x05DA0 */ u16 unk_5DA0;
|
||||
/* 0x05DA2 */ u16 unk_5DA2;
|
||||
/* 0x05DA4 */ char unk05DA4[0x20];
|
||||
/* 0x05DC4 */ u8 unk_5DC4;
|
||||
/* 0x05DC5 */ u8 unk_5DC5;
|
||||
/* 0x05DC6 */ char unk05DC6[0x2];
|
||||
/* 0x05DC8 */ volatile u8 unk_5DC8;
|
||||
/* 0x05DC9 */ u8 unk_5DC9;
|
||||
/* 0x05DCA */ u8 unk_5DCA;
|
||||
/* 0x05DCB */ u8 status;
|
||||
/* 0x05DCC */ u8 unk_5DCC;
|
||||
/* 0x05DCD */ char unk05DCD[1];
|
||||
/* 0x05DCE */ u8 unk_5DCE;
|
||||
/* 0x05DCF */ u8 unk_5DCF;
|
||||
/* 0x05DD0 */ u8 unk_5DD0;
|
||||
/* 0x05DD1 */ u8 unk05DD1[0x15287];
|
||||
} unk_D_8122B2C0; // size = 0x1B058
|
||||
|
||||
extern s16 D_80075E40[];
|
||||
|
||||
#include "variables.h"
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ void func_81206D9C(unk_D_800AA660*);
|
|||
void func_81206E64(unk_D_800AA660*);
|
||||
void func_81206F38(unk_D_800AA664*);
|
||||
void func_81209078();
|
||||
void func_81209870(unk_D_8122B2C0*);
|
||||
s32 osGbSetNextBuffer(void*, s32);
|
||||
|
||||
#endif /* _FRAGMENT1_H_ */
|
||||
|
|
|
|||
|
|
@ -17,51 +17,6 @@ typedef struct unk_D_8122B2F8 {
|
|||
/* 0x000000 */ char unk000000[0x1FEAE8];
|
||||
} unk_D_8122B2F8; // size = 0x1FEAE8
|
||||
|
||||
// Gamepak State
|
||||
typedef struct unk_D_8122B2C0 {
|
||||
/* 0x00000 */ char unk00000[0x5388];
|
||||
/* 0x05388 */ s32 unk_05388;
|
||||
/* 0x0538C */ char unk0538C[0x1C];
|
||||
/* 0x053A8 */ void* unk_053A8;
|
||||
/* 0x053AC */ void* unk_053AC;
|
||||
/* 0x053B0 */ void* unk_053B0;
|
||||
/* 0x053B4 */ void* unk_053B4;
|
||||
/* 0x053B8 */ char unk053B8[0x4];
|
||||
/* 0x053BC */ void* unk_053BC;
|
||||
/* 0x053C0 */ char unk053C0[0x46C];
|
||||
/* 0x0582C */ u8 unk_0582C[128];
|
||||
/* 0x058AC */ char unk058AC[0x3AC];
|
||||
/* 0x05C58 */ void* unk_05C58;
|
||||
/* 0x05C5C */ char unk_5C5C[0x50];
|
||||
/* 0x05CAC */ OSGbpakId gbpakId;
|
||||
/* 0x05CFC */ OSPfs* pfs;
|
||||
/* 0x05D00 */ char unk05D00[0x70];
|
||||
/* 0x05D70 */ s32 unk_5D70;
|
||||
/* 0x05D74 */ char unk05D74[0xC];
|
||||
/* 0x05D80 */ u32 unk_5D80;
|
||||
/* 0x05D84 */ s32 unk_5D84;
|
||||
/* 0x05D88 */ s32 unk_5D88;
|
||||
/* 0x05D8C */ s32 unk_5D8C;
|
||||
/* 0x05D90 */ u32 unk_5D90;
|
||||
/* 0x05D94 */ char unk05D94[0x8];
|
||||
/* 0x05D9C */ u32 unk_5D9C;
|
||||
/* 0x05DA0 */ u16 unk_5DA0;
|
||||
/* 0x05DA2 */ u16 unk_5DA2;
|
||||
/* 0x05DA4 */ char unk05DA3[0x20];
|
||||
/* 0x05DC4 */ u8 unk_5DC4;
|
||||
/* 0x05DC5 */ u8 unk_5DC5;
|
||||
/* 0x05DC6 */ char unk05DC6[0x2];
|
||||
/* 0x05DC8 */ volatile u8 unk_05DC8;
|
||||
/* 0x05DC9 */ char unk05DC9[0x1];
|
||||
/* 0x05DCA */ u8 unk_5DCA;
|
||||
/* 0x05DCB */ u8 status;
|
||||
/* 0x05DCC */ u8 unk_5DCC;
|
||||
/* 0x05DCD */ char unk05DCD[1];
|
||||
/* 0x05DCE */ u8 unk_5DCE;
|
||||
/* 0x05DCF */ u8 unk_5DCF;
|
||||
/* 0x05DD0 */ u8 unk05DD0[0x15288];
|
||||
} unk_D_8122B2C0; // size = 0x1B058
|
||||
|
||||
typedef struct unk_D_8122B1E8 {
|
||||
/* 0x00 */ OSMesg mesg[1];
|
||||
/* 0x04 */ OSMesgQueue queue;
|
||||
|
|
@ -71,8 +26,32 @@ typedef struct unk_D_8122B1E8 {
|
|||
/* 0x28 */ char unk28[0x40];
|
||||
} unk_D_8122B1E8; // size = 0x68
|
||||
|
||||
extern unk_D_80068BB0* D_8122B1E0[2];
|
||||
typedef struct unk_func_812009D0 {
|
||||
/* 0x00 */ u8 unk00[0x34];
|
||||
/* 0x34 */ u8 data[0x10];
|
||||
/* 0x44 */ u16 unk_44;
|
||||
/* 0x46 */ u8 unk_46;
|
||||
/* 0x47 */ u8 unk47;
|
||||
/* 0x48 */ u8 unk_48;
|
||||
/* 0x49 */ u8 unk_49;
|
||||
/* 0x4A */ u8 unk_4A;
|
||||
} unk_func_812009D0; // size = 0x4B
|
||||
|
||||
typedef struct unk_D_8122C748 {
|
||||
/* 0x0000 */ u8 unk0000[0x9790];
|
||||
/* 0x9790 */ s32 unk_9790;
|
||||
/* 0x9794 */ u8 unk[0xFC];
|
||||
/* 0x9890 */ s32 unk_9890;
|
||||
/* 0x9894 */ u8 data[0xFC];
|
||||
/* 0x9990 */ s32 unk_9990;
|
||||
} unk_D_8122C748; // size = 0x9994
|
||||
|
||||
extern unk_D_80068BB0* D_8122B1E0;
|
||||
extern unk_D_80068BB0* D_8122B1E4;
|
||||
extern u8 D_8120D820[200];
|
||||
extern u8 D_8120DD70;
|
||||
extern unk_D_8122B1E8 D_8122B1E8[2];
|
||||
extern s32 D_8122B224[];
|
||||
extern s32 D_8122B2B8;
|
||||
extern unk_D_8122B2C0* D_8122B2C0;
|
||||
extern unk_D_8122B2F8* D_8122B2C8[3];
|
||||
|
|
@ -102,7 +81,7 @@ extern u8 D_8122C500[0x1F];
|
|||
extern u8 D_8122C520[0x20];
|
||||
extern u8* D_8122C740;
|
||||
extern u8* D_8122C744;
|
||||
extern void* D_8122C748;
|
||||
extern unk_D_8122C748* D_8122C748;
|
||||
extern s32 D_8122C74C;
|
||||
extern u8* D_8122C754;
|
||||
extern u8* D_8122C758[2];
|
||||
|
|
@ -217,8 +196,29 @@ s32 func_81200358(unk_D_8122B2C0* arg0) {
|
|||
return ret;
|
||||
}
|
||||
|
||||
void func_812003EC(unk_D_8122B2C0*, s32);
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/1/fragment1_7F9A0/func_812003EC.s")
|
||||
void func_812003EC(unk_D_8122B2C0* arg0, s32 arg1) {
|
||||
s32 i;
|
||||
|
||||
switch (arg1) {
|
||||
case 3:
|
||||
for (i = 0; i < 8; i++) {
|
||||
arg0->unk_5D80[i] = 0;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
for (i = 0; i < 8; i++) {
|
||||
arg0->unk_5D80[i] = -1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
osDpGetCounters(arg0->unk_5D80);
|
||||
arg0->unk_5D80[3] = osGetCount();
|
||||
osWritebackDCacheAll();
|
||||
osDpGetCounters(arg0->unk_5D90);
|
||||
arg0->unk_5D90[3] = osGetCount();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
s32 func_812004B8(unk_D_8122B2C0*);
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/1/fragment1_7F9A0/func_812004B8.s")
|
||||
|
|
@ -253,12 +253,68 @@ s32 func_812005D8(unk_D_8122B2C0* arg0) {
|
|||
return ret;
|
||||
}
|
||||
|
||||
s32 func_812006AC(unk_D_8122B2C0* arg0);
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/1/fragment1_7F9A0/func_812006AC.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/1/fragment1_7F9A0/func_812008C8.s")
|
||||
s32 func_812008C8(unk_D_8122B2C0* arg0, s32 arg1) {
|
||||
s32 temp_v0;
|
||||
s32 var_s0;
|
||||
s32 var_s1;
|
||||
u8* var_s3;
|
||||
s32 var_v0;
|
||||
s32 var_v1;
|
||||
u32 var_s2;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/1/fragment1_7F9A0/func_812009D0.s")
|
||||
var_v0 = func_812005D8(arg0);
|
||||
var_v1 = var_v0;
|
||||
var_s3 = arg0->transferBuffer;
|
||||
var_s2 = arg0->gbAddress;
|
||||
var_s1 = arg0->transferSize;
|
||||
while ((var_v0 == 0) && (var_s1 != 0)) {
|
||||
var_v0 = func_812002BC(arg0, var_s2 >> 0xD);
|
||||
var_v1 = var_v0;
|
||||
if (var_v0 == 0) {
|
||||
temp_v0 = var_s2 & 0x1FFF;
|
||||
if ((u32) (temp_v0 + var_s1) >= 0x2001U) {
|
||||
var_s0 = 0x2000 - temp_v0;
|
||||
} else {
|
||||
var_s0 = var_s1;
|
||||
}
|
||||
var_v0 = osGbpakReadWrite(&arg0->pfs, arg1, (temp_v0 | 0xA000) & 0xFFFF, var_s3, var_s0);
|
||||
var_v1 = var_v0;
|
||||
var_s3 += var_s0;
|
||||
var_s1 -= var_s0;
|
||||
var_s2 = (var_s2 + 0x2000) & ~0x1FFF;
|
||||
}
|
||||
}
|
||||
if (var_v0 == 0) {
|
||||
var_v1 = func_8120019C(arg0);
|
||||
}
|
||||
return var_v1;
|
||||
}
|
||||
|
||||
s32 func_812009D0(unk_func_812009D0* arg0) {
|
||||
u8* var_s1;
|
||||
s32 i;
|
||||
|
||||
var_s1 = &D_8120DD70;
|
||||
for (i = 4; i > 0; i--) {
|
||||
if (
|
||||
(bcmp(var_s1, arg0->data, 0x10) == 0) &&
|
||||
(arg0->unk_44 == 0x3031) &&
|
||||
(arg0->unk_46 == 3) &&
|
||||
(arg0->unk_48 == 5) &&
|
||||
(arg0->unk_49 == 3) &&
|
||||
(arg0->unk_4A != 0)
|
||||
) {
|
||||
return i;
|
||||
}
|
||||
var_s1 -= 0x10;
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
void func_81200AA8(void *);
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/1/fragment1_7F9A0/func_81200AA8.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/1/fragment1_7F9A0/func_812011D0.s")
|
||||
|
|
@ -279,16 +335,78 @@ s32 func_812015E0(UNUSED s32 arg0, s32 arg1) {
|
|||
return arg1;
|
||||
}
|
||||
|
||||
void func_812015EC(u16*, u16*, s32, s32, s32);
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/1/fragment1_7F9A0/func_812015EC.s")
|
||||
void func_812015EC(u16* dst, u16* src, s32 mode, s32 width, s32 height) {
|
||||
s32 (*operation)(s32, s32);
|
||||
s32 x;
|
||||
s32 y;
|
||||
width = ((width + 3) & 0xFFC);
|
||||
switch (mode) {
|
||||
case 0: operation = func_81201560; break;
|
||||
case 1: operation = func_8120157C; break;
|
||||
case 2: operation = func_81201598; break;
|
||||
default: operation = func_812015E0; break;
|
||||
}
|
||||
|
||||
for (x = 0; x != height; x++) {
|
||||
for (y = 0; y != width; y++) {
|
||||
*dst = operation(*dst, *src);
|
||||
dst++;
|
||||
src++;
|
||||
}
|
||||
dst = dst - width + 0x140;
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/1/fragment1_7F9A0/func_812016DC.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/1/fragment1_7F9A0/func_812018C0.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/1/fragment1_7F9A0/func_81201DDC.s")
|
||||
#ifdef NON_MATCHING
|
||||
void func_81201DDC(u16* dst, u8* alpha_map, s32 color, s32 width, s32 height, u32 alpha_stride) {
|
||||
u16* dst_row;
|
||||
u8* alpha_row;
|
||||
s32 x;
|
||||
s32 y;
|
||||
s32 var_t0;
|
||||
s32 var_t4;
|
||||
s32 var_a0;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/1/fragment1_7F9A0/func_81201FBC.s")
|
||||
for (y = 0; y < height; y++) {
|
||||
for (x = 0; x < width; x++) {
|
||||
var_a0 = alpha_map[y * alpha_stride + x];
|
||||
|
||||
var_t0 = (dst[y * 320 + x] & 0xF800) + ((((color & 0xF800) * (var_a0 & 0xF)) / 15) & 0xF800);
|
||||
if (var_t0 > 0xF800) var_t0 = 0xF800;
|
||||
|
||||
var_t4 = var_t0;
|
||||
|
||||
var_t0 = (dst[y * 320 + x] & 0x07C0) + ((((color & 0x07C0) * (var_a0 & 0xF)) / 15) & 0x07C0);
|
||||
if (var_t0 > 0x07C0) var_t0 = 0x07C0;
|
||||
|
||||
var_t4 |= var_t0;
|
||||
|
||||
var_t0 = (dst[y * 320 + x] & 0x003E) + ((((color & 0x003E) * (var_a0 & 0xF)) / 15) & 0x003E);
|
||||
if (var_t0 > 0x003E) var_t0 = 0x003E;
|
||||
|
||||
dst[y * 320 + x] = (s16)(var_t4 | var_t0);
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/1/fragment1_7F9A0/func_81201DDC.s")
|
||||
#endif
|
||||
|
||||
void func_81201FBC(s32 arg0, s32 arg1, s32 arg2) {
|
||||
s32 var_s0;
|
||||
s32 var_s1;
|
||||
s32 i;
|
||||
|
||||
for (i = 8; i < arg2 - 8; i += 8) {
|
||||
func_812018C0(arg0 + i * 2, &D_8122C748->unk_9890, arg1, 8, 0x10);
|
||||
}
|
||||
func_812018C0(arg0, &D_8122C748->unk_9790, arg1, 8, 0x10);
|
||||
func_812018C0(arg0 + (arg2 - 8) * 2, &D_8122C748->unk_9990, arg1, 8, 0x10);
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/1/fragment1_7F9A0/func_812020C0.s")
|
||||
|
||||
|
|
@ -304,18 +422,89 @@ void func_812015EC(u16*, u16*, s32, s32, s32);
|
|||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/1/fragment1_7F9A0/func_81202FCC.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/1/fragment1_7F9A0/func_8120311C.s")
|
||||
void func_8120311C(unk_D_8122B2C0* arg0) {
|
||||
s32 i;
|
||||
s32 var_a0;
|
||||
u8* var_a1;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/1/fragment1_7F9A0/func_81203304.s")
|
||||
bzero(arg0->unk_00, 0x208);
|
||||
bzero(arg0->unk_208, 0x40);
|
||||
bzero(arg0->unk_248, 0x40);
|
||||
bzero(arg0->unk_388, 0x400);
|
||||
bzero(arg0->unk_788, 0x4000);
|
||||
bzero(arg0->unk_549C, 0x100);
|
||||
bzero(arg0->unk_559C, 0x10);
|
||||
bzero(arg0->unk_55AC, 0x40);
|
||||
bzero(arg0->unk_55EC, 0x40);
|
||||
bzero(arg0->unk_582C, 0x200);
|
||||
bzero(arg0->unk_5A2C, 0x200);
|
||||
bzero(arg0->unk_562C, 0x200);
|
||||
bzero(arg0->unk_53B4, 0x6000);
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/1/fragment1_7F9A0/func_8120334C.s")
|
||||
for (i = 0; i < 0x80; i++) {
|
||||
arg0->unk_582C[i] = 0xFE;
|
||||
arg0->unk_5A2C[i] = 0xFF;
|
||||
}
|
||||
|
||||
for (i = 0; i < 0x400; i++) {
|
||||
arg0->unk_388[i] = 0xFF;
|
||||
}
|
||||
|
||||
var_a0 = 0;
|
||||
for (i = 0x10; i < 0x1A0; i += 2) {
|
||||
arg0->unk_788[i] = D_8120D820[var_a0];
|
||||
var_a0++;
|
||||
}
|
||||
|
||||
var_a0 = 1;
|
||||
for (i = 0x1904; i < 0x1910; i++) {
|
||||
arg0->unk_788[i] = var_a0;
|
||||
arg0->unk_788[i + 32] = var_a0 + 0xC;
|
||||
var_a0 += 1;
|
||||
}
|
||||
arg0->unk_788[i] = 0x19;
|
||||
|
||||
for (i = 1; i < 0x1A; i++) {
|
||||
arg0->unk_388[i] = 0;
|
||||
}
|
||||
|
||||
for (i = 0x190; i < 0x193; i++) {
|
||||
arg0->unk_388[i] = 0;
|
||||
}
|
||||
|
||||
arg0->unk_539C = 0x25800;
|
||||
arg0->unk_53FC = 0;
|
||||
arg0->unk_53FD = 0;
|
||||
arg0->unk_53EE = 0x140;
|
||||
arg0->unk_53FE = 0x30;
|
||||
arg0->unk_53F0 = 0x7C;
|
||||
arg0->unk_5485 = 1;
|
||||
arg0->unk_5390 = 0;
|
||||
arg0->unk_548E = 1;
|
||||
arg0->unk_5394 = 0x8000;
|
||||
arg0->unk_5398 = 0x8000;
|
||||
|
||||
func_81209870(arg0);
|
||||
}
|
||||
|
||||
void func_81203304(void) {
|
||||
bzero(D_8122B1E0->img_p, 0x2D000);
|
||||
bzero(D_8122B1E4->img_p, 0x2D000);
|
||||
}
|
||||
|
||||
void func_8120334C(OSTime arg0) {
|
||||
OSMesgQueue sp68;
|
||||
void* sp64;
|
||||
OSTimer sp40;
|
||||
|
||||
osCreateMesgQueue(&sp68, &sp64, 1);
|
||||
osSetTimer(&sp40, (1000 * arg0) * 64 / 3, 0, &sp68, NULL);
|
||||
osRecvMesg(&sp68, NULL, 1);
|
||||
}
|
||||
|
||||
void func_81200AA8(void *);
|
||||
void func_81202210(s32, s32);
|
||||
void func_8120241C(void);
|
||||
void func_812029B0(u8*, u16 (*)[6][0x640], s32, s32);
|
||||
void func_8120311C(unk_D_8122B2C0*);
|
||||
void func_81203304(void);
|
||||
void func_812070A0(void);
|
||||
void func_8120735C(s32);
|
||||
void func_81208C08(s32, s32, s32);
|
||||
|
|
@ -327,7 +516,7 @@ void func_8120935C(s32);
|
|||
void func_812033F4(s32, s32, OSId, s32, OSMesgQueue*, u16 (*arg5)[6][0x640]);
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/1/fragment1_7F9A0/func_812033F4.s")
|
||||
|
||||
void func_81203C58(unk_D_8122B2C0* arg0);
|
||||
void func_81203C58(unk_D_8122B2C0*);
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/1/fragment1_7F9A0/func_81203C58.s")
|
||||
|
||||
void func_81203E30(void) {
|
||||
|
|
@ -340,9 +529,10 @@ void func_81203E30(void) {
|
|||
D_8122C4F4 = (D_8122C4FA.unk_01 == 0) ? 0x1000 : (D_8122C4FA.unk_01 == 2) ? 0x10 : (D_8122C4FA.unk_01 == 3) ? 2 : (D_8122C4FA.unk_01 == 4) ? 4 : 0x20;
|
||||
}
|
||||
|
||||
void func_81203F3C(unk_D_8122B2C0*);
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/1/fragment1_7F9A0/func_81203F3C.s")
|
||||
|
||||
void func_81204A84(s32 arg0);
|
||||
void func_81204A84(s32);
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/1/fragment1_7F9A0/func_81204A84.s")
|
||||
|
||||
s32 func_8120572C(s32);
|
||||
|
|
|
|||
|
|
@ -2,11 +2,35 @@
|
|||
|
||||
typedef struct unk_func_81208D7C {
|
||||
/* 0x00 */ u8 unk_00;
|
||||
/* 0x02 */ char unk00[0x06];
|
||||
/* 0x08 */ s32 unk_08;
|
||||
/* 0x10 */ char unk0C[0x30];
|
||||
/* 0x3C */ s8 unk_3C;
|
||||
/* 0x3D */ char unk3D[0x13];
|
||||
/* 0x02 */ char unk02[0x02];
|
||||
/* 0x04 */ s32 unk_04;
|
||||
/* 0x08 */ union {
|
||||
u16 unk_00;
|
||||
s32 unk_02;
|
||||
} unk_08;
|
||||
/* 0x0C */ u32 unk_0C;
|
||||
/* 0x10 */ u16 unk_10;
|
||||
/* 0x12 */ u16 unk_12;
|
||||
/* 0x14 */ s32 unk_14;
|
||||
/* 0x18 */ s32 unk_18;
|
||||
/* 0x1C */ char unk1C[0x4];
|
||||
/* 0x20 */ u8 unk_20;
|
||||
/* 0x21 */ u8 unk_21;
|
||||
/* 0x22 */ char unk22[0x2];
|
||||
/* 0x24 */ u32 unk_24;
|
||||
/* 0x28 */ u32 unk_28;
|
||||
/* 0x2C */ char unk2C[0x1];
|
||||
/* 0x2D */ u8 unk_2D;
|
||||
/* 0x2E */ u8 unk_2E;
|
||||
/* 0x2F */ char unk2F[0xD];
|
||||
/* 0x3C */ u8 unk_3C;
|
||||
/* 0x3D */ char unk3D[0x3];
|
||||
/* 0x40 */ u32 unk_40;
|
||||
/* 0x44 */ u16 unk_44;
|
||||
/* 0x46 */ u16 unk46;
|
||||
/* 0x48 */ u32 unk_48;
|
||||
/* 0x4C */ u8 unk_4C;
|
||||
/* 0x4D */ char unk4D[0x3];
|
||||
} unk_func_81208D7C; // size = 0x50
|
||||
|
||||
typedef struct unk_D_8122EEA8 {
|
||||
|
|
@ -17,12 +41,16 @@ typedef struct unk_D_8122EEA8 {
|
|||
} unk_D_8122EEA8; // size = 0x4
|
||||
|
||||
extern u8 D_811FEB60[];
|
||||
extern u8 D_8120EB24[];
|
||||
extern u8 D_8120EB28[];
|
||||
extern u8 D_8120EB38[];
|
||||
extern u16 D_8120EA86;
|
||||
extern f32 D_8120EAC0;
|
||||
extern s32 D_8120EAC8;
|
||||
extern s32 D_8120EACC;
|
||||
extern s32 D_8120EAC4;
|
||||
extern s32 D_8120EA60;
|
||||
extern u32 D_8120EA80;
|
||||
extern s32 D_8120EB78;
|
||||
extern s32 D_8120EB7C;
|
||||
extern f32 D_8122B0A0;
|
||||
|
|
@ -78,20 +106,166 @@ u32 func_812073B8(u16 arg0) {
|
|||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/1/fragment1_86CB0/func_81207494.s")
|
||||
|
||||
s32 func_812075C0(s32);
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/1/fragment1_86CB0/func_812075C0.s")
|
||||
|
||||
void func_81207690(void) {
|
||||
}
|
||||
|
||||
s32 func_81207698(u32, u16);
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/1/fragment1_86CB0/func_81207698.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/1/fragment1_86CB0/func_81207774.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/1/fragment1_86CB0/func_81207A60.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/1/fragment1_86CB0/func_81207C5C.s")
|
||||
u16 func_81207C5C(void) {
|
||||
u16 temp_v0;
|
||||
u16 temp_a0;
|
||||
u16 temp_a1;
|
||||
u16 var_a0;
|
||||
|
||||
if (D_8122C838.unk_00 == 0) {
|
||||
if (D_8122C838.unk_3C == 0) {
|
||||
return 0U;
|
||||
}
|
||||
D_8122C838.unk_3C--;
|
||||
D_8122C838.unk_20 = D_8122C838.unk_3C;
|
||||
D_8122C838.unk_0C = (s32) D_8122C838.unk_40;
|
||||
} else {
|
||||
if (D_8122C838.unk_04 != 0) {
|
||||
D_8122C838.unk_04--;
|
||||
if (D_8122C838.unk_04 >= 0x21) {
|
||||
if (D_8122C838.unk_3C == 0) {
|
||||
D_8122C838.unk_04 = 0x20;
|
||||
D_8122C838.unk_08.unk_02 = 0;
|
||||
D_8122C838.unk_0C = func_812073B8(D_8122C838.unk_10);
|
||||
D_8122C838.unk_20 = D_8120EB24[D_8122C838.unk_21];
|
||||
} else {
|
||||
if (!(D_8122C838.unk_04 & 7)) {
|
||||
D_8122C838.unk_3C--;
|
||||
}
|
||||
D_8122C838.unk_20 = D_8122C838.unk_3C;
|
||||
D_8122C838.unk_0C = (s32) D_8122C838.unk_40;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
temp_a0 = func_81207698(7, D_8122C838.unk_08.unk_00);
|
||||
D_8122C838.unk_08.unk_02 += D_8122C838.unk_0C;
|
||||
D_8122C838.unk_08.unk_02 &= 0x1FFFFF;
|
||||
if (D_8122C838.unk_4C - 1 == 0) {
|
||||
|
||||
if (D_8122C838.unk_3C != 0) {
|
||||
D_8122C838.unk_3C--;
|
||||
}
|
||||
temp_a1 = D_8122C838.unk_3C;
|
||||
} else {
|
||||
D_8122C838.unk_3C = D_8122C838.unk_20;
|
||||
D_8122C838.unk_40 = D_8122C838.unk_0C;
|
||||
temp_a1 = D_8122C838.unk_20;
|
||||
}
|
||||
|
||||
temp_a0 *= temp_a1;
|
||||
temp_a0 = (D_8122C838.unk_44 + temp_a0) >> 1;
|
||||
D_8122C838.unk_44 = temp_a0;
|
||||
if (D_8122C838.unk_18 == 1) {
|
||||
if (D_8122C838.unk_14 != 0) {
|
||||
D_8122C838.unk_14--;
|
||||
}
|
||||
if (D_8122C838.unk_14 == 0) {
|
||||
D_8122C838.unk_00 = 0U;
|
||||
}
|
||||
}
|
||||
return temp_a0;
|
||||
}
|
||||
|
||||
u16 func_81207C5C_Empty(void) {
|
||||
|
||||
}
|
||||
|
||||
#ifdef NON_MATCHING
|
||||
// Does match but won't generate correct checksum
|
||||
u16 func_81207DF8(void) {
|
||||
static s32 D_8120EB6C;
|
||||
u16 temp_v0;
|
||||
u32 var_a2;
|
||||
|
||||
if (D_8122C888.unk_0C < D_8122C888.unk_40) {
|
||||
D_8122C888.unk_40 -= D_8122C888.unk_48;
|
||||
var_a2 = D_8122C888.unk_40;
|
||||
} else if (D_8122C888.unk_40 < D_8122C888.unk_0C) {
|
||||
D_8122C888.unk_40 += D_8122C888.unk_48;
|
||||
var_a2 = D_8122C888.unk_40;
|
||||
} else {
|
||||
var_a2 = D_8122C888.unk_40;
|
||||
}
|
||||
|
||||
if (D_8122C888.unk_00 == 0) {
|
||||
if (D_8122C888.unk_3C == 0) {
|
||||
return 0;
|
||||
}
|
||||
D_8122C888.unk_3C--;
|
||||
D_8122C888.unk_20 = D_8122C888.unk_3C;
|
||||
D_8122C888.unk_0C = D_8122C888.unk_40;
|
||||
}
|
||||
temp_v0 = func_81207698(6, D_8122C888.unk_08.unk_00);
|
||||
D_8122C888.unk_08.unk_02 += var_a2;
|
||||
if (D_8122C888.unk_08.unk_00 >= (u32)D_8120EACC) {
|
||||
D_8122C888.unk_08.unk_00 = D_8120EAC8;
|
||||
}
|
||||
temp_v0 *= D_8122C888.unk_3C;
|
||||
if ((D_8122C888.unk_3C != D_8122C888.unk_20) && ((D_8120EB6C % 95) == 0)) {
|
||||
if (D_8122C888.unk_3C > D_8122C888.unk_20) {
|
||||
D_8122C888.unk_3C--;
|
||||
} else {
|
||||
D_8122C888.unk_3C++;
|
||||
}
|
||||
}
|
||||
D_8120EB6C++;
|
||||
if (D_8122C888.unk_28 != 0) {
|
||||
D_8122C888.unk_24++;
|
||||
if ((D_8122C888.unk_24 % (u32) D_8122C888.unk_28) == 0) {
|
||||
switch (D_8122C888.unk_2E) { /* irregular */
|
||||
case 0:
|
||||
if (D_8122C888.unk_2D) {
|
||||
D_8122C888.unk_2D--;
|
||||
}
|
||||
if (D_8122C888.unk_2D == 0) {
|
||||
D_8122C888.unk_00 = 0;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (D_8122C888.unk_2D < 0xF) {
|
||||
D_8122C888.unk_2D++;
|
||||
}
|
||||
break;
|
||||
}
|
||||
switch ((D_8120EA80 << 0x14) >> 0x1F) { /* switch 1; irregular */
|
||||
case 0: /* switch 1 */
|
||||
D_8122C888.unk_20 = D_8120EB28[D_8122C888.unk_2D];
|
||||
break;
|
||||
case 1: /* switch 1 */
|
||||
D_8122C888.unk_20 = D_8120EB38[D_8122C888.unk_2D];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (D_8122C888.unk_18 == 1) {
|
||||
if (D_8122C888.unk_14 != 0) {
|
||||
D_8122C888.unk_14--;
|
||||
}
|
||||
if (D_8122C888.unk_14 == 0) {
|
||||
D_8122C888.unk_00 = 0U;
|
||||
}
|
||||
}
|
||||
|
||||
return (temp_v0 << 1);
|
||||
}
|
||||
#else
|
||||
u16 func_81207DF8(void);
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/1/fragment1_86CB0/func_81207DF8.s")
|
||||
#endif
|
||||
|
||||
void func_8120806C(u16, u8);
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/1/fragment1_86CB0/func_8120806C.s")
|
||||
|
|
@ -115,10 +289,10 @@ void func_81208D7C(void) {
|
|||
D_8122C7E8.unk_3C = 0;
|
||||
D_8122C838.unk_3C = 0;
|
||||
D_8122C888.unk_3C = 0;
|
||||
D_8122C798.unk_08 = 0;
|
||||
D_8122C7E8.unk_08 = 0;
|
||||
D_8122C838.unk_08 = 0;
|
||||
D_8122C888.unk_08 = 0;
|
||||
D_8122C798.unk_08.unk_02 = 0;
|
||||
D_8122C7E8.unk_08.unk_02 = 0;
|
||||
D_8122C838.unk_08.unk_02 = 0;
|
||||
D_8122C888.unk_08.unk_02 = 0;
|
||||
}
|
||||
|
||||
void func_81208E28(s32 arg0) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user