Exemplo n.º 1
0
void
registerHleModule(const std::string &name,
                  HleModule *module)
{
   if (std::find(decaf::config::system::lle_modules.begin(),
                 decaf::config::system::lle_modules.end(),
                 name) != decaf::config::system::lle_modules.end()) {
      gLog->warn("Replacing HLE with LLE for module {}.", name);
      return;
   }

   // Register module
   decaf_check(sHleModules.find(name) == sHleModules.end());
   sHleModules.emplace(name, module);

   // Register every function symbol
   auto &symbolMap = module->getSymbolMap();

   for (auto &pair : symbolMap) {
      auto symbol = pair.second;

      if (symbol->type == HleSymbol::Function) {
         registerHleFunc(reinterpret_cast<HleFunction *>(symbol));
      }
   }
}
Exemplo n.º 2
0
uint32_t
registerUnimplementedHleFunc(const std::string &module, const std::string &name)
{
   auto ppcFn = new functions::HleFunctionImpl<void>();
   ppcFn->valid = false;
   ppcFn->module = module;
   ppcFn->name = name;
   ppcFn->wrapped_function = nullptr;
   registerHleFunc(ppcFn);
   return ppcFn->syscallID;
}
Exemplo n.º 3
0
void
registerHleModule(const std::string &name, HleModule *module)
{
   // TODO: Handle if there is a collision
   gHleModules.emplace(name, module);

   auto symbols = module->getSymbols();

   for (auto &sym : symbols) {
      if (sym->type == HleSymbol::Function) {
         registerHleFunc(reinterpret_cast<HleFunction*>(sym));
      }
   }
}