From ec3568d12761b7e0d19d68422896fdaf29d0ebf7 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Mon, 21 Jul 2025 11:13:42 -0500 Subject: [PATCH] sub_478D8 --- asm/rom_3219C.s | 859 -------------------------------------- expected_objs/sub_478D8.o | Bin 5380 -> 0 bytes expected_objs/sub_47FBC.o | Bin 912 -> 0 bytes expected_objs/sub_47FF8.o | Bin 1512 -> 0 bytes expected_objs/sub_48124.o | Bin 992 -> 0 bytes expected_objs/sub_48190.o | Bin 15700 -> 0 bytes include/functions.h | 2 +- include/global.h | 11 +- src/rom_11B9C.c | 1 - src/rom_49A34.c | 224 ++++++++++ 10 files changed, 235 insertions(+), 862 deletions(-) delete mode 100644 expected_objs/sub_478D8.o delete mode 100644 expected_objs/sub_47FBC.o delete mode 100644 expected_objs/sub_47FF8.o delete mode 100644 expected_objs/sub_48124.o delete mode 100644 expected_objs/sub_48190.o diff --git a/asm/rom_3219C.s b/asm/rom_3219C.s index f4b0362..29982df 100644 --- a/asm/rom_3219C.s +++ b/asm/rom_3219C.s @@ -32614,862 +32614,3 @@ _080478D0: pop {r4, r5, r6, r7} pop {r0} bx r0 - - thumb_func_start sub_478D8 -sub_478D8: @ 0x080478D8 - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - sub sp, #4 - ldr r7, _08047AEC @ =gMain - ldrh r0, [r7, #0x12] - cmp r0, #0 - bne _080478EE - b _08047F2E -_080478EE: - movs r0, #0xd2 - lsls r0, r0, #3 - adds r6, r7, r0 - ldrh r0, [r6] - movs r1, #0xbb - lsls r1, r1, #3 - adds r1, r1, r7 - mov r8, r1 - cmp r0, #0 - beq _08047984 - movs r0, #0x58 - strh r0, [r6, #2] - ldr r0, _08047AF0 @ =gCurrentPinballGame - ldr r0, [r0] - adds r0, #0xfe - ldrh r0, [r0] - adds r0, #0x14 - strh r0, [r6, #4] - movs r0, #0 - ldr r7, _08047AF4 @ =gOamBuffer - ldr r2, _08047AF8 @ =0xFFFFFE00 - mov sl, r2 - movs r3, #0xf - rsbs r3, r3, #0 - mov sb, r3 -_08047920: - lsls r4, r0, #0x10 - asrs r4, r4, #0x10 - lsls r0, r4, #3 - adds r0, #8 - adds r5, r6, r0 - ldrh r3, [r5] - lsls r3, r3, #3 - adds r3, r3, r7 - movs r0, #2 - ldrsh r1, [r5, r0] - movs r2, #2 - ldrsh r0, [r6, r2] - adds r1, r1, r0 - ldr r2, _08047AFC @ =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, r7 - ldrb r0, [r6, #4] - ldrb r3, [r5, #4] - adds r0, r0, r3 - strb r0, [r1] - ldrh r2, [r5] - lsls r2, r2, #3 - adds r2, r2, r7 - ldrb r0, [r2, #1] - movs r1, #3 - orrs r0, r1 - strb r0, [r2, #1] - ldrh r2, [r5] - lsls r2, r2, #3 - adds r2, r2, r7 - ldrb r1, [r2, #3] - mov r0, sb - ands r0, r1 - movs r1, #6 - orrs r0, r1 - strb r0, [r2, #3] - adds r4, #1 - lsls r4, r4, #0x10 - lsrs r0, r4, #0x10 - asrs r4, r4, #0x10 - cmp r4, #1 - ble _08047920 -_08047984: - mov r6, r8 - ldrh r0, [r6] - cmp r0, #0 - beq _08047A14 - ldr r4, _08047AF0 @ =gCurrentPinballGame - ldr r0, [r4] - movs r5, #0x80 - lsls r5, r5, #1 - adds r0, r0, r5 - ldr r0, [r0] - movs r1, #0x64 - bl __divsi3 - adds r0, #0x18 - strh r0, [r6, #2] - ldr r0, [r4] - adds r4, r0, #0 - adds r4, #0xfe - movs r1, #0x82 - lsls r1, r1, #1 - adds r0, r0, r1 - ldr r0, [r0] - movs r1, #0x64 - bl __divsi3 - adds r0, #0x14 - ldrh r4, [r4] - adds r0, r0, r4 - strh r0, [r6, #4] - adds r5, r6, #0 - adds r5, #8 - ldr r4, _08047AF4 @ =gOamBuffer - ldrh r2, [r6, #8] - lsls r2, r2, #3 - adds r2, r2, r4 - movs r3, #2 - ldrsh r1, [r5, r3] - movs r3, #2 - ldrsh r0, [r6, r3] - adds r1, r1, r0 - ldr r3, _08047AFC @ =0x000001FF - adds r0, r3, #0 - ands r1, r0 - ldrh r3, [r2, #2] - ldr r0, _08047AF8 @ =0xFFFFFE00 - ands r0, r3 - orrs r0, r1 - strh r0, [r2, #2] - ldrh r1, [r6, #8] - lsls r1, r1, #3 - adds r1, r1, r4 - ldrb r0, [r6, #4] - ldrb r5, [r5, #4] - adds r0, r0, r5 - strb r0, [r1] - ldrh r1, [r6, #8] - lsls r1, r1, #3 - adds r1, r1, r4 - ldrb r0, [r1, #1] - movs r2, #3 - orrs r0, r2 - strb r0, [r1, #1] - ldrh r2, [r6, #8] - lsls r2, r2, #3 - adds r2, r2, r4 - ldrb r1, [r2, #3] - movs r0, #0xf - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #8 - orrs r0, r1 - strb r0, [r2, #3] -_08047A14: - subs r6, #0xb8 - ldrh r0, [r6] - cmp r0, #0 - beq _08047A9A - ldr r4, _08047AF0 @ =gCurrentPinballGame - ldr r0, [r4] - movs r5, #0x80 - lsls r5, r5, #1 - adds r0, r0, r5 - ldr r0, [r0] - movs r1, #0x64 - bl __divsi3 - adds r0, #0x38 - strh r0, [r6, #2] - ldr r0, [r4] - adds r4, r0, #0 - adds r4, #0xfe - movs r1, #0x82 - lsls r1, r1, #1 - adds r0, r0, r1 - ldr r0, [r0] - movs r1, #0x64 - bl __divsi3 - adds r0, #0x34 - ldrh r4, [r4] - adds r0, r0, r4 - strh r0, [r6, #4] - movs r0, #0 - ldr r7, _08047AF4 @ =gOamBuffer - ldr r2, _08047AF8 @ =0xFFFFFE00 - mov r8, r2 -_08047A56: - lsls r4, r0, #0x10 - asrs r4, r4, #0x10 - lsls r0, r4, #3 - adds r0, #8 - adds r5, r6, r0 - ldrh r3, [r5] - lsls r3, r3, #3 - adds r3, r3, r7 - movs r0, #2 - ldrsh r1, [r5, r0] - movs r2, #2 - ldrsh r0, [r6, r2] - adds r1, r1, r0 - ldr r2, _08047AFC @ =0x000001FF - adds r0, r2, #0 - ands r1, r0 - ldrh r2, [r3, #2] - mov r0, r8 - ands r0, r2 - orrs r0, r1 - strh r0, [r3, #2] - ldrh r1, [r5] - lsls r1, r1, #3 - adds r1, r1, r7 - ldrb r0, [r6, #4] - ldrb r5, [r5, #4] - adds r0, r0, r5 - strb r0, [r1] - adds r4, #1 - lsls r4, r4, #0x10 - lsrs r0, r4, #0x10 - asrs r4, r4, #0x10 - cmp r4, #1 - ble _08047A56 -_08047A9A: - ldr r1, _08047AEC @ =gMain - ldrh r0, [r1, #0x12] - subs r0, #1 - strh r0, [r1, #0x12] - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - cmp r0, #0x46 - bls _08047B00 - ldrh r1, [r1, #0x12] - adds r2, r1, #0 - adds r2, #0x14 - adds r0, r2, #0 - asrs r0, r0, #6 - lsls r0, r0, #6 - subs r0, r2, r0 - lsls r0, r0, #0x1a - lsrs r0, r0, #0x10 - bl Sin - ldr r1, _08047AF0 @ =gCurrentPinballGame - ldr r5, [r1] - movs r3, #0x82 - lsls r3, r3, #1 - adds r4, r5, r3 - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - movs r1, #0x28 - bl __divsi3 - str r0, [r4] - movs r4, #0x84 - lsls r4, r4, #1 - adds r1, r5, r4 - movs r0, #0xa - strh r0, [r1] - movs r0, #0x85 - lsls r0, r0, #1 - adds r1, r5, r0 - adds r0, #0x86 - strh r0, [r1] - b _08047B3C - .align 2, 0 -_08047AEC: .4byte gMain -_08047AF0: .4byte gCurrentPinballGame -_08047AF4: .4byte gOamBuffer -_08047AF8: .4byte 0xFFFFFE00 -_08047AFC: .4byte 0x000001FF -_08047B00: - ldr r0, _08047B6C @ =gCurrentPinballGame - ldr r4, [r0] - movs r2, #0x84 - lsls r2, r2, #1 - adds r1, r4, r2 - movs r0, #0xc8 - lsls r0, r0, #1 - strh r0, [r1] - movs r5, #0x85 - lsls r5, r5, #1 - adds r3, r4, r5 - ldrh r0, [r3] - subs r0, #0x23 - strh r0, [r3] - movs r0, #0x80 - lsls r0, r0, #1 - adds r2, r4, r0 - movs r5, #0 - ldrsh r1, [r1, r5] - ldr r0, [r2] - adds r0, r0, r1 - str r0, [r2] - movs r0, #0x82 - lsls r0, r0, #1 - adds r2, r4, r0 - movs r4, #0 - ldrsh r1, [r3, r4] - ldr r0, [r2] - adds r0, r0, r1 - str r0, [r2] -_08047B3C: - ldr r1, _08047B70 @ =gMain - ldrh r2, [r1, #0x12] - adds r0, r2, #0 - subs r0, #0x1e - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - adds r6, r1, #0 - cmp r0, #0x1d - bhi _08047B74 - ldrh r1, [r6, #0x12] - movs r0, #0x3c - subs r0, r0, r1 - lsls r0, r0, #8 - movs r1, #0x1e - bl __divsi3 - movs r5, #0x80 - lsls r5, r5, #1 - adds r0, r0, r5 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - str r0, [sp] - b _08047B8C - .align 2, 0 -_08047B6C: .4byte gCurrentPinballGame -_08047B70: .4byte gMain -_08047B74: - movs r0, #0x80 - lsls r0, r0, #1 - str r0, [sp] - lsls r0, r2, #0x10 - lsrs r0, r0, #0x10 - cmp r0, #0x1d - bhi _08047B8C - movs r2, #0xbb - lsls r2, r2, #3 - adds r1, r6, r2 - movs r0, #0 - strh r0, [r1] -_08047B8C: - ldrh r0, [r6, #0x12] - cmp r0, #0x1e - bhi _08047BBE - cmp r0, #0xa - bls _08047BAE - adds r1, r0, #0 - subs r1, #0xa - lsls r0, r1, #5 - subs r0, r0, r1 - lsls r0, r0, #3 - movs r1, #0x14 - bl __divsi3 - adds r0, #8 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - b _08047BE4 -_08047BAE: - movs r3, #8 - mov sl, r3 - movs r4, #0xd2 - lsls r4, r4, #3 - adds r1, r6, r4 - movs r0, #0 - strh r0, [r1] - b _08047BE6 -_08047BBE: - ldr r0, _08047C48 @ =gCurrentPinballGame - ldr r0, [r0] - adds r1, r0, #0 - adds r1, #0xfe - ldrh r2, [r1] - movs r5, #0 - ldrsh r0, [r1, r5] - cmp r0, #0 - ble _08047BE0 - adds r0, r2, #0 - subs r0, #8 - strh r0, [r1] - lsls r0, r0, #0x10 - cmp r0, #0 - bge _08047BE0 - movs r0, #0 - strh r0, [r1] -_08047BE0: - movs r0, #0x80 - lsls r0, r0, #1 -_08047BE4: - mov sl, r0 -_08047BE6: - adds r3, r6, #0 - ldrh r0, [r3, #0x12] - cmp r0, #0xca - bls _08047BF0 - b _08047DBA -_08047BF0: - cmp r0, #0x37 - bls _08047C50 - ldr r7, _08047C48 @ =gCurrentPinballGame - ldr r2, [r7] - movs r1, #0x84 - lsls r1, r1, #1 - adds r0, r2, r1 - ldrh r1, [r0] - movs r4, #0x86 - lsls r4, r4, #1 - adds r0, r2, r4 - strh r1, [r0] - movs r5, #0x85 - lsls r5, r5, #1 - adds r0, r2, r5 - ldrh r0, [r0] - subs r0, #0x5a - adds r4, #2 - adds r1, r2, r4 - strh r0, [r1] - adds r5, #6 - mov r8, r5 - adds r1, r2, r5 - subs r4, #0xe - adds r0, r2, r4 - ldr r0, [r0] - str r0, [r1] - adds r5, #4 - mov sb, r5 - adds r1, r2, r5 - adds r4, #4 - adds r0, r2, r4 - ldr r0, [r0] - str r0, [r1] - ldrh r0, [r3, #0x12] - cmp r0, #0x38 - bne _08047C40 - movs r0, SE_UNKNOWN_0x95 - bl m4aSongNumStart -_08047C40: - ldr r5, [r7] - ldr r0, _08047C4C @ =0x0000132C - adds r4, r5, r0 - b _08047CBC - .align 2, 0 -_08047C48: .4byte gCurrentPinballGame -_08047C4C: .4byte 0x0000132C -_08047C50: - cmp r0, #0x1f - bls _08047D00 - ldr r7, _08047CF4 @ =gCurrentPinballGame - ldr r5, [r7] - movs r0, #0x87 - lsls r0, r0, #1 - adds r4, r5, r0 - ldrh r0, [r4] - adds r0, #6 - movs r1, #0 - mov ip, r1 - strh r0, [r4] - movs r2, #0x88 - lsls r2, r2, #1 - mov r8, r2 - adds r2, r5, r2 - movs r3, #0x86 - lsls r3, r3, #1 - adds r0, r5, r3 - movs r3, #0 - ldrsh r1, [r0, r3] - ldr r0, [r2] - adds r0, r0, r1 - str r0, [r2] - movs r0, #0x8a - lsls r0, r0, #1 - mov sb, r0 - adds r2, r5, r0 - movs r3, #0 - ldrsh r1, [r4, r3] - ldr r0, [r2] - adds r0, r0, r1 - str r0, [r2] - movs r4, #0xa4 - lsls r4, r4, #3 - adds r0, r6, r4 - mov r1, ip - strh r1, [r0] - ldrh r0, [r6, #0x12] - cmp r0, #0x20 - bne _08047CB6 - ldr r2, _08047CF8 @ =0x000005FA - adds r1, r5, r2 - movs r0, #0 - strb r0, [r1] - movs r0, SE_UNKNOWN_0x96 - bl m4aSongNumStart - movs r0, #6 - bl sub_11B0 -_08047CB6: - ldr r5, [r7] - ldr r3, _08047CFC @ =0x0000132C - adds r4, r5, r3 -_08047CBC: - ldr r6, [r4] - mov r1, r8 - adds r0, r5, r1 - ldr r0, [r0] - movs r1, #0x64 - bl __divsi3 - adds r0, #0x56 - lsls r0, r0, #8 - str r0, [r6, #0x34] - ldr r6, [r4] - adds r0, r5, #0 - adds r0, #0xfe - movs r2, #0 - ldrsh r4, [r0, r2] - add r5, sb - ldr r0, [r5] - movs r1, #0x64 - bl __divsi3 - movs r3, #0xba - lsls r3, r3, #1 - adds r0, r0, r3 - adds r4, r4, r0 - lsls r4, r4, #8 - str r4, [r6, #0x38] - adds r2, r7, #0 - b _08047D80 - .align 2, 0 -_08047CF4: .4byte gCurrentPinballGame -_08047CF8: .4byte 0x000005FA -_08047CFC: .4byte 0x0000132C -_08047D00: - ldr r4, _08047E68 @ =gCurrentPinballGame - mov sb, r4 - ldr r7, [r4] - movs r5, #0x86 - lsls r5, r5, #1 - adds r1, r7, r5 - movs r0, #0 - strh r0, [r1] - movs r0, #0x87 - lsls r0, r0, #1 - adds r3, r7, r0 - ldrh r0, [r3] - adds r0, #0x14 - strh r0, [r3] - movs r4, #0x88 - lsls r4, r4, #1 - adds r2, r7, r4 - movs r5, #0 - ldrsh r1, [r1, r5] - ldr r0, [r2] - adds r0, r0, r1 - str r0, [r2] - movs r0, #0x8a - lsls r0, r0, #1 - adds r5, r7, r0 - movs r4, #0 - ldrsh r1, [r3, r4] - ldr r0, [r5] - adds r0, r0, r1 - str r0, [r5] - ldr r0, _08047E6C @ =0x0000132C - adds r6, r7, r0 - ldr r4, [r6] - ldr r0, [r2] - movs r1, #0x64 - bl __divsi3 - adds r0, #0x56 - lsls r0, r0, #8 - str r0, [r4, #0x34] - ldr r1, [r6] - mov r8, r1 - adds r0, r7, #0 - adds r0, #0xfe - movs r2, #0 - ldrsh r4, [r0, r2] - ldr r0, [r5] - movs r1, #0x64 - bl __divsi3 - movs r3, #0xba - lsls r3, r3, #1 - adds r0, r0, r3 - adds r4, r4, r0 - lsls r4, r4, #8 - mov r5, r8 - str r4, [r5, #0x38] - ldr r6, [r6] - ldr r0, [r6, #0x38] - ldr r1, _08047E70 @ =0x00017100 - mov r2, sb - cmp r0, r1 - ble _08047D80 - str r1, [r6, #0x38] -_08047D80: - ldr r0, [r2] - ldr r1, _08047E6C @ =0x0000132C - adds r0, r0, r1 - ldr r0, [r0] - movs r3, #0 - strb r3, [r0, #1] - ldr r0, [r2] - adds r2, r0, r1 - ldr r1, [r2] - ldr r0, [r1, #0x28] - str r0, [r1, #0x2c] - ldr r1, [r2] - ldr r0, [r1, #0x34] - cmp r0, #0 - bge _08047DA0 - adds r0, #0x7f -_08047DA0: - asrs r0, r0, #7 - strh r0, [r1, #0x28] - ldr r1, [r2] - ldr r0, [r1, #0x38] - cmp r0, #0 - bge _08047DAE - adds r0, #0x7f -_08047DAE: - asrs r0, r0, #7 - strh r0, [r1, #0x2a] - ldr r0, [r2] - strh r3, [r0, #0x30] - ldr r0, [r2] - strh r3, [r0, #0x32] -_08047DBA: - movs r0, #0x80 - lsls r0, r0, #1 - mov r2, sl - lsls r1, r2, #0x10 - asrs r1, r1, #0x10 - movs r2, #3 - bl SetMatrixScale - ldr r3, [sp] - lsls r1, r3, #0x10 - asrs r1, r1, #0x10 - adds r0, r1, #0 - movs r2, #4 - bl SetMatrixScale - ldr r4, _08047E74 @ =gMain - ldrh r1, [r4, #0x12] - cmp r1, #0xcb - beq _08047DE2 - b _08047F18 -_08047DE2: - ldr r2, _08047E68 @ =gCurrentPinballGame - ldr r3, [r2] - movs r5, #0x80 - lsls r5, r5, #1 - adds r0, r3, r5 - movs r1, #0 - str r1, [r0] - adds r5, #4 - adds r0, r3, r5 - str r1, [r0] - adds r5, #4 - adds r0, r3, r5 - strh r1, [r0] - adds r5, #2 - adds r0, r3, r5 - strh r1, [r0] - adds r1, r3, #0 - adds r1, #0xfe - movs r0, #0x64 - strh r0, [r1] - movs r1, #0xd2 - lsls r1, r1, #3 - adds r0, r4, r1 - movs r1, #1 - strh r1, [r0] - movs r3, #0xbb - lsls r3, r3, #3 - adds r0, r4, r3 - strh r1, [r0] - movs r5, #0xa4 - lsls r5, r5, #3 - adds r0, r4, r5 - strh r1, [r0] - ldrb r0, [r4, #4] - cmp r0, #0 - bne _08047EAC - ldr r0, _08047E78 @ =0x040000D4 - ldr r1, _08047E7C @ =gUnknown_0850100C - str r1, [r0] - ldr r1, _08047E80 @ =0x06015800 - str r1, [r0, #4] - ldr r1, _08047E84 @ =0x80001200 - str r1, [r0, #8] - ldr r1, [r0, #8] - ldr r1, _08047E88 @ =gUnknown_085028CC - str r1, [r0] - ldr r1, _08047E8C @ =0x06016800 - str r1, [r0, #4] - ldr r1, _08047E90 @ =0x80000400 - str r1, [r0, #8] - ldr r1, [r0, #8] - ldr r1, _08047E94 @ =gUnknown_085038CC - str r1, [r0] - ldr r1, _08047E98 @ =0x06017000 - str r1, [r0, #4] - ldr r1, _08047E9C @ =0x80000060 - str r1, [r0, #8] - ldr r1, [r0, #8] - ldr r1, _08047EA0 @ =gUnknown_08514F4C - str r1, [r0] - ldr r1, _08047EA4 @ =0x050003C0 - str r1, [r0, #4] - ldr r1, _08047EA8 @ =0x80000010 - str r1, [r0, #8] - ldr r0, [r0, #8] - b _08047ECA - .align 2, 0 -_08047E68: .4byte gCurrentPinballGame -_08047E6C: .4byte 0x0000132C -_08047E70: .4byte 0x00017100 -_08047E74: .4byte gMain -_08047E78: .4byte 0x040000D4 -_08047E7C: .4byte gUnknown_0850100C -_08047E80: .4byte 0x06015800 -_08047E84: .4byte 0x80001200 -_08047E88: .4byte gUnknown_085028CC -_08047E8C: .4byte 0x06016800 -_08047E90: .4byte 0x80000400 -_08047E94: .4byte gUnknown_085038CC -_08047E98: .4byte 0x06017000 -_08047E9C: .4byte 0x80000060 -_08047EA0: .4byte gUnknown_08514F4C -_08047EA4: .4byte 0x050003C0 -_08047EA8: .4byte 0x80000010 -_08047EAC: - ldr r1, _08047EF4 @ =0x040000D4 - ldr r0, _08047EF8 @ =gUnknown_0850100C - str r0, [r1] - ldr r0, _08047EFC @ =0x06015800 - str r0, [r1, #4] - ldr r0, _08047F00 @ =0x80001200 - str r0, [r1, #8] - ldr r0, [r1, #8] - ldr r0, _08047F04 @ =gUnknown_08514F6C - str r0, [r1] - ldr r0, _08047F08 @ =0x050003C0 - str r0, [r1, #4] - ldr r0, _08047F0C @ =0x80000010 - str r0, [r1, #8] - ldr r0, [r1, #8] -_08047ECA: - ldr r1, [r2] - movs r0, #2 - strb r0, [r1, #0x1f] - ldr r0, [r2] - ldr r1, _08047F10 @ =0x000005FA - adds r0, r0, r1 - movs r1, #1 - strb r1, [r0] - ldr r0, [r2] - ldr r3, _08047F14 @ =0x000005F7 - adds r0, r0, r3 - strb r1, [r0] - ldr r0, [r2] - movs r4, #0x88 - lsls r4, r4, #5 - adds r0, r0, r4 - strb r1, [r0] - movs r0, SE_UNKNOWN_0x94 - bl m4aSongNumStart - b _08047FA0 - .align 2, 0 -_08047EF4: .4byte 0x040000D4 -_08047EF8: .4byte gUnknown_0850100C -_08047EFC: .4byte 0x06015800 -_08047F00: .4byte 0x80001200 -_08047F04: .4byte gUnknown_08514F6C -_08047F08: .4byte 0x050003C0 -_08047F0C: .4byte 0x80000010 -_08047F10: .4byte 0x000005FA -_08047F14: .4byte 0x000005F7 -_08047F18: - cmp r1, #0 - bne _08047FA0 - movs r5, #0xd2 - lsls r5, r5, #3 - adds r0, r4, r5 - strh r1, [r0] - movs r2, #0xbb - lsls r2, r2, #3 - adds r0, r4, r2 - strh r1, [r0] - b _08047FA0 -_08047F2E: - ldrb r1, [r7, #0xf] - movs r0, #0xf7 - ands r0, r1 - strb r0, [r7, #0xf] - ldr r5, _08047F6C @ =gCurrentPinballGame - ldr r1, [r5] - movs r4, #0 - movs r0, #0x3c - strh r0, [r1, #0x26] - movs r0, #0 - bl sub_11C14 - ldr r0, [r5] - strb r4, [r0, #0x1f] - movs r0, #0 - bl sub_46FD4 - ldr r0, [r5] - ldr r3, _08047F70 @ =0x0000029E - adds r0, r0, r3 - strb r4, [r0] - ldrb r0, [r7, #4] - cmp r0, #0 - bne _08047F78 - ldr r0, [r5] - ldr r4, _08047F74 @ =0x0000132C - adds r0, r0, r4 - ldr r1, [r0] - movs r0, #3 - b _08047F82 - .align 2, 0 -_08047F6C: .4byte gCurrentPinballGame -_08047F70: .4byte 0x0000029E -_08047F74: .4byte 0x0000132C -_08047F78: - ldr r0, [r5] - ldr r5, _08047FB0 @ =0x0000132C - adds r0, r0, r5 - ldr r1, [r0] - movs r0, #1 -_08047F82: - strb r0, [r1, #1] - ldr r2, _08047FB4 @ =gCurrentPinballGame - ldr r0, [r2] - ldr r1, _08047FB8 @ =0x000005F7 - adds r0, r0, r1 - movs r1, #0 - strb r1, [r0] - ldr r0, [r2] - adds r0, #0xe4 - strb r1, [r0] - ldr r0, [r2] - movs r2, #0x88 - lsls r2, r2, #5 - adds r0, r0, r2 - strb r1, [r0] -_08047FA0: - 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 -_08047FB0: .4byte 0x0000132C -_08047FB4: .4byte gCurrentPinballGame -_08047FB8: .4byte 0x000005F7 diff --git a/expected_objs/sub_478D8.o b/expected_objs/sub_478D8.o deleted file mode 100644 index 2348c1a1efac8199ee86780148c7d83727f2328a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5380 zcma)<3v3j}8OOgpA7*V{=Lgjuy@a)Wz?zr#;Ec}{&^^4%ow0)hA$3D#e13#=z~*8f z#qKK$1?OV56`{1H39Ue-DxpYqBqF5+scxI9CT&#gMk$X{ISuMVO`^0?Mfwo*KYP3D z@ujb^_U8M|eDi(Zd^5WAjaesz0P_`t+s4 zV~4j7jbg~;(zmAMaoQrOxyw~o>8d}clM=nwCTGk~Cds&`Qm#@RGf6(QeW>Y#zNlt* z{A;?`8?2lrQLU3!*JnjA{%Vzd}7*D^vl=#}ROD}~js-PUzAM@r&aTeEDK%latlC!@RS z{@r``B{gHphBt68e55KxQORkqRD(J4kC}A=v97s!-7`~E?)TLEvE5Vi9wJL^lMva? zoSu{rS*sa(<|>sSvNgj|znIBWa;T`>sQZ3Q4)E=J^m3$pX@*MQrJU`Vm>I*y=VG%A2 zJfM_ce{yt_99=@52dy~lwL~u+_i^5tU9_P60mXa$a`hCwC=p`Kj6SF=zFw-#yCDQh z8O)GWWJGAVx$J+KO9VOmvnR$$j`@ z-F!+NFB6ZU&86fqpHVd8GZG_gWq0Uh-jd3qYPJ&eydSa{@LIIIIX(KbTDtb!bX8M@ z^;K!}Q~Z1dZ{riaOfng4RXPS~TYv$?lK8<1H6#qx4;>W-vNsp z-vvt?vn$na*`iuSpn2dSu75Gu;CLxG%W*CE4##YMynl4hvbP=$3g>S#IKc5%@NYPK z4})c{e>XVDaS!-B$IL%(?*RIbvv=7l0(RhR|HEiF$@PB@e2U{QfG0TnUj@Ix@mcU` zPX9aLQjT8&N4fXm2jJJa{;S|K9RCu0j^o?l^Bn&ke39cngU2}j2lx`lbFg<_=6DhK z3der%IL9^MS2$h+p5VA1{Bw?D;A$KM4{aBS@-j#<3?dVUZ3C%OI~gHLh%8u$#y zzXG4;_)YKyj+ws`95a9X_&-7aI@kYK@UJ<(51!_j+2i$rZo!dCC3x4E4_3+{Rk-gS zkq>Qw0+tJSc>!-MV6A|66>xh2_Z9F{1^jFQf3tvJD&U_M@MHl~FiU&Xh#IbsX$f13 zXqqkQ>l~>e5_a@-)s<%2B6eHDx|v?bUM%G5HN>2;bsKCct~w*)>l1|QWmyIIpCZr0+iy}0W)9-+a5oqNLdkw!$Yr@QwPgT3o% zXKz34ZAr7=#KD1qp8jlWZ+~Zc|NgD%z8>1UJ>3^S`1s>J1JoBz?>x}I_o0J*JG1G5 ztYs?{f}@>1*_L#6pm%6zS9(8&?CRgwf8bC*c6gl{QZdI_E$bqQf|m7#EupX;o~?rx zMq>FaBpBWyPq(L>H(6|>9E4OY|I!QsAax)XJFAYU7fG|;nuZMJ79OKZE+*)*-~92}&z_#b0! zI*WDfJechngn|FBuzyvMYJyvelOYfEl)5F8ucj963v9puS!SM-^ a+VIcPEv~__S5~0+ar}=QWdrQu==}?Y!-O>e diff --git a/expected_objs/sub_47FBC.o b/expected_objs/sub_47FBC.o deleted file mode 100644 index 0c935ec52825d62ae6624c067cda749a8a5d1e9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 912 zcma)4%Wl(95Ir{!HxH-^Ql(TZh$^ToQCUWWCJPn`CLsZ`soHg7t5F*PX%ye6?W$R3 z$tUp%RN@0zvSiH$&cwd1vuekhnRDizJNM=5_NR_g3dR&{+%mwTz3ca2WeTd8UOH-!irKZD0a<=&%W?r}U?)X|a)JdYY%=aAHH8ZCgB0H-c2ium z(b=V_aKP9QxH5$%^Ik+4*SDWV9$u>YnB)CK3v3A#{3s26^Lb?%om;T z=P@@gJta?@x$ze)ivBL0ye&0J8v#|iG1E_S^y^0>-F7{P#)_2AofKj92b7MU=+4!}qOLjptzMzOestLL6zoqd z)1>D&*q;pimppw9`WpOk&tHZFtNq%)$q%S2r57OIUxH9N>U13Ro2LnJAE zq~4Jq^K0^|$w5sWtAqmD3*Tu^B65IqY-8jSsbwfd43b75KNp z9|N}(&M&O?V}U1wUC?L?{EedT0;iPt9(Y>eFTp=5`q#kU75*0ZRN?P|$CdTmpISeV z0)#0-A7Dj30rXiB#DTwF;FNM{%_tbzf{`l-%4Y@T%7V;_pu8dIZcb1(h*pB=e1%dQ z1A%D<$qOPiO-XLv2^N(~lCm5$QI#^Lk)ux6Ud!gI)dFqSt!9fh%iVUn(Q;RsE!*1O zUa)o={EB?0LR0?P30?R1j4fq4&v#tQhIQM%bp*8=+Zng9>r!UJaxKc(oepJi{xg>A zwwrd>ZFD&Ge+~YP_&Y=gYQB%=KqP;Ul}AfQ7d=Il}^XbXL93AJ8FTXfi^ zbP_#ah0`YWI(jgoUVD-x@yOf_Mv)#4uk~ZRtT~6n;JxQQ;N_=Jk48sOlPt9_l*B{d z#8X3lR~t=!l&0k4zxmpjWDreEoI1OBANlw5d6aA#-@~D0mV)Ik&@y^xeGT`P&x_~r ze9rUGkF1xQFoSoSoc%F^od3VP`Z8xMYs>&uF;H2L6(wbD&V=9^WD}k1<9c}y@=YMk Wk<(+aP1f6nck==)9!e5a^8NwFp;xs4 diff --git a/expected_objs/sub_48190.o b/expected_objs/sub_48190.o deleted file mode 100644 index 9d1ffdd45a523816dca4dc9580f27ae2cb36806b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15700 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 diff --git a/include/functions.h b/include/functions.h index 49974ca..1b5b8dd 100644 --- a/include/functions.h +++ b/include/functions.h @@ -370,7 +370,7 @@ extern void ClearSomeArray(void); // asm/rom_11B9C.s //extern ? sub_11B9C(); -//extern ? sub_11C14(); +extern void sub_11C14(s16); //extern ? sub_11C98(); extern void sub_1332C(); extern void sub_1333C(); diff --git a/include/global.h b/include/global.h index 2c06e94..d51e63b 100644 --- a/include/global.h +++ b/include/global.h @@ -183,7 +183,16 @@ struct PinballGame /*0x0FA*/ s8 unkFA; /*0x0FB*/ s8 unkFB; /*0x0FC*/ u16 unkFC; - /*0x0FE*/ u8 fillerFE[0x23]; + /*0x0FE*/ s16 unkFE; + /*0x100*/ s32 unk100; + /*0x104*/ s32 unk104; + /*0x108*/ s16 unk108; + /*0x10A*/ s16 unk10A; + /*0x10C*/ s16 unk10C; + /*0x10E*/ s16 unk10E; + /*0x110*/ s32 unk110; + /*0x114*/ s32 unk114; + /*0x118*/ u8 filler118[0x9]; /*0x121*/ s8 unk121; /*0x122*/ s8 unk122; /*0x123*/ s8 unk123; diff --git a/src/rom_11B9C.c b/src/rom_11B9C.c index edb0854..6f472cf 100644 --- a/src/rom_11B9C.c +++ b/src/rom_11B9C.c @@ -4,7 +4,6 @@ #include "constants/fields.h" #include "m4a.h" -void sub_11C14(s16); void sub_12524(void); void sub_12BF8(void); void sub_2AADC(void); diff --git a/src/rom_49A34.c b/src/rom_49A34.c index ef87c73..f8b5632 100644 --- a/src/rom_49A34.c +++ b/src/rom_49A34.c @@ -9,6 +9,230 @@ extern const u8 gUnknown_08510CAC[][0x20]; extern const u8 gUnknown_0850558C[][0x20]; extern const s8 gUnknown_086B0128[][3][20]; +extern const u8 gUnknown_0850100C[]; +extern const u8 gUnknown_085028CC[]; +extern const u8 gUnknown_085038CC[]; +extern const u8 gUnknown_08514F4C[]; +extern const u8 gUnknown_08514F6C[]; + +void sub_478D8(void) +{ + s16 i; + struct SpriteGroup *group; + struct OamDataSimple *oamSimple; + int newX, newY; + s16 mat3Scale; + s16 mat4Scale; + + if (gMain.unk12) + { + group = &gMain.spriteGroups[5]; + if (group->available) + { + group->baseX = 88; + group->baseY = 20 + gCurrentPinballGame->unkFE; + for (i = 0; i < 2; i++) + { + oamSimple = &group->oam[i]; + gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; + gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; + gOamBuffer[oamSimple->oamId].affineMode = ST_OAM_AFFINE_DOUBLE; + gOamBuffer[oamSimple->oamId].matrixNum = 3; + } + } + + group = &gMain.spriteGroups[4]; + if (group->available) + { + group->baseX = 24 + gCurrentPinballGame->unk100 / 100; + group->baseY = gCurrentPinballGame->unkFE + 20 + gCurrentPinballGame->unk104 / 100; + + oamSimple = &group->oam[0]; + gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; + gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; + gOamBuffer[oamSimple->oamId].affineMode = ST_OAM_AFFINE_DOUBLE; + gOamBuffer[oamSimple->oamId].matrixNum = 4; + } + + group = &gMain.spriteGroups[3]; + if (group->available) + { + group->baseX = 56 + gCurrentPinballGame->unk100 / 100; + group->baseY = gCurrentPinballGame->unkFE + 52 + gCurrentPinballGame->unk104 / 100; + for (i = 0; i < 2; i++) + { + oamSimple = &group->oam[i]; + gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; + gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; + } + } + + gMain.unk12--; + if (gMain.unk12 > 70) + { + int var0 = (gMain.unk12 + 20) % 0x40; + gCurrentPinballGame->unk104 = (Sin(var0 * 0x400) * 500) / 20000; + gCurrentPinballGame->unk108 = 10; + gCurrentPinballGame->unk10A = 400; + } + else + { + gCurrentPinballGame->unk108 = 400; + gCurrentPinballGame->unk10A -= 35; + gCurrentPinballGame->unk100 += gCurrentPinballGame->unk108; + gCurrentPinballGame->unk104 += gCurrentPinballGame->unk10A; + } + + if (gMain.unk12 >= 30 && gMain.unk12 < 60) + { + mat4Scale = (60 - gMain.unk12) * 0x100 / 30 + 0x100; + } + else + { + mat4Scale = 0x100; + if (gMain.unk12 < 30) + gMain.spriteGroups[4].available = 0; + } + + if (gMain.unk12 < 31) + { + if (gMain.unk12 > 10) + { + mat3Scale = ((gMain.unk12 - 10) * 248) / 20 + 8; + } + else + { + mat3Scale = 8; + gMain.spriteGroups[5].available = 0; + } + } + else + { + if (gCurrentPinballGame->unkFE > 0) + { + gCurrentPinballGame->unkFE -= 8; + if (gCurrentPinballGame->unkFE < 0) + gCurrentPinballGame->unkFE = 0; + } + + mat3Scale = 0x100; + } + + if (gMain.unk12 < 203) + { + if (gMain.unk12 > 55) + { + gCurrentPinballGame->unk10C = gCurrentPinballGame->unk108; + gCurrentPinballGame->unk10E = gCurrentPinballGame->unk10A - 90; + gCurrentPinballGame->unk110 = gCurrentPinballGame->unk100; + gCurrentPinballGame->unk114 = gCurrentPinballGame->unk104; + if (gMain.unk12 == 56) + m4aSongNumStart(SE_UNKNOWN_0x95); + + gCurrentPinballGame->ball->positionQ8.x = (gCurrentPinballGame->unk110 / 100 + 86) << 8; + gCurrentPinballGame->ball->positionQ8.y = (gCurrentPinballGame->unkFE + 372 + gCurrentPinballGame->unk114 / 100) << 8; + } + else if (gMain.unk12 > 31) + { + gCurrentPinballGame->unk10E += 6; + gCurrentPinballGame->unk110 += gCurrentPinballGame->unk10C; + gCurrentPinballGame->unk114 += gCurrentPinballGame->unk10E; + gMain.spriteGroups[3].available = 0; + if (gMain.unk12 == 32) + { + gCurrentPinballGame->unk5FA = 0; + m4aSongNumStart(SE_UNKNOWN_0x96); + sub_11B0(6); + } + + gCurrentPinballGame->ball->positionQ8.x = (gCurrentPinballGame->unk110 / 100 + 86) << 8; + gCurrentPinballGame->ball->positionQ8.y = (gCurrentPinballGame->unkFE + 372 + gCurrentPinballGame->unk114 / 100) << 8; + } + else + { + gCurrentPinballGame->unk10C = 0; + gCurrentPinballGame->unk10E += 20; + gCurrentPinballGame->unk110 += gCurrentPinballGame->unk10C; + gCurrentPinballGame->unk114 += gCurrentPinballGame->unk10E; + gCurrentPinballGame->ball->positionQ8.x = (gCurrentPinballGame->unk110 / 100 + 86) << 8; + gCurrentPinballGame->ball->positionQ8.y = (gCurrentPinballGame->unkFE + 372 + gCurrentPinballGame->unk114 / 100) << 8; + if (gCurrentPinballGame->ball->positionQ8.y > 0x17100) + gCurrentPinballGame->ball->positionQ8.y = 0x17100; + } + + gCurrentPinballGame->ball->unk1 = 0; + gCurrentPinballGame->ball->prevPositionQ1 = gCurrentPinballGame->ball->positionQ1; + + newX = gCurrentPinballGame->ball->positionQ8.x; + if (newX < 0) + newX += 0x7F; + gCurrentPinballGame->ball->positionQ1.x = newX >> 7; + + newY = gCurrentPinballGame->ball->positionQ8.y; + if (newY < 0) + newY += 0x7F; + gCurrentPinballGame->ball->positionQ1.y = newY >> 7; + + gCurrentPinballGame->ball->velocity.x = 0; + gCurrentPinballGame->ball->velocity.y = 0; + } + + SetMatrixScale(0x100, mat3Scale, 3); + SetMatrixScale(mat4Scale, mat4Scale, 4); + + if (gMain.unk12 == 203) + { + gCurrentPinballGame->unk100 = 0; + gCurrentPinballGame->unk104 = 0; + gCurrentPinballGame->unk108 = 0; + gCurrentPinballGame->unk10A = 0; + gCurrentPinballGame->unkFE = 100; + gMain.spriteGroups[5].available = 1; + gMain.spriteGroups[4].available = 1; + gMain.spriteGroups[3].available = 1; + if (gMain.selectedField == FIELD_RUBY) + { + DmaCopy16(3, gUnknown_0850100C, (void *)0x06015800, 0x2400); + DmaCopy16(3, gUnknown_085028CC, (void *)0x06016800, 0x800); + DmaCopy16(3, gUnknown_085038CC, (void *)0x06017000, 0xC0); + DmaCopy16(3, gUnknown_08514F4C, (void *)0x050003C0, 0x20); + } + else + { + DmaCopy16(3, gUnknown_0850100C, (void *)0x06015800, 0x2400); + DmaCopy16(3, gUnknown_08514F6C, (void *)0x050003C0, 0x20); + } + + gCurrentPinballGame->unk1F = 2; + gCurrentPinballGame->unk5FA = 1; + gCurrentPinballGame->unk5F7 = 1; + gCurrentPinballGame->unk1100 = 1; + m4aSongNumStart(SE_UNKNOWN_0x94); + } + else if (gMain.unk12 == 0) + { + gMain.spriteGroups[5].available = 0; + gMain.spriteGroups[4].available = 0; + } + } + else + { + gMain.unkF &= 0xF7; + gCurrentPinballGame->unk26 = 60; + sub_11C14(0); + gCurrentPinballGame->unk1F = 0; + sub_46FD4(0); + gCurrentPinballGame->unk29E = 0; + if (gMain.selectedField == FIELD_RUBY) + gCurrentPinballGame->ball->unk1 = 3; + else + gCurrentPinballGame->ball->unk1 = 1; + + gCurrentPinballGame->unk5F7 = 0; + gCurrentPinballGame->unkE4 = 0; + gCurrentPinballGame->unk1100 = 0; + } +} void sub_47FBC(void) {