string Ananke::syncBsxSatellaview(const string &pathname) {
  auto buffer = file::read({pathname, "program.rom"});
  if(buffer.size() == 0) return "";

  directory::remove(pathname);
  information.path = pathname;
  information.name = notdir(string{pathname}.rtrim<1>("/"));
  return openBsxSatellaview(buffer);
}
Example #2
0
void Link::load() {
  if(opened()) close();
  string basename = interface->path(Cartridge::Slot::Base, "");
  string name = program != "" ? program : notdir(basename);
  string path = dir(basename);
  if(open(name, path)) {
    link_power = sym("link_power");
    link_reset = sym("link_reset");
    link_run   = sym("link_run"  );
    link_read  = sym("link_read" );
    link_write = sym("link_write");
  }
}
Example #3
0
string DiskBrowser::queryImageInformation() {
  string text;
  string filename;
  if(currentFilename(filename) == true) {
    if(striend(filename, ".sfc") || striend(filename, ".smc")) {
      unsigned size = file::size(filename);
      text << "<b>" << notdir(nall::basename(filename)) << "</b>";
      text << "<small><table cellspacing='5'>";
      text << "<tr><td><b>ROM size:</b></td><td>" << size * 8 / 1024 / 1024 << "mbit</td></tr>";
      text << "</table></small>";
    }
  }
  return text;
}
Example #4
0
File: common.c Project: kulp/tenyr
static void main_debug_(int level, const char *file, int line,
    const char *func, const char *fmt, ...)
{
#ifndef DEBUG
#define DEBUG 0
#endif
    if (level > DEBUG)
        return;

    va_list vl;
    va_start(vl,fmt);
    vfprintf(stderr, fmt, vl);
    va_end(vl);
    fprintf(stderr, " (in %s() at %s:%d)\n", func, notdir(file), line);
}
Example #5
0
File: common.c Project: kulp/tenyr
static void NORETURN main_fatal_(int code, const char *file, int line,
    const char *func, const char *fmt, ...)
{
    va_list vl;
    va_start(vl,fmt);
    vfprintf(stderr, fmt, vl);
    va_end(vl);
    fprintf(stderr, " (in %s() at %s:%d)", func, notdir(file), line);

    if (code & PRINT_ERRNO)
        fprintf(stderr, ": %s\n", strerror(errno));
    else
        fputc('\n', stderr);

    longjmp(errbuf, code);
}
Example #6
0
string Ananke::syncSufamiTurbo(const string &pathname) {
  auto buffer = file::read({pathname, "program.rom"});
  if(buffer.size() == 0) return "";

  auto save = file::read({pathname, "save.ram"});
  if(save.size() == 0) save = file::read({pathname, "save.rwm"});

  directory::remove(pathname);
  information.path = pathname;
  information.name = notdir(string{pathname}.rtrim<1>("/"));
  string outputPath = openSufamiTurbo(buffer);

  if(save.size()) file::write({outputPath, "save.ram"}, save);

  return outputPath;
}
Example #7
0
void LibraryImport::onImportActivate() {
  if(program->ananke.open() == false) {
    MessageWindow().setText("ananke must be installed to use this feature").warning();
    return;
  }
  function<string ()> browse = program->ananke.sym("ananke_browse");
  if(!browse) return;
  audio.clear();  //ananke's browser is modal
  string pathname = browse();
  pathname.rtrim<1>("/");
  if(pathname.empty()) return;

  //after importing game, take user to the relevant game list to show the newly imported title
  string type = extension(pathname);
  for(signed bootable = 1; bootable >= 0; bootable--) {
    unsigned selection = 0;
    for(auto& browser : libraryManager->browsers) {
      unsigned mode = 0;
      for(auto& media : browser->emulator.media) {
        if(type == media.type && media.bootable == bootable) {
          browser->mediaMode.setSelection(mode);
          libraryManager->libraryFrame.setSelection(selection);
          libraryManager->onChange();

          //find game in list and select it
          string name = notdir(nall::basename(pathname));
          for(unsigned n = 0; n < browser->folders.rows(); n++) {
            if(browser->folders.text(n, 0) == name) {
              browser->folders.setSelection(n);
              browser->onChange();
              break;
            }
          }

          return;
        }
        mode++;
      }
      selection++;
    }
  }
}
Example #8
0
//override filename's path with filepath, but only if filepath isn't empty
//used for GUI's "path selection" functionality
string filepath(const char *filename, const char *filepath) {
  if(!filepath || !*filepath) return filename;
  return string() << dir(filepath) << notdir(filename);
}