mirror of
https://github.com/pret/pokepinballrs.git
synced 2026-03-21 17:24:13 -05:00
* Decompile sub_13B28 Co-Authored-By: WhenGryphonsFly <84215159+WhenGryphonsFly@users.noreply.github.com> Co-Authored-By: Marcus Huderle <huderlem@gmail.com> * Update rom_1332C.c --------- Co-authored-by: colecovision <4404252+colecovision@users.noreply.github.com> Co-authored-by: Marcus Huderle <huderlem@gmail.com>
This commit is contained in:
parent
88d9ab43bc
commit
873b7abfec
259
asm/rom_11B9C.s
259
asm/rom_11B9C.s
|
|
@ -4,265 +4,6 @@
|
|||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
.section .text1333C
|
||||
|
||||
thumb_func_start sub_13B28
|
||||
sub_13B28: @ 0x08013B28
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
mov r5, r8
|
||||
push {r5, r6, r7}
|
||||
sub sp, #0x14
|
||||
mov r8, r0
|
||||
str r1, [sp, #8]
|
||||
movs r3, #0
|
||||
ldrsh r1, [r0, r3]
|
||||
lsls r1, r1, #0x17
|
||||
movs r4, #2
|
||||
ldrsh r0, [r0, r4]
|
||||
lsls r0, r0, #0x17
|
||||
lsrs r5, r1, #0x10
|
||||
orrs r5, r0
|
||||
ldr r6, [sp, #8]
|
||||
ldrh r1, [r6, #2]
|
||||
lsls r1, r1, #0x10
|
||||
ldrh r0, [r6]
|
||||
orrs r0, r1
|
||||
str r0, [sp, #4]
|
||||
lsls r2, r2, #0x10
|
||||
mov sb, r2
|
||||
mov r0, sb
|
||||
asrs r0, r0, #0x10
|
||||
mov sl, r0
|
||||
b _08013C4E
|
||||
_08013B60:
|
||||
ldr r2, _08013C04 @ =0xFFFFF500
|
||||
adds r1, r5, r2
|
||||
lsls r1, r1, #0x10
|
||||
asrs r0, r5, #0x10
|
||||
ldr r3, _08013C08 @ =0xFFFFE800
|
||||
adds r0, r0, r3
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r7, r1, #0x10
|
||||
orrs r7, r0
|
||||
lsls r0, r7, #0x10
|
||||
asrs r0, r0, #0x10
|
||||
adds r1, r0, #0
|
||||
muls r1, r0, r1
|
||||
asrs r0, r7, #0x10
|
||||
adds r6, r0, #0
|
||||
muls r6, r0, r6
|
||||
adds r0, r6, #0
|
||||
adds r1, r1, r0
|
||||
ldr r2, _08013C0C @ =0xFFDC0000
|
||||
adds r0, r1, r2
|
||||
lsls r0, r0, #2
|
||||
bl Sqrt
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r0, r0, #0x11
|
||||
mov r3, sb
|
||||
asrs r1, r3, #0x10
|
||||
add r2, sp, #4
|
||||
adds r3, r4, #0
|
||||
bl sub_14B84
|
||||
add r0, sp, #4
|
||||
movs r4, #0
|
||||
ldrsh r2, [r0, r4]
|
||||
movs r1, #0xe1
|
||||
lsls r1, r1, #1
|
||||
cmp r2, r1
|
||||
bgt _08013BB2
|
||||
ldr r1, _08013C10 @ =0xFFFFFE3E
|
||||
cmp r2, r1
|
||||
bge _08013BB4
|
||||
_08013BB2:
|
||||
strh r1, [r0]
|
||||
_08013BB4:
|
||||
ldrh r0, [r0]
|
||||
adds r0, r0, r5
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
ldr r1, _08013C14 @ =0xFFFF0000
|
||||
ands r5, r1
|
||||
orrs r5, r0
|
||||
asrs r2, r5, #0x10
|
||||
add r0, sp, #4
|
||||
ldrh r1, [r0, #2]
|
||||
adds r1, r1, r2
|
||||
lsls r1, r1, #0x10
|
||||
ldr r0, _08013C18 @ =0x0000FFFF
|
||||
ands r5, r0
|
||||
orrs r5, r1
|
||||
lsls r0, r5, #0x10
|
||||
asrs r0, r0, #0x10
|
||||
cmp r0, #0
|
||||
bge _08013BDC
|
||||
adds r0, #0x7f
|
||||
_08013BDC:
|
||||
asrs r1, r0, #7
|
||||
mov r6, r8
|
||||
strh r1, [r6]
|
||||
asrs r0, r5, #0x10
|
||||
cmp r0, #0
|
||||
bge _08013BEA
|
||||
adds r0, #0x7f
|
||||
_08013BEA:
|
||||
asrs r0, r0, #7
|
||||
mov r2, r8
|
||||
strh r0, [r2, #2]
|
||||
movs r3, #0
|
||||
str r3, [sp, #0x10]
|
||||
cmp r1, #0x31
|
||||
bgt _08013BFA
|
||||
b _08013CF0
|
||||
_08013BFA:
|
||||
ldr r0, _08013C1C @ =gCurrentPinballGame
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, #0x1e]
|
||||
b _08013C22
|
||||
.align 2, 0
|
||||
_08013C04: .4byte 0xFFFFF500
|
||||
_08013C08: .4byte 0xFFFFE800
|
||||
_08013C0C: .4byte 0xFFDC0000
|
||||
_08013C10: .4byte 0xFFFFFE3E
|
||||
_08013C14: .4byte 0xFFFF0000
|
||||
_08013C18: .4byte 0x0000FFFF
|
||||
_08013C1C: .4byte gCurrentPinballGame
|
||||
_08013C20:
|
||||
lsrs r0, r4, #0x10
|
||||
_08013C22:
|
||||
lsls r0, r0, #0x10
|
||||
asrs r1, r0, #0x10
|
||||
cmp r1, #3
|
||||
bgt _08013C48
|
||||
mov r4, r8
|
||||
ldr r0, [r4]
|
||||
adds r1, #1
|
||||
lsls r4, r1, #0x10
|
||||
asrs r1, r4, #0x10
|
||||
mov r2, sp
|
||||
mov r6, sb
|
||||
asrs r3, r6, #0x10
|
||||
bl sub_14AF4
|
||||
lsls r0, r0, #0x10
|
||||
cmp r0, #0
|
||||
beq _08013C20
|
||||
movs r0, #1
|
||||
str r0, [sp, #0x10]
|
||||
_08013C48:
|
||||
ldr r1, [sp, #0x10]
|
||||
cmp r1, #0
|
||||
beq _08013CF0
|
||||
_08013C4E:
|
||||
ldr r0, _08013CAC @ =gCurrentPinballGame
|
||||
ldr r1, [r0]
|
||||
mov r2, sl
|
||||
lsls r0, r2, #1
|
||||
add r0, sl
|
||||
lsls r0, r0, #2
|
||||
adds r3, r1, r0
|
||||
ldr r4, _08013CB0 @ =0x000013BC
|
||||
adds r0, r3, r4
|
||||
movs r1, #0
|
||||
ldrsb r1, [r0, r1]
|
||||
ldr r6, _08013CB4 @ =0x000013BD
|
||||
adds r0, r3, r6
|
||||
movs r2, #0
|
||||
ldrsb r2, [r0, r2]
|
||||
adds r4, #8
|
||||
adds r0, r3, r4
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
subs r1, r1, r2
|
||||
muls r0, r1, r0
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r6, r0, #0x10
|
||||
str r6, [sp, #0xc]
|
||||
cmp r0, #0
|
||||
ble _08013CF0
|
||||
ldr r1, _08013CB8 @ =0x000013BE
|
||||
adds r0, r3, r1
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
cmp r0, #6
|
||||
bgt _08013CC4
|
||||
ldr r2, _08013CBC @ =0x000013C1
|
||||
adds r0, r3, r2
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
subs r0, #1
|
||||
lsls r0, r0, #2
|
||||
ldr r3, _08013CC0 @ =gUnknown_086ACD84
|
||||
adds r0, r0, r3
|
||||
movs r4, #0x80
|
||||
lsls r4, r4, #7
|
||||
adds r1, r4, #0
|
||||
b _08013CDC
|
||||
.align 2, 0
|
||||
_08013CAC: .4byte gCurrentPinballGame
|
||||
_08013CB0: .4byte 0x000013BC
|
||||
_08013CB4: .4byte 0x000013BD
|
||||
_08013CB8: .4byte 0x000013BE
|
||||
_08013CBC: .4byte 0x000013C1
|
||||
_08013CC0: .4byte gUnknown_086ACD84
|
||||
_08013CC4:
|
||||
ldr r6, _08013CE8 @ =0x000013C1
|
||||
adds r0, r3, r6
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
adds r0, #1
|
||||
lsls r0, r0, #2
|
||||
ldr r1, _08013CEC @ =gUnknown_086ACD86
|
||||
adds r0, r0, r1
|
||||
movs r2, #0xc0
|
||||
lsls r2, r2, #8
|
||||
adds r1, r2, #0
|
||||
_08013CDC:
|
||||
ldrh r0, [r0]
|
||||
adds r1, r1, r0
|
||||
lsls r1, r1, #0x10
|
||||
lsrs r4, r1, #0x10
|
||||
b _08013B60
|
||||
.align 2, 0
|
||||
_08013CE8: .4byte 0x000013C1
|
||||
_08013CEC: .4byte gUnknown_086ACD86
|
||||
_08013CF0:
|
||||
ldr r3, [sp, #0xc]
|
||||
lsls r0, r3, #0x10
|
||||
cmp r0, #0
|
||||
bgt _08013D08
|
||||
ldr r0, _08013D04 @ =gCurrentPinballGame
|
||||
ldr r0, [r0]
|
||||
adds r0, #0x22
|
||||
movs r1, #5
|
||||
strb r1, [r0]
|
||||
b _08013D14
|
||||
.align 2, 0
|
||||
_08013D04: .4byte gCurrentPinballGame
|
||||
_08013D08:
|
||||
add r0, sp, #4
|
||||
ldrh r1, [r0]
|
||||
ldr r4, [sp, #8]
|
||||
strh r1, [r4]
|
||||
ldrh r0, [r0, #2]
|
||||
strh r0, [r4, #2]
|
||||
_08013D14:
|
||||
add sp, #0x14
|
||||
pop {r3, r4, r5}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
mov sl, r5
|
||||
pop {r4, r5, r6, r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
|
||||
|
||||
.section .text14488
|
||||
|
||||
thumb_func_start sub_14488
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -102,9 +102,12 @@ struct BallState
|
|||
struct UnkPinballGame13BC
|
||||
{
|
||||
/*0x00*/ s8 unk0;
|
||||
/*0x01*/ u8 filler1[0x3];
|
||||
/*0x01*/ s8 unk1;
|
||||
/*0x02*/ s8 unk2;
|
||||
/*0x03*/ s8 filler3[0x1];
|
||||
/*0x04*/ s8 unk4;
|
||||
/*0x05*/ u8 filler5[0x3];
|
||||
/*0x05*/ s8 unk5;
|
||||
/*0x05*/ u8 filler6[0x2];
|
||||
/*0x08*/ s8 unk8;
|
||||
/*0x09*/ u8 filler9[0x3];
|
||||
};
|
||||
|
|
|
|||
|
|
@ -45,7 +45,6 @@ SECTIONS
|
|||
src/titlescreen.o(.text);
|
||||
src/rom_11B9C.o(.text);
|
||||
src/rom_1332C.o(.text);
|
||||
asm/rom_11B9C.o(.text1333C);
|
||||
src/rom_13D24.o(.text);
|
||||
asm/rom_11B9C.o(.text14488);
|
||||
src/rom_17634.o(.text);
|
||||
|
|
|
|||
|
|
@ -1,11 +1,14 @@
|
|||
#include "global.h"
|
||||
|
||||
extern u16 gUnknown_086ACD84[][2];
|
||||
|
||||
u16 sub_13824(struct Vector16*);
|
||||
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()
|
||||
{
|
||||
|
|
@ -249,3 +252,79 @@ void sub_13934(struct Vector16 *arg0, struct Vector16 *arg1, u16 angle)
|
|||
gCurrentPinballGame->unk123 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_13B28(struct Vector16* arg0, struct Vector16* arg1, s16 arg2)
|
||||
{
|
||||
struct Vector16 r7;
|
||||
u16 r4;
|
||||
s16 sp0;
|
||||
s16 sp12;
|
||||
bool32 flag;
|
||||
s16 i;
|
||||
int temp;
|
||||
int xx, yy;
|
||||
struct Vector16 r5 = { arg0->x * 128, arg0->y * 128 };
|
||||
struct Vector16 sp4 = { arg1->x, arg1->y };
|
||||
|
||||
for (;;)
|
||||
{
|
||||
sp12 = gCurrentPinballGame->unk13BC[arg2].unk0 - gCurrentPinballGame->unk13BC[arg2].unk1;
|
||||
|
||||
if ((sp12 *= gCurrentPinballGame->unk13BC[arg2].unk8) > 0)
|
||||
{
|
||||
if (gCurrentPinballGame->unk13BC[arg2].unk2 < 7)
|
||||
r4 = gUnknown_086ACD84[gCurrentPinballGame->unk13BC[arg2].unk5 - 1][0] + 0x4000;
|
||||
else
|
||||
r4 = gUnknown_086ACD84[gCurrentPinballGame->unk13BC[arg2].unk5 + 1][1] + -0x4000; // This changes compilation, apparently
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
r7.x = r5.x - 22 * 128;
|
||||
r7.y = r5.y - 48 * 128;
|
||||
|
||||
xx = r7.x * r7.x;
|
||||
yy = r7.y * r7.y;
|
||||
temp = xx + yy - 0x240000;
|
||||
temp = Sqrt(temp * 4) / 2;
|
||||
sub_14B84(temp, arg2, &sp4, r4);
|
||||
|
||||
if (sp4.x > 0x1C2)
|
||||
sp4.x = 0x1C2;
|
||||
else if (sp4.x < -0x1C2)
|
||||
sp4.x = -0x1C2;
|
||||
|
||||
r5.x += sp4.x;
|
||||
r5.y += sp4.y;
|
||||
arg0->x = r5.x / 128;
|
||||
arg0->y = r5.y / 128;
|
||||
flag = FALSE;
|
||||
|
||||
if (arg0->x < 50)
|
||||
break;
|
||||
|
||||
for (i = gCurrentPinballGame->unk1E; i < 4; i++)
|
||||
{
|
||||
if (sub_14AF4(*arg0, i + 1, &sp0, arg2))
|
||||
{
|
||||
flag = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!flag)
|
||||
break;
|
||||
}
|
||||
|
||||
if (sp12 <= 0)
|
||||
{
|
||||
gCurrentPinballGame->unk22 = 5;
|
||||
}
|
||||
else
|
||||
{
|
||||
arg1->x = sp4.x;
|
||||
arg1->y = sp4.y;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user