summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcoco875 <59367621+coco875@users.noreply.github.com>2025-01-30 16:31:14 +0100
committerGitHub <noreply@github.com>2025-01-30 08:31:14 -0700
commitc6f72a287f3a689bea84f06ab0610fb42999695c (patch)
treee3ac503a7a13280eaf1cac327f8cc60f108b46a7
parent8b67f555ffa5533e5a823870aec07f86c8f16941 (diff)
finish fix ghost (#178)
Co-authored-by: MegaMech <MegaMech@users.noreply.github.com>
-rw-r--r--src/save.c12
-rw-r--r--src/save.h2
-rw-r--r--src/stubs.c2
3 files changed, 9 insertions, 7 deletions
diff --git a/src/save.c b/src/save.c
index fd5440f50..a73bd8f2f 100644
--- a/src/save.c
+++ b/src/save.c
@@ -741,12 +741,12 @@ s32 func_800B6088(s32 arg0) {
(u8*) temp_v1);
}
-u8 func_800B60E8(s32 page) {
+u8 func_800B60E8(s32 page, u8* data) {
s32 i;
u32 checksum = 0;
u8* addr;
- for (i = 0, addr = (u8*) &((u8*) sReplayGhostDecompressed)[page * 256]; i < 256; i++) {
+ for (i = 0, addr = (u8*) &(data)[page * 256]; i < 256; i++) {
checksum += (*addr++ * (page + 1) + i);
}
return checksum;
@@ -787,7 +787,7 @@ s32 func_800B6178(s32 arg0) {
temp_s3->unk_00 = D_80162DFC;
temp_s3->characterId = (u8) D_80162DE0;
for (var_s0 = 0; var_s0 < 0x3C; var_s0++) {
- temp_s3->unk_07[var_s0] = func_800B60E8(var_s0);
+ temp_s3->unk_07[var_s0] = func_800B60E8(var_s0, (u8*) sReplayGhostBuffer);
}
var_v0 = func_800B6088(arg0);
}
@@ -843,7 +843,7 @@ s32 func_800B63F0(s32 arg0) {
phi_s1 = (u8*) &D_8018EE10[arg0];
while (temp_s0 < 0x3C) {
- if (phi_s1[7] != func_800B60E8(temp_s0)) {
+ if (phi_s1[7] != func_800B60E8(temp_s0, (u8*) sReplayGhostBuffer)) {
phi_s3 = 1;
break;
}
@@ -875,7 +875,7 @@ s32 func_800B64EC(s32 arg0) {
phi_s1 = (u8 *) &D_8018EE10[arg0]; temp_s0 = 0; while (1) {
// clang-format on
- if (phi_s1[7] != func_800B60E8(temp_s0)) {
+ if (phi_s1[7] != func_800B60E8(temp_s0, (u8*) sReplayGhostDecompressed)) {
D_8018EE10[arg0].ghostDataSaved = 0;
return -2;
}
@@ -912,7 +912,7 @@ s32 func_800B65F4(s32 arg0, s32 arg1) {
if (writeStatus == 0) {
temp_s3 = &((struct_8018EE10_entry*) gSomeDLBuffer)[arg0];
for (i = 0; i < 0x3C; i++) {
- if (temp_s3->unk_07[i] != func_800B60E8(i)) {
+ if (temp_s3->unk_07[i] != func_800B60E8(i, (u8*) sReplayGhostBuffer)) {
temp_s3->ghostDataSaved = 0;
return -2;
}
diff --git a/src/save.h b/src/save.h
index c685fb854..3c399329d 100644
--- a/src/save.h
+++ b/src/save.h
@@ -73,7 +73,7 @@ s32 controller_pak_2_status(void);
s32 func_800B5F30(void);
s32 func_800B6014(void);
s32 func_800B6088(s32);
-u8 func_800B60E8(s32);
+u8 func_800B60E8(s32, u8*);
s32 func_800B6178(s32);
s32 func_800B64EC(s32);
s32 func_800B65F4(s32, s32);
diff --git a/src/stubs.c b/src/stubs.c
index fad163043..7d4e39f1c 100644
--- a/src/stubs.c
+++ b/src/stubs.c
@@ -120,6 +120,8 @@ s32 osPfsFileState(OSPfs* pfs, s32 file_no, OSPfsState* state) {
}
s32 osPfsFreeBlocks(OSPfs* pfs, s32* bytes_not_used) {
+ *bytes_not_used = 0x1000;
+ return PFS_NO_ERROR;
}
s32 osPfsFindFile(OSPfs* pfs, u16 company_code, u32 game_code, u8* game_name, u8* ext_name, s32* file_no) {