mirror of
https://github.com/N64Recomp/N64ModernRuntime.git
synced 2026-05-10 19:01:53 +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>
|
||||
|
||||
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 {
|
||||
uint64_t rom_hash;
|
||||
std::string internal_name;
|
||||
std::u8string game_id;
|
||||
std::string mod_game_id;
|
||||
std::span<const char> cache_data;
|
||||
SaveType save_type = SaveType::None;
|
||||
bool is_enabled;
|
||||
|
||||
gpr entrypoint_address;
|
||||
|
|
@ -65,15 +75,6 @@ namespace recomp {
|
|||
void do_rom_pio(uint8_t* rdram, gpr ram_address, uint32_t physical_addr);
|
||||
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`):
|
||||
* - `rsp_callbacks`
|
||||
|
|
@ -82,7 +83,6 @@ namespace recomp {
|
|||
* It must be called only once and it must be called before `ultramodern::preinit`.
|
||||
*/
|
||||
void start(
|
||||
SaveType save_type,
|
||||
const Version& project_version,
|
||||
ultramodern::renderer::WindowHandle window_handle,
|
||||
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>();
|
||||
// The project's 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 {
|
||||
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);
|
||||
|
||||
save_type = game_entry.save_type;
|
||||
ultramodern::init_saving(rdram);
|
||||
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() {
|
||||
return _save_type;
|
||||
return save_type;
|
||||
}
|
||||
|
||||
bool recomp::eeprom_allowed() {
|
||||
return
|
||||
_save_type == SaveType::Eep4k ||
|
||||
_save_type == SaveType::Eep16k ||
|
||||
_save_type == SaveType::AllowAll;
|
||||
save_type == SaveType::Eep4k ||
|
||||
save_type == SaveType::Eep16k ||
|
||||
save_type == SaveType::AllowAll;
|
||||
}
|
||||
|
||||
bool recomp::sram_allowed() {
|
||||
return
|
||||
_save_type == SaveType::Sram ||
|
||||
_save_type == SaveType::AllowAll;
|
||||
save_type == SaveType::Sram ||
|
||||
save_type == SaveType::AllowAll;
|
||||
}
|
||||
|
||||
bool recomp::flashram_allowed() {
|
||||
return
|
||||
_save_type == SaveType::Flashram ||
|
||||
_save_type == SaveType::AllowAll;
|
||||
save_type == SaveType::Flashram ||
|
||||
save_type == SaveType::AllowAll;
|
||||
}
|
||||
|
||||
void recomp::start(
|
||||
SaveType save_type,
|
||||
const recomp::Version& version,
|
||||
ultramodern::renderer::WindowHandle window_handle,
|
||||
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::threads::callbacks_t& threads_callbacks
|
||||
) {
|
||||
_save_type = save_type;
|
||||
project_version = version;
|
||||
recomp::check_all_stored_roms();
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue