mirror of
https://github.com/pret/pokeruby.git
synced 2026-10-06 01:03:46 -04:00
Fix non-matching sub_80EEF34 and start more decomp
This commit is contained in:
@@ -6,46 +6,6 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_80EEF78
|
||||
sub_80EEF78: @ 80EEF78
|
||||
push {r4,lr}
|
||||
movs r3, 0x1
|
||||
ldr r0, _080EEF94 @ =gUnknown_083DFEC4
|
||||
ldr r0, [r0]
|
||||
movs r1, 0xC3
|
||||
lsls r1, 2
|
||||
adds r2, r0, r1
|
||||
ldrh r1, [r2]
|
||||
movs r4, 0
|
||||
ldrsh r0, [r2, r4]
|
||||
cmp r0, 0
|
||||
bne _080EEF98
|
||||
movs r0, 0
|
||||
b _080EEFB0
|
||||
.align 2, 0
|
||||
_080EEF94: .4byte gUnknown_083DFEC4
|
||||
_080EEF98:
|
||||
subs r0, r1, 0x2
|
||||
strh r0, [r2]
|
||||
lsls r0, 16
|
||||
cmp r0, 0
|
||||
bgt _080EEFA8
|
||||
movs r0, 0
|
||||
strh r0, [r2]
|
||||
movs r3, 0
|
||||
_080EEFA8:
|
||||
ldr r1, _080EEFB8 @ =REG_BG1VOFS
|
||||
ldrh r0, [r2]
|
||||
strh r0, [r1]
|
||||
adds r0, r3, 0
|
||||
_080EEFB0:
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_080EEFB8: .4byte REG_BG1VOFS
|
||||
thumb_func_end sub_80EEF78
|
||||
|
||||
thumb_func_start sub_80EEFBC
|
||||
sub_80EEFBC: @ 80EEFBC
|
||||
push {r4-r7,lr}
|
||||
|
||||
+10
-3
@@ -30,15 +30,22 @@ struct UnkPokenavStruct_Sub2 {
|
||||
/*0x26*/ u16 unk26;
|
||||
};
|
||||
|
||||
struct UnkPokenavStruct_Sub3 {
|
||||
/*0x00*/s16 unk0;
|
||||
};
|
||||
|
||||
struct UnkUsePokeblockSub {
|
||||
/*0*/ u8 fil0[2];
|
||||
/*2*/ u8 partyIdx:5;
|
||||
};
|
||||
|
||||
struct UnkPokenavStruct {
|
||||
/*0x0000*/ u8 filler0000[0x30c];
|
||||
/*0x0000*/ u16 unk030C;
|
||||
/*0x0000*/ u8 filler030E[0x6a9e];
|
||||
/*0x0000*/ u8 filler0000[0x30C];
|
||||
/*0x030C*/ union { // TODO: what?
|
||||
u16 val;
|
||||
struct UnkPokenavStruct_Sub3 unk030C;
|
||||
} unk030C;
|
||||
/*0x0310*/ u8 filler030E[0x6a9c];
|
||||
/*0x6DAC*/ u8 unk6DAC;
|
||||
/*0x6DAD*/ u8 filler6DAD[0x8fd];
|
||||
/*0x76AA*/ u8 unk76AA;
|
||||
|
||||
@@ -244,7 +244,7 @@ static void sub_8136294(void)
|
||||
case 6:
|
||||
gUnknown_083DFEC4->unk76AA = 0;
|
||||
gUnknown_083DFEC4->unk87E0 = NULL;
|
||||
gUnknown_083DFEC4->unk030C = 0x20;
|
||||
gUnknown_083DFEC4->unk030C.val = 0x20;
|
||||
gUnknown_02039304->unk50++;
|
||||
break;
|
||||
case 7:
|
||||
|
||||
+36
-61
@@ -2897,7 +2897,7 @@ bool8 sub_80EEE54() {
|
||||
sub_80EF58C(2);
|
||||
break;
|
||||
case 4:
|
||||
gUnknown_083DFEC4->unk030C = 0;
|
||||
gUnknown_083DFEC4->unk030C.unk030C.unk0 = 0;
|
||||
REG_BG1HOFS = 0;
|
||||
REG_BG1VOFS = 0;
|
||||
REG_BG1CNT = 0x1B0C;
|
||||
@@ -2909,66 +2909,41 @@ bool8 sub_80EEE54() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
#if 0
|
||||
// not matches because of register differences
|
||||
bool8 sub_80EEF34() {
|
||||
bool8 ret = 0x1;
|
||||
if ((s8)gUnknown_083DFEC4->unk030C == 0x20) {
|
||||
return 0;
|
||||
}
|
||||
else {
|
||||
gUnknown_083DFEC4->unk030C += 2;
|
||||
if (gUnknown_083DFEC4->unk030C > 0x1F) {
|
||||
gUnknown_083DFEC4->unk030C = 0x20;
|
||||
ret = 0;
|
||||
}
|
||||
REG_BG1VOFS = gUnknown_083DFEC4->unk030C;
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
#else
|
||||
__attribute__((naked))
|
||||
bool8 sub_80EEF34() {
|
||||
asm(".text\n"
|
||||
".include \"constants/gba_constants.inc\"");
|
||||
bool8 retVal = TRUE;
|
||||
|
||||
asm_unified(
|
||||
"push {r4,lr}\n\
|
||||
movs r3, 0x1\n\
|
||||
ldr r0, _080EEF50 @ =gUnknown_083DFEC4\n\
|
||||
ldr r0, [r0]\n\
|
||||
movs r1, 0xC3\n\
|
||||
lsls r1, 2\n\
|
||||
adds r2, r0, r1\n\
|
||||
ldrh r1, [r2]\n\
|
||||
movs r4, 0\n\
|
||||
ldrsh r0, [r2, r4]\n\
|
||||
cmp r0, 0x20\n\
|
||||
bne _080EEF54\n\
|
||||
movs r0, 0\n\
|
||||
b _080EEF6E\n\
|
||||
.align 2, 0\n\
|
||||
_080EEF50: .4byte gUnknown_083DFEC4\n\
|
||||
_080EEF54:\n\
|
||||
adds r0, r1, 0x2\n\
|
||||
strh r0, [r2]\n\
|
||||
lsls r0, 16\n\
|
||||
asrs r0, 16\n\
|
||||
cmp r0, 0x1F\n\
|
||||
ble _080EEF66\n\
|
||||
movs r0, 0x20\n\
|
||||
strh r0, [r2]\n\
|
||||
movs r3, 0\n\
|
||||
_080EEF66:\n\
|
||||
ldr r1, _080EEF74 @ =REG_BG1VOFS\n\
|
||||
ldrh r0, [r2]\n\
|
||||
strh r0, [r1]\n\
|
||||
adds r0, r3, 0\n\
|
||||
_080EEF6E:\n\
|
||||
pop {r4}\n\
|
||||
pop {r1}\n\
|
||||
bx r1\n\
|
||||
.align 2, 0\n\
|
||||
_080EEF74: .4byte REG_BG1VOFS");
|
||||
if (gUnknown_083DFEC4->unk030C.unk030C.unk0 == 32)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
gUnknown_083DFEC4->unk030C.unk030C.unk0 += 2;
|
||||
if (gUnknown_083DFEC4->unk030C.unk030C.unk0 > 31)
|
||||
{
|
||||
gUnknown_083DFEC4->unk030C.unk030C.unk0 = 32;
|
||||
retVal = FALSE;
|
||||
}
|
||||
|
||||
REG_BG1VOFS = gUnknown_083DFEC4->unk030C.unk030C.unk0;
|
||||
return retVal;
|
||||
}
|
||||
|
||||
bool8 sub_80EEF78(void)
|
||||
{
|
||||
bool8 retVal = TRUE;
|
||||
|
||||
if (gUnknown_083DFEC4->unk030C.unk030C.unk0 == 0)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
gUnknown_083DFEC4->unk030C.unk030C.unk0 -= 2;
|
||||
if (gUnknown_083DFEC4->unk030C.unk030C.unk0 <= 0)
|
||||
{
|
||||
gUnknown_083DFEC4->unk030C.unk030C.unk0 = 0;
|
||||
retVal = FALSE;
|
||||
}
|
||||
|
||||
REG_BG1VOFS = gUnknown_083DFEC4->unk030C.unk030C.unk0;
|
||||
return retVal;
|
||||
}
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user