diff options
-rw-r--r-- | asm/rom4.s | 849 | ||||
-rw-r--r-- | include/link.h | 2 | ||||
-rw-r--r-- | src/rom4.c | 386 |
3 files changed, 385 insertions, 852 deletions
diff --git a/asm/rom4.s b/asm/rom4.s index fad0d3b08..419de8a05 100644 --- a/asm/rom4.s +++ b/asm/rom4.s @@ -5,855 +5,6 @@ .text - thumb_func_start sub_8054E20 -sub_8054E20: @ 8054E20 - push {lr} - movs r0, 0 - movs r1, 0 - bl sub_805B710 - bl sub_80C8080 - pop {r0} - bx r0 - thumb_func_end sub_8054E20 - - thumb_func_start sub_8054E34 -sub_8054E34: @ 8054E34 - push {lr} - ldr r2, _08054E58 - ldr r3, _08054E5C - ldrb r1, [r3, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x1] - movs r2, 0x80 - orrs r1, r2 - strb r1, [r0, 0x1] - ldrb r0, [r3, 0x4] - bl InitCameraUpdateCallback - pop {r0} - bx r0 - .align 2, 0 -_08054E58: .4byte gMapObjects -_08054E5C: .4byte gPlayerAvatar - thumb_func_end sub_8054E34 - - thumb_func_start sub_8054E60 -sub_8054E60: @ 8054E60 - push {lr} - ldr r0, _08054E78 - ldrb r0, [r0] - bl sub_8055AE8 - lsls r0, 24 - lsrs r0, 24 - bl InitCameraUpdateCallback - pop {r0} - bx r0 - .align 2, 0 -_08054E78: .4byte gUnknown_03004860 - thumb_func_end sub_8054E60 - - thumb_func_start sub_8054E7C -sub_8054E7C: @ 8054E7C - push {lr} - ldr r0, _08054E94 - ldrb r0, [r0] - bl sub_8055AE8 - lsls r0, 24 - lsrs r0, 24 - bl InitCameraUpdateCallback - pop {r0} - bx r0 - .align 2, 0 -_08054E94: .4byte gUnknown_03004860 - thumb_func_end sub_8054E7C - - thumb_func_start sub_8054E98 -sub_8054E98: @ 8054E98 - push {r4,lr} - sub sp, 0x4 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl sav1_camera_get_focus_coords - mov r2, sp - ldr r0, _08054EC4 - ldrb r1, [r0] - ldrh r0, [r2] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - ldrh r1, [r4] - bl sub_8056C50 - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08054EC4: .4byte gUnknown_03004860 - thumb_func_end sub_8054E98 - - thumb_func_start sub_8054EC8 -sub_8054EC8: @ 8054EC8 - push {r4-r7,lr} - sub sp, 0x4 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl sav1_camera_get_focus_coords - mov r3, sp - mov r2, sp - ldr r0, _08054F38 - ldrb r1, [r0] - ldrh r0, [r2] - subs r0, r1 - strh r0, [r3] - movs r5, 0 - ldr r0, _08054F3C - adds r7, r4, 0 - ldrb r0, [r0] - cmp r5, r0 - bcs _08054F2A - ldr r6, _08054F40 -_08054EF4: - lsls r4, r5, 24 - lsrs r4, 24 - mov r0, sp - ldrh r1, [r0] - adds r1, r5, r1 - lsls r1, 16 - asrs r1, 16 - movs r0, 0 - ldrsh r2, [r7, r0] - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - adds r0, r6 - ldrb r3, [r0, 0x13] - adds r0, r4, 0 - bl sub_8055980 - adds r0, r4, 0 - bl sub_8055E5C - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - ldr r0, _08054F3C - ldrb r0, [r0] - cmp r5, r0 - bcc _08054EF4 -_08054F2A: - ldr r0, _08054F44 - bl sub_8055340 - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08054F38: .4byte gUnknown_03004860 -_08054F3C: .4byte gUnknown_03004864 -_08054F40: .4byte gLinkPlayers -_08054F44: .4byte word_3002910 - thumb_func_end sub_8054EC8 - - thumb_func_start sub_8054F48 -sub_8054F48: @ 8054F48 - push {r4,lr} - movs r4, 0 - b _08054F5C -_08054F4E: - lsls r0, r4, 24 - lsrs r0, 24 - bl sub_8055E5C - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 -_08054F5C: - ldr r0, _08054F6C - ldrb r0, [r0] - cmp r4, r0 - bcc _08054F4E - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08054F6C: .4byte gUnknown_03004864 - thumb_func_end sub_8054F48 - - thumb_func_start sub_8054F70 -sub_8054F70: @ 8054F70 - push {lr} - ldr r1, _08054F84 - movs r2, 0x80 - adds r0, r1, 0x3 -_08054F78: - strb r2, [r0] - subs r0, 0x1 - cmp r0, r1 - bge _08054F78 - pop {r0} - bx r0 - .align 2, 0 -_08054F84: .4byte gUnknown_03000580 - thumb_func_end sub_8054F70 - - thumb_func_start sub_8054F88 -sub_8054F88: @ 8054F88 - push {r4,lr} - lsls r0, 16 - lsrs r3, r0, 16 - ldr r0, _08054FA8 - ldrb r2, [r0] - movs r1, 0 - cmp r1, r2 - bge _08054FB6 - ldr r4, _08054FAC -_08054F9A: - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, r3 - beq _08054FB0 - movs r0, 0 - b _08054FB8 - .align 2, 0 -_08054FA8: .4byte gUnknown_03004864 -_08054FAC: .4byte gUnknown_03000580 -_08054FB0: - adds r1, 0x1 - cmp r1, r2 - blt _08054F9A -_08054FB6: - movs r0, 0x1 -_08054FB8: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8054F88 - - thumb_func_start sub_8054FC0 -sub_8054FC0: @ 8054FC0 - push {r4,lr} - lsls r0, 16 - lsrs r3, r0, 16 - ldr r0, _08054FE0 - ldrb r2, [r0] - movs r1, 0 - cmp r1, r2 - bge _08054FEE - ldr r4, _08054FE4 -_08054FD2: - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, r3 - bne _08054FE8 - movs r0, 0x1 - b _08054FF0 - .align 2, 0 -_08054FE0: .4byte gUnknown_03004864 -_08054FE4: .4byte gUnknown_03000580 -_08054FE8: - adds r1, 0x1 - cmp r1, r2 - blt _08054FD2 -_08054FEE: - movs r0, 0 -_08054FF0: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8054FC0 - - thumb_func_start sub_8054FF8 -sub_8054FF8: @ 8054FF8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r7, r0, 0 - adds r6, r2, 0 - mov r9, r3 - lsls r1, 16 - lsrs r1, 16 - mov r8, r1 - ldr r0, _08055048 - adds r5, r7, r0 - ldrb r0, [r5] - cmp r0, 0x80 - beq _08055018 - b _08055192 -_08055018: - adds r0, r6, 0 - bl sub_8055648 - adds r4, r0, 0 - cmp r4, 0 - beq _08055050 - bl sub_8055758 - mov r1, r9 - strh r0, [r1] - movs r0, 0x81 - strb r0, [r5] - ldrb r0, [r6, 0x1] - cmp r0, 0 - bne _08055038 - b _08055206 -_08055038: - ldr r0, _0805504C - bl sub_80543DC - adds r0, r4, 0 - bl sub_8055808 - b _08055206 - .align 2, 0 -_08055048: .4byte gUnknown_03000580 -_0805504C: .4byte sub_80553E4 -_08055050: - movs r0, 0x83 - bl sub_8054FC0 - cmp r0, 0x1 - bne _08055078 - movs r0, 0x81 - strb r0, [r5] - ldrb r0, [r6, 0x1] - cmp r0, 0 - bne _08055066 - b _08055206 -_08055066: - ldr r0, _08055074 - bl sub_80543DC - bl sub_805585C - b _08055206 - .align 2, 0 -_08055074: .4byte sub_80553E4 -_08055078: - mov r0, r8 - subs r0, 0x12 - cmp r0, 0xA - bls _08055082 - b _08055192 -_08055082: - lsls r0, 2 - ldr r1, _0805508C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0805508C: .4byte _08055090 - .align 2, 0 -_08055090: - .4byte _080550E8 - .4byte _08055192 - .4byte _08055192 - .4byte _08055192 - .4byte _08055192 - .4byte _08055192 - .4byte _080550BC - .4byte _08055114 - .4byte _08055192 - .4byte _08055144 - .4byte _08055170 -_080550BC: - adds r0, r6, 0 - bl sub_8055630 - cmp r0, 0 - beq _08055192 - ldr r0, _080550E0 - adds r0, r7, r0 - movs r1, 0x81 - strb r1, [r0] - ldrb r0, [r6, 0x1] - cmp r0, 0 - beq _08055192 - ldr r0, _080550E4 - bl sub_80543DC - bl sub_80557F4 - b _08055192 - .align 2, 0 -_080550E0: .4byte gUnknown_03000580 -_080550E4: .4byte sub_80553E4 -_080550E8: - adds r0, r6, 0 - bl sub_8055660 - cmp r0, 0x1 - bne _08055192 - ldr r0, _0805510C - adds r0, r7, r0 - movs r1, 0x81 - strb r1, [r0] - ldrb r0, [r6, 0x1] - cmp r0, 0 - beq _08055192 - ldr r0, _08055110 - bl sub_80543DC - bl sub_8055824 - b _08055192 - .align 2, 0 -_0805510C: .4byte gUnknown_03000580 -_08055110: .4byte sub_80553E4 -_08055114: - adds r0, r6, 0 - bl sub_805568C - adds r4, r0, 0 - cmp r4, 0 - beq _08055192 - ldr r0, _0805513C - adds r0, r7, r0 - movs r1, 0x81 - strb r1, [r0] - ldrb r0, [r6, 0x1] - cmp r0, 0 - beq _08055192 - ldr r0, _08055140 - bl sub_80543DC - adds r0, r4, 0 - bl sub_8055840 - b _08055192 - .align 2, 0 -_0805513C: .4byte gUnknown_03000580 -_08055140: .4byte sub_80553E4 -_08055144: - adds r0, r6, 0 - bl sub_8055618 - cmp r0, 0 - beq _08055192 - ldr r0, _08055168 - adds r0, r7, r0 - movs r1, 0x81 - strb r1, [r0] - ldrb r0, [r6, 0x1] - cmp r0, 0 - beq _08055192 - ldr r0, _0805516C - bl sub_80543DC - bl sub_80557E8 - b _08055192 - .align 2, 0 -_08055168: .4byte gUnknown_03000580 -_0805516C: .4byte sub_8055408 -_08055170: - adds r0, r6, 0 - bl sub_8055618 - cmp r0, 0 - beq _08055192 - ldr r0, _080551A4 - adds r0, r7, r0 - movs r1, 0x81 - strb r1, [r0] - ldrb r0, [r6, 0x1] - cmp r0, 0 - beq _08055192 - ldr r0, _080551A8 - bl sub_80543DC - bl sub_80557E8 -_08055192: - mov r0, r8 - cmp r0, 0x17 - beq _080551B8 - cmp r0, 0x17 - bgt _080551AC - cmp r0, 0x16 - beq _080551C8 - b _08055206 - .align 2, 0 -_080551A4: .4byte gUnknown_03000580 -_080551A8: .4byte sub_8055438 -_080551AC: - mov r1, r8 - cmp r1, 0x1A - beq _080551D8 - cmp r1, 0x1D - beq _080551F8 - b _08055206 -_080551B8: - ldr r0, _080551C4 - adds r0, r7, r0 - movs r1, 0x83 - strb r1, [r0] - b _08055206 - .align 2, 0 -_080551C4: .4byte gUnknown_03000580 -_080551C8: - ldr r0, _080551D4 - adds r0, r7, r0 - movs r1, 0x82 - strb r1, [r0] - b _08055206 - .align 2, 0 -_080551D4: .4byte gUnknown_03000580 -_080551D8: - ldr r0, _080551F0 - adds r0, r7, r0 - movs r1, 0x80 - strb r1, [r0] - ldrb r0, [r6, 0x1] - cmp r0, 0 - beq _08055206 - ldr r0, _080551F4 - bl sub_80543DC - b _08055206 - .align 2, 0 -_080551F0: .4byte gUnknown_03000580 -_080551F4: .4byte sub_8055390 -_080551F8: - ldr r0, _08055214 - adds r1, r7, r0 - ldrb r0, [r1] - cmp r0, 0x82 - bne _08055206 - movs r0, 0x81 - strb r0, [r1] -_08055206: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08055214: .4byte gUnknown_03000580 - thumb_func_end sub_8054FF8 - - thumb_func_start sub_8055218 -sub_8055218: @ 8055218 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x14 - mov r8, r1 - movs r6, 0 - add r4, sp, 0x10 - mov r9, r4 - adds r7, r0, 0 -_0805522C: - ldrh r5, [r7] - movs r0, 0 - strh r0, [r4] - adds r0, r6, 0 - mov r1, r8 - mov r2, sp - bl sub_80555B0 - adds r0, r6, 0 - adds r1, r5, 0 - mov r2, sp - adds r3, r4, 0 - bl sub_8054FF8 - ldr r0, _0805527C - adds r0, r6, r0 - ldrb r0, [r0] - cmp r0, 0x80 - bne _0805525C - adds r0, r5, 0 - bl sub_805530C - mov r1, r9 - strh r0, [r1] -_0805525C: - lsls r0, r6, 24 - lsrs r0, 24 - ldrb r1, [r4] - bl sub_8055BFC - adds r7, 0x2 - adds r6, 0x1 - cmp r6, 0x3 - ble _0805522C - add sp, 0x14 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0805527C: .4byte gUnknown_03000580 - thumb_func_end sub_8055218 - - thumb_func_start sub_8055280 -sub_8055280: @ 8055280 - push {lr} - lsls r0, 16 - lsrs r1, r0, 16 - ldr r2, _08055298 - adds r0, r2 - lsrs r0, 16 - cmp r0, 0xC - bhi _080552A0 - ldr r0, _0805529C - strh r1, [r0] - b _080552A6 - .align 2, 0 -_08055298: .4byte 0xffef0000 -_0805529C: .4byte word_3004858 -_080552A0: - ldr r1, _080552AC - movs r0, 0x11 - strh r0, [r1] -_080552A6: - pop {r0} - bx r0 - .align 2, 0 -_080552AC: .4byte word_3004858 - thumb_func_end sub_8055280 - - thumb_func_start sub_80552B0 -sub_80552B0: @ 80552B0 - push {lr} - ldr r2, _080552C4 - ldrh r1, [r2, 0x2C] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080552C8 - movs r0, 0x13 - b _08055308 - .align 2, 0 -_080552C4: .4byte gMain -_080552C8: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080552D4 - movs r0, 0x12 - b _08055308 -_080552D4: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080552E0 - movs r0, 0x14 - b _08055308 -_080552E0: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080552EC - movs r0, 0x15 - b _08055308 -_080552EC: - ldrh r1, [r2, 0x2E] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _080552FA - movs r0, 0x18 - b _08055308 -_080552FA: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08055306 - movs r0, 0x11 - b _08055308 -_08055306: - movs r0, 0x19 -_08055308: - pop {r1} - bx r1 - thumb_func_end sub_80552B0 - - thumb_func_start sub_805530C -sub_805530C: @ 805530C - push {lr} - lsls r0, 16 - lsrs r0, 16 - adds r1, r0, 0 - cmp r0, 0x13 - beq _08055332 - cmp r0, 0x13 - bgt _08055322 - cmp r0, 0x12 - beq _08055336 - b _0805533A -_08055322: - cmp r1, 0x14 - beq _0805532E - cmp r1, 0x15 - bne _0805533A - movs r0, 0x4 - b _0805533C -_0805532E: - movs r0, 0x3 - b _0805533C -_08055332: - movs r0, 0x1 - b _0805533C -_08055336: - movs r0, 0x2 - b _0805533C -_0805533A: - movs r0, 0 -_0805533C: - pop {r1} - bx r1 - thumb_func_end sub_805530C - - thumb_func_start sub_8055340 -sub_8055340: @ 8055340 - push {lr} - movs r2, 0x11 - adds r1, r0, 0x6 -_08055346: - strh r2, [r1] - subs r1, 0x2 - cmp r1, r0 - bge _08055346 - pop {r0} - bx r0 - thumb_func_end sub_8055340 - - thumb_func_start sub_8055354 -sub_8055354: @ 8055354 - push {r4,r5,lr} - ldr r0, _08055384 - ldrb r4, [r0] - ldr r5, _08055388 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_8055218 - ldr r0, _0805538C - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 16 - lsrs r0, 16 - bl sub_8055280 - adds r0, r5, 0 - bl sub_8055340 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08055384: .4byte gUnknown_03004860 -_08055388: .4byte word_3002910 -_0805538C: .4byte gUnknown_03000584 - thumb_func_end sub_8055354 - - thumb_func_start sub_8055390 -sub_8055390: @ 8055390 - push {r4,lr} - adds r4, r0, 0 - bl ScriptContext2_IsEnabled - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080553A4 - movs r0, 0x11 - b _080553DA -_080553A4: - ldr r1, _080553B4 - ldr r2, _080553B8 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x4 - bls _080553BC - movs r0, 0x1B - b _080553DA - .align 2, 0 -_080553B4: .4byte gLink -_080553B8: .4byte 0x00000fbd -_080553BC: - ldr r2, _080553CC - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x4 - bls _080553D0 - movs r0, 0x1C - b _080553DA - .align 2, 0 -_080553CC: .4byte 0x00000339 -_080553D0: - adds r0, r4, 0 - bl sub_80552B0 - lsls r0, 16 - lsrs r0, 16 -_080553DA: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8055390 - - thumb_func_start sub_80553E0 -sub_80553E0: @ 80553E0 - movs r0, 0x11 - bx lr - thumb_func_end sub_80553E0 - - thumb_func_start sub_80553E4 -sub_80553E4: @ 80553E4 - push {r4,lr} - bl ScriptContext2_IsEnabled - lsls r0, 24 - lsrs r0, 24 - movs r4, 0x11 - cmp r0, 0x1 - beq _080553FC - movs r4, 0x1A - ldr r0, _08055404 - bl sub_80543DC -_080553FC: - adds r0, r4, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08055404: .4byte sub_80553E0 - thumb_func_end sub_80553E4 - - thumb_func_start sub_8055408 -sub_8055408: @ 8055408 - push {r4,lr} - ldr r0, _0805542C - ldr r1, _08055430 - adds r0, r1 - ldrb r0, [r0] - movs r4, 0x11 - cmp r0, 0x2 - bhi _08055424 - movs r4, 0x1A - bl ScriptContext2_Disable - ldr r0, _08055434 - bl sub_80543DC -_08055424: - adds r0, r4, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805542C: .4byte gLink -_08055430: .4byte 0x00000fbd -_08055434: .4byte sub_80553E0 - thumb_func_end sub_8055408 - - thumb_func_start sub_8055438 -sub_8055438: @ 8055438 - push {r4,lr} - ldr r0, _0805545C - ldr r1, _08055460 - adds r0, r1 - ldrb r0, [r0] - movs r4, 0x11 - cmp r0, 0x2 - bhi _08055454 - movs r4, 0x1A - bl ScriptContext2_Disable - ldr r0, _08055464 - bl sub_80543DC -_08055454: - adds r0, r4, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805545C: .4byte gLink -_08055460: .4byte 0x00000339 -_08055464: .4byte sub_80553E0 - thumb_func_end sub_8055438 - - thumb_func_start sub_8055468 -sub_8055468: @ 8055468 - movs r0, 0x11 - bx lr - thumb_func_end sub_8055468 - thumb_func_start sub_805546C sub_805546C: @ 805546C push {lr} diff --git a/include/link.h b/include/link.h index ba6bcd6f9..f857b6d19 100644 --- a/include/link.h +++ b/include/link.h @@ -129,6 +129,8 @@ extern u16 gRecvCmds[CMD_LENGTH][MAX_LINK_PLAYERS]; extern u32 gLinkStatus; extern u16 gSendCmd[CMD_LENGTH]; extern u8 gShouldAdvanceLinkState; +extern struct LinkPlayer gLinkPlayers[]; +extern u16 word_3002910[]; void Task_DestroySelf(u8); void sub_8007270(u8); diff --git a/src/rom4.c b/src/rom4.c index 8331e3581..8e25494c5 100644 --- a/src/rom4.c +++ b/src/rom4.c @@ -7,6 +7,7 @@ #include "main.h" #include "palette.h" #include "text.h" +#include "link.h" #ifdef SAPPHIRE #define LEGENDARY_MUSIC BGM_OOAME // Heavy Rain @@ -41,6 +42,13 @@ struct UnkInputStruct u8 input_field_3; }; +struct UnkStruct_8054FF8 +{ + u8 a; + u8 b; + u8 filler[14]; +}; + extern struct WarpData gUnknown_020297F0; extern struct WarpData gUnknown_020297F8; extern struct WarpData gUnknown_02029800; @@ -49,9 +57,16 @@ extern struct UnkPlayerStruct gUnknown_02029810; extern u16 gUnknown_02029814; extern u8 gUnknown_02029816; -extern void (*gUnknown_03000584)(void); +extern u8 gUnknown_0202E85C; +extern u8 gUnknown_0202E85D; +extern u8 gUnknown_03000580[]; +extern u16 (*gUnknown_03000584)(u32); + +extern u16 word_3004858; extern void (*gUnknown_0300485C)(void); +extern u8 gUnknown_03004860; +extern u8 gUnknown_03004864; extern struct UnkTVStruct gUnknown_03004870; @@ -120,7 +135,6 @@ void sub_8055354(void); void c2_overworld(void); void CB2_LoadMap2(void); void c2_80567AC(void); -void sub_8055390(void); void c2_exit_to_overworld_2_link(void); void c2_exit_to_overworld_2_local(void); void FieldClearVBlankHBlankCallbacks(void); @@ -137,6 +151,25 @@ void sub_8054C54(void); void sub_8054D4C(u32 a1); void sub_8054D90(void); void mli4_mapscripts_and_other(void); +void sub_8054E20(void); +void sub_8054E34(void); +void sub_8054E60(void); +void sub_8054E7C(void); +void sub_8054E98(void); +void sub_8054EC8(void); +void sub_8054F48(void); +void sub_8054F70(void); +u16 sub_805530C(u16); +void sub_8055340(u16 *); +u16 sub_8055390(u32); +u16 sub_80553E4(u32); +u16 sub_8055408(u32); +u16 sub_8055438(u32); +void sub_8055980(u8, s16, s16, u8); +u8 sub_8055AE8(u8); +void sub_8055BFC(u8, u8); +void sub_8055E5C(u8); +void sub_8056C50(u16, u16); void sub_8052F5C(void) { @@ -1097,7 +1130,7 @@ void set_callback1(MainCallback cb) gMain.callback1 = cb; } -void sub_80543DC(void (*a1)(void)) +void sub_80543DC(u16 (*a1)(u32)) { gUnknown_03000584 = a1; } @@ -1687,3 +1720,350 @@ void mli4_mapscripts_and_other(void) ResetBerryTreeSparkleFlags(); mapheader_run_first_tag4_script_list_match(); } + +void sub_8054E20(void) +{ + sub_805B710(0, 0); + sub_80C8080(); +} + +void sub_8054E34(void) +{ + gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_15 = 1; + InitCameraUpdateCallback(gPlayerAvatar.spriteId); +} + +void sub_8054E60(void) +{ + InitCameraUpdateCallback(sub_8055AE8(gUnknown_03004860)); +} + +void sub_8054E7C(void) +{ + InitCameraUpdateCallback(sub_8055AE8(gUnknown_03004860)); +} + +void sub_8054E98(void) +{ + u16 x, y; + sav1_camera_get_focus_coords(&x, &y); + sub_8056C50(x + gUnknown_03004860, y); +} + +void sub_8054EC8(void) +{ + u16 i; + u16 x, y; + + sav1_camera_get_focus_coords(&x, &y); + x -= gUnknown_03004860; + + for (i = 0; i < gUnknown_03004864; i++) + { + sub_8055980(i, i + x, y, gLinkPlayers[i].gender); + sub_8055E5C(i); + } + + sub_8055340(word_3002910); +} + +void sub_8054F48(void) +{ + u16 i; + for (i = 0; i < gUnknown_03004864; i++) + sub_8055E5C(i); +} + +void sub_8054F70(void) +{ + int i; + for (i = 0; i < 4; i++) + gUnknown_03000580[i] = 0x80; +} + +bool32 sub_8054F88(u16 a1) +{ + int i; + int count = gUnknown_03004864; + + for (i = 0; i < count; i++) + if (gUnknown_03000580[i] != a1) + return FALSE; + return TRUE; +} + +bool32 sub_8054FC0(u16 a1) +{ + int i; + int count = gUnknown_03004864; + + for (i = 0; i < count; i++) + if (gUnknown_03000580[i] == a1) + return TRUE; + return FALSE; +} + +void sub_8054FF8(u32 a1, u16 a2, struct UnkStruct_8054FF8 *a3, u16 *a4) +{ + u8 *script; + + if (gUnknown_03000580[a1] == 0x80) + { + script = sub_8055648(a3); + if (script) + { + *a4 = sub_8055758(script); + gUnknown_03000580[a1] = 0x81; + if (a3->b) + { + sub_80543DC(sub_80553E4); + sub_8055808(script); + } + return; + } + if (sub_8054FC0(0x83) == 1) + { + gUnknown_03000580[a1] = 0x81; + if (a3->b) + { + sub_80543DC(sub_80553E4); + sub_805585C(); + } + return; + } + switch (a2) + { + case 24: + if (sub_8055630(a3)) + { + gUnknown_03000580[a1] = 0x81; + if (a3->b) + { + sub_80543DC(sub_80553E4); + sub_80557F4(); + } + } + break; + case 18: + if (sub_8055660(a3) == 1) + { + gUnknown_03000580[a1] = 0x81; + if (a3->b) + { + sub_80543DC(sub_80553E4); + sub_8055824(); + } + } + break; + case 25: + script = sub_805568C(a3); + if (script) + { + gUnknown_03000580[a1] = 0x81; + if (a3->b) + { + sub_80543DC(sub_80553E4); + sub_8055840(script); + } + } + break; + case 27: + if (sub_8055618(a3)) + { + gUnknown_03000580[a1] = 0x81; + if (a3->b) + { + sub_80543DC(sub_8055408); + sub_80557E8(); + } + } + break; + case 28: + if (sub_8055618(a3)) + { + gUnknown_03000580[a1] = 0x81; + if (a3->b) + { + sub_80543DC(sub_8055438); + sub_80557E8(); + } + } + break; + } + } + + switch (a2) + { + case 23: + gUnknown_03000580[a1] = 0x83; + break; + case 22: + gUnknown_03000580[a1] = 0x82; + break; + case 26: + gUnknown_03000580[a1] = 0x80; + if (a3->b) + sub_80543DC(sub_8055390); + break; + case 29: + if (gUnknown_03000580[a1] == 0x82) + gUnknown_03000580[a1] = 0x81; + break; + } +} + +void sub_8055218(u16 *a1, int a2) +{ + struct UnkStruct_8054FF8 st; + int i; + for (i = 0; i < 4; i++) + { + u16 v5 = a1[i]; + u16 v8 = 0; + sub_80555B0(i, a2, &st); + sub_8054FF8(i, v5, &st, &v8); + if (gUnknown_03000580[i] == 0x80) + v8 = sub_805530C(v5); + sub_8055BFC(i, v8); + } +} + +void sub_8055280(u16 a1) +{ + if (a1 >= 17 && a1 < 30) + word_3004858 = a1; + else + word_3004858 = 17; +} + +u16 sub_80552B0(u32 a1) +{ + if (gMain.heldKeys & 0x40) + { + return 19; + } + else if (gMain.heldKeys & 0x80) + { + return 18; + } + else if (gMain.heldKeys & 0x20) + { + return 20; + } + else if (gMain.heldKeys & 0x10) + { + return 21; + } + else if (gMain.newKeys & 8) + { + return 24; + } + else if (gMain.newKeys & 1) + { + return 25; + } + else + { + return 17; + } +} + +u16 sub_805530C(u16 a1) +{ + switch (a1) + { + case 21: + return 4; + case 20: + return 3; + case 19: + return 1; + case 18: + return 2; + default: + return 0; + } +} + +void sub_8055340(u16 *a1) +{ + int i; + for (i = 0; i < 4; i++) + a1[i] = 17; +} + +void sub_8055354(void) +{ + u8 val = gUnknown_03004860; + sub_8055218(word_3002910, val); + sub_8055280(gUnknown_03000584(val)); + sub_8055340(word_3002910); +} + +u16 sub_8055390(u32 a1) +{ + if (ScriptContext2_IsEnabled() == 1) + return 17; + if (gLink.recvQueue.count > 4) + return 27; + if (gLink.sendQueue.count <= 4) + return sub_80552B0(a1); + return 28; +} + +u16 sub_80553E0(u32 a1) +{ + return 17; +} + +u16 sub_80553E4(u32 a1) +{ + u16 retVal; + if (ScriptContext2_IsEnabled() == 1) + { + retVal = 17; + } + else + { + retVal = 26; + sub_80543DC(sub_80553E0); + } + return retVal; +} + +u16 sub_8055408(u32 a1) +{ + u16 retVal; + if (gLink.recvQueue.count > 2) + { + retVal = 17; + } + else + { + retVal = 26; + ScriptContext2_Disable(); + sub_80543DC(sub_80553E0); + } + return retVal; +} + +u16 sub_8055438(u32 a1) +{ + u16 retVal; + if (gLink.sendQueue.count > 2) + { + retVal = 17; + } + else + { + retVal = 26; + ScriptContext2_Disable(); + sub_80543DC(sub_80553E0); + } + return retVal; +} + +u16 sub_8055468(u16 a1) +{ + return 17; +} |