diff options
author | YamaArashi <shadow962@live.com> | 2016-10-24 03:33:46 -0700 |
---|---|---|
committer | YamaArashi <shadow962@live.com> | 2016-10-24 03:33:46 -0700 |
commit | 3565e0f5e3c8b0de1650dfa0b3f1e800ecfe2b3d (patch) | |
tree | 880706633d0901af4b3fd93b749543908f11fb7f /asm/load_save.s | |
parent | b2f1a811ba74f353527d4f590d2d8d96a845f0a4 (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.s | 444 |
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. |