mirror of
https://github.com/N64Recomp/N64ModernRuntime.git
synced 2026-05-11 11:22:05 +00:00
Made save type be a per-game setting
This commit is contained in:
parent
1662d6de16
commit
4c756c4ffb
2 changed files with 21 additions and 22 deletions
|
|
@ -9,12 +9,22 @@
|
||||||
#include <ultramodern/ultramodern.hpp>
|
#include <ultramodern/ultramodern.hpp>
|
||||||
|
|
||||||
namespace recomp {
|
namespace recomp {
|
||||||
|
enum class SaveType {
|
||||||
|
None,
|
||||||
|
Eep4k,
|
||||||
|
Eep16k,
|
||||||
|
Sram,
|
||||||
|
Flashram,
|
||||||
|
AllowAll, // Allows all save types to work and reports eeprom size as 16kbit.
|
||||||
|
};
|
||||||
|
|
||||||
struct GameEntry {
|
struct GameEntry {
|
||||||
uint64_t rom_hash;
|
uint64_t rom_hash;
|
||||||
std::string internal_name;
|
std::string internal_name;
|
||||||
std::u8string game_id;
|
std::u8string game_id;
|
||||||
std::string mod_game_id;
|
std::string mod_game_id;
|
||||||
std::span<const char> cache_data;
|
std::span<const char> cache_data;
|
||||||
|
SaveType save_type = SaveType::None;
|
||||||
bool is_enabled;
|
bool is_enabled;
|
||||||
|
|
||||||
gpr entrypoint_address;
|
gpr entrypoint_address;
|
||||||
|
|
@ -65,15 +75,6 @@ namespace recomp {
|
||||||
void do_rom_pio(uint8_t* rdram, gpr ram_address, uint32_t physical_addr);
|
void do_rom_pio(uint8_t* rdram, gpr ram_address, uint32_t physical_addr);
|
||||||
const Version& get_project_version();
|
const Version& get_project_version();
|
||||||
|
|
||||||
enum class SaveType {
|
|
||||||
None,
|
|
||||||
Eep4k,
|
|
||||||
Eep16k,
|
|
||||||
Sram,
|
|
||||||
Flashram,
|
|
||||||
AllowAll, // Allows all save types to work and reports eeprom size as 16kbit.
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The following arguments contain mandatory callbacks that need to be registered (i.e., can't be `nullptr`):
|
* The following arguments contain mandatory callbacks that need to be registered (i.e., can't be `nullptr`):
|
||||||
* - `rsp_callbacks`
|
* - `rsp_callbacks`
|
||||||
|
|
@ -82,7 +83,6 @@ namespace recomp {
|
||||||
* It must be called only once and it must be called before `ultramodern::preinit`.
|
* It must be called only once and it must be called before `ultramodern::preinit`.
|
||||||
*/
|
*/
|
||||||
void start(
|
void start(
|
||||||
SaveType save_type,
|
|
||||||
const Version& project_version,
|
const Version& project_version,
|
||||||
ultramodern::renderer::WindowHandle window_handle,
|
ultramodern::renderer::WindowHandle window_handle,
|
||||||
const recomp::rsp::callbacks_t& rsp_callbacks,
|
const recomp::rsp::callbacks_t& rsp_callbacks,
|
||||||
|
|
|
||||||
|
|
@ -66,6 +66,8 @@ std::unordered_map<std::u8string, recomp::GameEntry> game_roms {};
|
||||||
std::unique_ptr<recomp::mods::ModContext> mod_context = std::make_unique<recomp::mods::ModContext>();
|
std::unique_ptr<recomp::mods::ModContext> mod_context = std::make_unique<recomp::mods::ModContext>();
|
||||||
// The project's version.
|
// The project's version.
|
||||||
recomp::Version project_version;
|
recomp::Version project_version;
|
||||||
|
// The current game's save type.
|
||||||
|
recomp::SaveType save_type = recomp::SaveType::None;
|
||||||
|
|
||||||
std::u8string recomp::GameEntry::stored_filename() const {
|
std::u8string recomp::GameEntry::stored_filename() const {
|
||||||
return game_id + u8".z64";
|
return game_id + u8".z64";
|
||||||
|
|
@ -547,6 +549,7 @@ bool wait_for_game_started(uint8_t* rdram, recomp_context* context) {
|
||||||
|
|
||||||
recomp::init_heap(rdram, recomp::mod_rdram_start + mod_ram_used);
|
recomp::init_heap(rdram, recomp::mod_rdram_start + mod_ram_used);
|
||||||
|
|
||||||
|
save_type = game_entry.save_type;
|
||||||
ultramodern::init_saving(rdram);
|
ultramodern::init_saving(rdram);
|
||||||
ultramodern::load_shader_cache(game_entry.cache_data);
|
ultramodern::load_shader_cache(game_entry.cache_data);
|
||||||
|
|
||||||
|
|
@ -566,33 +569,30 @@ bool wait_for_game_started(uint8_t* rdram, recomp_context* context) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static recomp::SaveType _save_type = recomp::SaveType::None;
|
|
||||||
|
|
||||||
recomp::SaveType recomp::get_save_type() {
|
recomp::SaveType recomp::get_save_type() {
|
||||||
return _save_type;
|
return save_type;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool recomp::eeprom_allowed() {
|
bool recomp::eeprom_allowed() {
|
||||||
return
|
return
|
||||||
_save_type == SaveType::Eep4k ||
|
save_type == SaveType::Eep4k ||
|
||||||
_save_type == SaveType::Eep16k ||
|
save_type == SaveType::Eep16k ||
|
||||||
_save_type == SaveType::AllowAll;
|
save_type == SaveType::AllowAll;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool recomp::sram_allowed() {
|
bool recomp::sram_allowed() {
|
||||||
return
|
return
|
||||||
_save_type == SaveType::Sram ||
|
save_type == SaveType::Sram ||
|
||||||
_save_type == SaveType::AllowAll;
|
save_type == SaveType::AllowAll;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool recomp::flashram_allowed() {
|
bool recomp::flashram_allowed() {
|
||||||
return
|
return
|
||||||
_save_type == SaveType::Flashram ||
|
save_type == SaveType::Flashram ||
|
||||||
_save_type == SaveType::AllowAll;
|
save_type == SaveType::AllowAll;
|
||||||
}
|
}
|
||||||
|
|
||||||
void recomp::start(
|
void recomp::start(
|
||||||
SaveType save_type,
|
|
||||||
const recomp::Version& version,
|
const recomp::Version& version,
|
||||||
ultramodern::renderer::WindowHandle window_handle,
|
ultramodern::renderer::WindowHandle window_handle,
|
||||||
const recomp::rsp::callbacks_t& rsp_callbacks,
|
const recomp::rsp::callbacks_t& rsp_callbacks,
|
||||||
|
|
@ -604,7 +604,6 @@ void recomp::start(
|
||||||
const ultramodern::error_handling::callbacks_t& error_handling_callbacks,
|
const ultramodern::error_handling::callbacks_t& error_handling_callbacks,
|
||||||
const ultramodern::threads::callbacks_t& threads_callbacks
|
const ultramodern::threads::callbacks_t& threads_callbacks
|
||||||
) {
|
) {
|
||||||
_save_type = save_type;
|
|
||||||
project_version = version;
|
project_version = version;
|
||||||
recomp::check_all_stored_roms();
|
recomp::check_all_stored_roms();
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue