This commit is contained in:
Ethan Roseman 2020-12-11 19:37:10 +09:00
parent dd904df200
commit f95a561d3d
4 changed files with 65 additions and 85 deletions

View File

@ -1,35 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_8004B6D8
/* 26AD8 8004B6D8 90830164 */ lbu $v1, 0x164($a0)
/* 26ADC 8004B6DC 90820163 */ lbu $v0, 0x163($a0)
/* 26AE0 8004B6E0 8FA90010 */ lw $t1, 0x10($sp)
/* 26AE4 8004B6E4 00621023 */ subu $v0, $v1, $v0
/* 26AE8 8004B6E8 04420001 */ bltzl $v0, .L8004B6F0
/* 26AEC 8004B6EC 24420010 */ addiu $v0, $v0, 0x10
.L8004B6F0:
/* 26AF0 8004B6F0 28420010 */ slti $v0, $v0, 0x10
/* 26AF4 8004B6F4 10400012 */ beqz $v0, .L8004B740
/* 26AF8 8004B6F8 0060402D */ daddu $t0, $v1, $zero
/* 26AFC 8004B6FC 00081880 */ sll $v1, $t0, 2
/* 26B00 8004B700 00681821 */ addu $v1, $v1, $t0
/* 26B04 8004B704 25080001 */ addiu $t0, $t0, 1
/* 26B08 8004B708 00031840 */ sll $v1, $v1, 1
/* 26B0C 8004B70C 00831821 */ addu $v1, $a0, $v1
/* 26B10 8004B710 30A2BFFF */ andi $v0, $a1, 0xbfff
/* 26B14 8004B714 A46200C2 */ sh $v0, 0xc2($v1)
/* 26B18 8004B718 00051402 */ srl $v0, $a1, 0x10
/* 26B1C 8004B71C 304203FF */ andi $v0, $v0, 0x3ff
/* 26B20 8004B720 A46200C4 */ sh $v0, 0xc4($v1)
/* 26B24 8004B724 2D020010 */ sltiu $v0, $t0, 0x10
/* 26B28 8004B728 A46600C6 */ sh $a2, 0xc6($v1)
/* 26B2C 8004B72C A46700C8 */ sh $a3, 0xc8($v1)
/* 26B30 8004B730 14400002 */ bnez $v0, .L8004B73C
/* 26B34 8004B734 A06900CA */ sb $t1, 0xca($v1)
/* 26B38 8004B738 0000402D */ daddu $t0, $zero, $zero
.L8004B73C:
/* 26B3C 8004B73C A0880164 */ sb $t0, 0x164($a0)
.L8004B740:
/* 26B40 8004B740 03E00008 */ jr $ra
/* 26B44 8004B744 00000000 */ nop

View File

@ -1,35 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_8004B9E4
/* 26DE4 8004B9E4 30A500FF */ andi $a1, $a1, 0xff
/* 26DE8 8004B9E8 240200F0 */ addiu $v0, $zero, 0xf0
/* 26DEC 8004B9EC 10A20017 */ beq $a1, $v0, .L8004BA4C
/* 26DF0 8004B9F0 28A20008 */ slti $v0, $a1, 8
/* 26DF4 8004B9F4 10400013 */ beqz $v0, .L8004BA44
/* 26DF8 8004B9F8 240200FF */ addiu $v0, $zero, 0xff
/* 26DFC 8004B9FC 9082008C */ lbu $v0, 0x8c($a0)
/* 26E00 8004BA00 1045000C */ beq $v0, $a1, .L8004BA34
/* 26E04 8004BA04 24020006 */ addiu $v0, $zero, 6
/* 26E08 8004BA08 8C830000 */ lw $v1, ($a0)
/* 26E0C 8004BA0C A085008C */ sb $a1, 0x8c($a0)
/* 26E10 8004BA10 A0620044 */ sb $v0, 0x44($v1)
/* 26E14 8004BA14 8C830000 */ lw $v1, ($a0)
/* 26E18 8004BA18 24020001 */ addiu $v0, $zero, 1
/* 26E1C 8004BA1C A0620045 */ sb $v0, 0x45($v1)
/* 26E20 8004BA20 00051080 */ sll $v0, $a1, 2
/* 26E24 8004BA24 00821021 */ addu $v0, $a0, $v0
/* 26E28 8004BA28 8C420064 */ lw $v0, 0x64($v0)
/* 26E2C 8004BA2C 3C018008 */ lui $at, %hi(D_8007F1F8)
/* 26E30 8004BA30 AC22F1F8 */ sw $v0, %lo(D_8007F1F8)($at)
.L8004BA34:
/* 26E34 8004BA34 00851021 */ addu $v0, $a0, $a1
/* 26E38 8004BA38 90420084 */ lbu $v0, 0x84($v0)
/* 26E3C 8004BA3C 08012E93 */ j .L8004BA4C
/* 26E40 8004BA40 A082008D */ sb $v0, 0x8d($a0)
.L8004BA44:
/* 26E44 8004BA44 A082008C */ sb $v0, 0x8c($a0)
/* 26E48 8004BA48 A080008D */ sb $zero, 0x8d($a0)
.L8004BA4C:
/* 26E4C 8004BA4C 03E00008 */ jr $ra
/* 26E50 8004BA50 9082008C */ lbu $v0, 0x8c($a0)

View File

@ -61,6 +61,14 @@ typedef struct UnkAl0 {
/* 0x20 */ UnkLen18 unk_20[1]; // amt unknown
} UnkAl0;
typedef struct UnkAlA {
/* 0x0 */ s16 unk_00;
/* 0x2 */ s16 unk_02;
/* 0x4 */ s16 unk_04;
/* 0x6 */ s16 unk_06;
/* 0x8 */ s8 unk_08;
} UnkAlA; // size = 0xA;
typedef struct UnkAl6CC {
/* 0x000 */ struct UnkAl19E0* unk_00;
/* 0x004 */ char unk_04[0x2C];
@ -74,25 +82,23 @@ typedef struct UnkAl6CC {
/* 0x04C */ char unk_4C[0x10];
/* 0x05C */ s32 unk_5C;
/* 0x060 */ s32 unk_60;
/* 0x064 */ char unk_64[0x20];
/* 0x084 */ s8 unk_84;
/* 0x085 */ s8 unk_85;
/* 0x086 */ s8 unk_86;
/* 0x087 */ s8 unk_87;
/* 0x088 */ s8 unk_88;
/* 0x089 */ s8 unk_89;
/* 0x08A */ s8 unk_8A;
/* 0x08B */ s8 unk_8B;
/* 0x08C */ char unk_8C[0x2E];
/* 0x064 */ s32 unk_64[8];
/* 0x084 */ s8 unk_84[8];
/* 0x08C */ u8 unk_8C;
/* 0x08D */ s8 unk_8D;
/* 0x08E */ char unk_8E[0x2C];
/* 0x0BA */ s16 unk_BA;
/* 0x0BC */ u8 unk_BC;
/* 0x0BD */ u8 unk_BD;
/* 0x0BE */ u8 unk_BE;
/* 0x0BF */ char unk_BF[0x1];
/* 0x0C0 */ s8 unk_C0;
/* 0x0C1 */ char unk_C1[0xA2];
/* 0x0C1 */ char unk_C1[0x1];
/* 0x0C2 */ UnkAlA unk_C2[16];
/* 0x162 */ char unk_162[0x1];
/* 0x163 */ s8 unk_163;
/* 0x164 */ s32 unk_164;
/* 0x164 */ s8 unk_164;
/* 0x165 */ char unk_165[0x3];
/* 0x168 */ s32 unk_168;
/* 0x16C */ char unk_16C[0x560];
} UnkAl6CC;
@ -340,6 +346,7 @@ extern u16 D_80078DB6;
extern s8 D_80078E58;
extern s16 D_80078E5A;
extern s8 D_80078E5C;
extern s32 D_8007F1F8;
extern UnkAl19E0* D_8009A5C0;
extern UnkAlA9C* D_8009A5CC;
@ -361,7 +368,7 @@ void func_8004B62C(UnkAl6CC*);
void func_8004B698(UnkAl6CC*);
void func_8004B6D8(UnkAl6CC*, s32, s16, s16, u8);
void func_8004B748(UnkAl6CC*);
s32 func_8004B9E4(UnkAl6CC*, s32);
//s32 func_8004B9E4(UnkAl6CC*, u8);
void func_8004BA54(UnkAl6CC*, s32);
void func_8004D510(UnkAlA9C*);
void func_8004DAA8(UnkAlA9C*);

View File

@ -7,11 +7,54 @@ INCLUDE_ASM(void, "code_26840_len_20d0", func_8004B62C, UnkAl6CC* arg0);
INCLUDE_ASM(void, "code_26840_len_20d0", func_8004B698, UnkAl6CC* arg0);
INCLUDE_ASM(void, "code_26840_len_20d0", func_8004B6D8, UnkAl6CC* arg0, s32 arg1, s16 arg2, s16 arg3, u8 arg4);
void func_8004B6D8(UnkAl6CC *arg0, s32 arg1, s16 arg2, s16 arg3, u8 arg4) {
u8 temp_v1 = arg0->unk_164;
s32 temp_v0 = temp_v1 - (u8) arg0->unk_163;
u32 temp_t0;
if (temp_v0 < 0) {
temp_v0 += 0x10;
}
if (temp_v0 < 0x10) {
temp_t0 = temp_v1;
arg0->unk_C2[temp_v1].unk_00 = arg1 & 0xBFFF;
arg0->unk_C2[temp_v1].unk_02 = (((u32) arg1 >> 0x10) & 0x3FF);
arg0->unk_C2[temp_v1].unk_04 = arg2;
arg0->unk_C2[temp_v1].unk_06 = arg3;
arg0->unk_C2[temp_v1].unk_08 = arg4;
temp_t0++;
if (temp_t0 >= 0x10) {
temp_t0 = 0;
}
arg0->unk_164 = temp_t0;
}
}
INCLUDE_ASM(void, "code_26840_len_20d0", func_8004B748, UnkAl6CC* arg0);
INCLUDE_ASM(s32, "code_26840_len_20d0", func_8004B9E4, UnkAl6CC* arg0, s32 arg1);
s32 func_8004B9E4(UnkAl6CC *arg0, s32 arg1) {
s32 a1 = (u8) arg1;
if (a1 != 0xF0) {
if (a1 < 8) {
if (arg0->unk_8C != a1) {
arg0->unk_8C = a1;
arg0->unk_00->unk_40[1].unk_00 = 6;
arg0->unk_00->unk_40[1].unk_01 = 1;
D_8007F1F8 = arg0->unk_64[a1];
}
arg0->unk_8D = arg0->unk_84[a1];
} else {
arg0->unk_8C = 0xFF;
arg0->unk_8D = 0;
}
}
return arg0->unk_8C;
}
void func_8004BA54(UnkAl6CC* arg0, s32 arg1) {
if (arg1 == 0) {