summaryrefslogtreecommitdiff
path: root/asm/load_save.s
diff options
context:
space:
mode:
authorYamaArashi <shadow962@live.com>2016-10-24 03:33:46 -0700
committerYamaArashi <shadow962@live.com>2016-10-24 03:33:46 -0700
commit3565e0f5e3c8b0de1650dfa0b3f1e800ecfe2b3d (patch)
tree880706633d0901af4b3fd93b749543908f11fb7f /asm/load_save.s
parentb2f1a811ba74f353527d4f590d2d8d96a845f0a4 (diff)
split out load_save.s, trade.s, and berry_blender.s
Diffstat (limited to 'asm/load_save.s')
-rw-r--r--asm/load_save.s444
1 files changed, 444 insertions, 0 deletions
diff --git a/asm/load_save.s b/asm/load_save.s
new file mode 100644
index 000000000..66fa16959
--- /dev/null
+++ b/asm/load_save.s
@@ -0,0 +1,444 @@
+ .include "constants/gba_constants.s"
+ .include "constants/species_constants.s"
+ .include "asm/macros.s"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start CheckForFlashMemory
+CheckForFlashMemory: @ 80479CC
+ push {lr}
+ bl IdentifyFlash
+ lsls r0, 16
+ cmp r0, 0
+ bne _080479E8
+ ldr r1, _080479E4 @ =gUnknown_3004820
+ movs r0, 0x1
+ str r0, [r1]
+ bl InitFlashTimer
+ b _080479EE
+ .align 2, 0
+_080479E4: .4byte gUnknown_3004820
+_080479E8:
+ ldr r1, _080479F4 @ =gUnknown_3004820
+ movs r0, 0
+ str r0, [r1]
+_080479EE:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080479F4: .4byte gUnknown_3004820
+ thumb_func_end CheckForFlashMemory
+
+ thumb_func_start sub_80479F8
+sub_80479F8: @ 80479F8
+ ldr r0, _08047A00 @ =gSaveBlock2
+ ldrb r0, [r0, 0x9]
+ bx lr
+ .align 2, 0
+_08047A00: .4byte gSaveBlock2
+ thumb_func_end sub_80479F8
+
+ thumb_func_start sub_8047A04
+sub_8047A04: @ 8047A04
+ ldr r1, _08047A0C @ =gSaveBlock2
+ movs r0, 0
+ strb r0, [r1, 0x9]
+ bx lr
+ .align 2, 0
+_08047A0C: .4byte gSaveBlock2
+ thumb_func_end sub_8047A04
+
+ thumb_func_start sub_8047A10
+sub_8047A10: @ 8047A10
+ ldr r1, _08047A18 @ =gSaveBlock2
+ movs r0, 0x1
+ strb r0, [r1, 0x9]
+ bx lr
+ .align 2, 0
+_08047A18: .4byte gSaveBlock2
+ thumb_func_end sub_8047A10
+
+ thumb_func_start sub_8047A1C
+sub_8047A1C: @ 8047A1C
+ push {lr}
+ movs r0, 0
+ bl gpu_sync_bg_hide
+ ldr r1, _08047A30 @ =gSaveBlock2
+ movs r0, 0x1
+ strb r0, [r1, 0x9]
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08047A30: .4byte gSaveBlock2
+ thumb_func_end sub_8047A1C
+
+ thumb_func_start sub_8047A34
+sub_8047A34: @ 8047A34
+ ldr r1, _08047A3C @ =gSaveBlock2
+ movs r0, 0
+ strb r0, [r1, 0x9]
+ bx lr
+ .align 2, 0
+_08047A3C: .4byte gSaveBlock2
+ thumb_func_end sub_8047A34
+
+ thumb_func_start sub_8047A40
+sub_8047A40: @ 8047A40
+ push {r4-r6,lr}
+ ldr r2, _08047A78 @ =gSaveBlock1
+ ldr r0, _08047A7C @ =gPlayerPartyCount
+ ldrb r1, [r0]
+ movs r3, 0x8D
+ lsls r3, 2
+ adds r0, r2, r3
+ strb r1, [r0]
+ movs r6, 0
+ movs r0, 0x8E
+ lsls r0, 2
+ adds r5, r2, r0
+ movs r4, 0
+_08047A5A:
+ ldr r1, _08047A80 @ =gPlayerParty
+ adds r1, r4, r1
+ adds r0, r5, 0
+ movs r2, 0x64
+ bl memcpy
+ adds r5, 0x64
+ adds r4, 0x64
+ adds r6, 0x1
+ cmp r6, 0x5
+ ble _08047A5A
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08047A78: .4byte gSaveBlock1
+_08047A7C: .4byte gPlayerPartyCount
+_08047A80: .4byte gPlayerParty
+ thumb_func_end sub_8047A40
+
+ thumb_func_start copy_player_party_from_sav1
+copy_player_party_from_sav1: @ 8047A84
+ push {r4-r6,lr}
+ ldr r0, _08047AC0 @ =gPlayerPartyCount
+ ldr r1, _08047AC4 @ =gSaveBlock1
+ movs r2, 0x8D
+ lsls r2, 2
+ adds r1, r2
+ ldrb r1, [r1]
+ strb r1, [r0]
+ ldr r4, _08047AC8 @ =gPlayerParty
+ movs r5, 0
+ movs r0, 0xFA
+ lsls r0, 1
+ adds r6, r4, r0
+_08047A9E:
+ ldr r1, _08047AC4 @ =gSaveBlock1
+ adds r1, r5, r1
+ movs r2, 0x8E
+ lsls r2, 2
+ adds r1, r2
+ adds r0, r4, 0
+ movs r2, 0x64
+ bl memcpy
+ adds r4, 0x64
+ adds r5, 0x64
+ cmp r4, r6
+ ble _08047A9E
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08047AC0: .4byte gPlayerPartyCount
+_08047AC4: .4byte gSaveBlock1
+_08047AC8: .4byte gPlayerParty
+ thumb_func_end copy_player_party_from_sav1
+
+ thumb_func_start sub_8047ACC
+sub_8047ACC: @ 8047ACC
+ push {r4-r7,lr}
+ ldr r0, _08047AFC @ =gSaveBlock1
+ ldr r4, _08047B00 @ =gMapObjects
+ movs r1, 0x9E
+ lsls r1, 4
+ adds r3, r0, r1
+ movs r2, 0xF
+_08047ADA:
+ adds r1, r3, 0
+ adds r0, r4, 0
+ ldm r0!, {r5-r7}
+ stm r1!, {r5-r7}
+ ldm r0!, {r5-r7}
+ stm r1!, {r5-r7}
+ ldm r0!, {r5-r7}
+ stm r1!, {r5-r7}
+ adds r4, 0x24
+ adds r3, 0x24
+ subs r2, 0x1
+ cmp r2, 0
+ bge _08047ADA
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08047AFC: .4byte gSaveBlock1
+_08047B00: .4byte gMapObjects
+ thumb_func_end sub_8047ACC
+
+ thumb_func_start save_deserialize_npcs
+save_deserialize_npcs: @ 8047B04
+ push {r4-r7,lr}
+ ldr r0, _08047B34 @ =gSaveBlock1
+ movs r1, 0x9E
+ lsls r1, 4
+ adds r4, r0, r1
+ ldr r3, _08047B38 @ =gMapObjects
+ movs r2, 0xF
+_08047B12:
+ adds r1, r3, 0
+ adds r0, r4, 0
+ ldm r0!, {r5-r7}
+ stm r1!, {r5-r7}
+ ldm r0!, {r5-r7}
+ stm r1!, {r5-r7}
+ ldm r0!, {r5-r7}
+ stm r1!, {r5-r7}
+ adds r4, 0x24
+ adds r3, 0x24
+ subs r2, 0x1
+ cmp r2, 0
+ bge _08047B12
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08047B34: .4byte gSaveBlock1
+_08047B38: .4byte gMapObjects
+ thumb_func_end save_deserialize_npcs
+
+ thumb_func_start save_serialize_game
+save_serialize_game: @ 8047B3C
+ push {lr}
+ bl sub_8047A40
+ bl sub_8047ACC
+ pop {r0}
+ bx r0
+ thumb_func_end save_serialize_game
+
+ thumb_func_start save_deserialize_game
+save_deserialize_game: @ 8047B4C
+ push {lr}
+ bl copy_player_party_from_sav1
+ bl save_deserialize_npcs
+ pop {r0}
+ bx r0
+ thumb_func_end save_deserialize_game
+
+ thumb_func_start copy_bags_and_unk_data_from_save_blocks
+copy_bags_and_unk_data_from_save_blocks: @ 8047B5C
+ push {r4-r7,lr}
+ ldr r0, _08047C0C @ =gSaveBlock1
+ movs r1, 0xAC
+ lsls r1, 3
+ adds r3, r0, r1
+ ldr r1, _08047C10 @ =gUnknown_020291F4
+ movs r2, 0x13
+_08047B6A:
+ ldm r3!, {r0}
+ stm r1!, {r0}
+ subs r2, 0x1
+ cmp r2, 0
+ bge _08047B6A
+ ldr r1, _08047C10 @ =gUnknown_020291F4
+ ldr r0, _08047C0C @ =gSaveBlock1
+ movs r2, 0xB6
+ lsls r2, 3
+ adds r3, r0, r2
+ adds r1, 0x50
+ movs r2, 0x13
+_08047B82:
+ ldm r3!, {r0}
+ stm r1!, {r0}
+ subs r2, 0x1
+ cmp r2, 0
+ bge _08047B82
+ ldr r1, _08047C10 @ =gUnknown_020291F4
+ ldr r0, _08047C0C @ =gSaveBlock1
+ movs r5, 0xC0
+ lsls r5, 3
+ adds r3, r0, r5
+ adds r1, 0xA0
+ movs r2, 0xF
+_08047B9A:
+ ldm r3!, {r0}
+ stm r1!, {r0}
+ subs r2, 0x1
+ cmp r2, 0
+ bge _08047B9A
+ ldr r1, _08047C10 @ =gUnknown_020291F4
+ ldr r0, _08047C0C @ =gSaveBlock1
+ movs r6, 0xC8
+ lsls r6, 3
+ adds r3, r0, r6
+ adds r1, 0xE0
+ movs r2, 0x3F
+_08047BB2:
+ ldm r3!, {r0}
+ stm r1!, {r0}
+ subs r2, 0x1
+ cmp r2, 0
+ bge _08047BB2
+ ldr r1, _08047C10 @ =gUnknown_020291F4
+ ldr r0, _08047C0C @ =gSaveBlock1
+ movs r7, 0xE8
+ lsls r7, 3
+ adds r3, r0, r7
+ movs r0, 0xF0
+ lsls r0, 1
+ adds r1, r0
+ movs r2, 0x2D
+_08047BCE:
+ ldm r3!, {r0}
+ stm r1!, {r0}
+ subs r2, 0x1
+ cmp r2, 0
+ bge _08047BCE
+ ldr r0, _08047C10 @ =gUnknown_020291F4
+ ldr r4, _08047C0C @ =gSaveBlock1
+ movs r1, 0xA6
+ lsls r1, 2
+ adds r3, r0, r1
+ ldr r2, _08047C14 @ =0x00002b4c
+ mov r12, r2
+ movs r2, 0xF
+_08047BE8:
+ adds r1, r3, 0
+ mov r5, r12
+ adds r0, r4, r5
+ ldm r0!, {r5-r7}
+ stm r1!, {r5-r7}
+ ldm r0!, {r5-r7}
+ stm r1!, {r5-r7}
+ ldm r0!, {r5-r7}
+ stm r1!, {r5-r7}
+ adds r4, 0x24
+ adds r3, 0x24
+ subs r2, 0x1
+ cmp r2, 0
+ bge _08047BE8
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08047C0C: .4byte gSaveBlock1
+_08047C10: .4byte gUnknown_020291F4
+_08047C14: .4byte 0x00002b4c
+ thumb_func_end copy_bags_and_unk_data_from_save_blocks
+
+ thumb_func_start copy_bags_and_unk_data_to_save_blocks
+copy_bags_and_unk_data_to_save_blocks: @ 8047C18
+ push {r4-r7,lr}
+ ldr r0, _08047CCC @ =gSaveBlock1
+ ldr r3, _08047CD0 @ =gUnknown_020291F4
+ movs r2, 0xAC
+ lsls r2, 3
+ adds r1, r0, r2
+ movs r2, 0x13
+_08047C26:
+ ldm r3!, {r0}
+ stm r1!, {r0}
+ subs r2, 0x1
+ cmp r2, 0
+ bge _08047C26
+ ldr r1, _08047CCC @ =gSaveBlock1
+ ldr r0, _08047CD0 @ =gUnknown_020291F4
+ adds r3, r0, 0
+ adds r3, 0x50
+ movs r5, 0xB6
+ lsls r5, 3
+ adds r1, r5
+ movs r2, 0x13
+_08047C40:
+ ldm r3!, {r0}
+ stm r1!, {r0}
+ subs r2, 0x1
+ cmp r2, 0
+ bge _08047C40
+ ldr r1, _08047CCC @ =gSaveBlock1
+ ldr r0, _08047CD0 @ =gUnknown_020291F4
+ adds r3, r0, 0
+ adds r3, 0xA0
+ movs r6, 0xC0
+ lsls r6, 3
+ adds r1, r6
+ movs r2, 0xF
+_08047C5A:
+ ldm r3!, {r0}
+ stm r1!, {r0}
+ subs r2, 0x1
+ cmp r2, 0
+ bge _08047C5A
+ ldr r1, _08047CCC @ =gSaveBlock1
+ ldr r0, _08047CD0 @ =gUnknown_020291F4
+ adds r3, r0, 0
+ adds r3, 0xE0
+ movs r7, 0xC8
+ lsls r7, 3
+ adds r1, r7
+ movs r2, 0x3F
+_08047C74:
+ ldm r3!, {r0}
+ stm r1!, {r0}
+ subs r2, 0x1
+ cmp r2, 0
+ bge _08047C74
+ ldr r1, _08047CCC @ =gSaveBlock1
+ ldr r0, _08047CD0 @ =gUnknown_020291F4
+ movs r2, 0xF0
+ lsls r2, 1
+ adds r3, r0, r2
+ movs r5, 0xE8
+ lsls r5, 3
+ adds r1, r5
+ movs r2, 0x2D
+_08047C90:
+ ldm r3!, {r0}
+ stm r1!, {r0}
+ subs r2, 0x1
+ cmp r2, 0
+ bge _08047C90
+ ldr r0, _08047CCC @ =gSaveBlock1
+ ldr r4, _08047CD0 @ =gUnknown_020291F4
+ ldr r6, _08047CD4 @ =0x00002b4c
+ adds r3, r0, r6
+ movs r7, 0xA6
+ lsls r7, 2
+ mov r12, r7
+ movs r2, 0xF
+_08047CAA:
+ adds r1, r3, 0
+ mov r5, r12
+ adds r0, r4, r5
+ ldm r0!, {r5-r7}
+ stm r1!, {r5-r7}
+ ldm r0!, {r5-r7}
+ stm r1!, {r5-r7}
+ ldm r0!, {r5-r7}
+ stm r1!, {r5-r7}
+ adds r4, 0x24
+ adds r3, 0x24
+ subs r2, 0x1
+ cmp r2, 0
+ bge _08047CAA
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08047CCC: .4byte gSaveBlock1
+_08047CD0: .4byte gUnknown_020291F4
+_08047CD4: .4byte 0x00002b4c
+ thumb_func_end copy_bags_and_unk_data_to_save_blocks
+
+ .align 2, 0 @ Don't pad with nop.