mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2025-01-05 15:11:16 +00:00
save_file_erase_current_backup_save
and more (#189)
This commit is contained in:
parent
6c0757c908
commit
8e9b2c270c
9 changed files with 131 additions and 30 deletions
|
@ -52,6 +52,7 @@ in_files = [
|
|||
"src/game/object_list_processor.h",
|
||||
"src/game/behavior_actions.h",
|
||||
"src/game/mario_misc.h",
|
||||
"src/pc/utils/misc.h",
|
||||
"src/game/level_update.h"
|
||||
]
|
||||
|
||||
|
@ -59,11 +60,12 @@ override_allowed_functions = {
|
|||
"src/audio/external.h": [ " play_", "fade", "current_background", "stop_" ],
|
||||
"src/game/rumble_init.c": [ "queue_rumble_", "reset_rumble_timers" ],
|
||||
"src/pc/djui/djui_popup.h" : [ "create" ],
|
||||
"src/game/save_file.h": [ "save_file_get_", "save_file_set_flags", "save_file_clear_flags", "save_file_reload", "save_file_set_star_flags" ],
|
||||
"src/game/save_file.h": [ "save_file_get_", "save_file_set_flags", "save_file_clear_flags", "save_file_reload", "save_file_erase_current_backup_save", "save_file_set_star_flags" ],
|
||||
"src/pc/lua/utils/smlua_model_utils.h": [ "smlua_model_util_get_id" ],
|
||||
"src/game/object_list_processor.h": [ "set_object_respawn_info_bits" ],
|
||||
"src/game/mario_misc.h": [ "bhv_toad.*", "bhv_unlock_door.*" ],
|
||||
"src/game/level_update.h": [ "level_trigger_warp" ],
|
||||
"src/pc/utils/misc.h": [ "update_all_mario_stars"],
|
||||
}
|
||||
|
||||
override_disallowed_functions = {
|
||||
|
|
|
@ -5211,6 +5211,11 @@ function vec3f_set_dist_and_angle(from, to, dist, pitch, yaw)
|
|||
-- ...
|
||||
end
|
||||
|
||||
--- @return nil
|
||||
function update_all_mario_stars()
|
||||
-- ...
|
||||
end
|
||||
|
||||
--- @param courseNum integer
|
||||
--- @param actNum integer
|
||||
--- @param levelNum integer
|
||||
|
@ -7271,6 +7276,11 @@ function save_file_clear_flags(flags)
|
|||
-- ...
|
||||
end
|
||||
|
||||
--- @return nil
|
||||
function save_file_erase_current_backup_save()
|
||||
-- ...
|
||||
end
|
||||
|
||||
--- @param capPos Vec3s
|
||||
--- @return integer
|
||||
function save_file_get_cap_pos(capPos)
|
||||
|
@ -7322,8 +7332,9 @@ function save_file_get_total_star_count(fileIndex, minCourse, maxCourse)
|
|||
-- ...
|
||||
end
|
||||
|
||||
--- @param load_all integer
|
||||
--- @return nil
|
||||
function save_file_reload()
|
||||
function save_file_reload(load_all)
|
||||
-- ...
|
||||
end
|
||||
|
||||
|
|
|
@ -7095,6 +7095,30 @@
|
|||
|
||||
<br />
|
||||
|
||||
---
|
||||
# functions from misc.h
|
||||
|
||||
<br />
|
||||
|
||||
|
||||
## [update_all_mario_stars](#update_all_mario_stars)
|
||||
|
||||
### Lua Example
|
||||
`update_all_mario_stars()`
|
||||
|
||||
### Parameters
|
||||
- None
|
||||
|
||||
### Returns
|
||||
- None
|
||||
|
||||
### C Prototype
|
||||
`void update_all_mario_stars(void);`
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
---
|
||||
# functions from network_player.h
|
||||
|
||||
|
|
|
@ -5364,6 +5364,24 @@
|
|||
|
||||
<br />
|
||||
|
||||
## [save_file_erase_current_backup_save](#save_file_erase_current_backup_save)
|
||||
|
||||
### Lua Example
|
||||
`save_file_erase_current_backup_save()`
|
||||
|
||||
### Parameters
|
||||
- None
|
||||
|
||||
### Returns
|
||||
- None
|
||||
|
||||
### C Prototype
|
||||
`void save_file_erase_current_backup_save(void);`
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [save_file_get_cap_pos](#save_file_get_cap_pos)
|
||||
|
||||
### Lua Example
|
||||
|
@ -5528,16 +5546,18 @@
|
|||
## [save_file_reload](#save_file_reload)
|
||||
|
||||
### Lua Example
|
||||
`save_file_reload()`
|
||||
`save_file_reload(load_all)`
|
||||
|
||||
### Parameters
|
||||
- None
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| load_all | `integer` |
|
||||
|
||||
### Returns
|
||||
- None
|
||||
|
||||
### C Prototype
|
||||
`void save_file_reload(void);`
|
||||
`void save_file_reload(u8 load_all);`
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
|
|
|
@ -1012,6 +1012,11 @@
|
|||
|
||||
<br />
|
||||
|
||||
- misc.h
|
||||
- [update_all_mario_stars](functions-3.md#update_all_mario_stars)
|
||||
|
||||
<br />
|
||||
|
||||
- network_player.h
|
||||
- [get_network_player_from_area](functions-3.md#get_network_player_from_area)
|
||||
- [get_network_player_from_level](functions-3.md#get_network_player_from_level)
|
||||
|
@ -1354,6 +1359,7 @@
|
|||
|
||||
- save_file.h
|
||||
- [save_file_clear_flags](functions-4.md#save_file_clear_flags)
|
||||
- [save_file_erase_current_backup_save](functions-4.md#save_file_erase_current_backup_save)
|
||||
- [save_file_get_cap_pos](functions-4.md#save_file_get_cap_pos)
|
||||
- [save_file_get_course_coin_score](functions-4.md#save_file_get_course_coin_score)
|
||||
- [save_file_get_course_star_count](functions-4.md#save_file_get_course_star_count)
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
#include "pc/ini.h"
|
||||
#include "pc/network/network.h"
|
||||
#include "pc/lua/utils/smlua_level_utils.h"
|
||||
#include "pc/utils/misc.h"
|
||||
|
||||
#ifndef bcopy
|
||||
#define bcopy(b1,b2,len) (memmove((b2), (b1), (len)), (void) 0)
|
||||
|
@ -200,7 +201,7 @@ static u16 calc_checksum(u8 *data, s32 size) {
|
|||
/**
|
||||
* Verify the signature at the end of the block to check if the data is valid.
|
||||
*/
|
||||
static s32 verify_save_block_signature(void *buffer, s32 size, u16 magic) {
|
||||
UNUSED static s32 verify_save_block_signature(void *buffer, s32 size, u16 magic) {
|
||||
struct SaveBlockSignature *sig = (struct SaveBlockSignature *) ((size - 4) + (u8 *) buffer);
|
||||
|
||||
if (sig->magic != magic) {
|
||||
|
@ -225,7 +226,7 @@ static void add_save_block_signature(void *buffer, s32 size, u16 magic) {
|
|||
/**
|
||||
* Copy main menu data from one backup slot to the other slot.
|
||||
*/
|
||||
static void restore_main_menu_data(s32 srcSlot) {
|
||||
UNUSED static void restore_main_menu_data(s32 srcSlot) {
|
||||
s32 destSlot = srcSlot ^ 1;
|
||||
|
||||
// Compute checksum on source data
|
||||
|
@ -253,7 +254,7 @@ static void save_main_menu_data(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static void wipe_main_menu_data(void) {
|
||||
UNUSED static void wipe_main_menu_data(void) {
|
||||
bzero(&gSaveBuffer.menuData[0], sizeof(gSaveBuffer.menuData[0]));
|
||||
|
||||
// Set score ages for all courses to 3, 2, 1, and 0, respectively.
|
||||
|
@ -311,7 +312,7 @@ static void touch_high_score_ages(s32 fileIndex) {
|
|||
/**
|
||||
* Copy save file data from one backup slot to the other slot.
|
||||
*/
|
||||
static void restore_save_file_data(s32 fileIndex, s32 srcSlot) {
|
||||
UNUSED static void restore_save_file_data(s32 fileIndex, s32 srcSlot) {
|
||||
s32 destSlot = srcSlot ^ 1;
|
||||
|
||||
// Compute checksum on source data
|
||||
|
@ -392,6 +393,28 @@ void save_file_erase(s32 fileIndex) {
|
|||
save_file_do_save(fileIndex, TRUE);
|
||||
}
|
||||
|
||||
void save_file_reload(u8 load_all) {
|
||||
gSaveFileModified = TRUE;
|
||||
update_all_mario_stars();
|
||||
|
||||
if (load_all == TRUE) {
|
||||
save_file_load_all(TRUE);
|
||||
save_file_do_save(gCurrSaveFileNum-1, TRUE);
|
||||
update_all_mario_stars();
|
||||
}
|
||||
}
|
||||
|
||||
void save_file_erase_current_backup_save(void) {
|
||||
if (network_is_server()) {
|
||||
bzero(&gSaveBuffer.files[gCurrSaveFileNum-1][1], sizeof(gSaveBuffer.files[gCurrSaveFileNum-1][1]));
|
||||
|
||||
save_file_reload(FALSE);
|
||||
|
||||
save_file_do_save(gCurrSaveFileNum-1, TRUE);
|
||||
network_send_save_file(gCurrSaveFileNum-1);
|
||||
}
|
||||
}
|
||||
|
||||
//! Needs to be s32 to match on -O2, despite no return value.
|
||||
BAD_RETURN(s32) save_file_copy(s32 srcFileIndex, s32 destFileIndex) {
|
||||
if (srcFileIndex < 0 || srcFileIndex >= NUM_SAVE_FILES || destFileIndex < 0 || destFileIndex >= NUM_SAVE_FILES)
|
||||
|
@ -457,23 +480,6 @@ void save_file_load_all(UNUSED u8 reload) {
|
|||
stub_save_file_1();
|
||||
}
|
||||
|
||||
/**
|
||||
* Reload the current save file from its backup copy, which is effectively a
|
||||
* a cached copy of what has been written to EEPROM.
|
||||
* This is used after getting a game over.
|
||||
*/
|
||||
void save_file_reload(void) {
|
||||
// Copy save file data from backup
|
||||
/*bcopy(&gSaveBuffer.files[gCurrSaveFileNum - 1][1], &gSaveBuffer.files[gCurrSaveFileNum - 1][0],
|
||||
sizeof(gSaveBuffer.files[gCurrSaveFileNum - 1][0]));
|
||||
|
||||
// Copy main menu data from backup
|
||||
bcopy(&gSaveBuffer.menuData[1], &gSaveBuffer.menuData[0], sizeof(gSaveBuffer.menuData[0]));*/
|
||||
|
||||
gMainMenuDataModified = FALSE;
|
||||
gSaveFileModified = FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the current save file after collecting a star or a key.
|
||||
* If coin score is greater than the current high score, update it.
|
||||
|
|
|
@ -131,9 +131,10 @@ extern s8 gSaveFileModified;
|
|||
s8 get_level_course_num(s16 levelNum);
|
||||
void save_file_do_save(s32 fileIndex, s8 forceSave);
|
||||
void save_file_erase(s32 fileIndex);
|
||||
void save_file_erase_current_backup_save(void);
|
||||
BAD_RETURN(s32) save_file_copy(s32 srcFileIndex, s32 destFileIndex);
|
||||
void save_file_load_all(u8 reload);
|
||||
void save_file_reload(void);
|
||||
void save_file_reload(u8 load_all);
|
||||
void save_file_collect_star_or_key(s16 coinScore, s16 starIndex, u8 fromNetwork);
|
||||
s32 save_file_exists(s32 fileIndex);
|
||||
u32 save_file_get_max_coin_score(s32 courseIndex);
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
#include "src/game/object_list_processor.h"
|
||||
#include "src/game/behavior_actions.h"
|
||||
#include "src/game/mario_misc.h"
|
||||
#include "src/pc/utils/misc.h"
|
||||
#include "src/game/level_update.h"
|
||||
|
||||
|
||||
|
@ -11717,6 +11718,19 @@ int smlua_func_vec3s_to_vec3f(lua_State* L) {
|
|||
}
|
||||
*/
|
||||
|
||||
////////////
|
||||
// misc.h //
|
||||
////////////
|
||||
|
||||
int smlua_func_update_all_mario_stars(UNUSED lua_State* L) {
|
||||
if(!smlua_functions_valid_param_count(L, 0)) { return 0; }
|
||||
|
||||
|
||||
update_all_mario_stars();
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//////////////////////
|
||||
// network_player.h //
|
||||
//////////////////////
|
||||
|
@ -16154,6 +16168,15 @@ int smlua_func_save_file_clear_flags(lua_State* L) {
|
|||
return 1;
|
||||
}
|
||||
|
||||
int smlua_func_save_file_erase_current_backup_save(UNUSED lua_State* L) {
|
||||
if(!smlua_functions_valid_param_count(L, 0)) { return 0; }
|
||||
|
||||
|
||||
save_file_erase_current_backup_save();
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int smlua_func_save_file_get_cap_pos(lua_State* L) {
|
||||
if(!smlua_functions_valid_param_count(L, 1)) { return 0; }
|
||||
|
||||
|
@ -16256,11 +16279,13 @@ int smlua_func_save_file_get_total_star_count(lua_State* L) {
|
|||
return 1;
|
||||
}
|
||||
|
||||
int smlua_func_save_file_reload(UNUSED lua_State* L) {
|
||||
if(!smlua_functions_valid_param_count(L, 0)) { return 0; }
|
||||
int smlua_func_save_file_reload(lua_State* L) {
|
||||
if(!smlua_functions_valid_param_count(L, 1)) { return 0; }
|
||||
|
||||
u8 load_all = smlua_to_integer(L, 1);
|
||||
if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter 1 for function 'save_file_reload'"); return 0; }
|
||||
|
||||
save_file_reload();
|
||||
save_file_reload(load_all);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
@ -19177,6 +19202,9 @@ void smlua_bind_functions_autogen(void) {
|
|||
//smlua_bind_function(L, "vec3s_sum", smlua_func_vec3s_sum); <--- UNIMPLEMENTED
|
||||
//smlua_bind_function(L, "vec3s_to_vec3f", smlua_func_vec3s_to_vec3f); <--- UNIMPLEMENTED
|
||||
|
||||
// misc.h
|
||||
smlua_bind_function(L, "update_all_mario_stars", smlua_func_update_all_mario_stars);
|
||||
|
||||
// network_player.h
|
||||
smlua_bind_function(L, "get_network_player_from_area", smlua_func_get_network_player_from_area);
|
||||
smlua_bind_function(L, "get_network_player_from_level", smlua_func_get_network_player_from_level);
|
||||
|
@ -19519,6 +19547,7 @@ void smlua_bind_functions_autogen(void) {
|
|||
|
||||
// save_file.h
|
||||
smlua_bind_function(L, "save_file_clear_flags", smlua_func_save_file_clear_flags);
|
||||
smlua_bind_function(L, "save_file_erase_current_backup_save", smlua_func_save_file_erase_current_backup_save);
|
||||
smlua_bind_function(L, "save_file_get_cap_pos", smlua_func_save_file_get_cap_pos);
|
||||
smlua_bind_function(L, "save_file_get_course_coin_score", smlua_func_save_file_get_course_coin_score);
|
||||
smlua_bind_function(L, "save_file_get_course_star_count", smlua_func_save_file_get_course_star_count);
|
||||
|
|
|
@ -529,6 +529,8 @@ void network_shutdown(bool sendLeaving, bool exiting, bool popup) {
|
|||
|
||||
extern void save_file_load_all(UNUSED u8 reload);
|
||||
save_file_load_all(TRUE);
|
||||
extern void save_file_set_using_backup_slot(bool usingBackupSlot);
|
||||
save_file_set_using_backup_slot(false);
|
||||
|
||||
extern s16 gMenuMode;
|
||||
gMenuMode = -1;
|
||||
|
|
Loading…
Reference in a new issue