diff --git a/asm/rom_3219C.s b/asm/rom_3219C.s index 1af8dd9..3ca8bf4 100644 --- a/asm/rom_3219C.s +++ b/asm/rom_3219C.s @@ -24110,348 +24110,3 @@ _08043218: .4byte 0x05000220 _0804321C: .4byte 0x80000010 _08043220: .4byte gUnknown_081B36A4 _08043224: .4byte 0x05000320 - - thumb_func_start sub_43228 -sub_43228: @ 0x08043228 - push {r4, r5, lr} - ldr r1, _08043248 @ =gCurrentPinballGame - ldr r0, [r1] - ldrb r0, [r0, #0x13] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r5, r1, #0 - cmp r0, #5 - bls _0804323C - b _080434BA -_0804323C: - lsls r0, r0, #2 - ldr r1, _0804324C @ =_08043250 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08043248: .4byte gCurrentPinballGame -_0804324C: .4byte _08043250 -_08043250: @ jump table - .4byte _08043268 @ case 0 - .4byte _080432CE @ case 1 - .4byte _08043342 @ case 2 - .4byte _080433D4 @ case 3 - .4byte _08043470 @ case 4 - .4byte _080434A2 @ case 5 -_08043268: - ldr r0, [r5] - ldr r1, _080432B0 @ =0x000005F7 - adds r0, r0, r1 - movs r3, #0 - movs r2, #1 - strb r2, [r0] - ldr r4, [r5] - ldrh r1, [r4, #0x18] - ldr r0, _080432B4 @ =0x00000153 - cmp r1, r0 - bhi _080432C0 - subs r0, #0x13 - cmp r1, r0 - bhi _08043296 - adds r0, r1, #0 - movs r1, #5 - bl __udivsi3 - ldr r2, _080432B8 @ =0x0000FFC0 - adds r0, r0, r2 - adds r1, r4, #0 - adds r1, #0xe6 - strh r0, [r1] -_08043296: - ldr r2, [r5] - ldrh r1, [r2, #0x18] - ldr r0, _080432BC @ =0x00000145 - cmp r1, r0 - bne _080432AA - movs r3, #0xa5 - lsls r3, r3, #2 - adds r1, r2, r3 - movs r0, #2 - strb r0, [r1] -_080432AA: - ldr r1, [r5] - ldrh r0, [r1, #0x18] - b _0804331C - .align 2, 0 -_080432B0: .4byte 0x000005F7 -_080432B4: .4byte 0x00000153 -_080432B8: .4byte 0x0000FFC0 -_080432BC: .4byte 0x00000145 -_080432C0: - adds r0, r4, #0 - adds r0, #0xe6 - strh r3, [r0] - strb r2, [r4, #0x13] - ldr r0, [r5] - strh r3, [r0, #0x18] - b _080434BA -_080432CE: - ldr r1, [r5] - ldr r4, _08043324 @ =0x00000296 - adds r0, r1, r4 - ldrh r4, [r0] - cmp r4, #0 - beq _080432DC - b _080434BA -_080432DC: - movs r0, #0xa5 - lsls r0, r0, #2 - adds r1, r1, r0 - movs r0, #3 - strb r0, [r1] - ldr r0, [r5] - ldrh r0, [r0, #0x18] - cmp r0, #0 - bne _08043314 - bl m4aMPlayAllStop - ldr r0, _08043328 @ =gMPlayInfo_SE1 - ldr r1, _0804332C @ =gUnknown_086A2E90 - bl MPlayStart - ldr r1, _08043330 @ =gMain - movs r0, #0x80 - strb r0, [r1, #0xf] - ldr r0, [r5] - movs r1, #0xe2 - lsls r1, r1, #2 - adds r0, r0, r1 - movs r1, #2 - strb r1, [r0] - ldr r0, [r5] - ldr r2, _08043334 @ =0x00000392 - adds r0, r0, r2 - strh r4, [r0] -_08043314: - ldr r1, [r5] - ldrh r0, [r1, #0x18] - cmp r0, #0x3b - bhi _08043338 -_0804331C: - adds r0, #1 - strh r0, [r1, #0x18] - b _080434BA - .align 2, 0 -_08043324: .4byte 0x00000296 -_08043328: .4byte gMPlayInfo_SE1 -_0804332C: .4byte gUnknown_086A2E90 -_08043330: .4byte gMain -_08043334: .4byte 0x00000392 -_08043338: - movs r0, #2 - strb r0, [r1, #0x13] - ldr r0, [r5] - strh r4, [r0, #0x18] - b _080434BA -_08043342: - ldr r0, [r5] - ldrh r0, [r0, #0x18] - cmp r0, #0 - bne _08043354 - bl m4aMPlayAllStop - movs r0, MUS_SUCCESS3 - bl m4aSongNumStart -_08043354: - ldr r2, [r5] - ldrh r0, [r2, #0x18] - cmp r0, #0x13 - bhi _08043362 - adds r0, #1 - strh r0, [r2, #0x18] - b _080434BA -_08043362: - movs r1, #0 - movs r0, #3 - strb r0, [r2, #0x13] - ldr r0, [r5] - strh r1, [r0, #0x18] - ldr r2, _080433B0 @ =gMain - movs r3, #0x80 - lsls r3, r3, #4 - adds r0, r2, r3 - movs r3, #1 - movs r1, #1 - strh r1, [r0] - ldr r4, _080433B4 @ =0x000008B8 - adds r0, r2, r4 - strh r1, [r0] - adds r4, #0xb8 - adds r0, r2, r4 - strh r1, [r0] - ldr r0, _080433B8 @ =0x00000A28 - adds r2, r2, r0 - strh r1, [r2] - ldr r1, _080433BC @ =0x040000D4 - ldr r0, _080433C0 @ =gUnknown_084B77EC - str r0, [r1] - ldr r0, _080433C4 @ =0x06015800 - str r0, [r1, #4] - ldr r0, _080433C8 @ =0x80000400 - str r0, [r1, #8] - ldr r0, [r1, #8] - ldr r0, [r5] - movs r1, #0xe5 - lsls r1, r1, #2 - adds r2, r0, r1 - ldr r1, _080433CC @ =0x0000FF82 - strh r1, [r2] - ldr r2, _080433D0 @ =0x000005FA - adds r0, r0, r2 - strb r3, [r0] - b _080434BA - .align 2, 0 -_080433B0: .4byte gMain -_080433B4: .4byte 0x000008B8 -_080433B8: .4byte 0x00000A28 -_080433BC: .4byte 0x040000D4 -_080433C0: .4byte gUnknown_084B77EC -_080433C4: .4byte 0x06015800 -_080433C8: .4byte 0x80000400 -_080433CC: .4byte 0x0000FF82 -_080433D0: .4byte 0x000005FA -_080433D4: - bl sub_45E90 - ldr r1, _08043444 @ =gCurrentPinballGame - ldr r2, [r1] - ldrb r0, [r2, #0x1c] - cmp r0, #0 - beq _080433E6 - movs r0, #0xb5 - strh r0, [r2, #0x18] -_080433E6: - ldr r2, [r1] - ldrh r0, [r2, #0x18] - cmp r0, #0xb4 - bne _08043408 - ldr r3, _08043448 @ =0x00000544 - adds r0, r2, r3 - ldr r0, [r0] - cmp r0, #0 - beq _08043408 - movs r0, #1 - strb r0, [r2, #0x1c] - ldr r1, [r1] - ldr r0, _0804344C @ =0x00061A80 - str r0, [r1, #0x38] - adds r0, r1, r3 - ldr r0, [r0] - str r0, [r1, #0x3c] -_08043408: - ldr r0, _08043444 @ =gCurrentPinballGame - ldr r2, [r0] - ldrh r1, [r2, #0x18] - adds r5, r0, #0 - cmp r1, #0xbd - bls _08043426 - ldr r0, _08043450 @ =gMain - ldrh r1, [r0, #0x18] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _08043426 - movs r0, #0x87 - lsls r0, r0, #2 - strh r0, [r2, #0x18] -_08043426: - ldr r1, [r5] - ldrh r2, [r1, #0x18] - ldr r0, _08043454 @ =0x0000021B - cmp r2, r0 - bhi _08043458 - cmp r2, #4 - bne _0804343A - movs r0, SE_UNKNOWN_0xA4 - bl m4aSongNumStart -_0804343A: - ldr r1, [r5] - ldrh r0, [r1, #0x18] - adds r0, #1 - strh r0, [r1, #0x18] - b _08043460 - .align 2, 0 -_08043444: .4byte gCurrentPinballGame -_08043448: .4byte 0x00000544 -_0804344C: .4byte 0x00061A80 -_08043450: .4byte gMain -_08043454: .4byte 0x0000021B -_08043458: - movs r0, #0 - strh r0, [r1, #0x18] - movs r0, #4 - strb r0, [r1, #0x13] -_08043460: - ldr r0, [r5] - ldr r4, _0804346C @ =0x000005FA - adds r0, r0, r4 - movs r1, #1 - b _080434B8 - .align 2, 0 -_0804346C: .4byte 0x000005FA -_08043470: - bl sub_45E90 - ldr r0, _08043494 @ =gCurrentPinballGame - ldr r1, [r0] - ldrh r0, [r1, #0x18] - cmp r0, #0x1d - bhi _08043498 - adds r0, #1 - strh r0, [r1, #0x18] - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - cmp r0, #2 - bne _080434BA - movs r0, SE_UNKNOWN_0xA4 - bl m4aSongNumStart - b _080434BA - .align 2, 0 -_08043494: .4byte gCurrentPinballGame -_08043498: - movs r0, #0 - strh r0, [r1, #0x18] - movs r0, #5 - strb r0, [r1, #0x13] - b _080434BA -_080434A2: - bl sub_45E90 - ldr r2, _080434F4 @ =gCurrentPinballGame - ldr r0, [r2] - ldr r1, _080434F8 @ =0x00000386 - adds r0, r0, r1 - movs r1, #1 - strb r1, [r0] - ldr r0, [r2] - ldr r2, _080434FC @ =0x000005FA - adds r0, r0, r2 -_080434B8: - strb r1, [r0] -_080434BA: - bl sub_4387C - bl sub_43500 - bl sub_44D58 - bl sub_45E08 - ldr r0, _080434F4 @ =gCurrentPinballGame - ldr r1, [r0] - ldr r3, _080434F8 @ =0x00000386 - adds r0, r1, r3 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - beq _080434E8 - ldr r4, _080434FC @ =0x000005FA - adds r1, r1, r4 - movs r0, #1 - strb r0, [r1] - bl sub_350F0 -_080434E8: - bl sub_472E4 - pop {r4, r5} - pop {r0} - bx r0 - .align 2, 0 -_080434F4: .4byte gCurrentPinballGame -_080434F8: .4byte 0x00000386 -_080434FC: .4byte 0x000005FA diff --git a/expected_objs/sub_43228.o b/expected_objs/sub_43228.o deleted file mode 100644 index 4b16523..0000000 Binary files a/expected_objs/sub_43228.o and /dev/null differ diff --git a/expected_objs/sub_43500.o b/expected_objs/sub_43500.o deleted file mode 100644 index e58b3db..0000000 Binary files a/expected_objs/sub_43500.o and /dev/null differ diff --git a/include/functions.h b/include/functions.h index a19309c..57138d6 100644 --- a/include/functions.h +++ b/include/functions.h @@ -615,14 +615,14 @@ extern void sub_3E5D0(void); //extern ? sub_423D8(); //extern ? sub_42E48(); //extern ? sub_43228(); -//extern ? sub_43500(); -//extern ? sub_4387C(); -//extern ? sub_44D58(); +extern void sub_43500(void); +extern void sub_4387C(void); +extern void sub_44D58(void); extern void sub_44F3C(void); extern void sub_45164(void); extern void sub_455D0(void); -//extern ? sub_45E08(); -//extern ? sub_45E90(); +extern void sub_45E08(void); +extern void sub_45E90(void); extern void sub_467F4(void); extern void sub_46FD4(s16); extern void sub_47030(void); diff --git a/src/rom_49A34.c b/src/rom_49A34.c index 499596c..17c095f 100644 --- a/src/rom_49A34.c +++ b/src/rom_49A34.c @@ -101,6 +101,7 @@ extern const u16 gUnknown_086B56D8[][4][3]; extern const u16 gUnknown_086AFAE2[][2]; extern const u16 gUnknown_086AFAE0[][2]; extern const u8 gUnknown_084B47EC[][0x800]; +extern const u8 gUnknown_084B77EC[]; struct Unk_086AFAC0 { @@ -115,6 +116,7 @@ extern struct SongHeader gUnknown_086A2D94; extern struct SongHeader gUnknown_086A2E70; extern struct SongHeader gUnknown_086A2D28; extern struct SongHeader gUnknown_086A2EAC; +extern struct SongHeader gUnknown_086A2E90; extern s16 gUnknown_02030750[]; extern s16 gUnknown_02031500[]; @@ -123,6 +125,141 @@ extern u8 gUnknown_0200FBB0[]; extern u8 gUnknown_020030A0[]; +void sub_43228(void) +{ + switch (gCurrentPinballGame->unk13) + { + case 0: + gCurrentPinballGame->unk5F7 = 1; + if (gCurrentPinballGame->unk18 < 340) + { + if (gCurrentPinballGame->unk18 < 321) + gCurrentPinballGame->unkE6 = (gCurrentPinballGame->unk18 / 5) + 0xFFC0; + + if (gCurrentPinballGame->unk18 == 325) + gCurrentPinballGame->unk294 = 2; + + gCurrentPinballGame->unk18++; + } + else + { + gCurrentPinballGame->unkE6 = 0; + gCurrentPinballGame->unk13 = 1; + gCurrentPinballGame->unk18 = 0; + } + break; + case 1: + if (gCurrentPinballGame->eventTimer == 0) + { + gCurrentPinballGame->unk294 = 3; + if (gCurrentPinballGame->unk18 == 0) + { + m4aMPlayAllStop(); + MPlayStart(&gMPlayInfo_SE1, &gUnknown_086A2E90); + gMain.unkF = 0x80; + gCurrentPinballGame->unk388 = 2; + gCurrentPinballGame->unk392 = 0; + } + + if (gCurrentPinballGame->unk18 < 60) + { + gCurrentPinballGame->unk18++; + } + else + { + gCurrentPinballGame->unk13 = 2; + gCurrentPinballGame->unk18 = 0; + } + } + break; + case 2: + if (gCurrentPinballGame->unk18 == 0) + { + m4aMPlayAllStop(); + m4aSongNumStart(MUS_SUCCESS3); + } + + if (gCurrentPinballGame->unk18 < 20) + { + gCurrentPinballGame->unk18++; + } + else + { + gCurrentPinballGame->unk13 = 3; + gCurrentPinballGame->unk18 = 0; + gMain.spriteGroups[7].available = 1; + gMain.spriteGroups[8].available = 1; + gMain.spriteGroups[9].available = 1; + gMain.spriteGroups[10].available = 1; + DmaCopy16(3, gUnknown_084B77EC, (void *)0x06015800, 0x800); + gCurrentPinballGame->unk394 = -126; + gCurrentPinballGame->unk5FA = 1; + } + break; + case 3: + sub_45E90(); + if (gCurrentPinballGame->unk1C) + gCurrentPinballGame->unk18 = 181; + + if (gCurrentPinballGame->unk18 == 180 && gCurrentPinballGame->unk544 != 0) + { + gCurrentPinballGame->unk1C = 1; + gCurrentPinballGame->unk38 = 400000; + gCurrentPinballGame->unk3C = gCurrentPinballGame->unk544; + } + + if (gCurrentPinballGame->unk18 > 189 && JOY_NEW(A_BUTTON)) + gCurrentPinballGame->unk18 = 540; + + if (gCurrentPinballGame->unk18 < 540) + { + if (gCurrentPinballGame->unk18 == 4) + m4aSongNumStart(SE_UNKNOWN_0xA4); + + gCurrentPinballGame->unk18++; + } + else + { + gCurrentPinballGame->unk18 = 0; + gCurrentPinballGame->unk13 = 4; + } + + gCurrentPinballGame->unk5FA = 1; + break; + case 4: + sub_45E90(); + if (gCurrentPinballGame->unk18 < 30) + { + gCurrentPinballGame->unk18++; + if (gCurrentPinballGame->unk18 == 2) + m4aSongNumStart(SE_UNKNOWN_0xA4); + } + else + { + gCurrentPinballGame->unk18 = 0; + gCurrentPinballGame->unk13 = 5; + } + break; + case 5: + sub_45E90(); + gCurrentPinballGame->unk386 = 1; + gCurrentPinballGame->unk5FA = 1; + break; + } + + sub_4387C(); + sub_43500(); + sub_44D58(); + sub_45E08(); + if (gCurrentPinballGame->unk386) + { + gCurrentPinballGame->unk5FA = 1; + sub_350F0(); + } + + sub_472E4(); +} + void sub_43500(void) { s16 i;