From 5b80f9ac6b7fd39bb586d7d124c4ecddb1b70ca8 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Mon, 18 Aug 2025 20:21:18 -0500 Subject: [PATCH] match some functions --- asm/rom_27F94.s | 1583 ------------------------------------- expected_objs/sub_28AE0.o | Bin 1608 -> 0 bytes expected_objs/sub_28C90.o | Bin 2016 -> 0 bytes expected_objs/sub_28E2C.o | Bin 964 -> 0 bytes expected_objs/sub_28EA0.o | Bin 3676 -> 0 bytes expected_objs/sub_292A0.o | Bin 1024 -> 0 bytes expected_objs/sub_29334.o | Bin 1292 -> 0 bytes expected_objs/sub_293D8.o | Bin 2356 -> 0 bytes expected_objs/sub_29624.o | Bin 868 -> 0 bytes expected_objs/sub_29664.o | Bin 1216 -> 0 bytes expected_objs/sub_2971C.o | Bin 2180 -> 0 bytes include/functions.h | 4 +- include/global.h | 26 +- include/variables.h | 2 + src/pokedex.c | 6 +- src/rom_27F94.c | 575 ++++++++++---- 16 files changed, 424 insertions(+), 1772 deletions(-) delete mode 100644 expected_objs/sub_28AE0.o delete mode 100644 expected_objs/sub_28C90.o delete mode 100644 expected_objs/sub_28E2C.o delete mode 100644 expected_objs/sub_28EA0.o delete mode 100644 expected_objs/sub_292A0.o delete mode 100644 expected_objs/sub_29334.o delete mode 100644 expected_objs/sub_293D8.o delete mode 100644 expected_objs/sub_29624.o delete mode 100644 expected_objs/sub_29664.o delete mode 100644 expected_objs/sub_2971C.o diff --git a/asm/rom_27F94.s b/asm/rom_27F94.s index 1c44e155..24d4971c 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 bffeec2333e26e83fc1117f457489caa85952da4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1608 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 diff --git a/expected_objs/sub_292A0.o b/expected_objs/sub_292A0.o deleted file mode 100644 index 67a272f8608ce71f1aeeea3f69c902b5b3b01fca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 zcma)5F>ljA6n^T#L8JjNJ^U@!}R6u^;k z`6Rb^3A12;4rgChytr>R+|J&@c&nVm9+aoPgE{s5*6M+Gd|%P>g&&|V&X=Z>Z?Io_ znrwK*TD9JY&EzY@rT#SAWlmn39LpEfxt}Ml*XZootOceXFMDv8X+|OFBoG(-Hnh~3 zEf|_UW)#%&uM>T6)oWLlc7ufEh8Yg)cGY&4Do!Vj3om{S+5V%spY2~jUtca|L2hV7=` zeh1qx{GG?Wt*x+&@1ng>a1*F!{_pP#qqmluQ(Bu!A7 z{wSioaPLVp+Y4#ZDMr?()1^=?K3=;*7rs4+jK8>O9-b`UPEyLaL+OdmiBjC4R17?J zD5h7E)FzD*nx(gOO;7C1j&wpPV{4)oDSdr7-0jc&StFW)cV9Xr%Ub(lpB4`m3g^(*sXA_*#2H|;aI1W6b*_A! zv`|dw>MQmapxncM?Eq02mug|c8r1|;1bQXN2^s-=iZ;NjiarmnDEcz^o}y>K>x#~U z?<;xNMpTB?TEYUN>VSMmij!E3i z=93NIaS?s5A8V4lYQyxaZJ*4F<2z)!%_f;RtES`oUfpf^)g~JJpYf6BJ;(3RGyZ4y z2F!uaDBBoZhv(sJ%Q)VAK6xCE=eihtYM|xm{|>F1{Jxiv; diff --git a/expected_objs/sub_293D8.o b/expected_objs/sub_293D8.o deleted file mode 100644 index 6ca6c62f2578592311bad69eda00e2d17d5012b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2356 zcma)-UuauZ9LIm>rpc15mUMP<+XZ%4tESq9n>4vgp$|9B&E0KHX35mq4b~)G)`X^M zNfYc4-7WfX2a5C0!+elUUxXntMM1ELFJdPHnfTI&Lcu)=O5X+|tG|<*b9)*P_bca~ z@8|q}zjMz$`JK}%>5NVY0cHe3uulMY54Ak*SgQ+x54^DZ%~}1lp4NB1Ucc>|@;^UN z_8Wa7NYcwD2oY6;6Y2%eR8H)*tV#d25e%5!J8b^D9)O>*ffO*MH6lwZ%hSE(<&3u< z*1!W#2%(;P)oDuv%N6o%c_)1RF3G!6G1Tf?GAR?uYtCn+@_bfx;se{osd>YjpEnF_ zR^BQXk%~yg7VSNFxHoGgtM69FEf|J-Z|>v_QuYR4kp(L+nFDL)xropDa4-jfpgQoa z30=_lQ;2MDN~on==2Ja4byZJKU(-L=-Cd)7e}Px|zCUK&hpaIqF2ec#S%CK@^*}kV z+23G-p~2w#g-uXJ6W}Ain9~B5WD2o!!5qN*j}$w09{xM-n0Q7Lt-Kkveua_Dk^VE* zmix|Q!cbz)Ck|(%AW=hxsCrW~X2iM!PZ~ZkaoN9Siry6xAMFZtkM_AouWvt|$ye8_ zbWeM5M|$Y4w|)ap=qOpcQa_;IgL{5oh7)9k+)iv<*FVv3>AM?b15VN3)%i_P z{|2~!Xg6Kp4gi=f-Az2IU~9_M_Gpnk+}leY$G%W16e~cEqI4&7*^@77*(vY{UgG0R z5xob^b)ZrKT=>VE3zu?m0@7NXUCT6*Ko33>P7(nT^#sR*s8xLnldBWoNVMK(A-j{FZc+X$#A`2B7>S{;@s3}Y+{KZ0tE0Y+f`Lb`)zJ9xf> zD;@k=2fx$7H#!)G8Zaj(YoBDX@@g*6XEOW2RCo7OK@#g{6`mpGb|% zu#hcOYFt)S9+MRf$DMiT$Vr7CNhp)?xR!#27Ya+0%}bX`b*v3~&V^^}`$Gr;e1YsA zw(E^DJ*UF6_W2W@v(J@)7YMC?VbrdBnosLn2xD@1_3~1qP{h7bxBD_v^-?w5D6KUh ze6i3dK)ATN3Sqn}!-YnpUMV&krB$5Z(TrZXwCw1=VQTa{GPnk2U2Sm;dmlEn%@cC{Snor}r*q&-LyM0Y=E_AhGX^&gbivPbj8RIZ!h2~JB^GPjbKiH9>J^!kk2)o#D mnea3=x;}b_={K-iDaG+e|pk)KG_u68xLW zJ2kF+xT;~dJae|or>lF<$Lj@D-A%W)GE+VZxeBUI{r4|_p%ysFx_>VMKN-EJ)Ik)4 z6Q~VRr}uI2>eHLSdlYje<=V?u!u&qf}Fe;kT4K(>EzDy(sA3r(R=V}89< z@_(1SYUxArhNbT)NgfVfFq=(3A?sL%b>aIOL%;1eI<1%OJJvU>>vzKAT*G!E|~OoJZ15&cgczyyWY-4nk%fXL)Q`98EnPebMknfezq>Ndk}e z>;+oKlW?x1L|Q!v@?3I0K3xh~znjr?l=~HIFS>9=D9v*{-}XU$)e|6n{~tT1GM@?LTVvnDAHV{5WkniX%Zp|As`2aCRL~+K`bYPd`Jv#3;C#0QB{>dERiEyO+=Dbjw8W@ zCj=6I00RR<1_p!}ic~}<7CJK_B>n@2Zfumh#Lv8DfwRu{`@Q?!^ZPhIxznsN#(*1x z4E$vP_x;n1RG5YggdqgSA8J+S0FvpuPPNjJ0@?UGc%C?1{tD0JwW`lqs)yx>bMou= z$*s;fag=HR;iFXe@+Z`c<&>AZ)S%23X5#gGe?F(*>jdh8)fhMdskW%YQ%CQzegewF}Md;s4uenbxjr;CTxC5*bMx4XbD zB9vCQH%mLWHyaT2g;-eJ_N+j7`%j$;fFB>x{1BK^FdPAR<%t-aMI05ljQF*{ml2Nz zejV`}ffo_K6}X1@y}&mR9|(L0vG{#2g}@II+{4H>9YdrGf^&#FbKIKaPv%Cr0@0+l@sdopkf@_Q5Ch`=|1FX5c>GB6Ir#(`h&dC>>ouBUl5@q ro<(s$Ltns=MRZyp^%U)ae-j}zvFHT>*Z6#RC8u;U7HM3Bk?Z~dhTW4c diff --git a/expected_objs/sub_2971C.o b/expected_objs/sub_2971C.o deleted file mode 100644 index 3e79cc7b9bca687aa197cba5e0359651146b3b48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2180 zcma);U2NM_6vvO9k2-BZ+0+etge^@xmX0cTX-FLjO-YluPD@G|9aIIib!gf~O|vR- zp-4!$2u&VO@PbB%5J-EN5FdT$q$2g9nviJG9@sRY0Y$2K0ihxFZEq{*Cb4^)7dX|; z`Ty=c|7$zG_onY=UQif@0V@~?!2tpIT52P%Xf1`n103w#d{r4zGRp4S^6DFEvgDbA zk31%H!JV~T2u`Z(>|}PBXUr>H7I-IgEGr36)0^PoUmM)!J?01Kz6mc2qpFV|&0gRK z(%|>L5-<(kZ(JN&5x{?Bd_-ODYujPZee)G6#2wtOKbhHo>&yt19#yD55djxsal1|i%zlqyxNjDlS&+N zjm6?w&KJY^#S_tiuhH`t<>{$8#Eu`j9ly6Ew*261N#&FWz(wJ+s1PvkLbrO9e@Wr+ zd6W30S?C(v;=%M9Y=rl*5?9lwb6J5ihmD~58~BH=31j9R*Y;yFdOZB8T*${HP7X;v zHqn|IGdj&}ctZ8?a!2cu!E+0$!bsqBv_pq01UrL&x(9_>cWyxNn$L!U_Zi7+oZYqF zB7oan*T1>|zQcA4+qW^&x4(by(LTmOZLOEQbnNGbt_TqL!@tRJhC8d4V2(AIRe9s8 z@`duHvbVu(K>v@8xs#{RqZPD#5tw5rUC9f%-jQ@J3vQNUJoGXmmpBxTL#qtHfq!&3 zz}Zy6U=P5j_N)v%j_k8d4DhHgQ{w^Tlhk-O>d&ch@^xINIDveF;sNBZC>}vxrFa~9 zjpAA4b&4yy2kDN7{CzZAZp-L@bA#IZ(DEV>=Yvq1bhbRTr01AWk(d7(Zv3;t>g|i}{I2 zyqEM%%wL+S7JE=k72hOcCZ`q4Fq2xWR0?H%xLD3>rBc5(Ux1m5<+<{ux61g{#gdtG z$tcXcsLl5+PEQvqhX(te>*>Qms+{!5@G-vY)*$X3l0{t8jr^dI$)0CV*Y_^_bbXJq zXX<-_4b}Gm+f`rt?AiJnB=r!kzCEvNdCYpHo@XspDU`x`VM&MZl%{JC&R44t#`7zz z>3XG@U(^d#oZ$ZjIR?p6Y8;C|ek(b9AK?8org;*x2V0`S@1tQ9HSrNYspGJbTPJLt zh|g1VVRvneNN|PYC-1nH#AA)S|muOFZDXYDmL;jKmZ%LKe8{$Gg#L| a3GMjXvSdwyY{?@{bvyW=3GB1Ns{0qC-8PE= diff --git a/include/functions.h b/include/functions.h index e63dc3e4..55e97fb8 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 c8776379..e932f164 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 8d97bf3a..7c984291 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 380b3d52..c7485414 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 48b47207..c39b132a 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; + } +}