mirror of
https://github.com/pret/pokepinballrs.git
synced 2026-03-21 17:24:13 -05:00
* Fixed wrong DmaCopy in sub_93F8 * Decompile sub_19490 * Removed expected_obj * Added sane tile mapping constants instead of magic values. * cleanup --------- Co-authored-by: Marcus Huderle <huderlem@gmail.com>
This commit is contained in:
parent
a99816b8d5
commit
e6ffbd8312
150
asm/rom_11B9C.s
150
asm/rom_11B9C.s
|
|
@ -8654,155 +8654,7 @@ _08018778: .4byte 0x000004B4
|
|||
_0801877C: .4byte 0x000004B6
|
||||
_08018780: .4byte 0x000004A4
|
||||
|
||||
.section .text19490
|
||||
|
||||
thumb_func_start sub_19490
|
||||
sub_19490: @ 0x08019490
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sb
|
||||
mov r6, r8
|
||||
push {r6, r7}
|
||||
ldr r4, _080194DC @ =gMain
|
||||
ldrb r1, [r4, #0xf]
|
||||
movs r0, #1
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _080194A8
|
||||
bl sub_195C4
|
||||
_080194A8:
|
||||
movs r3, #0
|
||||
ldr r0, _080194E0 @ =gCurrentPinballGame
|
||||
mov r8, r0
|
||||
ldr r1, _080194E4 @ =0x00000A28
|
||||
adds r1, r1, r4
|
||||
mov sb, r1
|
||||
ldr r7, _080194E8 @ =0x040000D4
|
||||
ldr r2, _080194EC @ =gOamBuffer
|
||||
mov ip, r2
|
||||
_080194BA:
|
||||
mov r0, r8
|
||||
ldr r2, [r0]
|
||||
lsls r3, r3, #0x10
|
||||
asrs r1, r3, #0x10
|
||||
lsls r0, r1, #1
|
||||
adds r0, r0, r1
|
||||
lsls r0, r0, #2
|
||||
adds r2, r2, r0
|
||||
ldr r1, _080194F0 @ =0x000013BC
|
||||
adds r2, r2, r1
|
||||
movs r0, #0
|
||||
ldrsb r0, [r2, r0]
|
||||
cmp r0, #0xa
|
||||
ble _080194F4
|
||||
movs r0, #0xa
|
||||
b _080194FA
|
||||
.align 2, 0
|
||||
_080194DC: .4byte gMain
|
||||
_080194E0: .4byte gCurrentPinballGame
|
||||
_080194E4: .4byte 0x00000A28
|
||||
_080194E8: .4byte 0x040000D4
|
||||
_080194EC: .4byte gOamBuffer
|
||||
_080194F0: .4byte 0x000013BC
|
||||
_080194F4:
|
||||
cmp r0, #0
|
||||
bge _080194FC
|
||||
movs r0, #0
|
||||
_080194FA:
|
||||
strb r0, [r2]
|
||||
_080194FC:
|
||||
asrs r6, r3, #0x10
|
||||
movs r0, #0xb8
|
||||
muls r0, r6, r0
|
||||
mov r2, sb
|
||||
adds r5, r0, r2
|
||||
ldrh r0, [r5]
|
||||
cmp r0, #0
|
||||
beq _0801958A
|
||||
mov r0, r8
|
||||
ldr r4, [r0]
|
||||
lsls r3, r6, #1
|
||||
adds r0, r3, r6
|
||||
lsls r0, r0, #2
|
||||
adds r0, r4, r0
|
||||
ldr r1, _080195A4 @ =0x000013BC
|
||||
adds r0, r0, r1
|
||||
movs r2, #0
|
||||
ldrsb r2, [r0, r2]
|
||||
lsrs r0, r2, #0x1f
|
||||
adds r2, r2, r0
|
||||
ldr r0, _080195A8 @ =gUnknown_086ACEF4
|
||||
adds r3, r3, r0
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x58
|
||||
ldrh r0, [r3]
|
||||
ldrh r1, [r1]
|
||||
subs r0, r0, r1
|
||||
strh r0, [r5, #2]
|
||||
ldr r0, _080195AC @ =gUnknown_02031520
|
||||
adds r4, #0x5a
|
||||
ldrh r0, [r0, #0x1c]
|
||||
ldrh r1, [r4]
|
||||
subs r0, r0, r1
|
||||
strh r0, [r5, #4]
|
||||
asrs r2, r2, #1
|
||||
lsls r2, r2, #9
|
||||
ldr r0, _080195B0 @ =gUnknown_083FE44C
|
||||
adds r2, r2, r0
|
||||
str r2, [r7]
|
||||
lsls r0, r6, #9
|
||||
ldr r2, _080195B4 @ =0x06010000
|
||||
adds r0, r0, r2
|
||||
str r0, [r7, #4]
|
||||
ldr r0, _080195B8 @ =0x80000100
|
||||
str r0, [r7, #8]
|
||||
ldr r0, [r7, #8]
|
||||
adds r4, r5, #0
|
||||
adds r4, #8
|
||||
ldrh r3, [r5, #8]
|
||||
lsls r3, r3, #3
|
||||
add r3, ip
|
||||
movs r0, #2
|
||||
ldrsh r1, [r4, r0]
|
||||
movs r2, #2
|
||||
ldrsh r0, [r5, r2]
|
||||
adds r1, r1, r0
|
||||
ldr r2, _080195BC @ =0x000001FF
|
||||
adds r0, r2, #0
|
||||
ands r1, r0
|
||||
ldrh r2, [r3, #2]
|
||||
ldr r0, _080195C0 @ =0xFFFFFE00
|
||||
ands r0, r2
|
||||
orrs r0, r1
|
||||
strh r0, [r3, #2]
|
||||
ldrh r1, [r5, #8]
|
||||
lsls r1, r1, #3
|
||||
add r1, ip
|
||||
ldrb r0, [r5, #4]
|
||||
ldrb r4, [r4, #4]
|
||||
adds r0, r0, r4
|
||||
strb r0, [r1]
|
||||
_0801958A:
|
||||
adds r0, r6, #1
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r3, r0, #0x10
|
||||
asrs r0, r0, #0x10
|
||||
cmp r0, #1
|
||||
ble _080194BA
|
||||
pop {r3, r4}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
pop {r4, r5, r6, r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080195A4: .4byte 0x000013BC
|
||||
_080195A8: .4byte gUnknown_086ACEF4
|
||||
_080195AC: .4byte gUnknown_02031520
|
||||
_080195B0: .4byte gUnknown_083FE44C
|
||||
_080195B4: .4byte 0x06010000
|
||||
_080195B8: .4byte 0x80000100
|
||||
_080195BC: .4byte 0x000001FF
|
||||
_080195C0: .4byte 0xFFFFFE00
|
||||
.section .text195C4
|
||||
|
||||
thumb_func_start sub_195C4
|
||||
sub_195C4: @ 0x080195C4
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -417,7 +417,7 @@ extern void sub_19288();//gMain.subState = 3
|
|||
//extern ? sub_19304();
|
||||
//extern ? sub_1931C();
|
||||
//extern ? sub_19490();
|
||||
//extern ? sub_195C4();
|
||||
extern void sub_195C4(void);
|
||||
extern void sub_19734();
|
||||
//extern ? sub_19894();
|
||||
//extern ? sub_19A20();
|
||||
|
|
|
|||
|
|
@ -574,7 +574,9 @@ extern s32 gUnknown_081B36A4[64];
|
|||
extern s32 gUnknown_082EE0E0[0x3E0];
|
||||
extern const u16 gUnknown_08391A4C[0x1000];
|
||||
extern const u16 gUnknown_08393A4C[0x1000];
|
||||
extern u8 gUnknown_083FE44C[][0x200];
|
||||
extern const s16 gUnknown_086ACDF4[9];
|
||||
extern struct Unk086ACE8C gUnknown_086ACE8C[13];
|
||||
extern u16 gUnknown_086ACEF4[2];
|
||||
|
||||
#endif // GUARD_GLOBAL_H
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ SECTIONS
|
|||
src/rom_17634.o(.text);
|
||||
asm/rom_11B9C.o(.text176B0);
|
||||
src/rom_18784.o(.text);
|
||||
asm/rom_11B9C.o(.text19490);
|
||||
asm/rom_11B9C.o(.text195C4);
|
||||
src/rom_19B64.o(.text);
|
||||
src/rom_19D04.o(.text);
|
||||
asm/rom_11B9C.o(.text19E10);
|
||||
|
|
|
|||
|
|
@ -558,4 +558,39 @@ void sub_1931C(struct Vector16 arg0)
|
|||
gCurrentPinballGame->unk13BC[1].unk8 = 1;
|
||||
else
|
||||
gCurrentPinballGame->unk13BC[1].unk8 = -1;
|
||||
}
|
||||
|
||||
void sub_19490(void)
|
||||
{
|
||||
s16 i;
|
||||
|
||||
if ((gMain.unkF & 1) == 0)
|
||||
sub_195C4();
|
||||
|
||||
for (i = 0; i < 2; i++)
|
||||
{
|
||||
struct SpriteGroup *spriteGroup;
|
||||
|
||||
if (gCurrentPinballGame->unk13BC[i].unk0 > 10)
|
||||
gCurrentPinballGame->unk13BC[i].unk0 = 10;
|
||||
else if (gCurrentPinballGame->unk13BC[i].unk0 < 0)
|
||||
gCurrentPinballGame->unk13BC[i].unk0 = 0;
|
||||
|
||||
spriteGroup = &gMain.spriteGroups[10 + i];
|
||||
if (spriteGroup->available)
|
||||
{
|
||||
s8 unk0Signed;
|
||||
struct OamDataSimple *oamData;
|
||||
|
||||
unk0Signed = gCurrentPinballGame->unk13BC[i].unk0 / 2;
|
||||
spriteGroup->baseX = gUnknown_086ACEF4[i] - gCurrentPinballGame->unk58;
|
||||
spriteGroup->baseY = gUnknown_02031520.unk1C - gCurrentPinballGame->unk5A;
|
||||
|
||||
DmaCopy16(3, gUnknown_083FE44C[unk0Signed], OBJ_VRAM0 + i * 0x200, 0x200);
|
||||
|
||||
oamData = &spriteGroup->oam[0];
|
||||
gOamBuffer[oamData->oamId].x = oamData->xOffset + spriteGroup->baseX;
|
||||
gOamBuffer[oamData->oamId].y = oamData->yOffset + spriteGroup->baseY;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user