mirror of
https://github.com/pret/pokepinballrs.git
synced 2026-03-21 17:24:13 -05:00
sub_2F504
This commit is contained in:
parent
27d9834e20
commit
b39d533616
320
asm/rom_2E6AC.s
320
asm/rom_2E6AC.s
|
|
@ -6,326 +6,6 @@
|
|||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_2F504
|
||||
sub_2F504: @ 0x0802F504
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
mov r5, r8
|
||||
push {r5, r6, r7}
|
||||
ldr r6, _0802F700 @ =gMain+0x15A8 @gMain.spriteGroups[26]
|
||||
ldrh r0, [r6]
|
||||
movs r1, #0xb8
|
||||
adds r1, r1, r6
|
||||
mov sl, r1
|
||||
cmp r0, #0
|
||||
beq _0802F5EC
|
||||
ldr r3, _0802F704 @ =gCurrentPinballGame
|
||||
ldr r0, [r3]
|
||||
adds r0, #0x58
|
||||
ldrh r1, [r0]
|
||||
movs r0, #0xc6
|
||||
subs r0, r0, r1
|
||||
strh r0, [r6, #2]
|
||||
ldr r1, [r3]
|
||||
movs r4, #0xe0
|
||||
lsls r4, r4, #2
|
||||
adds r2, r1, r4
|
||||
movs r7, #0x8e
|
||||
lsls r7, r7, #1
|
||||
adds r0, r7, #0
|
||||
ldrh r2, [r2]
|
||||
adds r0, r0, r2
|
||||
adds r1, #0x5a
|
||||
ldrh r1, [r1]
|
||||
subs r0, r0, r1
|
||||
strh r0, [r6, #4]
|
||||
ldr r3, [r3]
|
||||
ldr r1, _0802F708 @ =0x00000379
|
||||
adds r0, r3, r1
|
||||
ldr r2, _0802F70C @ =0x040000D4
|
||||
movs r1, #0
|
||||
ldrsb r1, [r0, r1]
|
||||
lsls r0, r1, #3
|
||||
subs r0, r0, r1
|
||||
lsls r0, r0, #7
|
||||
ldr r1, _0802F710 @ =gUnknown_08512C4C
|
||||
adds r0, r0, r1
|
||||
str r0, [r2]
|
||||
ldr r0, _0802F714 @ =0x06012A20
|
||||
str r0, [r2, #4]
|
||||
ldr r0, _0802F718 @ =0x800001C0
|
||||
str r0, [r2, #8]
|
||||
ldr r0, [r2, #8]
|
||||
ldr r2, _0802F71C @ =0x0000037A
|
||||
adds r3, r3, r2
|
||||
movs r2, #0
|
||||
ldr r4, _0802F720 @ =gUnknown_086B3CA4
|
||||
mov sb, r4
|
||||
movs r1, #0
|
||||
ldrsb r1, [r3, r1]
|
||||
lsls r0, r1, #3
|
||||
adds r0, r0, r1
|
||||
lsls r0, r0, #1
|
||||
mov ip, r0
|
||||
ldr r7, _0802F724 @ =0xFFFFFE00
|
||||
mov r8, r7
|
||||
_0802F580:
|
||||
lsls r3, r2, #0x10
|
||||
asrs r3, r3, #0x10
|
||||
lsls r0, r3, #3
|
||||
adds r0, #8
|
||||
adds r5, r6, r0
|
||||
ldrh r0, [r5]
|
||||
lsls r0, r0, #3
|
||||
ldr r1, _0802F728 @ =gOamBuffer
|
||||
adds r2, r0, r1
|
||||
lsls r0, r3, #1
|
||||
adds r0, r0, r3
|
||||
lsls r0, r0, #1
|
||||
add r0, sb
|
||||
mov r4, ip
|
||||
adds r1, r4, r0
|
||||
ldrh r0, [r1]
|
||||
strh r0, [r2]
|
||||
adds r1, #2
|
||||
adds r2, #2
|
||||
ldrh r0, [r1]
|
||||
strh r0, [r2]
|
||||
ldrh r0, [r1, #2]
|
||||
strh r0, [r2, #2]
|
||||
ldrh r2, [r5]
|
||||
lsls r2, r2, #3
|
||||
ldr r7, _0802F728 @ =gOamBuffer
|
||||
adds r2, r2, r7
|
||||
ldrh r4, [r2, #2]
|
||||
lsls r1, r4, #0x17
|
||||
lsrs r1, r1, #0x17
|
||||
movs r7, #2
|
||||
ldrsh r0, [r6, r7]
|
||||
adds r1, r1, r0
|
||||
ldr r7, _0802F72C @ =0x000001FF
|
||||
adds r0, r7, #0
|
||||
ands r1, r0
|
||||
mov r0, r8
|
||||
ands r0, r4
|
||||
orrs r0, r1
|
||||
strh r0, [r2, #2]
|
||||
ldrh r1, [r5]
|
||||
lsls r1, r1, #3
|
||||
ldr r0, _0802F728 @ =gOamBuffer
|
||||
adds r1, r1, r0
|
||||
ldrb r0, [r6, #4]
|
||||
ldrb r2, [r1]
|
||||
adds r0, r0, r2
|
||||
strb r0, [r1]
|
||||
adds r3, #1
|
||||
lsls r3, r3, #0x10
|
||||
lsrs r2, r3, #0x10
|
||||
asrs r3, r3, #0x10
|
||||
cmp r3, #2
|
||||
ble _0802F580
|
||||
_0802F5EC:
|
||||
mov r6, sl
|
||||
ldrh r0, [r6]
|
||||
cmp r0, #0
|
||||
beq _0802F69A
|
||||
ldr r2, _0802F704 @ =gCurrentPinballGame
|
||||
ldr r0, [r2]
|
||||
adds r0, #0x58
|
||||
ldrh r1, [r0]
|
||||
movs r0, #0xc6
|
||||
subs r0, r0, r1
|
||||
strh r0, [r6, #2]
|
||||
ldr r0, [r2]
|
||||
adds r0, #0x5a
|
||||
ldrh r1, [r0]
|
||||
movs r3, #0x8e
|
||||
lsls r3, r3, #1
|
||||
adds r0, r3, #0
|
||||
subs r0, r0, r1
|
||||
strh r0, [r6, #4]
|
||||
ldr r0, [r2]
|
||||
ldr r4, _0802F730 @ =0x0000037B
|
||||
adds r0, r0, r4
|
||||
movs r2, #0
|
||||
ldr r7, _0802F734 @ =gUnknown_086B3B7E
|
||||
mov sb, r7
|
||||
ldr r1, _0802F728 @ =gOamBuffer
|
||||
mov sl, r1
|
||||
movs r1, #0
|
||||
ldrsb r1, [r0, r1]
|
||||
movs r0, #0x2a
|
||||
adds r3, r1, #0
|
||||
muls r3, r0, r3
|
||||
mov ip, r3
|
||||
ldr r4, _0802F724 @ =0xFFFFFE00
|
||||
mov r8, r4
|
||||
_0802F632:
|
||||
lsls r3, r2, #0x10
|
||||
asrs r3, r3, #0x10
|
||||
lsls r0, r3, #3
|
||||
adds r0, #8
|
||||
adds r5, r6, r0
|
||||
ldrh r0, [r5]
|
||||
lsls r0, r0, #3
|
||||
mov r7, sl
|
||||
adds r2, r0, r7
|
||||
lsls r0, r3, #1
|
||||
adds r0, r0, r3
|
||||
lsls r0, r0, #1
|
||||
add r0, sb
|
||||
mov r4, ip
|
||||
adds r1, r4, r0
|
||||
ldrh r0, [r1]
|
||||
strh r0, [r2]
|
||||
adds r1, #2
|
||||
adds r2, #2
|
||||
ldrh r0, [r1]
|
||||
strh r0, [r2]
|
||||
ldrh r0, [r1, #2]
|
||||
strh r0, [r2, #2]
|
||||
ldrh r2, [r5]
|
||||
lsls r2, r2, #3
|
||||
add r2, sl
|
||||
ldrh r4, [r2, #2]
|
||||
lsls r1, r4, #0x17
|
||||
lsrs r1, r1, #0x17
|
||||
movs r7, #2
|
||||
ldrsh r0, [r6, r7]
|
||||
adds r1, r1, r0
|
||||
ldr r7, _0802F72C @ =0x000001FF
|
||||
adds r0, r7, #0
|
||||
ands r1, r0
|
||||
mov r0, r8
|
||||
ands r0, r4
|
||||
orrs r0, r1
|
||||
strh r0, [r2, #2]
|
||||
ldrh r1, [r5]
|
||||
lsls r1, r1, #3
|
||||
add r1, sl
|
||||
ldrb r0, [r6, #4]
|
||||
ldrb r2, [r1]
|
||||
adds r0, r0, r2
|
||||
strb r0, [r1]
|
||||
adds r3, #1
|
||||
lsls r3, r3, #0x10
|
||||
lsrs r2, r3, #0x10
|
||||
asrs r3, r3, #0x10
|
||||
cmp r3, #6
|
||||
ble _0802F632
|
||||
_0802F69A:
|
||||
ldr r6, _0802F738 @ =gMain+0x3548 @gMain.spriteGroups[70]
|
||||
ldrh r0, [r6]
|
||||
cmp r0, #0
|
||||
beq _0802F780
|
||||
ldr r2, _0802F704 @ =gCurrentPinballGame
|
||||
ldr r0, [r2]
|
||||
adds r0, #0x58
|
||||
ldrh r1, [r0]
|
||||
movs r0, #0xce
|
||||
subs r0, r0, r1
|
||||
strh r0, [r6, #2]
|
||||
ldr r1, [r2]
|
||||
movs r3, #0xdf
|
||||
lsls r3, r3, #2
|
||||
adds r0, r1, r3
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
beq _0802F748
|
||||
adds r0, r1, #0
|
||||
adds r0, #0x5a
|
||||
ldrh r1, [r0]
|
||||
movs r4, #0x82
|
||||
lsls r4, r4, #1
|
||||
adds r0, r4, #0
|
||||
subs r0, r0, r1
|
||||
strh r0, [r6, #4]
|
||||
ldr r0, [r2]
|
||||
movs r7, #0xa4
|
||||
lsls r7, r7, #2
|
||||
adds r0, r0, r7
|
||||
ldr r0, [r0]
|
||||
movs r1, #0x32
|
||||
bl __umodsi3
|
||||
movs r1, #0x19
|
||||
bl __udivsi3
|
||||
ldr r2, _0802F70C @ =0x040000D4
|
||||
lsls r0, r0, #0x10
|
||||
asrs r0, r0, #7
|
||||
ldr r1, _0802F73C @ =gUnknown_084ED6CC
|
||||
adds r0, r0, r1
|
||||
str r0, [r2]
|
||||
ldr r0, _0802F740 @ =0x06014FA0
|
||||
str r0, [r2, #4]
|
||||
ldr r0, _0802F744 @ =0x80000100
|
||||
str r0, [r2, #8]
|
||||
ldr r0, [r2, #8]
|
||||
b _0802F74C
|
||||
.align 2, 0
|
||||
_0802F700: .4byte gMain+0x15A8 @gMain.spriteGroups[26]
|
||||
_0802F704: .4byte gCurrentPinballGame
|
||||
_0802F708: .4byte 0x00000379
|
||||
_0802F70C: .4byte 0x040000D4
|
||||
_0802F710: .4byte gUnknown_08512C4C
|
||||
_0802F714: .4byte 0x06012A20
|
||||
_0802F718: .4byte 0x800001C0
|
||||
_0802F71C: .4byte 0x0000037A
|
||||
_0802F720: .4byte gUnknown_086B3CA4
|
||||
_0802F724: .4byte 0xFFFFFE00
|
||||
_0802F728: .4byte gOamBuffer
|
||||
_0802F72C: .4byte 0x000001FF
|
||||
_0802F730: .4byte 0x0000037B
|
||||
_0802F734: .4byte gUnknown_086B3B7E
|
||||
_0802F738: .4byte gMain+0x3548 @gMain.spriteGroups[70]
|
||||
_0802F73C: .4byte gUnknown_084ED6CC
|
||||
_0802F740: .4byte 0x06014FA0
|
||||
_0802F744: .4byte 0x80000100
|
||||
_0802F748:
|
||||
movs r0, #0xc8
|
||||
strh r0, [r6, #4]
|
||||
_0802F74C:
|
||||
adds r5, r6, #0
|
||||
adds r5, #8
|
||||
ldr r4, _0802F790 @ =gOamBuffer
|
||||
ldrh r2, [r6, #8]
|
||||
lsls r2, r2, #3
|
||||
adds r2, r2, r4
|
||||
movs r0, #2
|
||||
ldrsh r1, [r5, r0]
|
||||
movs r3, #2
|
||||
ldrsh r0, [r6, r3]
|
||||
adds r1, r1, r0
|
||||
ldr r7, _0802F794 @ =0x000001FF
|
||||
adds r0, r7, #0
|
||||
ands r1, r0
|
||||
ldrh r3, [r2, #2]
|
||||
ldr r0, _0802F798 @ =0xFFFFFE00
|
||||
ands r0, r3
|
||||
orrs r0, r1
|
||||
strh r0, [r2, #2]
|
||||
ldrh r1, [r6, #8]
|
||||
lsls r1, r1, #3
|
||||
adds r1, r1, r4
|
||||
ldrb r0, [r6, #4]
|
||||
ldrb r5, [r5, #4]
|
||||
adds r0, r0, r5
|
||||
strb r0, [r1]
|
||||
_0802F780:
|
||||
pop {r3, r4, r5}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
mov sl, r5
|
||||
pop {r4, r5, r6, r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0802F790: .4byte gOamBuffer
|
||||
_0802F794: .4byte 0x000001FF
|
||||
_0802F798: .4byte 0xFFFFFE00
|
||||
|
||||
thumb_func_start sub_2F79C
|
||||
sub_2F79C: @ 0x0802F79C
|
||||
push {r4, r5, r6, r7, lr}
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -429,7 +429,7 @@ struct PinballGame
|
|||
/*0x37C*/ s8 unk37C;
|
||||
/*0x37D*/ s8 unk37D;
|
||||
/*0x37E*/ u16 unk37E;
|
||||
/*0x380*/ u8 filler380[0x2];
|
||||
/*0x380*/ u16 unk380;
|
||||
/*0x382*/ s8 unk382;
|
||||
/*0x383*/ s8 unk383;
|
||||
/*0x384*/ s8 unk384;
|
||||
|
|
|
|||
|
|
@ -13,6 +13,10 @@ extern const u8 gUnknown_083FFD8C[][0x300];
|
|||
extern const u16 gUnknown_086B4A72[][2][3];
|
||||
extern const u8 gUnknown_08526DCC[];
|
||||
extern const s16 gUnknown_086AE496[][3];
|
||||
extern const u8 gUnknown_08512C4C[][0x380];
|
||||
extern const u16 gUnknown_086B3CA4[][3][3];
|
||||
extern const u16 gUnknown_086B3B7E[][7][3];
|
||||
extern const u8 gUnknown_084ED6CC[][0x200];
|
||||
|
||||
extern struct SongHeader gUnknown_086A11A4;
|
||||
|
||||
|
|
@ -438,3 +442,75 @@ void sub_2F26C(void)
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_2F504(void)
|
||||
{
|
||||
s16 i;
|
||||
struct SpriteGroup *group;
|
||||
struct OamDataSimple *oamSimple;
|
||||
u16 *dst;
|
||||
const u16 *src;
|
||||
s16 index;
|
||||
|
||||
group = &gMain.spriteGroups[26];
|
||||
if (group->available)
|
||||
{
|
||||
group->baseX = 198 - gCurrentPinballGame->unk58;
|
||||
group->baseY = gCurrentPinballGame->unk380 + 284 - gCurrentPinballGame->unk5A;
|
||||
index = gCurrentPinballGame->unk379;
|
||||
DmaCopy16(3, gUnknown_08512C4C[index], (void *)0x06012A20, 0x380);
|
||||
index = gCurrentPinballGame->unk37A;
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
oamSimple = &group->oam[i];
|
||||
dst = (u16*)&gOamBuffer[oamSimple->oamId];
|
||||
src = gUnknown_086B3CA4[index][i];
|
||||
*dst++ = *src++;
|
||||
*dst++ = *src++;
|
||||
*dst++ = *src++;
|
||||
|
||||
gOamBuffer[oamSimple->oamId].x += group->baseX;
|
||||
gOamBuffer[oamSimple->oamId].y += group->baseY;
|
||||
}
|
||||
}
|
||||
|
||||
group = &gMain.spriteGroups[27];
|
||||
if (group->available)
|
||||
{
|
||||
group->baseX = 198 - gCurrentPinballGame->unk58;
|
||||
group->baseY = 284 - gCurrentPinballGame->unk5A;
|
||||
index = gCurrentPinballGame->unk37B;
|
||||
for (i = 0; i < 7; i++)
|
||||
{
|
||||
oamSimple = &group->oam[i];
|
||||
dst = (u16*)&gOamBuffer[oamSimple->oamId];
|
||||
src = gUnknown_086B3B7E[index][i];
|
||||
*dst++ = *src++;
|
||||
*dst++ = *src++;
|
||||
*dst++ = *src++;
|
||||
|
||||
gOamBuffer[oamSimple->oamId].x += group->baseX;
|
||||
gOamBuffer[oamSimple->oamId].y += group->baseY;
|
||||
}
|
||||
}
|
||||
|
||||
group = &gMain.spriteGroups[70];
|
||||
if (group->available)
|
||||
{
|
||||
group->baseX = 206 - gCurrentPinballGame->unk58;
|
||||
if (gCurrentPinballGame->unk37C)
|
||||
{
|
||||
group->baseY = 260 - gCurrentPinballGame->unk5A;
|
||||
index = (gCurrentPinballGame->unk290 % 50) / 25;
|
||||
DmaCopy16(3, &gUnknown_084ED6CC[index], (void *)0x06014FA0, 0x200);
|
||||
}
|
||||
else
|
||||
{
|
||||
group->baseY = 200;
|
||||
}
|
||||
|
||||
oamSimple = &group->oam[0];
|
||||
gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX;
|
||||
gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user