summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcamthesaxman <cameronghall@cox.net>2017-07-14 21:14:00 -0500
committercamthesaxman <cameronghall@cox.net>2017-07-14 21:14:00 -0500
commit9013ffe84a12a8d81d32fb8125687988bd2ba8ca (patch)
tree0aefc93633c0f9c5e13d776c7b6ab15c4ba94a61
parent48407f4c37e39f2792e469ee18ab743b01f84316 (diff)
decompile sub_80FAB78 - sub_80FAFC0
-rw-r--r--asm/region_map.s812
-rw-r--r--src/region_map.c272
2 files changed, 264 insertions, 820 deletions
diff --git a/asm/region_map.s b/asm/region_map.s
index d0d073a1b..ade656aa0 100644
--- a/asm/region_map.s
+++ b/asm/region_map.s
@@ -6,818 +6,6 @@
.text
- thumb_func_start sub_80FAB78
-sub_80FAB78: @ 80FAB78
- push {r4,lr}
- movs r4, 0
- ldr r2, _080FAC14 @ =gUnknown_020388CC
- ldr r0, [r2]
- adds r0, 0x7B
- strb r4, [r0]
- ldr r0, [r2]
- adds r0, 0x7C
- strb r4, [r0]
- ldr r3, _080FAC18 @ =gMain
- ldrh r1, [r3, 0x2C]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080FABAA
- ldr r1, [r2]
- adds r0, r1, 0
- adds r0, 0x56
- ldrh r0, [r0]
- cmp r0, 0x2
- bls _080FABAA
- adds r1, 0x7C
- movs r0, 0xFF
- strb r0, [r1]
- movs r4, 0x1
-_080FABAA:
- ldrh r1, [r3, 0x2C]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080FABC8
- ldr r1, [r2]
- adds r0, r1, 0
- adds r0, 0x56
- ldrh r0, [r0]
- cmp r0, 0xF
- bhi _080FABC8
- adds r1, 0x7C
- movs r0, 0x1
- strb r0, [r1]
- movs r4, 0x1
-_080FABC8:
- ldrh r1, [r3, 0x2C]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080FABE6
- ldr r1, [r2]
- adds r0, r1, 0
- adds r0, 0x54
- ldrh r0, [r0]
- cmp r0, 0x1
- bls _080FABE6
- adds r1, 0x7B
- movs r0, 0xFF
- strb r0, [r1]
- movs r4, 0x1
-_080FABE6:
- ldrh r1, [r3, 0x2C]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080FAC04
- ldr r1, [r2]
- adds r0, r1, 0
- adds r0, 0x54
- ldrh r0, [r0]
- cmp r0, 0x1B
- bhi _080FAC04
- adds r1, 0x7B
- movs r0, 0x1
- strb r0, [r1]
- movs r4, 0x1
-_080FAC04:
- ldrh r3, [r3, 0x2E]
- movs r0, 0x1
- ands r0, r3
- cmp r0, 0
- beq _080FAC1C
- movs r4, 0x4
- b _080FAC26
- .align 2, 0
-_080FAC14: .4byte gUnknown_020388CC
-_080FAC18: .4byte gMain
-_080FAC1C:
- movs r0, 0x2
- ands r0, r3
- cmp r0, 0
- beq _080FAC26
- movs r4, 0x5
-_080FAC26:
- cmp r4, 0x1
- bne _080FAC38
- ldr r0, [r2]
- adds r0, 0x7A
- movs r1, 0x4
- strb r1, [r0]
- ldr r1, [r2]
- ldr r0, _080FAC40 @ =_swiopen
- str r0, [r1, 0x18]
-_080FAC38:
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080FAC40: .4byte _swiopen
- thumb_func_end sub_80FAB78
-
- thumb_func_start _swiopen
-_swiopen: @ 80FAC44
- push {r4,r5,lr}
- ldr r5, _080FAC5C @ =gUnknown_020388CC
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x7A
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- beq _080FAC60
- movs r0, 0x2
- b _080FACFA
- .align 2, 0
-_080FAC5C: .4byte gUnknown_020388CC
-_080FAC60:
- adds r0, r1, 0
- adds r0, 0x7B
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- ble _080FAC76
- adds r1, 0x54
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_080FAC76:
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x7B
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- bge _080FAC8E
- adds r1, 0x54
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
-_080FAC8E:
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x7C
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- ble _080FACA6
- adds r1, 0x56
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_080FACA6:
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x7C
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- bge _080FACBE
- adds r1, 0x56
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
-_080FACBE:
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x54
- ldrh r0, [r0]
- adds r1, 0x56
- ldrh r1, [r1]
- bl GetRegionMapSectionAt
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- bl sub_80FB758
- ldr r1, [r5]
- strb r0, [r1, 0x16]
- ldr r0, [r5]
- ldrh r1, [r0, 0x14]
- cmp r4, r1
- beq _080FACEE
- strh r4, [r0, 0x14]
- ldrh r1, [r0, 0x14]
- movs r2, 0x10
- bl sub_80FBFB4
-_080FACEE:
- bl sub_80FBA18
- ldr r1, [r5]
- ldr r0, _080FAD00 @ =sub_80FAB78
- str r0, [r1, 0x18]
- movs r0, 0x3
-_080FACFA:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080FAD00: .4byte sub_80FAB78
- thumb_func_end _swiopen
-
- thumb_func_start sub_80FAD04
-sub_80FAD04: @ 80FAD04
- push {r4-r6,lr}
- movs r4, 0
- ldr r3, _080FADD4 @ =gUnknown_020388CC
- ldr r0, [r3]
- mov r12, r0
- adds r0, 0x6A
- strh r4, [r0]
- mov r5, r12
- adds r5, 0x68
- strh r4, [r5]
- ldr r2, _080FADD8 @ =gMain
- ldrh r1, [r2, 0x2C]
- movs r0, 0x40
- ands r0, r1
- adds r6, r3, 0
- adds r3, r2, 0
- cmp r0, 0
- beq _080FAD3E
- mov r0, r12
- adds r0, 0x5E
- movs r2, 0
- ldrsh r1, [r0, r2]
- movs r0, 0x34
- negs r0, r0
- cmp r1, r0
- ble _080FAD3E
- ldr r0, _080FADDC @ =0x0000ffff
- strh r0, [r5]
- movs r4, 0x1
-_080FAD3E:
- ldrh r1, [r3, 0x2C]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080FAD5E
- ldr r1, [r6]
- adds r0, r1, 0
- adds r0, 0x5E
- movs r5, 0
- ldrsh r0, [r0, r5]
- cmp r0, 0x3B
- bgt _080FAD5E
- adds r1, 0x68
- movs r0, 0x1
- strh r0, [r1]
- movs r4, 0x1
-_080FAD5E:
- ldrh r1, [r3, 0x2C]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080FAD84
- ldr r2, [r6]
- adds r0, r2, 0
- adds r0, 0x5C
- movs r5, 0
- ldrsh r1, [r0, r5]
- movs r0, 0x2C
- negs r0, r0
- cmp r1, r0
- ble _080FAD84
- adds r1, r2, 0
- adds r1, 0x6A
- ldr r0, _080FADDC @ =0x0000ffff
- strh r0, [r1]
- movs r4, 0x1
-_080FAD84:
- ldrh r1, [r3, 0x2C]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080FADA4
- ldr r1, [r6]
- adds r0, r1, 0
- adds r0, 0x5C
- movs r2, 0
- ldrsh r0, [r0, r2]
- cmp r0, 0xAB
- bgt _080FADA4
- adds r1, 0x6A
- movs r0, 0x1
- strh r0, [r1]
- movs r4, 0x1
-_080FADA4:
- ldrh r2, [r3, 0x2E]
- movs r0, 0x1
- ands r0, r2
- cmp r0, 0
- beq _080FADB0
- movs r4, 0x4
-_080FADB0:
- movs r0, 0x2
- ands r0, r2
- cmp r0, 0
- beq _080FADBA
- movs r4, 0x5
-_080FADBA:
- cmp r4, 0x1
- bne _080FADCA
- ldr r0, [r6]
- ldr r1, _080FADE0 @ =sub_80FADE4
- str r1, [r0, 0x18]
- adds r0, 0x6C
- movs r1, 0
- strh r1, [r0]
-_080FADCA:
- adds r0, r4, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_080FADD4: .4byte gUnknown_020388CC
-_080FADD8: .4byte gMain
-_080FADDC: .4byte 0x0000ffff
-_080FADE0: .4byte sub_80FADE4
- thumb_func_end sub_80FAD04
-
- thumb_func_start sub_80FADE4
-sub_80FADE4: @ 80FADE4
- push {r4,r5,lr}
- ldr r5, _080FAEB4 @ =gUnknown_020388CC
- ldr r2, [r5]
- adds r3, r2, 0
- adds r3, 0x5E
- adds r0, r2, 0
- adds r0, 0x68
- ldrh r0, [r0]
- ldrh r1, [r3]
- adds r0, r1
- strh r0, [r3]
- adds r1, r2, 0
- adds r1, 0x5C
- adds r0, r2, 0
- adds r0, 0x6A
- ldrh r0, [r0]
- ldrh r2, [r1]
- adds r0, r2
- strh r0, [r1]
- movs r4, 0
- ldrsh r0, [r1, r4]
- movs r2, 0
- ldrsh r1, [r3, r2]
- bl sub_80FB238
- ldr r2, [r5]
- adds r1, r2, 0
- adds r1, 0x6C
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x8
- bne _080FAEBC
- adds r0, r2, 0
- adds r0, 0x5C
- movs r3, 0
- ldrsh r1, [r0, r3]
- adds r0, r1, 0
- adds r0, 0x2C
- cmp r0, 0
- bge _080FAE3C
- adds r0, 0x7
-_080FAE3C:
- asrs r0, 3
- adds r0, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- adds r0, r2, 0
- adds r0, 0x5E
- movs r4, 0
- ldrsh r1, [r0, r4]
- adds r0, r1, 0
- adds r0, 0x34
- cmp r0, 0
- bge _080FAE56
- adds r0, 0x7
-_080FAE56:
- asrs r0, 3
- adds r0, 0x2
- lsls r0, 16
- lsrs r1, r0, 16
- adds r4, r2, 0
- adds r4, 0x64
- adds r0, r2, 0
- adds r0, 0x66
- ldrh r2, [r4]
- cmp r3, r2
- bne _080FAE72
- ldrh r2, [r0]
- cmp r1, r2
- beq _080FAEA0
-_080FAE72:
- strh r3, [r4]
- strh r1, [r0]
- adds r0, r3, 0
- bl GetRegionMapSectionAt
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- bl sub_80FB758
- ldr r1, [r5]
- strb r0, [r1, 0x16]
- ldr r0, [r5]
- ldrh r3, [r0, 0x14]
- cmp r4, r3
- beq _080FAE9C
- strh r4, [r0, 0x14]
- ldrh r1, [r0, 0x14]
- movs r2, 0x10
- bl sub_80FBFB4
-_080FAE9C:
- bl sub_80FBA18
-_080FAEA0:
- ldr r0, _080FAEB4 @ =gUnknown_020388CC
- ldr r2, [r0]
- adds r1, r2, 0
- adds r1, 0x6C
- movs r0, 0
- strh r0, [r1]
- ldr r0, _080FAEB8 @ =sub_80FAD04
- str r0, [r2, 0x18]
- movs r0, 0x3
- b _080FAEBE
- .align 2, 0
-_080FAEB4: .4byte gUnknown_020388CC
-_080FAEB8: .4byte sub_80FAD04
-_080FAEBC:
- movs r0, 0x2
-_080FAEBE:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80FADE4
-
- thumb_func_start sub_80FAEC4
-sub_80FAEC4: @ 80FAEC4
- push {r4-r6,lr}
- ldr r1, _080FAF40 @ =gUnknown_020388CC
- ldr r2, [r1]
- adds r0, r2, 0
- adds r0, 0x78
- ldrb r3, [r0]
- adds r5, r1, 0
- cmp r3, 0
- bne _080FAF48
- subs r0, 0x1A
- strh r3, [r0]
- subs r0, 0x2
- strh r3, [r0]
- str r3, [r2, 0x40]
- str r3, [r2, 0x3C]
- adds r4, r2, 0
- adds r4, 0x54
- ldrh r0, [r4]
- lsls r0, 3
- subs r0, 0x34
- adds r1, r2, 0
- adds r1, 0x60
- strh r0, [r1]
- movs r0, 0x56
- adds r0, r2
- mov r12, r0
- ldrh r0, [r0]
- lsls r0, 3
- subs r0, 0x44
- adds r3, r2, 0
- adds r3, 0x62
- strh r0, [r3]
- movs r6, 0
- ldrsh r0, [r1, r6]
- lsls r0, 8
- cmp r0, 0
- bge _080FAF10
- adds r0, 0xF
-_080FAF10:
- asrs r0, 4
- str r0, [r2, 0x44]
- movs r1, 0
- ldrsh r0, [r3, r1]
- lsls r0, 8
- cmp r0, 0
- bge _080FAF20
- adds r0, 0xF
-_080FAF20:
- asrs r0, 4
- str r0, [r2, 0x48]
- ldrh r1, [r4]
- adds r0, r2, 0
- adds r0, 0x64
- strh r1, [r0]
- mov r3, r12
- ldrh r0, [r3]
- adds r1, r2, 0
- adds r1, 0x66
- strh r0, [r1]
- movs r0, 0x80
- lsls r0, 9
- str r0, [r2, 0x4C]
- ldr r0, _080FAF44 @ =0xfffff800
- b _080FAFA6
- .align 2, 0
-_080FAF40: .4byte gUnknown_020388CC
-_080FAF44: .4byte 0xfffff800
-_080FAF48:
- adds r0, r2, 0
- adds r0, 0x5C
- movs r6, 0
- ldrsh r0, [r0, r6]
- lsls r0, 8
- str r0, [r2, 0x3C]
- adds r0, r2, 0
- adds r0, 0x5E
- movs r1, 0
- ldrsh r0, [r0, r1]
- lsls r0, 8
- str r0, [r2, 0x40]
- adds r0, r2, 0
- adds r0, 0x60
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- ldr r0, [r2, 0x3C]
- cmp r0, 0
- bge _080FAF74
- adds r0, 0xF
-_080FAF74:
- asrs r0, 4
- negs r0, r0
- str r0, [r2, 0x44]
- ldr r0, [r2, 0x40]
- cmp r0, 0
- bge _080FAF82
- adds r0, 0xF
-_080FAF82:
- asrs r0, 4
- negs r0, r0
- str r0, [r2, 0x48]
- adds r0, r2, 0
- adds r0, 0x64
- ldrh r1, [r0]
- subs r0, 0x10
- strh r1, [r0]
- adds r0, 0x12
- ldrh r0, [r0]
- adds r1, r2, 0
- adds r1, 0x56
- strh r0, [r1]
- movs r0, 0x80
- lsls r0, 8
- str r0, [r2, 0x4C]
- movs r0, 0x80
- lsls r0, 4
-_080FAFA6:
- str r0, [r2, 0x50]
- ldr r0, [r5]
- adds r0, 0x6E
- movs r1, 0
- strh r1, [r0]
- bl sub_80FBCA0
- bl sub_80FBDF8
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80FAEC4
-
- thumb_func_start sub_80FAFC0
-sub_80FAFC0: @ 80FAFC0
- push {r4-r6,lr}
- sub sp, 0xC
- ldr r0, _080FAFD8 @ =gUnknown_020388CC
- ldr r3, [r0]
- adds r2, r3, 0
- adds r2, 0x6E
- ldrh r1, [r2]
- adds r5, r0, 0
- cmp r1, 0xF
- bls _080FAFDC
- movs r0, 0
- b _080FB164
- .align 2, 0
-_080FAFD8: .4byte gUnknown_020388CC
-_080FAFDC:
- adds r0, r1, 0x1
- movs r1, 0
- strh r0, [r2]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x10
- bne _080FB050
- str r1, [r3, 0x44]
- str r1, [r3, 0x48]
- adds r0, r3, 0
- adds r0, 0x60
- ldrh r1, [r0]
- subs r0, 0x4
- strh r1, [r0]
- adds r0, 0x6
- ldrh r0, [r0]
- adds r1, r3, 0
- adds r1, 0x5E
- strh r0, [r1]
- adds r1, 0x1A
- ldrb r0, [r1]
- movs r2, 0x80
- lsls r2, 9
- cmp r0, 0
- bne _080FB012
- movs r2, 0x80
- lsls r2, 8
-_080FB012:
- str r2, [r3, 0x4C]
- movs r2, 0
- ldrb r0, [r1]
- cmp r0, 0
- bne _080FB01E
- movs r2, 0x1
-_080FB01E:
- strb r2, [r1]
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x78
- ldrb r0, [r0]
- ldr r2, _080FB048 @ =sub_80FAD04
- cmp r0, 0
- bne _080FB030
- ldr r2, _080FB04C @ =sub_80FAB78
-_080FB030:
- str r2, [r1, 0x18]
- adds r0, r1, 0
- adds r0, 0x58
- ldrh r0, [r0]
- adds r1, 0x5A
- ldrh r1, [r1]
- bl sub_80FBB3C
- bl sub_80FBE24
- movs r4, 0
- b _080FB132
- .align 2, 0
-_080FB048: .4byte sub_80FAD04
-_080FB04C: .4byte sub_80FAB78
-_080FB050:
- ldr r2, [r3, 0x3C]
- ldr r0, [r3, 0x44]
- adds r2, r0
- str r2, [r3, 0x3C]
- ldr r0, [r3, 0x40]
- ldr r1, [r3, 0x48]
- adds r0, r1
- str r0, [r3, 0x40]
- asrs r2, 8
- adds r4, r3, 0
- adds r4, 0x5C
- strh r2, [r4]
- ldr r0, [r3, 0x40]
- asrs r0, 8
- adds r1, r3, 0
- adds r1, 0x5E
- strh r0, [r1]
- ldr r0, [r3, 0x4C]
- ldr r1, [r3, 0x50]
- adds r0, r1
- str r0, [r3, 0x4C]
- ldr r2, [r3, 0x44]
- cmp r2, 0
- bge _080FB090
- adds r0, r3, 0
- adds r0, 0x60
- movs r6, 0
- ldrsh r1, [r4, r6]
- movs r6, 0
- ldrsh r0, [r0, r6]
- cmp r1, r0
- blt _080FB0A4
-_080FB090:
- cmp r2, 0
- ble _080FB0B4
- adds r0, r3, 0
- adds r0, 0x60
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r6, 0
- ldrsh r0, [r0, r6]
- cmp r1, r0
- ble _080FB0B4
-_080FB0A4:
- ldr r3, [r5]
- adds r0, r3, 0
- adds r0, 0x60
- ldrh r2, [r0]
- subs r0, 0x4
- movs r1, 0
- strh r2, [r0]
- str r1, [r3, 0x44]
-_080FB0B4:
- ldr r2, [r5]
- ldr r4, [r2, 0x48]
- cmp r4, 0
- bge _080FB0D0
- adds r0, r2, 0
- adds r0, 0x5E
- adds r3, r2, 0
- adds r3, 0x62
- movs r6, 0
- ldrsh r1, [r0, r6]
- movs r6, 0
- ldrsh r0, [r3, r6]
- cmp r1, r0
- blt _080FB0E8
-_080FB0D0:
- cmp r4, 0
- ble _080FB0FA
- adds r1, r2, 0
- adds r1, 0x5E
- adds r0, r2, 0
- adds r0, 0x62
- movs r2, 0
- ldrsh r1, [r1, r2]
- movs r6, 0
- ldrsh r0, [r0, r6]
- cmp r1, r0
- ble _080FB0FA
-_080FB0E8:
- ldr r2, [r5]
- adds r0, r2, 0
- adds r0, 0x62
- ldrh r1, [r0]
- adds r3, r2, 0
- adds r3, 0x5E
- movs r0, 0
- strh r1, [r3]
- str r0, [r2, 0x48]
-_080FB0FA:
- ldr r0, _080FB118 @ =gUnknown_020388CC
- ldr r2, [r0]
- adds r0, r2, 0
- adds r0, 0x78
- ldrb r3, [r0]
- cmp r3, 0
- bne _080FB120
- ldr r1, [r2, 0x4C]
- ldr r0, _080FB11C @ =0x00007fff
- cmp r1, r0
- bgt _080FB130
- adds r0, 0x1
- str r0, [r2, 0x4C]
- str r3, [r2, 0x50]
- b _080FB130
- .align 2, 0
-_080FB118: .4byte gUnknown_020388CC
-_080FB11C: .4byte 0x00007fff
-_080FB120:
- ldr r0, [r2, 0x4C]
- movs r1, 0x80
- lsls r1, 9
- cmp r0, r1
- ble _080FB130
- str r1, [r2, 0x4C]
- movs r0, 0
- str r0, [r2, 0x50]
-_080FB130:
- movs r4, 0x1
-_080FB132:
- ldr r0, _080FB16C @ =gUnknown_020388CC
- ldr r3, [r0]
- adds r0, r3, 0
- adds r0, 0x5C
- movs r1, 0
- ldrsh r0, [r0, r1]
- adds r1, r3, 0
- adds r1, 0x5E
- movs r2, 0
- ldrsh r1, [r1, r2]
- ldr r2, [r3, 0x4C]
- lsls r2, 8
- lsrs r2, 16
- str r2, [sp]
- ldr r2, [r3, 0x4C]
- lsls r2, 8
- lsrs r2, 16
- str r2, [sp, 0x4]
- movs r2, 0
- str r2, [sp, 0x8]
- movs r2, 0x38
- movs r3, 0x48
- bl sub_80FB170
- adds r0, r4, 0
-_080FB164:
- add sp, 0xC
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_080FB16C: .4byte gUnknown_020388CC
- thumb_func_end sub_80FAFC0
-
thumb_func_start sub_80FB170
sub_80FB170: @ 80FB170
push {r4-r7,lr}
diff --git a/src/region_map.c b/src/region_map.c
index 301c3c082..0a50da51e 100644
--- a/src/region_map.c
+++ b/src/region_map.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "main.h"
#include "palette.h"
#include "sprite.h"
@@ -11,25 +12,37 @@ struct UnknownStruct1
u8 (*unk18)(void);
struct Sprite *unk1C;
struct Sprite *unk20;
- u8 filler24[0x30];
- u16 unk54;
- u16 unk56;
+ u8 filler24[0x18];
+ s32 unk3C;
+ s32 unk40;
+ s32 unk44;
+ s32 unk48;
+ s32 unk4C;
+ u32 unk50;
+ u16 unk54; // cursor x
+ u16 unk56; // cursor y
u16 unk58;
u16 unk5A;
s16 unk5C;
s16 unk5E;
- u8 filler60[4];
+ s16 unk60;
+ s16 unk62;
u16 unk64;
u16 unk66;
- u8 filler68[8];
+ u16 unk68;
+ u16 unk6A;
+ u16 unk6C;
+ u16 unk6E;
u16 unk70;
u16 unk72;
u16 unk74;
u16 unk76;
u8 unk78;
u8 unk79;
- u8 unk7A;
- u8 filler7B[3];
+ s8 unk7A;
+ s8 unk7B; // movement delta horizontal
+ s8 unk7C; // movement delta vertical
+ u8 unk7D;
u8 unk7E;
u8 filler7F[0x101];
u8 unk180[0x100];
@@ -52,13 +65,21 @@ const u8 gUnknown_083E6B04[] = INCBIN_U8("graphics/pokenav/region_map_map.bin.lz
void sub_80FA904(struct UnknownStruct1 *, u8);
bool8 sub_80FA940(void);
u8 sub_80FAB78(void);
+u8 _swiopen(void);
u8 sub_80FAD04(void);
-void sub_80FB170();
+u8 sub_80FADE4(void);
+void sub_80FB170(int, int, int, int, u16, u16, int);
+void sub_80FB238();
void sub_80FB260(void);
+u16 GetRegionMapSectionAt();
void sub_80FB32C(void);
u16 sub_80FB758();
u16 sub_80FB9C0(u16);
void sub_80FBA18();
+void sub_80FBB3C();
+void sub_80FBCA0(void);
+void sub_80FBDF8(void);
+void sub_80FBE24(void);
void sub_80FBFB4();
void sub_80FA8EC(struct UnknownStruct1 *a, u8 b)
@@ -153,3 +174,238 @@ u8 sub_80FAB60(void)
{
return gUnknown_020388CC->unk18();
}
+
+u8 sub_80FAB78(void)
+{
+ u8 r4 = 0;
+
+ gUnknown_020388CC->unk7B = 0;
+ gUnknown_020388CC->unk7C = 0;
+ if ((gMain.heldKeys & DPAD_UP) && gUnknown_020388CC->unk56 > 2)
+ {
+ gUnknown_020388CC->unk7C = -1;
+ r4 = 1;
+ }
+ if ((gMain.heldKeys & DPAD_DOWN) && gUnknown_020388CC->unk56 < 16)
+ {
+ gUnknown_020388CC->unk7C = 1;
+ r4 = 1;
+ }
+ if ((gMain.heldKeys & DPAD_LEFT) && gUnknown_020388CC->unk54 > 1)
+ {
+ gUnknown_020388CC->unk7B = -1;
+ r4 = 1;
+ }
+ if ((gMain.heldKeys & DPAD_RIGHT) && gUnknown_020388CC->unk54 < 0x1C)
+ {
+ gUnknown_020388CC->unk7B = 1;
+ r4 = 1;
+ }
+ if (gMain.newKeys & A_BUTTON)
+ r4 = 4;
+ else if (gMain.newKeys & B_BUTTON)
+ r4 = 5;
+ if (r4 == 1)
+ {
+ gUnknown_020388CC->unk7A = 4;
+ gUnknown_020388CC->unk18 = _swiopen;
+ }
+ return r4;
+}
+
+u8 _swiopen(void)
+{
+ u16 r4;
+
+ if (gUnknown_020388CC->unk7A != 0)
+ return 2;
+
+ if (gUnknown_020388CC->unk7B > 0)
+ gUnknown_020388CC->unk54++;
+
+ if (gUnknown_020388CC->unk7B < 0)
+ gUnknown_020388CC->unk54--;
+
+ if (gUnknown_020388CC->unk7C > 0)
+ gUnknown_020388CC->unk56++;
+
+ if (gUnknown_020388CC->unk7C < 0)
+ gUnknown_020388CC->unk56--;
+
+ r4 = GetRegionMapSectionAt(gUnknown_020388CC->unk54, gUnknown_020388CC->unk56);
+ gUnknown_020388CC->unk16 = sub_80FB758(r4);
+ if (r4 != gUnknown_020388CC->unk14)
+ {
+ gUnknown_020388CC->unk14 = r4;
+ sub_80FBFB4(gUnknown_020388CC, gUnknown_020388CC->unk14, 16);
+ }
+ sub_80FBA18();
+ gUnknown_020388CC->unk18 = sub_80FAB78;
+ return 3;
+}
+
+u8 sub_80FAD04(void)
+{
+ u8 r4 = 0;
+ gUnknown_020388CC->unk6A = 0;
+ gUnknown_020388CC->unk68 = 0;
+ if ((gMain.heldKeys & 0x40) && gUnknown_020388CC->unk5E > -0x34)
+ {
+ gUnknown_020388CC->unk68 = -1;
+ r4 = 1;
+ }
+ if ((gMain.heldKeys & 0x80) && gUnknown_020388CC->unk5E < 0x3C)
+ {
+ gUnknown_020388CC->unk68 = 1;
+ r4 = 1;
+ }
+ if ((gMain.heldKeys & 0x20) && gUnknown_020388CC->unk5C > -0x2C)
+ {
+ gUnknown_020388CC->unk6A = -1;
+ r4 = 1;
+ }
+ if ((gMain.heldKeys & 0x10) && gUnknown_020388CC->unk5C < 0xAC)
+ {
+ gUnknown_020388CC->unk6A = 1;
+ r4 = 1;
+ }
+ if (gMain.newKeys & A_BUTTON)
+ r4 = 4;
+ if (gMain.newKeys & B_BUTTON)
+ r4 = 5;
+ if (r4 == 1)
+ {
+ gUnknown_020388CC->unk18 = sub_80FADE4;
+ gUnknown_020388CC->unk6C = 0;
+ }
+ return r4;
+}
+
+u8 sub_80FADE4(void)
+{
+ gUnknown_020388CC->unk5E += gUnknown_020388CC->unk68;
+ gUnknown_020388CC->unk5C += gUnknown_020388CC->unk6A;
+ sub_80FB238(gUnknown_020388CC->unk5C, gUnknown_020388CC->unk5E);
+ gUnknown_020388CC->unk6C++;
+ if (gUnknown_020388CC->unk6C == 8)
+ {
+ u16 r3 = (gUnknown_020388CC->unk5C + 0x2C) / 8 + 1;
+ u16 r1 = (gUnknown_020388CC->unk5E + 0x34) / 8 + 2;
+
+ if (r3 != gUnknown_020388CC->unk64 || r1 != gUnknown_020388CC->unk66)
+ {
+ u16 r4;
+
+ gUnknown_020388CC->unk64 = r3;
+ gUnknown_020388CC->unk66 = r1;
+ r4 = GetRegionMapSectionAt(r3, r1);
+ gUnknown_020388CC->unk16 = sub_80FB758(r4);
+ if (r4 != gUnknown_020388CC->unk14)
+ {
+ gUnknown_020388CC->unk14 = r4;
+ sub_80FBFB4(gUnknown_020388CC, gUnknown_020388CC->unk14, 16);
+ }
+ sub_80FBA18();
+ }
+ gUnknown_020388CC->unk6C = 0;
+ gUnknown_020388CC->unk18 = sub_80FAD04;
+ return 3;
+ }
+ return 2;
+}
+
+void sub_80FAEC4(void)
+{
+ if (gUnknown_020388CC->unk78 == 0)
+ {
+ gUnknown_020388CC->unk5E = 0;
+ gUnknown_020388CC->unk5C = 0;
+ gUnknown_020388CC->unk40 = 0;
+ gUnknown_020388CC->unk3C = 0;
+ gUnknown_020388CC->unk60 = gUnknown_020388CC->unk54 * 8 - 0x34;
+ gUnknown_020388CC->unk62 = gUnknown_020388CC->unk56 * 8 - 0x44;
+ gUnknown_020388CC->unk44 = (gUnknown_020388CC->unk60 << 8) / 16;
+ gUnknown_020388CC->unk48 = (gUnknown_020388CC->unk62 << 8) / 16;
+ gUnknown_020388CC->unk64 = gUnknown_020388CC->unk54;
+ gUnknown_020388CC->unk66 = gUnknown_020388CC->unk56;
+ gUnknown_020388CC->unk4C = 0x10000;
+ gUnknown_020388CC->unk50 = -0x800;
+ }
+ else
+ {
+ gUnknown_020388CC->unk3C = gUnknown_020388CC->unk5C * 256;
+ gUnknown_020388CC->unk40 = gUnknown_020388CC->unk5E * 256;
+ gUnknown_020388CC->unk60 = 0;
+ gUnknown_020388CC->unk62 = 0;
+ gUnknown_020388CC->unk44 = -(gUnknown_020388CC->unk3C / 16);
+ gUnknown_020388CC->unk48 = -(gUnknown_020388CC->unk40 / 16);
+ gUnknown_020388CC->unk54 = gUnknown_020388CC->unk64;
+ gUnknown_020388CC->unk56 = gUnknown_020388CC->unk66;
+ gUnknown_020388CC->unk4C = 0x8000;
+ gUnknown_020388CC->unk50 = 0x800;
+ }
+ gUnknown_020388CC->unk6E = 0;
+ sub_80FBCA0();
+ sub_80FBDF8();
+}
+
+u8 sub_80FAFC0(void)
+{
+ u8 r4;
+
+ if (gUnknown_020388CC->unk6E > 15)
+ return 0;
+ gUnknown_020388CC->unk6E++;
+ if (gUnknown_020388CC->unk6E == 16)
+ {
+ gUnknown_020388CC->unk44 = 0;
+ gUnknown_020388CC->unk48 = 0;
+ gUnknown_020388CC->unk5C = gUnknown_020388CC->unk60;
+ gUnknown_020388CC->unk5E = gUnknown_020388CC->unk62;
+ gUnknown_020388CC->unk4C = (gUnknown_020388CC->unk78 == 0) ? 0x8000 : 0x10000;
+ gUnknown_020388CC->unk78 = (gUnknown_020388CC->unk78 == 0) ? 1 : 0;
+ gUnknown_020388CC->unk18 = (gUnknown_020388CC->unk78 == 0) ? sub_80FAB78 : sub_80FAD04;
+ sub_80FBB3C(gUnknown_020388CC->unk58, gUnknown_020388CC->unk5A);
+ sub_80FBE24();
+ r4 = 0;
+ }
+ else
+ {
+ gUnknown_020388CC->unk3C += gUnknown_020388CC->unk44;
+ gUnknown_020388CC->unk40 += gUnknown_020388CC->unk48;
+ gUnknown_020388CC->unk5C = gUnknown_020388CC->unk3C >> 8;
+ gUnknown_020388CC->unk5E = gUnknown_020388CC->unk40 >> 8;
+ gUnknown_020388CC->unk4C += gUnknown_020388CC->unk50;
+ if ((gUnknown_020388CC->unk44 < 0 && gUnknown_020388CC->unk5C < gUnknown_020388CC->unk60)
+ || (gUnknown_020388CC->unk44 > 0 && gUnknown_020388CC->unk5C > gUnknown_020388CC->unk60))
+ {
+ gUnknown_020388CC->unk5C = gUnknown_020388CC->unk60;
+ gUnknown_020388CC->unk44 = 0;
+ }
+ if ((gUnknown_020388CC->unk48 < 0 && gUnknown_020388CC->unk5E < gUnknown_020388CC->unk62)
+ || (gUnknown_020388CC->unk48 > 0 && gUnknown_020388CC->unk5E > gUnknown_020388CC->unk62))
+ {
+ gUnknown_020388CC->unk5E = gUnknown_020388CC->unk62;
+ gUnknown_020388CC->unk48 = 0;
+ }
+ if (gUnknown_020388CC->unk78 == 0)
+ {
+ if (gUnknown_020388CC->unk4C < 0x8000)
+ {
+ gUnknown_020388CC->unk4C = 0x8000;
+ gUnknown_020388CC->unk50 = 0;
+ }
+ }
+ else
+ {
+ if (gUnknown_020388CC->unk4C > 0x10000)
+ {
+ gUnknown_020388CC->unk4C = 0x10000;
+ gUnknown_020388CC->unk50 = 0;
+ }
+ }
+ r4 = 1;
+ }
+ sub_80FB170(gUnknown_020388CC->unk5C, gUnknown_020388CC->unk5E, 0x38, 0x48, gUnknown_020388CC->unk4C >> 8, gUnknown_020388CC->unk4C >> 8, 0);
+ return r4;
+}