bool retro_load_game(const struct retro_game_info *info) { check_variables(); #ifdef M16B memset(videoBuffer,0,1024*1024*2); #else memset(videoBuffer,0,1024*1024*2*2); #endif char basename[128]; extract_basename(basename, info->path, sizeof(basename)); extract_directory(g_rom_dir, info->path, sizeof(g_rom_dir)); strcpy(RPATH,info->path); return 1; }
bool retro_load_game(const struct retro_game_info *info) { struct retro_keyboard_callback cb = { keyboard_cb }; environ_cb(RETRO_ENVIRONMENT_SET_KEYBOARD_CALLBACK, &cb); #ifdef M16B memset(videoBuffer,0,1024*1024*2); #else memset(videoBuffer,0,1024*1024*2*2); #endif char basename[128]; extract_basename(basename, info->path, sizeof(basename)); extract_directory(g_rom_dir, info->path, sizeof(g_rom_dir)); strcpy(RPATH,info->path); return 1; }
/** funzione di callback applicata da init_db() (usabile anche esternamente, ovvio, ma aggiunge al db solo file locali!) prende un percorso (si assume che punti ad un file valido). Se questo è un file supportato da taglib, ne analizza i tag e inserisce i dati nel database \attention le query *non* sono generiche, nè usano il file constants.h! inoltre, poiché questi dati saranno usati per generare i percorsi virtuali, non sono ammessi metadati col carattere '/': in tal caso saranno sostituiti col carattere '_' \param db database (di tipo sqlite*, ma castato a void* per questioni di compatibilità) \param path percorso del file da analizzare e, se supportato, aggiungere al database \return 0 se non ci sono errori, -1 altrimenti \sa init_db(), esegui_query(), preprocessing() */ int add_local_file_in_db(void* db, const char* path) { warn("[add_local_file_in_db] path = `%s'\n", path); TagLib_File* tlf = taglib_file_new(path); if (!tlf) return -1; TagLib_Tag* tlt = taglib_file_tag(tlf); // automaticamente free`d char* titolo = preprocessing(taglib_tag_title(tlt)); char* artista = preprocessing(taglib_tag_artist(tlt)); char* album = preprocessing(taglib_tag_album(tlt)); char* genere = preprocessing(taglib_tag_genre(tlt)); unsigned int anno = taglib_tag_year(tlt); unsigned int traccia = taglib_tag_track(tlt); char* anno_s = calloc(5, 1); // andrà bene fino all'anno 9999 char* traccia_s = calloc(3, 1); // andrà bene fino alla traccia 99 snprintf(anno_s, 5, "%04d", anno); snprintf(traccia_s, 3, "%02d", traccia); if (esegui_query(db, "INSERT OR REPLACE INTO artista(nome_artista) values " "(%Q)", artista) == -1) return -1; if (esegui_query(db, "INSERT OR REPLACE INTO musica(titolo, nome_album," " traccia, genere, artista_nome_artista, lavoro_anno) values " "(%Q, %Q, %Q, %Q, %Q, %Q)", titolo, album, traccia_s, genere, artista, anno_s) == -1) return -1; if (esegui_query(db, "INSERT OR REPLACE INTO file(host, path, permessi," " formato, dimensioni, data_ultimo_aggiornamento, musica_titolo" ", musica_nome_album, musica_traccia, basename) values (" "'127.0.0.1', %Q, %d, %Q, %d, NULL, %Q, %Q, %Q, %Q)", path, 6, extract_extension(path), extract_size(path), titolo, album, traccia_s, extract_basename(path)) == -1) return -1; taglib_tag_free_strings(); taglib_file_free(tlf); return 0; }
void testExtractBasename() { TAP_TEST(extract_basename("/var/toto/titi/tutu/bla.bli.bluc", true) == "bla.bli", TEST_EXTRACT_BASENAME, extract_basename("/var/toto/titi/tutu/bla.bli.bluc", true)); TAP_TEST(extract_basename("/var/toto/titi/tutu/bla.bli.bluc", false) == "bla.bli.bluc", TEST_EXTRACT_BASENAME, extract_basename("/var/toto/titi/tutu/bla.bli.bluc", false)); TAP_TEST(extract_basename("bla.bli.bluc", true) == "bla.bli", TEST_EXTRACT_BASENAME, extract_basename("bla.bli.bluc", true)); TAP_TEST(extract_basename("bla.bli.bluc", false) == "bla.bli.bluc", TEST_EXTRACT_BASENAME, extract_basename("bla.bli.bluc", false)); TAP_TEST(extract_basename("a_filename_without_extension", true) == "a_filename_without_extension", TEST_EXTRACT_BASENAME, extract_basename("a_filename_without_extension", true)); TAP_TEST(extract_basename("/", true) == "", TEST_EXTRACT_BASENAME, extract_basename("/", true)); }
bool retro_load_game(const struct retro_game_info *info) { int argc = 0; static char *argv[32] = {NULL}; 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, "Strafe" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A, "Use" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X, "Fire" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_Y, "Run" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L, "Strafe Left" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R, "Strafe Right" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L2, "Previous Weapon" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R2, "Next Weapon" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_SELECT, "Show/Hide Map" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_START, "Settings" }, { 0 }, }; environ_cb(RETRO_ENVIRONMENT_SET_INPUT_DESCRIPTORS, desc); update_variables(true); extract_directory(g_wad_dir, info->path, sizeof(g_wad_dir)); extract_basename(g_basename, info->path, sizeof(g_basename)); argv[argc++] = strdup("prboom"); if(info->path) { argv[argc++] = strdup("-iwad"); argv[argc++] = strdup(g_basename); } myargc = argc; myargv = argv; if (!Z_Init()) /* 1/18/98 killough: start up memory stuff first */ goto failed; /* cphipps - call to video specific startup code */ if (!I_PreInitGraphics()) goto failed; if (!D_DoomMainSetup()) goto failed; return true; failed: { struct retro_message msg; char msg_local[256]; snprintf(msg_local, sizeof(msg_local), "ROM loading failed..."); msg.msg = msg_local; msg.frames = 360; if (environ_cb) environ_cb(RETRO_ENVIRONMENT_SET_MESSAGE, (void*)&msg); } if (screen_buf) free(screen_buf); I_SafeExit(-1); return false; }