Backport changes to generic stuff from gambatte core bindings work
This commit is contained in:
parent
51cdf24f87
commit
9328dfb070
11 changed files with 30 additions and 32 deletions
|
@ -63,6 +63,8 @@ void core_reset();
|
|||
void core_runtosave();
|
||||
//Button symbols.
|
||||
extern const char* button_symbols;
|
||||
//Get the scale factors.
|
||||
std::pair<uint32_t, uint32_t> get_scale_factors(uint32_t width, uint32_t height);
|
||||
|
||||
/**
|
||||
* Get name of logical button.
|
||||
|
|
|
@ -196,7 +196,7 @@ struct loaded_rom
|
|||
* throws std::bad_alloc: Not enough memory
|
||||
* throws std::runtime_error: Switching cartridges failed.
|
||||
*/
|
||||
void load() throw(std::bad_alloc, std::runtime_error);
|
||||
void load(uint64_t rtc_sec, uint64_t rtc_subsec) throw(std::bad_alloc, std::runtime_error);
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -55,7 +55,8 @@ struct core_romimage
|
|||
struct core_type
|
||||
{
|
||||
public:
|
||||
core_type(const std::string& iname, const std::string& hname, int (*_load)(core_romimage* images));
|
||||
core_type(const std::string& iname, const std::string& hname, int (*_load)(core_romimage* images,
|
||||
uint64_t rtc_sec, uint64_t rtc_subsec));
|
||||
static std::set<core_type*> get_core_types();
|
||||
void add_region(core_region& reg);
|
||||
void add_romimage(core_romimage_info& info, unsigned index);
|
||||
|
@ -66,9 +67,9 @@ public:
|
|||
const std::string& get_hname();
|
||||
unsigned get_image_count();
|
||||
core_romimage_info get_image_info(unsigned index);
|
||||
bool load(core_romimage* images);
|
||||
bool load(core_romimage* images, uint64_t rtc_sec, uint64_t rtc_subsec);
|
||||
private:
|
||||
int (*loadimg)(core_romimage* images);
|
||||
int (*loadimg)(core_romimage* images, uint64_t rtc_sec, uint64_t rtc_subsec);
|
||||
core_type(const core_type&);
|
||||
core_type& operator=(const core_type&);
|
||||
std::string iname;
|
||||
|
|
|
@ -75,7 +75,7 @@ namespace
|
|||
extern core_type type_sufamiturbo;
|
||||
extern core_type type_sgb;
|
||||
|
||||
int load_rom_snes(core_romimage* img)
|
||||
int load_rom_snes(core_romimage* img, uint64_t secs, uint64_t subsecs)
|
||||
{
|
||||
bool r = snes_load_cartridge_normal(img[0].markup, img[0].data, img[0].size);
|
||||
if(r)
|
||||
|
@ -83,7 +83,7 @@ namespace
|
|||
return r ? 0 : -1;
|
||||
}
|
||||
|
||||
int load_rom_bsx(core_romimage* img)
|
||||
int load_rom_bsx(core_romimage* img, uint64_t secs, uint64_t subsecs)
|
||||
{
|
||||
bool r = snes_load_cartridge_bsx(img[0].markup, img[0].data, img[0].size,
|
||||
img[1].markup, img[1].data, img[1].size);
|
||||
|
@ -92,7 +92,7 @@ namespace
|
|||
return r ? 0 : -1;
|
||||
}
|
||||
|
||||
int load_rom_bsxslotted(core_romimage* img)
|
||||
int load_rom_bsxslotted(core_romimage* img, uint64_t secs, uint64_t subsecs)
|
||||
{
|
||||
bool r = snes_load_cartridge_bsx_slotted(img[0].markup, img[0].data, img[0].size,
|
||||
img[1].markup, img[1].data, img[1].size);
|
||||
|
@ -101,7 +101,7 @@ namespace
|
|||
return r ? 0 : -1;
|
||||
}
|
||||
|
||||
int load_rom_sgb(core_romimage* img)
|
||||
int load_rom_sgb(core_romimage* img, uint64_t secs, uint64_t subsecs)
|
||||
{
|
||||
bool r = snes_load_cartridge_super_game_boy(img[0].markup, img[0].data, img[0].size,
|
||||
img[1].markup, img[1].data, img[1].size);
|
||||
|
@ -110,7 +110,7 @@ namespace
|
|||
return r ? 0 : -1;
|
||||
}
|
||||
|
||||
int load_rom_sufamiturbo(core_romimage* img)
|
||||
int load_rom_sufamiturbo(core_romimage* img, uint64_t secs, uint64_t subsecs)
|
||||
{
|
||||
bool r = snes_load_cartridge_sufami_turbo(img[0].markup, img[0].data, img[0].size,
|
||||
img[1].markup, img[1].data, img[1].size, img[2].markup, img[2].data, img[2].size);
|
||||
|
@ -924,6 +924,11 @@ std::list<vma_info> get_vma_list()
|
|||
return ret;
|
||||
}
|
||||
|
||||
std::pair<uint32_t, uint32_t> get_scale_factors(uint32_t width, uint32_t height)
|
||||
{
|
||||
return std::make_pair(last_hires ? 1 : 2, last_interlace ? 1 : 2);
|
||||
}
|
||||
|
||||
emucore_callbacks::~emucore_callbacks() throw()
|
||||
{
|
||||
}
|
||||
|
|
|
@ -271,17 +271,6 @@ framebuffer_raw get_framebuffer() throw(std::bad_alloc)
|
|||
}
|
||||
|
||||
|
||||
std::pair<uint32_t, uint32_t> get_scale_factors(uint32_t width, uint32_t height)
|
||||
{
|
||||
uint32_t v = 1;
|
||||
uint32_t h = 1;
|
||||
if(width < 512)
|
||||
h = 2;
|
||||
if(height < 400)
|
||||
v = 2;
|
||||
return std::make_pair(h, v);
|
||||
}
|
||||
|
||||
triplebuffer_logic::triplebuffer_logic() throw(std::bad_alloc)
|
||||
{
|
||||
mut = &mutex::aquire();
|
||||
|
|
|
@ -277,7 +277,7 @@ void do_load_beginning() throw(std::bad_alloc, std::runtime_error)
|
|||
try {
|
||||
movb.get_movie().reset_state();
|
||||
random_seed_value = our_movie.movie_rtc_second;
|
||||
our_rom->load();
|
||||
our_rom->load(our_movie.movie_rtc_second, our_movie.movie_rtc_subsecond);
|
||||
|
||||
load_sram(our_movie.movie_sram);
|
||||
our_movie.rtc_second = our_movie.movie_rtc_second;
|
||||
|
@ -349,8 +349,8 @@ void do_load_state(struct moviefile& _movie, int lmode)
|
|||
rrdata::add_internal();
|
||||
try {
|
||||
our_rom->region = &(_movie.gametype->get_region());
|
||||
random_seed_value = _movie.rtc_second;
|
||||
our_rom->load();
|
||||
random_seed_value = _movie.movie_rtc_second;
|
||||
our_rom->load(_movie.movie_rtc_second, _movie.movie_rtc_subsecond);
|
||||
|
||||
if(will_load_state) {
|
||||
//Load the savestate and movie state.
|
||||
|
|
|
@ -266,7 +266,7 @@ loaded_rom::loaded_rom(const rom_files& files) throw(std::bad_alloc, std::runtim
|
|||
msu1_base = resolve_file_relative(cromimg[0], files.base_file);
|
||||
}
|
||||
|
||||
void loaded_rom::load() throw(std::bad_alloc, std::runtime_error)
|
||||
void loaded_rom::load(uint64_t rtc_sec, uint64_t rtc_subsec) throw(std::bad_alloc, std::runtime_error)
|
||||
{
|
||||
if(!rtype)
|
||||
throw std::runtime_error("Can't insert cartridge of type NONE!");
|
||||
|
@ -286,7 +286,7 @@ void loaded_rom::load() throw(std::bad_alloc, std::runtime_error)
|
|||
images[i].data = (const unsigned char*)romimg[i];
|
||||
images[i].size = (size_t)romimg[i];
|
||||
}
|
||||
if(!rtype->load(images))
|
||||
if(!rtype->load(images, rtc_sec, rtc_subsec))
|
||||
throw std::runtime_error("Can't load cartridge ROM");
|
||||
|
||||
region = &core_get_region();
|
||||
|
|
|
@ -226,9 +226,9 @@ core_region& core_type::get_preferred_region()
|
|||
return *p;
|
||||
}
|
||||
|
||||
bool core_type::load(core_romimage* images)
|
||||
bool core_type::load(core_romimage* images, uint64_t rtc_sec, uint64_t rtc_subsec)
|
||||
{
|
||||
return (loadimg(images) >= 0);
|
||||
return (loadimg(images, rtc_sec, rtc_subsec) >= 0);
|
||||
}
|
||||
|
||||
core_sysregion& core_type::combine_region(core_region& reg)
|
||||
|
@ -239,7 +239,8 @@ core_sysregion& core_type::combine_region(core_region& reg)
|
|||
throw std::runtime_error("Invalid region for system type");
|
||||
}
|
||||
|
||||
core_type::core_type(const std::string& _iname, const std::string& _hname, int (*_load)(core_romimage* images))
|
||||
core_type::core_type(const std::string& _iname, const std::string& _hname, int (*_load)(core_romimage* images,
|
||||
uint64_t rtc_sec, uint64_t rtc_subsec))
|
||||
: iname(_iname), hname(_hname), loadimg(_load)
|
||||
{
|
||||
types()[iname] = this;
|
||||
|
|
|
@ -170,7 +170,7 @@ int main(int argc, char** argv)
|
|||
struct loaded_rom r;
|
||||
try {
|
||||
r = load_rom_from_commandline(cmdline);
|
||||
r.load();
|
||||
r.load(1000000000, 0);
|
||||
} catch(std::bad_alloc& e) {
|
||||
OOM_panic();
|
||||
} catch(std::exception& e) {
|
||||
|
|
|
@ -705,7 +705,7 @@ void patching_done(struct loaded_rom& rom, wxWindow* modwin)
|
|||
our_rom_name = our_rom->romimg[i].sha256;
|
||||
if(our_rom_name == "")
|
||||
our_rom_name = our_rom->romimg[0].sha256;
|
||||
our_rom->load();
|
||||
our_rom->load(1000000000, 0);
|
||||
} catch(std::exception& e) {
|
||||
show_message_ok(modwin, "Error loading ROM", e.what(), wxICON_EXCLAMATION);
|
||||
return;
|
||||
|
|
|
@ -249,7 +249,7 @@ int main(int argc, char** argv)
|
|||
struct loaded_rom r;
|
||||
try {
|
||||
r = load_rom_from_commandline(cmdline);
|
||||
r.load();
|
||||
r.load(1000000000, 0);
|
||||
} catch(std::bad_alloc& e) {
|
||||
OOM_panic();
|
||||
} catch(std::exception& e) {
|
||||
|
@ -288,7 +288,7 @@ int main(int argc, char** argv)
|
|||
//Load ROM before starting the dumper.
|
||||
our_rom = &r;
|
||||
our_rom->region = &movie.gametype->get_region();
|
||||
our_rom->load();
|
||||
our_rom->load(movie.movie_rtc_second, movie.movie_rtc_subsecond);
|
||||
startup_lua_scripts(cmdline);
|
||||
dumper_startup(dumper, mode, prefix, length);
|
||||
main_loop(r, movie, true);
|
||||
|
|
Loading…
Add table
Reference in a new issue