summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYamaArashi <shadow962@live.com>2016-10-21 17:15:11 -0700
committerYamaArashi <shadow962@live.com>2016-10-21 17:15:11 -0700
commita741c108cd7a2abf5d82b332261f7f6cbaf179f5 (patch)
treefbd5de713518f379e2f3e7cd68fb1d53ecd7ae48
parent51661b34997465e7a89b3afbaa021dab69718531 (diff)
decompile more rom4 functions
-rw-r--r--asm/rom4.s849
-rw-r--r--include/link.h2
-rw-r--r--src/rom4.c386
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;
+}