diff --git a/asm/rom_11B9C.s b/asm/rom_11B9C.s index dff80e5..c5894f3 100644 --- a/asm/rom_11B9C.s +++ b/asm/rom_11B9C.s @@ -50712,807 +50712,3 @@ _08031488: .4byte 0x80000240 _0803148C: .4byte gOamBuffer _08031490: .4byte 0xFFFFFE00 _08031494: .4byte 0x000001FF - - thumb_func_start sub_31498 -sub_31498: @ 0x08031498 - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - ldr r1, _080314C4 @ =gCurrentPinballGame - ldr r0, [r1] - ldr r2, _080314C8 @ =0x00000346 - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r5, r1, #0 - cmp r0, #6 - bls _080314B8 - b _080319AC -_080314B8: - lsls r0, r0, #2 - ldr r1, _080314CC @ =_080314D0 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080314C4: .4byte gCurrentPinballGame -_080314C8: .4byte 0x00000346 -_080314CC: .4byte _080314D0 -_080314D0: @ jump table - .4byte _080314EC @ case 0 - .4byte _08031610 @ case 1 - .4byte _080319AC @ case 2 - .4byte _080316F4 @ case 3 - .4byte _080317E0 @ case 4 - .4byte _080318A8 @ case 5 - .4byte _08031988 @ case 6 -_080314EC: - ldr r4, [r5] - movs r3, #0xd1 - lsls r3, r3, #2 - adds r0, r4, r3 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - bne _08031500 - b _080319AC -_08031500: - movs r0, #0x13 - ldrsb r0, [r4, r0] - cmp r0, #2 - bgt _080315A4 - ldr r7, _08031528 @ =0x00000345 - adds r1, r4, r7 - ldrb r2, [r1] - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #2 - bgt _08031530 - adds r0, r2, #1 - strb r0, [r1] - ldr r1, [r5] - ldr r0, _0803152C @ =0x00004E20 - str r0, [r1, #0x3c] - movs r0, SE_UNKNOWN_0xDE - bl m4aSongNumStart - b _080315C2 - .align 2, 0 -_08031528: .4byte 0x00000345 -_0803152C: .4byte 0x00004E20 -_08031530: - ldr r2, _08031594 @ =gMain - ldrb r1, [r2, #0xf] - movs r0, #1 - movs r3, #0 - orrs r0, r1 - strb r0, [r2, #0xf] - adds r0, r4, #0 - adds r0, #0xea - movs r2, #0 - strh r3, [r0] - adds r1, r4, #0 - adds r1, #0xec - movs r0, #0xe6 - lsls r0, r0, #2 - strh r0, [r1] - adds r0, r4, #0 - adds r0, #0xe8 - strh r3, [r0] - subs r0, #2 - strh r3, [r0] - adds r0, #8 - strh r3, [r0] - adds r0, #4 - strb r2, [r0] - ldr r0, [r5] - adds r0, #0xfa - movs r1, #1 - strb r1, [r0] - ldr r0, [r5] - adds r0, #0xfb - strb r2, [r0] - ldr r0, [r5] - ldr r2, _08031598 @ =0x00000346 - adds r0, r0, r2 - strb r1, [r0] - ldr r0, [r5] - movs r4, #0xd2 - lsls r4, r4, #2 - adds r0, r0, r4 - strh r3, [r0] - ldr r0, _0803159C @ =gMPlayInfo_BGM - bl m4aMPlayStop - ldr r1, [r5] - ldr r0, _080315A0 @ =0x00030D40 - str r0, [r1, #0x3c] - movs r0, SE_UNKNOWN_0xDF - bl m4aSongNumStart - b _080315C2 - .align 2, 0 -_08031594: .4byte gMain -_08031598: .4byte 0x00000346 -_0803159C: .4byte gMPlayInfo_BGM -_080315A0: .4byte 0x00030D40 -_080315A4: - ldr r7, _080315F4 @ =0x00000345 - adds r1, r4, r7 - ldrb r2, [r1] - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #2 - bgt _080315C2 - adds r0, r2, #1 - strb r0, [r1] - ldr r1, [r5] - ldr r0, _080315F8 @ =0x00004E20 - str r0, [r1, #0x3c] - movs r0, SE_UNKNOWN_0xDE - bl m4aSongNumStart -_080315C2: - ldr r0, _080315FC @ =gCurrentPinballGame - ldr r3, [r0] - ldr r1, _080315F4 @ =0x00000345 - adds r0, r3, r1 - ldr r2, _08031600 @ =0x040000D4 - movs r1, #0 - ldrsb r1, [r0, r1] - lsls r0, r1, #4 - adds r0, r0, r1 - lsls r0, r0, #6 - ldr r1, _08031604 @ =gUnknown_08490A4C - adds r0, r0, r1 - str r0, [r2] - ldr r0, _08031608 @ =0x0600D900 - str r0, [r2, #4] - ldr r0, _0803160C @ =0x80000220 - str r0, [r2, #8] - ldr r0, [r2, #8] - movs r2, #0xd1 - lsls r2, r2, #2 - adds r3, r3, r2 - movs r0, #0 - strb r0, [r3] - b _080319AC - .align 2, 0 -_080315F4: .4byte 0x00000345 -_080315F8: .4byte 0x00004E20 -_080315FC: .4byte gCurrentPinballGame -_08031600: .4byte 0x040000D4 -_08031604: .4byte gUnknown_08490A4C -_08031608: .4byte 0x0600D900 -_0803160C: .4byte 0x80000220 -_08031610: - ldr r0, [r5] - movs r3, #0xd2 - lsls r3, r3, #2 - adds r2, r0, r3 - ldrh r1, [r2] - ldr r0, _08031654 @ =0x0000010D - cmp r1, r0 - bhi _08031668 - adds r0, r1, #0 - movs r1, #0x3c - bl __umodsi3 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - movs r1, #0x1e - bl __udivsi3 - adds r0, #4 - ldr r2, _08031658 @ =0x040000D4 - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - lsls r1, r0, #4 - adds r1, r1, r0 - lsls r1, r1, #6 - ldr r0, _0803165C @ =gUnknown_08490A4C - adds r1, r1, r0 - str r1, [r2] - ldr r0, _08031660 @ =0x0600D900 - str r0, [r2, #4] - ldr r0, _08031664 @ =0x80000220 - str r0, [r2, #8] - ldr r0, [r2, #8] - b _0803168C - .align 2, 0 -_08031654: .4byte 0x0000010D -_08031658: .4byte 0x040000D4 -_0803165C: .4byte gUnknown_08490A4C -_08031660: .4byte 0x0600D900 -_08031664: .4byte 0x80000220 -_08031668: - ldr r1, _080316D8 @ =0x040000D4 - movs r2, #0 - ldr r0, _080316DC @ =gUnknown_08490A4C - str r0, [r1] - ldr r0, _080316E0 @ =0x0600D900 - str r0, [r1, #4] - ldr r0, _080316E4 @ =0x80000220 - str r0, [r1, #8] - ldr r0, [r1, #8] - ldr r0, [r5] - ldr r4, _080316E8 @ =0x00000346 - adds r0, r0, r4 - movs r1, #2 - strb r1, [r0] - ldr r0, [r5] - ldr r7, _080316EC @ =0x00000345 - adds r0, r0, r7 - strb r2, [r0] -_0803168C: - ldr r0, [r5] - movs r4, #0xd2 - lsls r4, r4, #2 - adds r0, r0, r4 - ldrh r0, [r0] - cmp r0, #0x3c - bne _080316CC - movs r0, MUS_EGG_MODE_START - bl m4aSongNumStart - ldr r0, [r5] - movs r1, #0xe5 - lsls r1, r1, #3 - adds r0, r0, r1 - movs r2, #0 - strb r2, [r0] - ldr r0, [r5] - movs r3, #0xf6 - lsls r3, r3, #1 - adds r0, r0, r3 - movs r1, #5 - strb r1, [r0] - ldr r0, [r5] - ldr r7, _080316F0 @ =0x000001ED - adds r1, r0, r7 - movs r0, #0xc - strb r0, [r1] - ldr r0, [r5] - movs r1, #0xf8 - lsls r1, r1, #1 - adds r0, r0, r1 - strh r2, [r0] -_080316CC: - ldr r1, [r5] - adds r1, r1, r4 - ldrh r0, [r1] - adds r0, #1 - strh r0, [r1] - b _080319AC - .align 2, 0 -_080316D8: .4byte 0x040000D4 -_080316DC: .4byte gUnknown_08490A4C -_080316E0: .4byte 0x0600D900 -_080316E4: .4byte 0x80000220 -_080316E8: .4byte 0x00000346 -_080316EC: .4byte 0x00000345 -_080316F0: .4byte 0x000001ED -_080316F4: - ldr r6, _0803171C @ =gUnknown_086AE5A0 - ldr r2, [r5] - ldr r4, _08031720 @ =0x00000345 - adds r3, r2, r4 - movs r0, #0 - ldrsb r0, [r3, r0] - lsls r0, r0, #2 - adds r1, r6, #2 - adds r0, r0, r1 - movs r7, #0 - ldrsh r0, [r0, r7] - movs r1, #0xd2 - lsls r1, r1, #2 - adds r2, r2, r1 - ldrh r1, [r2] - cmp r0, r1 - ble _08031724 - adds r0, r1, #1 - strh r0, [r2] - b _08031784 - .align 2, 0 -_0803171C: .4byte gUnknown_086AE5A0 -_08031720: .4byte 0x00000345 -_08031724: - movs r0, #0 - strh r0, [r2] - ldrb r0, [r3] - adds r0, #1 - strb r0, [r3] - ldr r1, [r5] - ldr r2, _080317A0 @ =0x00000345 - adds r0, r1, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0xa - bne _08031746 - ldr r3, _080317A4 @ =0x00000346 - adds r1, r1, r3 - movs r0, #4 - strb r0, [r1] -_08031746: - ldr r0, [r5] - adds r0, r0, r4 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #6 - bne _0803175A - movs r0, SE_UNKNOWN_0xE0 - bl m4aSongNumStart -_0803175A: - ldr r0, [r5] - adds r0, r0, r4 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - lsls r0, r0, #2 - adds r0, r0, r6 - ldr r2, _080317A8 @ =0x040000D4 - movs r4, #0 - ldrsh r1, [r0, r4] - lsls r0, r1, #4 - adds r0, r0, r1 - lsls r0, r0, #6 - ldr r1, _080317AC @ =gUnknown_08490A4C - adds r0, r0, r1 - str r0, [r2] - ldr r0, _080317B0 @ =0x0600D900 - str r0, [r2, #4] - ldr r0, _080317B4 @ =0x80000220 - str r0, [r2, #8] - ldr r0, [r2, #8] -_08031784: - ldr r1, [r5] - ldr r7, _080317A0 @ =0x00000345 - adds r0, r1, r7 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #5 - bgt _080317B8 - movs r0, #0x80 - lsls r0, r0, #2 - adds r1, r1, r0 - subs r0, #0xe8 - str r0, [r1] - b _080319AC - .align 2, 0 -_080317A0: .4byte 0x00000345 -_080317A4: .4byte 0x00000346 -_080317A8: .4byte 0x040000D4 -_080317AC: .4byte gUnknown_08490A4C -_080317B0: .4byte 0x0600D900 -_080317B4: .4byte 0x80000220 -_080317B8: - movs r2, #0x80 - lsls r2, r2, #2 - adds r3, r1, r2 - ldr r2, [r3] - adds r0, r2, #6 - str r0, [r3] - ldr r4, _080317DC @ =0x00000346 - adds r0, r1, r4 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #4 - beq _080317D4 - b _080319AC -_080317D4: - adds r0, r2, #0 - adds r0, #0x1a - str r0, [r3] - b _080319AC - .align 2, 0 -_080317DC: .4byte 0x00000346 -_080317E0: - ldr r5, _08031894 @ =gCurrentPinballGame - ldr r4, [r5] - ldr r7, _08031898 @ =0x00000343 - adds r0, r4, r7 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - beq _08031882 - movs r1, #0xd1 - lsls r1, r1, #2 - adds r0, r4, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - beq _08031882 - ldr r2, _0803189C @ =gMain - ldrb r1, [r2, #0xf] - movs r0, #1 - movs r3, #0 - orrs r0, r1 - strb r0, [r2, #0xf] - adds r0, r4, #0 - adds r0, #0xea - movs r2, #0 - strh r3, [r0] - adds r1, r4, #0 - adds r1, #0xec - movs r0, #0xa0 - strh r0, [r1] - adds r0, r4, #0 - adds r0, #0xe8 - strh r3, [r0] - subs r0, #2 - strh r3, [r0] - adds r0, #8 - strh r3, [r0] - adds r0, #4 - strb r2, [r0] - ldr r0, [r5] - adds r0, #0xfa - movs r4, #1 - strb r4, [r0] - ldr r0, [r5] - adds r0, #0xfb - strb r2, [r0] - ldr r0, [r5] - ldr r2, _080318A0 @ =0x00000346 - adds r0, r0, r2 - movs r1, #5 - strb r1, [r0] - ldr r0, [r5] - adds r7, #5 - adds r1, r0, r7 - strh r3, [r1] - ldr r1, _080318A4 @ =0x00000345 - adds r0, r0, r1 - movs r1, #0xa - strb r1, [r0] - movs r0, SE_UNKNOWN_0xE0 - bl m4aSongNumStart - ldr r0, [r5] - movs r2, #0xf6 - lsls r2, r2, #1 - adds r0, r0, r2 - strb r4, [r0] - ldr r2, [r5] - movs r3, #0xfa - lsls r3, r3, #1 - adds r1, r2, r3 - movs r0, #0x82 - lsls r0, r0, #4 - strh r0, [r1] - movs r4, #0xfb - lsls r4, r4, #1 - adds r1, r2, r4 - movs r0, #0xf0 - lsls r0, r0, #2 - strh r0, [r1] -_08031882: - ldr r0, _08031894 @ =gCurrentPinballGame - ldr r0, [r0] - movs r7, #0xd1 - lsls r7, r7, #2 - adds r0, r0, r7 - movs r1, #0 - strb r1, [r0] - b _080319AC - .align 2, 0 -_08031894: .4byte gCurrentPinballGame -_08031898: .4byte 0x00000343 -_0803189C: .4byte gMain -_080318A0: .4byte 0x00000346 -_080318A4: .4byte 0x00000345 -_080318A8: - ldr r6, _080318D0 @ =gUnknown_086AE5A0 - ldr r2, [r5] - ldr r4, _080318D4 @ =0x00000345 - adds r3, r2, r4 - movs r0, #0 - ldrsb r0, [r3, r0] - lsls r0, r0, #2 - adds r1, r6, #2 - adds r0, r0, r1 - movs r1, #0 - ldrsh r0, [r0, r1] - movs r7, #0xd2 - lsls r7, r7, #2 - adds r2, r2, r7 - ldrh r1, [r2] - cmp r0, r1 - ble _080318D8 - adds r0, r1, #1 - strh r0, [r2] - b _08031924 - .align 2, 0 -_080318D0: .4byte gUnknown_086AE5A0 -_080318D4: .4byte 0x00000345 -_080318D8: - movs r0, #0 - strh r0, [r2] - ldrb r0, [r3] - adds r0, #1 - strb r0, [r3] - ldr r1, [r5] - ldr r2, _08031968 @ =0x00000345 - adds r0, r1, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0xf - bne _080318FA - ldr r3, _0803196C @ =0x00000346 - adds r1, r1, r3 - movs r0, #6 - strb r0, [r1] -_080318FA: - ldr r0, [r5] - adds r0, r0, r4 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - lsls r0, r0, #2 - adds r0, r0, r6 - ldr r2, _08031970 @ =0x040000D4 - movs r4, #0 - ldrsh r1, [r0, r4] - lsls r0, r1, #4 - adds r0, r0, r1 - lsls r0, r0, #6 - ldr r1, _08031974 @ =gUnknown_08490A4C - adds r0, r0, r1 - str r0, [r2] - ldr r0, _08031978 @ =0x0600D900 - str r0, [r2, #4] - ldr r0, _0803197C @ =0x80000220 - str r0, [r2, #8] - ldr r0, [r2, #8] -_08031924: - ldr r0, _08031980 @ =gCurrentPinballGame - ldr r1, [r0] - ldr r7, _08031968 @ =0x00000345 - adds r0, r1, r7 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0xe - bne _08031948 - movs r2, #0xd2 - lsls r2, r2, #2 - adds r0, r1, r2 - ldrh r0, [r0] - cmp r0, #0xa - bne _08031948 - movs r0, SE_UNKNOWN_0xE1 - bl m4aSongNumStart -_08031948: - ldr r0, _08031980 @ =gCurrentPinballGame - ldr r0, [r0] - movs r3, #0xfb - lsls r3, r3, #1 - adds r1, r0, r3 - ldrh r3, [r1] - movs r4, #0 - ldrsh r0, [r1, r4] - movs r2, #0xaf - lsls r2, r2, #2 - cmp r0, r2 - ble _08031984 - subs r0, r3, #5 - strh r0, [r1] - b _080319AC - .align 2, 0 -_08031968: .4byte 0x00000345 -_0803196C: .4byte 0x00000346 -_08031970: .4byte 0x040000D4 -_08031974: .4byte gUnknown_08490A4C -_08031978: .4byte 0x0600D900 -_0803197C: .4byte 0x80000220 -_08031980: .4byte gCurrentPinballGame -_08031984: - strh r2, [r1] - b _080319AC -_08031988: - ldr r0, [r5] - ldr r7, _080319F8 @ =0x00000345 - adds r0, r0, r7 - movs r2, #0 - strb r2, [r0] - ldr r0, [r5] - movs r3, #0xd2 - lsls r3, r3, #2 - adds r1, r0, r3 - movs r3, #0 - strh r2, [r1] - ldr r4, _080319FC @ =0x00000346 - adds r0, r0, r4 - strb r3, [r0] - ldr r0, [r5] - subs r7, #2 - adds r0, r0, r7 - strb r3, [r0] -_080319AC: - movs r1, #0 - ldr r0, _08031A00 @ =0x040000D4 - mov sb, r0 - ldr r2, _08031A04 @ =gUnknown_086AE554 - mov sl, r2 -_080319B6: - lsls r1, r1, #0x10 - asrs r4, r1, #0x10 - movs r0, #0xb8 - muls r0, r4, r0 - ldr r3, _08031A08 @ =gMain+0x24C0 @gMain.spriteGroups[47] - adds r6, r0, r3 - ldrh r0, [r6] - mov r8, r1 - cmp r0, #0 - bne _080319CC - b _08031AEA -_080319CC: - ldr r5, _08031A0C @ =gCurrentPinballGame - ldr r1, [r5] - ldr r7, _08031A10 @ =0x00000355 - adds r0, r1, r7 - adds r3, r0, r4 - movs r0, #0 - ldrsb r0, [r3, r0] - lsls r0, r0, #2 - ldr r2, _08031A14 @ =gUnknown_086AE58A - adds r0, r0, r2 - movs r7, #0 - ldrsh r2, [r0, r7] - lsls r0, r4, #1 - ldr r7, _08031A18 @ =0x0000035E - adds r1, r1, r7 - adds r1, r1, r0 - ldrh r0, [r1] - cmp r2, r0 - ble _08031A1C - adds r0, #1 - strh r0, [r1] - b _08031A3C - .align 2, 0 -_080319F8: .4byte 0x00000345 -_080319FC: .4byte 0x00000346 -_08031A00: .4byte 0x040000D4 -_08031A04: .4byte gUnknown_086AE554 -_08031A08: .4byte gMain+0x24C0 @gMain.spriteGroups[47] -_08031A0C: .4byte gCurrentPinballGame -_08031A10: .4byte 0x00000355 -_08031A14: .4byte gUnknown_086AE58A -_08031A18: .4byte 0x0000035E -_08031A1C: - movs r2, #0 - strh r2, [r1] - ldrb r0, [r3] - adds r0, #1 - strb r0, [r3] - ldr r0, [r5] - ldr r1, _08031B08 @ =0x00000355 - adds r0, r0, r1 - adds r1, r0, r4 - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #6 - bne _08031A3C - strh r2, [r6] - movs r0, #5 - strb r0, [r1] -_08031A3C: - ldr r2, _08031B0C @ =gCurrentPinballGame - ldr r4, [r2] - mov r7, r8 - asrs r3, r7, #0x10 - ldr r1, _08031B08 @ =0x00000355 - adds r0, r4, r1 - adds r0, r0, r3 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - lsls r0, r0, #2 - ldr r2, _08031B10 @ =gUnknown_086AE588 - adds r0, r0, r2 - movs r7, #0 - ldrsh r0, [r0, r7] - lsls r0, r0, #8 - ldr r1, _08031B14 @ =gUnknown_0845A08C - adds r0, r0, r1 - mov r1, sb - str r0, [r1] - lsls r0, r3, #8 - ldr r2, _08031B18 @ =0x060140A0 - adds r0, r0, r2 - str r0, [r1, #4] - ldr r0, _08031B1C @ =0x80000080 - str r0, [r1, #8] - ldr r0, [r1, #8] - ldr r7, _08031B20 @ =0x00000359 - adds r2, r4, r7 - adds r2, r2, r3 - movs r0, #0 - ldrsb r0, [r2, r0] - lsls r0, r0, #2 - add r0, sl - adds r1, r4, #0 - adds r1, #0x58 - ldrh r0, [r0] - ldrh r1, [r1] - subs r0, r0, r1 - strh r0, [r6, #2] - movs r0, #0 - ldrsb r0, [r2, r0] - lsls r0, r0, #2 - add r0, sl - adds r4, #0x5a - ldrh r0, [r0, #2] - ldrh r1, [r4] - subs r0, r0, r1 - strh r0, [r6, #4] - movs r0, #0 - ldr r7, _08031B24 @ =gOamBuffer - ldr r1, _08031B28 @ =0xFFFFFE00 - mov ip, r1 -_08031AA6: - lsls r3, r0, #0x10 - asrs r3, r3, #0x10 - lsls r5, r3, #3 - adds r5, #8 - adds r5, r6, r5 - ldrh r2, [r5] - lsls r2, r2, #3 - adds r2, r2, r7 - movs r4, #2 - ldrsh r1, [r5, r4] - movs r4, #2 - ldrsh r0, [r6, r4] - adds r1, r1, r0 - ldr r4, _08031B2C @ =0x000001FF - adds r0, r4, #0 - ands r1, r0 - ldrh r4, [r2, #2] - mov r0, ip - ands r0, r4 - orrs r0, r1 - strh r0, [r2, #2] - ldrh r1, [r5] - lsls r1, r1, #3 - adds r1, r1, r7 - ldrb r0, [r6, #4] - ldrb r5, [r5, #4] - adds r0, r0, r5 - strb r0, [r1] - adds r3, #1 - lsls r3, r3, #0x10 - lsrs r0, r3, #0x10 - asrs r3, r3, #0x10 - cmp r3, #2 - ble _08031AA6 -_08031AEA: - movs r0, #0x80 - lsls r0, r0, #9 - add r0, r8 - lsrs r1, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #3 - bgt _08031AFA - b _080319B6 -_08031AFA: - 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 -_08031B08: .4byte 0x00000355 -_08031B0C: .4byte gCurrentPinballGame -_08031B10: .4byte gUnknown_086AE588 -_08031B14: .4byte gUnknown_0845A08C -_08031B18: .4byte 0x060140A0 -_08031B1C: .4byte 0x80000080 -_08031B20: .4byte 0x00000359 -_08031B24: .4byte gOamBuffer -_08031B28: .4byte 0xFFFFFE00 -_08031B2C: .4byte 0x000001FF diff --git a/expected_objs/sub_31498.o b/expected_objs/sub_31498.o deleted file mode 100644 index 78a1624..0000000 Binary files a/expected_objs/sub_31498.o and /dev/null differ diff --git a/include/global.h b/include/global.h index 2980d3b..20e7580 100644 --- a/include/global.h +++ b/include/global.h @@ -268,8 +268,10 @@ struct PinballGame /*0x1F2*/ u8 unk1F2; /*0x1F3*/ u8 unk1F3; /*0x1F4*/ u16 unk1F4; - /*0x1F6*/ u16 unk1F6; - /*0x1F8*/ u8 filler1F8[0xF]; + /*0x1F6*/ s16 unk1F6; + /*0x1F8*/ u8 filler1F8[0x8]; + /*0x200*/ u32 unk200; + /*0x204*/ u8 filler204[0x4]; /*0x208*/ u16 unk208; /*0x20A*/ u8 unk20A; /*0x20B*/ u8 filler20B[0x54]; @@ -338,10 +340,19 @@ struct PinballGame /*0x31E*/ s16 unk31E; /*0x320*/ s16 unk320; /*0x322*/ s16 unk322; - /*0x324*/ u8 filler324[0x21]; + /*0x324*/ u8 filler324[0x1F]; + /*0x343*/ s8 unk343; + /*0x344*/ s8 unk344; /*0x345*/ s8 unk345; /*0x346*/ s8 unk346; - /*0x347*/ u8 filler347[0x23]; + /*0x347*/ u8 filler347[0x1]; + /*0x348*/ u16 unk348; + /*0x34A*/ u8 filler34A[0xB]; + /*0x355*/ s8 unk355[4]; + /*0x359*/ s8 unk359[4]; + /*0x35D*/ u8 filler35D[0x1]; + /*0x35E*/ u16 unk35E[4]; + /*0x366*/ u8 filler366[0x4]; /*0x36A*/ u8 unk36A[2]; /*0x36C*/ u8 unk36C[2]; /*0x36E*/ u16 unk36E[2]; @@ -755,6 +766,6 @@ extern Unk86ACE0C gUnknown_086ACE0C[8]; extern struct Vector16 gUnknown_086ACE60[4]; extern struct Unk086ACE8C gUnknown_086ACE8C[13]; extern u16 gUnknown_086ACEF4[2]; -extern s16 gUnknown_086AE68E[][2]; +extern s16 gUnknown_086AE68E[][2]; -#endif // GUARD_GLOBAL_H +#endif // GUARD_GLOBAL_H \ No newline at end of file diff --git a/src/rom_31BE8.c b/src/rom_31BE8.c index d53d80c..fee5ae3 100644 --- a/src/rom_31BE8.c +++ b/src/rom_31BE8.c @@ -1,7 +1,213 @@ #include "global.h" #include "main.h" #include "gba/gba.h" +#include "m4a.h" #include "constants/fields.h" +#include "constants/bg_music.h" + +extern const u8 gUnknown_0845A08C[][0x100]; +extern const s16 gUnknown_086AE5A0[][2]; +extern const s16 gUnknown_086AE58A[][2]; +extern const s16 gUnknown_086AE588[][2]; +extern const u8 gUnknown_08490A4C[][0x440]; +extern struct Vector16 gUnknown_086AE554[]; + +void sub_31498(void) +{ + s16 i, j; + struct SpriteGroup *group; + struct OamDataSimple *oamSimple; + s16 index; + + switch (gCurrentPinballGame->unk346) + { + case 0: + if (gCurrentPinballGame->unk344) + { + if (gCurrentPinballGame->unk13 < 3) + { + if (gCurrentPinballGame->unk345 < 3) + { + gCurrentPinballGame->unk345 = gCurrentPinballGame->unk345 + 1; + gCurrentPinballGame->unk3C = 20000; + m4aSongNumStart(SE_UNKNOWN_0xDE); + } + else + { + gMain.unkF |= 0x1; + gCurrentPinballGame->unkEA = 0; + gCurrentPinballGame->unkEC = 920; + gCurrentPinballGame->unkE8 = 0; + gCurrentPinballGame->unkE6 = 0; + gCurrentPinballGame->unkEE = 0; + gCurrentPinballGame->unkF2 = 0; + gCurrentPinballGame->unkFA = 1; + gCurrentPinballGame->unkFB = 0; + gCurrentPinballGame->unk346 = 1; + gCurrentPinballGame->unk348 = 0; + m4aMPlayStop(&gMPlayInfo_BGM); + gCurrentPinballGame->unk3C = 200000; + m4aSongNumStart(SE_UNKNOWN_0xDF); + } + } + else + { + if (gCurrentPinballGame->unk345 < 3) + { + gCurrentPinballGame->unk345++; + gCurrentPinballGame->unk3C = 20000; + m4aSongNumStart(SE_UNKNOWN_0xDE); + } + } + + index = gCurrentPinballGame->unk345; + DmaCopy16(3, &gUnknown_08490A4C[index], (void *)0x600D900, 0x440); + gCurrentPinballGame->unk344 = 0; + } + break; + case 1: + if (gCurrentPinballGame->unk348 < 270) + { + index = (gCurrentPinballGame->unk348 % 60) / 30 + 4; + DmaCopy16(3, &gUnknown_08490A4C[index], (void *)0x600D900, 0x440); + } + else + { + index = 0; + DmaCopy16(3, &gUnknown_08490A4C[index], (void *)0x600D900, 0x440); + gCurrentPinballGame->unk346 = 2; + gCurrentPinballGame->unk345 = 0; + } + + if (gCurrentPinballGame->unk348 == 60) + { + m4aSongNumStart(MUS_EGG_MODE_START); + gCurrentPinballGame->unk728 = 0; + gCurrentPinballGame->unk1EC = 5; + gCurrentPinballGame->unk1ED = 12; + gCurrentPinballGame->unk1F0 = 0; + } + + gCurrentPinballGame->unk348++; + break; + case 3: + if (gUnknown_086AE5A0[gCurrentPinballGame->unk345][1] > gCurrentPinballGame->unk348) + { + gCurrentPinballGame->unk348++; + } + else + { + gCurrentPinballGame->unk348 = 0; + gCurrentPinballGame->unk345++; + if (gCurrentPinballGame->unk345 == 10) + gCurrentPinballGame->unk346 = 4; + + if (gCurrentPinballGame->unk345 == 6) + m4aSongNumStart(SE_UNKNOWN_0xE0); + + index = gUnknown_086AE5A0[gCurrentPinballGame->unk345][0]; + DmaCopy16(3, &gUnknown_08490A4C[index], (void *)0x600D900, 0x440); + } + + if (gCurrentPinballGame->unk345 < 6) + { + gCurrentPinballGame->unk200 = 280; + } + else + { + gCurrentPinballGame->unk200 += 6; + if (gCurrentPinballGame->unk346 == 4) + gCurrentPinballGame->unk200 = gCurrentPinballGame->unk200 + 20; + } + break; + case 4: + if (gCurrentPinballGame->unk343 && gCurrentPinballGame->unk344) + { + gMain.unkF |= 0x1; + gCurrentPinballGame->unkEA = 0; + gCurrentPinballGame->unkEC = 160; + gCurrentPinballGame->unkE8 = 0; + gCurrentPinballGame->unkE6 = 0; + gCurrentPinballGame->unkEE = 0; + gCurrentPinballGame->unkF2 = 0; + gCurrentPinballGame->unkFA = 1; + gCurrentPinballGame->unkFB = 0; + gCurrentPinballGame->unk346 = 5; + gCurrentPinballGame->unk348 = 0; + gCurrentPinballGame->unk345 = 10; + m4aSongNumStart(SE_UNKNOWN_0xE0); + gCurrentPinballGame->unk1EC = 1; + gCurrentPinballGame->unk1F4 = 2080; + gCurrentPinballGame->unk1F6 = 960; + } + + gCurrentPinballGame->unk344 = 0; + break; + case 5: + if (gUnknown_086AE5A0[gCurrentPinballGame->unk345][1] > gCurrentPinballGame->unk348) + { + gCurrentPinballGame->unk348++; + } + else + { + gCurrentPinballGame->unk348 = 0; + gCurrentPinballGame->unk345++; + if (gCurrentPinballGame->unk345 == 15) + gCurrentPinballGame->unk346 = 6; + + index = gUnknown_086AE5A0[gCurrentPinballGame->unk345][0]; + DmaCopy16(3, gUnknown_08490A4C[index], (void *)0x600D900, 0x440); + } + + if (gCurrentPinballGame->unk345 == 14 && gCurrentPinballGame->unk348 == 10) + m4aSongNumStart(SE_UNKNOWN_0xE1); + + if (gCurrentPinballGame->unk1F6 > 700) + gCurrentPinballGame->unk1F6 -= 5; + else + gCurrentPinballGame->unk1F6 = 700; + break; + case 6: + gCurrentPinballGame->unk345 = 0; + gCurrentPinballGame->unk348 = 0; + gCurrentPinballGame->unk346 = 0; + gCurrentPinballGame->unk343 = 0; + break; + } + + for (i = 0; i < 4; i++) + { + group = &gMain.spriteGroups[47 + i]; + if (group->available) + { + if (gUnknown_086AE58A[gCurrentPinballGame->unk355[i]][0] > gCurrentPinballGame->unk35E[i]) + { + gCurrentPinballGame->unk35E[i]++; + } + else + { + gCurrentPinballGame->unk35E[i] = 0; + gCurrentPinballGame->unk355[i]++; + if (gCurrentPinballGame->unk355[i] == 6) + { + group->available = 0; + gCurrentPinballGame->unk355[i] = 5; + } + } + + index = gUnknown_086AE588[gCurrentPinballGame->unk355[i]][0]; + DmaCopy16(3, &gUnknown_0845A08C[index], (void *)0x060140a0 + i * 0x100, 0x100); + group->baseX = gUnknown_086AE554[gCurrentPinballGame->unk359[i]].x - gCurrentPinballGame->unk58; + group->baseY = gUnknown_086AE554[gCurrentPinballGame->unk359[i]].y - gCurrentPinballGame->unk5A; + for (j = 0; j < 3; j++) + { + oamSimple = &group->oam[j]; + gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; + gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; + } + } + } +} void sub_31B30(void) {