diff --git a/src/spice2x/avs/core.cpp b/src/spice2x/avs/core.cpp index 8855dd8..b129099 100644 --- a/src/spice2x/avs/core.cpp +++ b/src/spice2x/avs/core.cpp @@ -7,6 +7,7 @@ #include #include "external/robin_hood.h" +#include "games/popn/popn.h" #include "launcher/logger.h" #include "launcher/signal.h" #include "util/deferlog.h" @@ -1179,6 +1180,15 @@ namespace avs { return; } + // hack, both hello! popn and popn hc using popn.dll + if (games::popn::is_pikapika_model()) { + auto old_size = HEAP_SIZE; + HEAP_SIZE = 0x20000000; + DEFAULT_HEAP_SIZE_SET = true; + log_info("avs-core", "updated heap size: {} -> {}", old_size, avs::core::HEAP_SIZE); + return; + } + if (HEAP_SIZE_DEFAULTS.find(dll_name) != HEAP_SIZE_DEFAULTS.end()) { auto old_size = HEAP_SIZE; diff --git a/src/spice2x/games/io.cpp b/src/spice2x/games/io.cpp index d035525..2612269 100644 --- a/src/spice2x/games/io.cpp +++ b/src/spice2x/games/io.cpp @@ -51,7 +51,7 @@ namespace games { static robin_hood::unordered_map &> analogs; static robin_hood::unordered_map &> lights; static robin_hood::unordered_map> options; - static robin_hood::unordered_map> file_hints; + static robin_hood::unordered_map>> file_hints; static void initialize() { @@ -68,7 +68,7 @@ namespace games { buttons_help.insert({ bbc, bbc::get_buttons_help() }); analogs.insert({ bbc, bbc::get_analogs() }); lights.insert({ bbc, bbc::get_lights() }); - file_hints[bbc].emplace_back("bsch.dll"); + file_hints[bbc].push_back({"bsch.dll"}); // hpm const std::string hpm("HELLO! Pop'n Music"); @@ -76,32 +76,32 @@ namespace games { buttons.insert({ hpm, hpm::get_buttons() }); buttons_help.insert({ hpm, hpm::get_buttons_help() }); lights.insert({ hpm, hpm::get_lights() }); - file_hints[hpm].emplace_back("popn.dll"); + file_hints[hpm].push_back({"popn.dll", "pdh.dll"}); // bs const std::string bs("Beatstream"); games.push_back(bs); buttons.insert({ bs, bs::get_buttons() }); lights.insert({ bs, bs::get_lights() }); - file_hints[bs].emplace_back("beatstream.dll"); - file_hints[bs].emplace_back("beatstream1.dll"); - file_hints[bs].emplace_back("beatstream2.dll"); + file_hints[bs].push_back({"beatstream.dll"}); + file_hints[bs].push_back({"beatstream1.dll"}); + file_hints[bs].push_back({"beatstream2.dll"}); // ddr const std::string ddr("Dance Dance Revolution"); games.push_back(ddr); buttons.insert({ ddr, ddr::get_buttons() }); lights.insert({ ddr, ddr::get_lights() }); - file_hints[ddr].emplace_back("ddr.dll"); - file_hints[ddr].emplace_back("mdxja_945.dll"); - file_hints[ddr].emplace_back("arkmdxp3.dll"); + file_hints[ddr].push_back({"ddr.dll"}); + file_hints[ddr].push_back({"mdxja_945.dll"}); + file_hints[ddr].push_back({"arkmdxp3.dll"}); // dea const std::string dea("Dance Evolution"); games.push_back(dea); buttons.insert({ dea, dea::get_buttons() }); lights.insert({ dea, dea::get_lights() }); - file_hints[dea].emplace_back("arkkdm.dll"); + file_hints[dea].push_back({"arkkdm.dll"}); // gitadora const std::string gitadora("GitaDora"); @@ -111,7 +111,7 @@ namespace games { analogs_help.insert({ gitadora, gitadora::get_analogs_help() }); analogs.insert({ gitadora, gitadora::get_analogs() }); lights.insert({ gitadora, gitadora::get_lights() }); - file_hints[gitadora].emplace_back("gdxg.dll"); + file_hints[gitadora].push_back({"gdxg.dll"}); // iidx const std::string iidx("Beatmania IIDX"); @@ -120,7 +120,7 @@ namespace games { buttons_help.insert({ iidx, iidx::get_buttons_help() }); analogs.insert({ iidx, iidx::get_analogs() }); lights.insert({ iidx, iidx::get_lights() }); - file_hints[iidx].emplace_back("bm2dx.dll"); + file_hints[iidx].push_back({"bm2dx.dll"}); // jb const std::string jb("Jubeat"); @@ -128,7 +128,7 @@ namespace games { buttons.insert({ jb, jb::get_buttons() }); buttons_help.insert({ jb, jb::get_buttons_help() }); lights.insert({ jb, jb::get_lights() }); - file_hints[jb].emplace_back("jubeat.dll"); + file_hints[jb].push_back({"jubeat.dll"}); // mga const std::string mga("Metal Gear"); @@ -136,7 +136,7 @@ namespace games { buttons.insert({ mga, mga::get_buttons() }); analogs.insert({ mga, mga::get_analogs() }); lights.insert({ mga, mga::get_lights() }); - file_hints[mga].emplace_back("launch.dll"); + file_hints[mga].push_back({"launch.dll"}); // museca const std::string museca("Museca"); @@ -145,7 +145,7 @@ namespace games { buttons_help.insert({ museca, museca::get_buttons_help() }); analogs.insert({ museca, museca::get_analogs() }); lights.insert({ museca, museca::get_lights() }); - file_hints[museca].emplace_back("museca.dll"); + file_hints[museca].push_back({"museca.dll"}); // nost const std::string nost("Nostalgia"); @@ -154,7 +154,7 @@ namespace games { buttons_help.insert({ nost, nost::get_buttons_help() }); analogs.insert({ nost, nost::get_analogs() }); lights.insert({ nost, nost::get_lights() }); - file_hints[nost].emplace_back("nostalgia.dll"); + file_hints[nost].push_back({"nostalgia.dll"}); // popn const std::string popn("Pop'n Music"); @@ -162,41 +162,42 @@ namespace games { buttons.insert({ popn, popn::get_buttons() }); buttons_help.insert({ popn, popn::get_buttons_help() }); lights.insert({ popn, popn::get_lights() }); - file_hints[popn].emplace_back("popn19.dll"); - file_hints[popn].emplace_back("popn20.dll"); - file_hints[popn].emplace_back("popn21.dll"); - file_hints[popn].emplace_back("popn22.dll"); - file_hints[popn].emplace_back("popn23.dll"); - file_hints[popn].emplace_back("popn24.dll"); - file_hints[popn].emplace_back("popn25.dll"); + file_hints[popn].push_back({"popn19.dll"}); + file_hints[popn].push_back({"popn20.dll"}); + file_hints[popn].push_back({"popn21.dll"}); + file_hints[popn].push_back({"popn22.dll"}); + file_hints[popn].push_back({"popn23.dll"}); + file_hints[popn].push_back({"popn24.dll"}); + file_hints[popn].push_back({"popn25.dll"}); + file_hints[popn].push_back({"popn.dll", "libaio-iob2_video.dll"}); // qma const std::string qma("Quiz Magic Academy"); games.push_back(qma); buttons.insert({ qma, qma::get_buttons() }); lights.insert({ qma, qma::get_lights() }); - file_hints[qma].emplace_back("client.dll"); + file_hints[qma].push_back({"client.dll"}); // rb const std::string rb("Reflec Beat"); games.push_back(rb); buttons.insert({ rb, rb::get_buttons() }); lights.insert({ rb, rb::get_lights() }); - file_hints[rb].emplace_back("reflecbeat.dll"); + file_hints[rb].push_back({"reflecbeat.dll"}); // shogikai std::string shogikai("Tenkaichi Shogikai"); games.push_back(shogikai); buttons.insert({ shogikai, shogikai::get_buttons() }); lights.insert({ shogikai, shogikai::get_lights() }); - file_hints[shogikai].emplace_back("shogi_engine.dll"); + file_hints[shogikai].push_back({"shogi_engine.dll"}); // rf3d const std::string rf3d("Road Fighters 3D"); games.push_back(rf3d); buttons.insert({ rf3d, rf3d::get_buttons() }); analogs.insert({ rf3d, rf3d::get_analogs() }); - file_hints[rf3d].emplace_back("jgt.dll"); + file_hints[rf3d].push_back({"jgt.dll"}); // sc const std::string sc("Steel Chronicle"); @@ -204,7 +205,7 @@ namespace games { buttons.insert({ sc, sc::get_buttons() }); analogs.insert({ sc, sc::get_analogs() }); lights.insert({ sc, sc::get_lights() }); - file_hints[sc].emplace_back("gamekgg.dll"); + file_hints[sc].push_back({"gamekgg.dll"}); // sdvx const std::string sdvx("Sound Voltex"); @@ -213,13 +214,13 @@ namespace games { buttons_help.insert({ sdvx, sdvx::get_buttons_help() }); analogs.insert({ sdvx, sdvx::get_analogs() }); lights.insert({ sdvx, sdvx::get_lights() }); - file_hints[sdvx].emplace_back("soundvoltex.dll"); + file_hints[sdvx].push_back({"soundvoltex.dll"}); // mfc const std::string mfc("Mahjong Fight Club"); games.push_back(mfc); buttons.insert({ mfc, mfc::get_buttons() }); - file_hints[mfc].emplace_back("allinone.dll"); + file_hints[mfc].push_back({"allinone.dll"}); // ftt const std::string ftt("FutureTomTom"); @@ -228,21 +229,21 @@ namespace games { buttons_help.insert({ ftt, ftt::get_buttons_help() }); analogs.insert({ ftt, ftt::get_analogs() }); lights.insert({ ftt, ftt::get_lights() }); - file_hints[ftt].emplace_back("arkmmd.dll"); + file_hints[ftt].push_back({"arkmmd.dll"}); // loveplus const std::string loveplus("LovePlus"); games.push_back(loveplus); buttons.insert({ loveplus, loveplus::get_buttons() }); lights.insert({ loveplus, loveplus::get_lights() }); - file_hints[loveplus].emplace_back("arkklp.dll"); + file_hints[loveplus].push_back({"arkklp.dll"}); // scotto const std::string scotto("Scotto"); games.push_back(scotto); buttons.insert({ scotto, scotto::get_buttons() }); lights.insert({ scotto, scotto::get_lights() }); - file_hints[scotto].emplace_back("scotto.dll"); + file_hints[scotto].push_back({"scotto.dll"}); // drs const std::string drs("DANCERUSH"); @@ -250,14 +251,14 @@ namespace games { buttons.insert({ drs, drs::get_buttons() }); buttons_help.insert({ drs, drs::get_buttons_help() }); lights.insert({ drs, drs::get_lights() }); - file_hints[drs].emplace_back("superstep.dll"); + file_hints[drs].push_back({"superstep.dll"}); // otoca const std::string otoca("Otoca D'or"); games.push_back(otoca); buttons.insert({ otoca, otoca::get_buttons() }); buttons_help.insert({ otoca, otoca::get_buttons_help() }); - file_hints[otoca].emplace_back("arkkep.dll"); + file_hints[otoca].push_back({"arkkep.dll"}); // winning eleven const std::string we("Winning Eleven"); @@ -265,27 +266,27 @@ namespace games { buttons.insert({ we, we::get_buttons() }); analogs.insert({ we, we::get_analogs() }); lights.insert({ we, we::get_lights() }); - file_hints[we].emplace_back("weac12_bootstrap_release.dll"); - file_hints[we].emplace_back("arknck.dll"); + file_hints[we].push_back({"weac12_bootstrap_release.dll"}); + file_hints[we].push_back({"arknck.dll"}); // silent scope: bone eater const std::string silentscope("Silent Scope: Bone Eater"); games.push_back(silentscope); buttons.insert({ silentscope, silentscope::get_buttons() }); analogs.insert({ silentscope, silentscope::get_analogs() }); - file_hints[silentscope].emplace_back("arkndd.dll"); + file_hints[silentscope].push_back({"arkndd.dll"}); // charge machine const std::string pcm("Charge Machine"); games.push_back(pcm); buttons.insert({ pcm, pcm::get_buttons() }); - file_hints[pcm].emplace_back("launch.dll"); + file_hints[pcm].push_back({"launch.dll"}); // ongaku paradise const std::string op("Ongaku Paradise"); games.push_back(op); buttons.insert({ op, onpara::get_buttons() }); - file_hints[op].emplace_back("arkjc9.dll"); + file_hints[op].push_back({"arkjc9.dll"}); // bc const std::string bc("Busou Shinki: Armored Princess Battle Conductor"); @@ -293,7 +294,7 @@ namespace games { buttons.insert({ bc, bc::get_buttons() }); buttons_help.insert({ bc, bc::get_buttons_help() }); analogs.insert({ bc, bc::get_analogs() }); - file_hints[bc].emplace_back("game/bsac_app.exe"); + file_hints[bc].push_back({"game/bsac_app.exe"}); // ccj const std::string ccj("Chase Chase Jokers"); @@ -302,21 +303,21 @@ namespace games { buttons_help.insert({ ccj, ccj::get_buttons_help() }); analogs.insert({ ccj, ccj::get_analogs() }); lights.insert({ ccj, ccj::get_lights() }); - file_hints[ccj].emplace_back("game/chaseproject.exe"); + file_hints[ccj].push_back({"game/chaseproject.exe"}); // QuizKnock STADIUM const std::string qks("QuizKnock STADIUM"); games.push_back(qks); buttons.insert({ qks, qks::get_buttons() }); buttons_help.insert({ qks, qks::get_buttons_help() }); - file_hints[qks].emplace_back("game/uks.exe"); + file_hints[qks].push_back({"game/uks.exe"}); // Mahjong Fight Girl const std::string mfg("Mahjong Fight Girl"); games.push_back(mfg); buttons.insert({ mfg, mfg::get_buttons() }); buttons_help.insert({ mfg, mfg::get_buttons_help() }); - file_hints[mfg].emplace_back("game/MFGClient_Data"); + file_hints[mfg].push_back({"game/MFGClient_Data"}); // Polaris Chord const std::string pc("Polaris Chord"); @@ -325,7 +326,7 @@ namespace games { buttons_help.insert({ pc, pc::get_buttons_help() }); analogs.insert({ pc, pc::get_analogs() }); lights.insert({ pc, pc::get_lights() }); - file_hints[pc].emplace_back("game/svm.exe"); + file_hints[pc].push_back({"game/svm.exe"}); } const std::vector &get_games() { @@ -559,7 +560,7 @@ namespace games { return &it->second; } - std::vector *get_game_file_hints(const std::string &game) { + std::vector> *get_game_file_hints(const std::string &game) { initialize(); auto it = file_hints.find(game); if (it == file_hints.end()) { diff --git a/src/spice2x/games/io.h b/src/spice2x/games/io.h index 1f44587..81c3de0 100644 --- a/src/spice2x/games/io.h +++ b/src/spice2x/games/io.h @@ -64,5 +64,5 @@ namespace games { std::vector *get_analogs(const std::string &game); std::vector *get_lights(const std::string &game); std::vector