mirror of
https://github.com/pret/pokepinballrs.git
synced 2026-03-21 17:24:13 -05:00
Decompile sub_19048, IdlePinballGameMain, sub_19190, sub_19288 and sub_19304 (#114)
* decompile IdlePinballGameMain documented gMain.subState Broken state due to gIdlePinballGameStateFuncs definition * Fixed definition of gIdlePinballGameStateFuncs * Decimpile sub_19048 * Decomp sub_19190 * Fixed the io_reg macro name for joystick without LR as an input check. * used proper macro's for field checks * Decompile sub_19288 and sub_19304 * cleanup --------- Co-authored-by: Marcus Huderle <huderlem@gmail.com>
This commit is contained in:
parent
a18ce7ed26
commit
1c0a9314f8
373
asm/rom_11B9C.s
373
asm/rom_11B9C.s
|
|
@ -9523,378 +9523,7 @@ _08018778: .4byte 0x000004B4
|
|||
_0801877C: .4byte 0x000004B6
|
||||
_08018780: .4byte 0x000004A4
|
||||
|
||||
.section .text19028
|
||||
|
||||
thumb_func_start IdlePinballGameMain
|
||||
IdlePinballGameMain: @ 0x08019028
|
||||
push {lr}
|
||||
ldr r1, _08019040 @ =gIdlePinballGameStateFuncs
|
||||
ldr r0, _08019044 @ =gMain
|
||||
ldrb r0, [r0, #3]
|
||||
lsls r0, r0, #2
|
||||
adds r0, r0, r1
|
||||
ldr r0, [r0]
|
||||
bl _call_via_r0
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08019040: .4byte gIdlePinballGameStateFuncs
|
||||
_08019044: .4byte gMain
|
||||
|
||||
thumb_func_start sub_19048
|
||||
sub_19048: @ 0x08019048
|
||||
push {r4, r5, lr}
|
||||
ldr r1, _080190A4 @ =gMain
|
||||
movs r2, #0
|
||||
str r2, [r1, #0x54]
|
||||
movs r0, #1
|
||||
strb r0, [r1, #0xd]
|
||||
ldr r0, _080190A8 @ =gUnknown_02031510
|
||||
str r2, [r0]
|
||||
adds r5, r1, #0
|
||||
ldr r4, _080190AC @ =gUnknown_02031520
|
||||
adds r3, r5, #7
|
||||
_0801905E:
|
||||
lsls r0, r2, #0x10
|
||||
asrs r0, r0, #0x10
|
||||
adds r2, r0, r4
|
||||
adds r1, r0, r3
|
||||
ldrb r1, [r1]
|
||||
strb r1, [r2]
|
||||
adds r0, #1
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r2, r0, #0x10
|
||||
asrs r0, r0, #0x10
|
||||
cmp r0, #4
|
||||
ble _0801905E
|
||||
adds r4, r5, #0
|
||||
ldrh r0, [r4, #0x30]
|
||||
cmp r0, #0
|
||||
bne _0801908E
|
||||
bl Random
|
||||
ldr r1, [r4, #0x4c]
|
||||
adds r0, r0, r1
|
||||
movs r1, #0x1e
|
||||
bl __umodsi3
|
||||
strh r0, [r4, #0x30]
|
||||
_0801908E:
|
||||
ldrh r4, [r5, #0x30]
|
||||
movs r0, #3
|
||||
ands r4, r0
|
||||
adds r0, r4, #0
|
||||
cmp r0, #1
|
||||
beq _080190D8
|
||||
cmp r0, #1
|
||||
bgt _080190B0
|
||||
cmp r0, #0
|
||||
beq _080190BA
|
||||
b _0801911E
|
||||
.align 2, 0
|
||||
_080190A4: .4byte gMain
|
||||
_080190A8: .4byte gUnknown_02031510
|
||||
_080190AC: .4byte gUnknown_02031520
|
||||
_080190B0:
|
||||
cmp r0, #2
|
||||
beq _080190F4
|
||||
cmp r0, #3
|
||||
beq _08019110
|
||||
b _0801911E
|
||||
_080190BA:
|
||||
ldr r1, _080190C8 @ =gUnknown_02031520
|
||||
ldr r0, _080190CC @ =0x00000A14
|
||||
strh r0, [r1, #6]
|
||||
ldr r0, _080190D0 @ =gUnknown_081450F4
|
||||
str r0, [r1, #0x10]
|
||||
ldr r0, _080190D4 @ =gUnknown_081531F4
|
||||
b _0801911C
|
||||
.align 2, 0
|
||||
_080190C8: .4byte gUnknown_02031520
|
||||
_080190CC: .4byte 0x00000A14
|
||||
_080190D0: .4byte gUnknown_081450F4
|
||||
_080190D4: .4byte gUnknown_081531F4
|
||||
_080190D8:
|
||||
ldr r1, _080190E8 @ =gUnknown_02031520
|
||||
movs r0, #0xf0
|
||||
lsls r0, r0, #4
|
||||
strh r0, [r1, #6]
|
||||
ldr r0, _080190EC @ =gUnknown_0814F9B4
|
||||
str r0, [r1, #0x10]
|
||||
ldr r0, _080190F0 @ =gUnknown_08156E60
|
||||
b _0801911C
|
||||
.align 2, 0
|
||||
_080190E8: .4byte gUnknown_02031520
|
||||
_080190EC: .4byte gUnknown_0814F9B4
|
||||
_080190F0: .4byte gUnknown_08156E60
|
||||
_080190F4:
|
||||
ldr r1, _08019104 @ =gUnknown_02031520
|
||||
movs r0, #0xd2
|
||||
lsls r0, r0, #4
|
||||
strh r0, [r1, #6]
|
||||
ldr r0, _08019108 @ =gUnknown_08148934
|
||||
str r0, [r1, #0x10]
|
||||
ldr r0, _0801910C @ =gUnknown_08154618
|
||||
b _0801911C
|
||||
.align 2, 0
|
||||
_08019104: .4byte gUnknown_02031520
|
||||
_08019108: .4byte gUnknown_08148934
|
||||
_0801910C: .4byte gUnknown_08154618
|
||||
_08019110:
|
||||
ldr r1, _08019134 @ =gUnknown_02031520
|
||||
ldr r0, _08019138 @ =0x00000E4C
|
||||
strh r0, [r1, #6]
|
||||
ldr r0, _0801913C @ =gUnknown_0814C174
|
||||
str r0, [r1, #0x10]
|
||||
ldr r0, _08019140 @ =gUnknown_08155A3C
|
||||
_0801911C:
|
||||
str r0, [r1, #0xc]
|
||||
_0801911E:
|
||||
bl sub_49ED4
|
||||
adds r1, r4, #0
|
||||
cmp r1, #1
|
||||
beq _0801914E
|
||||
cmp r1, #1
|
||||
bgt _08019144
|
||||
cmp r1, #0
|
||||
beq _08019156
|
||||
b _08019164
|
||||
.align 2, 0
|
||||
_08019134: .4byte gUnknown_02031520
|
||||
_08019138: .4byte 0x00000E4C
|
||||
_0801913C: .4byte gUnknown_0814C174
|
||||
_08019140: .4byte gUnknown_08155A3C
|
||||
_08019144:
|
||||
cmp r1, #2
|
||||
beq _08019156
|
||||
cmp r1, #3
|
||||
beq _0801915E
|
||||
b _08019164
|
||||
_0801914E:
|
||||
movs r0, MUS_FIELD_SAPPHIRE
|
||||
bl m4aSongNumStart
|
||||
b _08019164
|
||||
_08019156:
|
||||
movs r0, MUS_FIELD_RUBY
|
||||
bl m4aSongNumStart
|
||||
b _08019164
|
||||
_0801915E:
|
||||
movs r0, MUS_FIELD_SAPPHIRE
|
||||
bl m4aSongNumStart
|
||||
_08019164:
|
||||
ldr r3, _08019188 @ =gUnknown_02031520
|
||||
ldr r1, _0801918C @ =gMain+0x74
|
||||
movs r0, #0xcd
|
||||
adds r0, r0, r1
|
||||
mov ip, r0
|
||||
ldrb r0, [r0]
|
||||
movs r2, #0
|
||||
strb r0, [r3, #5]
|
||||
mov r0, ip
|
||||
strb r2, [r0]
|
||||
subs r1, #0x74
|
||||
ldrh r0, [r1, #0x30]
|
||||
adds r0, #1
|
||||
strh r0, [r1, #0x30]
|
||||
pop {r4, r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08019188: .4byte gUnknown_02031520
|
||||
_0801918C: .4byte gMain+0x74
|
||||
|
||||
thumb_func_start sub_19190
|
||||
sub_19190: @ 0x08019190
|
||||
push {r4, r5, lr}
|
||||
ldr r0, _080191A8 @ =gCurrentPinballGame
|
||||
ldr r2, [r0]
|
||||
ldrb r1, [r2, #0x1d]
|
||||
cmp r1, #1
|
||||
beq _080191C0
|
||||
cmp r1, #1
|
||||
bgt _080191AC
|
||||
cmp r1, #0
|
||||
beq _080191B2
|
||||
b _0801927C
|
||||
.align 2, 0
|
||||
_080191A8: .4byte gCurrentPinballGame
|
||||
_080191AC:
|
||||
cmp r1, #2
|
||||
beq _08019274
|
||||
b _0801927C
|
||||
_080191B2:
|
||||
movs r0, #1
|
||||
strb r0, [r2, #0x1d]
|
||||
ldr r0, _080191BC @ =gMain
|
||||
strb r1, [r0, #0xe]
|
||||
b _0801927C
|
||||
.align 2, 0
|
||||
_080191BC: .4byte gMain
|
||||
_080191C0:
|
||||
ldr r0, _080191D0 @ =gMain
|
||||
ldrb r0, [r0, #4]
|
||||
cmp r0, #1
|
||||
bhi _080191D4
|
||||
bl sub_4ACF0
|
||||
b _080191D8
|
||||
.align 2, 0
|
||||
_080191D0: .4byte gMain
|
||||
_080191D4:
|
||||
bl sub_4B000
|
||||
_080191D8:
|
||||
ldr r3, _08019214 @ =gMain
|
||||
ldr r0, [r3, #0x54]
|
||||
ldr r1, _08019218 @ =gUnknown_02031520
|
||||
movs r4, #6
|
||||
ldrsh r2, [r1, r4]
|
||||
adds r1, r0, #0
|
||||
adds r0, #1
|
||||
str r0, [r3, #0x54]
|
||||
cmp r1, r2
|
||||
bls _080191F0
|
||||
movs r0, #1
|
||||
strb r0, [r3, #0xe]
|
||||
_080191F0:
|
||||
ldrb r0, [r3, #0x1c]
|
||||
cmp r0, #0
|
||||
beq _080191FA
|
||||
movs r0, #1
|
||||
strb r0, [r3, #0xe]
|
||||
_080191FA:
|
||||
ldrb r0, [r3, #0xe]
|
||||
cmp r0, #0
|
||||
beq _0801927C
|
||||
ldrb r0, [r3, #4]
|
||||
cmp r0, #1
|
||||
bhi _0801921C
|
||||
bl sub_1D4D0
|
||||
movs r0, #0
|
||||
bl sub_31BE8
|
||||
b _08019224
|
||||
.align 2, 0
|
||||
_08019214: .4byte gMain
|
||||
_08019218: .4byte gUnknown_02031520
|
||||
_0801921C:
|
||||
cmp r0, #3
|
||||
bne _08019224
|
||||
bl sub_356A0
|
||||
_08019224:
|
||||
ldr r4, _0801925C @ =gMain
|
||||
ldrb r1, [r4, #0xf]
|
||||
movs r3, #2
|
||||
adds r0, r3, #0
|
||||
ands r0, r1
|
||||
ldr r2, _08019260 @ =gCurrentPinballGame
|
||||
cmp r0, #0
|
||||
beq _08019248
|
||||
ldr r1, _08019264 @ =0x040000D4
|
||||
ldr r0, [r2]
|
||||
ldr r5, _08019268 @ =0x0000111A
|
||||
adds r0, r0, r5
|
||||
str r0, [r1]
|
||||
ldr r0, _0801926C @ =0x05000200
|
||||
str r0, [r1, #4]
|
||||
ldr r0, _08019270 @ =0x80000100
|
||||
str r0, [r1, #8]
|
||||
ldr r0, [r1, #8]
|
||||
_08019248:
|
||||
ldr r0, [r2]
|
||||
strb r3, [r0, #0x1d]
|
||||
ldrb r0, [r4, #0xe]
|
||||
cmp r0, #2
|
||||
bne _0801927C
|
||||
movs r0, #1
|
||||
bl sub_4B408
|
||||
b _0801927C
|
||||
.align 2, 0
|
||||
_0801925C: .4byte gMain
|
||||
_08019260: .4byte gCurrentPinballGame
|
||||
_08019264: .4byte 0x040000D4
|
||||
_08019268: .4byte 0x0000111A
|
||||
_0801926C: .4byte 0x05000200
|
||||
_08019270: .4byte 0x80000100
|
||||
_08019274:
|
||||
ldr r1, _08019284 @ =gMain
|
||||
ldrb r0, [r1, #3]
|
||||
adds r0, #1
|
||||
strb r0, [r1, #3]
|
||||
_0801927C:
|
||||
pop {r4, r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08019284: .4byte gMain
|
||||
|
||||
thumb_func_start sub_19288
|
||||
sub_19288: @ 0x08019288
|
||||
push {r4, r5, lr}
|
||||
ldr r1, _080192E0 @ =gMain
|
||||
adds r2, r1, #0
|
||||
adds r2, #0x36
|
||||
movs r0, #0
|
||||
strb r0, [r2]
|
||||
ldr r2, _080192E4 @ =gUnknown_02031520
|
||||
ldrb r0, [r2, #5]
|
||||
ldr r4, _080192E8 @ =0x00000141
|
||||
adds r3, r1, r4
|
||||
strb r0, [r3]
|
||||
movs r3, #0
|
||||
adds r5, r1, #7
|
||||
adds r4, r2, #0
|
||||
_080192A4:
|
||||
lsls r0, r3, #0x10
|
||||
asrs r0, r0, #0x10
|
||||
adds r2, r0, r5
|
||||
adds r1, r0, r4
|
||||
ldrb r1, [r1]
|
||||
strb r1, [r2]
|
||||
adds r0, #1
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r3, r0, #0x10
|
||||
asrs r0, r0, #0x10
|
||||
cmp r0, #4
|
||||
ble _080192A4
|
||||
bl sub_02B4
|
||||
bl m4aMPlayAllStop
|
||||
bl sub_0D10
|
||||
ldr r2, _080192E0 @ =gMain
|
||||
ldr r0, _080192E4 @ =gUnknown_02031520
|
||||
movs r3, #6
|
||||
ldrsh r1, [r0, r3]
|
||||
ldr r0, [r2, #0x54]
|
||||
cmp r0, r1
|
||||
bhs _080192EC
|
||||
movs r0, STATE_TITLE
|
||||
bl SetMainGameState
|
||||
b _080192F2
|
||||
.align 2, 0
|
||||
_080192E0: .4byte gMain
|
||||
_080192E4: .4byte gUnknown_02031520
|
||||
_080192E8: .4byte 0x00000141
|
||||
_080192EC:
|
||||
movs r0, STATE_SCORES_IDLE
|
||||
bl SetMainGameState
|
||||
_080192F2:
|
||||
ldr r1, _08019300 @ =gMain
|
||||
movs r0, #0
|
||||
str r0, [r1, #0x54]
|
||||
pop {r4, r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08019300: .4byte gMain
|
||||
|
||||
thumb_func_start sub_19304
|
||||
sub_19304: @ 0x08019304
|
||||
push {lr}
|
||||
ldr r0, _08019318 @ =gMain
|
||||
ldrb r0, [r0, #4]
|
||||
cmp r0, #1
|
||||
bls _08019312
|
||||
bl sub_19734
|
||||
_08019312:
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08019318: .4byte gMain
|
||||
.section .text1931C
|
||||
|
||||
thumb_func_start sub_1931C
|
||||
sub_1931C: @ 0x0801931C
|
||||
|
|
|
|||
|
|
@ -4,11 +4,12 @@
|
|||
#define FIELD_RUBY 0
|
||||
#define FIELD_SAPPHIRE 1
|
||||
#define MAIN_FIELD_COUNT 2
|
||||
#define FIELD_DUSCLOPS (MAIN_FIELD_COUNT + 0)
|
||||
#define FIELD_KECLEON (MAIN_FIELD_COUNT + 1)
|
||||
#define FIELD_KYOGRE (MAIN_FIELD_COUNT + 2)
|
||||
#define FIELD_GROUDON (MAIN_FIELD_COUNT + 3)
|
||||
#define FIELD_RAYQUAZA (MAIN_FIELD_COUNT + 4)
|
||||
#define FIELD_SPHEAL (MAIN_FIELD_COUNT + 5)
|
||||
#define FIELD_BONUS_START 2
|
||||
#define FIELD_DUSCLOPS (FIELD_BONUS_START + 0)
|
||||
#define FIELD_KECLEON (FIELD_BONUS_START + 1)
|
||||
#define FIELD_KYOGRE (FIELD_BONUS_START + 2)
|
||||
#define FIELD_GROUDON (FIELD_BONUS_START + 3)
|
||||
#define FIELD_RAYQUAZA (FIELD_BONUS_START + 4)
|
||||
#define FIELD_SPHEAL (FIELD_BONUS_START + 5)
|
||||
|
||||
#endif // GUARD_CONSTANTS_FIELDS_H
|
||||
|
|
|
|||
|
|
@ -409,15 +409,16 @@ extern void sub_18AE0(u8, u16*, u16*);
|
|||
extern s16 sub_18B50(struct Vector16*, u16*);
|
||||
extern void sub_18DAC(struct Vector16*, u16*, u8*);
|
||||
extern void sub_18F38(u8, u16*, u16*);
|
||||
//extern ? IdlePinballGameMain();
|
||||
//extern ? sub_19048();
|
||||
//extern ? sub_19190();
|
||||
//extern ? sub_19288();
|
||||
extern void IdlePinballGameMain();
|
||||
extern void sub_19048();//gMain.subState = 0
|
||||
extern void sub_19190();//gMain.subState = 1
|
||||
extern void sub_4ABC8();//gMain.subState = 2
|
||||
extern void sub_19288();//gMain.subState = 3
|
||||
//extern ? sub_19304();
|
||||
//extern ? sub_1931C();
|
||||
//extern ? sub_19490();
|
||||
//extern ? sub_195C4();
|
||||
//extern ? sub_19734();
|
||||
extern void sub_19734();
|
||||
//extern ? sub_19894();
|
||||
//extern ? sub_19A20();
|
||||
//extern ? sub_19B10();
|
||||
|
|
@ -447,6 +448,7 @@ extern void sub_1C5AC();
|
|||
//extern ? sub_1C73C();
|
||||
extern void sub_1C7F4(u16, u16);
|
||||
extern void sub_1D128();
|
||||
extern void sub_1D4D0();
|
||||
//extern ? sub_1D5D8();
|
||||
//extern ? sub_1DA74();
|
||||
//extern ? sub_1DAD8();
|
||||
|
|
@ -578,6 +580,7 @@ extern void sub_340EC();
|
|||
extern void sub_34450();
|
||||
extern void sub_350F0();
|
||||
extern void sub_351A8();
|
||||
extern void sub_356A0();
|
||||
//extern ? sub_357B8();
|
||||
//extern ? sub_35860();
|
||||
//extern ? sub_35AA4();
|
||||
|
|
@ -636,8 +639,12 @@ extern void sub_472E4();
|
|||
//extern ? sub_497BC();
|
||||
//extern ? sub_49850();
|
||||
//extern ? sub_49A34();
|
||||
extern void sub_4ACF0();
|
||||
extern void sub_4B000();
|
||||
extern void sub_4B408(s16);
|
||||
//extern ? sub_4CEA8();
|
||||
//extern ? sub_4CEB4();
|
||||
extern void sub_49ED4(void);
|
||||
//extern ? sub_4D3D0();
|
||||
//extern ? sub_4D648();
|
||||
//extern ? sub_4D6C4();
|
||||
|
|
|
|||
|
|
@ -700,7 +700,8 @@
|
|||
#define KEY_OR_INTR 0x0000
|
||||
#define KEY_AND_INTR 0x8000
|
||||
#define DPAD_ANY ((DPAD_RIGHT | DPAD_LEFT | DPAD_UP | DPAD_DOWN))
|
||||
#define JOY_EXCL_DPAD 0x030F
|
||||
#define JOY_EXCL_LR (KEYS_MASK & ~(R_BUTTON | L_BUTTON))
|
||||
#define JOY_EXCL_DPAD (KEYS_MASK & ~(DPAD_ANY))
|
||||
|
||||
// interrupt flags
|
||||
#define INTR_FLAG_VBLANK (1 << 0)
|
||||
|
|
|
|||
|
|
@ -506,7 +506,9 @@ struct Unk02031520_unk10
|
|||
|
||||
struct Unk02031520
|
||||
{
|
||||
/*0x00*/ u8 filler0[0x8];
|
||||
/*0x00*/ u8 eReaderBonuses[NUM_EREADER_CARDS];
|
||||
/*0x05*/ bool8 rumbleEnabled;
|
||||
/*0x06*/ s16 unk6;
|
||||
/*0x08*/ s16 unk8;
|
||||
/*0x0A*/ u8 fillerA[0x2];
|
||||
/*0x0C*/ struct PinballGame *unkC;
|
||||
|
|
@ -530,12 +532,21 @@ struct Unk02031590
|
|||
};
|
||||
|
||||
extern struct PinballGame *gCurrentPinballGame;
|
||||
extern const StateFunc gIdlePinballGameStateFuncs[];
|
||||
extern u32 gUnknown_02031510;
|
||||
extern struct Unk02031520 gUnknown_02031520;
|
||||
extern struct Unk02031590 gUnknown_02031590;
|
||||
extern u16 gUnknown_08137B3C[][6][16];
|
||||
extern const u8 gUnknown_08137E14[][0x20];
|
||||
extern const u8 gUnknown_08138834[0x2000];
|
||||
extern struct Unk02031520_unk10 gUnknown_081450F4;
|
||||
extern struct Unk02031520_unk10 gUnknown_08148934;
|
||||
extern struct Unk02031520_unk10 gUnknown_0814C174;
|
||||
extern struct Unk02031520_unk10 gUnknown_0814F9B4;
|
||||
extern struct PinballGame gUnknown_081531F4;
|
||||
extern struct PinballGame gUnknown_08154618;
|
||||
extern struct PinballGame gUnknown_08155A3C;
|
||||
extern struct PinballGame gUnknown_08156E60;
|
||||
extern s32 gUnknown_081B36A4[64];
|
||||
extern s32 gUnknown_082EE0E0[0x3E0];
|
||||
extern const u16 gUnknown_08391A4C[0x1000];
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ struct Main
|
|||
/*0x48*/ int rngValue;
|
||||
/*0x4C*/ u32 systemFrameCount;
|
||||
/*0x50*/ int fieldFrameCount;
|
||||
/*0x54*/ u8 filler54[0x4];
|
||||
/*0x54*/ u32 unk54;
|
||||
/*0x58*/ u32 unk58;
|
||||
/*0x5C*/ u32 unk5C;
|
||||
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ SECTIONS
|
|||
src/rom_17634.o(.text);
|
||||
asm/rom_11B9C.o(.text176B0);
|
||||
src/rom_18784.o(.text);
|
||||
asm/rom_11B9C.o(.text19028);
|
||||
asm/rom_11B9C.o(.text1931C);
|
||||
src/rom_19B64.o(.text);
|
||||
src/rom_19D04.o(.text);
|
||||
asm/rom_11B9C.o(.text19E10);
|
||||
|
|
|
|||
|
|
@ -599,6 +599,7 @@ void sub_4AAD8(void)
|
|||
sub_11FC();
|
||||
}
|
||||
|
||||
//gMain.subState = 2
|
||||
void sub_4ABC8(void)
|
||||
{
|
||||
sub_111C();
|
||||
|
|
|
|||
149
src/rom_18784.c
149
src/rom_18784.c
|
|
@ -2,6 +2,8 @@
|
|||
#include "variables.h"
|
||||
#include "types.h"
|
||||
#include "main.h"
|
||||
#include "m4a.h"
|
||||
#include "constants/bg_music.h"
|
||||
|
||||
void sub_18784(u8 arg0)
|
||||
{
|
||||
|
|
@ -374,3 +376,150 @@ void sub_18F38(u8 arg0_enum, u16 *arg1, u16 *arg2)
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void IdlePinballGameMain(void)
|
||||
{
|
||||
gIdlePinballGameStateFuncs[gMain.subState]();
|
||||
}
|
||||
|
||||
void sub_19048(void)
|
||||
{
|
||||
s16 i;
|
||||
s16 unk30;
|
||||
s8 unk30LowerBits;
|
||||
|
||||
gMain.unk54 = 0;
|
||||
gMain.unkD = 1;
|
||||
gUnknown_02031510 = 0;
|
||||
|
||||
for (i = 0; i < NUM_EREADER_CARDS; i++)
|
||||
gUnknown_02031520.eReaderBonuses[i] = gMain.eReaderBonuses[i];
|
||||
|
||||
if (gMain.unk30 == 0)
|
||||
gMain.unk30 = (Random() + gMain.systemFrameCount) % 30;
|
||||
|
||||
unk30 = gMain.unk30;
|
||||
unk30LowerBits = unk30 & 3;
|
||||
switch (unk30LowerBits)
|
||||
{
|
||||
case 0:
|
||||
gUnknown_02031520.unk6 = 0xA14;
|
||||
gUnknown_02031520.unk10 = &gUnknown_081450F4;
|
||||
gUnknown_02031520.unkC = &gUnknown_081531F4;
|
||||
break;
|
||||
case 1:
|
||||
gUnknown_02031520.unk6 = 0xF00;
|
||||
gUnknown_02031520.unk10 = &gUnknown_0814F9B4;
|
||||
gUnknown_02031520.unkC = &gUnknown_08156E60;
|
||||
break;
|
||||
case 2:
|
||||
gUnknown_02031520.unk6 = 0xD20;
|
||||
gUnknown_02031520.unk10 = &gUnknown_08148934;
|
||||
gUnknown_02031520.unkC = &gUnknown_08154618;
|
||||
break;
|
||||
case 3:
|
||||
gUnknown_02031520.unk6 = 0xE4C;
|
||||
gUnknown_02031520.unk10 = &gUnknown_0814C174;
|
||||
gUnknown_02031520.unkC = &gUnknown_08155A3C;
|
||||
break;
|
||||
}
|
||||
|
||||
sub_49ED4();
|
||||
|
||||
switch (unk30LowerBits)
|
||||
{
|
||||
case 0:
|
||||
m4aSongNumStart(MUS_FIELD_RUBY);
|
||||
break;
|
||||
case 1:
|
||||
m4aSongNumStart(MUS_FIELD_SAPPHIRE);
|
||||
break;
|
||||
case 2:
|
||||
m4aSongNumStart(MUS_FIELD_RUBY);
|
||||
break;
|
||||
case 3:
|
||||
m4aSongNumStart(MUS_FIELD_SAPPHIRE);
|
||||
break;
|
||||
}
|
||||
|
||||
gUnknown_02031520.rumbleEnabled = gMain_saveData.rumbleEnabled;
|
||||
gMain_saveData.rumbleEnabled = 0;
|
||||
gMain.unk30++;
|
||||
}
|
||||
|
||||
void sub_19190()
|
||||
{
|
||||
u8 unk1D;
|
||||
|
||||
unk1D = gCurrentPinballGame->unk1D;
|
||||
switch (unk1D)
|
||||
{
|
||||
case 0:
|
||||
gCurrentPinballGame->unk1D = 1;
|
||||
gMain.unkE = unk1D;
|
||||
break;
|
||||
case 1:
|
||||
if (gMain.selectedField < MAIN_FIELD_COUNT)
|
||||
sub_4ACF0();
|
||||
else
|
||||
sub_4B000();
|
||||
|
||||
if (gMain.unk54++ > gUnknown_02031520.unk6)
|
||||
gMain.unkE = 1;
|
||||
|
||||
if (gMain.heldKeys & JOY_EXCL_LR)
|
||||
gMain.unkE = 1;
|
||||
|
||||
if (gMain.unkE != 0)
|
||||
{
|
||||
if (gMain.selectedField < MAIN_FIELD_COUNT)
|
||||
{
|
||||
sub_1D4D0();
|
||||
sub_31BE8(0);
|
||||
}
|
||||
else if (gMain.selectedField == FIELD_KECLEON)
|
||||
{
|
||||
sub_356A0();
|
||||
}
|
||||
|
||||
if ((gMain.unkF & 2) != 0)
|
||||
{
|
||||
DmaCopy16(3, gCurrentPinballGame->unk111A, (void *)OBJ_PLTT, OBJ_PLTT_SIZE);
|
||||
}
|
||||
|
||||
gCurrentPinballGame->unk1D = 2;
|
||||
if (gMain.unkE == 2)
|
||||
sub_4B408(1);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
gMain.subState++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_19288(void)
|
||||
{
|
||||
s16 i;
|
||||
|
||||
gMain.unk36 = 0;
|
||||
gMain_saveData.rumbleEnabled = gUnknown_02031520.rumbleEnabled;
|
||||
for (i = 0; i < NUM_EREADER_CARDS; i++)
|
||||
gMain.eReaderBonuses[i] = gUnknown_02031520.eReaderBonuses[i];
|
||||
|
||||
sub_02B4();
|
||||
m4aMPlayAllStop();
|
||||
sub_0D10();
|
||||
if (gMain.unk54 < gUnknown_02031520.unk6)
|
||||
SetMainGameState(STATE_TITLE);
|
||||
else
|
||||
SetMainGameState(STATE_SCORES_IDLE);
|
||||
|
||||
gMain.unk54 = 0;
|
||||
}
|
||||
|
||||
void sub_19304(void)
|
||||
{
|
||||
if (gMain.selectedField >= FIELD_BONUS_START)
|
||||
sub_19734();
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user