summaryrefslogtreecommitdiff
path: root/asm/save_location.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/save_location.s')
-rwxr-xr-xasm/save_location.s205
1 files changed, 205 insertions, 0 deletions
diff --git a/asm/save_location.s b/asm/save_location.s
new file mode 100755
index 000000000..1a5b3c6da
--- /dev/null
+++ b/asm/save_location.s
@@ -0,0 +1,205 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sav1_are_mapnumbers_in_given_list
+sav1_are_mapnumbers_in_given_list: @ 81AFC84
+ push {r4,lr}
+ adds r2, r0, 0
+ ldr r0, =gSaveBlock1Ptr
+ ldr r0, [r0]
+ movs r1, 0x4
+ ldrsb r1, [r0, r1]
+ lsls r1, 8
+ ldrb r0, [r0, 0x5]
+ lsls r0, 24
+ asrs r0, 24
+ adds r0, r1
+ lsls r0, 16
+ lsrs r3, r0, 16
+ ldrh r0, [r2]
+ ldr r1, =0x0000ffff
+ cmp r0, r1
+ beq _081AFCC4
+ adds r4, r1, 0
+ adds r1, r2, 0
+_081AFCAA:
+ ldrh r0, [r1]
+ cmp r0, r3
+ bne _081AFCBC
+ movs r0, 0x1
+ b _081AFCC6
+ .pool
+_081AFCBC:
+ adds r1, 0x2
+ ldrh r0, [r1]
+ cmp r0, r4
+ bne _081AFCAA
+_081AFCC4:
+ movs r0, 0
+_081AFCC6:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sav1_are_mapnumbers_in_given_list
+
+ thumb_func_start sav1_is_in_pokecenter
+sav1_is_in_pokecenter: @ 81AFCCC
+ push {lr}
+ ldr r0, =gUnknown_086143BC
+ bl sav1_are_mapnumbers_in_given_list
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sav1_is_in_pokecenter
+
+ thumb_func_start sub_81AFCDC
+sub_81AFCDC: @ 81AFCDC
+ push {lr}
+ ldr r0, =gUnknown_0861440A
+ bl sav1_are_mapnumbers_in_given_list
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_81AFCDC
+
+ thumb_func_start sub_81AFCEC
+sub_81AFCEC: @ 81AFCEC
+ push {lr}
+ ldr r0, =gUnknown_0861440E
+ bl sav1_are_mapnumbers_in_given_list
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_81AFCEC
+
+ thumb_func_start sav2_set_x9_bit3_when_sav1_in_pokecenter
+sav2_set_x9_bit3_when_sav1_in_pokecenter: @ 81AFCFC
+ push {lr}
+ bl sav1_is_in_pokecenter
+ cmp r0, 0
+ bne _081AFD18
+ ldr r0, =gSaveBlock2Ptr
+ ldr r2, [r0]
+ ldrb r1, [r2, 0x9]
+ movs r0, 0xFD
+ ands r0, r1
+ b _081AFD22
+ .pool
+_081AFD18:
+ ldr r0, =gSaveBlock2Ptr
+ ldr r2, [r0]
+ ldrb r1, [r2, 0x9]
+ movs r0, 0x2
+ orrs r0, r1
+_081AFD22:
+ strb r0, [r2, 0x9]
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sav2_set_x9_bit3_when_sav1_in_pokecenter
+
+ thumb_func_start sub_81AFD2C
+sub_81AFD2C: @ 81AFD2C
+ push {lr}
+ bl sub_81AFCDC
+ cmp r0, 0
+ bne _081AFD48
+ ldr r0, =gSaveBlock2Ptr
+ ldr r2, [r0]
+ ldrb r1, [r2, 0x9]
+ movs r0, 0xFB
+ ands r0, r1
+ b _081AFD52
+ .pool
+_081AFD48:
+ ldr r0, =gSaveBlock2Ptr
+ ldr r2, [r0]
+ ldrb r1, [r2, 0x9]
+ movs r0, 0x4
+ orrs r0, r1
+_081AFD52:
+ strb r0, [r2, 0x9]
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81AFD2C
+
+ thumb_func_start sub_81AFD5C
+sub_81AFD5C: @ 81AFD5C
+ push {lr}
+ bl sub_81AFCEC
+ cmp r0, 0
+ bne _081AFD78
+ ldr r0, =gSaveBlock2Ptr
+ ldr r2, [r0]
+ ldrb r1, [r2, 0x9]
+ movs r0, 0xF7
+ ands r0, r1
+ b _081AFD82
+ .pool
+_081AFD78:
+ ldr r0, =gSaveBlock2Ptr
+ ldr r2, [r0]
+ ldrb r1, [r2, 0x9]
+ movs r0, 0x8
+ orrs r0, r1
+_081AFD82:
+ strb r0, [r2, 0x9]
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81AFD5C
+
+ thumb_func_start sav2_set_x9_depending_on_sav1_map
+sav2_set_x9_depending_on_sav1_map: @ 81AFD8C
+ push {lr}
+ bl sav2_set_x9_bit3_when_sav1_in_pokecenter
+ bl sub_81AFD2C
+ bl sub_81AFD5C
+ pop {r0}
+ bx r0
+ thumb_func_end sav2_set_x9_depending_on_sav1_map
+
+ thumb_func_start sub_81AFDA0
+sub_81AFDA0: @ 81AFDA0
+ ldr r0, =gSaveBlock2Ptr
+ ldr r2, [r0]
+ adds r2, 0xA8
+ ldr r0, [r2]
+ movs r1, 0x80
+ lsls r1, 8
+ orrs r0, r1
+ movs r1, 0x1
+ orrs r0, r1
+ movs r1, 0x2
+ orrs r0, r1
+ movs r1, 0x4
+ orrs r0, r1
+ movs r1, 0x10
+ orrs r0, r1
+ movs r1, 0x20
+ orrs r0, r1
+ movs r1, 0x8
+ orrs r0, r1
+ str r0, [r2]
+ bx lr
+ .pool
+ thumb_func_end sub_81AFDA0
+
+ thumb_func_start sub_81AFDD0
+sub_81AFDD0: @ 81AFDD0
+ ldr r0, =gSaveBlock2Ptr
+ ldr r2, [r0]
+ ldrb r1, [r2, 0x9]
+ movs r0, 0x80
+ orrs r0, r1
+ strb r0, [r2, 0x9]
+ bx lr
+ .pool
+ thumb_func_end sub_81AFDD0
+
+ .align 2, 0 @ Don't pad with nop.