mirror of
https://github.com/pret/pokepinballrs.git
synced 2026-03-21 17:24:13 -05:00
sub_3EB2C
This commit is contained in:
parent
05ecf34d9b
commit
0989eeb17f
330
asm/rom_3219C.s
330
asm/rom_3219C.s
|
|
@ -15387,333 +15387,3 @@ _0803EB1C: .4byte 0x80000430
|
|||
_0803EB20: .4byte gUnknown_081B36A4
|
||||
_0803EB24: .4byte 0x05000320
|
||||
_0803EB28: .4byte 0x80000010
|
||||
|
||||
thumb_func_start sub_3EB2C
|
||||
sub_3EB2C: @ 0x0803EB2C
|
||||
push {r4, r5, lr}
|
||||
ldr r0, _0803EB48 @ =gCurrentPinballGame
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, #0x13]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
cmp r0, #6
|
||||
bls _0803EB3E
|
||||
b _0803ED6C
|
||||
_0803EB3E:
|
||||
lsls r0, r0, #2
|
||||
ldr r1, _0803EB4C @ =_0803EB50
|
||||
adds r0, r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_0803EB48: .4byte gCurrentPinballGame
|
||||
_0803EB4C: .4byte _0803EB50
|
||||
_0803EB50: @ jump table
|
||||
.4byte _0803EB6C @ case 0
|
||||
.4byte _0803ED6C @ case 1
|
||||
.4byte _0803EBA4 @ case 2
|
||||
.4byte _0803EC0C @ case 3
|
||||
.4byte _0803EC8C @ case 4
|
||||
.4byte _0803ECE8 @ case 5
|
||||
.4byte _0803ED54 @ case 6
|
||||
_0803EB6C:
|
||||
ldr r3, _0803EB98 @ =gCurrentPinballGame
|
||||
ldr r0, [r3]
|
||||
ldr r1, _0803EB9C @ =0x000005F7
|
||||
adds r0, r0, r1
|
||||
movs r4, #0
|
||||
movs r1, #1
|
||||
strb r1, [r0]
|
||||
ldr r1, [r3]
|
||||
ldr r2, _0803EBA0 @ =0x00000506
|
||||
adds r0, r1, r2
|
||||
movs r2, #0
|
||||
ldrsb r2, [r0, r2]
|
||||
cmp r2, #1
|
||||
beq _0803EB8A
|
||||
b _0803ED6C
|
||||
_0803EB8A:
|
||||
adds r0, r1, #0
|
||||
adds r0, #0xe6
|
||||
strh r4, [r0]
|
||||
strb r2, [r1, #0x13]
|
||||
ldr r0, [r3]
|
||||
strh r4, [r0, #0x18]
|
||||
b _0803ED6C
|
||||
.align 2, 0
|
||||
_0803EB98: .4byte gCurrentPinballGame
|
||||
_0803EB9C: .4byte 0x000005F7
|
||||
_0803EBA0: .4byte 0x00000506
|
||||
_0803EBA4:
|
||||
ldr r2, _0803EBF0 @ =gCurrentPinballGame
|
||||
ldr r1, [r2]
|
||||
movs r3, #0
|
||||
movs r0, #3
|
||||
strb r0, [r1, #0x13]
|
||||
ldr r2, [r2]
|
||||
strh r3, [r2, #0x18]
|
||||
ldr r3, _0803EBF4 @ =gMain
|
||||
movs r4, #0xe9
|
||||
lsls r4, r4, #3
|
||||
adds r0, r3, r4
|
||||
movs r4, #1
|
||||
movs r1, #1
|
||||
strh r1, [r0]
|
||||
movs r5, #0xd2
|
||||
lsls r5, r5, #3
|
||||
adds r0, r3, r5
|
||||
strh r1, [r0]
|
||||
ldr r1, _0803EBF8 @ =0x040000D4
|
||||
ldr r0, _0803EBFC @ =gUnknown_081408B4
|
||||
str r0, [r1]
|
||||
ldr r0, _0803EC00 @ =0x06015800
|
||||
str r0, [r1, #4]
|
||||
ldr r0, _0803EC04 @ =0x80001000
|
||||
str r0, [r1, #8]
|
||||
ldr r0, [r1, #8]
|
||||
movs r0, #0xe5
|
||||
lsls r0, r0, #2
|
||||
adds r1, r2, r0
|
||||
movs r0, #0x88
|
||||
strh r0, [r1]
|
||||
movs r0, #0x80
|
||||
strb r0, [r3, #0xf]
|
||||
ldr r1, _0803EC08 @ =0x000005FA
|
||||
adds r2, r2, r1
|
||||
strb r4, [r2]
|
||||
b _0803ED6C
|
||||
.align 2, 0
|
||||
_0803EBF0: .4byte gCurrentPinballGame
|
||||
_0803EBF4: .4byte gMain
|
||||
_0803EBF8: .4byte 0x040000D4
|
||||
_0803EBFC: .4byte gUnknown_081408B4
|
||||
_0803EC00: .4byte 0x06015800
|
||||
_0803EC04: .4byte 0x80001000
|
||||
_0803EC08: .4byte 0x000005FA
|
||||
_0803EC0C:
|
||||
bl sub_351A8
|
||||
ldr r4, _0803EC54 @ =gCurrentPinballGame
|
||||
ldr r1, [r4]
|
||||
ldrb r0, [r1, #0x1c]
|
||||
cmp r0, #0
|
||||
beq _0803EC1E
|
||||
movs r0, #0xb5
|
||||
strh r0, [r1, #0x18]
|
||||
_0803EC1E:
|
||||
ldr r1, [r4]
|
||||
ldrh r0, [r1, #0x18]
|
||||
cmp r0, #0xb4
|
||||
bne _0803EC34
|
||||
movs r0, #1
|
||||
strb r0, [r1, #0x1c]
|
||||
ldr r1, [r4]
|
||||
ldr r0, _0803EC58 @ =0x00061A80
|
||||
str r0, [r1, #0x38]
|
||||
ldr r0, _0803EC5C @ =0x05F5E0FF
|
||||
str r0, [r1, #0x3c]
|
||||
_0803EC34:
|
||||
ldr r1, [r4]
|
||||
ldrh r0, [r1, #0x18]
|
||||
cmp r0, #0xef
|
||||
bhi _0803EC60
|
||||
cmp r0, #0x14
|
||||
bne _0803EC4A
|
||||
bl m4aMPlayAllStop
|
||||
movs r0, MUS_SUCCESS3
|
||||
bl m4aSongNumStart
|
||||
_0803EC4A:
|
||||
ldr r1, [r4]
|
||||
ldrh r0, [r1, #0x18]
|
||||
adds r0, #1
|
||||
strh r0, [r1, #0x18]
|
||||
b _0803EC74
|
||||
.align 2, 0
|
||||
_0803EC54: .4byte gCurrentPinballGame
|
||||
_0803EC58: .4byte 0x00061A80
|
||||
_0803EC5C: .4byte 0x05F5E0FF
|
||||
_0803EC60:
|
||||
movs r0, #0
|
||||
strh r0, [r1, #0x18]
|
||||
movs r0, #6
|
||||
strb r0, [r1, #0x13]
|
||||
ldr r1, [r4]
|
||||
ldr r2, _0803EC80 @ =0x00000283
|
||||
adds r1, r1, r2
|
||||
ldrb r0, [r1]
|
||||
adds r0, #1
|
||||
strb r0, [r1]
|
||||
_0803EC74:
|
||||
ldr r0, _0803EC84 @ =gCurrentPinballGame
|
||||
ldr r0, [r0]
|
||||
ldr r4, _0803EC88 @ =0x000005FA
|
||||
adds r0, r0, r4
|
||||
movs r1, #1
|
||||
b _0803ED6A
|
||||
.align 2, 0
|
||||
_0803EC80: .4byte 0x00000283
|
||||
_0803EC84: .4byte gCurrentPinballGame
|
||||
_0803EC88: .4byte 0x000005FA
|
||||
_0803EC8C:
|
||||
ldr r2, _0803ECD0 @ =gCurrentPinballGame
|
||||
ldr r1, [r2]
|
||||
movs r0, #5
|
||||
strb r0, [r1, #0x13]
|
||||
ldr r2, [r2]
|
||||
movs r0, #0x8c
|
||||
strh r0, [r2, #0x18]
|
||||
ldr r3, _0803ECD4 @ =gMain
|
||||
movs r5, #0xe9
|
||||
lsls r5, r5, #3
|
||||
adds r0, r3, r5
|
||||
movs r1, #1
|
||||
strh r1, [r0]
|
||||
movs r4, #0xd2
|
||||
lsls r4, r4, #3
|
||||
adds r0, r3, r4
|
||||
strh r1, [r0]
|
||||
ldr r1, _0803ECD8 @ =0x040000D4
|
||||
ldr r0, _0803ECDC @ =gUnknown_081408B4
|
||||
str r0, [r1]
|
||||
ldr r0, _0803ECE0 @ =0x06015800
|
||||
str r0, [r1, #4]
|
||||
ldr r0, _0803ECE4 @ =0x80001000
|
||||
str r0, [r1, #8]
|
||||
ldr r0, [r1, #8]
|
||||
movs r5, #0xe5
|
||||
lsls r5, r5, #2
|
||||
adds r2, r2, r5
|
||||
movs r0, #0x88
|
||||
strh r0, [r2]
|
||||
movs r0, #0x80
|
||||
strb r0, [r3, #0xf]
|
||||
b _0803ED6C
|
||||
.align 2, 0
|
||||
_0803ECD0: .4byte gCurrentPinballGame
|
||||
_0803ECD4: .4byte gMain
|
||||
_0803ECD8: .4byte 0x040000D4
|
||||
_0803ECDC: .4byte gUnknown_081408B4
|
||||
_0803ECE0: .4byte 0x06015800
|
||||
_0803ECE4: .4byte 0x80001000
|
||||
_0803ECE8:
|
||||
bl sub_351A8
|
||||
ldr r3, _0803ED20 @ =gCurrentPinballGame
|
||||
ldr r1, [r3]
|
||||
ldrb r0, [r1, #0x1c]
|
||||
cmp r0, #0
|
||||
beq _0803ECFA
|
||||
movs r0, #0xb5
|
||||
strh r0, [r1, #0x18]
|
||||
_0803ECFA:
|
||||
ldr r1, [r3]
|
||||
ldrh r0, [r1, #0x18]
|
||||
cmp r0, #0xb4
|
||||
bne _0803ED10
|
||||
movs r0, #1
|
||||
strb r0, [r1, #0x1c]
|
||||
ldr r1, [r3]
|
||||
ldr r0, _0803ED24 @ =0x00061A80
|
||||
str r0, [r1, #0x38]
|
||||
ldr r0, _0803ED28 @ =0x05F5E0FF
|
||||
str r0, [r1, #0x3c]
|
||||
_0803ED10:
|
||||
ldr r1, [r3]
|
||||
ldrh r0, [r1, #0x18]
|
||||
cmp r0, #0xef
|
||||
bhi _0803ED2C
|
||||
adds r0, #1
|
||||
strh r0, [r1, #0x18]
|
||||
b _0803ED6C
|
||||
.align 2, 0
|
||||
_0803ED20: .4byte gCurrentPinballGame
|
||||
_0803ED24: .4byte 0x00061A80
|
||||
_0803ED28: .4byte 0x05F5E0FF
|
||||
_0803ED2C:
|
||||
movs r2, #0
|
||||
movs r0, #0
|
||||
strh r0, [r1, #0x18]
|
||||
movs r0, #6
|
||||
strb r0, [r1, #0x13]
|
||||
ldr r1, [r3]
|
||||
ldr r0, _0803ED4C @ =0x00000283
|
||||
adds r1, r1, r0
|
||||
ldrb r0, [r1]
|
||||
adds r0, #1
|
||||
strb r0, [r1]
|
||||
ldr r0, [r3]
|
||||
ldr r1, _0803ED50 @ =0x000001AF
|
||||
adds r0, r0, r1
|
||||
strb r2, [r0]
|
||||
b _0803ED6C
|
||||
.align 2, 0
|
||||
_0803ED4C: .4byte 0x00000283
|
||||
_0803ED50: .4byte 0x000001AF
|
||||
_0803ED54:
|
||||
bl sub_351A8
|
||||
ldr r2, _0803EDDC @ =gCurrentPinballGame
|
||||
ldr r0, [r2]
|
||||
ldr r4, _0803EDE0 @ =0x00000386
|
||||
adds r0, r0, r4
|
||||
movs r1, #1
|
||||
strb r1, [r0]
|
||||
ldr r0, [r2]
|
||||
ldr r5, _0803EDE4 @ =0x000005FA
|
||||
adds r0, r0, r5
|
||||
_0803ED6A:
|
||||
strb r1, [r0]
|
||||
_0803ED6C:
|
||||
bl sub_423D8
|
||||
bl sub_40288
|
||||
bl sub_3EDF0
|
||||
bl sub_3FAE0
|
||||
ldr r0, _0803EDDC @ =gCurrentPinballGame
|
||||
ldr r1, [r0]
|
||||
movs r2, #0xa5
|
||||
lsls r2, r2, #2
|
||||
adds r0, r1, r2
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
beq _0803EDB4
|
||||
ldr r4, _0803EDE8 @ =0x00000296
|
||||
adds r0, r1, r4
|
||||
ldrh r0, [r0]
|
||||
cmp r0, #1
|
||||
bhi _0803EDB4
|
||||
ldr r4, _0803EDEC @ =gMain
|
||||
ldrb r0, [r4, #0xf]
|
||||
cmp r0, #0
|
||||
bne _0803EDB4
|
||||
bl m4aMPlayAllStop
|
||||
movs r0, MUS_END_OF_BALL3
|
||||
bl m4aSongNumStart
|
||||
ldrb r1, [r4, #0xf]
|
||||
movs r0, #0x40
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0xf]
|
||||
_0803EDB4:
|
||||
ldr r0, _0803EDDC @ =gCurrentPinballGame
|
||||
ldr r1, [r0]
|
||||
ldr r5, _0803EDE0 @ =0x00000386
|
||||
adds r0, r1, r5
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
beq _0803EDD2
|
||||
ldr r0, _0803EDE4 @ =0x000005FA
|
||||
adds r1, r1, r0
|
||||
movs r0, #1
|
||||
strb r0, [r1]
|
||||
bl sub_350F0
|
||||
_0803EDD2:
|
||||
bl sub_472E4
|
||||
pop {r4, r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0803EDDC: .4byte gCurrentPinballGame
|
||||
_0803EDE0: .4byte 0x00000386
|
||||
_0803EDE4: .4byte 0x000005FA
|
||||
_0803EDE8: .4byte 0x00000296
|
||||
_0803EDEC: .4byte gMain
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -607,12 +607,12 @@ extern void sub_3E5D0(void);
|
|||
//extern ? sub_3E644();
|
||||
//extern ? sub_3E79C();
|
||||
//extern ? sub_3EB2C();
|
||||
//extern ? sub_3EDF0();
|
||||
//extern ? sub_3FAE0();
|
||||
//extern ? sub_40288();
|
||||
extern void sub_3EDF0(void);
|
||||
extern void sub_3FAE0(void);
|
||||
extern void sub_40288(void);
|
||||
extern void sub_41580(void);
|
||||
extern void sub_417F8(void);
|
||||
//extern ? sub_423D8();
|
||||
extern void sub_423D8(void);
|
||||
//extern ? sub_42E48();
|
||||
//extern ? sub_43228();
|
||||
extern void sub_43500(void);
|
||||
|
|
|
|||
|
|
@ -230,7 +230,9 @@ struct PinballGame
|
|||
/*0x195*/ u8 filler195[0x10];
|
||||
/*0x1A5*/ s8 unk1A5;
|
||||
/*0x1A6*/ s8 unk1A6;
|
||||
/*0x1A7*/ u8 filler1A7[0xD];
|
||||
/*0x1A7*/ u8 filler1A7[0x8];
|
||||
/*0x1AF*/ s8 unk1AF;
|
||||
/*0x1B0*/ u8 filler1B0[0x4];
|
||||
/*0x1B4*/ u16 unk1B4;
|
||||
/*0x1B6*/ u8 filler1B6[0x4];
|
||||
/*0x1BA*/ u16 unk1BA;
|
||||
|
|
@ -340,9 +342,9 @@ struct PinballGame
|
|||
/*0x345*/ s8 unk345;
|
||||
/*0x346*/ s8 unk346;
|
||||
/*0x347*/ u8 filler347[0x23];
|
||||
/*0x36A*/ u8 unk36A[0x2];
|
||||
/*0x36C*/ u8 unk36C[0x2];
|
||||
/*0x36E*/ u16 unk36E[0x2];
|
||||
/*0x36A*/ u8 unk36A[2];
|
||||
/*0x36C*/ u8 unk36C[2];
|
||||
/*0x36E*/ u16 unk36E[2];
|
||||
/*0x372*/ u8 filler372[0x11];
|
||||
/*0x383*/ s8 unk383;
|
||||
/*0x384*/ s8 unk384;
|
||||
|
|
|
|||
117
src/rom_49A34.c
117
src/rom_49A34.c
|
|
@ -117,6 +117,7 @@ extern const u8 gUnknown_084A6EEC[][0x280];
|
|||
extern const u8 gUnknown_084AA9EC[][0x800];
|
||||
extern const u8 gUnknown_084A856C[];
|
||||
extern const u8 gUnknown_084AA18C[];
|
||||
extern const u8 gUnknown_081408B4[];
|
||||
|
||||
struct Unk_086AFAC0
|
||||
{
|
||||
|
|
@ -140,6 +141,122 @@ extern u8 gUnknown_0200FBB0[];
|
|||
extern u8 gUnknown_020030A0[];
|
||||
|
||||
|
||||
void sub_3EB2C(void)
|
||||
{
|
||||
switch (gCurrentPinballGame->unk13)
|
||||
{
|
||||
case 0:
|
||||
gCurrentPinballGame->unk5F7 = 1;
|
||||
if (gCurrentPinballGame->unk506 == 1)
|
||||
{
|
||||
gCurrentPinballGame->unkE6 = 0;
|
||||
gCurrentPinballGame->unk13 = 1;
|
||||
gCurrentPinballGame->unk18 = 0;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
break;
|
||||
case 2:
|
||||
gCurrentPinballGame->unk13 = 3;
|
||||
gCurrentPinballGame->unk18 = 0;
|
||||
gMain.spriteGroups[6].available = 1;
|
||||
gMain.spriteGroups[5].available = 1;
|
||||
DmaCopy16(3, gUnknown_081408B4, (void *)0x06015800, 0x2000);
|
||||
gCurrentPinballGame->unk394 = 136;
|
||||
gMain.unkF = 0x80;
|
||||
gCurrentPinballGame->unk5FA = 1;
|
||||
break;
|
||||
case 3:
|
||||
sub_351A8();
|
||||
if (gCurrentPinballGame->unk1C)
|
||||
gCurrentPinballGame->unk18 = 181;
|
||||
|
||||
if (gCurrentPinballGame->unk18 == 180)
|
||||
{
|
||||
gCurrentPinballGame->unk1C = 1;
|
||||
gCurrentPinballGame->unk38 = 400000;
|
||||
gCurrentPinballGame->unk3C = 99999999;
|
||||
}
|
||||
|
||||
if (gCurrentPinballGame->unk18 < 240)
|
||||
{
|
||||
if (gCurrentPinballGame->unk18 == 20)
|
||||
{
|
||||
m4aMPlayAllStop();
|
||||
m4aSongNumStart(MUS_SUCCESS3);
|
||||
}
|
||||
|
||||
gCurrentPinballGame->unk18++;
|
||||
}
|
||||
else
|
||||
{
|
||||
gCurrentPinballGame->unk18 = 0;
|
||||
gCurrentPinballGame->unk13 = 6;
|
||||
gCurrentPinballGame->numCompletedBonusStages++;
|
||||
}
|
||||
|
||||
gCurrentPinballGame->unk5FA = 1;
|
||||
break;
|
||||
case 4:
|
||||
gCurrentPinballGame->unk13 = 5;
|
||||
gCurrentPinballGame->unk18 = 140;
|
||||
gMain.spriteGroups[6].available = 1;
|
||||
gMain.spriteGroups[5].available = 1;
|
||||
DmaCopy16(3, gUnknown_081408B4, (void *)0x06015800, 0x2000);
|
||||
gCurrentPinballGame->unk394 = 136;
|
||||
gMain.unkF = 0x80;
|
||||
break;
|
||||
case 5:
|
||||
sub_351A8();
|
||||
if (gCurrentPinballGame->unk1C)
|
||||
gCurrentPinballGame->unk18 = 181;
|
||||
|
||||
if (gCurrentPinballGame->unk18 == 180)
|
||||
{
|
||||
gCurrentPinballGame->unk1C = 1;
|
||||
gCurrentPinballGame->unk38 = 400000;
|
||||
gCurrentPinballGame->unk3C = 99999999;
|
||||
}
|
||||
|
||||
if (gCurrentPinballGame->unk18 < 240)
|
||||
{
|
||||
gCurrentPinballGame->unk18++;
|
||||
}
|
||||
else
|
||||
{
|
||||
gCurrentPinballGame->unk18 = 0;
|
||||
gCurrentPinballGame->unk13 = 6;
|
||||
gCurrentPinballGame->numCompletedBonusStages++;
|
||||
gCurrentPinballGame->unk1AF = 0;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
sub_351A8();
|
||||
gCurrentPinballGame->unk386 = 1;
|
||||
gCurrentPinballGame->unk5FA = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
sub_423D8();
|
||||
sub_40288();
|
||||
sub_3EDF0();
|
||||
sub_3FAE0();
|
||||
if (gCurrentPinballGame->unk294 && gCurrentPinballGame->eventTimer < 2 && gMain.unkF == 0)
|
||||
{
|
||||
m4aMPlayAllStop();
|
||||
m4aSongNumStart(MUS_END_OF_BALL3);
|
||||
gMain.unkF |= 0x40;
|
||||
}
|
||||
|
||||
if (gCurrentPinballGame->unk386)
|
||||
{
|
||||
gCurrentPinballGame->unk5FA = 1;
|
||||
sub_350F0();
|
||||
}
|
||||
|
||||
sub_472E4();
|
||||
}
|
||||
|
||||
void sub_3EDF0(void)
|
||||
{
|
||||
if (gCurrentPinballGame->unk452)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user