decompile sub_31B30 (#145)

* decompile sub_31B30

* cleanup

---------

Co-authored-by: Marcus Huderle <huderlem@gmail.com>
This commit is contained in:
Wendy Moniuk 2025-08-08 08:31:56 -04:00 committed by GitHub
parent ce679ef0c7
commit 4c3ce8fbff
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 34 additions and 96 deletions

View File

@ -51516,98 +51516,3 @@ _08031B20: .4byte 0x00000359
_08031B24: .4byte gOamBuffer
_08031B28: .4byte 0xFFFFFE00
_08031B2C: .4byte 0x000001FF
thumb_func_start sub_31B30
sub_31B30: @ 0x08031B30
push {r4, r5, r6, r7, lr}
ldr r1, _08031B64 @ =gMain
ldrb r0, [r1, #4]
ldr r2, _08031B68 @ =0x00004010
adds r6, r1, r2
cmp r0, #0
bne _08031B42
ldr r0, _08031B6C @ =0x00003D30
adds r6, r1, r0
_08031B42:
ldrh r0, [r6]
cmp r0, #0
beq _08031BD6
ldr r0, _08031B70 @ =gCurrentPinballGame
ldr r1, [r0]
adds r0, r1, #0
adds r0, #0x4c
movs r2, #0
ldrsh r0, [r0, r2]
cmp r0, #7
bgt _08031B74
adds r0, r1, #0
adds r0, #0x58
ldrh r1, [r0]
movs r2, #8
rsbs r2, r2, #0
b _08031B7E
.align 2, 0
_08031B64: .4byte gMain
_08031B68: .4byte 0x00004010
_08031B6C: .4byte 0x00003D30
_08031B70: .4byte gCurrentPinballGame
_08031B74:
adds r0, r1, #0
adds r0, #0x58
ldrh r1, [r0]
movs r2, #0x80
lsls r2, r2, #1
_08031B7E:
adds r0, r2, #0
subs r0, r0, r1
strh r0, [r6, #2]
movs r0, #0
strh r0, [r6, #4]
ldr r7, _08031BDC @ =gOamBuffer
ldr r1, _08031BE0 @ =0xFFFFFE00
mov ip, r1
_08031B8E:
lsls r5, r0, #0x10
asrs r5, r5, #0x10
lsls r3, r5, #3
adds r3, #8
adds r3, r6, r3
ldrh r4, [r3]
lsls r4, r4, #3
adds r4, r4, r7
movs r2, #2
ldrsh r1, [r3, r2]
movs r2, #2
ldrsh r0, [r6, r2]
adds r1, r1, r0
ldr r2, _08031BE4 @ =0x000001FF
adds r0, r2, #0
ands r1, r0
ldrh r2, [r4, #2]
mov r0, ip
ands r0, r2
orrs r0, r1
strh r0, [r4, #2]
ldrh r2, [r3]
lsls r2, r2, #3
adds r2, r2, r7
ldrb r0, [r6, #4]
ldrb r3, [r3, #4]
adds r0, r0, r3
lsls r1, r5, #5
adds r0, r0, r1
strb r0, [r2]
adds r5, #1
lsls r5, r5, #0x10
lsrs r0, r5, #0x10
asrs r5, r5, #0x10
cmp r5, #4
ble _08031B8E
_08031BD6:
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_08031BDC: .4byte gOamBuffer
_08031BE0: .4byte 0xFFFFFE00
_08031BE4: .4byte 0x000001FF

Binary file not shown.

View File

@ -554,7 +554,7 @@ extern void sub_30EB4();
extern void sub_31144();
extern void sub_313A0();
extern void sub_31498();
extern void sub_31B30();
extern void sub_31B30(void);
extern void sub_31BE8(s16);
//extern ? sub_31CF8();
//extern ? BuildSpeciesWeightsForCatchEmMode();

View File

@ -3,6 +3,39 @@
#include "gba/gba.h"
#include "constants/fields.h"
void sub_31B30(void)
{
s16 i;
struct SpriteGroup *group;
if (gMain.selectedField == FIELD_RUBY)
group = &gMain.spriteGroups[81];
else
group = &gMain.spriteGroups[85];
if (group->available)
{
if (gCurrentPinballGame->unk4C < 8)
{
group->baseX = gCurrentPinballGame->unk58;
group->baseX = -8 - group->baseX;
}
else
{
group->baseX = gCurrentPinballGame->unk58;
group->baseX = 256 - group->baseX;
}
group->baseY = 0;
for (i = 0; i < 5; i++)
{
struct OamDataSimple *oamSimple = &group->oam[i];
gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX;
gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY + i * 0x20;
}
}
}
/**
* Executed when saving or loading from a main field
* arg0