diff --git a/asm/rom_2E6AC.s b/asm/rom_2E6AC.s index 60f124f..0ffe5ff 100644 --- a/asm/rom_2E6AC.s +++ b/asm/rom_2E6AC.s @@ -6,666 +6,6 @@ .text - thumb_func_start sub_2F79C -sub_2F79C: @ 0x0802F79C - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - movs r1, #0 - ldr r0, _0802F7D0 @ =gCurrentPinballGame - mov r8, r0 -_0802F7A8: - mov r2, r8 - ldr r0, [r2] - lsls r2, r1, #0x10 - asrs r1, r2, #0x10 - ldr r3, _0802F7D4 @ =0x0000036A - adds r0, r0, r3 - adds r0, r0, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r6, r2, #0 - cmp r0, #5 - bls _0802F7C4 - b _0802FB26 -_0802F7C4: - lsls r0, r0, #2 - ldr r1, _0802F7D8 @ =_0802F7DC - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0802F7D0: .4byte gCurrentPinballGame -_0802F7D4: .4byte 0x0000036A -_0802F7D8: .4byte _0802F7DC -_0802F7DC: @ jump table - .4byte _0802F7F4 @ case 0 - .4byte _0802F87E @ case 1 - .4byte _0802F944 @ case 2 - .4byte _0802F9E4 @ case 3 - .4byte _0802FA28 @ case 4 - .4byte _0802FAA2 @ case 5 -_0802F7F4: - ldr r1, _0802F828 @ =gUnknown_086AE4FC - mov r4, r8 - ldr r2, [r4] - asrs r4, r6, #0x10 - movs r5, #0xdb - lsls r5, r5, #2 - adds r0, r2, r5 - adds r3, r0, r4 - movs r0, #0 - ldrsb r0, [r3, r0] - lsls r0, r0, #2 - adds r1, #2 - adds r0, r0, r1 - movs r1, #0 - ldrsh r0, [r0, r1] - lsls r5, r4, #1 - ldr r1, _0802F82C @ =0x0000036E - adds r2, r2, r1 - adds r2, r2, r5 - ldrh r1, [r2] - cmp r0, r1 - ble _0802F830 - adds r0, r1, #1 - strh r0, [r2] - b _0802F858 - .align 2, 0 -_0802F828: .4byte gUnknown_086AE4FC -_0802F82C: .4byte 0x0000036E -_0802F830: - ldrb r0, [r3] - adds r0, #1 - movs r2, #0 - strb r0, [r3] - mov r3, r8 - ldr r1, [r3] - ldr r3, _0802F870 @ =0x0000036E - adds r0, r1, r3 - adds r0, r0, r5 - movs r3, #0 - strh r2, [r0] - movs r5, #0xdb - lsls r5, r5, #2 - adds r1, r1, r5 - adds r1, r1, r4 - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #3 - ble _0802F858 - strb r3, [r1] -_0802F858: - mov r1, r8 - ldr r0, [r1] - asrs r1, r6, #0xf - ldr r2, _0802F874 @ =0x00000372 - adds r0, r0, r2 - adds r1, r0, r1 - ldrh r0, [r1] - cmp r0, #0x97 - bhi _0802F878 - adds r0, #1 - strh r0, [r1] - b _0802FB26 - .align 2, 0 -_0802F870: .4byte 0x0000036E -_0802F874: .4byte 0x00000372 -_0802F878: - movs r0, #0 - strh r0, [r1] - b _0802FB26 -_0802F87E: - ldr r2, _0802F8B0 @ =gUnknown_086AE4FC - ldr r7, _0802F8B4 @ =gCurrentPinballGame - ldr r1, [r7] - asrs r4, r6, #0x10 - movs r3, #0xdb - lsls r3, r3, #2 - adds r0, r1, r3 - adds r3, r0, r4 - movs r0, #0 - ldrsb r0, [r3, r0] - lsls r0, r0, #2 - adds r2, #2 - adds r0, r0, r2 - movs r5, #0 - ldrsh r0, [r0, r5] - lsls r5, r4, #1 - ldr r2, _0802F8B8 @ =0x0000036E - adds r1, r1, r2 - adds r1, r1, r5 - ldrh r2, [r1] - cmp r0, r2 - ble _0802F8BC - adds r0, r2, #1 - strh r0, [r1] - b _0802F8EC - .align 2, 0 -_0802F8B0: .4byte gUnknown_086AE4FC -_0802F8B4: .4byte gCurrentPinballGame -_0802F8B8: .4byte 0x0000036E -_0802F8BC: - ldrb r0, [r3] - adds r0, #1 - movs r2, #0 - strb r0, [r3] - ldr r1, [r7] - ldr r3, _0802F938 @ =0x0000036E - adds r0, r1, r3 - adds r0, r0, r5 - strh r2, [r0] - movs r5, #0xdb - lsls r5, r5, #2 - adds r1, r1, r5 - adds r1, r1, r4 - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #5 - bne _0802F8EC - movs r0, 0xE6 @=SE_UNKNOWN_0xE6 - bl m4aSongNumStart - ldr r1, [r7] - movs r0, #0xfa - lsls r0, r0, #3 - str r0, [r1, #0x3c] -_0802F8EC: - ldr r0, _0802F93C @ =gCurrentPinballGame - ldr r3, [r0] - asrs r2, r6, #0x10 - movs r4, #0xdb - lsls r4, r4, #2 - adds r1, r3, r4 - adds r5, r1, r2 - movs r1, #0 - ldrsb r1, [r5, r1] - mov r8, r0 - cmp r1, #6 - beq _0802F906 - b _0802FB16 -_0802F906: - ldr r1, _0802F940 @ =0x00000376 - adds r0, r3, r1 - ldrh r0, [r0] - cmp r0, #0 - beq _0802F926 - cmp r0, #1 - bne _0802F926 - movs r0, #7 - strb r0, [r5] - mov r3, r8 - ldr r0, [r3] - subs r4, #2 - adds r0, r0, r4 - adds r0, r0, r2 - movs r1, #2 - strb r1, [r0] -_0802F926: - mov r5, r8 - ldr r0, [r5] - asrs r1, r6, #0xf - ldr r2, _0802F938 @ =0x0000036E - adds r0, r0, r2 - adds r0, r0, r1 - movs r1, #0 - strh r1, [r0] - b _0802FB16 - .align 2, 0 -_0802F938: .4byte 0x0000036E -_0802F93C: .4byte gCurrentPinballGame -_0802F940: .4byte 0x00000376 -_0802F944: - ldr r1, _0802F978 @ =gUnknown_086AE4FC - mov r5, r8 - ldr r2, [r5] - asrs r5, r6, #0x10 - movs r7, #0xdb - lsls r7, r7, #2 - adds r0, r2, r7 - adds r3, r0, r5 - movs r0, #0 - ldrsb r0, [r3, r0] - lsls r0, r0, #2 - adds r1, #2 - adds r0, r0, r1 - movs r1, #0 - ldrsh r0, [r0, r1] - lsls r4, r5, #1 - ldr r1, _0802F97C @ =0x0000036E - adds r2, r2, r1 - adds r2, r2, r4 - ldrh r1, [r2] - cmp r0, r1 - ble _0802F980 - adds r0, r1, #1 - strh r0, [r2] - b _0802F9CA - .align 2, 0 -_0802F978: .4byte gUnknown_086AE4FC -_0802F97C: .4byte 0x0000036E -_0802F980: - ldrb r0, [r3] - adds r0, #1 - movs r2, #0 - strb r0, [r3] - mov r3, r8 - ldr r1, [r3] - ldr r3, _0802F9D8 @ =0x0000036E - adds r0, r1, r3 - adds r0, r0, r4 - movs r4, #0 - strh r2, [r0] - movs r0, #0xdb - lsls r0, r0, #2 - adds r1, r1, r0 - adds r1, r1, r5 - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #8 - bne _0802F9AC - movs r0, 0xE7 @=SE_UNKNOWN_0xE7 - bl m4aSongNumStart -_0802F9AC: - mov r1, r8 - ldr r0, [r1] - adds r0, r0, r7 - adds r1, r0, r5 - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #8 - ble _0802F9CA - strb r4, [r1] - mov r2, r8 - ldr r0, [r2] - ldr r3, _0802F9DC @ =0x0000036A - adds r0, r0, r3 - adds r0, r0, r5 - strb r4, [r0] -_0802F9CA: - mov r4, r8 - ldr r0, [r4] - asrs r1, r6, #0xf - ldr r5, _0802F9E0 @ =0x00000372 - adds r0, r0, r5 - b _0802FB20 - .align 2, 0 -_0802F9D8: .4byte 0x0000036E -_0802F9DC: .4byte 0x0000036A -_0802F9E0: .4byte 0x00000372 -_0802F9E4: - mov r0, r8 - ldr r1, [r0] - asrs r2, r6, #0x10 - movs r3, #0xdb - lsls r3, r3, #2 - adds r1, r1, r3 - adds r1, r1, r2 - movs r4, #0 - movs r0, #9 - strb r0, [r1] - mov r5, r8 - ldr r1, [r5] - lsls r3, r2, #1 - ldr r5, _0802FA1C @ =0x0000036E - adds r0, r1, r5 - adds r0, r0, r3 - strh r4, [r0] - ldr r0, _0802FA20 @ =0x0000036A - adds r1, r1, r0 - adds r1, r1, r2 - movs r0, #4 - strb r0, [r1] - mov r1, r8 - ldr r0, [r1] - ldr r2, _0802FA24 @ =0x00000372 - adds r0, r0, r2 - adds r0, r0, r3 - b _0802FB22 - .align 2, 0 -_0802FA1C: .4byte 0x0000036E -_0802FA20: .4byte 0x0000036A -_0802FA24: .4byte 0x00000372 -_0802FA28: - ldr r1, _0802FA90 @ =gUnknown_086AE4FC - mov r3, r8 - ldr r2, [r3] - asrs r5, r6, #0x10 - movs r4, #0xdb - lsls r4, r4, #2 - adds r0, r2, r4 - adds r3, r0, r5 - movs r0, #0 - ldrsb r0, [r3, r0] - lsls r0, r0, #2 - adds r1, #2 - adds r0, r0, r1 - movs r1, #0 - ldrsh r0, [r0, r1] - lsls r4, r5, #1 - ldr r1, _0802FA94 @ =0x0000036E - adds r2, r2, r1 - adds r2, r2, r4 - ldrh r1, [r2] - cmp r0, r1 - bgt _0802FACE - ldrb r0, [r3] - adds r0, #1 - movs r1, #0 - strb r0, [r3] - mov r3, r8 - ldr r2, [r3] - ldr r3, _0802FA94 @ =0x0000036E - adds r0, r2, r3 - adds r0, r0, r4 - movs r3, #0 - strh r1, [r0] - movs r4, #0xdb - lsls r4, r4, #2 - adds r0, r2, r4 - adds r1, r0, r5 - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #0x11 - ble _0802FB16 - movs r0, #0x13 - ldrsb r0, [r2, r0] - cmp r0, #6 - bne _0802FA9C - strb r3, [r1] - mov r1, r8 - ldr r0, [r1] - ldr r2, _0802FA98 @ =0x0000036A - adds r0, r0, r2 - adds r0, r0, r5 - b _0802FB14 - .align 2, 0 -_0802FA90: .4byte gUnknown_086AE4FC -_0802FA94: .4byte 0x0000036E -_0802FA98: .4byte 0x0000036A -_0802FA9C: - movs r0, #9 - strb r0, [r1] - b _0802FB16 -_0802FAA2: - ldr r1, _0802FAD4 @ =gUnknown_086AE4FC - mov r5, r8 - ldr r2, [r5] - asrs r4, r6, #0x10 - movs r7, #0xdb - lsls r7, r7, #2 - adds r0, r2, r7 - adds r3, r0, r4 - movs r0, #0 - ldrsb r0, [r3, r0] - lsls r0, r0, #2 - adds r1, #2 - adds r0, r0, r1 - movs r1, #0 - ldrsh r0, [r0, r1] - lsls r5, r4, #1 - ldr r1, _0802FAD8 @ =0x0000036E - adds r2, r2, r1 - adds r2, r2, r5 - ldrh r1, [r2] - cmp r0, r1 - ble _0802FADC -_0802FACE: - adds r0, r1, #1 - strh r0, [r2] - b _0802FB16 - .align 2, 0 -_0802FAD4: .4byte gUnknown_086AE4FC -_0802FAD8: .4byte 0x0000036E -_0802FADC: - ldrb r0, [r3] - adds r0, #1 - movs r1, #0 - strb r0, [r3] - mov r3, r8 - ldr r2, [r3] - ldr r3, _0802FC24 @ =0x0000036E - adds r0, r2, r3 - adds r0, r0, r5 - movs r3, #0 - strh r1, [r0] - movs r5, #0xdb - lsls r5, r5, #2 - adds r0, r2, r5 - adds r0, r0, r4 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0x11 - ble _0802FB16 - ldr r1, _0802FC28 @ =0x0000036A - adds r0, r2, r1 - adds r0, r0, r4 - strb r3, [r0] - mov r2, r8 - ldr r0, [r2] - adds r0, r0, r7 - adds r0, r0, r4 -_0802FB14: - strb r3, [r0] -_0802FB16: - mov r3, r8 - ldr r0, [r3] - asrs r1, r6, #0xf - ldr r4, _0802FC2C @ =0x00000372 - adds r0, r0, r4 -_0802FB20: - adds r0, r0, r1 -_0802FB22: - movs r1, #0x14 - strh r1, [r0] -_0802FB26: - movs r5, #0x80 - lsls r5, r5, #9 - adds r0, r6, r5 - lsrs r1, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #1 - bgt _0802FB36 - b _0802F7A8 -_0802FB36: - mov r0, r8 - ldr r1, [r0] - adds r0, r1, #0 - adds r0, #0x25 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #3 - beq _0802FB56 - ldr r2, _0802FC30 @ =0x00000376 - adds r1, r1, r2 - ldrh r0, [r1] - cmp r0, #0 - beq _0802FB56 - subs r0, #1 - strh r0, [r1] -_0802FB56: - mov r3, r8 - ldr r2, [r3] - ldr r4, _0802FC34 @ =0x00001328 - adds r1, r2, r4 - ldrh r0, [r1] - cmp r0, #0 - beq _0802FB78 - subs r0, #1 - strh r0, [r1] - lsls r0, r0, #0x10 - cmp r0, #0 - bne _0802FB78 - ldr r5, _0802FC38 @ =0x00001330 - adds r1, r2, r5 - ldr r3, _0802FC3C @ =0x00001334 - adds r0, r2, r3 - str r0, [r1] -_0802FB78: - mov r4, r8 - ldr r0, [r4] - movs r6, #0xda - lsls r6, r6, #2 - adds r0, r0, r6 - ldrh r0, [r0] - cmp r0, #0 - beq _0802FBCE - cmp r0, #0x11 - bne _0802FB9E - movs r0, 0xE8 @=SE_UNKNOWN_0xE8 - bl m4aSongNumStart - ldr r1, [r4] - movs r0, #0xa - str r0, [r1, #0x3c] - movs r0, #0xd - bl sub_11B0 -_0802FB9E: - ldr r5, _0802FC40 @ =gUnknown_08137CD6 - mov r0, r8 - ldr r4, [r0] - adds r4, r4, r6 - ldrh r0, [r4] - movs r1, #3 - bl __udivsi3 - lsls r0, r0, #0x10 - lsrs r0, r0, #0xf - adds r0, r0, r5 - movs r1, #0 - ldrsh r2, [r0, r1] - ldr r3, _0802FC44 @ =0x0400004C - lsls r0, r2, #0xc - lsls r1, r2, #8 - orrs r0, r1 - lsls r1, r2, #4 - orrs r0, r1 - orrs r0, r2 - strh r0, [r3] - ldrh r0, [r4] - subs r0, #1 - strh r0, [r4] -_0802FBCE: - mov r3, r8 - ldr r1, [r3] - movs r0, #0x13 - ldrsb r0, [r1, r0] - cmp r0, #2 - ble _0802FC48 - cmp r0, #6 - beq _0802FCB8 - movs r1, #0 - movs r3, #0 -_0802FBE2: - mov r2, r8 - ldr r0, [r2] - lsls r1, r1, #0x10 - asrs r2, r1, #0x10 - ldr r4, _0802FC28 @ =0x0000036A - adds r0, r0, r4 - adds r1, r0, r2 - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #0 - beq _0802FC14 - strb r3, [r1] - mov r5, r8 - ldr r0, [r5] - movs r1, #0xdb - lsls r1, r1, #2 - adds r0, r0, r1 - adds r0, r0, r2 - strb r3, [r0] - ldr r0, [r5] - lsls r1, r2, #1 - adds r4, #4 - adds r0, r0, r4 - adds r0, r0, r1 - strh r3, [r0] -_0802FC14: - adds r0, r2, #1 - lsls r0, r0, #0x10 - lsrs r1, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #1 - ble _0802FBE2 - b _0802FCB8 - .align 2, 0 -_0802FC24: .4byte 0x0000036E -_0802FC28: .4byte 0x0000036A -_0802FC2C: .4byte 0x00000372 -_0802FC30: .4byte 0x00000376 -_0802FC34: .4byte 0x00001328 -_0802FC38: .4byte 0x00001330 -_0802FC3C: .4byte 0x00001334 -_0802FC40: .4byte gUnknown_08137CD6 -_0802FC44: .4byte 0x0400004C -_0802FC48: - ldr r5, _0802FC7C @ =0x0000072E - adds r0, r1, r5 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #2 - ble _0802FC8C - ldr r2, _0802FC80 @ =0x00000281 - adds r0, r1, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - ble _0802FCB8 - ldr r4, _0802FC84 @ =0x0000036A - adds r2, r1, r4 - movs r0, #0 - ldrsb r0, [r2, r0] - cmp r0, #2 - bgt _0802FCB8 - movs r1, #3 - strb r1, [r2] - ldr r0, [r3] - ldr r5, _0802FC88 @ =0x0000036B - b _0802FCB4 - .align 2, 0 -_0802FC7C: .4byte 0x0000072E -_0802FC80: .4byte 0x00000281 -_0802FC84: .4byte 0x0000036A -_0802FC88: .4byte 0x0000036B -_0802FC8C: - ldr r0, _0802FCC4 @ =0x0000036A - adds r2, r1, r0 - movs r0, #0 - ldrsb r0, [r2, r0] - cmp r0, #2 - ble _0802FCB8 - movs r1, #0 - strb r1, [r2] - mov r2, r8 - ldr r0, [r2] - movs r3, #0xdb - lsls r3, r3, #2 - adds r0, r0, r3 - strb r1, [r0] - ldr r0, [r2] - ldr r4, _0802FCC8 @ =0x0000036B - adds r0, r0, r4 - strb r1, [r0] - ldr r0, [r2] - ldr r5, _0802FCCC @ =0x0000036D -_0802FCB4: - adds r0, r0, r5 - strb r1, [r0] -_0802FCB8: - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - .align 2, 0 -_0802FCC4: .4byte 0x0000036A -_0802FCC8: .4byte 0x0000036B -_0802FCCC: .4byte 0x0000036D - thumb_func_start sub_2FCD0 sub_2FCD0: @ 0x0802FCD0 push {r4, r5, r6, r7, lr} diff --git a/expected_objs/sub_2F79C.o b/expected_objs/sub_2F79C.o deleted file mode 100644 index 660e29e..0000000 Binary files a/expected_objs/sub_2F79C.o and /dev/null differ diff --git a/include/global.h b/include/global.h index 486ec66..5eb29d5 100644 --- a/include/global.h +++ b/include/global.h @@ -416,11 +416,12 @@ struct PinballGame /*0x35D*/ u8 filler35D[0x1]; /*0x35E*/ u16 unk35E[4]; /*0x366*/ s8 unk366; - /*0x367*/ u8 filler367[0x3]; - /*0x36A*/ u8 unk36A[2]; - /*0x36C*/ u8 unk36C[2]; + /*0x367*/ u8 filler367[0x1]; + /*0x368*/ u16 unk368; + /*0x36A*/ s8 unk36A[2]; + /*0x36C*/ s8 unk36C[2]; /*0x36E*/ u16 unk36E[2]; - /*0x372*/ u8 filler372[0x4]; + /*0x372*/ u16 unk372[2]; /*0x376*/ u16 unk376; /*0x378*/ s8 unk378; /*0x379*/ s8 unk379; diff --git a/src/rom_2E67C.c b/src/rom_2E67C.c index 3b42382..5c42ce4 100644 --- a/src/rom_2E67C.c +++ b/src/rom_2E67C.c @@ -17,6 +17,8 @@ extern const u8 gUnknown_08512C4C[][0x380]; extern const u16 gUnknown_086B3CA4[][3][3]; extern const u16 gUnknown_086B3B7E[][7][3]; extern const u8 gUnknown_084ED6CC[][0x200]; +extern const s16 gUnknown_086AE4FC[][2]; +extern const s16 gUnknown_08137CD6[]; extern struct SongHeader gUnknown_086A11A4; @@ -514,3 +516,200 @@ void sub_2F504(void) gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; } } + +void sub_2F79C(void) +{ + s16 i; + u32 mosaicVal; + + for (i = 0; i < 2; i++) + { + switch (gCurrentPinballGame->unk36A[i]) + { + case 0: + if (gUnknown_086AE4FC[gCurrentPinballGame->unk36C[i]][1] > gCurrentPinballGame->unk36E[i]) + { + gCurrentPinballGame->unk36E[i]++; + } + else + { + gCurrentPinballGame->unk36C[i]++; + gCurrentPinballGame->unk36E[i] = 0; + if (gCurrentPinballGame->unk36C[i] > 3) + gCurrentPinballGame->unk36C[i] = 0; + } + + if (gCurrentPinballGame->unk372[i] < 152) + gCurrentPinballGame->unk372[i]++; + else + gCurrentPinballGame->unk372[i] = 0; + break; + case 1: + if (gUnknown_086AE4FC[gCurrentPinballGame->unk36C[i]][1] > gCurrentPinballGame->unk36E[i]) + { + gCurrentPinballGame->unk36E[i]++; + } + else + { + gCurrentPinballGame->unk36C[i]++; + gCurrentPinballGame->unk36E[i] = 0; + if (gCurrentPinballGame->unk36C[i] == 5) + { + m4aSongNumStart(SE_UNKNOWN_0xE6); + gCurrentPinballGame->unk3C = 2000; + } + } + + if (gCurrentPinballGame->unk36C[i] == 6) + { + if (gCurrentPinballGame->unk376) + { + if (gCurrentPinballGame->unk376 == 1) + { + gCurrentPinballGame->unk36C[i] = 7; + gCurrentPinballGame->unk36A[i] = 2; + } + } + + gCurrentPinballGame->unk36E[i] = 0; + } + + gCurrentPinballGame->unk372[i] = 20; + break; + case 2: + if (gUnknown_086AE4FC[gCurrentPinballGame->unk36C[i]][1] > gCurrentPinballGame->unk36E[i]) + { + gCurrentPinballGame->unk36E[i]++; + } + else + { + gCurrentPinballGame->unk36C[i]++; + gCurrentPinballGame->unk36E[i] = 0; + if (gCurrentPinballGame->unk36C[i] == 8) + m4aSongNumStart(SE_UNKNOWN_0xE7); + + if (gCurrentPinballGame->unk36C[i] > 8) + { + gCurrentPinballGame->unk36C[i] = 0; + gCurrentPinballGame->unk36A[i] = 0; + } + } + + gCurrentPinballGame->unk372[i] = 20; + break; + case 3: + gCurrentPinballGame->unk36C[i] = 9; + gCurrentPinballGame->unk36E[i] = 0; + gCurrentPinballGame->unk36A[i] = 4; + gCurrentPinballGame->unk372[i] = 20; + break; + case 4: + if (gUnknown_086AE4FC[gCurrentPinballGame->unk36C[i]][1] > gCurrentPinballGame->unk36E[i]) + { + gCurrentPinballGame->unk36E[i]++; + } + else + { + gCurrentPinballGame->unk36C[i]++; + gCurrentPinballGame->unk36E[i] = 0; + if (gCurrentPinballGame->unk36C[i] > 17) + { + if (gCurrentPinballGame->unk13 == 6) + { + gCurrentPinballGame->unk36C[i] = 0; + gCurrentPinballGame->unk36A[i] = 0; + } + else + { + gCurrentPinballGame->unk36C[i] = 9; + } + } + } + + gCurrentPinballGame->unk372[i] = 20; + break; + case 5: + if (gUnknown_086AE4FC[gCurrentPinballGame->unk36C[i]][1] > gCurrentPinballGame->unk36E[i]) + { + gCurrentPinballGame->unk36E[i]++; + } + else + { + gCurrentPinballGame->unk36C[i]++; + gCurrentPinballGame->unk36E[i] = 0; + if (gCurrentPinballGame->unk36C[i] > 17) + { + gCurrentPinballGame->unk36A[i] = 0; + gCurrentPinballGame->unk36C[i] = 0; + } + } + + gCurrentPinballGame->unk372[i] = 20; + break; + } + } + + if (gCurrentPinballGame->unk25 != 3) + { + if (gCurrentPinballGame->unk376) + gCurrentPinballGame->unk376--; + } + + if (gCurrentPinballGame->unk1328) + { + gCurrentPinballGame->unk1328--; + if (gCurrentPinballGame->unk1328 == 0) + gCurrentPinballGame->unk1330 = gCurrentPinballGame->unk1334; + } + + if (gCurrentPinballGame->unk368) + { + if (gCurrentPinballGame->unk368 == 17) + { + m4aSongNumStart(SE_UNKNOWN_0xE8); + gCurrentPinballGame->unk3C = 10; + sub_11B0(13); + } + + mosaicVal = gUnknown_08137CD6[gCurrentPinballGame->unk368 / 3]; + REG_MOSAIC = (mosaicVal << 12) | (mosaicVal << 8) | (mosaicVal << 4) | (mosaicVal << 0); + gCurrentPinballGame->unk368--; + } + + if (gCurrentPinballGame->unk13 > 2) + { + if (gCurrentPinballGame->unk13 != 6) + { + for (i = 0; i < 2; i++) + { + if (gCurrentPinballGame->unk36A[i]) + { + gCurrentPinballGame->unk36A[i] = 0; + gCurrentPinballGame->unk36C[i] = 0; + gCurrentPinballGame->unk36E[i] = 0; + } + } + } + } + else if (gCurrentPinballGame->unk72E > 2) + { + if (gCurrentPinballGame->evolvablePartySize > 0) + { + if (gCurrentPinballGame->unk36A[0] < 3) + { + gCurrentPinballGame->unk36A[0] = 3; + gCurrentPinballGame->unk36A[1] = 3; + } + } + } + else + { + if (gCurrentPinballGame->unk36A[0] > 2) + { + gCurrentPinballGame->unk36A[0] = 0; + gCurrentPinballGame->unk36C[0] = 0; + gCurrentPinballGame->unk36A[1] = 0; + gCurrentPinballGame->unk36C[1] = 0; + } + } +}