diff --git a/asm/rom_27F94.s b/asm/rom_27F94.s index 1c44e15..24d4971 100644 --- a/asm/rom_27F94.s +++ b/asm/rom_27F94.s @@ -6,1589 +6,6 @@ .text - thumb_func_start sub_28C90 -sub_28C90: @ 0x08028C90 - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - ldr r4, _08028D30 @ =gMain - ldr r0, [r4, #0x50] - movs r1, #0x32 - bl __umodsi3 - movs r1, #0x19 - bl __udivsi3 - lsls r0, r0, #0x10 - lsrs r5, r0, #0x10 - ldr r0, [r4, #0x44] - adds r0, #0x84 - ldr r6, [r0] - ldrh r0, [r6] - cmp r0, #0 - bne _08028CBA - b _08028E02 -_08028CBA: - ldr r3, _08028D34 @ =gCurrentPinballGame - ldr r4, [r3] - adds r1, r4, #0 - adds r1, #0xc4 - movs r2, #0x60 - movs r0, #0x60 - strh r0, [r1] - adds r0, r4, #0 - adds r0, #0xc6 - movs r1, #0x90 - lsls r1, r1, #1 - strh r1, [r0] - subs r0, #0x6e - ldrh r0, [r0] - subs r2, r2, r0 - strh r2, [r6, #2] - adds r0, r4, #0 - adds r0, #0x5a - ldrh r0, [r0] - subs r1, r1, r0 - strh r1, [r6, #4] - ldr r1, _08028D38 @ =0x000005A9 - adds r0, r4, r1 - ldrb r0, [r0] - cmp r0, #4 - bls _08028D50 - cmp r0, #0x14 - beq _08028CF6 - cmp r0, #0xc8 - bne _08028D06 -_08028CF6: - ldr r1, _08028D3C @ =0x040000D4 - ldr r0, _08028D40 @ =gUnknown_02031060 - str r0, [r1] - ldr r0, _08028D44 @ =0x06010CA0 - str r0, [r1, #4] - ldr r0, _08028D48 @ =0x80000240 - str r0, [r1, #8] - ldr r0, [r1, #8] -_08028D06: - ldr r0, [r3] - ldr r2, _08028D38 @ =0x000005A9 - adds r0, r0, r2 - ldrb r0, [r0] - cmp r0, #0x18 - bne _08028D22 - ldr r1, _08028D3C @ =0x040000D4 - ldr r0, _08028D4C @ =gUnknown_02030760 - str r0, [r1] - ldr r0, _08028D44 @ =0x06010CA0 - str r0, [r1, #4] - ldr r0, _08028D48 @ =0x80000240 - str r0, [r1, #8] - ldr r0, [r1, #8] -_08028D22: - ldr r1, [r3] - adds r1, r1, r2 - ldrb r0, [r1] - subs r0, #1 - strb r0, [r1] - b _08028D78 - .align 2, 0 -_08028D30: .4byte gMain -_08028D34: .4byte gCurrentPinballGame -_08028D38: .4byte 0x000005A9 -_08028D3C: .4byte 0x040000D4 -_08028D40: .4byte gUnknown_02031060 -_08028D44: .4byte 0x06010CA0 -_08028D48: .4byte 0x80000240 -_08028D4C: .4byte gUnknown_02030760 -_08028D50: - movs r2, #0xde - lsls r2, r2, #1 - adds r0, r4, r2 - ldrh r0, [r0] - cmp r0, #5 - bne _08028D78 - ldr r2, _08028E10 @ =0x040000D4 - lsls r1, r5, #0x10 - asrs r1, r1, #0x10 - lsls r0, r1, #3 - adds r0, r0, r1 - lsls r0, r0, #7 - ldr r1, _08028E14 @ =gUnknown_02030760 - adds r0, r0, r1 - str r0, [r2] - ldr r0, _08028E18 @ =0x06010CA0 - str r0, [r2, #4] - ldr r0, _08028E1C @ =0x80000240 - str r0, [r2, #8] - ldr r0, [r2, #8] -_08028D78: - ldr r0, [r3] - movs r1, #0xb5 - lsls r1, r1, #3 - adds r0, r0, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - movs r1, #1 - cmp r0, #0xc - bgt _08028D8E - movs r1, #2 -_08028D8E: - movs r2, #4 - ldrsh r0, [r6, r2] - cmp r0, #0xc7 - ble _08028D9A - movs r0, #0xc8 - strh r0, [r6, #4] -_08028D9A: - movs r0, #0 - ldr r7, _08028E20 @ =gOamBuffer - ldr r2, _08028E24 @ =0xFFFFFE00 - mov sb, r2 - lsls r1, r1, #2 - mov ip, r1 - movs r1, #0xd - rsbs r1, r1, #0 - mov r8, r1 -_08028DAC: - lsls r5, r0, #0x10 - asrs r5, r5, #0x10 - lsls r3, r5, #3 - adds r3, #8 - adds r3, r6, r3 - ldrh r4, [r3] - lsls r4, r4, #3 - adds r4, r4, r7 - movs r2, #2 - ldrsh r1, [r3, r2] - movs r2, #2 - ldrsh r0, [r6, r2] - adds r1, r1, r0 - ldr r2, _08028E28 @ =0x000001FF - adds r0, r2, #0 - ands r1, r0 - ldrh r2, [r4, #2] - mov r0, sb - ands r0, r2 - orrs r0, r1 - strh r0, [r4, #2] - ldrh r1, [r3] - lsls r1, r1, #3 - adds r1, r1, r7 - ldrb r0, [r6, #4] - ldrb r2, [r3, #4] - adds r0, r0, r2 - strb r0, [r1] - ldrh r1, [r3] - lsls r1, r1, #3 - adds r1, r1, r7 - ldrb r2, [r1, #5] - mov r0, r8 - ands r0, r2 - mov r2, ip - orrs r0, r2 - strb r0, [r1, #5] - adds r5, #1 - lsls r5, r5, #0x10 - lsrs r0, r5, #0x10 - asrs r5, r5, #0x10 - cmp r5, #3 - ble _08028DAC -_08028E02: - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - .align 2, 0 -_08028E10: .4byte 0x040000D4 -_08028E14: .4byte gUnknown_02030760 -_08028E18: .4byte 0x06010CA0 -_08028E1C: .4byte 0x80000240 -_08028E20: .4byte gOamBuffer -_08028E24: .4byte 0xFFFFFE00 -_08028E28: .4byte 0x000001FF - - thumb_func_start sub_28E2C -sub_28E2C: @ 0x08028E2C - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - ldr r0, _08028E94 @ =gMain - ldr r1, [r0, #0x44] - adds r1, #0x84 - ldr r5, [r1] - ldrh r1, [r5] - mov r8, r0 - cmp r1, #0 - beq _08028E7C - movs r0, #0 - ldr r6, _08028E98 @ =gOamBuffer - ldr r1, _08028E9C @ =0xFFFFFE00 - mov ip, r1 - movs r7, #0xc8 -_08028E4C: - lsls r2, r0, #0x10 - asrs r2, r2, #0x10 - lsls r4, r2, #3 - adds r4, #8 - adds r4, r5, r4 - ldrh r1, [r4] - lsls r1, r1, #3 - adds r1, r1, r6 - ldrh r3, [r1, #2] - mov r0, ip - ands r0, r3 - orrs r0, r7 - strh r0, [r1, #2] - ldrh r0, [r4] - lsls r0, r0, #3 - adds r0, r0, r6 - movs r1, #0xb4 - strb r1, [r0] - adds r2, #1 - lsls r2, r2, #0x10 - lsrs r0, r2, #0x10 - asrs r2, r2, #0x10 - cmp r2, #3 - ble _08028E4C -_08028E7C: - mov r1, r8 - ldr r0, [r1, #0x44] - adds r0, #0x84 - ldr r1, [r0] - movs r0, #0 - strh r0, [r1] - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - .align 2, 0 -_08028E94: .4byte gMain -_08028E98: .4byte gOamBuffer -_08028E9C: .4byte 0xFFFFFE00 - - thumb_func_start sub_28EA0 -sub_28EA0: @ 0x08028EA0 - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - sub sp, #4 - ldr r4, _08028F64 @ =gMain - ldr r0, [r4, #0x50] - movs r1, #0x32 - bl __umodsi3 - movs r1, #0x19 - bl __udivsi3 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - mov sb, r0 - ldr r0, [r4, #0x44] - adds r0, #0x84 - ldr r7, [r0] - ldrh r0, [r7] - ldr r1, _08028F68 @ =gCurrentPinballGame - mov sl, r1 - cmp r0, #0 - bne _08028ED4 - b _080290C4 -_08028ED4: - ldr r6, [r1] - adds r4, r6, #0 - adds r4, #0xc0 - movs r2, #0 - ldrsh r0, [r4, r2] - movs r1, #0xa - bl __divsi3 - adds r0, #0x60 - adds r1, r6, #0 - adds r1, #0xc4 - strh r0, [r1] - movs r0, #0xc2 - adds r0, r0, r6 - mov r8, r0 - movs r1, #0 - ldrsh r0, [r0, r1] - movs r1, #0xa - bl __divsi3 - movs r2, #0x90 - lsls r2, r2, #1 - adds r5, r2, #0 - adds r0, r0, r5 - adds r1, r6, #0 - adds r1, #0xc6 - strh r0, [r1] - movs r1, #0 - ldrsh r0, [r4, r1] - movs r1, #0xa - bl __divsi3 - adds r0, #0x60 - adds r1, r6, #0 - adds r1, #0x58 - ldrh r1, [r1] - subs r0, r0, r1 - strh r0, [r7, #2] - mov r2, r8 - movs r1, #0 - ldrsh r0, [r2, r1] - movs r1, #0xa - bl __divsi3 - adds r0, r0, r5 - adds r1, r6, #0 - adds r1, #0x5a - ldrh r1, [r1] - subs r0, r0, r1 - strh r0, [r7, #4] - movs r0, #0x17 - ldrsb r0, [r6, r0] - cmp r0, #3 - ble _08028F7A - ldrh r0, [r6, #0x18] - cmp r0, #0x59 - bls _08028F74 - adds r1, r0, #0 - movs r0, #0x96 - subs r0, r0, r1 - cmp r0, #0 - bge _08028F52 - adds r0, #3 -_08028F52: - lsls r1, r0, #0xe - ldr r2, _08028F6C @ =0x040000D4 - asrs r1, r1, #0x10 - lsls r0, r1, #3 - adds r0, r0, r1 - lsls r0, r0, #7 - ldr r1, _08028F70 @ =gUnknown_0844AA0C - b _08028FFC - .align 2, 0 -_08028F64: .4byte gMain -_08028F68: .4byte gCurrentPinballGame -_08028F6C: .4byte 0x040000D4 -_08028F70: .4byte gUnknown_0844AA0C -_08028F74: - movs r0, #0xbe - strh r0, [r7, #4] - b _0802900A -_08028F7A: - ldr r2, _08028FC8 @ =0x000005A9 - adds r0, r6, r2 - ldrb r0, [r0] - cmp r0, #4 - bls _08028FE0 - cmp r0, #0x14 - beq _08028F8C - cmp r0, #0xc8 - bne _08028F9C -_08028F8C: - ldr r1, _08028FCC @ =0x040000D4 - ldr r0, _08028FD0 @ =gUnknown_02031060 - str r0, [r1] - ldr r0, _08028FD4 @ =0x06010CA0 - str r0, [r1, #4] - ldr r0, _08028FD8 @ =0x80000240 - str r0, [r1, #8] - ldr r0, [r1, #8] -_08028F9C: - mov r6, sl - ldr r0, [r6] - ldr r2, _08028FC8 @ =0x000005A9 - adds r0, r0, r2 - ldrb r0, [r0] - cmp r0, #0x18 - bne _08028FBA - ldr r1, _08028FCC @ =0x040000D4 - ldr r0, _08028FDC @ =gUnknown_02030760 - str r0, [r1] - ldr r0, _08028FD4 @ =0x06010CA0 - str r0, [r1, #4] - ldr r0, _08028FD8 @ =0x80000240 - str r0, [r1, #8] - ldr r0, [r1, #8] -_08028FBA: - mov r0, sl - ldr r1, [r0] - adds r1, r1, r2 - ldrb r0, [r1] - subs r0, #1 - strb r0, [r1] - b _0802900A - .align 2, 0 -_08028FC8: .4byte 0x000005A9 -_08028FCC: .4byte 0x040000D4 -_08028FD0: .4byte gUnknown_02031060 -_08028FD4: .4byte 0x06010CA0 -_08028FD8: .4byte 0x80000240 -_08028FDC: .4byte gUnknown_02030760 -_08028FE0: - movs r1, #0xde - lsls r1, r1, #1 - adds r0, r6, r1 - ldrh r0, [r0] - cmp r0, #5 - bne _0802900A - ldr r2, _0802901C @ =0x040000D4 - mov r6, sb - lsls r1, r6, #0x10 - asrs r1, r1, #0x10 - lsls r0, r1, #3 - adds r0, r0, r1 - lsls r0, r0, #7 - ldr r1, _08029020 @ =gUnknown_02030760 -_08028FFC: - adds r0, r0, r1 - str r0, [r2] - ldr r0, _08029024 @ =0x06010CA0 - str r0, [r2, #4] - ldr r0, _08029028 @ =0x80000240 - str r0, [r2, #8] - ldr r0, [r2, #8] -_0802900A: - mov r0, sl - ldr r1, [r0] - ldr r2, _0802902C @ =0x000005A4 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, #2 - beq _08029030 - movs r3, #1 - b _08029044 - .align 2, 0 -_0802901C: .4byte 0x040000D4 -_08029020: .4byte gUnknown_02030760 -_08029024: .4byte 0x06010CA0 -_08029028: .4byte 0x80000240 -_0802902C: .4byte 0x000005A4 -_08029030: - movs r6, #0xb5 - lsls r6, r6, #3 - adds r0, r1, r6 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - movs r3, #1 - cmp r0, #0xc - bgt _08029044 - movs r3, #2 -_08029044: - movs r1, #4 - ldrsh r0, [r7, r1] - cmp r0, #0xc7 - ble _08029052 - movs r0, #0xc8 - strh r0, [r7, #4] - b _0802905C -_08029052: - movs r1, #0x3c - rsbs r1, r1, #0 - cmp r0, r1 - bge _0802905C - strh r1, [r7, #4] -_0802905C: - movs r2, #0 - ldr r6, _0802912C @ =gOamBuffer - ldr r0, _08029130 @ =0xFFFFFE00 - mov sl, r0 - lsls r3, r3, #2 - mov r8, r3 - movs r1, #0xd - rsbs r1, r1, #0 - mov sb, r1 -_0802906E: - lsls r4, r2, #0x10 - asrs r4, r4, #0x10 - lsls r0, r4, #3 - adds r0, #8 - adds r5, r7, r0 - ldrh r3, [r5] - lsls r3, r3, #3 - adds r3, r3, r6 - movs r2, #2 - ldrsh r1, [r5, r2] - movs r2, #2 - ldrsh r0, [r7, r2] - adds r1, r1, r0 - ldr r2, _08029134 @ =0x000001FF - adds r0, r2, #0 - ands r1, r0 - ldrh r2, [r3, #2] - mov r0, sl - ands r0, r2 - orrs r0, r1 - strh r0, [r3, #2] - ldrh r1, [r5] - lsls r1, r1, #3 - adds r1, r1, r6 - ldrb r0, [r7, #4] - ldrb r2, [r5, #4] - adds r0, r0, r2 - strb r0, [r1] - ldrh r1, [r5] - lsls r1, r1, #3 - adds r1, r1, r6 - ldrb r2, [r1, #5] - mov r0, sb - ands r0, r2 - mov r2, r8 - orrs r0, r2 - strb r0, [r1, #5] - adds r4, #1 - lsls r4, r4, #0x10 - lsrs r2, r4, #0x10 - asrs r4, r4, #0x10 - cmp r4, #3 - ble _0802906E -_080290C4: - movs r1, #0 -_080290C6: - lsls r0, r1, #0x10 - asrs r5, r0, #0x10 - ldr r6, _08029138 @ =gMain - ldr r1, [r6, #0x44] - lsls r4, r5, #2 - adds r1, r4, r1 - adds r1, #0xb4 - ldr r7, [r1] - ldrh r1, [r7] - mov r8, r0 - cmp r1, #0 - beq _080291D2 - ldr r0, _0802913C @ =gCurrentPinballGame - ldr r2, [r0] - adds r3, r2, r4 - adds r0, r3, #0 - adds r0, #0x84 - adds r1, r2, #0 - adds r1, #0x58 - ldrh r0, [r0] - ldrh r1, [r1] - subs r0, r0, r1 - strh r0, [r7, #2] - adds r3, #0x86 - adds r0, r2, #0 - adds r0, #0x5a - ldrh r3, [r3] - ldrh r0, [r0] - subs r3, r3, r0 - strh r3, [r7, #4] - lsls r0, r5, #1 - adds r2, #0x74 - adds r2, r2, r0 - ldrh r0, [r2] - lsrs r0, r0, #2 - movs r1, #9 - subs r1, r1, r0 - lsls r1, r1, #1 - adds r0, r4, r5 - lsls r0, r0, #2 - adds r1, r1, r0 - ldr r2, _08029140 @ =gUnknown_086AE154 - adds r1, r1, r2 - ldrh r1, [r1] - lsls r3, r3, #0x10 - asrs r0, r3, #0x10 - cmp r0, #0xc7 - ble _08029144 - movs r0, #0xc8 - strh r0, [r7, #4] - b _0802914E - .align 2, 0 -_0802912C: .4byte gOamBuffer -_08029130: .4byte 0xFFFFFE00 -_08029134: .4byte 0x000001FF -_08029138: .4byte gMain -_0802913C: .4byte gCurrentPinballGame -_08029140: .4byte gUnknown_086AE154 -_08029144: - movs r2, #0x3c - rsbs r2, r2, #0 - cmp r0, r2 - bge _0802914E - strh r2, [r7, #4] -_0802914E: - movs r2, #0 - lsls r1, r1, #0x10 - ldr r6, _08029284 @ =gUnknown_086B263C - mov sl, r6 - asrs r1, r1, #0x10 - lsls r0, r1, #3 - adds r0, r0, r1 - lsls r0, r0, #1 - mov ip, r0 - ldr r0, _08029288 @ =0xFFFFFE00 - mov sb, r0 -_08029164: - lsls r3, r2, #0x10 - asrs r3, r3, #0x10 - lsls r0, r3, #3 - adds r0, #8 - adds r5, r7, r0 - ldrh r2, [r5] - lsls r2, r2, #3 - ldr r1, _0802928C @ =gOamBuffer - adds r2, r2, r1 - lsls r0, r3, #1 - adds r0, r0, r3 - lsls r0, r0, #1 - add r0, sl - add r0, ip - ldrh r1, [r0] - strh r1, [r2] - adds r0, #2 - adds r2, #2 - ldrh r1, [r0] - strh r1, [r2] - ldrh r0, [r0, #2] - strh r0, [r2, #2] - ldrh r2, [r5] - lsls r2, r2, #3 - ldr r6, _0802928C @ =gOamBuffer - adds r2, r2, r6 - ldrh r4, [r2, #2] - lsls r1, r4, #0x17 - lsrs r1, r1, #0x17 - str r1, [sp] - movs r1, #2 - ldrsh r0, [r7, r1] - ldr r6, [sp] - adds r1, r6, r0 - ldr r6, _08029290 @ =0x000001FF - adds r0, r6, #0 - ands r1, r0 - mov r0, sb - ands r0, r4 - orrs r0, r1 - strh r0, [r2, #2] - ldrh r1, [r5] - lsls r1, r1, #3 - ldr r0, _0802928C @ =gOamBuffer - adds r1, r1, r0 - ldrb r0, [r7, #4] - ldrb r2, [r1] - adds r0, r0, r2 - strb r0, [r1] - adds r3, #1 - lsls r3, r3, #0x10 - lsrs r2, r3, #0x10 - asrs r3, r3, #0x10 - cmp r3, #2 - ble _08029164 -_080291D2: - ldr r6, _08029294 @ =gCurrentPinballGame - ldr r4, [r6] - ldr r1, _08029298 @ =0x000005A4 - adds r0, r4, r1 - ldrb r0, [r0] - cmp r0, #2 - beq _08029228 - movs r0, #0x17 - ldrsb r0, [r4, r0] - cmp r0, #3 - bgt _08029228 - mov r2, r8 - asrs r3, r2, #0x10 - lsls r0, r3, #1 - adds r1, r4, #0 - adds r1, #0x74 - adds r1, r1, r0 - ldrh r0, [r1] - cmp r0, #0 - bne _0802923A - movs r0, #0x28 - strh r0, [r1] - lsls r3, r3, #2 - adds r2, r4, r3 - adds r0, r4, #0 - adds r0, #0xc4 - ldrh r1, [r0] - adds r0, r2, #0 - adds r0, #0x84 - strh r1, [r0] - adds r0, r4, #0 - adds r0, #0xc6 - ldrh r0, [r0] - adds r0, #0x10 - adds r2, #0x86 - strh r0, [r2] - ldr r6, _0802929C @ =gMain - ldr r0, [r6, #0x44] - adds r3, r3, r0 - adds r3, #0xb4 - ldr r1, [r3] - movs r0, #1 - strh r0, [r1] -_08029228: - ldr r1, _08029294 @ =gCurrentPinballGame - ldr r0, [r1] - mov r2, r8 - asrs r1, r2, #0xf - adds r0, #0x74 - adds r0, r0, r1 - ldrh r0, [r0] - cmp r0, #0 - beq _08029264 -_0802923A: - ldr r6, _08029294 @ =gCurrentPinballGame - ldr r0, [r6] - mov r1, r8 - asrs r3, r1, #0x10 - lsls r1, r3, #1 - adds r0, #0x74 - adds r0, r0, r1 - ldrh r1, [r0] - subs r1, #1 - strh r1, [r0] - lsls r1, r1, #0x10 - lsrs r2, r1, #0x10 - cmp r2, #0 - bne _08029264 - ldr r6, _0802929C @ =gMain - ldr r0, [r6, #0x44] - lsls r1, r3, #2 - adds r1, r1, r0 - adds r1, #0xb4 - ldr r0, [r1] - strh r2, [r0] -_08029264: - movs r0, #0x80 - lsls r0, r0, #9 - add r0, r8 - lsrs r1, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #3 - bgt _08029274 - b _080290C6 -_08029274: - add sp, #4 - 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 -_08029284: .4byte gUnknown_086B263C -_08029288: .4byte 0xFFFFFE00 -_0802928C: .4byte gOamBuffer -_08029290: .4byte 0x000001FF -_08029294: .4byte gCurrentPinballGame -_08029298: .4byte 0x000005A4 -_0802929C: .4byte gMain - - thumb_func_start sub_292A0 -sub_292A0: @ 0x080292A0 - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - ldr r0, _08029328 @ =gMain - ldr r1, [r0, #0x44] - adds r1, #0x84 - ldr r5, [r1] - ldrh r1, [r5] - mov r8, r0 - cmp r1, #0 - beq _080292F0 - movs r0, #0 - ldr r6, _0802932C @ =gOamBuffer - ldr r1, _08029330 @ =0xFFFFFE00 - mov ip, r1 - movs r7, #0xc8 -_080292C0: - lsls r2, r0, #0x10 - asrs r2, r2, #0x10 - lsls r4, r2, #3 - adds r4, #8 - adds r4, r5, r4 - ldrh r1, [r4] - lsls r1, r1, #3 - adds r1, r1, r6 - ldrh r3, [r1, #2] - mov r0, ip - ands r0, r3 - orrs r0, r7 - strh r0, [r1, #2] - ldrh r0, [r4] - lsls r0, r0, #3 - adds r0, r0, r6 - movs r1, #0xb4 - strb r1, [r0] - adds r2, #1 - lsls r2, r2, #0x10 - lsrs r0, r2, #0x10 - asrs r2, r2, #0x10 - cmp r2, #3 - ble _080292C0 -_080292F0: - mov r1, r8 - ldr r0, [r1, #0x44] - adds r0, #0x84 - ldr r1, [r0] - movs r0, #0 - strh r0, [r1] - mov r4, r8 - movs r3, #0 -_08029300: - lsls r1, r0, #0x10 - asrs r1, r1, #0x10 - ldr r2, [r4, #0x44] - lsls r0, r1, #2 - adds r0, r0, r2 - adds r0, #0xb4 - ldr r0, [r0] - strh r3, [r0] - adds r1, #1 - lsls r1, r1, #0x10 - lsrs r0, r1, #0x10 - asrs r1, r1, #0x10 - cmp r1, #3 - ble _08029300 - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - .align 2, 0 -_08029328: .4byte gMain -_0802932C: .4byte gOamBuffer -_08029330: .4byte 0xFFFFFE00 - - thumb_func_start sub_29334 -sub_29334: @ 0x08029334 - push {r4, r5, lr} - ldr r0, _08029384 @ =gCurrentPinballGame - ldr r2, [r0] - adds r1, r2, #0 - adds r1, #0x68 - movs r3, #0 - ldrsh r1, [r1, r3] - adds r4, r0, #0 - cmp r1, #0x8a - ble _080293A6 - ldr r5, _08029388 @ =0x000006C5 - adds r3, r2, r5 - movs r0, #0 - ldrsb r0, [r3, r0] - cmp r0, #0 - bne _08029398 - ldr r0, _0802938C @ =0x00000625 - adds r1, r2, r0 - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #0 - ble _08029398 - adds r5, #1 - adds r0, r2, r5 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r0, #6 - ldrb r1, [r1] - lsls r1, r1, #0x18 - asrs r1, r1, #0x18 - cmp r0, r1 - bne _08029394 - movs r0, #2 - strb r0, [r3] - ldr r1, [r4] - ldr r0, _08029390 @ =0x000493E0 - str r0, [r1, #0x3c] - b _08029398 - .align 2, 0 -_08029384: .4byte gCurrentPinballGame -_08029388: .4byte 0x000006C5 -_0802938C: .4byte 0x00000625 -_08029390: .4byte 0x000493E0 -_08029394: - movs r0, #1 - strb r0, [r3] -_08029398: - ldr r0, [r4] - ldr r2, _080293BC @ =0x00000625 - adds r1, r0, r2 - ldrb r1, [r1] - ldr r3, _080293C0 @ =0x000006C6 - adds r0, r0, r3 - strb r1, [r0] -_080293A6: - ldr r0, [r4] - ldr r5, _080293C4 @ =0x000006C5 - adds r0, r0, r5 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #2 - bne _080293C8 - bl sub_25808 - b _080293D0 - .align 2, 0 -_080293BC: .4byte 0x00000625 -_080293C0: .4byte 0x000006C6 -_080293C4: .4byte 0x000006C5 -_080293C8: - cmp r0, #1 - bne _080293D0 - bl sub_253E0 -_080293D0: - pop {r4, r5} - pop {r0} - bx r0 - - thumb_func_start sub_293D8 -sub_293D8: @ 0x080293D8 - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - sub sp, #4 - ldr r1, _0802940C @ =gUnknown_086AD436 - ldr r3, _08029410 @ =gCurrentPinballGame - ldr r2, [r3] - ldr r0, _08029414 @ =0x000006CC - adds r4, r2, r0 - movs r0, #0 - ldrsb r0, [r4, r0] - lsls r0, r0, #2 - adds r1, #2 - adds r0, r0, r1 - movs r1, #0 - ldrsh r0, [r0, r1] - ldr r1, _08029418 @ =0x000006CA - adds r2, r2, r1 - ldrh r1, [r2] - cmp r0, r1 - ble _0802941C - adds r0, r1, #1 - strh r0, [r2] - b _08029426 - .align 2, 0 -_0802940C: .4byte gUnknown_086AD436 -_08029410: .4byte gCurrentPinballGame -_08029414: .4byte 0x000006CC -_08029418: .4byte 0x000006CA -_0802941C: - movs r0, #0 - strh r0, [r2] - ldrb r0, [r4] - adds r0, #1 - strb r0, [r4] -_08029426: - ldr r2, _080295E4 @ =gCurrentPinballGame - ldr r1, [r2] - ldr r4, _080295E8 @ =0x000006CC - adds r0, r1, r4 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #2 - bne _08029456 - ldr r2, _080295EC @ =0x000006CA - adds r0, r1, r2 - ldrh r0, [r0] - cmp r0, #3 - bls _08029456 - subs r4, #8 - adds r1, r1, r4 - movs r0, #3 - strb r0, [r1] - ldr r0, _080295F0 @ =gMain - ldr r0, [r0, #0x44] - adds r0, #0x84 - ldr r1, [r0] - movs r0, #1 - strh r0, [r1] -_08029456: - ldr r4, _080295E4 @ =gCurrentPinballGame - ldr r0, [r4] - ldr r5, _080295E8 @ =0x000006CC - adds r0, r0, r5 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #2 - ble _0802948A - ldr r1, _080295F4 @ =0x040000D4 - ldr r0, _080295F8 @ =gUnknown_020306D0 - str r0, [r1] - ldr r0, _080295FC @ =0x050003A0 - str r0, [r1, #4] - ldr r0, _08029600 @ =0x80000010 - str r0, [r1, #8] - ldr r0, [r1, #8] - ldr r0, _08029604 @ =gUnknown_02030760 - str r0, [r1] - ldr r0, _08029608 @ =0x06010CA0 - str r0, [r1, #4] - ldr r0, _0802960C @ =0x80000240 - str r0, [r1, #8] - ldr r0, [r1, #8] - bl sub_28C90 -_0802948A: - ldr r0, _080295F0 @ =gMain - ldr r1, [r0, #0x44] - ldr r7, [r1, #0x48] - ldrh r1, [r7] - cmp r1, #0 - bne _08029498 - b _080295A0 -_08029498: - ldr r0, _080295E4 @ =gCurrentPinballGame - ldr r1, [r0] - adds r0, r1, #0 - adds r0, #0x58 - ldrh r2, [r0] - movs r0, #0x60 - subs r0, r0, r2 - strh r0, [r7, #2] - adds r1, #0x5a - ldrh r1, [r1] - movs r2, #0x94 - lsls r2, r2, #1 - adds r0, r2, #0 - subs r0, r0, r1 - strh r0, [r7, #4] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #0xc7 - ble _080294C2 - movs r0, #0xc8 - strh r0, [r7, #4] -_080294C2: - movs r0, #0 - ldr r4, _08029610 @ =gUnknown_086B55DC - mov sl, r4 - ldr r1, _08029614 @ =gUnknown_086AD436 - mov sb, r1 - ldr r2, _080295E4 @ =gCurrentPinballGame - mov r8, r2 - mov ip, r5 -_080294D2: - lsls r5, r0, #0x10 - asrs r5, r5, #0x10 - lsls r6, r5, #3 - adds r6, #8 - adds r6, r7, r6 - ldrh r4, [r6] - lsls r4, r4, #3 - ldr r0, _08029618 @ =gOamBuffer - adds r4, r4, r0 - lsls r3, r5, #1 - adds r3, r3, r5 - lsls r1, r3, #1 - str r1, [sp] - mov r2, r8 - ldr r0, [r2] - add r0, ip - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - lsls r0, r0, #2 - add r0, sb - movs r2, #0 - ldrsh r1, [r0, r2] - lsls r0, r1, #3 - adds r0, r0, r1 - lsls r0, r0, #2 - ldr r1, [sp] - adds r2, r1, r0 - add r2, sl - ldrh r0, [r2] - strh r0, [r4] - adds r4, #2 - adds r2, r3, #1 - lsls r2, r2, #1 - str r2, [sp] - mov r2, r8 - ldr r0, [r2] - add r0, ip - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - lsls r0, r0, #2 - add r0, sb - movs r2, #0 - ldrsh r1, [r0, r2] - lsls r0, r1, #3 - adds r0, r0, r1 - lsls r0, r0, #2 - ldr r1, [sp] - adds r2, r1, r0 - add r2, sl - ldrh r0, [r2] - strh r0, [r4] - adds r3, #2 - lsls r3, r3, #1 - mov r2, r8 - ldr r0, [r2] - add r0, ip - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - lsls r0, r0, #2 - add r0, sb - movs r2, #0 - ldrsh r1, [r0, r2] - lsls r0, r1, #3 - adds r0, r0, r1 - lsls r0, r0, #2 - adds r3, r3, r0 - add r3, sl - ldrh r0, [r3] - strh r0, [r4, #2] - ldrh r2, [r6] - lsls r2, r2, #3 - ldr r4, _08029618 @ =gOamBuffer - adds r2, r2, r4 - ldrh r3, [r2, #2] - lsls r1, r3, #0x17 - lsrs r1, r1, #0x17 - movs r4, #2 - ldrsh r0, [r7, r4] - adds r1, r1, r0 - ldr r4, _0802961C @ =0x000001FF - adds r0, r4, #0 - ands r1, r0 - ldr r0, _08029620 @ =0xFFFFFE00 - ands r0, r3 - orrs r0, r1 - strh r0, [r2, #2] - ldrh r1, [r6] - lsls r1, r1, #3 - ldr r0, _08029618 @ =gOamBuffer - adds r1, r1, r0 - ldrb r0, [r7, #4] - ldrb r2, [r1] - adds r0, r0, r2 - strb r0, [r1] - adds r5, #1 - lsls r5, r5, #0x10 - lsrs r0, r5, #0x10 - asrs r5, r5, #0x10 - cmp r5, #5 - ble _080294D2 -_080295A0: - ldr r4, _080295F0 @ =gMain - ldr r0, [r4, #0x44] - ldr r1, [r0, #0x48] - movs r0, #1 - strh r0, [r1] - ldr r0, _080295E4 @ =gCurrentPinballGame - ldr r1, [r0] - ldr r2, _080295E8 @ =0x000006CC - adds r0, r1, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #6 - ble _080295D4 - ldrb r0, [r1, #0x17] - adds r0, #1 - strb r0, [r1, #0x17] - ldr r0, [r4, #0x44] - ldr r1, [r0, #0x48] - movs r0, #0 - strh r0, [r1] - ldr r4, _080295E4 @ =gCurrentPinballGame - ldr r0, [r4] - adds r0, #0xe4 - movs r1, #0 - strb r1, [r0] -_080295D4: - add sp, #4 - 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 -_080295E4: .4byte gCurrentPinballGame -_080295E8: .4byte 0x000006CC -_080295EC: .4byte 0x000006CA -_080295F0: .4byte gMain -_080295F4: .4byte 0x040000D4 -_080295F8: .4byte gUnknown_020306D0 -_080295FC: .4byte 0x050003A0 -_08029600: .4byte 0x80000010 -_08029604: .4byte gUnknown_02030760 -_08029608: .4byte 0x06010CA0 -_0802960C: .4byte 0x80000240 -_08029610: .4byte gUnknown_086B55DC -_08029614: .4byte gUnknown_086AD436 -_08029618: .4byte gOamBuffer -_0802961C: .4byte 0x000001FF -_08029620: .4byte 0xFFFFFE00 - - thumb_func_start sub_29624 -sub_29624: @ 0x08029624 - push {r4, r5, lr} - ldr r0, _08029658 @ =gCurrentPinballGame - ldr r1, [r0] - ldr r2, _0802965C @ =0x000006CC - adds r1, r1, r2 - movs r2, #0 - strb r2, [r1] - adds r5, r0, #0 - ldr r4, _08029660 @ =0x000006D3 - movs r3, #0xd -_08029638: - ldr r1, [r5] - lsls r0, r2, #0x10 - asrs r0, r0, #0x10 - adds r1, r1, r4 - adds r1, r1, r0 - strb r3, [r1] - adds r0, #1 - lsls r0, r0, #0x10 - lsrs r2, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #5 - ble _08029638 - pop {r4, r5} - pop {r0} - bx r0 - .align 2, 0 -_08029658: .4byte gCurrentPinballGame -_0802965C: .4byte 0x000006CC -_08029660: .4byte 0x000006D3 - - thumb_func_start sub_29664 -sub_29664: @ 0x08029664 - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - movs r0, #0 - ldr r7, _08029700 @ =gCurrentPinballGame - mov r8, r0 -_08029670: - ldr r1, [r7] - lsls r5, r0, #0x10 - asrs r5, r5, #0x10 - lsls r6, r5, #2 - adds r1, r1, r6 - movs r2, #0xb8 - lsls r2, r2, #3 - adds r0, r1, r2 - mov r2, r8 - strh r2, [r0] - ldr r0, _08029704 @ =0x000005C2 - adds r1, r1, r0 - strh r2, [r1] - bl Random - ldr r4, [r7] - adds r4, r4, r6 - movs r1, #0xc8 - lsls r1, r1, #1 - bl __umodsi3 - movs r1, #0xc8 - subs r1, r1, r0 - movs r2, #0xbb - lsls r2, r2, #3 - adds r4, r4, r2 - strh r1, [r4] - bl Random - ldr r4, [r7] - adds r4, r4, r6 - ldr r1, _08029708 @ =0x00000226 - bl __umodsi3 - movs r1, #0x50 - subs r1, r1, r0 - ldr r0, _0802970C @ =0x000005DA - adds r4, r4, r0 - strh r1, [r4] - bl Random - ldr r4, [r7] - ldr r1, _08029710 @ =0x000005B9 - adds r4, r4, r1 - adds r4, r4, r5 - movs r1, #0xf - bl __umodsi3 - adds r0, #0xa - strb r0, [r4] - adds r5, #1 - lsls r5, r5, #0x10 - lsrs r0, r5, #0x10 - asrs r5, r5, #0x10 - cmp r5, #5 - ble _08029670 - ldr r0, _08029700 @ =gCurrentPinballGame - ldr r0, [r0] - ldr r2, _08029714 @ =0x00000606 - adds r0, r0, r2 - movs r1, #0 - strh r1, [r0] - ldr r0, _08029718 @ =gMain - ldr r0, [r0, #0x44] - ldr r1, [r0, #0x30] - movs r0, #1 - strh r0, [r1] - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - .align 2, 0 -_08029700: .4byte gCurrentPinballGame -_08029704: .4byte 0x000005C2 -_08029708: .4byte 0x00000226 -_0802970C: .4byte 0x000005DA -_08029710: .4byte 0x000005B9 -_08029714: .4byte 0x00000606 -_08029718: .4byte gMain - - thumb_func_start sub_2971C -sub_2971C: @ 0x0802971C - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - sub sp, #4 - ldr r0, _080298B8 @ =gMain - ldr r1, [r0, #0x44] - ldr r1, [r1, #0x30] - str r1, [sp] - ldrh r1, [r1] - cmp r1, #0 - bne _08029738 - b _080298A2 -_08029738: - movs r3, #0 -_0802973A: - ldr r0, _080298BC @ =gCurrentPinballGame - ldr r2, [r0] - ldr r1, _080298C0 @ =0x00000606 - adds r0, r2, r1 - ldrh r1, [r0] - lsrs r1, r1, #2 - lsls r1, r1, #1 - lsls r0, r3, #0x10 - asrs r0, r0, #0x10 - mov sb, r0 - lsls r0, r0, #1 - add r0, sb - lsls r0, r0, #3 - adds r1, r1, r0 - ldr r3, _080298C4 @ =gUnknown_086AE1A4 - adds r1, r1, r3 - ldrh r1, [r1] - mov sl, r1 - mov r6, sb - lsls r5, r6, #2 - adds r3, r2, r5 - ldr r0, _080298C8 @ =0x000005DA - adds r4, r3, r0 - ldr r1, _080298CC @ =0x000005B9 - adds r2, r2, r1 - add r2, sb - movs r0, #0 - ldrsb r0, [r2, r0] - ldrh r2, [r4] - adds r0, r0, r2 - strh r0, [r4] - ldr r6, _080298D0 @ =0x000005C2 - adds r2, r3, r6 - movs r0, #0 - ldrsh r1, [r2, r0] - ldr r0, _080298D4 @ =0x000036AF - cmp r1, r0 - bgt _0802979E - subs r6, #2 - adds r1, r3, r6 - adds r6, #0x18 - adds r0, r3, r6 - ldrh r0, [r0] - ldrh r3, [r1] - adds r0, r0, r3 - strh r0, [r1] - ldrh r0, [r4] - ldrh r6, [r2] - adds r0, r0, r6 - strh r0, [r2] -_0802979E: - ldr r0, _080298BC @ =gCurrentPinballGame - ldr r6, [r0] - movs r1, #0xd9 - lsls r1, r1, #3 - adds r0, r6, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - mov r8, r0 - movs r1, #3 - bl __modsi3 - adds r4, r0, #0 - lsls r4, r4, #0x18 - asrs r4, r4, #0x14 - adds r0, r6, #0 - adds r0, #0x58 - ldrh r0, [r0] - subs r0, #0x60 - subs r4, r4, r0 - adds r5, r6, r5 - movs r2, #0xb8 - lsls r2, r2, #3 - adds r0, r5, r2 - movs r3, #0 - ldrsh r0, [r0, r3] - movs r1, #0x64 - bl __divsi3 - adds r4, r4, r0 - lsls r4, r4, #0x10 - lsrs r4, r4, #0x10 - ldr r0, _080298D8 @ =0xFFFF0000 - ands r7, r0 - orrs r7, r4 - mov r0, r8 - movs r1, #3 - bl __divsi3 - adds r4, r0, #0 - lsls r4, r4, #0x18 - asrs r4, r4, #0x14 - adds r6, #0x5a - ldr r1, _080298DC @ =0xFFFFFED4 - adds r0, r1, #0 - ldrh r6, [r6] - adds r0, r0, r6 - subs r4, r4, r0 - ldr r2, _080298D0 @ =0x000005C2 - adds r5, r5, r2 - movs r3, #0 - ldrsh r0, [r5, r3] - movs r1, #0x64 - bl __divsi3 - adds r4, r4, r0 - lsls r4, r4, #0x10 - ldr r0, _080298E0 @ =0x0000FFFF - ands r7, r0 - orrs r7, r4 - asrs r4, r4, #0x10 - cmp r4, #0xc7 - ble _08029824 - ands r7, r0 - movs r0, #0xc8 - lsls r0, r0, #0x10 - orrs r7, r0 -_08029824: - mov r5, sb - lsls r4, r5, #3 - adds r4, #8 - ldr r6, [sp] - adds r4, r6, r4 - ldrh r2, [r4] - lsls r2, r2, #3 - ldr r0, _080298E4 @ =gOamBuffer - adds r2, r2, r0 - mov r1, sl - lsls r0, r1, #0x10 - asrs r0, r0, #0x10 - lsls r1, r0, #1 - adds r1, r1, r0 - lsls r1, r1, #1 - ldr r3, _080298E8 @ =gUnknown_086B53B4 - adds r0, r1, r3 - ldrh r0, [r0] - strh r0, [r2] - adds r2, #2 - adds r0, r3, #0 - adds r0, #2 - adds r0, r1, r0 - ldrh r0, [r0] - strh r0, [r2] - ldr r5, _080298EC @ =gUnknown_086B53B8 - adds r1, r1, r5 - ldrh r0, [r1] - strh r0, [r2, #2] - ldrh r3, [r4] - lsls r3, r3, #3 - ldr r6, _080298E4 @ =gOamBuffer - adds r3, r3, r6 - ldrh r2, [r3, #2] - lsls r1, r2, #0x17 - lsrs r1, r1, #0x17 - lsls r0, r7, #0x10 - asrs r0, r0, #0x10 - adds r1, r1, r0 - ldr r5, _080298F0 @ =0x000001FF - adds r0, r5, #0 - ands r1, r0 - ldr r6, _080298F4 @ =0xFFFFFE00 - adds r0, r6, #0 - ands r2, r0 - orrs r2, r1 - strh r2, [r3, #2] - ldrh r1, [r4] - lsls r1, r1, #3 - ldr r0, _080298E4 @ =gOamBuffer - adds r1, r1, r0 - asrs r0, r7, #0x10 - ldrb r2, [r1] - adds r0, r0, r2 - strb r0, [r1] - mov r0, sb - adds r0, #1 - lsls r0, r0, #0x10 - lsrs r3, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #5 - bgt _080298A2 - b _0802973A -_080298A2: - ldr r3, _080298BC @ =gCurrentPinballGame - ldr r1, [r3] - ldr r5, _080298C0 @ =0x00000606 - adds r2, r1, r5 - ldrh r0, [r2] - cmp r0, #0x2f - bhi _080298F8 - adds r0, #1 - strh r0, [r2] - b _0802990C - .align 2, 0 -_080298B8: .4byte gMain -_080298BC: .4byte gCurrentPinballGame -_080298C0: .4byte 0x00000606 -_080298C4: .4byte gUnknown_086AE1A4 -_080298C8: .4byte 0x000005DA -_080298CC: .4byte 0x000005B9 -_080298D0: .4byte 0x000005C2 -_080298D4: .4byte 0x000036AF -_080298D8: .4byte 0xFFFF0000 -_080298DC: .4byte 0xFFFFFED4 -_080298E0: .4byte 0x0000FFFF -_080298E4: .4byte gOamBuffer -_080298E8: .4byte gUnknown_086B53B4 -_080298EC: .4byte gUnknown_086B53B8 -_080298F0: .4byte 0x000001FF -_080298F4: .4byte 0xFFFFFE00 -_080298F8: - ldr r6, _0802991C @ =0x000006CA - adds r1, r1, r6 - movs r2, #0 - movs r0, #0xe2 - lsls r0, r0, #7 - strh r0, [r1] - ldr r1, _08029920 @ =gMain - ldr r0, [r1, #0x44] - ldr r0, [r0, #0x30] - strh r2, [r0] -_0802990C: - add sp, #4 - 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 -_0802991C: .4byte 0x000006CA -_08029920: .4byte gMain - thumb_func_start sub_29924 sub_29924: @ 0x08029924 push {r4, r5, r6, r7, lr} diff --git a/expected_objs/sub_28AE0.o b/expected_objs/sub_28AE0.o deleted file mode 100644 index bffeec2..0000000 Binary files a/expected_objs/sub_28AE0.o and /dev/null differ diff --git a/expected_objs/sub_28C90.o b/expected_objs/sub_28C90.o deleted file mode 100644 index b06b561..0000000 Binary files a/expected_objs/sub_28C90.o and /dev/null differ diff --git a/expected_objs/sub_28E2C.o b/expected_objs/sub_28E2C.o deleted file mode 100644 index 43f5fe2..0000000 Binary files a/expected_objs/sub_28E2C.o and /dev/null differ diff --git a/expected_objs/sub_28EA0.o b/expected_objs/sub_28EA0.o deleted file mode 100644 index def378b..0000000 Binary files a/expected_objs/sub_28EA0.o and /dev/null differ diff --git a/expected_objs/sub_292A0.o b/expected_objs/sub_292A0.o deleted file mode 100644 index 67a272f..0000000 Binary files a/expected_objs/sub_292A0.o and /dev/null differ diff --git a/expected_objs/sub_29334.o b/expected_objs/sub_29334.o deleted file mode 100644 index f0ac634..0000000 Binary files a/expected_objs/sub_29334.o and /dev/null differ diff --git a/expected_objs/sub_293D8.o b/expected_objs/sub_293D8.o deleted file mode 100644 index 6ca6c62..0000000 Binary files a/expected_objs/sub_293D8.o and /dev/null differ diff --git a/expected_objs/sub_29624.o b/expected_objs/sub_29624.o deleted file mode 100644 index cc727d5..0000000 Binary files a/expected_objs/sub_29624.o and /dev/null differ diff --git a/expected_objs/sub_29664.o b/expected_objs/sub_29664.o deleted file mode 100644 index 290a0a4..0000000 Binary files a/expected_objs/sub_29664.o and /dev/null differ diff --git a/expected_objs/sub_2971C.o b/expected_objs/sub_2971C.o deleted file mode 100644 index 3e79cc7..0000000 Binary files a/expected_objs/sub_2971C.o and /dev/null differ diff --git a/include/functions.h b/include/functions.h index e63dc3e..55e97fb 100644 --- a/include/functions.h +++ b/include/functions.h @@ -493,8 +493,8 @@ extern void sub_22978(); //extern ? sub_24350(); //extern ? sub_24408(); extern void sub_2530C(void); -//extern ? sub_253E0(); -//extern ? sub_25808(); +extern void sub_253E0(void); +extern void sub_25808(void); //extern ? sub_25F64(); //extern ? sub_260B8(); //extern ? sub_26778(); diff --git a/include/global.h b/include/global.h index c877637..e932f16 100644 --- a/include/global.h +++ b/include/global.h @@ -172,15 +172,13 @@ struct PinballGame /*0x071*/ s8 unk71; /*0x072*/ s8 unk72; /*0x073*/ s8 unk73; - /*0x074*/ u16 unk74; - /*0x076*/ u16 unk76; - /*0x078*/ u16 unk78; - /*0x07A*/ u16 unk7A; + /*0x074*/ u16 unk74[4]; /*0x07C*/ u16 unk7C; /*0x07E*/ u16 unk7E; /*0x080*/ s16 unk80; /*0x082*/ s16 unk82; - /*0x084*/ u8 filler84[0x38]; + /*0x084*/ struct Vector16 unk84[4]; + /*0x094*/ u8 filler94[0x28]; /*0x0BC*/ s16 unkBC; /*0x0BE*/ s16 unkBE; /*0x0C0*/ s16 unkC0; @@ -586,7 +584,11 @@ struct PinballGame /*0x5AC*/ s32 unk5AC; /*0x5B0*/ u16 unk5B0; /*0x5B2*/ u8 unk5B2; - /*0x5B3*/ u8 filler5B3[0x3D]; + /*0x5B3*/ u8 filler5B3[0x6]; + /*0x5B9*/ s8 unk5B9[6]; + /*0x5BF*/ u8 filler5BF[0x1]; + /*0x5C0*/ struct Vector16 unk5C0[6]; + /*0x5D8*/ struct Vector16 unk5D8[6]; /*0x5F0*/ u16 caughtMonCount; // Number of mons caught in this game /*0x5F2*/ s8 unk5F2; /*0x5F3*/ s8 unk5F3; @@ -600,12 +602,14 @@ struct PinballGame /*0x5FE*/ s16 unk5FE; /*0x600*/ u16 unk600; /*0x602*/ u8 unk602; - /*0x603*/ u8 filler603[0x11]; + /*0x603*/ u8 filler603[0x3]; + /*0x606*/ u16 unk606; + /*0x608*/ u8 filler608[0xC]; /*0x614*/ u16 unk614; /*0x616*/ u8 filler616[0x6]; /*0x61C*/ s8 unk61C; /*0x61D*/ u8 filler61D[0x8]; - /*0x625*/ u8 unk625; + /*0x625*/ s8 unk625; /*0x626*/ u8 filler626[0x4]; /*0x62A*/ u8 unk62A; /*0x62B*/ u8 unk62B; @@ -624,13 +628,13 @@ struct PinballGame /*0x6B8*/ u32 unk6B8; /*0x6BC*/ u8 filler6BC[0x8]; /*0x6C4*/ s8 unk6C4; - /*0x6C5*/ u8 unk6C5; // TODO: unknown type - /*0x6C6*/ u8 unk6C6; + /*0x6C5*/ s8 unk6C5; + /*0x6C6*/ s8 unk6C6; /*0x6C7*/ u8 unk6C7; /*0x6C8*/ s8 unk6C8; /*0x6C9*/ s8 unk6C9; /*0x6CA*/ u16 unk6CA; - /*0x6CC*/ u8 unk6CC; + /*0x6CC*/ s8 unk6CC; /*0x6CD*/ u8 unk6CD[6]; /*0x6D3*/ u8 unk6D3[6]; /*0x6D9*/ u8 filler6D9[0x2]; diff --git a/include/variables.h b/include/variables.h index 8d97bf3..7c98429 100644 --- a/include/variables.h +++ b/include/variables.h @@ -313,6 +313,8 @@ extern u8 gUnknown_0201B124; extern struct PokemonSpecies gSpeciesInfo[]; extern const struct SpriteSet * const gUnknown_086A54D8[13]; +extern u8 (*gMonHatchSpriteGroupGfx[])[0x10E0]; +extern u8 (*gMonHatchSpriteGroupPals[])[0x20]; extern u32 gUnknown_0202ADD0; extern s16 gUnknown_0202C5F0[]; diff --git a/src/pokedex.c b/src/pokedex.c index 380b3d5..c748541 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -57,8 +57,6 @@ void sub_6F78(s16); extern u8 *gUnknown_086B15B4[]; extern u8 *gUnknown_086BB6F4[]; -extern u8 *gMonHatchSpriteGroupGfx[]; -extern u8 *gMonHatchSpriteGroupPals[]; extern u16 gUnknown_0201C180; extern u16 gUnknown_0202C5B4; @@ -4959,8 +4957,8 @@ void sub_8974(s16 species) quotient = (var0 - 100) / 6; remainder = (var0 - 100) % 6; - sub_10708(gMonHatchSpriteGroupGfx[quotient] + remainder * 0x10E0, (void *)(OBJ_VRAM0 + 0x4800), 135, 1); - DmaCopy16(3, gMonHatchSpriteGroupPals[quotient] + remainder * 0x20, (void *)OBJ_PLTT + 0x60, 0x20); + sub_10708(gMonHatchSpriteGroupGfx[quotient][remainder], (void *)(OBJ_VRAM0 + 0x4800), 135, 1); + DmaCopy16(3, gMonHatchSpriteGroupPals[quotient][remainder], (void *)OBJ_PLTT + 0x60, 0x20); } } diff --git a/src/rom_27F94.c b/src/rom_27F94.c index 48b4720..c39b132 100644 --- a/src/rom_27F94.c +++ b/src/rom_27F94.c @@ -7,14 +7,22 @@ extern u8 gUnknown_0202C7A0[]; extern u8 gUnknown_020306D0[]; extern u8 gUnknown_02030760[]; extern u8 gUnknown_020315D0[]; +extern u8 gUnknown_02031060[]; extern const u8 gUnknown_0839C78C[]; extern const u8 gUnknown_0839DBAC[]; extern const u8 gUnknown_086ACF80[]; extern const u8 gUnknown_081C0064[]; extern const struct Vector16 gUnknown_086AE124[]; -extern const u8 *gMonHatchSpriteGroupGfx[]; -extern const u8 *gMonHatchSpriteGroupPals[]; +extern const u8 (*gUnknown_086BB6F4[])[0x480]; +extern const u8 (*gUnknown_086B15B4[])[0x20]; +extern const u8 gUnknown_0844AA0C[][0x480]; +extern const u16 gUnknown_086B263C[][3][3]; +extern const u16 gUnknown_086AE154[][10]; +extern const s16 gUnknown_086AD436[][2]; +extern const u16 gUnknown_086B55DC[][18]; +extern const s16 gUnknown_086AE1A4[][12]; +extern const u16 gUnknown_086B53B4[][3]; extern struct SongHeader gUnknown_0869F58C; @@ -235,10 +243,10 @@ void sub_28404(void) gCurrentPinballGame->unkC6 = 0; gCurrentPinballGame->unk72F = 0; gCurrentPinballGame->unk731 = 0; - gCurrentPinballGame->unk74 = 0; - gCurrentPinballGame->unk76 = 10; - gCurrentPinballGame->unk78 = 20; - gCurrentPinballGame->unk7A = 30; + gCurrentPinballGame->unk74[0] = 0; + gCurrentPinballGame->unk74[1] = 10; + gCurrentPinballGame->unk74[2] = 20; + gCurrentPinballGame->unk74[3] = 30; gCurrentPinballGame->unk724 = 3240; gCurrentPinballGame->unk714 = 0; gCurrentPinballGame->holeIndicators[0] = 0; @@ -472,186 +480,28 @@ void sub_28544(void) } } -extern const u8 *gUnknown_086BB6F4[]; -extern const u8 *gUnknown_086B15B4[]; - -extern u8 gUnknown_02030730[]; - -#ifdef NONMATCHING void sub_28AE0(void) { s16 i; + s16 catchIndex; const u8 *sp0[3]; const u8 *spC[3]; - s16 var0; - int var1; - s16 var2; - const struct PokemonSpecies *speciesInfo; - const u8 *src0; - const u8 *src1; - int catchIndex; catchIndex = gSpeciesInfo[gCurrentPinballGame->currentSpecies].catchIndex; for (i = 0; i < 3; i++) { - var2 = catchIndex; - var0 = var2 / 5; - var1 = var2 % 5; - sp0[i] = gUnknown_086BB6F4[var0] + (var1 * 3 + i) * 0x480; - spC[i] = gUnknown_086B15B4[var0] + (var1 + i * 5) * 0x20; + sp0[i] = gUnknown_086BB6F4[catchIndex / 5][(i + (catchIndex % 5) * 3)]; + spC[i] = gUnknown_086B15B4[catchIndex / 5][i * 5 + catchIndex % 5]; } for (i = 0; i < 3; i++) { - do { - DmaCopy16(3, sp0[i], &gUnknown_02030760[i * 0x480], 0x480); - DmaCopy16(3, spC[i], &gUnknown_020306D0[i * 0x20], 0x20); - } while (0); + DmaCopy16(3, sp0[i], &gUnknown_02030760[i * 0x480], 0x480); + DmaCopy16(3, spC[i], &gUnknown_020306D0[i * 0x20], 0x20); } - DmaCopy16(3, gUnknown_086B15B4[0] + (15 * 0x20), gUnknown_02030730, 0x20); + DmaCopy16(3, gUnknown_086B15B4[0][15], &gUnknown_020306D0[0x60], 0x20); } -#else -NAKED -void sub_28AE0(void) -{ - asm_unified("\n\ - push {r4, r5, r6, r7, lr}\n\ - mov r7, sl\n\ - mov r6, sb\n\ - mov r5, r8\n\ - push {r5, r6, r7}\n\ - sub sp, #0x18\n\ - ldr r2, _08028BD4 @ =gSpeciesInfo\n\ - ldr r0, _08028BD8 @ =gCurrentPinballGame\n\ - ldr r0, [r0]\n\ - movs r1, #0xb3\n\ - lsls r1, r1, #3\n\ - adds r0, r0, r1\n\ - ldrh r1, [r0]\n\ - lsls r0, r1, #1\n\ - adds r0, r0, r1\n\ - lsls r0, r0, #3\n\ - adds r0, r0, r2\n\ - movs r7, #0\n\ - ldr r6, _08028BDC @ =gUnknown_086BB6F4\n\ - add r3, sp, #0xc\n\ - mov r8, r3\n\ - ldr r4, _08028BE0 @ =gUnknown_02030760\n\ - mov sl, r4\n\ - ldr r1, _08028BE4 @ =gUnknown_020306D0\n\ - mov sb, r1\n\ - ldrb r5, [r0, #0x11]\n\ - adds r0, r5, #0\n\ - movs r1, #5\n\ - bl __divsi3\n\ - adds r4, r0, #0\n\ - adds r0, r5, #0\n\ - movs r1, #5\n\ - bl __modsi3\n\ - lsls r4, r4, #0x10\n\ - asrs r4, r4, #0xe\n\ - adds r6, r4, r6\n\ - lsls r0, r0, #0x10\n\ - asrs r5, r0, #0x10\n\ - ldr r6, [r6]\n\ - mov ip, r6\n\ - ldr r3, _08028BE8 @ =gUnknown_086B15B4\n\ - adds r4, r4, r3\n\ - ldr r6, [r4]\n\ -_08028B3A:\n\ - lsls r3, r7, #0x10\n\ - asrs r3, r3, #0x10\n\ - lsls r2, r3, #2\n\ - mov r0, sp\n\ - adds r4, r0, r2\n\ - lsls r1, r5, #1\n\ - adds r1, r1, r5\n\ - adds r1, r3, r1\n\ - lsls r0, r1, #3\n\ - adds r0, r0, r1\n\ - lsls r0, r0, #7\n\ - add r0, ip\n\ - str r0, [r4]\n\ - mov r1, r8\n\ - adds r0, r1, r2\n\ - adds r2, r2, r3\n\ - adds r2, r2, r5\n\ - lsls r2, r2, #5\n\ - adds r2, r6, r2\n\ - str r2, [r0]\n\ - adds r3, #1\n\ - lsls r3, r3, #0x10\n\ - lsrs r7, r3, #0x10\n\ - asrs r3, r3, #0x10\n\ - cmp r3, #2\n\ - ble _08028B3A\n\ - movs r7, #0\n\ - ldr r3, _08028BEC @ =0x040000D4\n\ -_08028B72:\n\ - lsls r1, r7, #0x10\n\ - asrs r1, r1, #0x10\n\ - lsls r2, r1, #2\n\ - mov r4, sp\n\ - adds r0, r4, r2\n\ - ldr r0, [r0]\n\ - str r0, [r3]\n\ - lsls r0, r1, #3\n\ - adds r0, r0, r1\n\ - lsls r0, r0, #7\n\ - add r0, sl\n\ - str r0, [r3, #4]\n\ - ldr r0, _08028BF0 @ =0x80000240\n\ - str r0, [r3, #8]\n\ - ldr r0, [r3, #8]\n\ - add r2, r8\n\ - ldr r0, [r2]\n\ - str r0, [r3]\n\ - lsls r0, r1, #5\n\ - add r0, sb\n\ - str r0, [r3, #4]\n\ - ldr r2, _08028BF4 @ =0x80000010\n\ - str r2, [r3, #8]\n\ - ldr r0, [r3, #8]\n\ - adds r1, #1\n\ - lsls r1, r1, #0x10\n\ - lsrs r7, r1, #0x10\n\ - asrs r1, r1, #0x10\n\ - cmp r1, #2\n\ - ble _08028B72\n\ - ldr r0, _08028BEC @ =0x040000D4\n\ - ldr r3, _08028BE8 @ =gUnknown_086B15B4\n\ - ldr r1, [r3]\n\ - movs r4, #0xf0\n\ - lsls r4, r4, #1\n\ - adds r1, r1, r4\n\ - str r1, [r0]\n\ - ldr r1, _08028BF8 @ =gUnknown_02030730\n\ - str r1, [r0, #4]\n\ - str r2, [r0, #8]\n\ - ldr r0, [r0, #8]\n\ - add sp, #0x18\n\ - pop {r3, r4, r5}\n\ - mov r8, r3\n\ - mov sb, r4\n\ - mov sl, r5\n\ - pop {r4, r5, r6, r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_08028BD4: .4byte gSpeciesInfo\n\ -_08028BD8: .4byte gCurrentPinballGame\n\ -_08028BDC: .4byte gUnknown_086BB6F4\n\ -_08028BE0: .4byte gUnknown_02030760\n\ -_08028BE4: .4byte gUnknown_020306D0\n\ -_08028BE8: .4byte gUnknown_086B15B4\n\ -_08028BEC: .4byte 0x040000D4\n\ -_08028BF0: .4byte 0x80000240\n\ -_08028BF4: .4byte 0x80000010\n\ -_08028BF8: .4byte gUnknown_02030730\n\ - "); -} -#endif void sub_28BFC(void) { @@ -660,8 +510,389 @@ void sub_28BFC(void) const u8 *src1; eggIndex= gSpeciesInfo[gCurrentPinballGame->currentSpecies].eggIndex; - src0 = gMonHatchSpriteGroupGfx[eggIndex / 6] + (eggIndex % 6) * 0x10E0; - src1 = gMonHatchSpriteGroupPals[eggIndex / 6] + (eggIndex % 6) * 0x20; + src0 = gMonHatchSpriteGroupGfx[eggIndex / 6][eggIndex % 6]; + src1 = gMonHatchSpriteGroupPals[eggIndex / 6][eggIndex % 6]; DmaCopy16(3, src0, gUnknown_0202C7A0, 0x10E0); DmaCopy16(3, src1, gUnknown_020315D0, 0x20); } + +void sub_28C90(void) +{ + s16 i; + struct SpriteGroup *group; + struct OamDataSimple *oamSimple; + s16 priority; + s16 index; + + index = (gMain.fieldFrameCount % 50) / 25; + group = gMain.unk44[33]; + if (!group->available) + return; + + gCurrentPinballGame->unkC4 = 96; + gCurrentPinballGame->unkC6 = 288; + group->baseX = 96 - gCurrentPinballGame->unk58; + group->baseY = 288 - gCurrentPinballGame->unk5A; + if (gCurrentPinballGame->unk5A9 > 4) + { + if (gCurrentPinballGame->unk5A9 == 20 || gCurrentPinballGame->unk5A9 == 200) + { + DmaCopy16(3, gUnknown_02031060, (void *)0x06010CA0, 0x480); + } + + if (gCurrentPinballGame->unk5A9 == 24) + { + DmaCopy16(3, gUnknown_02030760, (void *)0x06010CA0, 0x480); + } + + gCurrentPinballGame->unk5A9--;; + } + else if (gCurrentPinballGame->unk1BC == 5) + { + DmaCopy16(3, &gUnknown_02030760[index * 0x480], (void *)0x06010CA0, 0x480); + } + + if (gCurrentPinballGame->unk5A8 < 13) + priority = 2; + else + priority = 1; + + if (group->baseY >= 200) + group->baseY = 200; + + for (i = 0; i < 4; i++) + { + oamSimple = &group->oam[i]; + gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; + gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; + gOamBuffer[oamSimple->oamId].priority = priority; + } +} + +void sub_28E2C(void) +{ + s16 i; + struct SpriteGroup *group; + struct OamDataSimple *oamSimple; + + group = gMain.unk44[33]; + if (group->available) + { + for (i = 0; i < 4; i++) + { + oamSimple = &group->oam[i]; + gOamBuffer[oamSimple->oamId].x = 200; + gOamBuffer[oamSimple->oamId].y = 180; + } + } + + gMain.unk44[33]->available = 0; +} + +void sub_28EA0(void) +{ + s16 i, j; + struct SpriteGroup *group; + struct OamDataSimple *oamSimple; + u16 *dst; + const u16 *src; + s16 index; + s16 priority; + s16 var1; + + index = (gMain.fieldFrameCount % 50) / 25; + group = gMain.unk44[33]; + if (group->available) + { + gCurrentPinballGame->unkC4 = gCurrentPinballGame->unkC0 / 10 + 96; + gCurrentPinballGame->unkC6 = gCurrentPinballGame->unkC2 / 10 + 288; + group->baseX = gCurrentPinballGame->unkC0 / 10 + 96u - gCurrentPinballGame->unk58; + group->baseY = gCurrentPinballGame->unkC2 / 10 + 288u - gCurrentPinballGame->unk5A; + if (gCurrentPinballGame->unk17 > 3) + { + if (gCurrentPinballGame->unk18 >= 90) + { + index = (150 - gCurrentPinballGame->unk18) / 4; + DmaCopy16(3, &gUnknown_0844AA0C[index], (void *)0x06010CA0, 0x480); + } + else + { + group->baseY = 190; + } + } + else if (gCurrentPinballGame->unk5A9 > 4) + { + if (gCurrentPinballGame->unk5A9 == 20 || gCurrentPinballGame->unk5A9 == 200) + { + DmaCopy16(3, gUnknown_02031060, (void *)0x06010CA0, 0x480); + } + + if (gCurrentPinballGame->unk5A9 == 24) + { + DmaCopy16(3, gUnknown_02030760, (void *)0x06010CA0, 0x480); + } + + gCurrentPinballGame->unk5A9--; + } + else if (gCurrentPinballGame->unk1BC == 5) + { + DmaCopy16(3, &gUnknown_02030760[index * 0x480], (void *)0x06010CA0, 0x480); + } + + if (gCurrentPinballGame->unk5A4 != 2) + { + priority = 1; + } + else + { + if (gCurrentPinballGame->unk5A8 < 13) + priority = 2; + else + priority = 1; + } + + if (group->baseY >= 200) + group->baseY = 200; + else if (group->baseY < -60) + group->baseY = -60; + + for (i = 0; i < 4; i++) + { + oamSimple = &group->oam[i]; + gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; + gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; + gOamBuffer[oamSimple->oamId].priority = priority; + } + } + + for (j = 0; j < 4; j++) + { + + group = gMain.unk44[45 + j]; + if (group->available) + { + group->baseX = gCurrentPinballGame->unk84[j].x - gCurrentPinballGame->unk58; + group->baseY = gCurrentPinballGame->unk84[j].y - gCurrentPinballGame->unk5A; + var1 = gUnknown_086AE154[j][9 - gCurrentPinballGame->unk74[j] / 4]; + if (group->baseY >= 200) + group->baseY = 200; + else if (group->baseY < -60) + group->baseY = -60; + + for (i = 0; i < 3; i++) + { + oamSimple = &group->oam[i]; + dst = (u16*)&gOamBuffer[oamSimple->oamId]; + src = gUnknown_086B263C[var1][i]; + *dst++ = *src++; + *dst++ = *src++; + *dst++ = *src++; + + gOamBuffer[oamSimple->oamId].x += group->baseX; + gOamBuffer[oamSimple->oamId].y += group->baseY; + } + } + + if (gCurrentPinballGame->unk5A4 != 2 && gCurrentPinballGame->unk17 < 4) + { + if (gCurrentPinballGame->unk74[j] == 0) + { + gCurrentPinballGame->unk74[j] = 40; + gCurrentPinballGame->unk84[j].x = gCurrentPinballGame->unkC4; + gCurrentPinballGame->unk84[j].y = gCurrentPinballGame->unkC6 + 16; + gMain.unk44[45 + j]->available = 1; + } + } + + if (gCurrentPinballGame->unk74[j]) + { + gCurrentPinballGame->unk74[j]--; + if (gCurrentPinballGame->unk74[j] == 0) + gMain.unk44[45 + j]->available = 0; + } + } +} + +void sub_292A0(void) +{ + s16 i; + struct SpriteGroup *group; + struct OamDataSimple *oamSimple; + + group = gMain.unk44[33]; + if (group->available) + { + for (i = 0; i < 4; i++) + { + oamSimple = &group->oam[i]; + gOamBuffer[oamSimple->oamId].x = 200; + gOamBuffer[oamSimple->oamId].y = 180; + } + } + + gMain.unk44[33]->available = 0; + for (i = 0; i < 4; i++) + gMain.unk44[45 + i]->available = 0; +} + +void sub_29334(void) +{ + if (gCurrentPinballGame->unk68 > 138) + { + if (gCurrentPinballGame->unk6C5 == 0 && gCurrentPinballGame->unk625 > 0) + { + if (gCurrentPinballGame->unk6C6 + 6 == gCurrentPinballGame->unk625) + { + gCurrentPinballGame->unk6C5 = 2; + gCurrentPinballGame->unk3C = 300000; + } + else + { + gCurrentPinballGame->unk6C5 = 1; + } + } + + gCurrentPinballGame->unk6C6 = gCurrentPinballGame->unk625; + } + + if (gCurrentPinballGame->unk6C5 == 2) + sub_25808(); + else if (gCurrentPinballGame->unk6C5 == 1) + sub_253E0(); +} + +void sub_293D8(void) +{ + s16 i; + struct SpriteGroup *group; + struct OamDataSimple *oamSimple; + u16 *dst; + + if (gUnknown_086AD436[gCurrentPinballGame->unk6CC][1] > gCurrentPinballGame->unk6CA) + { + gCurrentPinballGame->unk6CA++; + } + else + { + gCurrentPinballGame->unk6CA = 0; + gCurrentPinballGame->unk6CC++; + } + + if (gCurrentPinballGame->unk6CC == 2 && gCurrentPinballGame->unk6CA > 3) + { + gCurrentPinballGame->unk6C4 = 3; + gMain.unk44[33]->available = 1; + } + + if (gCurrentPinballGame->unk6CC > 2) + { + DmaCopy16(3, gUnknown_020306D0, (void *)0x050003A0, 0x20); + DmaCopy16(3, gUnknown_02030760, (void *)0x06010CA0, 0x480); + sub_28C90(); + } + + group = gMain.unk44[18]; + if (group->available) + { + group->baseX = 96 - gCurrentPinballGame->unk58; + group->baseY = 296 - gCurrentPinballGame->unk5A; + if (group->baseY >= 200) + group->baseY = 200; + + for (i = 0; i < 6; i++) + { + oamSimple = &group->oam[i]; + dst = (u16*)&gOamBuffer[oamSimple->oamId]; + *dst++ = gUnknown_086B55DC[gUnknown_086AD436[gCurrentPinballGame->unk6CC][0]][i*3+0]; + *dst++ = gUnknown_086B55DC[gUnknown_086AD436[gCurrentPinballGame->unk6CC][0]][i*3+1]; + *dst++ = gUnknown_086B55DC[gUnknown_086AD436[gCurrentPinballGame->unk6CC][0]][i*3+2]; + + gOamBuffer[oamSimple->oamId].x += group->baseX; + gOamBuffer[oamSimple->oamId].y += group->baseY; + } + } + + gMain.unk44[18]->available = 1; + if (gCurrentPinballGame->unk6CC > 6) + { + gCurrentPinballGame->unk17++; + gMain.unk44[18]->available = 0; + gCurrentPinballGame->unkE4 = 0; + } +} + +void sub_29624(void) +{ + s16 i; + + gCurrentPinballGame->unk6CC = 0; + for (i = 0; i < 6; i++) + gCurrentPinballGame->unk6D3[i] = 13; +} + +void sub_29664(void) +{ + s16 i; + + for (i = 0; i < 6; i++) + { + gCurrentPinballGame->unk5C0[i].x = 0; + gCurrentPinballGame->unk5C0[i].y = 0; + gCurrentPinballGame->unk5D8[i].x = 200 - (Random() % 400); + gCurrentPinballGame->unk5D8[i].y = 80 - (Random() % 550); + gCurrentPinballGame->unk5B9[i] = 10 + (Random() % 15); + } + + gCurrentPinballGame->unk606 = 0; + gMain.unk44[12]->available = 1; +} + +void sub_2971C(void) +{ + s16 i; + struct SpriteGroup *group; + struct OamDataSimple *oamSimple; + u16 *dst; + const u16 *src; + s16 var0; + struct Vector16 tempVector; + + group = gMain.unk44[12]; + if (group->available) + { + for (i = 0; i < 6; i++) + { + var0 = gUnknown_086AE1A4[i][gCurrentPinballGame->unk606 / 4]; + gCurrentPinballGame->unk5D8[i].y += gCurrentPinballGame->unk5B9[i]; + if (gCurrentPinballGame->unk5C0[i].y < 14000) + { + gCurrentPinballGame->unk5C0[i].x += gCurrentPinballGame->unk5D8[i].x; + gCurrentPinballGame->unk5C0[i].y += gCurrentPinballGame->unk5D8[i].y; + } + + tempVector.x = ((gCurrentPinballGame->unk6C8 % 3) * 16 + 96u - gCurrentPinballGame->unk58) + (gCurrentPinballGame->unk5C0[i].x / 100); + tempVector.y = ((gCurrentPinballGame->unk6C8 / 3) * 16 + 300u - gCurrentPinballGame->unk5A) + (gCurrentPinballGame->unk5C0[i].y / 100); + if (tempVector.y >= 200) + tempVector.y = 200; + + oamSimple = &group->oam[i]; + dst = (u16*)&gOamBuffer[oamSimple->oamId]; + *dst++ = gUnknown_086B53B4[var0][0]; + *dst++ = gUnknown_086B53B4[var0][1]; + *dst++ = gUnknown_086B53B4[var0][2]; + + gOamBuffer[oamSimple->oamId].x += tempVector.x; + gOamBuffer[oamSimple->oamId].y += tempVector.y; + } + } + + if (gCurrentPinballGame->unk606 < 48) + { + gCurrentPinballGame->unk606++; + } + else + { + gCurrentPinballGame->unk6CA = 0x7100; + gMain.unk44[12]->available = 0; + } +}