mirror of
https://github.com/pret/pokepinballrs.git
synced 2026-03-21 17:24:13 -05:00
* decomp sub_14488 * decomp sub_14AF4 * small cleanup --------- Co-authored-by: Marcus Huderle <huderlem@gmail.com>
This commit is contained in:
parent
2d144060c8
commit
ffcc92878d
350
asm/rom_11B9C.s
350
asm/rom_11B9C.s
|
|
@ -6,356 +6,6 @@
|
|||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_14488
|
||||
sub_14488: @ 0x08014488
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
mov r5, r8
|
||||
push {r5, r6, r7}
|
||||
sub sp, #0x10
|
||||
adds r7, r0, #0
|
||||
adds r4, r1, #0
|
||||
ldr r1, _08014510 @ =0xFFFF0000
|
||||
mov r0, r8
|
||||
ands r0, r1
|
||||
mov r8, r0
|
||||
movs r0, #1
|
||||
mov r2, r8
|
||||
orrs r2, r0
|
||||
mov r8, r2
|
||||
ldr r2, _08014514 @ =0x0000FFFF
|
||||
mov r3, r8
|
||||
ands r3, r2
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #9
|
||||
orrs r3, r0
|
||||
mov r8, r3
|
||||
lsls r0, r4, #0x10
|
||||
cmp r0, #0
|
||||
bge _080144CA
|
||||
orrs r3, r2
|
||||
mov r8, r3
|
||||
rsbs r0, r4, #0
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
ands r4, r1
|
||||
orrs r4, r0
|
||||
_080144CA:
|
||||
asrs r0, r4, #0x10
|
||||
cmp r0, #0
|
||||
bge _080144DE
|
||||
mov r3, r8
|
||||
orrs r3, r1
|
||||
mov r8, r3
|
||||
rsbs r0, r0, #0
|
||||
lsls r0, r0, #0x10
|
||||
ands r4, r2
|
||||
orrs r4, r0
|
||||
_080144DE:
|
||||
lsls r0, r4, #0x10
|
||||
asrs r0, r0, #0x10
|
||||
asrs r1, r4, #0x10
|
||||
movs r2, #1
|
||||
str r2, [sp, #8]
|
||||
cmp r0, r1
|
||||
ble _080144F0
|
||||
movs r3, #0
|
||||
str r3, [sp, #8]
|
||||
_080144F0:
|
||||
ldr r2, _08014518 @ =gCurrentPinballGame
|
||||
ldr r0, [r2]
|
||||
adds r0, #0x22
|
||||
movs r1, #0
|
||||
strb r1, [r0]
|
||||
ldr r0, [r2]
|
||||
adds r0, #0x23
|
||||
strb r1, [r0]
|
||||
ldr r1, _0801451C @ =gUnknown_086ACE0C
|
||||
ldr r0, _08014520 @ =gMain
|
||||
ldrb r0, [r0, #4]
|
||||
lsls r0, r0, #2
|
||||
adds r0, r0, r1
|
||||
ldr r0, [r0]
|
||||
str r0, [sp, #0xc]
|
||||
b _080145CC
|
||||
.align 2, 0
|
||||
_08014510: .4byte 0xFFFF0000
|
||||
_08014514: .4byte 0x0000FFFF
|
||||
_08014518: .4byte gCurrentPinballGame
|
||||
_0801451C: .4byte gUnknown_086ACE0C
|
||||
_08014520: .4byte gMain
|
||||
_08014524:
|
||||
ldrh r0, [r5]
|
||||
strh r0, [r7]
|
||||
ldrh r0, [r5, #2]
|
||||
strh r0, [r7, #2]
|
||||
mov r1, sp
|
||||
mov r2, sb
|
||||
ldrh r0, [r2]
|
||||
strh r0, [r1]
|
||||
b _0801456E
|
||||
_08014536:
|
||||
ldr r5, _080145A0 @ =gCurrentPinballGame
|
||||
ldr r0, [r5]
|
||||
adds r0, #0x22
|
||||
strb r1, [r0]
|
||||
adds r0, r7, #0
|
||||
mov r1, sp
|
||||
bl sub_1467C
|
||||
lsls r0, r0, #0x10
|
||||
cmp r0, #0
|
||||
beq _0801454E
|
||||
b _08014668
|
||||
_0801454E:
|
||||
ldr r0, [r5]
|
||||
ldr r3, _080145A4 @ =0x000005F2
|
||||
adds r0, r0, r3
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
beq _0801456E
|
||||
adds r0, r7, #0
|
||||
mov r1, sp
|
||||
bl sub_14740
|
||||
lsls r0, r0, #0x10
|
||||
cmp r0, #0
|
||||
beq _0801456E
|
||||
b _08014668
|
||||
_0801456E:
|
||||
lsls r0, r4, #0x10
|
||||
cmp r0, #0
|
||||
bgt _0801457A
|
||||
asrs r0, r4, #0x10
|
||||
cmp r0, #0
|
||||
ble _08014668
|
||||
_0801457A:
|
||||
ldr r0, [sp, #8]
|
||||
cmp r0, #0
|
||||
bne _080145AC
|
||||
ldrh r0, [r7]
|
||||
add r0, r8
|
||||
strh r0, [r7]
|
||||
subs r1, r4, #1
|
||||
lsls r1, r1, #0x10
|
||||
lsrs r1, r1, #0x10
|
||||
ldr r0, _080145A8 @ =0xFFFF0000
|
||||
ands r4, r0
|
||||
orrs r4, r1
|
||||
asrs r0, r4, #0x10
|
||||
cmp r0, #0
|
||||
ble _080145CC
|
||||
movs r1, #1
|
||||
str r1, [sp, #8]
|
||||
b _080145CC
|
||||
.align 2, 0
|
||||
_080145A0: .4byte gCurrentPinballGame
|
||||
_080145A4: .4byte 0x000005F2
|
||||
_080145A8: .4byte 0xFFFF0000
|
||||
_080145AC:
|
||||
mov r2, r8
|
||||
asrs r0, r2, #0x10
|
||||
ldrh r3, [r7, #2]
|
||||
adds r0, r0, r3
|
||||
strh r0, [r7, #2]
|
||||
asrs r1, r4, #0x10
|
||||
subs r1, #1
|
||||
lsls r1, r1, #0x10
|
||||
ldr r0, _08014658 @ =0x0000FFFF
|
||||
ands r4, r0
|
||||
orrs r4, r1
|
||||
lsls r0, r4, #0x10
|
||||
cmp r0, #0
|
||||
ble _080145CC
|
||||
movs r0, #0
|
||||
str r0, [sp, #8]
|
||||
_080145CC:
|
||||
adds r0, r7, #0
|
||||
mov r1, sp
|
||||
ldr r2, [sp, #0xc]
|
||||
bl _call_via_r2
|
||||
lsls r0, r0, #0x10
|
||||
asrs r1, r0, #0x10
|
||||
cmp r1, #0
|
||||
beq _08014536
|
||||
ldr r0, _0801465C @ =gCurrentPinballGame
|
||||
ldr r1, [r0]
|
||||
adds r0, r1, #0
|
||||
adds r0, #0x22
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
cmp r0, #1
|
||||
bne _08014668
|
||||
adds r0, r1, #0
|
||||
adds r0, #0x23
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #3
|
||||
bne _0801456E
|
||||
movs r6, #0
|
||||
add r5, sp, #4
|
||||
movs r3, #2
|
||||
add r3, sp
|
||||
mov sb, r3
|
||||
ldr r0, _08014658 @ =0x0000FFFF
|
||||
mov sl, r0
|
||||
_08014608:
|
||||
ldr r0, _08014660 @ =gUnknown_086ACE60
|
||||
lsls r3, r6, #2
|
||||
adds r3, r3, r0
|
||||
ldrh r1, [r3]
|
||||
ldrh r2, [r7]
|
||||
adds r1, r1, r2
|
||||
lsls r1, r1, #0x10
|
||||
lsrs r1, r1, #0x10
|
||||
ldr r2, _08014664 @ =0xFFFF0000
|
||||
ldr r0, [sp, #4]
|
||||
ands r0, r2
|
||||
orrs r0, r1
|
||||
str r0, [sp, #4]
|
||||
ldrh r1, [r3, #2]
|
||||
ldrh r3, [r7, #2]
|
||||
adds r1, r1, r3
|
||||
lsls r1, r1, #0x10
|
||||
mov r2, sl
|
||||
ands r0, r2
|
||||
orrs r0, r1
|
||||
str r0, [sp, #4]
|
||||
adds r0, r5, #0
|
||||
mov r1, sb
|
||||
ldr r3, [sp, #0xc]
|
||||
bl _call_via_r3
|
||||
ldr r0, _0801465C @ =gCurrentPinballGame
|
||||
ldr r0, [r0]
|
||||
ldrh r1, [r0, #0x22]
|
||||
mov r0, sl
|
||||
ands r0, r1
|
||||
cmp r0, #1
|
||||
bne _0801464C
|
||||
b _08014524
|
||||
_0801464C:
|
||||
adds r0, r6, #1
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r6, r0, #0x10
|
||||
cmp r6, #3
|
||||
bls _08014608
|
||||
b _0801456E
|
||||
.align 2, 0
|
||||
_08014658: .4byte 0x0000FFFF
|
||||
_0801465C: .4byte gCurrentPinballGame
|
||||
_08014660: .4byte gUnknown_086ACE60
|
||||
_08014664: .4byte 0xFFFF0000
|
||||
_08014668:
|
||||
mov r0, sp
|
||||
ldrh r0, [r0]
|
||||
add sp, #0x10
|
||||
pop {r3, r4, r5}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
mov sl, r5
|
||||
pop {r4, r5, r6, r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
|
||||
thumb_func_start sub_1467C
|
||||
sub_1467C: @ 0x0801467C
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sb
|
||||
mov r6, r8
|
||||
push {r6, r7}
|
||||
mov r8, r1
|
||||
movs r7, #0
|
||||
ldr r4, _08014734 @ =gUnknown_02031520
|
||||
movs r1, #0x22
|
||||
ldrsh r2, [r4, r1]
|
||||
lsls r2, r2, #1
|
||||
ldrh r3, [r0]
|
||||
subs r2, r3, r2
|
||||
lsls r2, r2, #0x10
|
||||
mov ip, r2
|
||||
movs r2, #0x24
|
||||
ldrsh r1, [r4, r2]
|
||||
lsls r1, r1, #1
|
||||
subs r3, r3, r1
|
||||
lsls r3, r3, #0x10
|
||||
movs r2, #0x20
|
||||
ldrsh r1, [r4, r2]
|
||||
lsls r1, r1, #1
|
||||
ldrh r0, [r0, #2]
|
||||
subs r0, r0, r1
|
||||
lsls r0, r0, #0x10
|
||||
mov r1, ip
|
||||
lsrs r6, r1, #0x10
|
||||
orrs r6, r0
|
||||
lsrs r1, r0, #0x10
|
||||
lsrs r5, r3, #0x10
|
||||
orrs r5, r0
|
||||
cmp r1, #0x5f
|
||||
bhi _08014724
|
||||
lsls r0, r6, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
cmp r0, #0x5f
|
||||
bhi _080146E8
|
||||
ldr r4, _08014738 @ =gCurrentPinballGame
|
||||
ldr r0, [r4]
|
||||
ldrb r1, [r0, #0x1e]
|
||||
adds r1, #1
|
||||
adds r0, r6, #0
|
||||
mov r2, r8
|
||||
movs r3, #0
|
||||
bl sub_14AF4
|
||||
lsls r0, r0, #0x10
|
||||
cmp r0, #0
|
||||
beq _080146E8
|
||||
ldr r0, [r4]
|
||||
adds r0, #0x22
|
||||
movs r1, #3
|
||||
strb r1, [r0]
|
||||
movs r7, #1
|
||||
_080146E8:
|
||||
cmp r7, #0
|
||||
bne _08014724
|
||||
lsls r0, r5, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
cmp r0, #0x5f
|
||||
bhi _08014724
|
||||
movs r0, #0x5f
|
||||
subs r0, r0, r5
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
ldr r1, _0801473C @ =0xFFFF0000
|
||||
ands r5, r1
|
||||
orrs r5, r0
|
||||
ldr r4, _08014738 @ =gCurrentPinballGame
|
||||
ldr r0, [r4]
|
||||
ldrb r1, [r0, #0x1e]
|
||||
adds r1, #1
|
||||
adds r0, r5, #0
|
||||
mov r2, r8
|
||||
movs r3, #1
|
||||
bl sub_14AF4
|
||||
lsls r0, r0, #0x10
|
||||
cmp r0, #0
|
||||
beq _08014724
|
||||
ldr r0, [r4]
|
||||
adds r0, #0x22
|
||||
movs r1, #4
|
||||
strb r1, [r0]
|
||||
movs r7, #1
|
||||
_08014724:
|
||||
adds r0, r7, #0
|
||||
pop {r3, r4}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
pop {r4, r5, r6, r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_08014734: .4byte gUnknown_02031520
|
||||
_08014738: .4byte gCurrentPinballGame
|
||||
_0801473C: .4byte 0xFFFF0000
|
||||
|
||||
thumb_func_start sub_14740
|
||||
sub_14740: @ 0x08014740
|
||||
push {r4, r5, r6, r7, lr}
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
|
|
@ -380,10 +380,10 @@ extern void sub_13B28(struct Vector16*, struct Vector16*, s16);
|
|||
extern void sub_13D24(u16, struct Vector16*, struct Vector16*);
|
||||
extern void sub_14074(u16, struct Vector32*, u16);
|
||||
extern u16 sub_14488(struct Vector16*, struct Vector16);
|
||||
//extern ? sub_1467C();
|
||||
//extern ? sub_14740();
|
||||
extern u16 sub_1467C(struct Vector16*, u16*);
|
||||
extern u16 sub_14740(struct Vector16*, u16*);
|
||||
extern void sub_1493C(void);
|
||||
//extern ? sub_14AF4();
|
||||
extern u16 sub_14AF4(struct Vector16 r0, s16 r1, s16 *r2 /* s16 or u16 */, s16 r3);
|
||||
//extern ? sub_14B84();
|
||||
//extern ? sub_14E08();
|
||||
//extern ? sub_15054();
|
||||
|
|
|
|||
|
|
@ -442,7 +442,7 @@ struct PinballGame
|
|||
/*0x5B2*/ u8 unk5B2;
|
||||
/*0x5B3*/ u8 filler5B3[0x3D];
|
||||
/*0x5F0*/ u16 caughtMonCount; // Number of mons caught in this game
|
||||
/*0x5F2*/ u8 filler5F2[0x1];
|
||||
/*0x5F2*/ s8 unk5F2;
|
||||
/*0x5F3*/ s8 unk5F3;
|
||||
/*0x5F4*/ u8 filler5F4[0x2];
|
||||
/*0x5F6*/ s8 unk5F6;
|
||||
|
|
@ -655,5 +655,9 @@ extern u16 gUnknown_084EDACC[];
|
|||
extern u16 gUnknown_08494E4C[];
|
||||
extern u8 gUnknown_084FF30C[];
|
||||
|
||||
typedef s16 (*Unk86ACE0C)(struct Vector16*, u16*);
|
||||
extern Unk86ACE0C gUnknown_086ACE0C[8];
|
||||
extern struct Vector16 gUnknown_086ACE60[4];
|
||||
|
||||
|
||||
#endif // GUARD_GLOBAL_H
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ void sub_13D24(u16,struct Vector16*, struct Vector16*);
|
|||
void sub_13934(struct Vector16 *arg0, struct Vector16 *arg1, u16 angle);
|
||||
void sub_1493C(void);
|
||||
u16 sub_14488(struct Vector16*, struct Vector16);
|
||||
u16 sub_14AF4(struct Vector16 r0, s16 r1, s16 *r2 /* s16 or u16 */, s16 r3);
|
||||
|
||||
void sub_14B84(u32 r0, s16 r1, struct Vector16 *r2, u16 r3);
|
||||
|
||||
void sub_1332C()
|
||||
|
|
|
|||
153
src/rom_13D24.c
153
src/rom_13D24.c
|
|
@ -269,4 +269,155 @@ void sub_14074(u16 arg0, struct Vector32 *arg1, u16 arg2)
|
|||
arg1->x = vMagSquared * Cos(angle) / VECTORSCALEDOWN;
|
||||
arg1->y = -vMagSquared * Sin(angle) / VECTORSCALEDOWN;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: Hopefully we can match this properly without "goto" usage in the future...
|
||||
u16 sub_14488(struct Vector16* arg0, struct Vector16 arg1) {
|
||||
struct Vector16 r8;
|
||||
|
||||
u32 toggleShiftMode;
|
||||
s16 (*spC)(struct Vector16*, u16*);
|
||||
u16 sp0_return;
|
||||
|
||||
r8.x =1;
|
||||
r8.y =1;
|
||||
|
||||
if (arg1.x < 0)
|
||||
{
|
||||
r8.x = -1;
|
||||
arg1.x = -arg1.x;
|
||||
}
|
||||
|
||||
if (arg1.y < 0)
|
||||
{
|
||||
r8.y = -1;
|
||||
arg1.y = -arg1.y ;
|
||||
}
|
||||
|
||||
if (arg1.x > arg1.y)
|
||||
toggleShiftMode = 0;
|
||||
else
|
||||
toggleShiftMode = 1;
|
||||
|
||||
|
||||
gCurrentPinballGame->unk22 = 0;
|
||||
gCurrentPinballGame->unk23 = 0;
|
||||
|
||||
spC = gUnknown_086ACE0C[gMain.selectedField];
|
||||
|
||||
do{
|
||||
goto Lab_144;
|
||||
|
||||
Lab_AE:
|
||||
{
|
||||
gCurrentPinballGame->unk22 = 0;
|
||||
|
||||
if (sub_1467C(arg0, &sp0_return) != 0 ||
|
||||
(gCurrentPinballGame->unk5F2 != 0 && sub_14740(arg0, &sp0_return) != 0))
|
||||
goto Lab_1E0;
|
||||
|
||||
goto Lab_E6;
|
||||
}
|
||||
Lab_E6:
|
||||
{
|
||||
if (!(arg1.x > 0 || arg1.y > 0))
|
||||
goto Lab_1E0;
|
||||
|
||||
if (toggleShiftMode == 0)
|
||||
{
|
||||
arg0->x = r8.x + arg0->x;
|
||||
arg1.x--;
|
||||
if (arg1.y >0)
|
||||
toggleShiftMode = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
arg0->y = arg0->y + r8.y;
|
||||
arg1.y--;
|
||||
if (arg1.x > 0)
|
||||
toggleShiftMode = 0;
|
||||
}
|
||||
}
|
||||
Lab_144:
|
||||
{
|
||||
if(spC(arg0, &sp0_return) == 0)
|
||||
{
|
||||
goto Lab_AE;
|
||||
}
|
||||
else if (gCurrentPinballGame->unk22 == 1)
|
||||
{
|
||||
if (gCurrentPinballGame->unk23 == 3)
|
||||
{
|
||||
u16 j;
|
||||
u16 sp2_testRes;
|
||||
struct Vector16 sp4_testPos;
|
||||
|
||||
for(j=0; j < 4; j++)
|
||||
{
|
||||
sp4_testPos.x = arg0->x + gUnknown_086ACE60[j].x;
|
||||
sp4_testPos.y = arg0->y + gUnknown_086ACE60[j].y;
|
||||
|
||||
spC(&sp4_testPos, &sp2_testRes);
|
||||
if (gCurrentPinballGame->unk22 == 1 && gCurrentPinballGame->unk23 == 0)
|
||||
{
|
||||
Lab_9C:
|
||||
arg0->x = sp4_testPos.x;
|
||||
arg0->y = sp4_testPos.y;
|
||||
sp0_return = sp2_testRes;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
goto Lab_E6;
|
||||
}
|
||||
else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
} while(1);
|
||||
|
||||
Lab_1E0:
|
||||
return sp0_return;
|
||||
}
|
||||
|
||||
u16 sub_1467C(struct Vector16* arg0, u16* arg1)
|
||||
{
|
||||
u16 res;
|
||||
struct Vector16 vec1;
|
||||
struct Vector16 vec2;
|
||||
|
||||
res = 0;
|
||||
|
||||
vec1.x = arg0->x - gUnknown_02031520.unk14.unk22 * 2;
|
||||
vec2.x = arg0->x - gUnknown_02031520.unk14.unk24 * 2;
|
||||
vec1.y = arg0->y - gUnknown_02031520.unk14.unk20 * 2;
|
||||
vec2.y = vec1.y;
|
||||
|
||||
if (vec1.y <= 95 && vec1.y >= 0)
|
||||
{
|
||||
if (vec1.x <= 95 && vec1.x >= 0)
|
||||
{
|
||||
if(sub_14AF4(vec1, gCurrentPinballGame->unk1E + 1, arg1, 0))
|
||||
{
|
||||
gCurrentPinballGame->unk22 = 3;
|
||||
res = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (res == 0)
|
||||
{
|
||||
if (vec2.x <= 95 && vec2.x >= 0)
|
||||
{
|
||||
vec2.x = 95 - vec2.x;
|
||||
if (sub_14AF4(vec2, gCurrentPinballGame->unk1E + 1, arg1, 1))
|
||||
{
|
||||
gCurrentPinballGame->unk22 = 4;
|
||||
res = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user