diff --git a/asm/rom_14740.s b/asm/rom_14740.s index f1e3de3..c230c09 100644 --- a/asm/rom_14740.s +++ b/asm/rom_14740.s @@ -6,2049 +6,6 @@ .text - thumb_func_start sub_15054 -sub_15054: @ 0x08015054 - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - sub sp, #8 - adds r4, r0, #0 - str r1, [sp] - mov ip, r2 - movs r7, #0 - movs r5, #0 - movs r0, #0 - str r0, [sp, #4] - ldr r0, _08015128 @ =gCurrentPinballGame - ldr r2, [r0] - ldr r3, _0801512C @ =0x000005B2 - adds r1, r2, r3 - ldrb r1, [r1] - lsls r1, r1, #0x18 - asrs r1, r1, #0x18 - mov r8, r0 - cmp r1, #0 - beq _08015084 - b _08015298 -_08015084: - adds r0, r2, #0 - adds r0, #0x24 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - beq _08015094 - b _0801539A -_08015094: - movs r6, #0xa9 - lsls r6, r6, #2 - adds r0, r2, r6 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - beq _08015146 - ldr r1, _08015130 @ =0x000002A3 - adds r0, r2, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - bne _080150B4 - b _0801539A -_080150B4: - movs r3, #0xc2 - lsls r3, r3, #1 - adds r0, r2, r3 - ldrh r1, [r0] - ldrh r6, [r4] - adds r1, r1, r6 - adds r3, #2 - adds r0, r2, r3 - ldrh r0, [r0] - ldrh r4, [r4, #2] - adds r0, r0, r4 - lsls r0, r0, #0x10 - lsrs r4, r0, #0x10 - lsls r5, r1, #0x10 - lsrs r0, r5, #0x10 - cmp r0, #0x4f - bls _080150D8 - b _0801539A -_080150D8: - lsls r1, r4, #0x10 - lsrs r0, r1, #0x10 - cmp r0, #0x57 - bls _080150E2 - b _0801539A -_080150E2: - ldr r2, _08015134 @ =gUnknown_08259C10 - asrs r1, r1, #0x10 - lsls r0, r1, #2 - adds r0, r0, r1 - lsls r0, r0, #4 - asrs r1, r5, #0x10 - adds r0, r0, r1 - lsls r0, r0, #1 - adds r0, r0, r2 - ldrh r0, [r0] - ldr r7, _08015138 @ =0x0000FFF0 - ands r7, r0 - movs r5, #0xf - ands r5, r0 - cmp r5, #0 - bne _08015104 - b _0801539A -_08015104: - ldr r6, [sp] - strh r7, [r6] - mov r1, r8 - ldr r0, [r1] - ldr r2, _0801513C @ =0x000002A2 - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #1 - bgt _08015140 - mov r3, ip - strb r5, [r3] - ldr r0, [r1] - adds r0, r0, r2 - movs r1, #7 - strb r1, [r0] - b _0801539A - .align 2, 0 -_08015128: .4byte gCurrentPinballGame -_0801512C: .4byte 0x000005B2 -_08015130: .4byte 0x000002A3 -_08015134: .4byte gUnknown_08259C10 -_08015138: .4byte 0x0000FFF0 -_0801513C: .4byte 0x000002A2 -_08015140: - movs r0, #1 - mov r6, ip - b _08015398 -_08015146: - mov r0, ip - ldrb r1, [r0] - movs r0, #0xf - ands r0, r1 - cmp r0, #0 - beq _08015154 - b _0801539A -_08015154: - movs r1, #0xc2 - lsls r1, r1, #1 - adds r0, r2, r1 - ldrh r3, [r4] - ldrh r1, [r0] - adds r1, r3, r1 - movs r6, #0xc3 - lsls r6, r6, #1 - adds r0, r2, r6 - ldrh r2, [r4, #2] - ldrh r0, [r0] - adds r0, r2, r0 - lsls r0, r0, #0x10 - lsrs r4, r0, #0x10 - lsls r6, r1, #0x10 - lsrs r0, r6, #0x10 - mov sb, r3 - mov sl, r2 - cmp r0, #0x3f - bhi _080151A2 - lsls r1, r4, #0x10 - lsrs r0, r1, #0x10 - cmp r0, #0x3f - bhi _080151A2 - ldr r2, _08015288 @ =gUnknown_08252B10 - asrs r0, r1, #0xa - asrs r1, r6, #0x10 - adds r0, r0, r1 - lsls r0, r0, #1 - adds r0, r0, r2 - ldrh r0, [r0] - ldr r7, _0801528C @ =0x0000FFF0 - ands r7, r0 - movs r5, #0xf - ands r5, r0 - cmp r5, #0 - beq _080151A6 - movs r0, #0 - str r0, [sp, #4] -_080151A2: - cmp r5, #0 - bne _08015246 -_080151A6: - mov r1, r8 - ldr r2, [r1] - movs r3, #0xc4 - lsls r3, r3, #1 - adds r0, r2, r3 - ldrh r1, [r0] - add r1, sb - movs r6, #0xc5 - lsls r6, r6, #1 - adds r0, r2, r6 - ldrh r0, [r0] - add r0, sl - lsls r0, r0, #0x10 - lsrs r4, r0, #0x10 - lsls r3, r1, #0x10 - lsrs r0, r3, #0x10 - cmp r0, #0x3f - bhi _080151F0 - lsls r1, r4, #0x10 - lsrs r0, r1, #0x10 - cmp r0, #0x3f - bhi _080151F0 - ldr r2, _08015288 @ =gUnknown_08252B10 - asrs r0, r1, #0xa - asrs r1, r3, #0x10 - adds r0, r0, r1 - lsls r0, r0, #1 - adds r0, r0, r2 - ldrh r0, [r0] - ldr r7, _0801528C @ =0x0000FFF0 - ands r7, r0 - movs r5, #0xf - ands r5, r0 - cmp r5, #0 - beq _080151F4 - movs r0, #1 - str r0, [sp, #4] -_080151F0: - cmp r5, #0 - bne _08015246 -_080151F4: - mov r1, r8 - ldr r2, [r1] - movs r3, #0xc6 - lsls r3, r3, #1 - adds r0, r2, r3 - ldrh r1, [r0] - add r1, sb - movs r6, #0xc7 - lsls r6, r6, #1 - adds r0, r2, r6 - ldrh r0, [r0] - add r0, sl - lsls r0, r0, #0x10 - lsrs r4, r0, #0x10 - lsls r3, r1, #0x10 - lsrs r0, r3, #0x10 - cmp r0, #0x3f - bhi _08015240 - lsls r1, r4, #0x10 - lsrs r0, r1, #0x10 - cmp r0, #0x3f - bhi _08015240 - ldr r2, _08015288 @ =gUnknown_08252B10 - asrs r0, r1, #0xa - asrs r1, r3, #0x10 - adds r0, r0, r1 - lsls r0, r0, #1 - adds r0, r0, r2 - ldrh r0, [r0] - ldr r7, _0801528C @ =0x0000FFF0 - ands r7, r0 - movs r5, #0xf - ands r5, r0 - cmp r5, #0 - bne _0801523C - b _0801539A -_0801523C: - movs r0, #2 - str r0, [sp, #4] -_08015240: - cmp r5, #0 - bne _08015246 - b _0801539A -_08015246: - mov r2, r8 - ldr r1, [r2] - ldr r3, _08015290 @ =0x0000016F - adds r0, r1, r3 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - bne _08015266 - movs r6, #0xb8 - lsls r6, r6, #1 - adds r0, r1, r6 - ldr r1, [sp, #4] - adds r0, r0, r1 - movs r1, #0x6b - strb r1, [r0] -_08015266: - ldr r2, [sp] - strh r7, [r2] - mov r3, ip - strb r5, [r3] - mov r6, r8 - ldr r0, [r6] - ldr r2, _08015294 @ =0x00000624 - adds r1, r0, r2 - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #0 - ble _08015280 - b _0801539A -_08015280: - movs r0, #2 - strb r0, [r1] - b _0801539A - .align 2, 0 -_08015288: .4byte gUnknown_08252B10 -_0801528C: .4byte 0x0000FFF0 -_08015290: .4byte 0x0000016F -_08015294: .4byte 0x00000624 -_08015298: - mov r3, ip - ldrb r1, [r3] - movs r5, #0xf - adds r0, r5, #0 - ands r0, r1 - cmp r0, #0 - bne _0801539A - ldr r6, _080153AC @ =0x000002E5 - adds r0, r2, r6 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - ble _08015320 - movs r1, #0xbb - lsls r1, r1, #2 - adds r0, r2, r1 - movs r2, #0 - ldrsh r0, [r0, r2] - movs r1, #0x18 - rsbs r1, r1, #0 - subs r1, r1, r0 - lsls r1, r1, #1 - ldrh r3, [r4] - adds r1, r1, r3 - ldr r6, _080153B0 @ =0xFFFFFDBC - adds r0, r6, #0 - ldrh r2, [r4, #2] - adds r0, r0, r2 - lsls r0, r0, #0x10 - lsrs r2, r0, #0x10 - lsls r3, r1, #0x10 - lsrs r0, r3, #0x10 - cmp r0, #0x47 - bhi _08015320 - lsls r1, r2, #0x10 - lsrs r0, r1, #0x10 - cmp r0, #0x47 - bhi _08015320 - ldr r2, _080153B4 @ =gUnknown_08254B10 - asrs r1, r1, #0x10 - lsls r0, r1, #3 - adds r0, r0, r1 - lsls r0, r0, #3 - asrs r1, r3, #0x10 - adds r0, r0, r1 - lsls r0, r0, #1 - adds r0, r0, r2 - ldrh r1, [r0] - ldr r0, _080153B8 @ =0x0000FFF0 - ands r0, r1 - ldr r3, [sp] - strh r0, [r3] - adds r0, r5, #0 - ands r0, r1 - mov r6, ip - strb r0, [r6] - movs r1, #1 - ands r0, r1 - cmp r0, #0 - beq _08015320 - mov r2, r8 - ldr r0, [r2] - ldr r3, _080153BC @ =0x000002E2 - adds r0, r0, r3 - strb r1, [r0] - movs r0, #6 - strb r0, [r6] -_08015320: - mov r6, r8 - ldr r1, [r6] - ldr r2, _080153C0 @ =0x000002E6 - adds r0, r1, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - ble _0801539A - ldr r3, _080153C4 @ =0x000002EE - adds r0, r1, r3 - movs r6, #0 - ldrsh r1, [r0, r6] - subs r1, #0xb4 - lsls r1, r1, #1 - ldrh r0, [r4] - adds r1, r1, r0 - ldr r2, _080153B0 @ =0xFFFFFDBC - adds r0, r2, #0 - ldrh r4, [r4, #2] - adds r0, r0, r4 - lsls r0, r0, #0x10 - lsrs r4, r0, #0x10 - lsls r5, r1, #0x10 - lsrs r0, r5, #0x10 - cmp r0, #0x47 - bhi _0801539A - lsls r1, r4, #0x10 - lsrs r0, r1, #0x10 - cmp r0, #0x47 - bhi _0801539A - ldr r2, _080153C8 @ =gUnknown_08257390 - asrs r1, r1, #0x10 - lsls r0, r1, #3 - adds r0, r0, r1 - lsls r0, r0, #3 - asrs r1, r5, #0x10 - adds r0, r0, r1 - lsls r0, r0, #1 - adds r0, r0, r2 - ldrh r1, [r0] - ldr r0, _080153B8 @ =0x0000FFF0 - ands r0, r1 - ldr r3, [sp] - strh r0, [r3] - movs r0, #0xf - ands r0, r1 - mov r6, ip - strb r0, [r6] - movs r1, #1 - ands r0, r1 - cmp r0, #0 - beq _0801539A - mov r1, r8 - ldr r0, [r1] - ldr r2, _080153BC @ =0x000002E2 - adds r0, r0, r2 - movs r1, #2 - strb r1, [r0] - movs r0, #6 -_08015398: - strb r0, [r6] -_0801539A: - add sp, #8 - 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 -_080153AC: .4byte 0x000002E5 -_080153B0: .4byte 0xFFFFFDBC -_080153B4: .4byte gUnknown_08254B10 -_080153B8: .4byte 0x0000FFF0 -_080153BC: .4byte 0x000002E2 -_080153C0: .4byte 0x000002E6 -_080153C4: .4byte 0x000002EE -_080153C8: .4byte gUnknown_08257390 - - thumb_func_start sub_153CC -sub_153CC: @ 0x080153CC - push {r4, r5, r6, r7, lr} - adds r7, r1, #0 - adds r6, r2, #0 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - subs r0, #1 - cmp r0, #0xe - bls _080153E0 - bl _08016082 -_080153E0: - lsls r0, r0, #2 - ldr r1, _080153EC @ =_080153F0 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080153EC: .4byte _080153F0 -_080153F0: @ jump table - .4byte _0801542C @ case 0 - .4byte _08015494 @ case 1 - .4byte _080154E0 @ case 2 - .4byte _08015578 @ case 3 - .4byte _08015620 @ case 4 - .4byte _0801564C @ case 5 - .4byte _0801567C @ case 6 - .4byte _08015764 @ case 7 - .4byte _08015AA4 @ case 8 - .4byte _08015AF0 @ case 9 - .4byte _08015CA0 @ case 10 - .4byte _08015E4C @ case 11 - .4byte _08015EB4 @ case 12 - .4byte _08015F20 @ case 13 - .4byte _08015F8C @ case 14 -_0801542C: - ldr r0, _0801545C @ =gCurrentPinballGame - ldr r2, [r0] - ldrh r0, [r2, #0x26] - cmp r0, #0 - beq _0801543A - bl _08016082 -_0801543A: - ldr r1, _08015460 @ =0x0000132C - adds r0, r2, r1 - ldr r3, [r0] - movs r4, #0x28 - ldrsh r1, [r3, r4] - ldr r0, _08015464 @ =0x00000167 - cmp r1, r0 - ble _08015470 - movs r1, #0x2a - ldrsh r0, [r3, r1] - cmp r0, #0xc7 - ble _08015468 - adds r1, r2, #0 - adds r1, #0x25 - movs r0, #1 - b _08015476 - .align 2, 0 -_0801545C: .4byte gCurrentPinballGame -_08015460: .4byte 0x0000132C -_08015464: .4byte 0x00000167 -_08015468: - adds r1, r2, #0 - adds r1, #0x25 - movs r0, #3 - b _08015476 -_08015470: - adds r1, r2, #0 - adds r1, #0x25 - movs r0, #2 -_08015476: - strb r0, [r1] - bl sub_1A98C - ldr r0, _08015490 @ =gCurrentPinballGame - ldr r0, [r0] - adds r0, #0x22 - movs r1, #7 - strb r1, [r0] - movs r0, #1 - strh r0, [r7] - bl _08016082 - .align 2, 0 -_08015490: .4byte gCurrentPinballGame -_08015494: - ldr r3, _080154B8 @ =gCurrentPinballGame - ldr r2, [r3] - adds r0, r2, #0 - adds r0, #0x24 - movs r1, #0 - ldrsb r1, [r0, r1] - cmp r1, #0 - bne _080154C0 - ldr r4, _080154BC @ =0x0000132C - adds r0, r2, r4 - ldr r0, [r0] - movs r1, #2 - strb r1, [r0, #1] - ldr r0, [r3] - adds r0, #0x24 - strb r1, [r0] - bl _08016082 - .align 2, 0 -_080154B8: .4byte gCurrentPinballGame -_080154BC: .4byte 0x0000132C -_080154C0: - cmp r1, #2 - beq _080154C8 - bl _08016082 -_080154C8: - ldr r4, _080154DC @ =0x0000132C - adds r0, r2, r4 - ldr r0, [r0] - strb r1, [r0, #1] - ldr r0, [r3] - adds r0, #0x24 - movs r1, #3 - strb r1, [r0] - bl _08016082 - .align 2, 0 -_080154DC: .4byte 0x0000132C -_080154E0: - ldr r1, _08015508 @ =gCurrentPinballGame - ldr r2, [r1] - adds r0, r2, #0 - adds r0, #0x24 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r5, r1, #0 - cmp r0, #2 - bne _08015510 - ldr r1, _0801550C @ =0x0000132C - adds r0, r2, r1 - ldr r1, [r0] - movs r2, #0 - movs r0, #3 - strb r0, [r1, #1] - ldr r0, [r5] - adds r0, #0x24 - strb r2, [r0] - b _08015524 - .align 2, 0 -_08015508: .4byte gCurrentPinballGame -_0801550C: .4byte 0x0000132C -_08015510: - cmp r0, #3 - bne _08015524 - ldr r3, _0801556C @ =0x0000132C - adds r0, r2, r3 - ldr r0, [r0] - movs r1, #2 - strb r1, [r0, #1] - ldr r0, [r5] - adds r0, #0x24 - strb r1, [r0] -_08015524: - ldr r0, [r5] - ldr r4, _08015570 @ =0x000002FB - adds r1, r0, r4 - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #6 - bne _08015536 - movs r0, #7 - strb r0, [r1] -_08015536: - ldr r0, [r5] - movs r1, #0xbc - lsls r1, r1, #2 - adds r2, r0, r1 - ldrb r1, [r2] - movs r3, #0xf0 - adds r0, r3, #0 - ands r0, r1 - cmp r0, #0 - beq _0801554E - movs r0, #0 - strb r0, [r2] -_0801554E: - ldr r0, [r5] - ldr r2, _08015574 @ =0x000001AB - adds r1, r0, r2 - movs r0, #0 - ldrsb r0, [r1, r0] - ands r0, r3 - cmp r0, #0 - bne _08015562 - bl _08016082 -_08015562: - movs r0, #0 - strb r0, [r1] - bl _08016082 - .align 2, 0 -_0801556C: .4byte 0x0000132C -_08015570: .4byte 0x000002FB -_08015574: .4byte 0x000001AB -_08015578: - ldr r1, _080155B8 @ =gCurrentPinballGame - ldr r2, [r1] - movs r3, #0xc0 - lsls r3, r3, #3 - adds r0, r2, r3 - ldrh r3, [r0] - adds r5, r1, #0 - cmp r3, #0 - beq _0801558E - bl _08016082 -_0801558E: - ldr r4, _080155BC @ =0x0000132C - adds r0, r2, r4 - ldr r0, [r0] - movs r1, #0x10 - ldrsh r0, [r0, r1] - cmp r0, #0x83 - ble _080155C4 - movs r0, #0xfa - lsls r0, r0, #2 - str r0, [r2, #0x3c] - ldr r3, _080155C0 @ =0x0000070E - adds r1, r2, r3 - ldrb r2, [r1] - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #0x62 - bgt _08015604 - adds r0, r2, #1 - strb r0, [r1] - b _08015604 - .align 2, 0 -_080155B8: .4byte gCurrentPinballGame -_080155BC: .4byte 0x0000132C -_080155C0: .4byte 0x0000070E -_080155C4: - cmp r0, #0x5b - ble _080155E4 - movs r0, #0xfa - lsls r0, r0, #3 - str r0, [r2, #0x3c] - movs r4, #0xba - lsls r4, r4, #1 - adds r0, r2, r4 - strh r3, [r0] - ldr r0, _080155E0 @ =0x0000016F - adds r1, r2, r0 - movs r0, #1 - strb r0, [r1] - b _08015604 - .align 2, 0 -_080155E0: .4byte 0x0000016F -_080155E4: - movs r0, #0xfa - lsls r0, r0, #2 - str r0, [r2, #0x3c] - ldr r3, _0801561C @ =0x000002B2 - adds r1, r2, r3 - movs r2, #0 - ldrsb r2, [r1, r2] - cmp r2, #0 - bne _08015604 - movs r0, #1 - strb r0, [r1] - ldr r0, [r5] - movs r4, #0xac - lsls r4, r4, #2 - adds r0, r0, r4 - strh r2, [r0] -_08015604: - ldr r0, [r5] - movs r1, #0xc0 - lsls r1, r1, #3 - adds r0, r0, r1 - movs r1, #0x2d - strh r1, [r0] - movs r0, 0x76 @=SE_UNKNOWN_0x76 - bl m4aSongNumStart - bl _08016082 - .align 2, 0 -_0801561C: .4byte 0x000002B2 -_08015620: - ldr r1, _08015640 @ =gCurrentPinballGame - ldr r0, [r1] - adds r0, #0x20 - movs r3, #0 - movs r2, #1 - strb r2, [r0] - ldr r0, [r1] - ldr r4, _08015644 @ =0x00000165 - adds r0, r0, r4 - strb r2, [r0] - ldr r0, [r1] - ldr r1, _08015648 @ =0x00000732 - adds r0, r0, r1 - strb r3, [r0] - bl _08016082 - .align 2, 0 -_08015640: .4byte gCurrentPinballGame -_08015644: .4byte 0x00000165 -_08015648: .4byte 0x00000732 -_0801564C: - ldr r4, _08015670 @ =gCurrentPinballGame - ldr r0, [r4] - ldr r2, _08015674 @ =0x000005B2 - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - beq _08015662 - bl _08016082 -_08015662: - movs r0, #1 - bl sub_46FD4 - ldr r0, [r4] - ldr r3, _08015678 @ =0x0000029E - b _0801588E - .align 2, 0 -_08015670: .4byte gCurrentPinballGame -_08015674: .4byte 0x000005B2 -_08015678: .4byte 0x0000029E -_0801567C: - ldr r5, _080156C4 @ =gCurrentPinballGame - ldr r1, [r5] - ldr r4, _080156C8 @ =0x0000132C - mov ip, r4 - adds r0, r1, r4 - ldr r0, [r0] - movs r2, #0x10 - ldrsh r0, [r0, r2] - cmp r0, #0x31 - bgt _080156D4 - ldr r3, _080156CC @ =0x000002FA - adds r0, r1, r3 - movs r1, #0 - ldrsb r1, [r0, r1] - cmp r1, #0 - bne _08015734 - movs r2, #1 - strb r2, [r0] - ldr r0, [r5] - ldr r4, _080156D0 @ =0x000002FB - adds r0, r0, r4 - strb r2, [r0] - ldr r0, [r5] - adds r0, #0x23 - strb r1, [r0] - ldr r0, [r5] - adds r0, #0x22 - movs r1, #2 - strb r1, [r0] - movs r1, #0xb0 - lsls r1, r1, #8 - adds r0, r1, #0 - strh r0, [r6] - strh r2, [r7] - b _08015734 - .align 2, 0 -_080156C4: .4byte gCurrentPinballGame -_080156C8: .4byte 0x0000132C -_080156CC: .4byte 0x000002FA -_080156D0: .4byte 0x000002FB -_080156D4: - ldr r2, _08015744 @ =0x000002FA - adds r0, r1, r2 - movs r4, #0 - ldrsb r4, [r0, r4] - cmp r4, #1 - bne _08015734 - movs r3, #0 - movs r2, #2 - strb r2, [r0] - ldr r0, [r5] - ldr r1, _08015748 @ =0x000002FB - adds r0, r0, r1 - movs r1, #3 - strb r1, [r0] - ldr r0, [r5] - adds r0, #0x23 - strb r3, [r0] - ldr r0, [r5] - adds r0, #0x22 - strb r2, [r0] - movs r2, #0xa0 - lsls r2, r2, #8 - adds r0, r2, #0 - strh r0, [r6] - strh r4, [r7] - ldr r1, [r5] - mov r4, ip - adds r2, r1, r4 - ldr r0, [r2] - strh r3, [r0, #0x30] - ldr r0, [r2] - strh r3, [r0, #0x32] - ldr r4, _0801574C @ =0x00001378 - adds r0, r1, r4 - ldr r2, _08015750 @ =0x00001334 - adds r1, r1, r2 - movs r2, #0x44 - bl memcpy - ldr r0, [r5] - ldr r3, _08015754 @ =0x00001330 - adds r1, r0, r3 - adds r4, r0, r4 - str r4, [r1] - ldr r4, _08015758 @ =0x00001328 - adds r0, r0, r4 - movs r1, #0x78 - strh r1, [r0] -_08015734: - ldr r0, _0801575C @ =gCurrentPinballGame - ldr r0, [r0] - ldr r1, _08015760 @ =0x00000732 - adds r0, r0, r1 - movs r1, #0xe - strb r1, [r0] - bl _08016082 - .align 2, 0 -_08015744: .4byte 0x000002FA -_08015748: .4byte 0x000002FB -_0801574C: .4byte 0x00001378 -_08015750: .4byte 0x00001334 -_08015754: .4byte 0x00001330 -_08015758: .4byte 0x00001328 -_0801575C: .4byte gCurrentPinballGame -_08015760: .4byte 0x00000732 -_08015764: - ldr r0, _080157A8 @ =gCurrentPinballGame - ldr r2, [r0] - ldr r3, _080157AC @ =0x0000132C - adds r1, r2, r3 - ldr r1, [r1] - movs r4, #0x10 - ldrsh r1, [r1, r4] - adds r5, r0, #0 - cmp r1, #0x32 - bgt _0801580C - ldr r1, _080157B0 @ =0x00000732 - adds r0, r2, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #8 - bne _080157EA - movs r0, #0x13 - ldrsb r0, [r2, r0] - cmp r0, #2 - bgt _080157DC - ldr r3, _080157B4 @ =0x0000072E - adds r0, r2, r3 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #2 - bgt _080157DC - cmp r0, #0 - bne _080157B8 - movs r0, #0xfa - lsls r0, r0, #3 - b _080157C6 - .align 2, 0 -_080157A8: .4byte gCurrentPinballGame -_080157AC: .4byte 0x0000132C -_080157B0: .4byte 0x00000732 -_080157B4: .4byte 0x0000072E -_080157B8: - cmp r0, #1 - bne _080157C4 - ldr r0, _080157C0 @ =0x00001388 - b _080157C6 - .align 2, 0 -_080157C0: .4byte 0x00001388 -_080157C4: - ldr r0, _080157F8 @ =0x00002710 -_080157C6: - str r0, [r2, #0x3c] - ldr r0, _080157FC @ =gCurrentPinballGame - ldr r1, [r0] - ldr r4, _08015800 @ =0x0000072E - adds r1, r1, r4 - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - movs r0, 0x99 @=SE_UNKNOWN_0x99 - bl m4aSongNumStart -_080157DC: - ldr r0, _080157FC @ =gCurrentPinballGame - ldr r1, [r0] - ldr r2, _08015804 @ =0x000006BC - adds r1, r1, r2 - movs r2, #1 - strb r2, [r1] - adds r5, r0, #0 -_080157EA: - ldr r0, [r5] - ldr r3, _08015808 @ =0x00000732 - adds r0, r0, r3 - movs r1, #2 - strb r1, [r0] - bl _08016082 - .align 2, 0 -_080157F8: .4byte 0x00002710 -_080157FC: .4byte gCurrentPinballGame -_08015800: .4byte 0x0000072E -_08015804: .4byte 0x000006BC -_08015808: .4byte 0x00000732 -_0801580C: - cmp r1, #0x64 - bgt _080158A8 - ldr r4, _0801584C @ =0x00000732 - adds r0, r2, r4 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #7 - bne _0801588A - movs r3, #0xca - lsls r3, r3, #1 - adds r0, r2, r3 - movs r2, #0xa - strb r2, [r0] - ldr r1, [r5] - subs r4, #7 - adds r0, r1, r4 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #2 - bgt _08015878 - cmp r0, #0 - bne _08015850 - movs r0, #0xfa - lsls r0, r0, #3 - str r0, [r1, #0x3c] - adds r1, r1, r3 - movs r0, #1 - strb r0, [r1] - b _0801586C - .align 2, 0 -_0801584C: .4byte 0x00000732 -_08015850: - cmp r0, #1 - bne _08015864 - ldr r0, _08015860 @ =0x00001388 - str r0, [r1, #0x3c] - adds r1, r1, r3 - movs r0, #5 - strb r0, [r1] - b _0801586C - .align 2, 0 -_08015860: .4byte 0x00001388 -_08015864: - ldr r0, _08015898 @ =0x00002710 - str r0, [r1, #0x3c] - adds r0, r1, r3 - strb r2, [r0] -_0801586C: - ldr r1, [r5] - ldr r0, _0801589C @ =0x0000072B - adds r1, r1, r0 - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] -_08015878: - ldr r0, [r5] - movs r1, #0xcb - lsls r1, r1, #1 - adds r2, r0, r1 - movs r1, #0 - strh r1, [r2] - ldr r2, _080158A0 @ =0x0000072C - adds r0, r0, r2 - strh r1, [r0] -_0801588A: - ldr r0, [r5] - ldr r3, _080158A4 @ =0x00000732 -_0801588E: - adds r0, r0, r3 - movs r1, #1 - strb r1, [r0] - bl _08016082 - .align 2, 0 -_08015898: .4byte 0x00002710 -_0801589C: .4byte 0x0000072B -_080158A0: .4byte 0x0000072C -_080158A4: .4byte 0x00000732 -_080158A8: - cmp r1, #0x7e - bgt _08015918 - movs r1, #0xe3 - lsls r1, r1, #3 - adds r0, r2, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - bne _080158C2 - movs r0, #0xfa - lsls r0, r0, #2 - str r0, [r2, #0x3c] -_080158C2: - ldr r0, [r5] - adds r0, r0, r1 - movs r4, #1 - strb r4, [r0] - ldr r0, [r5] - ldr r1, _0801590C @ =0x00000732 - adds r0, r0, r1 - movs r1, #3 - strb r1, [r0] - ldr r1, [r5] - ldr r2, _08015910 @ =0x0000071B - adds r3, r1, r2 - movs r0, #0 - ldrsb r0, [r3, r0] - cmp r0, #0 - beq _080158E6 - bl _08016082 -_080158E6: - subs r2, #2 - adds r0, r1, r2 - adds r2, #1 - adds r1, r1, r2 - ldrb r2, [r0] - ldrb r0, [r1] - ands r0, r2 - cmp r0, #0 - bne _080158FA - b _08016082 -_080158FA: - strb r4, [r3] - ldr r0, [r5] - ldr r3, _08015914 @ =0x0000071C - adds r0, r0, r3 - movs r1, #0x3c - strb r1, [r0] - ldr r1, [r5] - b _08015C7E - .align 2, 0 -_0801590C: .4byte 0x00000732 -_08015910: .4byte 0x0000071B -_08015914: .4byte 0x0000071C -_08015918: - cmp r1, #0x94 - bgt _08015988 - ldr r1, _08015978 @ =0x00000719 - adds r0, r2, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - bne _08015930 - movs r0, #0xfa - lsls r0, r0, #2 - str r0, [r2, #0x3c] -_08015930: - ldr r0, [r5] - adds r0, r0, r1 - movs r4, #1 - strb r4, [r0] - ldr r0, [r5] - ldr r1, _0801597C @ =0x00000732 - adds r0, r0, r1 - movs r1, #4 - strb r1, [r0] - ldr r1, [r5] - ldr r2, _08015980 @ =0x0000071B - adds r3, r1, r2 - movs r0, #0 - ldrsb r0, [r3, r0] - cmp r0, #0 - beq _08015952 - b _08016082 -_08015952: - subs r2, #3 - adds r0, r1, r2 - adds r2, #2 - adds r1, r1, r2 - ldrb r2, [r0] - ldrb r0, [r1] - ands r0, r2 - cmp r0, #0 - bne _08015966 - b _08016082 -_08015966: - strb r4, [r3] - ldr r0, [r5] - ldr r3, _08015984 @ =0x0000071C - adds r0, r0, r3 - movs r1, #0x3c - strb r1, [r0] - ldr r1, [r5] - b _08015C7E - .align 2, 0 -_08015978: .4byte 0x00000719 -_0801597C: .4byte 0x00000732 -_08015980: .4byte 0x0000071B -_08015984: .4byte 0x0000071C -_08015988: - cmp r1, #0xac - bgt _080159F8 - ldr r1, _080159E8 @ =0x0000071A - adds r0, r2, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - bne _080159A0 - movs r0, #0xfa - lsls r0, r0, #2 - str r0, [r2, #0x3c] -_080159A0: - ldr r0, [r5] - adds r0, r0, r1 - movs r4, #1 - strb r4, [r0] - ldr r0, [r5] - ldr r1, _080159EC @ =0x00000732 - adds r0, r0, r1 - movs r1, #5 - strb r1, [r0] - ldr r1, [r5] - ldr r2, _080159F0 @ =0x0000071B - adds r3, r1, r2 - movs r0, #0 - ldrsb r0, [r3, r0] - cmp r0, #0 - beq _080159C2 - b _08016082 -_080159C2: - subs r2, #3 - adds r0, r1, r2 - adds r2, #1 - adds r1, r1, r2 - ldrb r2, [r0] - ldrb r0, [r1] - ands r0, r2 - cmp r0, #0 - bne _080159D6 - b _08016082 -_080159D6: - strb r4, [r3] - ldr r0, [r5] - ldr r3, _080159F4 @ =0x0000071C - adds r0, r0, r3 - movs r1, #0x3c - strb r1, [r0] - ldr r1, [r5] - b _08015C7E - .align 2, 0 -_080159E8: .4byte 0x0000071A -_080159EC: .4byte 0x00000732 -_080159F0: .4byte 0x0000071B -_080159F4: .4byte 0x0000071C -_080159F8: - ldr r4, _08015A28 @ =0x00000732 - adds r0, r2, r4 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #9 - bne _08015A78 - movs r0, #0x13 - ldrsb r0, [r2, r0] - cmp r0, #2 - bgt _08015A6A - ldr r1, _08015A2C @ =0x0000072F - adds r0, r2, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #2 - bgt _08015A6A - cmp r0, #0 - bne _08015A30 - movs r0, #0xfa - lsls r0, r0, #3 - b _08015A3E - .align 2, 0 -_08015A28: .4byte 0x00000732 -_08015A2C: .4byte 0x0000072F -_08015A30: - cmp r0, #1 - bne _08015A3C - ldr r0, _08015A38 @ =0x00001388 - b _08015A3E - .align 2, 0 -_08015A38: .4byte 0x00001388 -_08015A3C: - ldr r0, _08015A84 @ =0x00002710 -_08015A3E: - str r0, [r2, #0x3c] - ldr r5, _08015A88 @ =gCurrentPinballGame - ldr r1, [r5] - ldr r4, _08015A8C @ =0x0000072F - adds r1, r1, r4 - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - ldr r0, _08015A90 @ =gMPlayInfo_SE1 - ldr r1, _08015A94 @ =gUnknown_0869FC0C - bl MPlayStart - ldr r1, [r5] - adds r4, r1, r4 - movs r0, #0 - ldrsb r0, [r4, r0] - cmp r0, #1 - ble _08015A6A - ldr r2, _08015A98 @ =0x00000731 - adds r1, r1, r2 - movs r0, #1 - strb r0, [r1] -_08015A6A: - ldr r0, _08015A88 @ =gCurrentPinballGame - ldr r1, [r0] - ldr r3, _08015A9C @ =0x000006BC - adds r1, r1, r3 - movs r2, #2 - strb r2, [r1] - adds r5, r0, #0 -_08015A78: - ldr r0, [r5] - ldr r4, _08015AA0 @ =0x00000732 - adds r0, r0, r4 - movs r1, #6 - strb r1, [r0] - b _08016082 - .align 2, 0 -_08015A84: .4byte 0x00002710 -_08015A88: .4byte gCurrentPinballGame -_08015A8C: .4byte 0x0000072F -_08015A90: .4byte gMPlayInfo_SE1 -_08015A94: .4byte gUnknown_0869FC0C -_08015A98: .4byte 0x00000731 -_08015A9C: .4byte 0x000006BC -_08015AA0: .4byte 0x00000732 -_08015AA4: - ldr r0, _08015AC0 @ =gCurrentPinballGame - ldr r1, [r0] - ldr r2, _08015AC4 @ =0x0000132C - adds r0, r1, r2 - ldr r0, [r0] - movs r3, #0x10 - ldrsh r0, [r0, r3] - cmp r0, #0x32 - bgt _08015ACC - ldr r4, _08015AC8 @ =0x00000732 - adds r1, r1, r4 - movs r0, #8 - strb r0, [r1] - b _08016082 - .align 2, 0 -_08015AC0: .4byte gCurrentPinballGame -_08015AC4: .4byte 0x0000132C -_08015AC8: .4byte 0x00000732 -_08015ACC: - cmp r0, #0x64 - bgt _08015AE0 - ldr r0, _08015ADC @ =0x00000732 - adds r1, r1, r0 - movs r0, #7 - strb r0, [r1] - b _08016082 - .align 2, 0 -_08015ADC: .4byte 0x00000732 -_08015AE0: - ldr r2, _08015AEC @ =0x00000732 - adds r1, r1, r2 - movs r0, #9 - strb r0, [r1] - b _08016082 - .align 2, 0 -_08015AEC: .4byte 0x00000732 -_08015AF0: - ldr r4, _08015B48 @ =gCurrentPinballGame - ldr r1, [r4] - ldr r3, _08015B4C @ =0x0000132C - adds r0, r1, r3 - ldr r0, [r0] - movs r2, #0x10 - ldrsh r0, [r0, r2] - cmp r0, #0x2e - bgt _08015B60 - ldr r3, _08015B50 @ =0x00000732 - adds r0, r1, r3 - movs r1, #0xa - strb r1, [r0] - ldr r1, [r4] - movs r0, #0xe2 - lsls r0, r0, #3 - adds r2, r1, r0 - movs r0, #0 - ldrsb r0, [r2, r0] - cmp r0, #0 - beq _08015B1C - b _08016082 -_08015B1C: - movs r0, #0xfa - lsls r0, r0, #2 - str r0, [r1, #0x3c] - movs r6, #1 - strb r6, [r2] - ldr r3, [r4] - ldr r1, _08015B54 @ =0x00000714 - adds r5, r3, r1 - movs r0, #0 - ldrsb r0, [r5, r0] - cmp r0, #0 - beq _08015B36 - b _08016082 -_08015B36: - ldr r2, _08015B58 @ =0x00000711 - adds r0, r3, r2 - adds r2, #1 - adds r1, r3, r2 - ldrb r2, [r0] - ldrb r0, [r1] - ands r0, r2 - ldr r2, _08015B5C @ =0x00000713 - b _08015C64 - .align 2, 0 -_08015B48: .4byte gCurrentPinballGame -_08015B4C: .4byte 0x0000132C -_08015B50: .4byte 0x00000732 -_08015B54: .4byte 0x00000714 -_08015B58: .4byte 0x00000711 -_08015B5C: .4byte 0x00000713 -_08015B60: - cmp r0, #0x78 - bgt _08015BC0 - ldr r2, _08015BAC @ =0x00000732 - adds r0, r1, r2 - movs r1, #0xb - strb r1, [r0] - ldr r1, [r4] - ldr r3, _08015BB0 @ =0x00000711 - adds r2, r1, r3 - movs r0, #0 - ldrsb r0, [r2, r0] - cmp r0, #0 - beq _08015B7C - b _08016082 -_08015B7C: - movs r0, #0xfa - lsls r0, r0, #2 - str r0, [r1, #0x3c] - movs r6, #1 - strb r6, [r2] - ldr r3, [r4] - ldr r0, _08015BB4 @ =0x00000714 - adds r5, r3, r0 - movs r0, #0 - ldrsb r0, [r5, r0] - cmp r0, #0 - beq _08015B96 - b _08016082 -_08015B96: - movs r1, #0xe2 - lsls r1, r1, #3 - adds r0, r3, r1 - ldr r2, _08015BB8 @ =0x00000712 - adds r1, r3, r2 - ldrb r2, [r0] - ldrb r0, [r1] - ands r0, r2 - ldr r2, _08015BBC @ =0x00000713 - b _08015C64 - .align 2, 0 -_08015BAC: .4byte 0x00000732 -_08015BB0: .4byte 0x00000711 -_08015BB4: .4byte 0x00000714 -_08015BB8: .4byte 0x00000712 -_08015BBC: .4byte 0x00000713 -_08015BC0: - cmp r0, #0xc1 - bgt _08015C20 - ldr r2, _08015C0C @ =0x00000732 - adds r0, r1, r2 - movs r1, #0xc - strb r1, [r0] - ldr r1, [r4] - ldr r3, _08015C10 @ =0x00000712 - adds r2, r1, r3 - movs r0, #0 - ldrsb r0, [r2, r0] - cmp r0, #0 - beq _08015BDC - b _08016082 -_08015BDC: - movs r0, #0xfa - lsls r0, r0, #2 - str r0, [r1, #0x3c] - movs r6, #1 - strb r6, [r2] - ldr r3, [r4] - ldr r0, _08015C14 @ =0x00000714 - adds r5, r3, r0 - movs r0, #0 - ldrsb r0, [r5, r0] - cmp r0, #0 - beq _08015BF6 - b _08016082 -_08015BF6: - movs r1, #0xe2 - lsls r1, r1, #3 - adds r0, r3, r1 - ldr r2, _08015C18 @ =0x00000711 - adds r1, r3, r2 - ldrb r2, [r0] - ldrb r0, [r1] - ands r0, r2 - ldr r2, _08015C1C @ =0x00000713 - b _08015C64 - .align 2, 0 -_08015C0C: .4byte 0x00000732 -_08015C10: .4byte 0x00000712 -_08015C14: .4byte 0x00000714 -_08015C18: .4byte 0x00000711 -_08015C1C: .4byte 0x00000713 -_08015C20: - ldr r2, _08015C88 @ =0x00000732 - adds r0, r1, r2 - movs r1, #0xd - strb r1, [r0] - ldr r1, [r4] - ldr r3, _08015C8C @ =0x00000713 - adds r2, r1, r3 - movs r0, #0 - ldrsb r0, [r2, r0] - cmp r0, #0 - beq _08015C38 - b _08016082 -_08015C38: - movs r0, #0xfa - lsls r0, r0, #2 - str r0, [r1, #0x3c] - movs r6, #1 - strb r6, [r2] - ldr r3, [r4] - ldr r0, _08015C90 @ =0x00000714 - adds r5, r3, r0 - movs r0, #0 - ldrsb r0, [r5, r0] - cmp r0, #0 - beq _08015C52 - b _08016082 -_08015C52: - movs r1, #0xe2 - lsls r1, r1, #3 - adds r0, r3, r1 - ldr r2, _08015C94 @ =0x00000711 - adds r1, r3, r2 - ldrb r2, [r0] - ldrb r0, [r1] - ands r0, r2 - ldr r2, _08015C98 @ =0x00000712 -_08015C64: - adds r1, r3, r2 - ldrb r1, [r1] - ands r0, r1 - cmp r0, #0 - bne _08015C70 - b _08016082 -_08015C70: - strb r6, [r5] - ldr r0, [r4] - ldr r3, _08015C9C @ =0x00000715 - adds r0, r0, r3 - movs r1, #0x7e - strb r1, [r0] - ldr r1, [r4] -_08015C7E: - movs r0, #0xfa - lsls r0, r0, #4 - str r0, [r1, #0x3c] - b _08016082 - .align 2, 0 -_08015C88: .4byte 0x00000732 -_08015C8C: .4byte 0x00000713 -_08015C90: .4byte 0x00000714 -_08015C94: .4byte 0x00000711 -_08015C98: .4byte 0x00000712 -_08015C9C: .4byte 0x00000715 -_08015CA0: - ldr r1, _08015D18 @ =gCurrentPinballGame - ldr r2, [r1] - ldr r4, _08015D1C @ =0x000005B2 - adds r0, r2, r4 - movs r3, #0 - ldrsb r3, [r0, r3] - adds r5, r1, #0 - cmp r3, #0 - beq _08015CB4 - b _08015DE0 -_08015CB4: - ldr r1, _08015D20 @ =0x0000132C - adds r0, r2, r1 - ldr r0, [r0] - movs r4, #0x10 - ldrsh r0, [r0, r4] - cmp r0, #0xaa - ble _08015D30 - movs r1, #0xbc - lsls r1, r1, #2 - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, #2 - bls _08015CD0 - b _08016082 -_08015CD0: - adds r0, r2, #0 - adds r0, #0x23 - strb r3, [r0] - ldr r0, [r5] - adds r0, #0x22 - movs r1, #2 - strb r1, [r0] - movs r2, #0xb0 - lsls r2, r2, #8 - adds r0, r2, #0 - strh r0, [r6] - movs r0, #1 - strh r0, [r7] - ldr r1, [r5] - movs r0, #0x13 - ldrsb r0, [r1, r0] - cmp r0, #2 - bgt _08015D0E - ldr r3, _08015D24 @ =0x000001AB - adds r1, r1, r3 - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #2 - bgt _08015D0E - movs r0, #3 - strb r0, [r1] - ldr r0, [r5] - ldr r4, _08015D28 @ =0x000002F2 - adds r0, r0, r4 - movs r1, #5 - strh r1, [r0] -_08015D0E: - ldr r1, [r5] - ldr r0, _08015D2C @ =0x0000C350 - str r0, [r1, #0x3c] - b _08016082 - .align 2, 0 -_08015D18: .4byte gCurrentPinballGame -_08015D1C: .4byte 0x000005B2 -_08015D20: .4byte 0x0000132C -_08015D24: .4byte 0x000001AB -_08015D28: .4byte 0x000002F2 -_08015D2C: .4byte 0x0000C350 -_08015D30: - ldr r4, _08015D88 @ =0x000002FB - adds r0, r2, r4 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #4 - bgt _08015D58 - adds r0, r2, #0 - adds r0, #0x23 - strb r3, [r0] - ldr r0, [r5] - adds r0, #0x22 - movs r1, #2 - strb r1, [r0] - movs r1, #0xf8 - lsls r1, r1, #8 - adds r0, r1, #0 - strh r0, [r6] - movs r0, #1 - strh r0, [r7] -_08015D58: - ldr r0, [r5] - adds r1, r0, r4 - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #5 - bne _08015D68 - movs r0, #6 - strb r0, [r1] -_08015D68: - ldr r1, [r5] - ldr r2, _08015D8C @ =0x0000029F - adds r0, r1, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - bne _08015D7A - b _08016082 -_08015D7A: - cmp r0, #1 - bne _08015D94 - ldr r3, _08015D90 @ =0x00000286 - adds r1, r1, r3 - movs r0, #0x5a - strh r0, [r1] - b _08015DB6 - .align 2, 0 -_08015D88: .4byte 0x000002FB -_08015D8C: .4byte 0x0000029F -_08015D90: .4byte 0x00000286 -_08015D94: - movs r4, #0xbe - lsls r4, r4, #2 - adds r0, r1, r4 - movs r1, #1 - strb r1, [r0] - ldr r0, [r5] - ldr r2, _08015DD0 @ =0x0000071B - adds r0, r0, r2 - strb r1, [r0] - ldr r0, [r5] - ldr r3, _08015DD4 @ =0x0000071C - adds r0, r0, r3 - movs r1, #0x3c - strb r1, [r0] - movs r0, 0xD8 @=SE_UNKNOWN_0xD8 - bl m4aSongNumStart -_08015DB6: - ldr r2, _08015DD8 @ =gCurrentPinballGame - ldr r0, [r2] - ldr r4, _08015DDC @ =0x0000029F - adds r0, r0, r4 - movs r1, #0 - strb r1, [r0] - ldr r0, [r2] - movs r1, #0xa8 - lsls r1, r1, #2 - adds r0, r0, r1 - subs r1, #0x48 - strh r1, [r0] - b _08016082 - .align 2, 0 -_08015DD0: .4byte 0x0000071B -_08015DD4: .4byte 0x0000071C -_08015DD8: .4byte gCurrentPinballGame -_08015DDC: .4byte 0x0000029F -_08015DE0: - movs r3, #0xe2 - lsls r3, r3, #1 - adds r0, r2, r3 - ldrh r0, [r0] - cmp r0, #0 - beq _08015DEE - b _08016082 -_08015DEE: - ldr r4, _08015E04 @ =0x0000132C - adds r0, r2, r4 - ldr r0, [r0] - movs r1, #0x10 - ldrsh r0, [r0, r1] - cmp r0, #0x78 - bgt _08015E08 - subs r3, #2 - adds r1, r2, r3 - movs r0, #1 - b _08015E10 - .align 2, 0 -_08015E04: .4byte 0x0000132C -_08015E08: - movs r4, #0xe1 - lsls r4, r4, #1 - adds r1, r2, r4 - movs r0, #2 -_08015E10: - strb r0, [r1] - ldr r2, [r5] - movs r0, #0xf1 - lsls r0, r0, #1 - adds r1, r2, r0 - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #1 - bgt _08015E40 - adds r1, r0, #0 - movs r3, #0xe1 - lsls r3, r3, #1 - adds r0, r2, r3 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - subs r0, #1 - cmp r1, r0 - beq _08015E38 - b _08016082 -_08015E38: - movs r4, #0xe2 - lsls r4, r4, #1 - adds r1, r2, r4 - b _08015E46 -_08015E40: - movs r0, #0xe2 - lsls r0, r0, #1 - adds r1, r2, r0 -_08015E46: - movs r0, #0x78 - strh r0, [r1] - b _08016082 -_08015E4C: - ldr r6, _08015EA4 @ =gCurrentPinballGame - ldr r1, [r6] - ldr r5, _08015EA8 @ =0x00000616 - adds r0, r1, r5 - ldrh r0, [r0] - cmp r0, #0 - beq _08015E5C - b _08016082 -_08015E5C: - ldr r2, _08015EAC @ =0x0000132C - adds r0, r1, r2 - ldr r0, [r0] - ldrh r2, [r0, #0x32] - ldr r3, _08015EB0 @ =0x00000614 - adds r0, r1, r3 - strh r2, [r0] - lsls r0, r2, #0x10 - asrs r0, r0, #0x10 - cmp r0, #0 - bge _08015E78 - rsbs r0, r0, #0 - lsls r0, r0, #0x10 - lsrs r2, r0, #0x10 -_08015E78: - movs r0, #0xe3 - lsls r0, r0, #1 - adds r4, r1, r0 - lsls r0, r2, #0x10 - asrs r0, r0, #0x10 - movs r1, #3 - bl __divsi3 - ldrh r1, [r4] - adds r1, r1, r0 - strh r1, [r4] - lsls r1, r1, #0x10 - asrs r1, r1, #0x10 - cmp r1, #0xa8 - ble _08015E9A - movs r0, #0xa8 - strh r0, [r4] -_08015E9A: - ldr r0, [r6] - adds r0, r0, r5 - movs r1, #0x14 - strh r1, [r0] - b _08016082 - .align 2, 0 -_08015EA4: .4byte gCurrentPinballGame -_08015EA8: .4byte 0x00000616 -_08015EAC: .4byte 0x0000132C -_08015EB0: .4byte 0x00000614 -_08015EB4: - ldr r3, _08015F14 @ =gCurrentPinballGame - ldr r1, [r3] - movs r4, #0xb6 - lsls r4, r4, #2 - adds r0, r1, r4 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - bne _08015ECA - b _08016082 -_08015ECA: - ldrh r0, [r1, #0x26] - cmp r0, #0 - beq _08015ED2 - b _08016082 -_08015ED2: - ldr r2, _08015F18 @ =0x000002DA - adds r1, r1, r2 - ldrb r0, [r1] - movs r2, #0 - ldrsb r2, [r1, r2] - cmp r2, #0 - beq _08015EE2 - b _08016082 -_08015EE2: - adds r0, #1 - strb r0, [r1] - ldr r0, [r3] - adds r0, r0, r4 - strb r2, [r0] - ldr r0, [r3] - adds r0, #0x23 - strb r2, [r0] - ldr r0, [r3] - adds r0, #0x22 - movs r1, #2 - strb r1, [r0] - movs r4, #0xd0 - lsls r4, r4, #8 - adds r0, r4, #0 - strh r0, [r6] - movs r0, #1 - strh r0, [r7] - ldr r1, [r3] - ldr r0, _08015F1C @ =0x00001388 - str r0, [r1, #0x3c] - movs r0, 0xB7 @=SE_UNKNOWN_0xB7 - bl m4aSongNumStart - b _08016020 - .align 2, 0 -_08015F14: .4byte gCurrentPinballGame -_08015F18: .4byte 0x000002DA -_08015F1C: .4byte 0x00001388 -_08015F20: - ldr r4, _08015F80 @ =gCurrentPinballGame - ldr r1, [r4] - movs r5, #0xb6 - lsls r5, r5, #2 - adds r0, r1, r5 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - bne _08015F36 - b _08016082 -_08015F36: - ldrh r2, [r1, #0x26] - cmp r2, #0 - beq _08015F3E - b _08016082 -_08015F3E: - ldr r0, _08015F84 @ =0x000002DA - adds r1, r1, r0 - ldrb r0, [r1] - movs r3, #0 - ldrsb r3, [r1, r3] - cmp r3, #1 - beq _08015F4E - b _08016082 -_08015F4E: - adds r0, #1 - strb r0, [r1] - ldr r0, [r4] - adds r0, r0, r5 - strb r2, [r0] - ldr r0, [r4] - adds r0, #0x23 - strb r2, [r0] - ldr r0, [r4] - adds r0, #0x22 - movs r1, #2 - strb r1, [r0] - movs r1, #0xcc - lsls r1, r1, #8 - adds r0, r1, #0 - strh r0, [r6] - strh r3, [r7] - movs r0, 0xB7 @=SE_UNKNOWN_0xB7 - bl m4aSongNumStart - ldr r1, [r4] - ldr r0, _08015F88 @ =0x00001388 - str r0, [r1, #0x3c] - b _08016020 - .align 2, 0 -_08015F80: .4byte gCurrentPinballGame -_08015F84: .4byte 0x000002DA -_08015F88: .4byte 0x00001388 -_08015F8C: - ldr r0, _08015FE8 @ =gCurrentPinballGame - ldr r3, [r0] - movs r2, #0x13 - ldrsb r2, [r3, r2] - adds r5, r0, #0 - cmp r2, #2 - ble _0801602C - cmp r2, #5 - beq _0801602C - movs r2, #0xb8 - lsls r2, r2, #2 - adds r0, r3, r2 - ldrh r2, [r0] - cmp r2, #0 - bne _08016082 - ldr r4, _08015FEC @ =0x000002DA - adds r0, r3, r4 - movs r1, #0 - ldrsb r1, [r0, r1] - cmp r1, #2 - bne _08015FF4 - adds r0, r3, #0 - adds r0, #0x23 - strb r2, [r0] - ldr r0, [r5] - adds r0, #0x22 - strb r1, [r0] - movs r1, #0xc8 - lsls r1, r1, #8 - adds r0, r1, #0 - strh r0, [r6] - movs r0, #1 - strh r0, [r7] - ldr r1, [r5] - adds r1, r1, r4 - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - movs r0, 0xB7 @=SE_UNKNOWN_0xB7 - bl m4aSongNumStart - ldr r1, [r5] - ldr r0, _08015FF0 @ =0x00001388 - str r0, [r1, #0x3c] - b _08016020 - .align 2, 0 -_08015FE8: .4byte gCurrentPinballGame -_08015FEC: .4byte 0x000002DA -_08015FF0: .4byte 0x00001388 -_08015FF4: - cmp r1, #3 - bne _08016082 - adds r0, r3, #0 - adds r0, #0x23 - strb r2, [r0] - ldr r0, [r5] - adds r0, #0x22 - movs r1, #2 - strb r1, [r0] - movs r2, #0xc8 - lsls r2, r2, #8 - adds r0, r2, #0 - strh r0, [r6] - movs r4, #1 - strh r4, [r7] - movs r0, 0xB7 @=SE_UNKNOWN_0xB7 - bl m4aSongNumStart - ldr r0, [r5] - ldr r3, _08016028 @ =0x000002D9 - adds r0, r0, r3 - strb r4, [r0] -_08016020: - movs r0, #7 - bl sub_11B0 - b _08016082 - .align 2, 0 -_08016028: .4byte 0x000002D9 -_0801602C: - ldr r1, [r5] - movs r4, #0xb6 - lsls r4, r4, #2 - adds r0, r1, r4 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - beq _08016082 - ldr r0, _08016088 @ =0x000002DA - adds r2, r1, r0 - ldrb r0, [r2] - movs r3, #0 - ldrsb r3, [r2, r3] - cmp r3, #2 - bne _08016082 - adds r0, #1 - movs r1, #0 - strb r0, [r2] - ldr r0, [r5] - adds r0, r0, r4 - strb r1, [r0] - ldr r0, [r5] - adds r0, #0x23 - strb r1, [r0] - ldr r0, [r5] - adds r0, #0x22 - strb r3, [r0] - movs r1, #0xc8 - lsls r1, r1, #8 - adds r0, r1, #0 - strh r0, [r6] - movs r0, #1 - strh r0, [r7] - movs r0, 0xB7 @=SE_UNKNOWN_0xB7 - bl m4aSongNumStart - ldr r1, [r5] - ldr r0, _0801608C @ =0x00001388 - str r0, [r1, #0x3c] - movs r0, #7 - bl sub_11B0 -_08016082: - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - .align 2, 0 -_08016088: .4byte 0x000002DA -_0801608C: .4byte 0x00001388 - thumb_func_start COLLISION_CHECK_SAPPHIRE_16090 COLLISION_CHECK_SAPPHIRE_16090: @ 0x08016090 push {r4, r5, r6, r7, lr} diff --git a/expected_objs/sub_15054.o b/expected_objs/sub_15054.o deleted file mode 100644 index f6a70d5..0000000 Binary files a/expected_objs/sub_15054.o and /dev/null differ diff --git a/expected_objs/sub_153CC.o b/expected_objs/sub_153CC.o deleted file mode 100644 index af8ec62..0000000 Binary files a/expected_objs/sub_153CC.o and /dev/null differ diff --git a/include/global.h b/include/global.h index 7c0aeff..49ce207 100644 --- a/include/global.h +++ b/include/global.h @@ -233,7 +233,8 @@ struct PinballGame /*0x130*/ s16 speciesWeights[25]; // Weight of each species /*0x162*/ s8 unk162; /*0x163*/ u8 unk163; - /*0x164*/ u8 filler164[0x2]; + /*0x164*/ u8 filler164[0x1]; + /*0x165*/ u8 unk165; /*0x166*/ u16 unk166; /*0x168*/ u8 filler168[0x4]; /*0x16C*/ s8 unk16C; @@ -262,7 +263,7 @@ struct PinballGame /*0x1A8*/ s8 unk1A8; /*0x1A9*/ u8 unk1A9; /*0x1AA*/ s8 unk1AA; - /*0x1AB*/ u8 unk1AB; + /*0x1AB*/ s8 unk1AB; /*0x1AC*/ s8 unk1AC; /*0x1AD*/ s8 unk1AD; /*0x1AE*/ u8 unk1AE; @@ -673,7 +674,7 @@ struct PinballGame /*0x5AA*/ u16 unk5AA; /*0x5AC*/ s32 unk5AC; /*0x5B0*/ u16 unk5B0; - /*0x5B2*/ u8 unk5B2; + /*0x5B2*/ s8 unk5B2; /*0x5B3*/ u8 filler5B3[0x6]; /*0x5B9*/ s8 unk5B9[6]; /*0x5BF*/ u8 filler5BF[0x1]; @@ -794,7 +795,8 @@ struct PinballGame /*0x72F*/ s8 unk72F; /*0x730*/ s8 unk730; /*0x731*/ s8 unk731; - /*0x732*/ u8 filler732[0x2]; + /*0x732*/ s8 unk732; + /*0x733*/ u8 filler733[0x1]; /*0x734*/ s16 unk734; /*0x736*/ s8 unk736[3]; /*0x739*/ s8 unk739[3]; diff --git a/src/rom_14740.c b/src/rom_14740.c index 8e24764..157bae0 100644 --- a/src/rom_14740.c +++ b/src/rom_14740.c @@ -3,10 +3,18 @@ #include "m4a.h" #include "constants/bg_music.h" +extern const u16 gUnknown_08252B10[]; +extern const u16 gUnknown_08254B10[]; +extern const u16 gUnknown_08257390[]; +extern const u16 gUnknown_08259C10[]; + extern u8 gUnknown_0839A28C[]; extern u16 gUnknown_086ACE2C[][2]; extern s8 gUnknown_086ACDB8[]; +extern struct SongHeader gUnknown_0869FC0C; + + u16 sub_14740(struct Vector16 *arg0, u16 *arg1) { @@ -349,4 +357,738 @@ s16 COLLISION_CHECK_RUBY_14E08(struct Vector16 *arg0, u16* arg1) { sub_153CC((s32) some_enum, &return_val, arg1); return return_val; -} \ No newline at end of file +} + + +void sub_15054(struct Vector16* arg0, u16* arg1, u8* arg2) +{ + s16 deltaX; + s16 deltaY; + u16 maskedResult; + u8 lowerNibble; + s32 ix; + + maskedResult = 0; + lowerNibble = 0; + ix = 0; + + if (gCurrentPinballGame->unk5B2 == 0) + { + if (gCurrentPinballGame->unk24 != 0) + return; + + if (gCurrentPinballGame->unk2A4 != 0) + { + if (gCurrentPinballGame->unk2A3 == 0) + return; + + deltaX = arg0->x + gCurrentPinballGame->unk184[0].x; + deltaY = arg0->y + gCurrentPinballGame->unk184[0].y; + + if (deltaX > 79U) + return; + + if (deltaY > 87U) + return; + + maskedResult = 0xFFF0 & gUnknown_08259C10[(deltaY * 80) + deltaX]; + lowerNibble = 0xF & gUnknown_08259C10[(deltaY * 80) + deltaX]; + + if (lowerNibble == 0) + return; + + *arg1 = maskedResult; + + if (gCurrentPinballGame->unk2A2 <= 1) + { + *arg2 = lowerNibble; + gCurrentPinballGame->unk2A2 = 7; + return; + } + + *arg2 = 1; + return; + } + + if (0xF & *arg2) + return; + + deltaX = arg0->x + (u16) gCurrentPinballGame->unk184[0].x; + deltaY = arg0->y + (u16) gCurrentPinballGame->unk184[0].y; + + if (deltaX <= 63U && deltaY <= 63U) + { + maskedResult = 0xFFF0 & gUnknown_08252B10[(deltaY * 64) + deltaX]; + lowerNibble = 0xF & gUnknown_08252B10[(deltaY * 64) + deltaX]; + + if (lowerNibble != 0) + ix = 0; + } + + if (lowerNibble == 0) + { + deltaX = gCurrentPinballGame->unk184[1].x + arg0->x; + deltaY = gCurrentPinballGame->unk184[1].y + arg0->y; + + if (deltaX <= 63U && deltaY <= 63U) + { + maskedResult = 0xFFF0 & gUnknown_08252B10[(deltaY * 64) + deltaX]; + lowerNibble = 0xF & gUnknown_08252B10[(deltaY * 64) + deltaX]; + if (lowerNibble != 0) + ix = 1; + } + + if (lowerNibble == 0) + { + deltaX = gCurrentPinballGame->unk184[2].x + arg0->x; + deltaY = gCurrentPinballGame->unk184[2].y + arg0->y; + + if (deltaX <= 63U && deltaY <= 63U) + { + maskedResult = 0xFFF0 & gUnknown_08252B10[(deltaY * 64) + deltaX]; + lowerNibble = 0xF & gUnknown_08252B10[(deltaY * 64) + deltaX]; + + if (lowerNibble == 0) + return; + + ix = 2; + } + + if (lowerNibble == 0) + return; + } + } + + if (gCurrentPinballGame->unk16F == 0) + gCurrentPinballGame->unk170[ix] = 107; + + *arg1 = maskedResult; + *arg2 = lowerNibble; + + if (gCurrentPinballGame->unk624 > 0) + return; + + gCurrentPinballGame->unk624 = 2; + } + else + { + if ((*arg2 & 0xF) == 0) + { + if (gCurrentPinballGame->unk2E5[0] > 0) + { + s16 deltaY_alt; + deltaX = 2 * (-24 -gCurrentPinballGame->unk2EC[0]) + arg0->x; + deltaY_alt = arg0->y -580; + + if (deltaX <= 71U && deltaY_alt <= 71U) + { + *arg1 = 0xFFF0 & gUnknown_08254B10[(deltaY_alt * 72) + deltaX]; + *arg2 = 0xF & gUnknown_08254B10[(deltaY_alt * 72) + deltaX]; + + if (*arg2 & 1) + { + gCurrentPinballGame->unk2E2 = 1; + *arg2 = 6; + } + } + } + + if (gCurrentPinballGame->unk2E5[1] > 0) + { + deltaX = ((gCurrentPinballGame->unk2EC[1] - 180) * 2) + arg0->x; + deltaY = arg0->y -580; + + if (deltaX <= 71U && deltaY <= 71U) + { + *arg1 = 0xFFF0 & gUnknown_08257390[(deltaY * 72) + deltaX]; + *arg2 = 0xF & gUnknown_08257390[(deltaY * 72) + deltaX]; + + if (*arg2 & 1) + { + gCurrentPinballGame->unk2E2 = 2; + *arg2 = 6; + return; + } + } + } + } + } +} + +void sub_153CC(s32 arg0, s16* arg1, u16* arg2) +{ + s16 absVelY; + + switch ((u8)arg0 - 1) + { + case 0: + if (gCurrentPinballGame->unk26 == 0) + { + if (gCurrentPinballGame->ball->positionQ1.x > 359) + { + if (gCurrentPinballGame->ball->positionQ1.y > 199) + gCurrentPinballGame->unk25 = 1; + else + gCurrentPinballGame->unk25 = 3; + } + else + gCurrentPinballGame->unk25= 2; + + sub_1A98C(); + gCurrentPinballGame->unk22 = 7; + *arg1 = 1; + return; + } + default: + return; + case 1: + if (gCurrentPinballGame->unk24 == 0) + { + gCurrentPinballGame->ball->unk1 = 2; + gCurrentPinballGame->unk24 = 2; + break; + } + + if (gCurrentPinballGame->unk24 == 2) + { + gCurrentPinballGame->ball->unk1 = 2; + gCurrentPinballGame->unk24 = 3; + } + + break; + case 2: + if (gCurrentPinballGame->unk24 == 2) + { + gCurrentPinballGame->ball->unk1 = 3; + gCurrentPinballGame->unk24 = 0; + } + else if (gCurrentPinballGame->unk24 == 3) + { + gCurrentPinballGame->ball->unk1 = 2; + gCurrentPinballGame->unk24 = 2; + } + + if (gCurrentPinballGame->unk2FB == 6) + gCurrentPinballGame->unk2FB = 7; + + if (gCurrentPinballGame->unk2F0 & 0xF0 ) + gCurrentPinballGame->unk2F0 = 0; + + if (gCurrentPinballGame->unk1AB & 0xF0) + gCurrentPinballGame->unk1AB = 0; + + break; + case 3: + if (gCurrentPinballGame->unk600 == 0) + { + if (gCurrentPinballGame->ball->positionQ0.x > 131) + { + gCurrentPinballGame->unk3C = 1000; + + if (gCurrentPinballGame->unk70E <= 98) + gCurrentPinballGame->unk70E++; + } + else if (gCurrentPinballGame->ball->positionQ0.x > 91) + { + gCurrentPinballGame->unk3C = 2000; + gCurrentPinballGame->unk174 = 0; + gCurrentPinballGame->unk16F = 1; + } + else + { + gCurrentPinballGame->unk3C = 1000; + + if (gCurrentPinballGame->unk2B2 == 0) + { + gCurrentPinballGame->unk2B2 = 1; + gCurrentPinballGame->unk2B0 = 0; + } + } + gCurrentPinballGame->unk600 = 45; + + m4aSongNumStart(SE_UNKNOWN_0x76); + } + break; + case 4: + gCurrentPinballGame->unk20 = 1; + gCurrentPinballGame->unk165 = 1; + gCurrentPinballGame->unk732 = 0; + return; + case 5: + if (gCurrentPinballGame->unk5B2 == 0) + { + sub_46FD4(1); + gCurrentPinballGame->unk29E = 1; + } + break; + case 6: + if (gCurrentPinballGame->ball->positionQ0.x < 50) + { + if (gCurrentPinballGame->unk2FA == 0) + { + gCurrentPinballGame->unk2FA = 1; + gCurrentPinballGame->unk2FB = 1; + gCurrentPinballGame->unk23 = 0; + gCurrentPinballGame->unk22 = 2; + *arg2 = 0xB000; + *arg1 = 1; + } + } + else if (gCurrentPinballGame->unk2FA == 1) + { + gCurrentPinballGame->unk2FA = 2; + gCurrentPinballGame->unk2FB = 3; + gCurrentPinballGame->unk23 = 0; + gCurrentPinballGame->unk22 = 2; + *arg2 = 0xA000; + *arg1 = 1; + gCurrentPinballGame->ball->velocity.x = 0; + gCurrentPinballGame->ball->velocity.y = 0; + + memcpy(&gCurrentPinballGame->unk1334[1], gCurrentPinballGame->unk1334, 0x44U); + + gCurrentPinballGame->unk1330 = &gCurrentPinballGame->unk1334[1]; + gCurrentPinballGame->unk1328 = 120; + } + + gCurrentPinballGame->unk732 = 14; + return; + case 7: + if (gCurrentPinballGame->ball->positionQ0.x <= 50) + { + if (gCurrentPinballGame->unk732 == 8) + { + if (gCurrentPinballGame->unk13 <= 2 && gCurrentPinballGame->unk72E <= 2) + { + if (gCurrentPinballGame->unk72E == 0) + gCurrentPinballGame->unk3C = 2000; + else if (gCurrentPinballGame->unk72E == 1) + gCurrentPinballGame->unk3C = 5000; + else + gCurrentPinballGame->unk3C = 10000; + + gCurrentPinballGame->unk72E++; + + m4aSongNumStart(SE_UNKNOWN_0x99); + } + + gCurrentPinballGame->unk6BC = 1; + } + gCurrentPinballGame->unk732 = 2; + return; + } + + if (gCurrentPinballGame->ball->positionQ0.x <= 100) + { + if (gCurrentPinballGame->unk732 == 7) + { + gCurrentPinballGame->unk194 = 10; + + if(gCurrentPinballGame->unk72B <= 2) + { + if(gCurrentPinballGame->unk72B == 0) + { + gCurrentPinballGame->unk3C = 2000; + gCurrentPinballGame->unk194 = 1; + } + else if(gCurrentPinballGame->unk72B == 1) + { + gCurrentPinballGame->unk3C = 5000; + gCurrentPinballGame->unk194 = 5; + } + else + { + gCurrentPinballGame->unk3C = 10000; + gCurrentPinballGame->unk194 = 10; + } + gCurrentPinballGame->unk72B++; + } + + gCurrentPinballGame->unk196 = 0; + gCurrentPinballGame->unk72C = 0; + } + + gCurrentPinballGame->unk732 = 1; + return; + } + + if (gCurrentPinballGame->ball->positionQ0.x <= 126) + { + if (gCurrentPinballGame->ballPowerUpLight[0] == 0) + gCurrentPinballGame->unk3C = 1000; + + gCurrentPinballGame->ballPowerUpLight[0] = 1; + gCurrentPinballGame->unk732 = 3; + + if (gCurrentPinballGame->unk71B == 0) + { + if (!(gCurrentPinballGame->ballPowerUpLight[1] & + gCurrentPinballGame->ballPowerUpLight[2])) + return; + + gCurrentPinballGame->unk71B = 1; + gCurrentPinballGame->unk71C = 60; + gCurrentPinballGame->unk3C = 4000; + return; + } + } + else + { + if (gCurrentPinballGame->ball->positionQ0.x <= 148) + { + if (gCurrentPinballGame->ballPowerUpLight[1] == 0) + gCurrentPinballGame->unk3C = 1000; + + gCurrentPinballGame->ballPowerUpLight[1] = 1; + gCurrentPinballGame->unk732 = 4; + + if (gCurrentPinballGame->unk71B != 0) + return; + + if (!(gCurrentPinballGame->ballPowerUpLight[0] & + gCurrentPinballGame->ballPowerUpLight[2])) + return; + + gCurrentPinballGame->unk71B = 1; + gCurrentPinballGame->unk71C = 60; + gCurrentPinballGame->unk3C = 4000; + return; + } + + if (gCurrentPinballGame->ball->positionQ0.x <= 172) + { + if (gCurrentPinballGame->ballPowerUpLight[2] == 0) + gCurrentPinballGame->unk3C = 1000; + + gCurrentPinballGame->ballPowerUpLight[2] = 1; + gCurrentPinballGame->unk732 = 5; + + if (gCurrentPinballGame->unk71B != 0) + return; + + if (!(gCurrentPinballGame->ballPowerUpLight[0] & + gCurrentPinballGame->ballPowerUpLight[1])) + return; + + gCurrentPinballGame->unk71B = 1; + gCurrentPinballGame->unk71C = 60; + gCurrentPinballGame->unk3C = 4000; + return; + } + + if (gCurrentPinballGame->unk732 == 9) + { + if (gCurrentPinballGame->unk13 <= 2 && gCurrentPinballGame->unk72F <= 2) + { + if (gCurrentPinballGame->unk72F == 0) + gCurrentPinballGame->unk3C = 2000; + else if (gCurrentPinballGame->unk72F == 1) + gCurrentPinballGame->unk3C = 5000; + else + gCurrentPinballGame->unk3C = 10000; + + gCurrentPinballGame->unk72F++; + + MPlayStart(&gMPlayInfo_SE1, &gUnknown_0869FC0C); + + if (gCurrentPinballGame->unk72F > 1) + gCurrentPinballGame->unk731 = 1; + } + + gCurrentPinballGame->unk6BC = 2; + } + + gCurrentPinballGame->unk732 = 6; + return; + } + break; + case 8: + if (gCurrentPinballGame->ball->positionQ0.x <= 50) + { + gCurrentPinballGame->unk732 = 8; + return; + } + + if (gCurrentPinballGame->ball->positionQ0.x <= 100) + { + gCurrentPinballGame->unk732 = 7; + return; + } + + gCurrentPinballGame->unk732 = 9; + return; + case 9: + if (gCurrentPinballGame->ball->positionQ0.x <= 46) + { + gCurrentPinballGame->unk732 = 10; + + if (gCurrentPinballGame->holeIndicators[0] != 0) + return; + + gCurrentPinballGame->unk3C = 1000; + gCurrentPinballGame->holeIndicators[0] = 1; + + if (gCurrentPinballGame->unk714 != 0) + return; + + if (!(gCurrentPinballGame->holeIndicators[1] & + gCurrentPinballGame->holeIndicators[2] & + gCurrentPinballGame->holeIndicators[3])) + return; + + gCurrentPinballGame->unk714 = 1; + gCurrentPinballGame->unk715 = 126; + gCurrentPinballGame->unk3C = 4000; + return; + } + + if (gCurrentPinballGame->ball->positionQ0.x <= 120) + { + gCurrentPinballGame->unk732 = 11; + + if (gCurrentPinballGame->holeIndicators[1] != 0) + return; + + gCurrentPinballGame->unk3C = 1000; + gCurrentPinballGame->holeIndicators[1] = 1; + + if (gCurrentPinballGame->unk714 != 0) + return; + + if (!(gCurrentPinballGame->holeIndicators[0] & + gCurrentPinballGame->holeIndicators[2] & + gCurrentPinballGame->holeIndicators[3])) + return; + + gCurrentPinballGame->unk714 = 1; + gCurrentPinballGame->unk715 = 126; + gCurrentPinballGame->unk3C = 4000; + return; + } + + if (gCurrentPinballGame->ball->positionQ0.x <= 193) + { + gCurrentPinballGame->unk732 = 12; + + if (gCurrentPinballGame->holeIndicators[2] != 0) + return; + + gCurrentPinballGame->unk3C = 1000; + gCurrentPinballGame->holeIndicators[2] = 1; + + if (gCurrentPinballGame->unk714 != 0) + return; + + if (!(gCurrentPinballGame->holeIndicators[0] & + gCurrentPinballGame->holeIndicators[1] & + gCurrentPinballGame->holeIndicators[3])) + return; + + gCurrentPinballGame->unk714 = 1; + gCurrentPinballGame->unk715 = 126; + gCurrentPinballGame->unk3C = 4000; + return; + } + + gCurrentPinballGame->unk732 = 13; + + if (gCurrentPinballGame->holeIndicators[3] != 0) + return; + + gCurrentPinballGame->unk3C = 1000; + gCurrentPinballGame->holeIndicators[3] = 1; + + if (gCurrentPinballGame->unk714 != 0) + return; + + if (!(gCurrentPinballGame->holeIndicators[0] & + gCurrentPinballGame->holeIndicators[1] & + gCurrentPinballGame->holeIndicators[2])) + return; + + gCurrentPinballGame->unk714 = 1; + gCurrentPinballGame->unk715 = 126; + gCurrentPinballGame->unk3C = 4000; + return; + case 10: + if (gCurrentPinballGame->unk5B2 == 0) + { + if (gCurrentPinballGame->ball->positionQ0.x > 170) + { + if (gCurrentPinballGame->unk2F0 > 2U) + return; + + gCurrentPinballGame->unk23 = 0; + gCurrentPinballGame->unk22 = 2; + *arg2 = 0xB000; + *arg1 = 1; + + if (gCurrentPinballGame->unk13 <= 2 && gCurrentPinballGame->unk1AB <= 2) + { + gCurrentPinballGame->unk1AB = 3; + gCurrentPinballGame->unk2F2 = 5; + } + + gCurrentPinballGame->unk3C = 50000; + return; + } + + if (gCurrentPinballGame->unk2FB <= 4) + { + gCurrentPinballGame->unk23 = 0; + gCurrentPinballGame->unk22 = 2; + *arg2 = 0xF800; + *arg1 = 1; + } + + if (gCurrentPinballGame->unk2FB == 5) + gCurrentPinballGame->unk2FB = 6; + + if (gCurrentPinballGame->unk29F == 0) + return; + + if (gCurrentPinballGame->unk29F == 1) + gCurrentPinballGame->unk286 = 90; + else + { + gCurrentPinballGame->unk2F8 = 1; + gCurrentPinballGame->unk71B = 1; + gCurrentPinballGame->unk71C = 60; + m4aSongNumStart(SE_UNKNOWN_0xD8); + } + + gCurrentPinballGame->unk29F = 0; + gCurrentPinballGame->unk2A0 = 600; + return; + } + + if (gCurrentPinballGame->unk1C4 != 0) + return; + + if (gCurrentPinballGame->ball->positionQ0.x <= 120) + gCurrentPinballGame->unk1C2 = 1; + else + gCurrentPinballGame->unk1C2 = 2; + + if (gCurrentPinballGame->outLanePikaPosition <= 1) + { + if (gCurrentPinballGame->outLanePikaPosition != gCurrentPinballGame->unk1C2 - 1) + return; + else + gCurrentPinballGame->unk1C4 = 120; + return; + } + + gCurrentPinballGame->unk1C4 = 120; + return; + + case 11: + if (gCurrentPinballGame->unk616 != 0) + return; + + absVelY = gCurrentPinballGame->ball->velocity.y; + gCurrentPinballGame->unk614 = gCurrentPinballGame->ball->velocity.y; + + if (absVelY < 0) { + absVelY = -absVelY; + } + + gCurrentPinballGame->unk1C6 += (absVelY) / 3; + + if (gCurrentPinballGame->unk1C6 > 168) + gCurrentPinballGame->unk1C6 = 168; + + gCurrentPinballGame->unk616 = 20; + return; + case 12: + if (gCurrentPinballGame->unk2D8 == 0) + return; + + if (gCurrentPinballGame->unk26 != 0) + return; + + if (gCurrentPinballGame->unk2DA != 0) + return; + + gCurrentPinballGame->unk2DA++; + + gCurrentPinballGame->unk2D8 = 0; + gCurrentPinballGame->unk23 = 0; + gCurrentPinballGame->unk22 = 2; + + *arg2 = 0xD000; + *arg1 = 1; + gCurrentPinballGame->unk3C = 5000; + m4aSongNumStart(SE_UNKNOWN_0xB7); + sub_11B0(7); + return; + case 13: + if (gCurrentPinballGame->unk2D8 == 0) + return; + + if (gCurrentPinballGame->unk26 != 0) + return; + + if (gCurrentPinballGame->unk2DA != 1) + return; + + gCurrentPinballGame->unk2DA++; + gCurrentPinballGame->unk2D8 = 0; + gCurrentPinballGame->unk23 = 0; + gCurrentPinballGame->unk22 = 2; + *arg2 = 0xCC00; + *arg1 = 1; + + m4aSongNumStart(SE_UNKNOWN_0xB7); + gCurrentPinballGame->unk3C = 5000; + sub_11B0(7); + return; + case 14: + if ((gCurrentPinballGame->unk13 > 2) && (gCurrentPinballGame->unk13 != 5)) + { + if (gCurrentPinballGame->unk2E0 == 0) + { + if (gCurrentPinballGame->unk2DA == 2) + { + gCurrentPinballGame->unk23 = 0; + gCurrentPinballGame->unk22 = 2; + *arg2 = 0xC800; + *arg1 = 1; + gCurrentPinballGame->unk2DA++; + + m4aSongNumStart(SE_UNKNOWN_0xB7); + gCurrentPinballGame->unk3C = 5000; + sub_11B0(7); + return; + } + else if (gCurrentPinballGame->unk2DA == 3) + { + gCurrentPinballGame->unk23 = 0; + gCurrentPinballGame->unk22 = 2; + *arg2 = 0xC800; + *arg1 = 1; + + m4aSongNumStart(SE_UNKNOWN_0xB7); + gCurrentPinballGame->unk2D9 = 1; + sub_11B0(7); + return; + } + } + } + else if (gCurrentPinballGame->unk2D8 != 0 && gCurrentPinballGame->unk2DA == 2) + { + gCurrentPinballGame->unk2DA++; + gCurrentPinballGame->unk2D8 = 0; + gCurrentPinballGame->unk23 = 0; + gCurrentPinballGame->unk22 = 2; + *arg2 = 0xC800; + *arg1 = 1; + + m4aSongNumStart(SE_UNKNOWN_0xB7); + gCurrentPinballGame->unk3C = 5000; + sub_11B0(7); + } + + break; + } +}