diff --git a/asm/rom_2530C.s b/asm/rom_2530C.s index 67cb1a7..58f95c3 100644 --- a/asm/rom_2530C.s +++ b/asm/rom_2530C.s @@ -632,890 +632,3 @@ _080257F8: .4byte 0x000006CC _080257FC: .4byte gUnknown_086B53E4 _08025800: .4byte 0x000001FF _08025804: .4byte 0xFFFFFE00 - - thumb_func_start sub_25808 -sub_25808: @ 0x08025808 - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - ldr r1, _08025834 @ =gCurrentPinballGame - ldr r0, [r1] - ldr r2, _08025838 @ =0x00000602 - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r7, r1, #0 - cmp r0, #8 - bls _08025828 - b _08025F36 -_08025828: - lsls r0, r0, #2 - ldr r1, _0802583C @ =_08025840 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08025834: .4byte gCurrentPinballGame -_08025838: .4byte 0x00000602 -_0802583C: .4byte _08025840 -_08025840: @ jump table - .4byte _08025864 @ case 0 - .4byte _080258A8 @ case 1 - .4byte _0802592C @ case 2 - .4byte _08025A7C @ case 3 - .4byte _08025AF8 @ case 4 - .4byte _08025C18 @ case 5 - .4byte _08025C78 @ case 6 - .4byte _08025D60 @ case 7 - .4byte _08025DD0 @ case 8 -_08025864: - ldr r1, [r7] - ldr r3, _08025878 @ =0x00000604 - adds r2, r1, r3 - ldrh r0, [r2] - cmp r0, #0x3b - bhi _0802587C - adds r0, #1 - strh r0, [r2] - b _08025890 - .align 2, 0 -_08025878: .4byte 0x00000604 -_0802587C: - ldr r4, _0802589C @ =0x00000602 - adds r1, r1, r4 - ldrb r0, [r1] - adds r0, #1 - movs r2, #0 - strb r0, [r1] - ldr r0, [r7] - ldr r6, _080258A0 @ =0x00000604 - adds r0, r0, r6 - strh r2, [r0] -_08025890: - ldr r0, _080258A4 @ =gMain - ldrh r1, [r0, #0x38] - movs r1, #0xce - strh r1, [r0, #0x38] - b _08025F36 - .align 2, 0 -_0802589C: .4byte 0x00000602 -_080258A0: .4byte 0x00000604 -_080258A4: .4byte gMain -_080258A8: - ldr r0, [r7] - adds r0, #0xe4 - movs r5, #0 - movs r1, #5 - strb r1, [r0] - ldr r1, _08025900 @ =0x040000D4 - ldr r0, _08025904 @ =gUnknown_083A07CC - str r0, [r1] - ldr r0, _08025908 @ =0x06015800 - str r0, [r1, #4] - ldr r0, _0802590C @ =0x80001000 - str r0, [r1, #8] - ldr r0, [r1, #8] - ldr r0, _08025910 @ =gUnknown_083A27EC - str r0, [r1] - ldr r0, _08025914 @ =0x050003C0 - str r0, [r1, #4] - ldr r0, _08025918 @ =0x80000010 - str r0, [r1, #8] - ldr r0, [r1, #8] - ldr r0, _0802591C @ =gMain - ldr r0, [r0, #0x44] - adds r0, #0x8c - ldr r1, [r0] - movs r4, #0 - movs r0, #1 - strh r0, [r1] - movs r0, 0x8D @=SE_UNKNOWN_0x8D - bl m4aSongNumStart - ldr r1, [r7] - ldr r0, _08025920 @ =0x00000602 - adds r1, r1, r0 - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - ldr r0, [r7] - ldr r2, _08025924 @ =0x00000604 - adds r1, r0, r2 - strh r5, [r1] - ldr r3, _08025928 @ =0x00000603 - adds r0, r0, r3 - strb r4, [r0] - b _08025F36 - .align 2, 0 -_08025900: .4byte 0x040000D4 -_08025904: .4byte gUnknown_083A07CC -_08025908: .4byte 0x06015800 -_0802590C: .4byte 0x80001000 -_08025910: .4byte gUnknown_083A27EC -_08025914: .4byte 0x050003C0 -_08025918: .4byte 0x80000010 -_0802591C: .4byte gMain -_08025920: .4byte 0x00000602 -_08025924: .4byte 0x00000604 -_08025928: .4byte 0x00000603 -_0802592C: - ldr r2, _08025954 @ =gUnknown_086AE0C0 - ldr r1, [r7] - ldr r4, _08025958 @ =0x00000603 - adds r3, r1, r4 - movs r0, #0 - ldrsb r0, [r3, r0] - lsls r0, r0, #1 - adds r0, r0, r2 - movs r6, #0 - ldrsh r0, [r0, r6] - ldr r2, _0802595C @ =0x00000604 - adds r1, r1, r2 - ldrh r2, [r1] - cmp r0, r2 - ble _08025964 - adds r0, r2, #1 - strh r0, [r1] - ldr r3, _08025960 @ =gMain - b _08025996 - .align 2, 0 -_08025954: .4byte gUnknown_086AE0C0 -_08025958: .4byte 0x00000603 -_0802595C: .4byte 0x00000604 -_08025960: .4byte gMain -_08025964: - movs r2, #0 - strh r2, [r1] - ldrb r0, [r3] - adds r0, #1 - strb r0, [r3] - ldr r0, [r7] - ldr r3, _08025A60 @ =0x00000603 - adds r1, r0, r3 - movs r0, #0 - ldrsb r0, [r1, r0] - ldr r3, _08025A64 @ =gMain - cmp r0, #7 - ble _08025996 - movs r0, #7 - strb r0, [r1] - ldr r1, [r7] - ldr r4, _08025A68 @ =0x00000602 - adds r1, r1, r4 - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - ldr r0, [r3, #0x44] - adds r0, #0x8c - ldr r0, [r0] - strh r2, [r0] -_08025996: - ldr r2, [r7] - ldr r6, _08025A60 @ =0x00000603 - adds r0, r2, r6 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - lsls r0, r0, #0x10 - lsrs r5, r0, #0x10 - ldr r0, [r3, #0x44] - adds r0, #0x8c - ldr r6, [r0] - adds r0, r2, #0 - adds r0, #0x58 - ldrh r1, [r0] - movs r0, #0x7c - subs r0, r0, r1 - strh r0, [r6, #2] - adds r2, #0x5a - ldrh r1, [r2] - movs r0, #0xf4 - subs r0, r0, r1 - strh r0, [r6, #4] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #0xc7 - ble _080259CE - movs r0, #0xc8 - strh r0, [r6, #4] -_080259CE: - movs r2, #0 - lsls r0, r5, #0x10 - ldr r7, _08025A6C @ =gOamBuffer - mov r8, r7 - ldr r1, _08025A70 @ =gUnknown_086B50AE - mov ip, r1 - asrs r1, r0, #0x10 - lsls r0, r1, #3 - adds r0, r0, r1 - lsls r0, r0, #2 - mov sl, r0 - ldr r3, _08025A74 @ =0xFFFFFE00 - mov sb, r3 -_080259E8: - lsls r3, r2, #0x10 - asrs r3, r3, #0x10 - lsls r0, r3, #3 - adds r0, #8 - adds r5, r6, r0 - ldrh r0, [r5] - lsls r0, r0, #3 - mov r4, r8 - adds r2, r0, r4 - lsls r1, r3, #1 - adds r1, r1, r3 - lsls r0, r1, #1 - add r0, sl - add r0, ip - ldrh r0, [r0] - strh r0, [r2] - adds r2, #2 - adds r0, r1, #1 - lsls r0, r0, #1 - add r0, sl - add r0, ip - ldrh r0, [r0] - strh r0, [r2] - adds r1, #2 - lsls r1, r1, #1 - add r1, sl - add r1, ip - ldrh r0, [r1] - strh r0, [r2, #2] - ldrh r2, [r5] - lsls r2, r2, #3 - add r2, r8 - ldrh r4, [r2, #2] - lsls r1, r4, #0x17 - lsrs r1, r1, #0x17 - movs r7, #2 - ldrsh r0, [r6, r7] - adds r1, r1, r0 - ldr r7, _08025A78 @ =0x000001FF - adds r0, r7, #0 - ands r1, r0 - mov r0, sb - ands r0, r4 - orrs r0, r1 - strh r0, [r2, #2] - ldrh r1, [r5] - lsls r1, r1, #3 - add r1, r8 - ldrb r0, [r6, #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, #5 - ble _080259E8 - b _08025F36 - .align 2, 0 -_08025A60: .4byte 0x00000603 -_08025A64: .4byte gMain -_08025A68: .4byte 0x00000602 -_08025A6C: .4byte gOamBuffer -_08025A70: .4byte gUnknown_086B50AE -_08025A74: .4byte 0xFFFFFE00 -_08025A78: .4byte 0x000001FF -_08025A7C: - ldr r0, [r7] - adds r0, #0xe4 - movs r3, #0 - movs r1, #6 - strb r1, [r0] - ldr r1, _08025AD0 @ =0x040000D4 - ldr r0, _08025AD4 @ =gUnknown_083A29EC - str r0, [r1] - ldr r0, _08025AD8 @ =0x06015800 - str r0, [r1, #4] - ldr r0, _08025ADC @ =0x80000400 - str r0, [r1, #8] - ldr r0, [r1, #8] - ldr r0, _08025AE0 @ =gUnknown_083A320C - str r0, [r1] - ldr r0, _08025AE4 @ =0x050003C0 - str r0, [r1, #4] - ldr r0, _08025AE8 @ =0x80000010 - str r0, [r1, #8] - ldr r0, [r1, #8] - ldr r0, _08025AEC @ =gMain - ldr r0, [r0, #0x44] - adds r0, #0x90 - ldr r1, [r0] - movs r2, #1 - movs r0, #1 - strh r0, [r1] - ldr r1, [r7] - ldr r4, _08025AF0 @ =0x00000602 - adds r1, r1, r4 - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - ldr r0, [r7] - ldr r6, _08025AF4 @ =0x00000604 - adds r1, r0, r6 - strh r3, [r1] - movs r7, #0x88 - lsls r7, r7, #5 - adds r0, r0, r7 - strb r2, [r0] - b _08025F36 - .align 2, 0 -_08025AD0: .4byte 0x040000D4 -_08025AD4: .4byte gUnknown_083A29EC -_08025AD8: .4byte 0x06015800 -_08025ADC: .4byte 0x80000400 -_08025AE0: .4byte gUnknown_083A320C -_08025AE4: .4byte 0x050003C0 -_08025AE8: .4byte 0x80000010 -_08025AEC: .4byte gMain -_08025AF0: .4byte 0x00000602 -_08025AF4: .4byte 0x00000604 -_08025AF8: - ldr r1, [r7] - ldr r0, _08025B10 @ =0x00000604 - adds r2, r1, r0 - ldrh r0, [r2] - lsrs r5, r0, #1 - cmp r0, #0xe - bhi _08025B18 - adds r0, #1 - strh r0, [r2] - ldr r3, _08025B14 @ =gMain - b _08025B3E - .align 2, 0 -_08025B10: .4byte 0x00000604 -_08025B14: .4byte gMain -_08025B18: - ldr r3, _08025BFC @ =gMain - ldr r0, [r3, #0x44] - adds r0, #0x90 - ldr r0, [r0] - movs r4, #0 - movs r2, #0 - strh r2, [r0] - ldr r6, _08025C00 @ =0x00000602 - adds r1, r1, r6 - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - ldr r0, [r7] - adds r6, #2 - adds r1, r0, r6 - strh r2, [r1] - ldr r1, _08025C04 @ =0x00000603 - adds r0, r0, r1 - strb r4, [r0] -_08025B3E: - ldr r0, [r3, #0x44] - adds r0, #0x90 - ldr r6, [r0] - ldr r1, [r7] - adds r0, r1, #0 - adds r0, #0x58 - ldrh r2, [r0] - movs r0, #0x60 - subs r0, r0, r2 - strh r0, [r6, #2] - adds r1, #0x5a - ldrh r1, [r1] - movs r2, #0x96 - lsls r2, r2, #1 - adds r0, r2, #0 - subs r0, r0, r1 - strh r0, [r6, #4] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #0xc7 - ble _08025B6C - movs r0, #0xc8 - strh r0, [r6, #4] -_08025B6C: - movs r2, #0 - lsls r0, r5, #0x10 - ldr r3, _08025C08 @ =gOamBuffer - mov r8, r3 - ldr r4, _08025C0C @ =gUnknown_086B4F6A - mov ip, r4 - asrs r1, r0, #0x10 - lsls r0, r1, #3 - adds r0, r0, r1 - lsls r0, r0, #2 - mov sl, r0 - ldr r7, _08025C10 @ =0xFFFFFE00 - mov sb, r7 -_08025B86: - lsls r3, r2, #0x10 - asrs r3, r3, #0x10 - lsls r0, r3, #3 - adds r0, #8 - adds r5, r6, r0 - ldrh r0, [r5] - lsls r0, r0, #3 - mov r1, r8 - adds r2, r0, r1 - lsls r1, r3, #1 - adds r1, r1, r3 - lsls r0, r1, #1 - add r0, sl - add r0, ip - ldrh r0, [r0] - strh r0, [r2] - adds r2, #2 - adds r0, r1, #1 - lsls r0, r0, #1 - add r0, sl - add r0, ip - ldrh r0, [r0] - strh r0, [r2] - adds r1, #2 - lsls r1, r1, #1 - add r1, sl - add r1, ip - ldrh r0, [r1] - strh r0, [r2, #2] - ldrh r2, [r5] - lsls r2, r2, #3 - add r2, r8 - ldrh r4, [r2, #2] - lsls r1, r4, #0x17 - lsrs r1, r1, #0x17 - movs r7, #2 - ldrsh r0, [r6, r7] - adds r1, r1, r0 - ldr r7, _08025C14 @ =0x000001FF - adds r0, r7, #0 - ands r1, r0 - mov r0, sb - ands r0, r4 - orrs r0, r1 - strh r0, [r2, #2] - ldrh r1, [r5] - lsls r1, r1, #3 - add r1, r8 - ldrb r0, [r6, #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, #5 - ble _08025B86 - b _08025F36 - .align 2, 0 -_08025BFC: .4byte gMain -_08025C00: .4byte 0x00000602 -_08025C04: .4byte 0x00000603 -_08025C08: .4byte gOamBuffer -_08025C0C: .4byte gUnknown_086B4F6A -_08025C10: .4byte 0xFFFFFE00 -_08025C14: .4byte 0x000001FF -_08025C18: - ldr r0, [r7] - adds r0, #0xe4 - movs r1, #7 - strb r1, [r0] - ldr r1, _08025C58 @ =0x040000D4 - ldr r0, _08025C5C @ =gUnknown_083A340C - str r0, [r1] - ldr r0, _08025C60 @ =0x06015800 - str r0, [r1, #4] - ldr r0, _08025C64 @ =0x80001000 - str r0, [r1, #8] - ldr r0, [r1, #8] - ldr r0, _08025C68 @ =gUnknown_083A542C - str r0, [r1] - ldr r0, _08025C6C @ =0x050003C0 - str r0, [r1, #4] - ldr r0, _08025C70 @ =0x80000010 - str r0, [r1, #8] - ldr r0, [r1, #8] - ldr r1, [r7] - ldr r3, _08025C74 @ =0x00000602 - adds r1, r1, r3 - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - bl sub_29924 - movs r0, 0x8E @=SE_UNKNOWN_0x8E - bl m4aSongNumStart - b _08025F36 - .align 2, 0 -_08025C58: .4byte 0x040000D4 -_08025C5C: .4byte gUnknown_083A340C -_08025C60: .4byte 0x06015800 -_08025C64: .4byte 0x80001000 -_08025C68: .4byte gUnknown_083A542C -_08025C6C: .4byte 0x050003C0 -_08025C70: .4byte 0x80000010 -_08025C74: .4byte 0x00000602 -_08025C78: - ldr r2, _08025CB0 @ =gMain - ldrh r0, [r2, #0x3c] - movs r0, #0 - strh r0, [r2, #0x3c] - movs r0, #0x80 - lsls r0, r0, #0x13 - ldrh r1, [r0] - movs r0, #0xf8 - lsls r0, r0, #5 - ands r0, r1 - lsrs r0, r0, #8 - movs r1, #0xa0 - ldrh r3, [r2, #0x38] - orrs r0, r1 - strh r0, [r2, #0x38] - ldr r0, [r7] - ldr r4, _08025CB4 @ =0x00000604 - adds r0, r0, r4 - ldrh r0, [r0] - adds r3, r2, #0 - cmp r0, #0x48 - bhi _08025CF2 - cmp r0, #7 - bhi _08025CB8 - ldrh r0, [r3, #0x3c] - movs r0, #0x10 - b _08025CF0 - .align 2, 0 -_08025CB0: .4byte gMain -_08025CB4: .4byte 0x00000604 -_08025CB8: - movs r2, #0 - adds r6, r7, #0 - ldr r5, _08025D04 @ =0x000006D3 - movs r4, #0xd -_08025CC0: - ldr r1, [r6] - lsls r0, r2, #0x10 - asrs r0, r0, #0x10 - adds r1, r1, r5 - adds r1, r1, r0 - strb r4, [r1] - adds r0, #1 - lsls r0, r0, #0x10 - lsrs r2, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #5 - ble _08025CC0 - ldr r0, [r7] - ldr r6, _08025D08 @ =0x00000604 - adds r0, r0, r6 - ldrh r1, [r0] - movs r0, #8 - subs r0, r0, r1 - cmp r0, #0 - bge _08025CEA - adds r0, #3 -_08025CEA: - asrs r0, r0, #2 - adds r0, #0x10 - ldrh r1, [r3, #0x3c] -_08025CF0: - strh r0, [r3, #0x3c] -_08025CF2: - ldr r1, [r7] - ldr r0, _08025D08 @ =0x00000604 - adds r2, r1, r0 - ldrh r0, [r2] - cmp r0, #0x47 - bhi _08025D0C - adds r0, #1 - strh r0, [r2] - b _08025D28 - .align 2, 0 -_08025D04: .4byte 0x000006D3 -_08025D08: .4byte 0x00000604 -_08025D0C: - ldr r2, _08025D4C @ =0x00000602 - adds r1, r1, r2 - ldrb r0, [r1] - adds r0, #1 - movs r3, #0 - strb r0, [r1] - ldr r0, [r7] - ldr r4, _08025D50 @ =0x00000604 - adds r1, r0, r4 - movs r2, #0 - strh r3, [r1] - ldr r6, _08025D54 @ =0x00000603 - adds r0, r0, r6 - strb r2, [r0] -_08025D28: - ldr r1, [r7] - ldr r7, _08025D50 @ =0x00000604 - adds r0, r1, r7 - ldrh r0, [r0] - cmp r0, #8 - bhi _08025D36 - b _08025F36 -_08025D36: - ldr r2, _08025D58 @ =0x000006CA - adds r0, r1, r2 - ldrh r1, [r0] - ldr r0, _08025D5C @ =0x00006FFF - cmp r1, r0 - bls _08025D44 - b _08025F36 -_08025D44: - bl sub_29A6C - b _08025F36 - .align 2, 0 -_08025D4C: .4byte 0x00000602 -_08025D50: .4byte 0x00000604 -_08025D54: .4byte 0x00000603 -_08025D58: .4byte 0x000006CA -_08025D5C: .4byte 0x00006FFF -_08025D60: - ldr r0, [r7] - adds r0, #0xe4 - movs r1, #8 - strb r1, [r0] - ldr r1, _08025DAC @ =0x040000D4 - ldr r0, _08025DB0 @ =gUnknown_083A562C - str r0, [r1] - ldr r0, _08025DB4 @ =0x06015800 - str r0, [r1, #4] - ldr r0, _08025DB8 @ =0x80000C00 - str r0, [r1, #8] - ldr r0, [r1, #8] - ldr r0, _08025DBC @ =gUnknown_083A6E4C - str r0, [r1] - ldr r0, _08025DC0 @ =0x050003C0 - str r0, [r1, #4] - ldr r0, _08025DC4 @ =0x80000010 - str r0, [r1, #8] - ldr r0, [r1, #8] - ldr r0, _08025DC8 @ =gMain - ldr r0, [r0, #0x44] - adds r0, #0x94 - ldr r1, [r0] - movs r2, #0 - movs r0, #1 - strh r0, [r1] - ldr r1, [r7] - ldr r3, _08025DCC @ =0x00000602 - adds r1, r1, r3 - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - ldr r0, [r7] - movs r4, #0x88 - lsls r4, r4, #5 - adds r0, r0, r4 - strb r2, [r0] - b _08025F36 - .align 2, 0 -_08025DAC: .4byte 0x040000D4 -_08025DB0: .4byte gUnknown_083A562C -_08025DB4: .4byte 0x06015800 -_08025DB8: .4byte 0x80000C00 -_08025DBC: .4byte gUnknown_083A6E4C -_08025DC0: .4byte 0x050003C0 -_08025DC4: .4byte 0x80000010 -_08025DC8: .4byte gMain -_08025DCC: .4byte 0x00000602 -_08025DD0: - ldr r2, _08025DF8 @ =gUnknown_086AE0D0 - ldr r1, [r7] - ldr r5, _08025DFC @ =0x00000603 - adds r3, r1, r5 - movs r0, #0 - ldrsb r0, [r3, r0] - lsls r0, r0, #1 - adds r0, r0, r2 - movs r6, #0 - ldrsh r0, [r0, r6] - ldr r2, _08025E00 @ =0x00000604 - adds r1, r1, r2 - ldrh r2, [r1] - cmp r0, r2 - ble _08025E08 - adds r0, r2, #1 - strh r0, [r1] - ldr r3, _08025E04 @ =gMain - b _08025E6C - .align 2, 0 -_08025DF8: .4byte gUnknown_086AE0D0 -_08025DFC: .4byte 0x00000603 -_08025E00: .4byte 0x00000604 -_08025E04: .4byte gMain -_08025E08: - movs r4, #0 - movs r2, #0 - strh r2, [r1] - ldrb r0, [r3] - adds r0, #1 - strb r0, [r3] - ldr r1, [r7] - ldr r3, _08025F44 @ =0x00000603 - adds r0, r1, r3 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - ldr r3, _08025F48 @ =gMain - cmp r0, #0xa - ble _08025E6C - ldrb r0, [r1, #0x17] - adds r0, #1 - strb r0, [r1, #0x17] - ldr r0, [r3, #0x44] - adds r0, #0x94 - ldr r0, [r0] - strh r2, [r0] - ldr r0, [r7] - ldr r6, _08025F4C @ =0x000006C6 - adds r0, r0, r6 - strb r4, [r0] - ldr r0, [r7] - ldr r1, _08025F50 @ =0x000006C7 - adds r0, r0, r1 - strb r4, [r0] - ldr r0, [r7] - subs r6, #0xa1 - adds r0, r0, r6 - strb r4, [r0] - ldrh r0, [r3, #0x38] - movs r0, #0xce - strh r0, [r3, #0x38] - ldrh r0, [r3, #0x3c] - strh r2, [r3, #0x3c] - ldr r0, [r3, #0x44] - adds r0, #0x94 - ldr r0, [r0] - strh r2, [r0] - ldr r0, [r7] - adds r0, r0, r5 - movs r1, #0xa - strb r1, [r0] - ldr r0, [r7] - adds r0, #0xe4 - strb r4, [r0] -_08025E6C: - ldr r2, [r7] - ldr r7, _08025F44 @ =0x00000603 - adds r0, r2, r7 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - lsls r0, r0, #0x10 - lsrs r5, r0, #0x10 - ldr r0, [r3, #0x44] - adds r0, #0x94 - ldr r6, [r0] - adds r0, r2, #0 - adds r0, #0x58 - ldrh r1, [r0] - movs r0, #0x60 - subs r0, r0, r1 - strh r0, [r6, #2] - adds r2, #0x5a - ldrh r1, [r2] - movs r2, #0x96 - lsls r2, r2, #1 - adds r0, r2, #0 - subs r0, r0, r1 - strh r0, [r6, #4] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #0xc7 - ble _08025EA8 - movs r0, #0xc8 - strh r0, [r6, #4] -_08025EA8: - movs r2, #0 - lsls r0, r5, #0x10 - ldr r3, _08025F54 @ =gOamBuffer - mov r8, r3 - ldr r4, _08025F58 @ =gUnknown_086B4E62 - mov ip, r4 - asrs r1, r0, #0x10 - lsls r0, r1, #1 - adds r0, r0, r1 - lsls r0, r0, #3 - mov sl, r0 - ldr r7, _08025F5C @ =0xFFFFFE00 - mov sb, r7 -_08025EC2: - lsls r3, r2, #0x10 - asrs r3, r3, #0x10 - lsls r0, r3, #3 - adds r0, #8 - adds r5, r6, r0 - ldrh r0, [r5] - lsls r0, r0, #3 - mov r1, r8 - adds r2, r0, r1 - lsls r1, r3, #1 - adds r1, r1, r3 - lsls r0, r1, #1 - add r0, sl - add r0, ip - ldrh r0, [r0] - strh r0, [r2] - adds r2, #2 - adds r0, r1, #1 - lsls r0, r0, #1 - add r0, sl - add r0, ip - ldrh r0, [r0] - strh r0, [r2] - adds r1, #2 - lsls r1, r1, #1 - add r1, sl - add r1, ip - ldrh r0, [r1] - strh r0, [r2, #2] - ldrh r2, [r5] - lsls r2, r2, #3 - add r2, r8 - ldrh r4, [r2, #2] - lsls r1, r4, #0x17 - lsrs r1, r1, #0x17 - movs r7, #2 - ldrsh r0, [r6, r7] - adds r1, r1, r0 - ldr r7, _08025F60 @ =0x000001FF - adds r0, r7, #0 - ands r1, r0 - mov r0, sb - ands r0, r4 - orrs r0, r1 - strh r0, [r2, #2] - ldrh r1, [r5] - lsls r1, r1, #3 - add r1, r8 - ldrb r0, [r6, #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, #3 - ble _08025EC2 -_08025F36: - 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 -_08025F44: .4byte 0x00000603 -_08025F48: .4byte gMain -_08025F4C: .4byte 0x000006C6 -_08025F50: .4byte 0x000006C7 -_08025F54: .4byte gOamBuffer -_08025F58: .4byte gUnknown_086B4E62 -_08025F5C: .4byte 0xFFFFFE00 -_08025F60: .4byte 0x000001FF diff --git a/expected_objs/sub_25808.o b/expected_objs/sub_25808.o deleted file mode 100644 index f0211ea..0000000 Binary files a/expected_objs/sub_25808.o and /dev/null differ diff --git a/include/functions.h b/include/functions.h index 9844d20..fa9d928 100644 --- a/include/functions.h +++ b/include/functions.h @@ -520,8 +520,8 @@ extern void sub_293D8(void); extern void sub_29624(void); //extern ? sub_29664(); //extern ? sub_2971C(); -//extern ? sub_29924(); -//extern ? sub_29A6C(); +extern void sub_29924(void); +extern void sub_29A6C(void); //extern ? sub_29D9C(); //extern ? sub_2A054(); extern void sub_2A354(); diff --git a/include/global.h b/include/global.h index a83f65c..06bde36 100644 --- a/include/global.h +++ b/include/global.h @@ -658,8 +658,9 @@ struct PinballGame /*0x5FC*/ s16 unk5FC; /*0x5FE*/ s16 unk5FE; /*0x600*/ u16 unk600; - /*0x602*/ u8 unk602; - /*0x603*/ u8 filler603[0x3]; + /*0x602*/ s8 unk602; + /*0x603*/ s8 unk603; + /*0x604*/ u16 unk604; /*0x606*/ u16 unk606; /*0x608*/ u8 filler608[0xC]; /*0x614*/ u16 unk614; diff --git a/src/rom_27E08.c b/src/rom_27E08.c index 26522c1..e2cfe15 100644 --- a/src/rom_27E08.c +++ b/src/rom_27E08.c @@ -19,12 +19,232 @@ extern const s16 gUnknown_08137928[]; extern const u16 gUnknown_086B51CE[][27]; extern const u8 gUnknown_083A8AAC[]; extern const u8 gUnknown_084FA20C[]; +extern const u8 gUnknown_083A07CC[]; +extern const u8 gUnknown_083A27EC[]; +extern const s16 gUnknown_086AE0C0[]; +extern const u16 gUnknown_086B50AE[][18]; +extern const u8 gUnknown_083A29EC[]; +extern const u8 gUnknown_083A320C[]; +extern const u16 gUnknown_086B4F6A[][18]; +extern const u8 gUnknown_083A340C[]; +extern const u8 gUnknown_083A542C[]; +extern const u8 gUnknown_083A562C[]; +extern const u8 gUnknown_083A6E4C[]; +extern const s16 gUnknown_086AE0D0[]; +extern const u16 gUnknown_086B4E62[][12]; extern struct SongHeader gUnknown_0869F58C; extern struct SongHeader gUnknown_0869F5C8; extern struct SongHeader gUnknown_0869F618; +void sub_25808(void) +{ + s16 i; + struct SpriteGroup *group; + struct OamDataSimple *oamSimple; + u16 *dst; + s16 var0; + + switch (gCurrentPinballGame->unk602) + { + case 0: + if (gCurrentPinballGame->unk604 < 60) + { + gCurrentPinballGame->unk604++; + } + else + { + gCurrentPinballGame->unk602++; + gCurrentPinballGame->unk604 = 0; + } + gMain.blendControl = 0xCE; + break; + case 1: + gCurrentPinballGame->unkE4 = 5; + DmaCopy16(3, gUnknown_083A07CC, (void *)0x06015800, 0x2000); + DmaCopy16(3, gUnknown_083A27EC, (void *)0x050003C0, 0x20); + gMain.unk44[35]->available = 1; + m4aSongNumStart(SE_UNKNOWN_0x8D); + gCurrentPinballGame->unk602++; + gCurrentPinballGame->unk604 = 0; + gCurrentPinballGame->unk603 = 0; + break; + case 2: + if (gUnknown_086AE0C0[gCurrentPinballGame->unk603] > gCurrentPinballGame->unk604) + { + gCurrentPinballGame->unk604++; + } + else + { + gCurrentPinballGame->unk604 = 0; + gCurrentPinballGame->unk603++; + if (gCurrentPinballGame->unk603 > 7) + { + gCurrentPinballGame->unk603 = 7; + gCurrentPinballGame->unk602++; + gMain.unk44[35]->available = 0; + } + } + + var0 = gCurrentPinballGame->unk603; + group = gMain.unk44[35]; + group->baseX = 124 - gCurrentPinballGame->unk58; + group->baseY = 244 - 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_086B50AE[var0][i * 3 + 0]; + *dst++ = gUnknown_086B50AE[var0][i * 3 + 1]; + *dst++ = gUnknown_086B50AE[var0][i * 3 + 2]; + + gOamBuffer[oamSimple->oamId].x += group->baseX; + gOamBuffer[oamSimple->oamId].y += group->baseY; + } + break; + case 3: + gCurrentPinballGame->unkE4 = 6; + DmaCopy16(3, gUnknown_083A29EC, (void *)0x06015800, 0x800); + DmaCopy16(3, gUnknown_083A320C, (void *)0x050003C0, 0x20); + gMain.unk44[36]->available = 1; + gCurrentPinballGame->unk602++; + gCurrentPinballGame->unk604 = 0; + gCurrentPinballGame->unk1100 = 1; + break; + case 4: + var0 = gCurrentPinballGame->unk604 / 2; + if (gCurrentPinballGame->unk604 < 15) + { + gCurrentPinballGame->unk604++; + } + else + { + gMain.unk44[36]->available = 0; + gCurrentPinballGame->unk602++; + gCurrentPinballGame->unk604 = 0; + gCurrentPinballGame->unk603 = 0; + } + + group = gMain.unk44[36]; + group->baseX = 96 - gCurrentPinballGame->unk58; + group->baseY = 300 - 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_086B4F6A[var0][i * 3 + 0]; + *dst++ = gUnknown_086B4F6A[var0][i * 3 + 1]; + *dst++ = gUnknown_086B4F6A[var0][i * 3 + 2]; + + gOamBuffer[oamSimple->oamId].x += group->baseX; + gOamBuffer[oamSimple->oamId].y += group->baseY; + } + break; + case 5: + gCurrentPinballGame->unkE4 = 7; + DmaCopy16(3, gUnknown_083A340C, (void *)0x06015800, 0x2000); + DmaCopy16(3, gUnknown_083A542C, (void *)0x050003C0, 0x20); + gCurrentPinballGame->unk602++; + sub_29924(); + m4aSongNumStart(SE_UNKNOWN_0x8E); + break; + case 6: + gMain.blendBrightness = 0; + gMain.blendControl = ((REG_DISPCNT & (DISPCNT_OBJ_ON | DISPCNT_BG_ALL_ON)) >> 8) | 0xA0; + if (gCurrentPinballGame->unk604 < 73) + { + s16 var1; + if (gCurrentPinballGame->unk604 < 8) + { + gMain.blendBrightness = 16; + } + else + { + for (i = 0; i < 6; i++) + gCurrentPinballGame->unk6D3[i] = 13; + + gMain.blendBrightness = ((8 - gCurrentPinballGame->unk604) / 4) + 16; + } + } + + if (gCurrentPinballGame->unk604 < 72) + { + gCurrentPinballGame->unk604++; + } + else + { + gCurrentPinballGame->unk602++; + gCurrentPinballGame->unk604 = 0; + gCurrentPinballGame->unk603 = 0; + } + + if (gCurrentPinballGame->unk604 > 8U) + { + if (gCurrentPinballGame->unk6CA < 0x7000) + sub_29A6C(); + } + break; + case 7: + gCurrentPinballGame->unkE4 = 8; + DmaCopy16(3, gUnknown_083A562C, (void *)0x06015800, 0x1800); + DmaCopy16(3, gUnknown_083A6E4C, (void *)0x050003C0, 0x20); + gMain.unk44[37]->available = 1; + gCurrentPinballGame->unk602++; + gCurrentPinballGame->unk1100 = 0; + break; + case 8: + if (gUnknown_086AE0D0[gCurrentPinballGame->unk603] > gCurrentPinballGame->unk604) + { + gCurrentPinballGame->unk604++; + } + else + { + gCurrentPinballGame->unk604 = 0; + gCurrentPinballGame->unk603++; + if (gCurrentPinballGame->unk603 > 10) + { + gCurrentPinballGame->unk17++; + gMain.unk44[37]->available = 0; + gCurrentPinballGame->unk6C6 = 0; + gCurrentPinballGame->unk6C7 = 0; + gCurrentPinballGame->unk625 = 0; + gMain.blendControl = 0xCE; + gMain.blendBrightness = 0; + gMain.unk44[37]->available = 0; + gCurrentPinballGame->unk603 = 10; + gCurrentPinballGame->unkE4 = 0; + } + } + + var0 = gCurrentPinballGame->unk603; + group = gMain.unk44[37]; + group->baseX = 96 - gCurrentPinballGame->unk58; + group->baseY = 300 - gCurrentPinballGame->unk5A; + if (group->baseY >= 200) + group->baseY = 200; + + for (i = 0; i < 4; i++) + { + oamSimple = &group->oam[i]; + dst = (u16 *)&gOamBuffer[oamSimple->oamId]; + *dst++ = gUnknown_086B4E62[var0][i * 3 + 0]; + *dst++ = gUnknown_086B4E62[var0][i * 3 + 1]; + *dst++ = gUnknown_086B4E62[var0][i * 3 + 2]; + + gOamBuffer[oamSimple->oamId].x += group->baseX; + gOamBuffer[oamSimple->oamId].y += group->baseY; + } + break; + } +} + void sub_25F64(void) { s16 i;