EXPORT bool snes_load_cartridge_normal(const char * a, const uint8_t *rom_data, unsigned rom_size) { int loaded; /* Hack. S9x cannot do stuff from RAM. <_< */ memstream_set_buffer((uint8_t*)rom_data, rom_size); loaded = LoadROM("foo"); if (!loaded) { fprintf(stderr, "[libsnes]: Rom loading failed...\n"); return FALSE; } if (environ_cb) { struct snes_system_timing timing; timing.sample_rate = 32040.5; if (!Settings.PAL) timing.fps = 21477272.0 / 357366.0; else timing.fps = 21281370.0 / 425568.0; environ_cb(SNES_ENVIRONMENT_SET_TIMING, &timing); } return TRUE; }
bool retro_load_game(const struct retro_game_info *game) { int loaded; struct retro_memory_map map; init_descriptors(); memorydesc_c = 0; map.descriptors = memorydesc + MAX_MAPS - memorydesc_c; map.num_descriptors = memorydesc_c; /* Hack. S9x cannot do stuff from RAM. <_< */ memstream_set_buffer((uint8_t*)game->data, game->size); loaded = LoadROM(""); if (!loaded) { if (log_cb) log_cb(RETRO_LOG_ERROR, "ROM loading failed...\n"); return FALSE; } check_variables(); environ_cb(RETRO_ENVIRONMENT_SET_MEMORY_MAPS, &map); return TRUE; }
bool snes_unserialize(const uint8_t* data, unsigned size) { memstream_set_buffer((uint8_t*)data, size); if (S9xUnfreezeGame("foo") == FALSE) return false; return true; }
bool retro_unserialize(const void * data, size_t size) { memstream_set_buffer((uint8_t*)data, size); if (S9xUnfreezeGame("") == FALSE) return FALSE; return TRUE; }
EXPORT bool snes_serialize(uint8_t *data, unsigned size) { memstream_set_buffer(data, size); if (S9xFreezeGame("foo") == FALSE) return FALSE; return TRUE; }
unsigned snes_serialize_size() { uint8_t *tmpbuf = new uint8_t[5000000]; memstream_set_buffer(tmpbuf, 5000000); S9xFreezeGame("foo"); delete [] tmpbuf; return memstream_get_last_size(); }
size_t retro_serialize_size (void) { uint8_t *tmpbuf; tmpbuf = (uint8_t*)malloc(5000000); memstream_set_buffer(tmpbuf, 5000000); S9xFreezeGame(""); free(tmpbuf); return memstream_get_last_size(); }
EXPORT unsigned snes_serialize_size (void) { uint8_t *tmpbuf; tmpbuf = (uint8_t*)malloc(5000000); memstream_set_buffer(tmpbuf, 5000000); S9xFreezeGame("foo"); free(tmpbuf); return memstream_get_last_size(); }
bool snes_load_cartridge_normal(const char *, const uint8_t *rom_data, unsigned rom_size) { // Hack. S9x cannot do stuff from RAM. <_< memstream_set_buffer((uint8_t*)rom_data, rom_size); int loaded = Memory.LoadROM("foo"); if (!loaded) { fprintf(stderr, "[libsnes]: Rom loading failed...\n"); return false; } return true; }
bool intfstream_resize(intfstream_internal_t *intf, intfstream_info_t *info) { if (!intf || !info) return false; switch (intf->type) { case INTFSTREAM_FILE: break; case INTFSTREAM_MEMORY: intf->memory.buf.data = info->memory.buf.data; intf->memory.buf.size = info->memory.buf.size; memstream_set_buffer(intf->memory.buf.data, intf->memory.buf.size); break; } return true; }
bool retro_load_game(const struct retro_game_info *game) { int loaded; struct retro_memory_map map; init_descriptors(); memorydesc_c = 0; map.descriptors = memorydesc + MAX_MAPS - memorydesc_c; map.num_descriptors = memorydesc_c; /* Hack. S9x cannot do stuff from RAM. <_< */ memstream_set_buffer((uint8_t*)game->data, game->size); loaded = LoadROM(""); if (!loaded) { struct retro_message msg; char msg_local[256]; snprintf(msg_local, sizeof(msg_local), "ROM loading failed..."); if (log_cb) log_cb(RETRO_LOG_ERROR, "ROM loading failed...\n"); msg.msg = msg_local; msg.frames = 360; if (environ_cb) environ_cb(RETRO_ENVIRONMENT_SET_MESSAGE, (void*)&msg); return FALSE; } check_variables(); environ_cb(RETRO_ENVIRONMENT_SET_MEMORY_MAPS, &map); return TRUE; }