mirror of
https://github.com/pret/pokepinballrs.git
synced 2026-04-26 08:49:23 -05:00
sub_29D9C
This commit is contained in:
parent
8ff9d45eda
commit
96294dd02d
345
asm/rom_27F94.s
345
asm/rom_27F94.s
|
|
@ -6,351 +6,6 @@
|
|||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_29D9C
|
||||
sub_29D9C: @ 0x08029D9C
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sb
|
||||
mov r6, r8
|
||||
push {r6, r7}
|
||||
ldr r3, _08029E60 @ =gMain
|
||||
ldr r0, [r3, #0x44]
|
||||
ldr r0, [r0, #0x5c]
|
||||
movs r2, #0
|
||||
movs r5, #0
|
||||
movs r1, #1
|
||||
strh r1, [r0]
|
||||
ldr r0, [r3, #0x44]
|
||||
ldr r0, [r0, #0x50]
|
||||
strh r1, [r0]
|
||||
ldr r0, [r3, #0x44]
|
||||
ldr r0, [r0, #0x54]
|
||||
strh r1, [r0]
|
||||
ldrh r0, [r3, #0x38]
|
||||
ldr r0, _08029E64 @ =0x00001C10
|
||||
strh r0, [r3, #0x38]
|
||||
ldrh r0, [r3, #0x3a]
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #5
|
||||
strh r0, [r3, #0x3a]
|
||||
ldr r4, _08029E68 @ =gCurrentPinballGame
|
||||
ldr r0, [r4]
|
||||
movs r1, #0xdd
|
||||
lsls r1, r1, #3
|
||||
adds r0, r0, r1
|
||||
strb r2, [r0]
|
||||
ldr r1, [r4]
|
||||
ldr r0, _08029E6C @ =0x000006F2
|
||||
adds r2, r1, r0
|
||||
movs r0, #8
|
||||
strh r0, [r2]
|
||||
ldr r2, _08029E70 @ =0x000006F4
|
||||
adds r0, r1, r2
|
||||
strh r5, [r0]
|
||||
subs r2, #0x14
|
||||
adds r0, r1, r2
|
||||
strh r5, [r0]
|
||||
ldr r0, _08029E74 @ =0x000006E9
|
||||
adds r1, r1, r0
|
||||
movs r0, #0
|
||||
ldrsb r0, [r1, r0]
|
||||
mov r8, r3
|
||||
adds r7, r4, #0
|
||||
cmp r0, #0x19
|
||||
bne _08029E02
|
||||
movs r0, #0xa
|
||||
strb r0, [r1]
|
||||
_08029E02:
|
||||
movs r3, #0
|
||||
ldr r1, _08029E78 @ =gUnknown_086AD180
|
||||
mov sb, r1
|
||||
_08029E08:
|
||||
ldr r5, [r7]
|
||||
lsls r3, r3, #0x10
|
||||
asrs r2, r3, #0xf
|
||||
movs r1, #0xdf
|
||||
lsls r1, r1, #3
|
||||
adds r0, r5, r1
|
||||
adds r4, r0, r2
|
||||
subs r1, #0xf
|
||||
adds r0, r5, r1
|
||||
movs r1, #0
|
||||
ldrsb r1, [r0, r1]
|
||||
lsls r0, r1, #3
|
||||
subs r0, r0, r1
|
||||
lsls r0, r0, #1
|
||||
adds r2, r2, r0
|
||||
add r2, sb
|
||||
ldrh r0, [r2]
|
||||
strh r0, [r4]
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
adds r6, r3, #0
|
||||
cmp r0, #0x29
|
||||
beq _08029E38
|
||||
b _08029F2E
|
||||
_08029E38:
|
||||
mov r2, r8
|
||||
ldrb r0, [r2, #4]
|
||||
cmp r0, #0
|
||||
bne _08029EBC
|
||||
ldr r1, _08029E7C @ =0x00000283
|
||||
adds r0, r5, r1
|
||||
ldrb r0, [r0]
|
||||
movs r1, #5
|
||||
bl __umodsi3
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r0, r0, #0x18
|
||||
cmp r0, #4
|
||||
bls _08029E56
|
||||
b _08029F9E
|
||||
_08029E56:
|
||||
lsls r0, r0, #2
|
||||
ldr r1, _08029E80 @ =_08029E84
|
||||
adds r0, r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_08029E60: .4byte gMain
|
||||
_08029E64: .4byte 0x00001C10
|
||||
_08029E68: .4byte gCurrentPinballGame
|
||||
_08029E6C: .4byte 0x000006F2
|
||||
_08029E70: .4byte 0x000006F4
|
||||
_08029E74: .4byte 0x000006E9
|
||||
_08029E78: .4byte gUnknown_086AD180
|
||||
_08029E7C: .4byte 0x00000283
|
||||
_08029E80: .4byte _08029E84
|
||||
_08029E84: @ jump table
|
||||
.4byte _08029E98 @ case 0
|
||||
.4byte _08029EAA @ case 1
|
||||
.4byte _08029E98 @ case 2
|
||||
.4byte _08029EAA @ case 3
|
||||
.4byte _08029F1C @ case 4
|
||||
_08029E98:
|
||||
ldr r0, [r7]
|
||||
asrs r1, r6, #0xf
|
||||
movs r2, #0xdf
|
||||
lsls r2, r2, #3
|
||||
adds r0, r0, r2
|
||||
adds r0, r0, r1
|
||||
movs r1, #0x2a
|
||||
strh r1, [r0]
|
||||
b _08029F9E
|
||||
_08029EAA:
|
||||
ldr r0, [r7]
|
||||
asrs r1, r6, #0xf
|
||||
movs r2, #0xdf
|
||||
lsls r2, r2, #3
|
||||
adds r0, r0, r2
|
||||
adds r0, r0, r1
|
||||
movs r1, #0x2c
|
||||
strh r1, [r0]
|
||||
b _08029F9E
|
||||
_08029EBC:
|
||||
ldr r1, _08029EDC @ =0x00000283
|
||||
adds r0, r5, r1
|
||||
ldrb r0, [r0]
|
||||
movs r1, #5
|
||||
bl __umodsi3
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r0, r0, #0x18
|
||||
cmp r0, #4
|
||||
bhi _08029F9E
|
||||
lsls r0, r0, #2
|
||||
ldr r1, _08029EE0 @ =_08029EE4
|
||||
adds r0, r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_08029EDC: .4byte 0x00000283
|
||||
_08029EE0: .4byte _08029EE4
|
||||
_08029EE4: @ jump table
|
||||
.4byte _08029EF8 @ case 0
|
||||
.4byte _08029F0A @ case 1
|
||||
.4byte _08029EF8 @ case 2
|
||||
.4byte _08029F0A @ case 3
|
||||
.4byte _08029F1C @ case 4
|
||||
_08029EF8:
|
||||
ldr r0, [r7]
|
||||
asrs r1, r6, #0xf
|
||||
movs r2, #0xdf
|
||||
lsls r2, r2, #3
|
||||
adds r0, r0, r2
|
||||
adds r0, r0, r1
|
||||
movs r1, #0x29
|
||||
strh r1, [r0]
|
||||
b _08029F9E
|
||||
_08029F0A:
|
||||
ldr r0, [r7]
|
||||
asrs r1, r6, #0xf
|
||||
movs r2, #0xdf
|
||||
lsls r2, r2, #3
|
||||
adds r0, r0, r2
|
||||
adds r0, r0, r1
|
||||
movs r1, #0x2b
|
||||
strh r1, [r0]
|
||||
b _08029F9E
|
||||
_08029F1C:
|
||||
ldr r0, [r7]
|
||||
asrs r1, r6, #0xf
|
||||
movs r2, #0xdf
|
||||
lsls r2, r2, #3
|
||||
adds r0, r0, r2
|
||||
adds r0, r0, r1
|
||||
movs r1, #0x2d
|
||||
strh r1, [r0]
|
||||
b _08029F9E
|
||||
_08029F2E:
|
||||
cmp r0, #0xa
|
||||
bne _08029F4C
|
||||
ldr r0, _08029F44 @ =0x000005F6
|
||||
adds r1, r5, r0
|
||||
movs r0, #0
|
||||
ldrsb r0, [r1, r0]
|
||||
cmp r0, #2
|
||||
bgt _08029F48
|
||||
adds r0, #0xa
|
||||
b _08029F9C
|
||||
.align 2, 0
|
||||
_08029F44: .4byte 0x000005F6
|
||||
_08029F48:
|
||||
movs r0, #0xc
|
||||
b _08029F9C
|
||||
_08029F4C:
|
||||
cmp r0, #3
|
||||
bne _08029F88
|
||||
movs r1, #0xf1
|
||||
lsls r1, r1, #1
|
||||
adds r0, r5, r1
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
cmp r0, #2
|
||||
bne _08029F9E
|
||||
mov r2, r8
|
||||
ldr r0, [r2, #0x4c]
|
||||
movs r1, #1
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08029F84
|
||||
ldr r0, _08029F7C @ =0x000005F6
|
||||
adds r1, r5, r0
|
||||
movs r0, #0
|
||||
ldrsb r0, [r1, r0]
|
||||
cmp r0, #2
|
||||
bgt _08029F80
|
||||
adds r0, #0xa
|
||||
b _08029F9C
|
||||
.align 2, 0
|
||||
_08029F7C: .4byte 0x000005F6
|
||||
_08029F80:
|
||||
movs r0, #0xc
|
||||
b _08029F9C
|
||||
_08029F84:
|
||||
strh r1, [r4]
|
||||
b _08029F9E
|
||||
_08029F88:
|
||||
cmp r0, #9
|
||||
bne _08029F9E
|
||||
ldr r1, _0802A040 @ =0x00000281
|
||||
adds r0, r5, r1
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bgt _08029F9E
|
||||
movs r0, #8
|
||||
_08029F9C:
|
||||
strh r0, [r4]
|
||||
_08029F9E:
|
||||
movs r2, #0x80
|
||||
lsls r2, r2, #9
|
||||
adds r0, r6, r2
|
||||
lsrs r3, r0, #0x10
|
||||
asrs r0, r0, #0x10
|
||||
cmp r0, #5
|
||||
bgt _08029FAE
|
||||
b _08029E08
|
||||
_08029FAE:
|
||||
ldr r2, [r7]
|
||||
ldr r0, _0802A044 @ =0x00000704
|
||||
adds r1, r2, r0
|
||||
movs r0, #0x15
|
||||
strh r0, [r1]
|
||||
ldr r1, _0802A048 @ =0x000006E9
|
||||
adds r2, r2, r1
|
||||
ldrb r1, [r2]
|
||||
movs r0, #0
|
||||
ldrsb r0, [r2, r0]
|
||||
cmp r0, #0x18
|
||||
bgt _08029FCA
|
||||
adds r0, r1, #1
|
||||
strb r0, [r2]
|
||||
_08029FCA:
|
||||
ldr r0, [r7]
|
||||
ldr r3, _0802A04C @ =0x000006EA
|
||||
adds r0, r0, r3
|
||||
movs r1, #5
|
||||
strb r1, [r0]
|
||||
ldr r2, [r7]
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x72
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
movs r1, #0xf0
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _08029FFE
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x35
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
cmp r0, #0xb
|
||||
ble _08029FFE
|
||||
adds r1, r2, r3
|
||||
ldrb r0, [r1]
|
||||
adds r0, #1
|
||||
strb r0, [r1]
|
||||
_08029FFE:
|
||||
ldr r0, [r7]
|
||||
ldr r2, _0802A050 @ =0x000006EB
|
||||
adds r0, r0, r2
|
||||
movs r1, #1
|
||||
strb r1, [r0]
|
||||
ldr r0, [r7]
|
||||
adds r2, #0xd
|
||||
adds r1, r0, r2
|
||||
ldrh r1, [r1]
|
||||
subs r2, #0xc
|
||||
adds r0, r0, r2
|
||||
strb r1, [r0]
|
||||
ldr r0, [r7]
|
||||
adds r2, #0xe
|
||||
adds r1, r0, r2
|
||||
ldrh r1, [r1]
|
||||
subs r2, #0xd
|
||||
adds r0, r0, r2
|
||||
strb r1, [r0]
|
||||
movs r0, #2
|
||||
movs r1, #0
|
||||
bl sub_1C7F4
|
||||
movs r0, #2
|
||||
movs r1, #1
|
||||
bl sub_1C7F4
|
||||
pop {r3, r4}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
pop {r4, r5, r6, r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0802A040: .4byte 0x00000281
|
||||
_0802A044: .4byte 0x00000704
|
||||
_0802A048: .4byte 0x000006E9
|
||||
_0802A04C: .4byte 0x000006EA
|
||||
_0802A050: .4byte 0x000006EB
|
||||
|
||||
thumb_func_start sub_2A054
|
||||
sub_2A054: @ 0x0802A054
|
||||
push {r4, r5, r6, r7, lr}
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -640,11 +640,24 @@ struct PinballGame
|
|||
/*0x6D9*/ u8 filler6D9[0x2];
|
||||
/*0x6DB*/ u8 unk6DB;
|
||||
/*0x6DC*/ u8 unk6DC;
|
||||
/*0x6DD*/ u8 filler6DD[0x7];
|
||||
/*0x6DD*/ u8 filler6DD[0x3];
|
||||
/*0x6DD*/ u16 unk6E0;
|
||||
/*0x6E2*/ u8 filler6E2[0x2];
|
||||
/*0x6E4*/ struct Vector16 unk6E4;
|
||||
/*0x6E8*/ u8 filler6E8[0x6];
|
||||
/*0x6E8*/ u8 unk6E8;
|
||||
/*0x6E9*/ s8 unk6E9;
|
||||
/*0x6EA*/ s8 unk6EA;
|
||||
/*0x6EB*/ s8 unk6EB;
|
||||
/*0x6EC*/ s8 unk6EC;
|
||||
/*0x6ED*/ s8 unk6ED;
|
||||
/*0x6EE*/ u16 unk6EE;
|
||||
/*0x6F0*/ u8 filler6F0[0x1C];
|
||||
/*0x6F0*/ u8 filler6F0[0x2];
|
||||
/*0x6F2*/ u16 unk6F2;
|
||||
/*0x6F4*/ u16 unk6F4;
|
||||
/*0x6F6*/ u8 filler6F6[0x2];
|
||||
/*0x6F8*/ u16 unk6F8[6];
|
||||
/*0x704*/ u16 unk704;
|
||||
/*0x706*/ u8 filler706[0x6];
|
||||
/*0x70C*/ u16 unk70C;
|
||||
/*0x70E*/ s8 unk70E;
|
||||
/*0x70F*/ s8 unk70F;
|
||||
|
|
|
|||
103
src/rom_27F94.c
103
src/rom_27F94.c
|
|
@ -28,6 +28,7 @@ extern const s16 gUnknown_086AE234[][16];
|
|||
extern const u16 gUnknown_086B4E3E[][3];
|
||||
extern const s16 gUnknown_086AE30C[];
|
||||
extern const s16 gUnknown_086AE318[];
|
||||
extern u16 gUnknown_086AD180[][7];
|
||||
|
||||
extern struct SongHeader gUnknown_0869F58C;
|
||||
|
||||
|
|
@ -1002,3 +1003,105 @@ void sub_29A6C(void)
|
|||
gMain.unk44[12]->available = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_29D9C(void)
|
||||
{
|
||||
s16 i;
|
||||
|
||||
gMain.unk44[23]->available = 1;
|
||||
gMain.unk44[20]->available = 1;
|
||||
gMain.unk44[21]->available = 1;
|
||||
gMain.blendControl = 0x1C10;
|
||||
gMain.blendAlpha = BLDALPHA_BLEND(0, 16);
|
||||
gCurrentPinballGame->unk6E8 = 0;
|
||||
gCurrentPinballGame->unk6F2 = 8;
|
||||
gCurrentPinballGame->unk6F4 = 0;
|
||||
gCurrentPinballGame->unk6E0 = 0;
|
||||
if (gCurrentPinballGame->unk6E9 == 25)
|
||||
gCurrentPinballGame->unk6E9 = 10;
|
||||
|
||||
for (i = 0; i < 6; i++)
|
||||
{
|
||||
gCurrentPinballGame->unk6F8[i] = gUnknown_086AD180[gCurrentPinballGame->unk6E9][i];
|
||||
if (gCurrentPinballGame->unk6F8[i] == 41)
|
||||
{
|
||||
if (gMain.selectedField == FIELD_RUBY)
|
||||
{
|
||||
switch (gCurrentPinballGame->numCompletedBonusStages % 5)
|
||||
{
|
||||
case 0:
|
||||
case 2:
|
||||
gCurrentPinballGame->unk6F8[i] = 42;
|
||||
break;
|
||||
case 1:
|
||||
case 3:
|
||||
gCurrentPinballGame->unk6F8[i] = 44;
|
||||
break;
|
||||
case 4:
|
||||
gCurrentPinballGame->unk6F8[i] = 45;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (gCurrentPinballGame->numCompletedBonusStages % 5)
|
||||
{
|
||||
case 0:
|
||||
case 2:
|
||||
gCurrentPinballGame->unk6F8[i] = 41;
|
||||
break;
|
||||
case 1:
|
||||
case 3:
|
||||
gCurrentPinballGame->unk6F8[i] = 43;
|
||||
break;
|
||||
case 4:
|
||||
gCurrentPinballGame->unk6F8[i] = 45;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (gCurrentPinballGame->unk6F8[i] == 10)
|
||||
{
|
||||
if (gCurrentPinballGame->unk5F6 < 3)
|
||||
gCurrentPinballGame->unk6F8[i] = gCurrentPinballGame->unk5F6 + 10;
|
||||
else
|
||||
gCurrentPinballGame->unk6F8[i] = 12;
|
||||
}
|
||||
else if (gCurrentPinballGame->unk6F8[i] == 3)
|
||||
{
|
||||
if (gCurrentPinballGame->outLanePikaPosition == 2)
|
||||
{
|
||||
if (gMain.systemFrameCount & 1)
|
||||
{
|
||||
if (gCurrentPinballGame->unk5F6 < 3)
|
||||
gCurrentPinballGame->unk6F8[i] = gCurrentPinballGame->unk5F6 + 10;
|
||||
else
|
||||
gCurrentPinballGame->unk6F8[i] = 12;
|
||||
}
|
||||
else
|
||||
{
|
||||
gCurrentPinballGame->unk6F8[i] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (gCurrentPinballGame->unk6F8[i] == 9)
|
||||
{
|
||||
if (gCurrentPinballGame->evolvablePartySize <= 0)
|
||||
gCurrentPinballGame->unk6F8[i] = 8;
|
||||
}
|
||||
}
|
||||
|
||||
gCurrentPinballGame->unk704 = 21;
|
||||
if (gCurrentPinballGame->unk6E9 < 25)
|
||||
gCurrentPinballGame->unk6E9++;
|
||||
|
||||
gCurrentPinballGame->unk6EA = 5;
|
||||
if ((gCurrentPinballGame->unk72 & 0xF0) == 0 && gCurrentPinballGame->area > AREA_WILDERNESS)
|
||||
gCurrentPinballGame->unk6EA++;
|
||||
|
||||
gCurrentPinballGame->unk6EB = 1;
|
||||
gCurrentPinballGame->unk6EC = gCurrentPinballGame->unk6F8[0];
|
||||
gCurrentPinballGame->unk6ED = gCurrentPinballGame->unk6F8[1];
|
||||
sub_1C7F4(2, 0);
|
||||
sub_1C7F4(2, 1);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user