mirror of
https://github.com/YohannDR/mzm.git
synced 2024-10-06 18:13:20 +00:00
Start decompiling save file code
This commit is contained in:
parent
57beb48062
commit
4f25de2a73
@ -100,7 +100,7 @@ lbl_08000d10:
|
||||
ldr r5, lbl_08000d5c @ =0x08754bcc
|
||||
ldr r1, [r5]
|
||||
movs r2, #0x40
|
||||
bl SRAMWriteChecked
|
||||
bl SramWriteChecked
|
||||
adds r4, r0, #0
|
||||
cmp r4, #0
|
||||
beq lbl_08000d36
|
||||
@ -113,7 +113,7 @@ lbl_08000d36:
|
||||
ldr r2, lbl_08000d54 @ =0x00006d40
|
||||
adds r1, r1, r2
|
||||
movs r2, #0x40
|
||||
bl SRAMWriteChecked
|
||||
bl SramWriteChecked
|
||||
b lbl_08000fa8
|
||||
.align 2, 0
|
||||
lbl_08000d4c: .4byte 0x040000d4
|
||||
@ -129,7 +129,7 @@ lbl_08000d60:
|
||||
ldr r1, [r1]
|
||||
adds r1, #0x40
|
||||
movs r2, #0x40
|
||||
bl SRAMWriteChecked
|
||||
bl SramWriteChecked
|
||||
b lbl_08000fa8
|
||||
.align 2, 0
|
||||
lbl_08000d74: .4byte 0x08754bc8
|
||||
@ -143,7 +143,7 @@ lbl_08000d7c:
|
||||
ldr r1, [r1]
|
||||
adds r1, r1, r2
|
||||
movs r2, #0x40
|
||||
bl SRAMWriteChecked
|
||||
bl SramWriteChecked
|
||||
b lbl_08000fa8
|
||||
.align 2, 0
|
||||
lbl_08000d94: .4byte 0x08754bc8
|
||||
@ -168,7 +168,7 @@ lbl_08000da0:
|
||||
adds r1, r1, r2
|
||||
movs r2, #0x91
|
||||
lsls r2, r2, #5
|
||||
bl SRAMWriteChecked
|
||||
bl SramWriteChecked
|
||||
b lbl_08000fa8
|
||||
.align 2, 0
|
||||
lbl_08000dcc: .4byte 0x08754bc8
|
||||
@ -194,7 +194,7 @@ lbl_08000dd8:
|
||||
adds r1, r1, r2
|
||||
movs r2, #0x91
|
||||
lsls r2, r2, #5
|
||||
bl SRAMWriteChecked
|
||||
bl SramWriteChecked
|
||||
b lbl_08000fa8
|
||||
.align 2, 0
|
||||
lbl_08000e04: .4byte 0x08754bc8
|
||||
@ -211,7 +211,7 @@ lbl_08000e14:
|
||||
ldr r1, [r1]
|
||||
adds r1, r1, r2
|
||||
movs r2, #0x40
|
||||
bl SRAMWriteChecked
|
||||
bl SramWriteChecked
|
||||
b lbl_08000fa8
|
||||
.align 2, 0
|
||||
lbl_08000e2c: .4byte 0x08754bc8
|
||||
@ -225,7 +225,7 @@ lbl_08000e34:
|
||||
ldr r1, [r1]
|
||||
adds r1, r1, r2
|
||||
movs r2, #0x40
|
||||
bl SRAMWriteChecked
|
||||
bl SramWriteChecked
|
||||
b lbl_08000fa8
|
||||
.align 2, 0
|
||||
lbl_08000e4c: .4byte 0x08754bc8
|
||||
@ -241,7 +241,7 @@ lbl_08000e58:
|
||||
ldr r1, [r1]
|
||||
adds r1, r1, r2
|
||||
movs r2, #0x40
|
||||
bl SRAMWriteChecked
|
||||
bl SramWriteChecked
|
||||
b lbl_08000fa8
|
||||
.align 2, 0
|
||||
lbl_08000e70: .4byte 0x08754bc8
|
||||
@ -255,7 +255,7 @@ lbl_08000e78:
|
||||
ldr r1, [r1]
|
||||
adds r1, r1, r2
|
||||
movs r2, #0x40
|
||||
bl SRAMWriteChecked
|
||||
bl SramWriteChecked
|
||||
b lbl_08000fa8
|
||||
.align 2, 0
|
||||
lbl_08000e90: .4byte 0x08754bc8
|
||||
@ -272,7 +272,7 @@ lbl_08000e9c:
|
||||
adds r1, r1, r2
|
||||
movs r2, #0x80
|
||||
lsls r2, r2, #1
|
||||
bl SRAMWriteChecked
|
||||
bl SramWriteChecked
|
||||
b lbl_08000fa8
|
||||
.align 2, 0
|
||||
lbl_08000eb8: .4byte 0x08754bc8
|
||||
@ -288,7 +288,7 @@ lbl_08000ec0:
|
||||
adds r1, r1, r2
|
||||
movs r2, #0x80
|
||||
lsls r2, r2, #1
|
||||
bl SRAMWriteChecked
|
||||
bl SramWriteChecked
|
||||
b lbl_08000fa8
|
||||
.align 2, 0
|
||||
lbl_08000edc: .4byte 0x08754bc8
|
||||
@ -305,7 +305,7 @@ lbl_08000ee4:
|
||||
movs r7, #0x80
|
||||
lsls r7, r7, #2
|
||||
adds r2, r7, #0
|
||||
bl SRAMWriteChecked
|
||||
bl SramWriteChecked
|
||||
adds r4, r0, #0
|
||||
cmp r4, #0
|
||||
bne lbl_08000faa
|
||||
@ -316,7 +316,7 @@ lbl_08000ee4:
|
||||
ldr r1, [r5]
|
||||
adds r1, r1, r2
|
||||
adds r2, r7, #0
|
||||
bl SRAMWriteChecked
|
||||
bl SramWriteChecked
|
||||
b lbl_08000fa8
|
||||
.align 2, 0
|
||||
lbl_08000f18: .4byte 0x08754bc8
|
||||
@ -325,7 +325,7 @@ lbl_08000f20:
|
||||
ldr r0, lbl_08000f2c @ =0x0203ff70
|
||||
ldr r1, lbl_08000f30 @ =0x0e007f70
|
||||
movs r2, #0x10
|
||||
bl SRAMWriteChecked
|
||||
bl SramWriteChecked
|
||||
b lbl_08000fa8
|
||||
.align 2, 0
|
||||
lbl_08000f2c: .4byte 0x0203ff70
|
||||
@ -335,7 +335,7 @@ lbl_08000f34:
|
||||
ldr r1, lbl_08000f48 @ =0x0e007800
|
||||
movs r2, #0xa0
|
||||
lsls r2, r2, #2
|
||||
bl SRAMWriteChecked
|
||||
bl SramWriteChecked
|
||||
b lbl_08000fa8
|
||||
.align 2, 0
|
||||
lbl_08000f44: .4byte 0x0203f800
|
||||
@ -346,7 +346,7 @@ lbl_08000f4c:
|
||||
ldr r1, lbl_08000f5c @ =0x02038000
|
||||
movs r2, #0x80
|
||||
lsls r2, r2, #8
|
||||
bl SRAMWriteUnchecked
|
||||
bl SramWriteUnchecked
|
||||
b lbl_08000faa
|
||||
.align 2, 0
|
||||
lbl_08000f5c: .4byte 0x02038000
|
||||
@ -369,7 +369,7 @@ lbl_08000f60:
|
||||
adds r1, r1, r2
|
||||
movs r2, #0x91
|
||||
lsls r2, r2, #5
|
||||
bl SRAMWriteUnchecked
|
||||
bl SramWriteUnchecked
|
||||
b lbl_08000faa
|
||||
.align 2, 0
|
||||
lbl_08000f8c: .4byte 0x08754bcc
|
||||
@ -382,7 +382,7 @@ lbl_08000f98:
|
||||
ldr r1, [r1]
|
||||
movs r2, #0x80
|
||||
lsls r2, r2, #8
|
||||
bl SRAMCheck
|
||||
bl SramCheck
|
||||
lbl_08000fa8:
|
||||
adds r4, r0, #0
|
||||
lbl_08000faa:
|
||||
@ -470,7 +470,7 @@ lbl_0800103c:
|
||||
adds r1, r1, r2
|
||||
adds r1, r1, r4
|
||||
adds r2, r5, #0
|
||||
bl SRAMWriteChecked
|
||||
bl SramWriteChecked
|
||||
b lbl_0800108e
|
||||
.align 2, 0
|
||||
lbl_08001054: .4byte 0x08754bc8
|
||||
@ -497,7 +497,7 @@ lbl_08001064:
|
||||
adds r1, r1, r2
|
||||
adds r1, r1, r4
|
||||
adds r2, r5, #0
|
||||
bl SRAMWriteUnchecked
|
||||
bl SramWriteUnchecked
|
||||
lbl_0800108e:
|
||||
movs r2, #0
|
||||
adds r1, r4, r5
|
||||
|
@ -2,8 +2,8 @@
|
||||
|
||||
.syntax unified
|
||||
|
||||
thumb_func_start SRAMWriteUncheckedInternal
|
||||
SRAMWriteUncheckedInternal: @ 0x080051d4
|
||||
thumb_func_start SramWriteUncheckedInternal
|
||||
SramWriteUncheckedInternal: @ 0x080051d4
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
subs r3, r2, #1
|
||||
@ -25,8 +25,8 @@ lbl_080051f0:
|
||||
bx r0
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start SRAMWriteUnchecked
|
||||
SRAMWriteUnchecked: @ 0x080051f8
|
||||
thumb_func_start SramWriteUnchecked
|
||||
SramWriteUnchecked: @ 0x080051f8
|
||||
push {r4, r5, r6, lr}
|
||||
sub sp, #0x80
|
||||
adds r4, r0, #0
|
||||
@ -39,20 +39,20 @@ SRAMWriteUnchecked: @ 0x080051f8
|
||||
movs r1, #3
|
||||
orrs r0, r1
|
||||
strh r0, [r2]
|
||||
ldr r3, lbl_0800522c @ =SRAMWriteUncheckedInternal
|
||||
ldr r3, lbl_0800522c @ =SramWriteUncheckedInternal
|
||||
movs r0, #1
|
||||
bics r3, r0
|
||||
mov r2, sp
|
||||
ldr r0, lbl_08005230 @ =SRAMWriteUnchecked
|
||||
ldr r1, lbl_0800522c @ =SRAMWriteUncheckedInternal
|
||||
ldr r0, lbl_08005230 @ =SramWriteUnchecked
|
||||
ldr r1, lbl_0800522c @ =SramWriteUncheckedInternal
|
||||
subs r0, r0, r1
|
||||
lsls r0, r0, #0xf
|
||||
b lbl_08005240
|
||||
.align 2, 0
|
||||
lbl_08005224: .4byte 0x04000204
|
||||
lbl_08005228: .4byte 0x0000fffc
|
||||
lbl_0800522c: .4byte SRAMWriteUncheckedInternal
|
||||
lbl_08005230: .4byte SRAMWriteUnchecked
|
||||
lbl_0800522c: .4byte SramWriteUncheckedInternal
|
||||
lbl_08005230: .4byte SramWriteUnchecked
|
||||
lbl_08005234:
|
||||
ldrh r0, [r3]
|
||||
strh r0, [r2]
|
||||
@ -75,8 +75,8 @@ lbl_08005240:
|
||||
pop {r0}
|
||||
bx r0
|
||||
|
||||
thumb_func_start SRAMWrite
|
||||
SRAMWrite: @ 0x0800525c
|
||||
thumb_func_start SramWrite
|
||||
SramWrite: @ 0x0800525c
|
||||
push {r4, r5, lr}
|
||||
adds r5, r0, #0
|
||||
adds r4, r1, #0
|
||||
@ -141,8 +141,8 @@ lbl_080052c4:
|
||||
bx r1
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start SRAMCheck
|
||||
SRAMCheck: @ 0x080052cc
|
||||
thumb_func_start SramCheck
|
||||
SramCheck: @ 0x080052cc
|
||||
push {r4, r5, r6, lr}
|
||||
sub sp, #0xc0
|
||||
adds r4, r0, #0
|
||||
@ -159,7 +159,7 @@ SRAMCheck: @ 0x080052cc
|
||||
movs r0, #1
|
||||
bics r3, r0
|
||||
mov r2, sp
|
||||
ldr r0, lbl_08005304 @ =SRAMCheck
|
||||
ldr r0, lbl_08005304 @ =SramCheck
|
||||
ldr r1, lbl_08005300 @ =SRAMCheckInternal
|
||||
subs r0, r0, r1
|
||||
lsls r0, r0, #0xf
|
||||
@ -168,7 +168,7 @@ SRAMCheck: @ 0x080052cc
|
||||
lbl_080052f8: .4byte 0x04000204
|
||||
lbl_080052fc: .4byte 0x0000fffc
|
||||
lbl_08005300: .4byte SRAMCheckInternal
|
||||
lbl_08005304: .4byte SRAMCheck
|
||||
lbl_08005304: .4byte SramCheck
|
||||
lbl_08005308:
|
||||
ldrh r0, [r3]
|
||||
strh r0, [r2]
|
||||
@ -191,8 +191,8 @@ lbl_08005314:
|
||||
pop {r1}
|
||||
bx r1
|
||||
|
||||
thumb_func_start SRAMWriteChecked
|
||||
SRAMWriteChecked: @ 0x08005330
|
||||
thumb_func_start SramWriteChecked
|
||||
SramWriteChecked: @ 0x08005330
|
||||
push {r4, r5, r6, r7, lr}
|
||||
adds r6, r0, #0
|
||||
adds r5, r1, #0
|
||||
@ -209,11 +209,11 @@ lbl_08005342:
|
||||
adds r0, r6, #0
|
||||
adds r1, r5, #0
|
||||
adds r2, r4, #0
|
||||
bl SRAMWrite
|
||||
bl SramWrite
|
||||
adds r0, r6, #0
|
||||
adds r1, r5, #0
|
||||
adds r2, r4, #0
|
||||
bl SRAMCheck
|
||||
bl SramCheck
|
||||
adds r3, r0, #0
|
||||
cmp r3, #0
|
||||
bne lbl_0800533c
|
||||
|
@ -25010,8 +25010,8 @@ lbl_08073292:
|
||||
.align 2, 0
|
||||
lbl_08073298: .4byte 0x08754bc4
|
||||
|
||||
thumb_func_start read_sram
|
||||
read_sram: @ 0x0807329c
|
||||
thumb_func_start SramRead_All
|
||||
SramRead_All: @ 0x0807329c
|
||||
push {r4, r5, lr}
|
||||
movs r4, #3
|
||||
ldr r5, lbl_080732b8 @ =0x03000c1c
|
||||
@ -25265,7 +25265,7 @@ lbl_080734a4:
|
||||
lbl_080734b0: .4byte 0x08754bc8
|
||||
lbl_080734b4: .4byte 0x00006d40
|
||||
lbl_080734b8:
|
||||
bl EraseSRAM
|
||||
bl EraseSram
|
||||
ldr r1, lbl_080734e0 @ =0x0841147c
|
||||
ldr r2, lbl_080734e4 @ =0x03000014
|
||||
movs r0, #0x10
|
||||
@ -26127,8 +26127,8 @@ lbl_08073b9a:
|
||||
pop {r1}
|
||||
bx r1
|
||||
|
||||
thumb_func_start save_file
|
||||
save_file: @ 0x08073ba4
|
||||
thumb_func_start SramSaveFile
|
||||
SramSaveFile: @ 0x08073ba4
|
||||
push {lr}
|
||||
sub sp, #4
|
||||
ldr r1, lbl_08073bd4 @ =0x03000043
|
||||
@ -27003,14 +27003,14 @@ sub_08074304: @ 0x08074304
|
||||
ldr r4, lbl_0807436c @ =0x0e007f80
|
||||
adds r1, r4, #0
|
||||
movs r2, #0x10
|
||||
bl SRAMWriteChecked
|
||||
bl SramWriteChecked
|
||||
rsbs r1, r0, #0
|
||||
orrs r1, r0
|
||||
lsrs r5, r1, #0x1f
|
||||
adds r0, r4, #0
|
||||
mov r1, sp
|
||||
movs r2, #0x10
|
||||
bl SRAMWriteUnchecked
|
||||
bl SramWriteUnchecked
|
||||
movs r2, #0
|
||||
lbl_0807432c:
|
||||
mov r0, sp
|
||||
@ -27025,7 +27025,7 @@ lbl_0807432c:
|
||||
mov r0, sp
|
||||
adds r1, r4, #0
|
||||
movs r2, #0x10
|
||||
bl SRAMWriteChecked
|
||||
bl SramWriteChecked
|
||||
cmp r0, #0
|
||||
beq lbl_08074350
|
||||
movs r0, #2
|
||||
@ -27034,7 +27034,7 @@ lbl_08074350:
|
||||
adds r0, r4, #0
|
||||
mov r1, sp
|
||||
movs r2, #0x10
|
||||
bl SRAMWriteUnchecked
|
||||
bl SramWriteUnchecked
|
||||
movs r2, #0
|
||||
mov r0, sp
|
||||
ldrb r1, [r0]
|
||||
|
@ -824,7 +824,7 @@ Blob_34099c_345868.bin;20172;0x34099c;1
|
||||
Blob_345d00_360130.bin;107568;0x345d00;1
|
||||
Blob_3602e8_36bdac.bin;47812;0x3602e8;1
|
||||
Blob_375cc4_386f60.bin;70300;0x375cc4;1
|
||||
Blob_3f0390_411528.bin;135576;0x3f0390;1
|
||||
Blob_3f0390_411400.bin;135280;0x3f0390;1
|
||||
Blob_415460_446d68.bin;203016;0x415460;1
|
||||
Blob_44f11c_45f45c.bin;66368;0x44f11c;1
|
||||
Blob_479400_754bb4.bin;2996148;0x479400;1
|
||||
|
30
include/data/save_file_data.h
Normal file
30
include/data/save_file_data.h
Normal file
@ -0,0 +1,30 @@
|
||||
#ifndef SAVE_FILE_DATA_H
|
||||
#define SAVE_FILE_DATA_H
|
||||
|
||||
#include "types.h"
|
||||
#include "structs/save_file.h"
|
||||
|
||||
extern const u8 sMetZeroSramCheck_Text[SRAM_TEXT_SIZE];
|
||||
extern const u8 sZERO_MISSION_010_Text[SRAM_TEXT_SIZE];
|
||||
extern const u8 sPlanetZebes_Text[SRAM_TEXT_SIZE];
|
||||
extern const u8 sSamusAran_Text[SRAM_TEXT_SIZE];
|
||||
|
||||
extern const u8 sJpnVer_Text[20];
|
||||
extern const u8 sEurVer_Text[20];
|
||||
extern const u8 sUsaVer_Text[20];
|
||||
|
||||
extern const struct FileScreenOptionsUnlocked sFileScreenOptionsUnlocked_Empty;
|
||||
|
||||
extern const u8 sMostRecentFileSave_Text[2][SRAM_TEXT_SIZE];
|
||||
extern const u8 sSoundModeSave_Text[2][SRAM_TEXT_SIZE];
|
||||
extern const u8 sLanguageSave_Text[2][SRAM_TEXT_SIZE];
|
||||
extern const u8 sTimeAttackSave_Text[SRAM_TEXT_SIZE * 2 + 8];
|
||||
|
||||
extern const struct ButtonAssignments sDefaultButtonAssignments;
|
||||
extern const struct InGameTimer sInGameTimer_Empty;
|
||||
extern const struct InGameTimer sBestCompletionTime_Empty;
|
||||
extern const u8 sUnk_411520[4];
|
||||
|
||||
extern const struct StartingInfo sStartingInfo;
|
||||
|
||||
#endif /* SAVE_FILE_DATA_H */
|
@ -3,13 +3,14 @@
|
||||
|
||||
#include "types.h"
|
||||
#include "temp_globals.h"
|
||||
#include "structs/save_file.h"
|
||||
|
||||
extern void* sEwramPointer;
|
||||
extern void* sBgPalramPointer;
|
||||
extern void* sObjPalramPointer;
|
||||
extern u32* sVisitedMinimapTilesPointer;
|
||||
extern union NonGameplayRAM* sNonGameplayRamPointer;
|
||||
extern void* sSramEwramPointer;
|
||||
extern struct Sram* sSramEwramPointer;
|
||||
extern void* sSramFlashPointer;
|
||||
|
||||
#endif /* SHORTCUT_POINTERS_H */
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
void DMATransfer(u8 channel, void *src, void *dst, u32 len, u8 bitSize);
|
||||
void init_sound(void);
|
||||
void read_sram(void);
|
||||
void SramRead_All(void);
|
||||
void start_new_demo(void);
|
||||
int softreset_main(void);
|
||||
int fileselect_main(void);
|
||||
|
@ -28,11 +28,8 @@ union TileData {
|
||||
|
||||
///
|
||||
|
||||
extern u8 unk_02038000[];
|
||||
|
||||
extern struct BG2Movement gBG2Movement;
|
||||
extern u16 gInterruptCode[0x100];
|
||||
extern u8 gSRAMCorruptFlag;
|
||||
|
||||
extern void *sp_sys;
|
||||
extern void *sp_irq;
|
||||
|
@ -8,7 +8,8 @@
|
||||
#define bomb_chain_type_to_flag(type) (1 << type)
|
||||
|
||||
#define check_samus_turning() ((pData->direction ^ (KEY_RIGHT | KEY_LEFT)) & gButtonInput)
|
||||
#define ARRAY_SIZE(a) (sizeof((a)) / sizeof((a)[0]))
|
||||
#define ARRAY_SIZE(a) ((int)(sizeof((a)) / sizeof((a)[0])))
|
||||
#define OFFSET_OF(type, element) ((int)&(((type *)0)->element))
|
||||
|
||||
#define RED(c) ((c) & COLOR_MASK)
|
||||
#define GREEN(c) (((c) & (COLOR_MASK << 5)) >> 5)
|
||||
|
63
include/save_file.h
Normal file
63
include/save_file.h
Normal file
@ -0,0 +1,63 @@
|
||||
#ifndef SAVE_FILE_H
|
||||
#define SAVE_FILE_H
|
||||
|
||||
#include "types.h"
|
||||
|
||||
void SramRead_All(void);
|
||||
void SramWrite_FileScreenOptionsUnlocked(void);
|
||||
void SramRead_FileScreenOptionsUnlocked(void);
|
||||
u32 SramCheck_FileScreenOptionsUnlocked(u8 fileNumber);
|
||||
void SramCopy_FileScreenOptionsUnlocked(void);
|
||||
|
||||
u32 SramProcessIntroSave(void);
|
||||
void SramWrite_HeaderAndGameInfo(void);
|
||||
|
||||
u32 SramProcessEndingSave(void);
|
||||
void SramCheckSetNewBestCompletionTime(void);
|
||||
void SramCopy_GameCompletion(void);
|
||||
u32 SramProcessEndingSave_Unused(void);
|
||||
|
||||
u32 SramSaveFile(void);
|
||||
void SramWrite_ToEwram(void);
|
||||
void SramRead_FromEwram(void);
|
||||
|
||||
void StringCopy(u8* dst, const u8* const src, u8 length);
|
||||
void SramTestFlash(void);
|
||||
void unk_743a4(void);
|
||||
void unk_74574(void);
|
||||
void unk_74624(u8 param_1);
|
||||
|
||||
void SramLoadFile(void);
|
||||
void SramLoadFile_Unused(void);
|
||||
|
||||
void SramWrite_Arrays(void);
|
||||
void SramRead_Arrays(void);
|
||||
|
||||
void SramWrite_MostRecentSaveFile(void);
|
||||
void SramRead_MostRecentSaveFile(void);
|
||||
|
||||
void SramWrite_SoundMode(void);
|
||||
void SramRead_SoundMode(void);
|
||||
|
||||
void SramWrite_Language(void);
|
||||
u32 SramRead_Language(void);
|
||||
|
||||
void SramWrite_TimeAttack(void);
|
||||
void SramRead_TimeAttack(void);
|
||||
|
||||
void SramWrite_ToEwram_Unused(void);
|
||||
void SramLoad_DemoRamValues(void);
|
||||
|
||||
u32 SramDeleteFile(u8 file);
|
||||
u32 SramCopyFile(u8 src, u8 dst);
|
||||
|
||||
void SramWrite_FileInfo(void);
|
||||
void unk_757c8(u8 file);
|
||||
void unk_7584c(u8 param_1);
|
||||
void Sram_CheckLoadSaveFile(void);
|
||||
void Sram_InitSaveFile(void);
|
||||
|
||||
void Sram_VblankEmpty(void);
|
||||
u32 unk_75c04(u8 param_1);
|
||||
|
||||
#endif /* SAVE_FILE_H */
|
@ -3,9 +3,9 @@
|
||||
|
||||
#include "types.h"
|
||||
|
||||
void SRAMWriteUnchecked(u8 *src, u8 *dest, u32 size);
|
||||
void SRAMWrite(u8 *src, u8 *dest, u32 size);
|
||||
u8 *SRAMCheck(u8 *src, u8 *dest, u32 size);
|
||||
u8 *SRAMWriteChecked(u8 *src, u8 *dest, u32 size);
|
||||
void SramWriteUnchecked(u8* src, u8* dest, u32 size);
|
||||
void SramWrite(u8* src, u8* dest, u32 size);
|
||||
u8* SramCheck(u8* src, u8* dest, u32 size);
|
||||
u8* SramWriteChecked(u8* src, u8* dest, u32 size);
|
||||
|
||||
#endif /* SRAM_SRAM_H */
|
||||
|
@ -16,6 +16,9 @@ struct FileScreenOptionsUnlocked {
|
||||
u16 galleryImages;
|
||||
u16 fusionGalleryImages;
|
||||
u8 soundTestAndOgMetroid;
|
||||
u8 unk_5;
|
||||
u8 unk_6;
|
||||
u8 unk_7;
|
||||
u32 timeAttack;
|
||||
};
|
||||
|
||||
@ -29,6 +32,7 @@ extern u8 gSramErrorFlag;
|
||||
extern u8 gDisablePause;
|
||||
extern u8 gDisableScrolling;
|
||||
extern u8 gShipLandingFlag;
|
||||
extern u8 gTimeAttackFlag;
|
||||
extern u16 gButtonInput;
|
||||
extern u16 gPreviousButtonInput;
|
||||
extern u16 gChangedInput;
|
||||
@ -49,4 +53,7 @@ extern i8 gGameModeSub2;
|
||||
extern i8 gGameModeSub3;
|
||||
extern u8 gSubGameModeStage;
|
||||
|
||||
#endif
|
||||
extern u8 gHasSaved;
|
||||
extern i8 gMostRecentSaveFile;
|
||||
|
||||
#endif
|
||||
|
@ -15,5 +15,6 @@ struct InGameTimer {
|
||||
extern u8 gMaxInGameTimerFlag;
|
||||
extern struct InGameTimer gInGameTimer;
|
||||
extern struct InGameTimer gInGameTimerAtBosses[MAX_AMOUNT_OF_IGT_AT_BOSSES];
|
||||
extern struct InGameTimer gBestCompletionTimes[12];
|
||||
|
||||
#endif
|
@ -138,6 +138,7 @@ struct SamusEcho {
|
||||
u8 timer;
|
||||
u8 position;
|
||||
u8 distance;
|
||||
u32 padding_4;
|
||||
u16 previous64XPositions[64];
|
||||
u16 previous64YPositions[64];
|
||||
u16 previousPositionCounter;
|
||||
|
234
include/structs/save_file.h
Normal file
234
include/structs/save_file.h
Normal file
@ -0,0 +1,234 @@
|
||||
#ifndef SAVE_FILE_STRUCT_H
|
||||
#define SAVE_FILE_STRUCT_H
|
||||
|
||||
#include "types.h"
|
||||
#include "structs/game_state.h"
|
||||
#include "structs/samus.h"
|
||||
#include "structs/scroll.h"
|
||||
#include "structs/connection.h"
|
||||
#include "structs/in_game_timer.h"
|
||||
#include "structs/time_attack.h"
|
||||
#include "structs/demo.h"
|
||||
|
||||
#define SRAM_TEXT_SIZE 16
|
||||
|
||||
#define SRAM_GET_CHECKSUM_SIZE(type, iteration, checksumType) (sizeof(type) / sizeof(checksumType) / iteration - 1)
|
||||
|
||||
struct StartingInfo {
|
||||
u8 startingArea;
|
||||
u8 unk_1;
|
||||
u8 unk_2;
|
||||
u8 unk_3;
|
||||
};
|
||||
|
||||
struct SaveFileInfo {
|
||||
u8 exists;
|
||||
u8 unk_1;
|
||||
u8 currentArea;
|
||||
u16 currentEnergy;
|
||||
u16 maxEnergy;
|
||||
u16 currentMissiles;
|
||||
u16 maxMissiles;
|
||||
u8 suitType;
|
||||
u8 igtHours;
|
||||
u8 igtMinutes;
|
||||
u8 igtSconds;
|
||||
u8 hasSaved;
|
||||
u8 completedGame;
|
||||
i8 introPlayed;
|
||||
i8 language;
|
||||
u8 difficulty;
|
||||
u8 timeAttack;
|
||||
};
|
||||
|
||||
struct SaveMusicInfo {
|
||||
u16 musicTrack;
|
||||
u16 unk_2;
|
||||
u8 unk_4;
|
||||
u8 priority;
|
||||
};
|
||||
|
||||
struct SaveFile {
|
||||
u8 ZERO_MISSION_010_Text[SRAM_TEXT_SIZE];
|
||||
i32 checksum;
|
||||
i32 notChecksum;
|
||||
|
||||
struct GameCompletion gameCompletion;
|
||||
u8 hasSaved;
|
||||
u8 currentArea;
|
||||
u8 currentRoom;
|
||||
u8 LastDoorUsed;
|
||||
u8 mapX;
|
||||
u8 mapY;
|
||||
|
||||
struct Camera camera;
|
||||
u16 bg0XPosition;
|
||||
u16 bg0YPosition;
|
||||
u16 bg1XPosition;
|
||||
u16 bg1YPosition;
|
||||
u16 bg2XPosition;
|
||||
u16 bg2YPosition;
|
||||
u16 bg3XPosition;
|
||||
u16 bg3YPosition;
|
||||
|
||||
u8 difficulty;
|
||||
u8 useMotherShipDoor;
|
||||
u8 timeAttack;
|
||||
|
||||
u8 numberOfNeverReformBlocksBroken[MAX_AMOUNT_OF_AREAS];
|
||||
u8 numberOfItemsCollected[MAX_AMOUNT_OF_AREAS];
|
||||
|
||||
u8 PlanetZebes_Text[SRAM_TEXT_SIZE];
|
||||
|
||||
struct SamusData samusData;
|
||||
struct WeaponInfo samusWeaponInfo;
|
||||
struct SamusEcho samusEcho;
|
||||
struct ScrewSpeedAnimation screwSpeedAnimation;
|
||||
struct Equipment equipment;
|
||||
struct HazardDamage hazardDamage;
|
||||
struct EnvironmentalEffect environmentalEffects[5];
|
||||
u16 preventMovementTimer;
|
||||
u8 disableDrawingSamusAndScrolling;
|
||||
|
||||
u16 alarmTimer;
|
||||
struct InGameTimer inGameTimer;
|
||||
struct InGameTimer bestCompletionTimes[12];
|
||||
struct InGameTimer inGameTimerAtBosses[MAX_AMOUNT_OF_IGT_AT_BOSSES];
|
||||
|
||||
struct SaveMusicInfo musicInfo;
|
||||
u32 unk_248;
|
||||
|
||||
u32 unk_24C[1];
|
||||
|
||||
u8 SamusAran_Text[SRAM_TEXT_SIZE];
|
||||
|
||||
u8 freespace[160];
|
||||
|
||||
u32 visitedMinimapTiles[MAX_AMOUNT_OF_AREAS][32];
|
||||
u8 neverReformBLocksBroken[2048];
|
||||
u8 itemsCollected[512];
|
||||
u32 hatchesOpened[MAX_AMOUNT_OF_AREAS][8];
|
||||
u32 eventsTriggered[8];
|
||||
};
|
||||
|
||||
struct SaveFile_Unused {
|
||||
u8 currentArea;
|
||||
u8 lastDoorUsed;
|
||||
|
||||
struct SamusData samusData;
|
||||
struct WeaponInfo samusWeaponInfo;
|
||||
struct SamusEcho samusEcho;
|
||||
struct ScrewSpeedAnimation screwSpeedAnimation;
|
||||
struct Equipment equipment;
|
||||
struct HazardDamage hazardDamage;
|
||||
struct EnvironmentalEffect environmentalEffects[5];
|
||||
|
||||
u32 visitedMinimapTiles[32];
|
||||
u32 hatchesOpened[8];
|
||||
u8 unk_238;
|
||||
u8 unk_239;
|
||||
u8 unk_23A;
|
||||
u8 unk_23B;
|
||||
u8 unk_23C;
|
||||
u8 unk_23D;
|
||||
u8 unk_23E;
|
||||
u8 unk_23F;
|
||||
u8 useMotherShipDoors;
|
||||
|
||||
u8 padding_241[60];
|
||||
};
|
||||
|
||||
struct SaveFileScreenOptions {
|
||||
u32 checksum;
|
||||
u32 notChecksum;
|
||||
|
||||
u8 unk_8;
|
||||
u8 unk_9;
|
||||
u16 counter;
|
||||
|
||||
u16 galleryImages;
|
||||
u8 soundTestAndOriginalMetroid;
|
||||
|
||||
u8 unk_F;
|
||||
u8 unk_10;
|
||||
u8 unk_11;
|
||||
u8 unk_12;
|
||||
u8 unk_13;
|
||||
u16 fusionGalleryImages;
|
||||
|
||||
u32 timeAttack;
|
||||
u8 ZeroMissionUSA_Text[20];
|
||||
|
||||
u8 padding_2A[16];
|
||||
};
|
||||
|
||||
struct SaveValue {
|
||||
u8 magicNumber;
|
||||
u8 counter;
|
||||
u16 checksum;
|
||||
u16 notChecksum;
|
||||
|
||||
u8 startText[SRAM_TEXT_SIZE];
|
||||
u8 value;
|
||||
u8 endText[SRAM_TEXT_SIZE];
|
||||
|
||||
u8 padding_27[24];
|
||||
};
|
||||
|
||||
struct SaveTimeAttack {
|
||||
u8 magicNumber;
|
||||
|
||||
u8 padding_1[16];
|
||||
|
||||
u16 checksum;
|
||||
u16 notChecksum;
|
||||
u8 counter;
|
||||
|
||||
u8 startText[SRAM_TEXT_SIZE];
|
||||
struct TimeAttackRecord value;
|
||||
u8 endText[SRAM_TEXT_SIZE];
|
||||
|
||||
u8 padding_68[152];
|
||||
};
|
||||
|
||||
struct Sram {
|
||||
struct SaveFileScreenOptions fileScreenOptions_fileA;
|
||||
struct SaveFileScreenOptions fileScreenOptions_fileB;
|
||||
|
||||
struct SaveFile files[3];
|
||||
struct SaveFile filesCopy[3];
|
||||
|
||||
struct SaveFileScreenOptions fileScreenOptions_fileC;
|
||||
|
||||
struct SaveValue mostRecentFileSave;
|
||||
struct SaveValue languagesSave[2];
|
||||
struct SaveValue soundModeSave;
|
||||
struct SaveTimeAttack timeAttackSaves[2];
|
||||
|
||||
u16 demoInputData[DEMO_MAX_DURATION];
|
||||
u16 demoInputDuration[DEMO_MAX_DURATION];
|
||||
|
||||
u8 padding_7480[896];
|
||||
|
||||
struct SaveFile_Unused file_unused;
|
||||
|
||||
u8 padding_7a80[1264];
|
||||
|
||||
u8 unk_7f70[16];
|
||||
u8 MetZeroSramCheck_Text[SRAM_TEXT_SIZE];
|
||||
|
||||
u8 padding_7f90[112];
|
||||
};
|
||||
|
||||
// Temp
|
||||
extern u32 gUnk_3000050[1];
|
||||
|
||||
extern u8 gSramOperationStage;
|
||||
extern u8 gSramCorruptFlag;
|
||||
extern struct Sram gSram;
|
||||
|
||||
extern u8 gUnk_3000c20;
|
||||
extern struct SaveFileInfo gSaveFilesInfo[3];
|
||||
extern struct StartingInfo gStartingInfo;
|
||||
|
||||
#endif /* SAVE_FILE_STRUCT_H */
|
@ -24,7 +24,7 @@ SECTIONS {
|
||||
. = 0x00037c00; gHatchesOpened = .;
|
||||
. = 0x00037e00; gEventsTriggered = .;
|
||||
. = 0x00037e20; gMinimapTilesGFX = .;
|
||||
. = 0x00038000; unk_02038000 = .;
|
||||
. = 0x00038000; gSram = .;
|
||||
} >ewram
|
||||
|
||||
iwram (NOLOAD) : ALIGN(4) {
|
||||
@ -45,6 +45,7 @@ SECTIONS {
|
||||
. = 0x0000002B; gSamusOnTopOfBackgrounds = .;
|
||||
. = 0x0000002C; gDifficulty = .;
|
||||
. = 0x0000002D; gUseMotherShipDoors = .;
|
||||
. = 0x0000002E; gTimeAttackFlag = .;
|
||||
. = 0x0000002F; gCutsceneToSkip = .;
|
||||
. = 0x00000030; gMusicTrackInfo = .;
|
||||
. = 0x00000038; gCurrentDemo = .;
|
||||
@ -153,7 +154,7 @@ SECTIONS {
|
||||
. = 0x00000c06; gCurrentOamScaling = .;
|
||||
. = 0x00000c08; gLastAreaNameVisited = .;
|
||||
. = 0x00000c0c; gCurrentMessage = .;
|
||||
. = 0x00000c1c; gSRAMCorruptFlag = .;
|
||||
. = 0x00000c1c; gSramCorruptFlag = .;
|
||||
. = 0x00000c1d; gIsLoadingFile = .;
|
||||
. = 0x00000c70; gMainGameMode = .;
|
||||
. = 0x00000c72; gGameModeSub1 = .;
|
||||
@ -526,7 +527,8 @@ SECTIONS {
|
||||
src/data/cutscenes/getting_fully_powered_suit_data.o(.rodata);
|
||||
src/data/cutscenes/before_charlie_data.o(.rodata);
|
||||
src/data/cutscenes/statue_opening_data.o(.rodata);
|
||||
/* 3f0390-411528 */
|
||||
/* 3f0390-411400 */
|
||||
src/data/save_file_data.o(.rodata);
|
||||
src/data/menus/erase_sram_data.o(.rodata);
|
||||
/* 415460-446d68 */
|
||||
src/data/menus/title_screen_data.o(.rodata);
|
||||
|
@ -77,4 +77,4 @@ const u32 sStatueOpeningRoomGFX[2357] = INCBIN_U32("data/cutscenes/StatueOpening
|
||||
const u32 sStatueOpeningRoomTileTable[318] = INCBIN_U32("data/cutscenes/StatueOpening/Room.tt");
|
||||
const u32 sStatueOpening_3effc8[242] = INCBIN_U32("data/cutscenes/StatueOpening/3effc8.tt");
|
||||
|
||||
const u8 sTempArray_3f0390[0x21198] = INCBIN_U8("data/Blob_3f0390_411528.bin");
|
||||
const u8 sTempArray_3f0390[0x21070] = INCBIN_U8("data/Blob_3f0390_411400.bin");
|
||||
|
72
src/data/save_file_data.c
Normal file
72
src/data/save_file_data.c
Normal file
@ -0,0 +1,72 @@
|
||||
#include "data/save_file_data.h"
|
||||
#include "gba.h"
|
||||
|
||||
#include "constants/connection.h"
|
||||
|
||||
const u8 sMetZeroSramCheck_Text[SRAM_TEXT_SIZE] = "MetZeroSramCheck";
|
||||
const u8 sZERO_MISSION_010_Text[SRAM_TEXT_SIZE] = "ZERO_MISSION_010";
|
||||
const u8 sPlanetZebes_Text[SRAM_TEXT_SIZE] = "Planet Zebes... ";
|
||||
const u8 sSamusAran_Text[SRAM_TEXT_SIZE] = " - Samus Aran - ";
|
||||
|
||||
const u8 sJpnVer_Text[20] = "ZeroMissionJPNver005";
|
||||
const u8 sEurVer_Text[20] = "ZeroMissionEURver005";
|
||||
const u8 sUsaVer_Text[20] = "ZeroMissionUSAver005";
|
||||
|
||||
const struct FileScreenOptionsUnlocked sFileScreenOptionsUnlocked_Empty = {
|
||||
.galleryImages = 0,
|
||||
.fusionGalleryImages = 0,
|
||||
.soundTestAndOgMetroid = 0,
|
||||
.unk_5 = 0,
|
||||
.unk_6 = 0,
|
||||
.unk_7 = 0,
|
||||
.timeAttack = 0
|
||||
};
|
||||
|
||||
const u8 sMostRecentFileSave_Text[2][SRAM_TEXT_SIZE] = {
|
||||
"SELECTSAVENUM_00",
|
||||
"ENDDATA_SEL_SAVE"
|
||||
};
|
||||
|
||||
const u8 sSoundModeSave_Text[2][SRAM_TEXT_SIZE] = {
|
||||
"_SOUNDMODE_SAVE_",
|
||||
"SoundModeSAVEEND"
|
||||
};
|
||||
|
||||
const u8 sLanguageSave_Text[2][SRAM_TEXT_SIZE] = {
|
||||
"_SELECT_LANGUAGE",
|
||||
"ENDKEY_LANGUAGE_"
|
||||
};
|
||||
|
||||
const u8 sTimeAttackSave_Text[SRAM_TEXT_SIZE * 2 + 8] = "SUKPIFZAILU25976_StartKey_198129ATRUNEND";
|
||||
|
||||
const struct ButtonAssignments sDefaultButtonAssignments = {
|
||||
.armMissiles = KEY_R,
|
||||
.diagonalAim = KEY_L,
|
||||
.pause = KEY_START,
|
||||
.swapMissiles = KEY_SELECT
|
||||
};
|
||||
|
||||
const struct InGameTimer sInGameTimer_Empty = {
|
||||
.hours = 0,
|
||||
.minutes = 0,
|
||||
.seconds = 0,
|
||||
.frames = 0
|
||||
};
|
||||
|
||||
const struct InGameTimer sBestCompletionTime_Empty = {
|
||||
.hours = UCHAR_MAX,
|
||||
.minutes = UCHAR_MAX,
|
||||
.seconds = UCHAR_MAX,
|
||||
.frames = UCHAR_MAX
|
||||
};
|
||||
|
||||
const u8 sUnk_411520[4] = {
|
||||
8, 8, 0, 0
|
||||
};
|
||||
|
||||
const struct StartingInfo sStartingInfo = {
|
||||
.startingArea = AREA_CRATERIA,
|
||||
.unk_1 = 5,
|
||||
.unk_2 = 0,
|
||||
.unk_3 = 0
|
||||
};
|
@ -15,7 +15,7 @@ u32* sVisitedMinimapTilesPointer = gVisitedMinimapTiles;
|
||||
FORCE_RODATA
|
||||
union NonGameplayRAM* sNonGameplayRamPointer = &gNonGameplayRAM;
|
||||
FORCE_RODATA
|
||||
void* sSramEwramPointer = EWRAM_BASE + 0x38000;
|
||||
struct Sram* sSramEwramPointer = EWRAM_BASE + 0x38000;
|
||||
FORCE_RODATA
|
||||
void* sSramFlashPointer = SRAM_BASE;
|
||||
|
||||
|
@ -4,11 +4,12 @@
|
||||
#include "memory.h"
|
||||
#include "sram/sram.h"
|
||||
#include "types.h"
|
||||
#include "structs/save_file.h"
|
||||
|
||||
void EraseSRAM(void)
|
||||
void EraseSram(void)
|
||||
{
|
||||
BitFill(3, 0xffff, &unk_02038000, SRAM_SIZE, 16);
|
||||
if (gSRAMCorruptFlag == 0) {
|
||||
SRAMWriteChecked(unk_02038000, SRAM_BASE, SRAM_SIZE);
|
||||
BitFill(3, 0xffff, &gSram, SRAM_SIZE, 16);
|
||||
if (!gSramCorruptFlag) {
|
||||
SramWriteChecked((u8*)&gSram, SRAM_BASE, SRAM_SIZE);
|
||||
}
|
||||
}
|
||||
|
@ -23,7 +23,7 @@ void InitializeGame(void)
|
||||
ClearGfxRam();
|
||||
LoadInterruptCode();
|
||||
CallbackSetVBlank(SoftresetVBlankCallback);
|
||||
read_sram();
|
||||
SramRead_All();
|
||||
init_sound();
|
||||
|
||||
write16(REG_IE, IF_VBLANK | IF_DMA2 | IF_GAMEPAK);
|
||||
|
@ -110,7 +110,7 @@ u32 EraseSramSubroutine(void)
|
||||
|
||||
case 7:
|
||||
unk_33dc();
|
||||
EraseSRAM();
|
||||
EraseSram();
|
||||
leaving = TRUE;
|
||||
}
|
||||
|
||||
@ -383,7 +383,7 @@ void EraseSramResetOAM(void)
|
||||
ERASE_SRAM_DATA.currentOption = ERASE_SRAM_OPTION_QUESTION_NO;
|
||||
ERASE_SRAM_DATA.nextOption = ERASE_SRAM_OPTION_CHANGED_FLAG | ERASE_SRAM_OPTION_QUESTION_NO;
|
||||
|
||||
for (i = 0; i < (int)ARRAY_SIZE(ERASE_SRAM_DATA.oam); i++)
|
||||
for (i = 0; i < ARRAY_SIZE(ERASE_SRAM_DATA.oam); i++)
|
||||
{
|
||||
ERASE_SRAM_DATA.oam[i] = *(struct MenuOamData*)0x840d048;
|
||||
// FIXME *pOam = sEraseSramMenuOamData_Empty;
|
||||
|
@ -446,9 +446,9 @@ void GameOverUpdateLettersPalette(void)
|
||||
|
||||
row = GAME_OVER_DATA.dynamicPalette.currentPaletteRow;
|
||||
i = 0;
|
||||
while (i < (int)ARRAY_SIZE(GAME_OVER_DATA.dynamicPalette.palette))
|
||||
while (i < ARRAY_SIZE(GAME_OVER_DATA.dynamicPalette.palette))
|
||||
{
|
||||
if (row >= (int)ARRAY_SIZE(GAME_OVER_DATA.dynamicPalette.palette))
|
||||
if (row >= ARRAY_SIZE(GAME_OVER_DATA.dynamicPalette.palette))
|
||||
row = 0;
|
||||
|
||||
GAME_OVER_DATA.dynamicPalette.palette[i] = src[row];
|
||||
|
@ -93,7 +93,7 @@ void TitleScreenResetOAM(void)
|
||||
pOam = TITLE_SCREEN_DATA.oam;
|
||||
i = 0;
|
||||
|
||||
while (i < (int)ARRAY_SIZE(TITLE_SCREEN_DATA.oam))
|
||||
while (i < ARRAY_SIZE(TITLE_SCREEN_DATA.oam))
|
||||
{
|
||||
*pOam = *(struct MenuOamData*)0x840d028;
|
||||
// FIXME *pOam = sMenuOamData_Empty;
|
||||
|
1557
src/save_file.c
Normal file
1557
src/save_file.c
Normal file
File diff suppressed because it is too large
Load Diff
@ -44,7 +44,7 @@ void Softreset(void)
|
||||
ClearGfxRam();
|
||||
LoadInterruptCode();
|
||||
CallbackSetVBlank(SoftresetVBlankCallback);
|
||||
read_sram();
|
||||
SramRead_All();
|
||||
init_sound();
|
||||
|
||||
write16(REG_IE, IF_VBLANK | IF_DMA2 | IF_GAMEPAK);
|
||||
|
@ -410,7 +410,7 @@ void SaveYesNoCursor(void)
|
||||
break;
|
||||
|
||||
case SAVE_YES_NO_CURSOR_POSE_SAVING:
|
||||
if (save_file()) // Undefined
|
||||
if (SramSaveFile())
|
||||
gCurrentSprite.status = 0x0;
|
||||
break;
|
||||
}
|
||||
|
@ -3,14 +3,14 @@
|
||||
#include "gba.h"
|
||||
#include "io.h"
|
||||
|
||||
static void SRAMWriteUncheckedInternal(u8 *src, u8 *dest, u32 size)
|
||||
static void SramWriteUncheckedInternal(u8 *src, u8 *dest, u32 size)
|
||||
{
|
||||
while (size-- != 0) {
|
||||
*dest++ = *src++;
|
||||
}
|
||||
}
|
||||
|
||||
void SRAMWriteUnchecked(u8 *src, u8 *dest, u32 size)
|
||||
void SramWriteUnchecked(u8 *src, u8 *dest, u32 size)
|
||||
{
|
||||
u16 code[0x40];
|
||||
u16 *code_ptr;
|
||||
@ -22,12 +22,12 @@ void SRAMWriteUnchecked(u8 *src, u8 *dest, u32 size)
|
||||
REG_WAITCNT,
|
||||
read16(REG_WAITCNT) & ~WAIT_SRAM_CYCLES_MASK | WAIT_SRAM_8CYCLES);
|
||||
|
||||
func_ptr = (u16 *)SRAMWriteUncheckedInternal;
|
||||
func_ptr = (u16 *)SramWriteUncheckedInternal;
|
||||
func_ptr = (u16 *)((u32)func_ptr & ~1);
|
||||
code_ptr = code;
|
||||
|
||||
for (csize =
|
||||
((u32)SRAMWriteUnchecked - (u32)SRAMWriteUncheckedInternal)
|
||||
((u32)SramWriteUnchecked - (u32)SramWriteUncheckedInternal)
|
||||
/ 2;
|
||||
csize > 0;
|
||||
--csize) {
|
||||
@ -38,7 +38,7 @@ void SRAMWriteUnchecked(u8 *src, u8 *dest, u32 size)
|
||||
func(src, dest, size);
|
||||
}
|
||||
|
||||
void SRAMWrite(u8 *src, u8 *dest, u32 size)
|
||||
void SramWrite(u8 *src, u8 *dest, u32 size)
|
||||
{
|
||||
u16 w = read16(REG_WAITCNT) & ~WAIT_SRAM_CYCLES_MASK | WAIT_SRAM_8CYCLES;
|
||||
write16(REG_WAITCNT, w);
|
||||
@ -59,7 +59,7 @@ static u8* SRAMCheckInternal(u8 *src, u8 *dest, u32 size)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
u8* SRAMCheck(u8 *src, u8 *dest, u32 size)
|
||||
u8* SramCheck(u8 *src, u8 *dest, u32 size)
|
||||
{
|
||||
u16 code[0x60];
|
||||
u16 *code_ptr;
|
||||
@ -75,7 +75,7 @@ u8* SRAMCheck(u8 *src, u8 *dest, u32 size)
|
||||
func_ptr = (u16 *)((u32)func_ptr & ~1);
|
||||
code_ptr = code;
|
||||
|
||||
for (csize = ((u32)SRAMCheck - (u32)SRAMCheckInternal) / 2; csize > 0;
|
||||
for (csize = ((u32)SramCheck - (u32)SRAMCheckInternal) / 2; csize > 0;
|
||||
--csize) {
|
||||
*code_ptr++ = *func_ptr++;
|
||||
}
|
||||
@ -84,14 +84,14 @@ u8* SRAMCheck(u8 *src, u8 *dest, u32 size)
|
||||
return func(src, dest, size);
|
||||
}
|
||||
|
||||
u8* SRAMWriteChecked(u8 *src, u8 *dest, u32 size)
|
||||
u8* SramWriteChecked(u8 *src, u8 *dest, u32 size)
|
||||
{
|
||||
u8 *diff;
|
||||
u8 i;
|
||||
|
||||
for (i = 0; i < 3; ++i) {
|
||||
SRAMWrite(src, dest, size);
|
||||
diff = SRAMCheck(src, dest, size);
|
||||
SramWrite(src, dest, size);
|
||||
diff = SramCheck(src, dest, size);
|
||||
if (!diff) {
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user