|
|
|
@@ -51,7 +51,7 @@ namespace games {
|
|
|
|
|
static robin_hood::unordered_map<std::string, std::vector<Analog> &> analogs;
|
|
|
|
|
static robin_hood::unordered_map<std::string, std::vector<Light> &> lights;
|
|
|
|
|
static robin_hood::unordered_map<std::string, std::vector<Option>> options;
|
|
|
|
|
static robin_hood::unordered_map<std::string, std::vector<std::string>> file_hints;
|
|
|
|
|
static robin_hood::unordered_map<std::string, std::vector<std::vector<std::string>>> 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<std::string> &get_games() {
|
|
|
|
@@ -559,7 +560,7 @@ namespace games {
|
|
|
|
|
return &it->second;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
std::vector<std::string> *get_game_file_hints(const std::string &game) {
|
|
|
|
|
std::vector<std::vector<std::string>> *get_game_file_hints(const std::string &game) {
|
|
|
|
|
initialize();
|
|
|
|
|
auto it = file_hints.find(game);
|
|
|
|
|
if (it == file_hints.end()) {
|
|
|
|
|