mirror of
https://github.com/pret/pokepinballrs.git
synced 2026-04-25 07:37:32 -05:00
sub_5030C
This commit is contained in:
parent
e81e2d48c0
commit
f16ca87f44
222
asm/rom_4CEA8.s
222
asm/rom_4CEA8.s
|
|
@ -6220,225 +6220,3 @@ _080502FC: .4byte 0x00000107
|
|||
_08050300: .4byte 0x040000D4
|
||||
_08050304: .4byte 0x80000030
|
||||
_08050308: .4byte 0x80000020
|
||||
|
||||
thumb_func_start sub_5030C
|
||||
sub_5030C: @ 0x0805030C
|
||||
push {r4, r5, r6, lr}
|
||||
sub sp, #8
|
||||
ldr r0, _08050340 @ =gCurrentPinballGame
|
||||
ldr r2, [r0]
|
||||
movs r1, #0x13
|
||||
ldrsb r1, [r2, r1]
|
||||
adds r5, r0, #0
|
||||
cmp r1, #2
|
||||
bgt _08050394
|
||||
ldr r1, _08050344 @ =0x0000072F
|
||||
adds r0, r2, r1
|
||||
movs r3, #0
|
||||
ldrsb r3, [r0, r3]
|
||||
cmp r3, #0
|
||||
bne _0805034C
|
||||
mov r1, sp
|
||||
ldr r4, _08050348 @ =0x00000734
|
||||
adds r0, r2, r4
|
||||
movs r2, #0
|
||||
ldrsh r0, [r0, r2]
|
||||
lsls r0, r0, #1
|
||||
strh r0, [r1]
|
||||
mov r0, sp
|
||||
strh r3, [r0, #2]
|
||||
strh r3, [r0, #4]
|
||||
b _080503BA
|
||||
.align 2, 0
|
||||
_08050340: .4byte gCurrentPinballGame
|
||||
_08050344: .4byte 0x0000072F
|
||||
_08050348: .4byte 0x00000734
|
||||
_0805034C:
|
||||
cmp r3, #1
|
||||
bne _0805036C
|
||||
mov r1, sp
|
||||
movs r0, #3
|
||||
strh r0, [r1]
|
||||
ldr r3, _08050368 @ =0x00000734
|
||||
adds r2, r2, r3
|
||||
ldrh r0, [r2]
|
||||
adds r0, #1
|
||||
strh r0, [r1, #2]
|
||||
movs r4, #0
|
||||
ldrsh r0, [r2, r4]
|
||||
lsls r0, r0, #1
|
||||
b _080503B8
|
||||
.align 2, 0
|
||||
_08050368: .4byte 0x00000734
|
||||
_0805036C:
|
||||
cmp r3, #2
|
||||
bne _08050388
|
||||
mov r0, sp
|
||||
movs r1, #3
|
||||
strh r1, [r0]
|
||||
strh r1, [r0, #2]
|
||||
mov r1, sp
|
||||
ldr r3, _08050384 @ =0x00000734
|
||||
adds r0, r2, r3
|
||||
ldrh r0, [r0]
|
||||
adds r0, #2
|
||||
b _080503B8
|
||||
.align 2, 0
|
||||
_08050384: .4byte 0x00000734
|
||||
_08050388:
|
||||
mov r0, sp
|
||||
movs r1, #3
|
||||
strh r1, [r0]
|
||||
strh r1, [r0, #2]
|
||||
strh r1, [r0, #4]
|
||||
b _080503BA
|
||||
_08050394:
|
||||
mov r1, sp
|
||||
ldr r4, _080504A4 @ =0x00000736
|
||||
adds r0, r2, r4
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
strh r0, [r1]
|
||||
ldr r3, _080504A8 @ =0x00000737
|
||||
adds r0, r2, r3
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
strh r0, [r1, #2]
|
||||
adds r4, #2
|
||||
adds r0, r2, r4
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
_080503B8:
|
||||
strh r0, [r1, #4]
|
||||
_080503BA:
|
||||
mov r0, sp
|
||||
movs r2, #0
|
||||
ldrsh r1, [r0, r2]
|
||||
lsls r0, r1, #1
|
||||
adds r0, r0, r1
|
||||
lsls r0, r0, #2
|
||||
ldr r3, _080504AC @ =gUnknown_086B14A8
|
||||
mov ip, r3
|
||||
adds r3, r0, r3
|
||||
mov r4, ip
|
||||
adds r4, #0x30
|
||||
ldr r0, [r5]
|
||||
adds r0, #0x6a
|
||||
movs r2, #0
|
||||
ldrsh r1, [r0, r2]
|
||||
ldr r0, _080504B0 @ =0x00000107
|
||||
cmp r1, r0
|
||||
bgt _080503F0
|
||||
ldr r1, _080504B4 @ =0x040000D4
|
||||
ldr r0, [r3]
|
||||
str r0, [r1]
|
||||
mov r2, ip
|
||||
ldr r0, [r2, #0x30]
|
||||
str r0, [r1, #4]
|
||||
ldr r0, _080504B8 @ =0x80000030
|
||||
str r0, [r1, #8]
|
||||
ldr r0, [r1, #8]
|
||||
_080503F0:
|
||||
ldr r2, _080504B4 @ =0x040000D4
|
||||
ldr r0, [r3, #4]
|
||||
str r0, [r2]
|
||||
ldr r0, [r4, #4]
|
||||
str r0, [r2, #4]
|
||||
ldr r6, _080504B8 @ =0x80000030
|
||||
str r6, [r2, #8]
|
||||
ldr r0, [r2, #8]
|
||||
ldr r0, [r3, #8]
|
||||
str r0, [r2]
|
||||
ldr r0, [r4, #8]
|
||||
str r0, [r2, #4]
|
||||
str r6, [r2, #8]
|
||||
ldr r0, [r2, #8]
|
||||
ldr r0, [r5]
|
||||
adds r5, r0, #0
|
||||
adds r5, #0x6a
|
||||
movs r3, #0
|
||||
ldrsh r0, [r5, r3]
|
||||
cmp r0, #0x78
|
||||
ble _08050458
|
||||
mov r0, sp
|
||||
movs r4, #2
|
||||
ldrsh r1, [r0, r4]
|
||||
lsls r0, r1, #1
|
||||
adds r0, r0, r1
|
||||
lsls r0, r0, #2
|
||||
mov r1, ip
|
||||
adds r1, #0x3c
|
||||
adds r3, r0, r1
|
||||
mov r4, ip
|
||||
adds r4, #0x6c
|
||||
ldr r0, [r3]
|
||||
str r0, [r2]
|
||||
mov r1, ip
|
||||
ldr r0, [r1, #0x6c]
|
||||
str r0, [r2, #4]
|
||||
ldr r1, _080504BC @ =0x80000020
|
||||
str r1, [r2, #8]
|
||||
ldr r0, [r2, #8]
|
||||
ldr r0, [r3, #4]
|
||||
str r0, [r2]
|
||||
ldr r0, [r4, #4]
|
||||
str r0, [r2, #4]
|
||||
str r1, [r2, #8]
|
||||
ldr r0, [r2, #8]
|
||||
ldr r0, [r3, #8]
|
||||
str r0, [r2]
|
||||
ldr r0, [r4, #8]
|
||||
str r0, [r2, #4]
|
||||
str r6, [r2, #8]
|
||||
ldr r0, [r2, #8]
|
||||
_08050458:
|
||||
movs r3, #0
|
||||
ldrsh r0, [r5, r3]
|
||||
cmp r0, #0x88
|
||||
ble _0805049C
|
||||
mov r0, sp
|
||||
movs r4, #4
|
||||
ldrsh r1, [r0, r4]
|
||||
lsls r0, r1, #1
|
||||
adds r0, r0, r1
|
||||
lsls r0, r0, #2
|
||||
mov r1, ip
|
||||
adds r1, #0x78
|
||||
adds r3, r0, r1
|
||||
mov r4, ip
|
||||
adds r4, #0xa8
|
||||
ldr r0, [r3]
|
||||
str r0, [r2]
|
||||
ldr r0, [r4]
|
||||
str r0, [r2, #4]
|
||||
ldr r1, _080504BC @ =0x80000020
|
||||
str r1, [r2, #8]
|
||||
ldr r0, [r2, #8]
|
||||
ldr r0, [r3, #4]
|
||||
str r0, [r2]
|
||||
ldr r0, [r4, #4]
|
||||
str r0, [r2, #4]
|
||||
str r6, [r2, #8]
|
||||
ldr r0, [r2, #8]
|
||||
ldr r0, [r3, #8]
|
||||
str r0, [r2]
|
||||
ldr r0, [r4, #8]
|
||||
str r0, [r2, #4]
|
||||
str r1, [r2, #8]
|
||||
ldr r0, [r2, #8]
|
||||
_0805049C:
|
||||
add sp, #8
|
||||
pop {r4, r5, r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080504A4: .4byte 0x00000736
|
||||
_080504A8: .4byte 0x00000737
|
||||
_080504AC: .4byte gUnknown_086B14A8
|
||||
_080504B0: .4byte 0x00000107
|
||||
_080504B4: .4byte 0x040000D4
|
||||
_080504B8: .4byte 0x80000030
|
||||
_080504BC: .4byte 0x80000020
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -633,8 +633,11 @@ struct PinballGame
|
|||
/*0x730*/ u8 unk730;
|
||||
/*0x731*/ s8 unk731;
|
||||
/*0x732*/ u8 filler732[0x2];
|
||||
/*0x734*/ u16 unk734;
|
||||
/*0x736*/ u8 filler736[0x6];
|
||||
/*0x734*/ s16 unk734;
|
||||
/*0x736*/ s8 unk736;
|
||||
/*0x737*/ s8 unk737;
|
||||
/*0x738*/ s8 unk738;
|
||||
/*0x739*/ u8 filler739[0x3];
|
||||
/*0x73C*/ u8 unk73C; // TODO: unknown type
|
||||
/*0x73D*/ s8 catchModeArrows; // Affects which encounter table is used per area
|
||||
/*0x73E*/ u8 filler73E[0x2];
|
||||
|
|
|
|||
|
|
@ -8,8 +8,78 @@ extern const u8 *gUnknown_086B0F9C[][3][2];
|
|||
extern const u8 *gUnknown_086B12AC[][3];
|
||||
extern const u8 *gUnknown_086B125C[][4];
|
||||
extern const u8 *gUnknown_086B12D0[][4];
|
||||
extern const u8 *gUnknown_086B14A8[][5][3];
|
||||
|
||||
|
||||
void sub_5030C(void)
|
||||
{
|
||||
s16 sp0[3];
|
||||
const u8 **src;
|
||||
const u8 **dest;
|
||||
|
||||
if (gCurrentPinballGame->unk13 < 3)
|
||||
{
|
||||
if (gCurrentPinballGame->unk72F == 0)
|
||||
{
|
||||
sp0[0] = gCurrentPinballGame->unk734 * 2;
|
||||
sp0[1] = 0;
|
||||
sp0[2] = 0;
|
||||
}
|
||||
else if (gCurrentPinballGame->unk72F == 1)
|
||||
{
|
||||
sp0[0] = 3;
|
||||
sp0[1] = gCurrentPinballGame->unk734 + 1;
|
||||
sp0[2] = gCurrentPinballGame->unk734 * 2;
|
||||
}
|
||||
else if (gCurrentPinballGame->unk72F == 2)
|
||||
{
|
||||
sp0[0] = 3;
|
||||
sp0[1] = 3;
|
||||
sp0[2] = (s16) gCurrentPinballGame->unk734 + 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
sp0[0] = 3;
|
||||
sp0[1] = 3;
|
||||
sp0[2] = 3;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
sp0[0] = gCurrentPinballGame->unk736;
|
||||
sp0[1] = gCurrentPinballGame->unk737;
|
||||
sp0[2] = gCurrentPinballGame->unk738;
|
||||
}
|
||||
|
||||
src = gUnknown_086B14A8[0][sp0[0]];
|
||||
dest = gUnknown_086B14A8[0][4];
|
||||
if (gCurrentPinballGame->unk6A < 264)
|
||||
{
|
||||
DmaCopy16(3, src[0], dest[0], 0x60);
|
||||
}
|
||||
|
||||
DmaCopy16(3, src[1], dest[1], 0x60);
|
||||
DmaCopy16(3, src[2], dest[2], 0x60);
|
||||
|
||||
if (gCurrentPinballGame->unk6A > 120)
|
||||
{
|
||||
src = gUnknown_086B14A8[1][sp0[1]];
|
||||
dest = gUnknown_086B14A8[1][4];
|
||||
DmaCopy16(3, src[0], dest[0], 0x40);
|
||||
DmaCopy16(3, src[1], dest[1], 0x40);
|
||||
DmaCopy16(3, src[2], dest[2], 0x60);
|
||||
}
|
||||
|
||||
if (gCurrentPinballGame->unk6A > 136)
|
||||
{
|
||||
src = gUnknown_086B14A8[2][sp0[2]];
|
||||
dest = gUnknown_086B14A8[2][4];
|
||||
DmaCopy16(3, src[0], dest[0], 0x40);
|
||||
DmaCopy16(3, src[1], dest[1], 0x60);
|
||||
DmaCopy16(3, src[2], dest[2], 0x40);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_504C0(void)
|
||||
{
|
||||
s16 index;
|
||||
|
|
@ -61,7 +131,7 @@ void sub_505A4(void)
|
|||
gCurrentPinballGame->unk72A = 0;
|
||||
|
||||
if (gCurrentPinballGame->unk72A > 0)
|
||||
index = gCurrentPinballGame->unk1A5 * 2 - (gCurrentPinballGame->unk734 - 1);
|
||||
index = gCurrentPinballGame->unk1A5 * 2 + 1 - gCurrentPinballGame->unk734;
|
||||
else
|
||||
index = gCurrentPinballGame->unk1A5 * 2;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user