/* * Loads the specified ROM * * filename The filename of the ROM * loadbios Whether or not to load the Atari BIOS * * return Whether the load was successful */ bool wii_atari_load_rom( char *filename, bool loadbios ) { std::string std_filename( filename ); if( !cartridge_Load(std_filename) ) return false; database_Load( cartridge_digest ); bios_enabled = false; if( loadbios ) { if( bios_Load( ( cartridge_region == REGION_PAL ? WII_ROOT_BOOT_ROM_PAL : WII_ROOT_BOOT_ROM_NTSC ) ) ) { bios_enabled = true; } else { bios_enabled = false; } } wii_reset_keyboard_data(); wii_atari_init_palette8(); prosystem_Reset(); wii_atari_pause( false ); return true; }
bool retro_load_game(const struct retro_game_info *info) { enum retro_pixel_format fmt = RETRO_PIXEL_FORMAT_XRGB8888; if (!environ_cb(RETRO_ENVIRONMENT_SET_PIXEL_FORMAT, &fmt)) { if (log_cb) log_cb(RETRO_LOG_INFO, "[ProSystem]: XRGB8888 is not supported.\n"); return false; } struct retro_input_descriptor desc[] = { { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_LEFT, "Left" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_UP, "Up" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_DOWN, "Down" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_RIGHT, "Right" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B, "1" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A, "2" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X, "Console Reset" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_SELECT, "Console Select" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_START, "Console Pause" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L, "Left Difficulty" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R, "Right Difficulty" }, { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_LEFT, "Left" }, { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_UP, "Up" }, { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_DOWN, "Down" }, { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B, "1" }, { 1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A, "2" }, { 0 }, }; environ_cb(RETRO_ENVIRONMENT_SET_INPUT_DESCRIPTORS, desc); memset(keyboard_data, 0, sizeof(keyboard_data)); // Difficulty switches: Left position = (B)eginner, Right position = (A)dvanced // Left difficulty switch defaults to left position, "(B)eginner" keyboard_data[15] = 1; // Right difficulty switch defaults to right position, "(A)dvanced", which fixes Tower Toppler keyboard_data[16] = 0; const char *system_directory_c = NULL; if (cartridge_Load((const uint8_t*)info->data, info->size)) { environ_cb(RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY, &system_directory_c); if (!system_directory_c) { if (log_cb) log_cb(RETRO_LOG_WARN, "[ProSystem]: no system directory defined, unable to look for ProSystem.dat\n"); database_enabled = false; } else { std::string system_directory(system_directory_c); std::string database_file_path = system_directory + "/ProSystem.dat"; std::ifstream database_file(database_file_path.c_str()); if (!database_file.is_open()) { if (log_cb) log_cb(RETRO_LOG_WARN, "[ProSystem]: ProSystem.dat not found, cannot load internal ROM database\n"); database_enabled = false; } else { database_filename = database_file_path; database_enabled = true; } } // BIOS is optional std::string system_directory(system_directory_c); std::string bios_file_path = system_directory + "/7800 BIOS (U).rom"; if (bios_Load(bios_file_path.c_str())) bios_enabled = true; database_Load(cartridge_digest); prosystem_Reset(); display_ResetPalette32(); return true; } return false; }