Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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;
}
Exemplo n.º 3
0
/**
    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;
}
Exemplo n.º 4
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));
}
Exemplo n.º 5
0
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;
}