Refactor loaded_rom to make public fields private
This commit is contained in:
parent
8af9dda77f
commit
a6b7391da5
8 changed files with 98 additions and 61 deletions
|
@ -66,22 +66,6 @@ struct loaded_rom
|
|||
* throws std::runtime_error: Loading ROM file failed.
|
||||
*/
|
||||
loaded_rom(const std::string& file, core_type& ctype) throw(std::bad_alloc, std::runtime_error);
|
||||
/**
|
||||
* Loaded main ROM
|
||||
*/
|
||||
fileimage::image romimg[ROM_SLOT_COUNT];
|
||||
/**
|
||||
* Loaded main ROM XML
|
||||
*/
|
||||
fileimage::image romxml[ROM_SLOT_COUNT];
|
||||
/**
|
||||
* MSU-1 base.
|
||||
*/
|
||||
std::string msu1_base;
|
||||
/**
|
||||
* Load filename.
|
||||
*/
|
||||
std::string load_filename;
|
||||
/**
|
||||
* Switches the active cartridge to this cartridge. The compatiblity between selected region and original region
|
||||
* is checked. Region is updated after cartridge has been loaded.
|
||||
|
@ -136,7 +120,28 @@ struct loaded_rom
|
|||
* Set internal region representation.
|
||||
*/
|
||||
void set_internal_region(core_region& reg) { region = ® }
|
||||
|
||||
/**
|
||||
* Access main ROM image.
|
||||
*
|
||||
* parameter index: The index of ROM slot to access.
|
||||
* returns: The ROM image (NULL image if index is out of range).
|
||||
*/
|
||||
fileimage::image& get_rom(size_t index) { return get_image(index, false); }
|
||||
/**
|
||||
* Access ROM markup image.
|
||||
*
|
||||
* parameter index: The index of ROM slot to access.
|
||||
* returns: The ROM markup image (NULL image if index is out of range).
|
||||
*/
|
||||
fileimage::image& get_markup(size_t index) { return get_image(index, true); }
|
||||
/**
|
||||
* Get filename of ROM pack, if any.
|
||||
*/
|
||||
const std::string& get_pack_filename() { return load_filename; }
|
||||
/**
|
||||
* Get MSU-1 base fileaname.
|
||||
*/
|
||||
const std::string& get_msu1_base() { return msu1_base; }
|
||||
//ROM methods.
|
||||
std::string get_core_identifier() { return rtype->get_core_identifier(); }
|
||||
std::pair<uint32_t, uint32_t> get_scale_factors(uint32_t width, uint32_t height)
|
||||
|
@ -204,18 +209,33 @@ struct loaded_rom
|
|||
return orig_region && orig_region->compatible_with(run);
|
||||
}
|
||||
private:
|
||||
/**
|
||||
* ROM type
|
||||
*/
|
||||
//Static NULL image.
|
||||
static fileimage::image null_img;
|
||||
//Loaded ROM images.
|
||||
fileimage::image romimg[ROM_SLOT_COUNT];
|
||||
//Loaded ROM XML (markup) images.
|
||||
fileimage::image romxml[ROM_SLOT_COUNT];
|
||||
//MSU-1 base filename.
|
||||
std::string msu1_base;
|
||||
//Load filename.
|
||||
std::string load_filename;
|
||||
//ROM type.
|
||||
core_type* rtype;
|
||||
/**
|
||||
* ROM region (this is the currently active region).
|
||||
*/
|
||||
//ROM region.
|
||||
core_region* region;
|
||||
/**
|
||||
* ROM original region (this is the region ROM is loaded as).
|
||||
*/
|
||||
//Region ROM was loaded as.
|
||||
core_region* orig_region;
|
||||
//Get image.
|
||||
fileimage::image& get_image(size_t index, bool xml)
|
||||
{
|
||||
if(index < ROM_SLOT_COUNT) {
|
||||
if(xml)
|
||||
return romxml[index];
|
||||
else
|
||||
return romimg[index];
|
||||
} else
|
||||
return null_img;
|
||||
}
|
||||
//Handle bundle load case.
|
||||
void load_bundle(const std::string& file, std::istream& spec, const std::string& tmpprefer)
|
||||
throw(std::bad_alloc, std::runtime_error);
|
||||
|
|
|
@ -263,7 +263,7 @@ public:
|
|||
|
||||
std::string get_base_path()
|
||||
{
|
||||
return CORE().rom->msu1_base;
|
||||
return CORE().rom->get_msu1_base();
|
||||
}
|
||||
|
||||
time_t get_time()
|
||||
|
|
|
@ -232,9 +232,11 @@ void do_save_state(const std::string& filename, int binary) throw(std::bad_alloc
|
|||
target.is_savestate = true;
|
||||
target.sram = core.rom->save_sram();
|
||||
for(size_t i = 0; i < ROM_SLOT_COUNT; i++) {
|
||||
target.romimg_sha256[i] = core.rom->romimg[i].sha_256.read();
|
||||
target.romxml_sha256[i] = core.rom->romxml[i].sha_256.read();
|
||||
target.namehint[i] = core.rom->romimg[i].namehint;
|
||||
auto& img = core.rom->get_rom(i);
|
||||
auto& xml = core.rom->get_markup(i);
|
||||
target.romimg_sha256[i] = img.sha_256.read();
|
||||
target.romxml_sha256[i] = xml.sha_256.read();
|
||||
target.namehint[i] = img.namehint;
|
||||
}
|
||||
target.savestate = core.rom->save_core_state();
|
||||
core.fbuf->get_framebuffer().save(target.screenshot);
|
||||
|
@ -390,15 +392,17 @@ namespace
|
|||
{
|
||||
bool rom_ok = true;
|
||||
for(size_t i = 0; i < ROM_SLOT_COUNT; i++) {
|
||||
auto& img = against.get_rom(i);
|
||||
auto& xml = against.get_markup(i);
|
||||
if(mov.namehint[i] == "")
|
||||
mov.namehint[i] = against.romimg[i].namehint;
|
||||
mov.namehint[i] = img.namehint;
|
||||
if(mov.romimg_sha256[i] == "")
|
||||
mov.romimg_sha256[i] = against.romimg[i].sha_256.read();
|
||||
mov.romimg_sha256[i] = img.sha_256.read();
|
||||
if(mov.romxml_sha256[i] == "")
|
||||
mov.romxml_sha256[i] = against.romxml[i].sha_256.read();
|
||||
rom_ok = rom_ok & warn_hash_mismatch(mov.romimg_sha256[i], against.romimg[i],
|
||||
mov.romxml_sha256[i] = xml.sha_256.read();
|
||||
rom_ok = rom_ok & warn_hash_mismatch(mov.romimg_sha256[i], img,
|
||||
(stringfmt() << "ROM #" << (i + 1)).str(), loadstate);
|
||||
rom_ok = rom_ok & warn_hash_mismatch(mov.romxml_sha256[i], against.romxml[i],
|
||||
rom_ok = rom_ok & warn_hash_mismatch(mov.romxml_sha256[i], xml,
|
||||
(stringfmt() << "XML #" << (i + 1)).str(), loadstate);
|
||||
}
|
||||
if(!rom_ok)
|
||||
|
@ -470,9 +474,11 @@ void do_load_rom() throw(std::bad_alloc, std::runtime_error)
|
|||
handle_load_core(core.mlogic->get_mfile(), portset, false);
|
||||
core.mlogic->get_mfile().gametype = &core.rom->get_sysregion();
|
||||
for(size_t i = 0; i < ROM_SLOT_COUNT; i++) {
|
||||
core.mlogic->get_mfile().namehint[i] = core.rom->romimg[i].namehint;
|
||||
core.mlogic->get_mfile().romimg_sha256[i] = core.rom->romimg[i].sha_256.read();
|
||||
core.mlogic->get_mfile().romxml_sha256[i] = core.rom->romxml[i].sha_256.read();
|
||||
auto& img = core.rom->get_rom(i);
|
||||
auto& xml = core.rom->get_markup(i);
|
||||
core.mlogic->get_mfile().namehint[i] = img.namehint;
|
||||
core.mlogic->get_mfile().romimg_sha256[i] = img.sha_256.read();
|
||||
core.mlogic->get_mfile().romxml_sha256[i] = xml.sha_256.read();
|
||||
}
|
||||
core.mlogic->get_mfile().is_savestate = false;
|
||||
core.mlogic->get_mfile().host_memory.clear();
|
||||
|
@ -497,9 +503,11 @@ void do_load_rom() throw(std::bad_alloc, std::runtime_error)
|
|||
_movie.get()->rerecords = "0";
|
||||
_movie.get()->rerecords_mem = 0;
|
||||
for(size_t i = 0; i < ROM_SLOT_COUNT; i++) {
|
||||
_movie.get()->namehint[i] = core.rom->romimg[i].namehint;
|
||||
_movie.get()->romimg_sha256[i] = core.rom->romimg[i].sha_256.read();
|
||||
_movie.get()->romxml_sha256[i] = core.rom->romxml[i].sha_256.read();
|
||||
auto& img = core.rom->get_rom(i);
|
||||
auto& xml = core.rom->get_markup(i);
|
||||
_movie.get()->namehint[i] = img.namehint;
|
||||
_movie.get()->romimg_sha256[i] = img.sha_256.read();
|
||||
_movie.get()->romxml_sha256[i] = xml.sha_256.read();
|
||||
}
|
||||
_movie.get()->is_savestate = false;
|
||||
_movie.get()->save_frame = 0;
|
||||
|
|
|
@ -140,9 +140,11 @@ moviefile::moviefile(loaded_rom& rom, std::map<std::string, std::string>& c_sett
|
|||
//Initialize the remainder.
|
||||
rerecords = "0";
|
||||
for(size_t i = 0; i < ROM_SLOT_COUNT; i++) {
|
||||
romimg_sha256[i] = rom.romimg[i].sha_256.read();
|
||||
romxml_sha256[i] = rom.romxml[i].sha_256.read();
|
||||
namehint[i] = rom.romimg[i].namehint;
|
||||
auto& img = rom.get_rom(i);
|
||||
auto& xml = rom.get_markup(i);
|
||||
romimg_sha256[i] = img.sha_256.read();
|
||||
romxml_sha256[i] = xml.sha_256.read();
|
||||
namehint[i] = img.namehint;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -225,18 +225,19 @@ namespace
|
|||
{
|
||||
for(unsigned i = 0; i < ROM_SLOT_COUNT; i++) {
|
||||
try {
|
||||
record_filehash(rom.romimg[i].filename, rom.romimg[i].stripped,
|
||||
rom.romimg[i].sha_256.read());
|
||||
auto& j = rom.get_rom(i);
|
||||
record_filehash(j.filename, j.stripped, j.sha_256.read());
|
||||
} catch(...) {}
|
||||
try {
|
||||
record_filehash(rom.romxml[i].filename, rom.romxml[i].stripped,
|
||||
rom.romxml[i].sha_256.read());
|
||||
auto& j = rom.get_markup(i);
|
||||
record_filehash(j.filename, j.stripped, j.sha_256.read());
|
||||
} catch(...) {}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fileimage::hash lsnes_image_hasher;
|
||||
fileimage::image loaded_rom::null_img;
|
||||
|
||||
std::pair<core_type*, core_region*> get_current_rom_info() throw()
|
||||
{
|
||||
|
|
|
@ -102,9 +102,11 @@ bool _load_new_rom(const romload_request& req)
|
|||
load_new_rom_inner(req);
|
||||
if(*core.mlogic)
|
||||
for(size_t i = 0; i < ROM_SLOT_COUNT; i++) {
|
||||
core.mlogic->get_mfile().romimg_sha256[i] = core.rom->romimg[i].sha_256.read();
|
||||
core.mlogic->get_mfile().romxml_sha256[i] = core.rom->romxml[i].sha_256.read();
|
||||
core.mlogic->get_mfile().namehint[i] = core.rom->romimg[i].namehint;
|
||||
auto& img = core.rom->get_rom(i);
|
||||
auto& xml = core.rom->get_markup(i);
|
||||
core.mlogic->get_mfile().romimg_sha256[i] = img.sha_256.read();
|
||||
core.mlogic->get_mfile().romxml_sha256[i] = xml.sha_256.read();
|
||||
core.mlogic->get_mfile().namehint[i] = img.namehint;
|
||||
}
|
||||
} catch(std::exception& e) {
|
||||
platform::error_message(std::string("Can't load ROM: ") + e.what());
|
||||
|
@ -126,8 +128,10 @@ bool reload_active_rom()
|
|||
messages << "No ROM loaded" << std::endl;
|
||||
return false;
|
||||
}
|
||||
if(core.rom->load_filename != "") {
|
||||
req.packfile = core.rom->load_filename;
|
||||
//Single-file ROM?
|
||||
std::string loadfile = core.rom->get_pack_filename();
|
||||
if(loadfile != "") {
|
||||
req.packfile = loadfile;
|
||||
return _load_new_rom(req);
|
||||
}
|
||||
//This is composite ROM.
|
||||
|
@ -135,7 +139,7 @@ bool reload_active_rom()
|
|||
req.system = core.rom->get_iname();
|
||||
req.region = core.rom->orig_region_get_iname();
|
||||
for(unsigned i = 0; i < ROM_SLOT_COUNT; i++)
|
||||
req.files[i] = core.rom->romimg[i].filename;
|
||||
req.files[i] = core.rom->get_rom(i).filename;
|
||||
return _load_new_rom(req);
|
||||
}
|
||||
|
||||
|
|
|
@ -149,8 +149,8 @@ namespace
|
|||
|
||||
L.newtable();
|
||||
for(unsigned i = 0; i < ROM_SLOT_COUNT; i++) {
|
||||
auto img = &(rom.romimg[i]);
|
||||
auto xml = &(rom.romxml[i]);
|
||||
auto img = &rom.get_rom(i);
|
||||
auto xml = &rom.get_markup(i);
|
||||
if(img->sha_256.read() == "") img = NULL; //Trivial image.
|
||||
if(xml->sha_256.read() == "") xml = NULL; //Trivial image.
|
||||
if(!img && !xml) continue;
|
||||
|
|
|
@ -253,7 +253,7 @@ namespace
|
|||
project_info pinfo(*inst.dispatch);
|
||||
pinfo.id = generate_project_id();
|
||||
pinfo.name = tostdstring(projname->GetValue());
|
||||
pinfo.rom = inst.rom->load_filename;
|
||||
pinfo.rom = inst.rom->get_pack_filename();
|
||||
pinfo.last_save = "";
|
||||
pinfo.directory = tostdstring(projdir->GetValue());
|
||||
pinfo.prefix = tostdstring(projpfx->GetValue());
|
||||
|
@ -273,7 +273,7 @@ namespace
|
|||
inst.project->copy_watches(pinfo);
|
||||
inst.project->copy_macros(pinfo, *inst.controls);
|
||||
for(unsigned i = 0; i < ROM_SLOT_COUNT; i++) {
|
||||
pinfo.roms[i] = inst.rom->romimg[i].filename;
|
||||
pinfo.roms[i] = inst.rom->get_rom(i).filename;
|
||||
pinfo.romimg_sha256[i] = m.romimg_sha256[i];
|
||||
pinfo.romxml_sha256[i] = m.romxml_sha256[i];
|
||||
pinfo.namehint[i] = m.namehint[i];
|
||||
|
@ -677,9 +677,11 @@ struct moviefile& wxwin_project::make_movie()
|
|||
set_mprefix_for_project(f.projectid, tostdstring(prefix->GetValue()));
|
||||
f.rerecords = "0";
|
||||
for(size_t i = 0; i < ROM_SLOT_COUNT; i++) {
|
||||
f.romimg_sha256[i] = inst.rom->romimg[i].sha_256.read();
|
||||
f.romxml_sha256[i] = inst.rom->romxml[i].sha_256.read();
|
||||
f.namehint[i] = inst.rom->romimg[i].namehint;
|
||||
auto& img = inst.rom->get_rom(i);
|
||||
auto& xml = inst.rom->get_markup(i);
|
||||
f.romimg_sha256[i] = img.sha_256.read();
|
||||
f.romxml_sha256[i] = xml.sha_256.read();
|
||||
f.namehint[i] = img.namehint;
|
||||
}
|
||||
size_t lines = authors->GetNumberOfLines();
|
||||
for(size_t i = 0; i < lines; i++) {
|
||||
|
|
Loading…
Add table
Reference in a new issue