bool retro_load_game(const struct retro_game_info *game) { update_variables(); struct retro_input_descriptor desc[] = { { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_LEFT, "D-Pad Left" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_UP, "D-Pad Up" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_DOWN, "D-Pad Down" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_RIGHT, "D-Pad Right" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B, "B" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A, "A" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L, "L" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R, "R" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_SELECT, "Select" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_START, "Start" }, { 0 }, }; environ_cb(RETRO_ENVIRONMENT_SET_INPUT_DESCRIPTORS, desc); bool ret = CPULoadRomData((const char*)game->data, game->size); gba_init(); return ret; }
bool retro_load_game(const struct retro_game_info *game) { bool ret = CPULoadRom(game->path); gba_init(); return ret; }
bool retro_load_game(const struct retro_game_info *game) { update_variables(); bool ret = CPULoadRom(game->path); gba_init(); return ret; }
bool retro_load_game(const struct retro_game_info *game) { update_variables(); struct retro_input_descriptor input_desc[] = { { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_LEFT, "D-Pad Left" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_UP, "D-Pad Up" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_DOWN, "D-Pad Down" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_RIGHT, "D-Pad Right" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B, "B" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A, "A" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L, "L" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R, "R" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_SELECT, "Select" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_START, "Start" }, { 0 }, }; environ_cb(RETRO_ENVIRONMENT_SET_INPUT_DESCRIPTORS, input_desc); bool ret = CPULoadRomData((const char*)game->data, game->size); gba_init(); struct retro_memory_descriptor desc[10]; memset(desc, 0, sizeof(desc)); desc[0].start=0x03000000; desc[0].select=0xFF000000; desc[0].len=0x8000; desc[0].ptr=internalRAM;//fast WRAM desc[1].start=0x02000000; desc[1].select=0xFF000000; desc[1].len=0x40000; desc[1].ptr=workRAM;//slow WRAM desc[2].start=0x0E000000; desc[2].select=0xFF000000; desc[2].len=libretro_save_size; desc[2].ptr=flashSaveMemory;//SRAM desc[3].start=0x08000000; desc[3].select=0xFC000000; desc[3].len=0x2000000; desc[3].ptr=rom;//ROM, parts 1 and 2 desc[3].flags=RETRO_MEMDESC_CONST;//we need two mappings since its size is not a power of 2 desc[4].start=0x0C000000; desc[4].select=0xFE000000; desc[4].len=0x2000000; desc[4].ptr=rom;//ROM part 3 desc[4].flags=RETRO_MEMDESC_CONST; desc[5].start=0x00000000; desc[5].select=0xFF000000; desc[5].len=0x4000; desc[5].ptr=bios;//BIOS desc[5].flags=RETRO_MEMDESC_CONST; desc[6].start=0x06000000; desc[6].select=0xFF000000; desc[6].len=0x18000; desc[6].ptr=vram;//VRAM desc[7].start=0x05000000; desc[7].select=0xFF000000; desc[7].len=0x400; desc[7].ptr=paletteRAM;//palettes desc[8].start=0x07000000; desc[8].select=0xFF000000; desc[8].len=0x400; desc[8].ptr=oam;//OAM desc[9].start=0x04000000; desc[9].select=0xFF000000; desc[9].len=0x400; desc[9].ptr=ioMem;//bunch of registers struct retro_memory_map retromap={ desc, sizeof(desc)/sizeof(*desc) }; if (ret) environ_cb(RETRO_ENVIRONMENT_SET_MEMORY_MAPS, &retromap); return ret; }
EXPORT bool snes_load_cartridge_normal(const char*, const uint8_t *rom_data, unsigned rom_size) { const char *tmppath = "VBA-tmp.gba"; unsigned ret; if (full_path) ret = CPULoadRom(full_path); else { FILE *file = fopen(tmppath, "wb"); if (!file) return false; fwrite(rom_data, 1, rom_size, file); fclose(file); ret = CPULoadRom(tmppath); remove(tmppath); } gba_init(); return ret; }