From 537781e6d364cc3769ce08b05aaf0d16cbb0318f Mon Sep 17 00:00:00 2001 From: Horace And The Spider Date: Wed, 13 Feb 2019 09:46:32 +0000 Subject: [PATCH] WHDLoad and AutoBooter Update (#430) * Bugfix for 2nd controller selection * ignore netbeans project * Add experimental `-autocd=` loading of files (.cue works very well - .iso should also) * CD Autoloading adapted to include .uae file check and hostconf controller options * Beginning of Booter Panel implentation * Booter Panel development .. start on XML reading for picked LHA file * New WHDLoad booter, included updated boot-data.zip, plus new hostprefs FIXED_HEIGHT= option and bugfixes for XML reading, and symlink ROM scan. Plus updated XML * Upload of .RTB files that need to accompany the Symlinked Kickstarts, for WHDLoad compatibility. --- .gitignore | 4 + src/include/options.h | 13 + src/main.cpp | 32 + src/osdep/amiberry_gui.cpp | 4 + src/osdep/amiberry_whdbooter.cpp | 636 ++++++-- src/osdep/gui/PanelPaths.cpp | 2 + src/osdep/target.h | 1 + whdboot/boot-data.zip | Bin 664771 -> 706007 bytes whdboot/game-data/whdload_db.xml | 1379 +++++++++++++++-- .../save-data/Kickstarts/kick33180.A500.RTB | Bin 0 -> 3882 bytes .../save-data/Kickstarts/kick33192.A500.RTB | Bin 0 -> 3882 bytes .../save-data/Kickstarts/kick34005.A500.RTB | Bin 0 -> 4020 bytes .../save-data/Kickstarts/kick40063.A600.RTB | Bin 0 -> 5000 bytes .../save-data/Kickstarts/kick40068.A1200.RTB | Bin 0 -> 5008 bytes .../save-data/Kickstarts/kick40068.A4000.RTB | Bin 0 -> 4976 bytes 15 files changed, 1793 insertions(+), 278 deletions(-) mode change 100644 => 100755 whdboot/boot-data.zip create mode 100755 whdboot/save-data/Kickstarts/kick33180.A500.RTB create mode 100755 whdboot/save-data/Kickstarts/kick33192.A500.RTB create mode 100755 whdboot/save-data/Kickstarts/kick34005.A500.RTB create mode 100755 whdboot/save-data/Kickstarts/kick40063.A600.RTB create mode 100755 whdboot/save-data/Kickstarts/kick40068.A1200.RTB create mode 100755 whdboot/save-data/Kickstarts/kick40068.A4000.RTB diff --git a/.gitignore b/.gitignore index 55b77d7a..8eb60bbc 100644 --- a/.gitignore +++ b/.gitignore @@ -19,6 +19,10 @@ CodeDB *.suo *.old +### NetBeans ### +nbproject* + + ### VSLinux ### VSLinux/obj VSLinux/bin diff --git a/src/include/options.h b/src/include/options.h index 40e3892d..e680b8b6 100644 --- a/src/include/options.h +++ b/src/include/options.h @@ -101,7 +101,15 @@ struct joypad_map_layout { int dpad_up_action = 0; int dpad_down_action = 0; int lstick_select_action = 0; + int lstick_left_action = 0; + int lstick_right_action = 0; + int lstick_up_action = 0; + int lstick_down_action = 0; int rstick_select_action = 0; + int rstick_left_action = 0; + int rstick_right_action = 0; + int rstick_up_action = 0; + int rstick_down_action = 0; }; #endif @@ -853,6 +861,9 @@ struct uae_prefs { bool use_retroarch_menu; bool use_retroarch_reset; bool use_retroarch_statebuttons; + + TCHAR whdload_path[MAX_DPATH]; + TCHAR whdload_file[MAX_DPATH]; #endif /* ANDROID */ @@ -980,6 +991,8 @@ extern void cfgfile_compatibility_rtg(struct uae_prefs *p); extern void whdload_auto_prefs (struct uae_prefs *p, char* filename); +extern void cd_auto_prefs (struct uae_prefs *p, char* filename); +extern void symlink_roms(struct uae_prefs *p); extern void check_prefs_changed_custom (void); diff --git a/src/main.cpp b/src/main.cpp index f02d44fa..e0c39fab 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -523,6 +523,7 @@ static void parse_cmdline(int argc, TCHAR **argv) xfree(txt); loaded = true; } + // for backwards compatibility only - WHDLoading else if (_tcsncmp(argv[i], _T("-autowhdload="), 13) == 0) { const auto txt = parsetextpath(argv[i] + 13); whdload_auto_prefs(&currprefs, txt); @@ -530,6 +531,37 @@ static void parse_cmdline(int argc, TCHAR **argv) firstconfig = false; loaded = true; } + // for backwards compatibility only - CDLoading + else if (_tcsncmp(argv[i], _T("-autocd="), 8) == 0) { + const auto txt = parsetextpath(argv[i] + 8); + cd_auto_prefs(&currprefs, txt); + xfree(txt); + firstconfig = false; + loaded = true; + } + + // autoload .... .cue / .lha + else if ((_tcsncmp(argv[i], _T("-autoload="), 10) == 0)) + { + const auto txt = parsetextpath(argv[i] + 10); + + //const auto txt2 = *GetExtension (txt); // Extract the extension from the string (incl '.') + +// if (_tcsncmp(_T(txt2), _T("lha"),3) == 0) +// { +// printf("WHDLOAD... %s\n", txt); +// whdload_auto_prefs(&currprefs, txt); +// } +// else if (_tcsncmp(txt2, _T(".cue"),3) == 0) +// { +// printf("CDTV/CD32... %s\n", txt); + cd_auto_prefs(&currprefs, txt); +// } +// else +// { +// printf("Cant find extension ... %s\n", txt); +// } + } else if (_tcscmp(argv[i], _T("-f")) == 0) { /* Check for new-style "-f xxx" argument, where xxx is config-file */ if (i + 1 == argc) { diff --git a/src/osdep/amiberry_gui.cpp b/src/osdep/amiberry_gui.cpp index f1a95093..7cc3860a 100644 --- a/src/osdep/amiberry_gui.cpp +++ b/src/osdep/amiberry_gui.cpp @@ -252,6 +252,10 @@ static void scan_rom(char *path) zfile_zopen(path, scan_rom_2, 0); } +void SymlinkROMs() +{ + symlink_roms(&changed_prefs); +} void RescanROMs() { diff --git a/src/osdep/amiberry_whdbooter.cpp b/src/osdep/amiberry_whdbooter.cpp index b6bfd091..45085d63 100644 --- a/src/osdep/amiberry_whdbooter.cpp +++ b/src/osdep/amiberry_whdbooter.cpp @@ -34,6 +34,7 @@ extern char currentDir[MAX_DPATH]; extern char last_loaded_config[MAX_DPATH]; #include /// Horace added +#include struct game_options { @@ -78,6 +79,7 @@ struct host_options TCHAR frameskip[256] = "nul\0"; TCHAR aspect_ratio[256] = "nul\0"; TCHAR line_double[256] = "nul\0"; + TCHAR fixed_height[256] = "nul\0"; }; static xmlNode* get_node(xmlNode* node, const char* name) @@ -181,6 +183,9 @@ struct membuf : std::streambuf } }; + + + std::string find_whdload_game_option(const TCHAR* find_setting, char* whd_options) { char temp_options[4096]; @@ -190,16 +195,40 @@ std::string find_whdload_game_option(const TCHAR* find_setting, char* whd_option auto output = "nul"; auto full_line = strtok(temp_options, "\n"); + + while (full_line != nullptr) { - std::string t = full_line; + + // remove leading tabs + if (full_line[0] == '\t' && full_line[1] == '\t') + { + memmove(full_line, full_line + 2, (sizeof(full_line[0]) - 2) / sizeof(full_line[0])); + } + + + // remove leading tabs +// for (auto i = 1; i < 5; ++i) +// { +// if (full_line[0] == '\t') +// { +// memmove(full_line, full_line + 1, (sizeof(full_line[0]) - 1) / sizeof(full_line[0])); +// } +// else +// break; +// } +// + std::string t = full_line; + + // t.erase(std::remove(t.begin(), t.end(), '\t'), t.end()); // remove tabs strcpy(temp_setting, find_setting); strcat(temp_setting, "="); - + if (strlen(full_line) >= strlen(temp_setting)) { - // check that the beginging of the full line - if (strncmp(temp_setting, full_line, strlen(find_setting)) == 0) + // check that the beginging of the full line + // if (strncmp(temp_setting, full_line, strlen(find_setting)) == 0) + if (strncmp(temp_setting, full_line, strlen(temp_setting)) == 0) { t.erase(t.begin(), t.begin() + strlen(temp_setting)); return t; @@ -257,7 +286,7 @@ struct host_options get_host_settings(char* HW) strcpy(output_detail.aspect_ratio, find_whdload_game_option("ASPECT_RATIO_FIX", HW).c_str()); strcpy(output_detail.frameskip, find_whdload_game_option("FRAMESKIP", HW).c_str()); strcpy(output_detail.line_double, find_whdload_game_option("LINE_DOUBLING", HW).c_str()); - + strcpy(output_detail.fixed_height, find_whdload_game_option("FIXED_HEIGHT", HW).c_str()); return output_detail; } @@ -269,12 +298,18 @@ void make_rom_symlink(const char* kick_short, char* kick_path, int kick_numb, st // do the checks... snprintf(kick_long, MAX_DPATH, "%s/%s", kick_path, kick_short); + + // this should sort any broken links + my_unlink(kick_long); + if (!zfile_exists(kick_long)) { roms[0] = kick_numb; // kickstart 1.2 A500 const auto rom_test = configure_rom(p, roms, 0); // returns 0 or 1 if found or not found if (rom_test == 1) - symlink(p->romfile, kick_long); + { symlink(p->romfile, kick_long); + write_log("Making SymLink for Kickstart ROM: %s\n",kick_long); + } } } @@ -287,6 +322,9 @@ void symlink_roms(struct uae_prefs* p) char tmp[MAX_DPATH]; char tmp2[MAX_DPATH]; + + write_log("SymLink Kickstart ROMs for Booter\n"); + // here we can do some checks for Kickstarts we might need to make symlinks for strncpy(currentDir, start_path_data, MAX_DPATH); @@ -334,10 +372,10 @@ void symlink_roms(struct uae_prefs* p) symlink(tmp, tmp2); } - -void whdload_auto_prefs(struct uae_prefs* p, char* filepath) +void cd_auto_prefs(struct uae_prefs* p, char* filepath) { + // setup variables etc TCHAR game_name[MAX_DPATH]; TCHAR* txt2 = nullptr; @@ -346,28 +384,16 @@ void whdload_auto_prefs(struct uae_prefs* p, char* filepath) char boot_path[MAX_DPATH]; char save_path[MAX_DPATH]; char config_path[MAX_DPATH]; - // char GameTypePath[MAX_DPATH]; char whd_config[255]; char hardware_settings[4096]; - char custom_settings[4096]; + //char custom_settings[4096]; fetch_configurationpath(config_path,MAX_DPATH); - - // - // *** KICKSTARTS *** - - symlink_roms(p); - - // this allows A600HD to be used to slow games down - int roms[2]; - roms[0] = 15; // kickstart 2.05 A600HD .. 10 - const auto rom_test = configure_rom(p, roms, 0); // returns 0 or 1 if found or not found - const auto a600_available = rom_test; - - // + // *** GAME DETECTION *** - + printf("\nCD Autoload: %s \n\n",filepath); + // REMOVE THE FILE PATH AND EXTENSION const auto filename = my_getfilepart(filepath); // SOMEWHERE HERE WE NEED TO SET THE GAME 'NAME' FOR SAVESTATE ETC PURPOSES @@ -392,11 +418,15 @@ void whdload_auto_prefs(struct uae_prefs* p, char* filepath) return; } - // LOAD HOST OPTIONS - char whd_path[MAX_DPATH]; - struct host_options host_detail; - snprintf(whd_path, MAX_DPATH, "%s/whdboot/", start_path_data); + + // LOAD HOST OPTIONS + char whd_path[MAX_DPATH]; + snprintf(whd_path, MAX_DPATH, "%s/whdboot/", start_path_data); + + // this should be made into it's own routine!! 1 (see repeat, below) + + struct host_options host_detail; strcpy(whd_config, whd_path); strcat(whd_config, "hostprefs.conf"); @@ -409,6 +439,226 @@ void whdload_auto_prefs(struct uae_prefs* p, char* filepath) _stprintf(hardware_settings, "%s", contents.c_str()); + host_detail = get_host_settings(hardware_settings); + } + + + // + // *** EMULATED HARDWARE *** + // + + p->start_gui = false; + + const int is_cdtv = (strstr(filepath, "CD32") != nullptr || strstr(filepath, "cdtv") != nullptr); + const int is_cd32 = (strstr(filepath, "CD32") != nullptr || strstr(filepath, "cd32") != nullptr); + + // CD32 + if (static_cast(is_cd32)) + { + _tcscpy(p->description, _T("AutoBoot Configuration [CD32]")); + // SET THE BASE AMIGA (CD32) + built_in_prefs(&currprefs, 8, 0, 0, 0); + } + else if (static_cast(is_cd32)) + { + _tcscpy(p->description, _T("AutoBoot Configuration [CDTV]")); + // SET THE BASE AMIGA (CDTV) + built_in_prefs(&currprefs, 9, 0, 0, 0); + } + else + { + _tcscpy(p->description, _T("AutoBoot Configuration [A1200CD]")); + // SET THE BASE AMIGA (Expanded A1200) + built_in_prefs(&currprefs, 4, 1, 0, 0); + + } + + + // enable CD + _stprintf(tmp, "cd32cd=1"); + txt2 = parsetextpath(_T(tmp)); + cfgfile_parse_line(p, txt2, 0); + + // mount the image + _stprintf(tmp, "cdimage0=%s,image", filepath); + txt2 = parsetextpath(_T(tmp)); + cfgfile_parse_line(p, txt2, 0); + + //cfgfile_parse_option(&currprefs, _T("cdimage0"), filepath, 0); + + + + //APPLY THE SETTINGS FOR MOUSE/JOYSTICK ETC + // CD32 + if (static_cast(is_cd32)) + { p->jports[0].mode = 7; + p->jports[1].mode = 7; + } + else + { + // JOY + p->jports[1].mode = 3; + // MOUSE + p->jports[0].mode = 2; + } + + // APPLY SPECIAL CONFIG E.G. MOUSE OR ALT. JOYSTICK SETTINGS + for (auto& jport : p->jports) + { + jport.id = JPORT_NONE; + jport.idc.configname[0] = 0; + jport.idc.name[0] = 0; + jport.idc.shortid[0] = 0; + } + + // WHAT IS THE MAIN CONTROL? + // PORT 0 - MOUSE + if (static_cast(is_cd32) && !strcmpi(host_detail.controller2, "nul") == 0) + { + _stprintf(txt2, "%s=%s", _T("joyport0"), _T(host_detail.controller2)); + cfgfile_parse_line(p, txt2, 0); + } + else if (!strcmpi(host_detail.mouse1, "nul") == 0) + { + _stprintf(txt2, "%s=%s", _T("joyport0"), _T(host_detail.mouse1)); + cfgfile_parse_line(p, txt2, 0); + } + else + { + _stprintf(txt2, "%s=mouse", _T("joyport0")); + cfgfile_parse_line(p, txt2, 0); + } + + + // PORT 1 - JOYSTICK + if (!strcmpi(host_detail.controller1, "nul") == 0) + { + _stprintf(txt2, "%s=%s", _T("joyport1"), _T(host_detail.controller1)); + cfgfile_parse_line(p, txt2, 0); + } + else + { + _stprintf(txt2, "%s=joy1", _T("joyport1")); + cfgfile_parse_line(p, txt2, 0); + } + +} + + +void whdload_auto_prefs(struct uae_prefs* p, char* filepath) + +{ + // setup variables etc + TCHAR game_name[MAX_DPATH]; + TCHAR* txt2 = nullptr; + TCHAR tmp[MAX_DPATH]; + + char boot_path[MAX_DPATH]; + char save_path[MAX_DPATH]; + char config_path[MAX_DPATH]; + char whd_path[MAX_DPATH]; + char kick_path[MAX_DPATH]; + + // char GameTypePath[MAX_DPATH]; + char whd_config[255]; + char whd_startup[255]; + + char whd_bootscript[4096]; + + char hardware_settings[4096]; + char custom_settings[4096]; + + char selected_slave[4096]; // note!! this should be global later on, and only collected from the XML if set to 'nothing' + char subpath[4096]; + + + + strcpy(selected_slave, ""); + + fetch_configurationpath(config_path,MAX_DPATH); + + // + // *** KICKSTARTS *** + + symlink_roms(p); + + // this allows A600HD to be used to slow games down + int roms[2]; + roms[0] = 15; // kickstart 2.05 A600HD .. 10 + const auto rom_test = configure_rom(p, roms, 0); // returns 0 or 1 if found or not found + const auto a600_available = rom_test; + + if (a600_available == true) + { + write_log("WHDBooter - Host: A600 ROM Available \n"); + } + + // + // *** GAME DETECTION *** + + // REMOVE THE FILE PATH AND EXTENSION + const auto filename = my_getfilepart(filepath); + // SOMEWHERE HERE WE NEED TO SET THE GAME 'NAME' FOR SAVESTATE ETC PURPOSES + extractFileName(filepath, last_loaded_config); + extractFileName(filepath, game_name); + removeFileExtension(game_name); + + auto filesize = get_file_size(filepath); + // const TCHAR* filesha = get_sha1_txt (input, filesize); <<< ??! FIX ME + + + // LOAD GAME SPECIFICS FOR EXISTING .UAE - USE SHA1 IF AVAILABLE + // CONFIG LOAD IF .UAE IS IN CONFIG PATH + strcpy(whd_config, config_path); + strcat(whd_config, game_name); + strcat(whd_config, ".uae"); + + snprintf(whd_path, MAX_DPATH, "%s/whdboot/save-data/Autoboots/", start_path_data); + strcpy(whd_startup, whd_path); + strcat(whd_startup, game_name); + strcat(whd_startup, ".auto-startup"); + + my_mkdir("/tmp/s"); + my_mkdir("/tmp/c"); + my_mkdir("/tmp/devs"); + + remove("/tmp/s/startup-sequence"); + my_unlink("/tmp/s/startup-sequence"); + + // LOAD HOST OPTIONS + snprintf(whd_path, MAX_DPATH, "%s/whdboot/WHDLoad", start_path_data); + + // are we using save-data/ ? + snprintf(kick_path, MAX_DPATH, "%s/whdboot/save-data/Kickstarts", start_path_data); + + // boot with existing .UAE if possible, but for this the auto-startup must exist + if (zfile_exists(whd_config) && zfile_exists(whd_startup)) + { + symlink(whd_startup, "/tmp/s/startup-sequence"); + symlink(whd_path, "/tmp/c/WHDLoad"); + symlink(kick_path, "/tmp/devs/Kickstarts"); + target_cfgfile_load(&currprefs, whd_config, CONFIG_TYPE_ALL, 0); + return; + } + + + + // this should be made into it's own routine!! 1 (see repeat, above) + snprintf(whd_path, MAX_DPATH, "%s/whdboot/", start_path_data); + + struct host_options host_detail; + strcpy(whd_config, whd_path); + strcat(whd_config, "hostprefs.conf"); + + if (zfile_exists(whd_config)) // use hostprefs + { + ifstream read_file(whd_config); + std::ifstream in(whd_config); + std::string contents((std::istreambuf_iterator(in)), + std::istreambuf_iterator()); + + _stprintf(hardware_settings, "%s", contents.c_str()); + host_detail = get_host_settings(hardware_settings); } @@ -419,117 +669,173 @@ void whdload_auto_prefs(struct uae_prefs* p, char* filepath) // EDIT THE FILE NAME TO USE HERE - strcpy(whd_config, whd_path); - strcat(whd_config, game_name); - strcat(whd_config, ".whd"); + + strcpy(whd_config, whd_path); + strcat(whd_config, "whdload_db.xml"); + + if (zfile_exists(whd_config)) // use XML database + { + //printf("XML exists %s\n",game_name); + + const auto doc = xmlParseFile(whd_config); + const auto root_element = xmlDocGetRootElement(doc); + auto game_node = get_node(root_element, "whdbooter"); + + while (game_node != nullptr) + { + const auto attr = xmlGetProp(game_node, reinterpret_cast("filename")); + if (attr != nullptr) + { + if (strcmpi(reinterpret_cast(attr),game_name) == 0) + { + // now get the and items + // get hardware + auto temp_node = game_node->xmlChildrenNode; + temp_node = get_node(temp_node, "hardware"); + if (xmlNodeGetContent(temp_node) != nullptr) + { + _stprintf(hardware_settings, "%s", + reinterpret_cast(xmlNodeGetContent(temp_node))); + game_detail = get_game_settings(hardware_settings); + + write_log("WHDBooter - Game H/W Settings: \n%s\n",hardware_settings); + + } + + // get custom controls + temp_node = game_node->xmlChildrenNode; + temp_node = get_node(temp_node, "custom_controls"); + if (xmlNodeGetContent(temp_node) != nullptr) + { + _stprintf(custom_settings, "%s", + reinterpret_cast(xmlNodeGetContent(temp_node))); + // process these later + } + + // if selected_slave = "" then use the default from the XML.... + + if (strlen(selected_slave) == 0) + { + temp_node = game_node->xmlChildrenNode; + temp_node = get_node(temp_node, "slave_default"); + if (xmlNodeGetContent(temp_node) != nullptr) + { + _stprintf(selected_slave, "%s", + reinterpret_cast(xmlNodeGetContent(temp_node))); + // process these later + write_log("WHDBooter - Default Slave: %s\n",selected_slave); + } + + temp_node = game_node->xmlChildrenNode; + temp_node = get_node(temp_node, "subpath"); + + if (xmlNodeGetContent(temp_node) != nullptr) + { + _stprintf(subpath, "%s", + reinterpret_cast(xmlNodeGetContent(temp_node))); + // process these later + write_log("WHDBooter - SubPath: %s\n",subpath); + } + + temp_node = game_node->xmlChildrenNode; + printf("temp node: %s\n",temp_node); + + } + break; + } + } + xmlFree(attr); + game_node = game_node->next; + } + xmlCleanupParser(); + } - if (zfile_exists(whd_config)) // use direct .whd file - { - ifstream readFile(whd_config); - std::ifstream in(whd_config); - std::string contents((std::istreambuf_iterator(in)), - std::istreambuf_iterator()); + //printf("selected_slave: %s\n",selected_slave); + + // then here, we will write a startup-sequence file (formerly autoboot file) + if (strlen(selected_slave) != 0 && !zfile_exists(whd_startup)) + { + // _stprintf(whd_bootscript, "DH3:C/Assign C: DH3:C/ ADD\n"); + // _stprintf(whd_bootscript, "DH3:C/Assign LIBS: DH3:LIBS/ ADD\n"); + _stprintf(whd_bootscript, "CD \"Games:%s\"\n",subpath); + _stprintf(whd_bootscript, "%sWHDLoad SLAVE=\"games:%s/%s\"",whd_bootscript,subpath,selected_slave); + _stprintf(whd_bootscript, "%s PRELOAD NOWRITECACHE NOREQ SPLASHDELAY=0",whd_bootscript); + _stprintf(whd_bootscript, "%s SAVEPATH=Saves:Savegames/ SAVEDIR=\"%s\"",whd_bootscript,subpath); + _stprintf(whd_bootscript, "%s\n",whd_bootscript,subpath); + + write_log("WHDBooter - Created Startup-Sequence \n\n%s\n",whd_bootscript); + + // create a file with save-data/Autoboots/ game name .auto-startup - _stprintf(hardware_settings, "%s", contents.c_str()); - game_detail = get_game_settings(hardware_settings); - } - else - { - strcpy(whd_config, whd_path); - strcat(whd_config, "whdload_db.xml"); + write_log("WHDBooter - Saved Auto-Startup to %s\n",whd_startup); + + ofstream myfile (whd_startup); + if (myfile.is_open()) + { + myfile << whd_bootscript; + myfile.close(); + } + } + + // now we should have a startup-file (if we dont, we are going to use the orignal booter) + if (zfile_exists(whd_startup)) + { + write_log("WHDBooter - Found Auto-Startup to SymLink\n"); + + // create a symlink to this as startup-sequence in /tmp/ + symlink(whd_startup, "/tmp/s/startup-sequence"); - if (zfile_exists(whd_config)) // use XML database - { - //printf("XML exists %s\n",game_name); + // create a symlink to WHDLoad in /tmp/ + snprintf(whd_path, MAX_DPATH, "%s/whdboot/WHDLoad", start_path_data); + symlink(whd_path, "/tmp/c/WHDLoad"); - const auto doc = xmlParseFile(whd_config); - const auto root_element = xmlDocGetRootElement(doc); - auto game_node = get_node(root_element, "whdbooter"); + // create a symlink for DEVS in /tmp/ + symlink(kick_path, "/tmp/devs/Kickstarts"); + } + - while (game_node != nullptr) - { - const auto attr = xmlGetProp(game_node, reinterpret_cast("filename")); - if (attr != nullptr) - { - // printf ("%s\n",attr); - if (strcmpi(reinterpret_cast(attr),game_name) == 0) - { - // now get the and items - - //printf("found game in XML\n"); - auto temp_node = game_node->xmlChildrenNode; - temp_node = get_node(temp_node, "hardware"); - if (xmlNodeGetContent(temp_node) != nullptr) - { - _stprintf(hardware_settings, "%s", - reinterpret_cast(xmlNodeGetContent(temp_node))); - // printf("%s\n",hardware_settings); - game_detail = get_game_settings(hardware_settings); - } - - temp_node = game_node->xmlChildrenNode; - temp_node = get_node(temp_node, "custom_controls"); - if (xmlNodeGetContent(temp_node) != nullptr) - { - _stprintf(custom_settings, "%s", - reinterpret_cast(xmlNodeGetContent(temp_node))); - // process these later - //printf("%s\n",custom_settings); - } - break; - } - } - xmlFree(attr); - game_node = game_node->next; - } - - xmlCleanupParser(); - } - } + + // debugging code! + write_log("WHDBooter - Game: Port 0 : %s \n",game_detail.port0); + write_log("WHDBooter - Game: Port 1 : %s \n",game_detail.port1); + write_log("WHDBooter - Game: Control : %s \n",game_detail.control); + write_log("WHDBooter - Game: Fast Copper: %s \n",game_detail.fastcopper); + write_log("WHDBooter - Game: CPU : %s \n",game_detail.cpu); + write_log("WHDBooter - Game: Blitter : %s \n",game_detail.blitter); + write_log("WHDBooter - Game: CPU Clock : %s \n",game_detail.clock); + write_log("WHDBooter - Game: Chipset : %s \n",game_detail.chipset); + write_log("WHDBooter - Game: JIT : %s \n",game_detail.jit); + write_log("WHDBooter - Game: CPU Compat : %s \n",game_detail.cpu_comp); + write_log("WHDBooter - Game: Scr Height : %s \n",game_detail.scr_height); + write_log("WHDBooter - Game: Scr YOffset: %s \n",game_detail.y_offset); + write_log("WHDBooter - Game: NTSC : %s \n",game_detail.ntsc); + write_log("WHDBooter - Game: Fast Ram : %s \n",game_detail.fast); + write_log("WHDBooter - Game: Z3 Ram : %s \n",game_detail.z3); // debugging code! - write_log("WHDBooter - Game: Port 0: %s \n",game_detail.port0); - write_log("WHDBooter - Game: Port 1: %s \n",game_detail.port1); - write_log("WHDBooter - Game: Control: %s \n",game_detail.control); - // printf("fstcpr: %s \n",game_detail.fastcopper); - // printf("cpu : %s \n",game_detail.cpu); - // printf("blitta: %s \n",game_detail.blitter); - // printf("clock : %s \n",game_detail.clock); - // printf("chipst: %s \n",game_detail.chipset); - // printf("jit : %s \n",game_detail.jit); - // printf("cpcomp: %s \n",game_detail.cpu_comp); - // printf("scrhei: %s \n",game_detail.scr_height); - // printf("scr y : %s \n",game_detail.y_offset); - // printf("ntsc : %s \n",game_detail.ntsc); - // printf("fast : %s \n",game_detail.fast); - // printf("z3 : %s \n",game_detail.z3); - - // debugging code! - write_log("WHDBooter - Host: Controller 1: %s \n", host_detail.controller1); - write_log("WHDBooter - Host: Controller 2: %s \n", host_detail.controller2); - write_log("WHDBooter - Host: Controller 3: %s \n", host_detail.controller3); - write_log("WHDBooter - Host: Controller 4: %s \n", host_detail.controller4); - write_log("WHDBooter - Host: Mouse 1: %s \n", host_detail.mouse1); - write_log("WHDBooter - Host: Mouse 2: %s \n", host_detail.mouse2); + write_log("WHDBooter - Host: Controller 1 : %s \n", host_detail.controller1); + write_log("WHDBooter - Host: Controller 2 : %s \n", host_detail.controller2); + write_log("WHDBooter - Host: Controller 3 : %s \n", host_detail.controller3); + write_log("WHDBooter - Host: Controller 4 : %s \n", host_detail.controller4); + write_log("WHDBooter - Host: Mouse 1 : %s \n", host_detail.mouse1); + write_log("WHDBooter - Host: Mouse 2 : %s \n", host_detail.mouse2); //printf("ra_qui: %s \n", host_detail.ra_quit); //printf("ra_men: %s \n", host_detail.ra_menu); //printf("ra_rst: %s \n", host_detail.ra_reset); //printf("ky_qut: %s \n", host_detail.key_quit); //printf("ky_gui: %s \n", host_detail.key_gui); //printf("deadzn: %s \n", host_detail.stereo_split); - //printf("stereo: %s \n", host_detail.stereo_split); - //printf("snd_on: %s \n", host_detail.sound_on); - //printf("snd_md: %s \n", host_detail.sound_mode); + write_log("WHDBooter - Host: Sound On : %s \n", host_detail.sound_on); + write_log("WHDBooter - Host: Sound Mode : %s \n", host_detail.sound_mode); + write_log("WHDBooter - Host: Stereo Split : %s \n", host_detail.stereo_split); //printf("aspect: %s \n", host_detail.aspect_ratio); //printf("frames: %s \n", host_detail.frameskip); - - + write_log("WHDBooter - Host: Fixed Height : %s \n", host_detail.fixed_height); // // *** EMULATED HARDWARE *** // - - // SET UNIVERSAL DEFAULTS + // SET UNIVERSAL DEFAULTS p->start_gui = false; if ((strcmpi(game_detail.cpu,"68000") == 0 || strcmpi(game_detail.cpu,"68010") == 0) && a600_available != 0) @@ -552,7 +858,7 @@ void whdload_auto_prefs(struct uae_prefs* p, char* filepath) // A1200 no AGA if (!static_cast(is_aga) && !static_cast(is_cd32)) { - _tcscpy(p->description, _T("WHDLoad AutoBoot Configuration")); + _tcscpy(p->description, _T("AutoBoot Configuration [WHDLoad]")); p->cs_compatible = CP_A600; built_in_chipset_prefs(p); @@ -561,49 +867,81 @@ void whdload_auto_prefs(struct uae_prefs* p, char* filepath) } // A1200 else - _tcscpy(p->description, _T("WHDLoad AutoBoot Configuration [AGA]")); + _tcscpy(p->description, _T("AutoBoot Configuration [WHDLoad] [AGA]")); - //SET THE WHD BOOTER AND GAME DATA - snprintf(boot_path, MAX_DPATH, "%s/whdboot/boot-data.zip", start_path_data); + + + //SET THE WHD BOOTER AND GAME DATA + if (strlen(selected_slave) != 0) // new booter solution + { + snprintf(boot_path, MAX_DPATH, "/tmp/"); - if (!zfile_exists(boot_path)) - snprintf(boot_path, MAX_DPATH, "%s/whdboot/boot-data/", start_path_data); + _stprintf(tmp,_T("filesystem2=rw,DH0:DH0:%s,10"), boot_path); + txt2 = parsetextpath(_T(tmp)); + cfgfile_parse_line(p, txt2, 0); + _stprintf(tmp,_T("uaehf0=dir,rw,DH0:DH0::%s,10"), boot_path); + txt2 = parsetextpath(_T(tmp)); + cfgfile_parse_line(p, txt2, 0); + + + snprintf(boot_path, MAX_DPATH, "%s/whdboot/boot-data.zip", start_path_data); + if (!zfile_exists(boot_path)) + snprintf(boot_path, MAX_DPATH, "%s/whdboot/boot-data/", start_path_data); - // set the first (whdboot) Drive - _stprintf(tmp,_T("filesystem2=rw,DH0:DH0:%s,10"), boot_path); - txt2 = parsetextpath(_T(tmp)); - cfgfile_parse_line(p, txt2, 0); + _stprintf(tmp,_T("filesystem2=rw,DH3:DH3:%s,-10"), boot_path); + txt2 = parsetextpath(_T(tmp)); + cfgfile_parse_line(p, txt2, 0); - _stprintf(tmp,_T("uaehf0=dir,rw,DH0:DH0::%s,10"), boot_path); - txt2 = parsetextpath(_T(tmp)); - cfgfile_parse_line(p, txt2, 0); + _stprintf(tmp,_T("uaehf0=dir,rw,DH3:DH3::%s,-10"), boot_path); + txt2 = parsetextpath(_T(tmp)); + cfgfile_parse_line(p, txt2, 0); + + } + + else // revert to original booter is no slave was set + { + snprintf(boot_path, MAX_DPATH, "%s/whdboot/boot-data.zip", start_path_data); + if (!zfile_exists(boot_path)) + snprintf(boot_path, MAX_DPATH, "%s/whdboot/boot-data/", start_path_data); + + _stprintf(tmp,_T("filesystem2=rw,DH0:DH0:%s,10"), boot_path); + txt2 = parsetextpath(_T(tmp)); + cfgfile_parse_line(p, txt2, 0); + _stprintf(tmp,_T("uaehf0=dir,rw,DH0:DH0::%s,10"), boot_path); + txt2 = parsetextpath(_T(tmp)); + cfgfile_parse_line(p, txt2, 0); + + } + //set the Second (game data) drive - _stprintf(tmp, "filesystem2=rw,DH1:games:%s,0", filepath); + _stprintf(tmp, "filesystem2=rw,DH1:Games:%s,0", filepath); txt2 = parsetextpath(_T(tmp)); cfgfile_parse_line(p, txt2, 0); - _stprintf(tmp, "uaehf1=dir,rw,DH1:games:%s,0", filepath); + _stprintf(tmp, "uaehf1=dir,rw,DH1:Games:%s,0", filepath); txt2 = parsetextpath(_T(tmp)); cfgfile_parse_line(p, txt2, 0); + //set the third (save data) drive snprintf(save_path, MAX_DPATH, "%s/whdboot/save-data/", start_path_data); if (my_existsdir(save_path)) { - _stprintf(tmp, "filesystem2=rw,DH2:saves:%s,0", save_path); + _stprintf(tmp, "filesystem2=rw,DH2:Saves:%s,0", save_path); txt2 = parsetextpath(_T(tmp)); cfgfile_parse_line(p, txt2, 0); - _stprintf(tmp, "uaehf2=dir,rw,DH2:saves:%s,0", save_path); + _stprintf(tmp, "uaehf2=dir,rw,DH2:Saves:%s,0", save_path); txt2 = parsetextpath(_T(tmp)); cfgfile_parse_line(p, txt2, 0); } - //APPLY THE SETTINGS FOR MOUSE/JOYSTICK ETC - // CD32 + + // APPLY THE SETTINGS FOR MOUSE/JOYSTICK ETC + // CD32 if ((static_cast(is_cd32) && strcmpi(game_detail.port0, "nul") == 0) || strcmpi(game_detail.port0, "cd32") == 0) p->jports[0].mode = 7; @@ -913,15 +1251,19 @@ void whdload_auto_prefs(struct uae_prefs* p, char* filepath) cfgfile_parse_line(p, txt2, 0); } - // NTSC - if (strcmpi(game_detail.ntsc,"true") == 0) - { - _stprintf(txt2, "ntsc=true"); - cfgfile_parse_line(p, txt2, 0); - } - // SCREEN HEIGHT - if (strcmpi(game_detail.scr_height,"nul") != 0) + + + if (strcmpi(host_detail.fixed_height,"nul") != 0) + { + _stprintf(txt2, "gfx_height=%s", host_detail.fixed_height); + cfgfile_parse_line(p, txt2, 0); + _stprintf(txt2, "gfx_height_windowed=%s", host_detail.fixed_height); + cfgfile_parse_line(p, txt2, 0); + _stprintf(txt2, "gfx_height_fullscreen=%s", host_detail.fixed_height); + cfgfile_parse_line(p, txt2, 0); + } + else if (strcmpi(game_detail.scr_height,"nul") != 0) { _stprintf(txt2, "gfx_height=%s", game_detail.scr_height); cfgfile_parse_line(p, txt2, 0); diff --git a/src/osdep/gui/PanelPaths.cpp b/src/osdep/gui/PanelPaths.cpp index 5b4ebf97..41db55d8 100644 --- a/src/osdep/gui/PanelPaths.cpp +++ b/src/osdep/gui/PanelPaths.cpp @@ -100,6 +100,8 @@ public: void action(const gcn::ActionEvent& actionEvent) override { RescanROMs(); + SymlinkROMs(); + import_joysticks(); RefreshPanelInput(); RefreshPanelCustom(); diff --git a/src/osdep/target.h b/src/osdep/target.h index 0162b9e7..15495ad7 100644 --- a/src/osdep/target.h +++ b/src/osdep/target.h @@ -68,6 +68,7 @@ extern void extractPath(char *str, char *buffer); extern void removeFileExtension(char *filename); extern void ReadConfigFileList(void); extern void RescanROMs(void); +extern void SymlinkROMs(void); extern void ClearAvailableROMList(void); #include diff --git a/whdboot/boot-data.zip b/whdboot/boot-data.zip old mode 100644 new mode 100755 index 462e0a24ac256adb395852c520e085c0f12860ae..6180eabdc49936290c3b265222bb82b2f44b3c0b GIT binary patch delta 45696 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 P>Ov>N2wmx?sf_;t+uHh}ks$x{r%eKs{4 zMlQ*GF}J`25L+b3J<-CW9@Q;l;}@SW?M8rahRB5-!Z9@PLa4q0ZSsuwgz7jyaE1XP z-wMS>)tqIu;#|t%P!qtUPSJhRGlt6DI&qCww$>cA%n|~yF@njWApn&T0K@4k zuRfAaH)ELm-)J#GtNgG(cj9kmfKrW8k{2e5wh;em6z@VCHH;URn)Mds~XG2}7V@Mj-y=qE2{qc-^+o=Kx&YEx(f?>gK9d;;P>1UmSPN`WOLL+vSs0 zq7bZ-Y(mU4+wS^#DZoNm7HY+WQhy4*-E2Za49^`<)xoQJr+?brE~h5}xLmU3ZsWqi zlVfpSdH=V!%f|xjERw6&8XL!|me=>j4c!p?bIR z83ZuLEN^Ht>IUbG#ccTDs?HGwkdY++t;d)f6%#0&kq55?*^@E>I#vQifR(b^(JrT- zG)~A=Wh}L%zP#%`3&8Es05-5vMLR~(${fie_c$bBaCDi=obUc~M|dp2-Zc69L@77c z-;vM*Xp`sUNG*de3{%IKl(j4k1GtzZrxr_%VSaTNQxB9%HwA#u4z$UxbpSh7c|8%eRBO5-Bg+qb^3+?Cw(yRcUW&}#$;2P@4#h&Flkr_v#v+Tf21 z%3a4Q?|O5G4j{%L|Mhd}107|4DNTxCP6}t0yKdR|_Ons@04|Of6V5jJXsuReG5rBnbI z1pp&e;cQit{Q3%4ap$@B#{fV&03<6Kb1yn5?lqjI3RzN@D>gpDgcEpTJZk-GnD6h) z=3casy#{MEHpi=LLly$SE&xbSZ2D_(ou=6Gyv8ink*T~`TGNMC>U|w2`5k-u&_-iw z(N0sg;dqT@+cxtRmi9OrRf{n+`VfXv?>5XGw2Yw9wKz*nsi$UzYs>bR$2|-H%K+eJ zC8f=EXrX`9;@bZ!OjL!HnhXpVI{Fs?z3m^}**J4N#RIMWx#@Jmt^72pDpsda9j8$|@@>S+sD%|7?k1V&{qEqy9L7(D0{eeTb0qeKtJ3qW^x(5d&iU!f8Y#tJ~|mG4i} zE)U)$03B7nSJ96ij1ho>cW?(^eM2cb&?x}jxq~|xMWs7%gaAZ};Q33`zJq%_p#bYe zx~^D6H*gofIB0SM_c>PqRvn<#4LD5T`Waj{Kp?$90=RA6P>|6_a&VUvQuY2 zRmyz{K<9SyO7g?V)X1B0OCtxaO(a(%FTO+p9>}4W8ZlG!W*IKh@kX2|db2VvlBJ2a ztf~o}2Cw_ci+T!cMmsHS!lBB3XK?RNe)vNL_BNqY^tvqqS(`CK0Lp9Tz(>Ihu+y3l z(MnsIF)td%l}j{j7cZoE7Y}k`EUnvxV<)i% z9hg}5G2Gz5mo;yk2(FR^W$OI1Ew0W#MegQZdSx6<*o}!dvxKyJ8zAyVf9^M47U@it z7)?#>7|sjOu5y4djlQ>GPBsK5n2YXC0{dqK9-p@nC zwR2yEc{H^hZxMhVZs%EaZZxtTog@J5R}iQ+(y4Y#6M$`Emg#+ajWjn$8cM$(;Agu? zfkz%Q(xwAARsgnyneglxBl$`tM?e_b!Qq6{vASRI{E2IUHk?(Ehg%y zHw~lwE}r>31wNZ$qRmH44yx_KF`_rCUr$53(M~^f@i%awi%;wrk)dho*lV`%4d>={ zS8=7CE#+I;L3Atk%)q^FCA3mgH;-@Y;mp$tqb%Q|9*k6DXcn&~#sfwr$I@!FQFo7j zn*X$jH8yAcHs)SFLm9n1`eTyfss1$#rq#VXvCRr~-cR+{po#w3iw*(kfBow5xvVDPg-rJ-Ul`VfDvJbf5p9jeLvUB6;ik&K))X1>6;I8{?s6Er+W``YKcPCnyKnAW>{R{f(If2?h0Z5FZ>Uo!fyir diff --git a/whdboot/game-data/whdload_db.xml b/whdboot/game-data/whdload_db.xml index e4b6fb34..90abce90 100644 --- a/whdboot/game-data/whdload_db.xml +++ b/whdboot/game-data/whdload_db.xml @@ -1,5 +1,5 @@ - + 1001 Stolen Ideas 1001StolenIdeas @@ -327,6 +327,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -452,6 +453,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -580,6 +582,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -614,6 +617,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -971,6 +975,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -1233,6 +1238,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -1250,6 +1256,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -1517,6 +1524,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -1713,6 +1721,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -1767,6 +1776,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -1858,6 +1868,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -1949,6 +1960,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -2080,6 +2092,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -2168,6 +2181,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -2676,6 +2690,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -2767,6 +2782,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -3081,6 +3097,23 @@ + + Dark Hell BBSTrackmo + DarkHellBBSTrackmo + f060b6e7-ff5c-59f0-a1a8-614d54947e24 + 1 + DarkHellBBSTrackmo.Slave + + DarkHellBBSTrackmo.Slave + + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + Darkroom Darkroom @@ -3115,6 +3148,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -3543,6 +3577,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -3705,6 +3740,26 @@ + + Epilepsia + Epilepsia + b3cd53d6-0d5e-51dd-b9fd-cbdbb8e57741 + 1 + Epilepsia.Slave + + Epilepsia.Slave + + + + + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + Eargasm Tunes EargasmTunes @@ -3845,6 +3900,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -3899,6 +3955,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA FAST_RAM=8 @@ -3957,26 +4014,6 @@ - - Epilepsia - Epilepsia - b3cd53d6-0d5e-51dd-b9fd-cbdbb8e57741 - 1 - Epilepsia.Slave - - Epilepsia.Slave - - - - - - - PRIMARY_CONTROL=JOYSTICK - PORT0=JOY - PORT1=JOY - - - Erazorhead Erazorhead @@ -4055,6 +4092,23 @@ + + Evolution Desire + EvolutionDesire + a41a2a98-58c4-5d53-88b4-7e15e0d659bb + 1 + EvolutionDesire.Slave + + EvolutionDesire.Slave + + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + Exage Exage @@ -4089,6 +4143,26 @@ + + Exile + Exile + 1a704791-b5da-563e-984f-22fada474d1b + 1 + Exile.Slave + + Exile.Slave + + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + JIT=FALSE + SCREEN_HEIGHT=256 + SCREEN_Y_OFFSET=0 + + + Experiment Experiment @@ -4123,6 +4197,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -4208,6 +4283,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -4435,6 +4511,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -4452,6 +4529,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -4648,6 +4726,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -4665,6 +4744,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -4913,6 +4993,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -5280,6 +5361,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -5297,6 +5379,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -5545,6 +5628,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -5647,6 +5731,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA FAST_RAM=8 @@ -5685,6 +5770,23 @@ + + JOESlideshow 2 + JOESlideshow2 + 07ddca5a-8e01-5de3-80ec-2a2b68e577bd + 1 + JOESlideshow2.Slave + + JOESlideshow2.Slave + + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + Joyride Joyride @@ -5976,6 +6078,28 @@ + + Legalize It 2 + LegalizeIt2 + 40aab6db-05ef-5553-9b82-fb428813decb + 1 + LegalizeIt2.slave + + LegalizeIt2.slave + data + + C1:B:Skip Intro + C2:B:Run Hidden Part 1 + C3:B:Run Hidden Part 2 + + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + Legoland Legoland @@ -6173,6 +6297,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -6319,6 +6444,40 @@ + + Music Thingy + MusicThingy + 44fbe310-66a3-506a-ae77-2d84a92b83c7 + 1 + MusicThingy.slave + + MusicThingy.slave + data + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + + + Music Thingy + MusicThingy + 54e3220f-a3e3-5ad7-8931-496534f14d4b + 1 + MusicThingy.Slave + + MusicThingy.Slave + data + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + Music With A Message MusicWithAMessage @@ -6651,6 +6810,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -8334,6 +8494,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -8647,6 +8808,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -8664,6 +8826,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -9689,6 +9852,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -9752,6 +9916,26 @@ + + Noises Of Pansy + NoisesOfPansy + 2003e841-1a2b-5f30-94c5-2df37ec9c92c + 1 + NoisesOfPansy.Slave + + NoisesOfPansy.Slave + + + C1:B:Skip Intro + + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + Non Stop Music NonStopMusic @@ -9803,6 +9987,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -9871,6 +10056,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -9952,6 +10138,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -10185,6 +10372,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -10316,6 +10504,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -10333,6 +10522,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -10441,6 +10631,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -10549,6 +10740,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -10796,6 +10988,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -10813,6 +11006,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -10887,6 +11081,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -10921,6 +11116,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -11102,6 +11298,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -11323,6 +11520,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -11340,6 +11538,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -11568,6 +11767,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -11591,6 +11791,27 @@ + + Sun Tracker 2 + SunTracker2 + 8fccd311-66e0-5c65-a753-2439717bdcb5 + 1 + SunTracker2.Slave + + SunTracker2.Slave + + + C1:B:Skip Intro + C2:B:Disable Blitter Waits + + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + Sun [AGA] SunAGA @@ -11608,6 +11829,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -11676,6 +11898,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -11693,6 +11916,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -11781,6 +12005,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -11863,6 +12088,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -11917,6 +12143,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA FAST_RAM=8 @@ -12023,6 +12250,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -12040,6 +12268,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -12091,6 +12320,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -12188,6 +12418,24 @@ + + Soho [AGA] + SohoAGA + d342a19b-ecee-5e0b-a046-4620aab7dc9a + 1 + SohoAGA.Slave + + SohoAGA.Slave + + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + CHIPSET=AGA + + + Songs Of Infinity SongsOfInfinity @@ -12222,6 +12470,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -12273,6 +12522,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -13450,6 +13700,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -13467,6 +13718,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -13518,6 +13770,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -13535,6 +13788,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -13791,6 +14045,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -13842,6 +14097,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -14061,6 +14317,23 @@ + + Unbelievable + Unbelievable + e32f0533-140f-558e-bb20-9161c33e0cab + 1 + Unbelievable.Slave + + Unbelievable.Slave + + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + Universal Intensity UniversalIntensity @@ -14504,6 +14777,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -14578,6 +14852,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -14629,6 +14904,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -14680,6 +14956,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -14891,6 +15168,7 @@ PRIMARY_CONTROL=MOUSE PORT0=MOUSE PORT1=JOY + CHIPSET=AGA SCREEN_HEIGHT=200 SCREEN_Y_OFFSET=3 @@ -14947,6 +15225,7 @@ PRIMARY_CONTROL=MOUSE PORT0=MOUSE PORT1=JOY + CHIPSET=AGA SCREEN_HEIGHT=200 SCREEN_Y_OFFSET=3 @@ -16188,6 +16467,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -16727,6 +17007,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -16976,6 +17257,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -17130,6 +17412,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA SCREEN_HEIGHT=240 @@ -17293,6 +17576,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -17313,6 +17597,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -17333,6 +17618,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -17386,6 +17672,7 @@ PORT1=JOY CPU=68040 CLOCK=MAX + CHIPSET=AGA SCREEN_HEIGHT=216 SCREEN_Y_OFFSET=3 @@ -17433,6 +17720,7 @@ PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -17592,6 +17880,7 @@ joyport1_amiberry_custom_none_west=Space PORT0=JOY PORT1=JOY JIT=FALSE + CHIPSET=AGA SCREEN_HEIGHT=262 SCREEN_Y_OFFSET=-2 @@ -18226,6 +18515,7 @@ joyport1_amiberry_custom_none_west=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA SCREEN_HEIGHT=216 SCREEN_Y_OFFSET=-6 @@ -18324,6 +18614,7 @@ joyport1_amiberry_custom_none_west=Space PRIMARY_CONTROL=MOUSE PORT0=MOUSE PORT1=JOY + CHIPSET=AGA SCREEN_HEIGHT=240 @@ -18342,6 +18633,7 @@ joyport1_amiberry_custom_none_west=Space PRIMARY_CONTROL=MOUSE PORT0=MOUSE PORT1=JOY + CHIPSET=AGA SCREEN_HEIGHT=240 @@ -19530,6 +19822,7 @@ joyport1_amiberry_custom_none_west=Space PORT0=JOY PORT1=JOY JIT=FALSE + CHIPSET=AGA FAST_RAM=8 @@ -20133,6 +20426,8 @@ joyport1_amiberry_custom_none_west=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + JIT=FALSE + CHIPSET=AGA SCREEN_HEIGHT=256 SCREEN_Y_OFFSET=3 @@ -20152,6 +20447,8 @@ joyport1_amiberry_custom_none_west=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + JIT=FALSE + CHIPSET=AGA SCREEN_HEIGHT=256 SCREEN_Y_OFFSET=3 @@ -20543,6 +20840,7 @@ joyport1_amiberry_custom_none_west=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA SCREEN_HEIGHT=256 @@ -20561,6 +20859,7 @@ joyport1_amiberry_custom_none_west=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -20578,6 +20877,7 @@ joyport1_amiberry_custom_none_west=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -20767,6 +21067,7 @@ joyport1_amiberry_custom_none_west=Space PRIMARY_CONTROL=MOUSE PORT0=MOUSE PORT1=JOY + CHIPSET=AGA SCREEN_HEIGHT=200 SCREEN_Y_OFFSET=3 @@ -21127,6 +21428,7 @@ joyport1_amiberry_custom_none_west=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -21382,6 +21684,7 @@ joyport1_amiberry_custom_none_west=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -21676,6 +21979,7 @@ joyport1_amiberry_custom_none_west=Space PRIMARY_CONTROL=MOUSE PORT0=MOUSE PORT1=JOY + CHIPSET=AGA SCREEN_HEIGHT=200 SCREEN_Y_OFFSET=24 @@ -21804,6 +22108,7 @@ joyport1_amiberry_custom_none_west=Space PORT0=JOY PORT1=JOY JIT=FALSE + CHIPSET=AGA SCREEN_HEIGHT=256 SCREEN_Y_OFFSET=3 @@ -22378,6 +22683,7 @@ joyport1_amiberry_custom_none_west=Space PORT0=JOY PORT1=JOY CLOCK=28 + CHIPSET=AGA SCREEN_HEIGHT=200 SCREEN_Y_OFFSET=3 @@ -22402,6 +22708,7 @@ joyport1_amiberry_custom_none_west=Space PORT0=JOY PORT1=JOY CLOCK=28 + CHIPSET=AGA SCREEN_HEIGHT=200 SCREEN_Y_OFFSET=3 @@ -22556,6 +22863,7 @@ joyport1_amiberry_custom_none_west=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -23015,6 +23323,46 @@ joyport1_amiberry_custom_none_west=Space + + Bomb Jack Beer Edition + BombJackBeerEdition + 88f1c0e4-3649-5a0d-a06d-07889f86cbe6 + 1 + BombJackBeerEdition.slave + + BombJackBeerEdition.slave + data + + + + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + + + Bomb Jack Beer Edition + BombJackBeerEdition + 1e263a57-4b29-5de1-b95c-0344232e7deb + 1 + BombJackBeerEdition.slave + + BombJackBeerEdition.slave + data + + + + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + Bomb Jack BombJack @@ -23048,6 +23396,7 @@ joyport1_amiberry_custom_none_west=Space PORT0=JOY PORT1=JOY JIT=FALSE + CHIPSET=AGA SCREEN_HEIGHT=256 SCREEN_Y_OFFSET=3 @@ -23417,6 +23766,7 @@ joyport1_amiberry_custom_none_west=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -23625,6 +23975,7 @@ joyport1_amiberry_custom_none_west=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -23662,6 +24013,7 @@ joyport1_amiberry_custom_none_west=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -23699,6 +24051,7 @@ joyport1_amiberry_custom_none_west=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -23768,6 +24121,7 @@ joyport1_amiberry_custom_none_west=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -23832,6 +24186,7 @@ joyport1_amiberry_custom_none_west=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -24162,6 +24517,7 @@ joyport1_amiberry_custom_none_west=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -24679,6 +25035,29 @@ joyport1_amiberry_custom_none_west=Space + + Cadaver & The Payoff + Cadaver&ThePayoff + 563733d4-1ba0-5145-a28f-11b3f0c29f0e + 1 + Cadaver&ThePayoff.slave + + Cadaver&ThePayoff.slave + + + C2:L:Level set:Original Game,The Payoff + C4:X:Trainer - free savegames:0 + C5:X:Trainer - in game keys:0 + + + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + Cadaver (Demos) CadaverDemos @@ -24984,6 +25363,7 @@ joyport1_amiberry_custom_none_west=Space PRIMARY_CONTROL=MOUSE PORT0=MOUSE PORT1=JOY + CHIPSET=AGA SCREEN_HEIGHT=240 SCREEN_Y_OFFSET=0 @@ -26027,6 +26407,23 @@ joyport1_amiberry_custom_none_west=Space + + Castle Of Dr Brain De MT 32 + CastleOfDrBrainDeMT32 + a3255b19-3c77-57be-a6ad-b18e4d9760b4 + 1 + CastleOfDrBrainDeMT32.Slave + + CastleOfDrBrainDeMT32.Slave + data + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + Castle Of Dr Brain (NTSC) CastleOfDrBrainNTSC @@ -26044,6 +26441,23 @@ joyport1_amiberry_custom_none_west=Space + + Castle Of Dr Brain (NTSC)MT 32 + CastleOfDrBrainNTSCMT32 + 4af6a25b-050c-545d-96b9-a658f68038bd + 1 + CastleOfDrBrainNTSCMT32.Slave + + CastleOfDrBrainNTSCMT32.Slave + data + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + Castles 2 [CD32] Castles2CD32 @@ -26058,6 +26472,7 @@ joyport1_amiberry_custom_none_west=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -26237,6 +26652,7 @@ joyport1_amiberry_custom_none_west=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -26600,6 +27016,7 @@ joyport1_amiberry_custom_none_west=Space PORT1=JOY JIT=FALSE CLOCK=28 + CHIPSET=AGA SCREEN_HEIGHT=200 SCREEN_Y_OFFSET=8 @@ -26727,6 +27144,7 @@ joyport1_amiberry_custom_none_west=Space PORT0=JOY PORT1=JOY JIT=FALSE + CHIPSET=AGA SCREEN_HEIGHT=256 SCREEN_Y_OFFSET=3 @@ -27195,6 +27613,7 @@ joyport1_amiberry_custom_none_west=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -27217,6 +27636,7 @@ joyport1_amiberry_custom_none_west=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -27620,6 +28040,7 @@ joyport1_amiberry_custom_none_west=Space PRIMARY_CONTROL=MOUSE PORT0=MOUSE PORT1=JOY + CHIPSET=AGA SCREEN_HEIGHT=256 SCREEN_Y_OFFSET=3 @@ -27795,6 +28216,7 @@ joyport1_amiberry_custom_none_west=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -28313,6 +28735,78 @@ joyport1_amiberry_custom_none_west=Space + + Conquests Of The Longbow + ConquestsOfTheLongbow + 6be3afdf-a5b5-592b-adfa-ba5cb3dcc87c + 1 + ConquestsOfTheLongbow.slave + + ConquestsOfTheLongbow.slave + data + + + PRIMARY_CONTROL=MOUSE + PORT0=MOUSE + PORT1=JOY + SCREEN_HEIGHT=200 + SCREEN_Y_OFFSET=3 + + + + + Conquests Of The Longbow MT 32 + ConquestsOfTheLongbowMT32 + 4d025474-758a-5fd9-bf53-5426ce7b5d6c + 1 + ConquestsOfTheLongbowMT32.slave + + ConquestsOfTheLongbowMT32.slave + data + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + + + Conquests Of The Longbow + ConquestsOfTheLongbow + 05a33a86-c5d4-5a8b-bba0-0c74e1317a97 + 1 + ConquestsOfTheLongbow.slave + + ConquestsOfTheLongbow.slave + data + + + PRIMARY_CONTROL=MOUSE + PORT0=MOUSE + PORT1=JOY + SCREEN_HEIGHT=200 + SCREEN_Y_OFFSET=3 + + + + + Conquests Of The Longbow MT 32 + ConquestsOfTheLongbowMT32 + 744559a4-e9d1-5c9b-b5d8-79a67f508c31 + 1 + ConquestsOfTheLongbowMT32.slave + + ConquestsOfTheLongbowMT32.slave + data + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + Continental Circus ContinentalCircus @@ -29869,6 +30363,32 @@ joyport1_amiberry_custom_none_west=Space + + Dyna Blaster + DynaBlaster + 0744ff2f-5f56-552a-becb-99fdb8e443b1 + 1 + DynaBlaster.slave + + DynaBlaster.slave + + + C1:B:Enable PAL screen + C2:L:Players Max.:3,5 (4-joy alt.),5 (4-joy default) + C3:B:Enable Cheat Mode + C4:B:12/6 pixels down screen + C5:X:Remove flicking text:0 + C5:X:Fast blinking text:1 + + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + SCREEN_HEIGHT=262 + + + Dynamite Dux DynamiteDux @@ -30282,6 +30802,7 @@ joyport1_amiberry_custom_none_west=Space PRIMARY_CONTROL=MOUSE PORT0=MOUSE PORT1=JOY + CHIPSET=AGA SCREEN_HEIGHT=200 SCREEN_Y_OFFSET=30 @@ -30811,6 +31332,7 @@ joyport1_amiberry_custom_none_west=Space PORT1=JOY BLITTER=IMMEDIATE JIT=FALSE + CHIPSET=AGA SCREEN_Y_OFFSET=-3 @@ -30900,6 +31422,7 @@ joyport1_amiberry_custom_none_west=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -31045,6 +31568,7 @@ joyport1_amiberry_custom_none_west=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -31391,6 +31915,7 @@ joyport1_amiberry_custom_none_west=Space PORT0=MOUSE PORT1=JOY JIT=FALSE + CHIPSET=AGA SCREEN_HEIGHT=270 SCREEN_Y_OFFSET=0 @@ -31427,6 +31952,7 @@ joyport1_amiberry_custom_none_west=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -31587,6 +32113,7 @@ joyport1_amiberry_custom_none_west=Space PORT0=JOY PORT1=JOY JIT=FALSE + CHIPSET=AGA SCREEN_HEIGHT=240 SCREEN_Y_OFFSET=0 @@ -31624,6 +32151,7 @@ joyport1_amiberry_custom_none_west=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -31731,6 +32259,7 @@ joyport1_amiberry_custom_none_west=Space PRIMARY_CONTROL=MOUSE PORT0=MOUSE PORT1=JOY + CHIPSET=AGA SCREEN_HEIGHT=200 SCREEN_Y_OFFSET=3 @@ -31857,6 +32386,7 @@ joyport1_amiberry_custom_none_west=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -31966,6 +32496,7 @@ joyport1_amiberry_custom_none_west=Space PORT0=JOY PORT1=JOY JIT=FALSE + CHIPSET=AGA SCREEN_Y_OFFSET=3 @@ -32144,6 +32675,7 @@ joyport1_amiberry_custom_none_west=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -33021,6 +33553,7 @@ joyport1_amiberry_custom_none_west=Space PORT0=MOUSE PORT1=JOY JIT=FALSE + CHIPSET=AGA SCREEN_HEIGHT=240 SCREEN_Y_OFFSET=8 @@ -33135,6 +33668,7 @@ joyport1_amiberry_custom_none_west=Space PRIMARY_CONTROL=MOUSE PORT0=MOUSE PORT1=JOY + CHIPSET=AGA SCREEN_HEIGHT=256 SCREEN_Y_OFFSET=4 @@ -34203,6 +34737,27 @@ joyport1_amiberry_custom_none_west=Space + + Enchanted Land + EnchantedLand + 61e52df5-6f50-5396-be40-f8a9a032c0b3 + 1 + EnchantedLand.Slave + + EnchantedLand.Slave + + + C1:X:Infinite energy:0 + + + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + Amiga Encounter Encounter @@ -34890,6 +35445,7 @@ joyport1_amiberry_custom_none_west=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -35672,6 +36228,50 @@ joyport0_amiberry_custom_none_right_shoulder=Numpad 9 + + Fantastic Dizzy + FantasticDizzy + 97e90d3d-e8e3-57b2-8543-a5b4d619e20a + 1 + FantasticDizzy.slave + + FantasticDizzy.slave + data + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + JIT=FALSE + SCREEN_HEIGHT=240 + SCREEN_Y_OFFSET=0 + + + + + Fantastic Dizzy [AGA] + FantasticDizzyAGA + a0a88c35-70e5-51da-85a0-f09716ab115c + 1 + FantasticDizzyAGA.slave + + FantasticDizzyAGA.slave + data + + C1:X:Infinite lives:0 + C2:L:Start with lives:2,3,4,5 + C3:X:Blue button jumps:0 + + + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + CHIPSET=AGA + + + Fantastic Voyage FantasticVoyage @@ -35737,6 +36337,7 @@ joyport0_amiberry_custom_none_right_shoulder=Numpad 9 PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -36113,6 +36714,7 @@ joyport0_amiberry_custom_none_right_shoulder=Numpad 9 PORT0=MOUSE PORT1=JOY CLOCK=28 + CHIPSET=AGA SCREEN_HEIGHT=262 @@ -36134,6 +36736,26 @@ joyport0_amiberry_custom_none_right_shoulder=Numpad 9 + + Femme Fatale & Data Disks + FemmeFatale&DataDisks + 311ecce9-fed6-5424-8be3-4d908093ee56 + 1 + FemmeFatale&DataDisks.Slave + + FemmeFatale&DataDisks.Slave + data + + + + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + Femme Fatale (& Data Disk) FemmeFatale&DataDisk @@ -36665,6 +37287,7 @@ joyport0_amiberry_custom_none_right_shoulder=Numpad 9 PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -36686,6 +37309,7 @@ joyport0_amiberry_custom_none_right_shoulder=Numpad 9 PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -36897,6 +37521,7 @@ joyport0_amiberry_custom_none_right_shoulder=Numpad 9 PORT0=JOY PORT1=JOY JIT=FALSE + CHIPSET=AGA SCREEN_HEIGHT=216 SCREEN_Y_OFFSET=3 @@ -36957,6 +37582,7 @@ joyport0_amiberry_custom_none_right_shoulder=Numpad 9 PORT0=JOY PORT1=JOY JIT=FALSE + CHIPSET=AGA SCREEN_Y_OFFSET=3 @@ -37904,6 +38530,7 @@ joyport0_amiberry_custom_none_right_shoulder=Numpad 9 PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -38067,6 +38694,7 @@ joyport0_amiberry_custom_none_right_shoulder=Numpad 9 PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -38633,6 +39261,7 @@ joyport0_amiberry_custom_none_right_shoulder=Numpad 9 BLITTER=IMMEDIATE CPU=68040 CLOCK=MAX + CHIPSET=AGA SCREEN_HEIGHT=216 SCREEN_Y_OFFSET=3 @@ -38887,6 +39516,7 @@ joyport0_amiberry_custom_none_right_shoulder=Numpad 9 PORT0=JOY PORT1=JOY JIT=FALSE + CHIPSET=AGA SCREEN_HEIGHT=216 SCREEN_Y_OFFSET=-8 @@ -39072,6 +39702,7 @@ joyport0_amiberry_custom_none_right_shoulder=Numpad 9 PORT1=JOY CPU=68040 CLOCK=MAX + CHIPSET=AGA SCREEN_Y_OFFSET=3 @@ -39141,6 +39772,7 @@ joyport0_amiberry_custom_none_right_shoulder=Numpad 9 PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -39218,6 +39850,7 @@ joyport0_amiberry_custom_none_right_shoulder=Numpad 9 PORT1=JOY CPU=68040 CLOCK=MAX + CHIPSET=AGA SCREEN_HEIGHT=200 SCREEN_Y_OFFSET=3 @@ -40329,6 +40962,7 @@ joyport0_amiberry_custom_none_right_shoulder=Numpad 9 PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -40349,6 +40983,7 @@ joyport0_amiberry_custom_none_right_shoulder=Numpad 9 PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -40396,6 +41031,7 @@ joyport0_amiberry_custom_none_right_shoulder=Numpad 9 PORT1=JOY CPU=68040 CLOCK=MAX + CHIPSET=AGA @@ -42299,6 +42935,7 @@ joyport1_amiberry_custom_none_right_shoulder=F2 PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -43589,6 +44226,7 @@ joyport1_amiberry_custom_none_right_shoulder=F2 PORT0=JOY PORT1=JOY FAST_COPPER=FALSE + CHIPSET=AGA @@ -43831,6 +44469,7 @@ joyport1_amiberry_custom_none_right_shoulder=F2 PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -45389,6 +46028,7 @@ joyport2_amiberry_custom_none_south=Right Shift PORT0=MOUSE PORT1=JOY CLOCK=28 + CHIPSET=AGA SCREEN_HEIGHT=200 SCREEN_Y_OFFSET=20 @@ -45985,6 +46625,7 @@ joyport2_amiberry_custom_none_south=Right Shift PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -46068,6 +46709,7 @@ joyport2_amiberry_custom_none_south=Right Shift PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -46321,6 +46963,7 @@ joyport2_amiberry_custom_none_south=Right Shift PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -46374,6 +47017,7 @@ joyport2_amiberry_custom_none_south=Right Shift PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA SCREEN_HEIGHT=216 @@ -47813,6 +48457,7 @@ joyport2_amiberry_custom_none_south=Right Shift PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -48203,6 +48848,7 @@ joyport2_amiberry_custom_none_south=Right Shift PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -48342,6 +48988,23 @@ joyport2_amiberry_custom_none_south=Right Shift + + Kings Quest 5 De MT 32 + KingsQuest5DeMT32 + 38f2a3b3-89a3-56e2-b89b-b914286b4fc1 + 1 + KingsQuest5DeMT32.slave + + KingsQuest5DeMT32.slave + data + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + Kings Quest 5 (Italiano) KingsQuest5It @@ -48359,6 +49022,40 @@ joyport2_amiberry_custom_none_south=Right Shift + + Kings Quest 5 It MT 32 + KingsQuest5ItMT32 + 5b93ab93-6423-575e-8271-64cc09ad7741 + 1 + KingsQuest5ItMT32.slave + + KingsQuest5ItMT32.slave + data + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + + + Kings Quest 5 MT 32 + KingsQuest5MT32 + 86e1f6e2-5b07-5e4a-9cb2-7f71a6e12dce + 1 + KingsQuest5MT32.slave + + KingsQuest5MT32.slave + data + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + King's Quest VI - Heir Today, Gone Tomorrow KingsQuest6 @@ -48431,6 +49128,23 @@ joyport2_amiberry_custom_none_south=Right Shift + + Kings Quest Enhanced MT 32 + KingsQuestEnhancedMT32 + 00d43e13-85cb-531f-be5f-1c73707104fb + 1 + KingsQuestEnhancedMT32.slave + + KingsQuestEnhancedMT32.slave + data + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + King's Quest - Quest for the Crown KingsQuest @@ -48589,6 +49303,7 @@ joyport2_amiberry_custom_none_south=Right Shift PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -48722,6 +49437,7 @@ joyport2_amiberry_custom_none_south=Right Shift PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -48739,6 +49455,7 @@ joyport2_amiberry_custom_none_south=Right Shift PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -49270,6 +49987,7 @@ joyport2_amiberry_custom_none_south=Right Shift PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -49357,6 +50075,7 @@ joyport2_amiberry_custom_none_south=Right Shift PRIMARY_CONTROL=MOUSE PORT0=MOUSE PORT1=JOY + CHIPSET=AGA SCREEN_HEIGHT=256 SCREEN_Y_OFFSET=3 @@ -49871,6 +50590,7 @@ joyport2_amiberry_custom_none_south=Right Shift PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -50213,6 +50933,40 @@ joyport0_amiberry_custom_none_right_stick=F7 + + Leisure Suit Larry 5 De MT 32 + LeisureSuitLarry5DeMT32 + 567036e0-4711-54d7-9b9b-ca2f956768fa + 1 + LeisureSuitLarry5DeMT32.Slave + + LeisureSuitLarry5DeMT32.Slave + data + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + + + Leisure Suit Larry 5 MT 32 + LeisureSuitLarry5MT32 + c84fb17b-1087-5fdd-92c8-2e4bfe973eb9 + 1 + LeisureSuitLarry5MT32.Slave + + LeisureSuitLarry5MT32.Slave + data + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + Leisure Suit Larry In The Land Of The Lounge Lizards (Enhanced) LeisureSuitLarryEnhanced @@ -50232,6 +50986,23 @@ joyport0_amiberry_custom_none_right_stick=F7 + + Leisure Suit Larry Enhnd MT 32 + LeisureSuitLarryEnhndMT32 + 5d3c0173-0110-5963-b315-d3e3aeaf4aea + 1 + LeisureSuitLarryEnhndMT32.slave + + LeisureSuitLarryEnhndMT32.slave + data + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + Leisure Suit Larry In The Land Of The Lounge Lizards LeisureSuitLarry @@ -51692,6 +52463,7 @@ joyport0_amiberry_custom_none_right_shoulder=Return PRIMARY_CONTROL=MOUSE PORT0=MOUSE PORT1=JOY + CHIPSET=AGA SCREEN_HEIGHT=200 SCREEN_Y_OFFSET=0 @@ -52103,6 +52875,7 @@ joyport0_amiberry_custom_none_right_shoulder=Return PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -52854,6 +53627,76 @@ joyport0_amiberry_custom_none_right_shoulder=Return + + Maniac Mansion + ManiacMansion + 82858d7a-7791-50be-a417-1cecbdeffae0 + 1 + ManiacMansion.slave + + ManiacMansion.slave + data + + + PRIMARY_CONTROL=MOUSE + PORT0=MOUSE + PORT1=JOY + SCREEN_HEIGHT=200 + SCREEN_Y_OFFSET=3 + + + + + Maniac Mansion (Deutsch) + ManiacMansionDe + d5aab2f5-f5ea-5c4c-a8ea-29ec14c9555d + 1 + ManiacMansionDe.slave + + ManiacMansionDe.slave + data + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + + + Maniac Mansion (Espanol) + ManiacMansionEs + 83a672d8-2e8c-5776-b927-e0f5581d465f + 1 + ManiacMansionEs.slave + + ManiacMansionEs.slave + data + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + + + Maniac Mansion (Francais) + ManiacMansionFr + e542da04-b1d8-5776-8fd3-09b59768cd7a + 1 + ManiacMansionFr.slave + + ManiacMansionFr.slave + data + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + Maniax Maniax @@ -53045,6 +53888,7 @@ joyport0_amiberry_custom_none_right_shoulder=Return PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -53668,6 +54512,7 @@ joyport0_amiberry_custom_none_right_shoulder=Return PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -53816,6 +54661,7 @@ joyport0_amiberry_custom_none_right_shoulder=Return PORT0=MOUSE PORT1=JOY JIT=FALSE + CHIPSET=AGA SCREEN_HEIGHT=200 SCREEN_Y_OFFSET=3 @@ -54327,6 +55173,7 @@ joyport0_amiberry_custom_none_right_shoulder=Return PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -54443,6 +55290,7 @@ joyport0_amiberry_custom_none_right_shoulder=Return PORT0=JOY PORT1=JOY JIT=FALSE + CHIPSET=AGA SCREEN_HEIGHT=240 SCREEN_Y_OFFSET=0 @@ -55255,6 +56103,7 @@ joyport0_amiberry_custom_none_right_shoulder=Return PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -56061,6 +56910,90 @@ joyport0_amiberry_custom_none_start=Space + + North And South (Files) + NorthAndSouthFiles + 02073feb-0364-5979-b7ba-72520c580a85 + 1 + NorthAndSouthFiles.Slave + + NorthAndSouthFiles.Slave + data + + C1:B:Forces Joystick or CD32Pad for PL2 (mouse port) + + + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + + + North And South (Files) (NTSC) + NorthAndSouthFilesNTSC + e30b13cc-ced8-5288-bc0a-9a9d7b5b3e2f + 1 + NorthAndSouthFilesNTSC.Slave + + NorthAndSouthFilesNTSC.Slave + data + + C1:B:Forces Joystick or CD32Pad for PL2 (mouse port) + + + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + + + North & South (Image) + NorthAndSouthImage + 86939f88-3713-5d08-af37-a8624de5375a + 1 + NorthAndSouthImage.Slave + + NorthAndSouthImage.Slave + data + + C1:B:Forces Joystick or CD32Pad for PL2 (mouse port) + + + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + + + North And South (Image) (NTSC) + NorthAndSouthImageNTSC + 5d7c4b85-62a9-58e2-800e-897efb777807 + 1 + NorthAndSouthImageNTSC.Slave + + NorthAndSouthImageNTSC.Slave + data + + C1:B:Forces Joystick or CD32Pad for PL2 (mouse port) + + + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + North Sea Inferno NorthSeaInferno @@ -56331,6 +57264,7 @@ joyport0_amiberry_custom_none_start=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -56645,6 +57579,7 @@ joyport0_amiberry_custom_none_start=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -56754,6 +57689,7 @@ joyport0_amiberry_custom_none_start=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -57203,6 +58139,7 @@ joyport0_amiberry_custom_none_start=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -57534,6 +58471,7 @@ joyport0_amiberry_custom_none_start=Space PORT0=JOY PORT1=JOY JIT=FALSE + CHIPSET=AGA SCREEN_HEIGHT=200 SCREEN_Y_OFFSET=3 @@ -58571,6 +59509,7 @@ joyport0_amiberry_custom_none_start=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -58628,6 +59567,7 @@ joyport0_amiberry_custom_none_start=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -58650,6 +59590,7 @@ joyport0_amiberry_custom_none_start=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA SCREEN_HEIGHT=240 SCREEN_Y_OFFSET=12 @@ -59406,6 +60347,7 @@ joyport0_amiberry_custom_none_start=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -59628,6 +60570,7 @@ joyport0_amiberry_custom_none_start=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -59723,6 +60666,7 @@ joyport0_amiberry_custom_none_start=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -59863,6 +60807,7 @@ joyport0_amiberry_custom_none_start=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -60000,6 +60945,7 @@ joyport0_amiberry_custom_none_start=Space PORT0=MOUSE PORT1=JOY JIT=FALSE + CHIPSET=AGA SCREEN_HEIGHT=262 SCREEN_Y_OFFSET=-1 @@ -60137,6 +61083,7 @@ joyport0_amiberry_custom_none_start=Space PORT0=MOUSE PORT1=JOY JIT=FALSE + CHIPSET=AGA SCREEN_HEIGHT=262 SCREEN_Y_OFFSET=-1 @@ -60176,6 +61123,7 @@ joyport0_amiberry_custom_none_start=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -60215,6 +61163,7 @@ joyport0_amiberry_custom_none_start=Space PORT0=MOUSE PORT1=JOY JIT=FALSE + CHIPSET=AGA SCREEN_HEIGHT=262 SCREEN_Y_OFFSET=-1 @@ -60466,6 +61415,7 @@ joyport0_amiberry_custom_none_start=Space PRIMARY_CONTROL=MOUSE PORT0=MOUSE PORT1=JOY + CHIPSET=AGA SCREEN_HEIGHT=200 SCREEN_Y_OFFSET=23 @@ -60626,6 +61576,7 @@ joyport0_amiberry_custom_none_start=Space PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -60908,6 +61859,74 @@ joyport0_amiberry_custom_none_start=Space + + Police Quest 3 (Deutsch) + PoliceQuest3De + 1a111cd9-99cc-53a2-9f46-436beefd2fb2 + 1 + PoliceQuest3De.slave + + PoliceQuest3De.slave + data + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + + + Police Quest 3 De MT 32 + PoliceQuest3DeMT32 + aa21b7d0-dee6-53a8-be5f-7fb63fded97a + 1 + PoliceQuest3DeMT32.slave + + PoliceQuest3DeMT32.slave + data + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + + + Police Quest 3 (NTSC) + PoliceQuest3NTSC + aaf6b70c-9893-55ce-b0a6-3feda3d97789 + 1 + PoliceQuest3NTSC.slave + + PoliceQuest3NTSC.slave + data + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + + + Police Quest 3 (NTSC)MT 32 + PoliceQuest3NTSCMT32 + 8aaaa5c9-146e-50e9-8fbe-15fa747daaaf + 1 + PoliceQuest3NTSCMT32.slave + + PoliceQuest3NTSCMT32.slave + data + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + Police Quest - In Pursuit of the Death Angel PoliceQuest @@ -61654,6 +62673,7 @@ joyport0_amiberry_custom_none_dpad_right=Cursor Right PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -62003,6 +63023,7 @@ joyport0_amiberry_custom_none_dpad_right=Cursor Right PORT0=JOY PORT1=JOY JIT=FALSE + CHIPSET=AGA SCREEN_HEIGHT=270 SCREEN_Y_OFFSET=-3 @@ -62317,6 +63338,42 @@ joyport0_amiberry_custom_none_dpad_right=Cursor Right + + Quest For Glory II - Trial by Fire + QuestForGlory2 + c6b0445d-459c-58dd-8e08-fa14246ea63b + 1 + QuestForGlory2.Slave + + QuestForGlory2.Slave + data + + + PRIMARY_CONTROL=MOUSE + PORT0=MOUSE + PORT1=JOY + SCREEN_HEIGHT=200 + SCREEN_Y_OFFSET=3 + + + + + Quest For Glory 2 MT 32 + QuestForGlory2MT32 + 773e86e8-3fa8-55b0-a03a-17141ea6a2aa + 1 + QuestForGlory2MT32.Slave + + QuestForGlory2MT32.Slave + data + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + Quest For Glory - So You Want To Be A Hero QuestForGlory @@ -62520,6 +63577,7 @@ joyport0_amiberry_custom_none_dpad_right=Cursor Right PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -62543,6 +63601,7 @@ joyport0_amiberry_custom_none_dpad_right=Cursor Right PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -62580,6 +63639,7 @@ joyport0_amiberry_custom_none_dpad_right=Cursor Right PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -62617,6 +63677,7 @@ joyport0_amiberry_custom_none_dpad_right=Cursor Right PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -63320,6 +64381,7 @@ joyport0_amiberry_custom_none_dpad_right=Cursor Right PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -63916,6 +64978,7 @@ joyport0_amiberry_custom_none_dpad_right=Cursor Right PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -64393,6 +65456,7 @@ joyport0_amiberry_custom_none_dpad_right=Cursor Right PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -64428,6 +65492,7 @@ joyport0_amiberry_custom_none_dpad_right=Cursor Right PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -64546,6 +65611,7 @@ joyport0_amiberry_custom_none_dpad_right=Cursor Right PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -65448,6 +66514,7 @@ joyport0_amiberry_custom_none_dpad_right=Cursor Right PRIMARY_CONTROL=JOYSTICK PORT0=CD32 PORT1=CD32 + CHIPSET=AGA @@ -65521,6 +66588,7 @@ joyport0_amiberry_custom_none_dpad_right=Cursor Right PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -66320,6 +67388,7 @@ joyport0_amiberry_custom_none_dpad_right=Cursor Right PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -66806,6 +67875,7 @@ joyport0_amiberry_custom_none_dpad_right=Cursor Right PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -66823,6 +67893,7 @@ joyport0_amiberry_custom_none_dpad_right=Cursor Right PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -67081,6 +68152,7 @@ joyport0_amiberry_custom_none_dpad_right=Cursor Right PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -68567,6 +69639,7 @@ joyport0_amiberry_custom_none_dpad_right=Cursor Right PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -68809,6 +69882,7 @@ joyport0_amiberry_custom_none_dpad_right=Cursor Right PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -69240,6 +70314,7 @@ joyport0_amiberry_custom_none_dpad_right=Cursor Right PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -69297,6 +70372,7 @@ joyport0_amiberry_custom_none_dpad_right=Cursor Right PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -69862,6 +70938,29 @@ joyport0_amiberry_custom_none_dpad_right=Cursor Right + + Spaceport + Spaceport + 30fe5e14-6566-5ae0-bc6a-d37c28f2cf59 + 1 + Spaceport.Slave + + Spaceport.Slave + data + + C1:X:Trainer Infinite Lives:0 + C2:X:Trainer Infinite Fuel:0 + C3:X:Turn off all speed throttling:0 + + + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + Space Quest II - Vohaul's Revenge SpaceQuest2 @@ -69913,6 +71012,23 @@ joyport0_amiberry_custom_none_dpad_right=Cursor Right + + Space Quest 3 De MT 32 + SpaceQuest3DeMT32 + 15666dca-abba-5c3b-9f1c-52f86c08d740 + 1 + SpaceQuest3DeMT32.slave + + SpaceQuest3DeMT32.slave + data + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + Space Quest IV - Roger Wilco and the Time Rippers SpaceQuest4 @@ -69947,6 +71063,23 @@ joyport0_amiberry_custom_none_dpad_right=Cursor Right + + Space Quest 4 De MT 32 + SpaceQuest4DeMT32 + e1adf2ef-9cac-5158-aa39-992ed8c2409c + 1 + SpaceQuest4DeMT32.slave + + SpaceQuest4DeMT32.slave + data + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + Space Quest 4 (NTSC) SpaceQuest4NTSC @@ -69964,6 +71097,23 @@ joyport0_amiberry_custom_none_dpad_right=Cursor Right + + Space Quest 4 (NTSC)MT 32 + SpaceQuest4NTSCMT32 + 9ea9dee4-6faa-57c7-886d-64da3863cbdf + 1 + SpaceQuest4NTSCMT32.slave + + SpaceQuest4NTSCMT32.slave + data + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + Space Quest I - Roger Wilco in the Sarien Encounter (Enhanced) SpaceQuestEnhanced @@ -69981,6 +71131,40 @@ joyport0_amiberry_custom_none_dpad_right=Cursor Right + + Space Quest I - Roger Wilco in the Sarien Encounter (Enhanced) + SpaceQuestEnhanced + de890543-3d92-57a4-9b2d-e03916e1c0f8 + 1 + SpaceQuestEnhanced.slave + + SpaceQuestEnhanced.slave + data + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + + + Space Quest Enhanced MT 32 + SpaceQuestEnhancedMT32 + 936f77ba-805a-5054-b70f-b5ecee1754ed + 1 + SpaceQuestEnhancedMT32.slave + + SpaceQuestEnhancedMT32.slave + data + + + PRIMARY_CONTROL=JOYSTICK + PORT0=JOY + PORT1=JOY + + + Space Quest (NTSC) SpaceQuestNTSC @@ -70174,6 +71358,7 @@ joyport0_amiberry_custom_none_dpad_right=Cursor Right PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -70191,6 +71376,7 @@ joyport0_amiberry_custom_none_dpad_right=Cursor Right PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -70352,6 +71538,7 @@ joyport0_amiberry_custom_none_dpad_right=Cursor Right PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -71510,6 +72697,7 @@ joyport0_amiberry_custom_none_dpad_right=Cursor Right PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -71755,6 +72943,7 @@ joyport0_amiberry_custom_none_dpad_right=Cursor Right PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -71772,6 +72961,7 @@ joyport0_amiberry_custom_none_dpad_right=Cursor Right PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -71979,6 +73169,7 @@ joyport0_amiberry_custom_none_dpad_right=Cursor Right PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -72278,6 +73469,7 @@ joyport0_amiberry_custom_none_dpad_right=Cursor Right PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA SCREEN_HEIGHT=256 @@ -72381,6 +73573,7 @@ joyport0_amiberry_custom_none_dpad_right=Cursor Right PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -72536,6 +73729,7 @@ joyport2_amiberry_custom_none_west=Cursor Up PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -72604,6 +73798,7 @@ joyport2_amiberry_custom_none_west=Cursor Up PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -72850,6 +74045,7 @@ joyport2_amiberry_custom_none_west=Cursor Up PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -73030,6 +74226,7 @@ joyport2_amiberry_custom_none_west=Cursor Up PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -73073,6 +74270,7 @@ joyport2_amiberry_custom_none_west=Cursor Up PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -73107,6 +74305,7 @@ joyport2_amiberry_custom_none_west=Cursor Up PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -74349,6 +75548,7 @@ joyport2_amiberry_custom_none_west=Cursor Up PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -74557,6 +75757,7 @@ joyport2_amiberry_custom_none_west=Cursor Up PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -75758,6 +76959,7 @@ joyport2_amiberry_custom_none_west=Cursor Up PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -76135,6 +77337,7 @@ joyport2_amiberry_custom_none_west=Cursor Up PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -76205,6 +77408,7 @@ joyport2_amiberry_custom_none_west=Cursor Up PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -76605,6 +77809,7 @@ joyport2_amiberry_custom_none_west=Cursor Up PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -76724,6 +77929,7 @@ joyport2_amiberry_custom_none_west=Cursor Up PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -77026,6 +78232,7 @@ joyport2_amiberry_custom_none_west=Cursor Up PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -77043,6 +78250,7 @@ joyport2_amiberry_custom_none_west=Cursor Up PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -77094,6 +78302,7 @@ joyport2_amiberry_custom_none_west=Cursor Up PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -77644,6 +78853,7 @@ joyport2_amiberry_custom_none_west=Cursor Up CPU=68040 JIT=TRUE CLOCK=MAX + CHIPSET=AGA SCREEN_HEIGHT=262 SCREEN_Y_OFFSET=-3 Z3_RAM=32 @@ -77664,6 +78874,7 @@ joyport2_amiberry_custom_none_west=Cursor Up PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -77917,6 +79128,7 @@ joyport2_amiberry_custom_none_west=Cursor Up PORT0=JOY PORT1=JOY JIT=FALSE + CHIPSET=AGA SCREEN_HEIGHT=216 SCREEN_Y_OFFSET=16 @@ -78212,6 +79424,7 @@ joyport2_amiberry_custom_none_west=Cursor Up PORT0=MOUSE PORT1=JOY CLOCK=28 + CHIPSET=AGA @@ -78255,6 +79468,7 @@ joyport2_amiberry_custom_none_west=Cursor Up PORT0=MOUSE PORT1=JOY CLOCK=28 + CHIPSET=AGA @@ -78407,6 +79621,7 @@ joyport2_amiberry_custom_none_west=Cursor Up PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -78968,6 +80183,7 @@ joyport2_amiberry_custom_none_west=Cursor Up PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -78985,6 +80201,7 @@ joyport2_amiberry_custom_none_west=Cursor Up PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -79020,6 +80237,7 @@ joyport2_amiberry_custom_none_west=Cursor Up PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -80385,6 +81603,7 @@ joyport0_amiberry_custom_none_right_stick=F7 PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -81021,6 +82240,7 @@ joyport0_amiberry_custom_none_right_stick=F7 PORT1=JOY CPU=68040 CLOCK=MAX + CHIPSET=AGA SCREEN_HEIGHT=216 SCREEN_Y_OFFSET=16 @@ -82227,6 +83447,7 @@ joyport0_amiberry_custom_none_right_stick=F7 PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -82461,6 +83682,7 @@ joyport0_amiberry_custom_none_right_stick=F7 PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -82478,6 +83700,7 @@ joyport0_amiberry_custom_none_right_stick=F7 PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -82630,6 +83853,7 @@ joyport0_amiberry_custom_none_right_stick=F7 PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -83274,6 +84498,7 @@ joyport0_amiberry_custom_none_right_stick=F7 PRIMARY_CONTROL=MOUSE PORT0=MOUSE PORT1=JOY + CHIPSET=AGA SCREEN_HEIGHT=200 SCREEN_Y_OFFSET=3 @@ -83293,6 +84518,7 @@ joyport0_amiberry_custom_none_right_stick=F7 PRIMARY_CONTROL=MOUSE PORT0=MOUSE PORT1=JOY + CHIPSET=AGA SCREEN_HEIGHT=200 SCREEN_Y_OFFSET=3 @@ -84109,6 +85335,7 @@ joyport0_amiberry_custom_none_dpad_right=Cursor Right PRIMARY_CONTROL=JOYSTICK PORT0=JOY PORT1=JOY + CHIPSET=AGA @@ -85996,116 +87223,6 @@ joyport0_amiberry_custom_none_dpad_right=Cursor Right PORT0=JOY PORT1=JOY - - - - Bomb Jack Beer Edition - BombJackBeerEdition - 1e263a57-4b29-5de1-b95c-0344232e7deb - 1 - BombJackBeerEdition.slave - - BombJackBeerEdition.slave - data - - - - - - PRIMARY_CONTROL=JOYSTICK - PORT0=JOY - PORT1=JOY - - - - - Femme Fatale & Data Disks - FemmeFatale&DataDisks - 311ecce9-fed6-5424-8be3-4d908093ee56 - 1 - FemmeFatale&DataDisks.Slave - - FemmeFatale&DataDisks.Slave - data - - - - - - PRIMARY_CONTROL=JOYSTICK - PORT0=JOY - PORT1=JOY - - - - - Maniac Mansion - ManiacMansion - 82858d7a-7791-50be-a417-1cecbdeffae0 - 1 - ManiacMansion.slave - - ManiacMansion.slave - data - - - PRIMARY_CONTROL=MOUSE - PORT0=MOUSE - PORT1=JOY - SCREEN_HEIGHT=200 - SCREEN_Y_OFFSET=3 - - - - - Maniac Mansion (Deutsch) - ManiacMansionDe - d5aab2f5-f5ea-5c4c-a8ea-29ec14c9555d - 1 - ManiacMansionDe.slave - - ManiacMansionDe.slave - data - - - PRIMARY_CONTROL=JOYSTICK - PORT0=JOY - PORT1=JOY - - - - - Maniac Mansion (Espanol) - ManiacMansionEs - 83a672d8-2e8c-5776-b927-e0f5581d465f - 1 - ManiacMansionEs.slave - - ManiacMansionEs.slave - data - - - PRIMARY_CONTROL=JOYSTICK - PORT0=JOY - PORT1=JOY - - - - - Maniac Mansion (Francais) - ManiacMansionFr - e542da04-b1d8-5776-8fd3-09b59768cd7a - 1 - ManiacMansionFr.slave - - ManiacMansionFr.slave - data - - - PRIMARY_CONTROL=JOYSTICK - PORT0=JOY - PORT1=JOY - diff --git a/whdboot/save-data/Kickstarts/kick33180.A500.RTB b/whdboot/save-data/Kickstarts/kick33180.A500.RTB new file mode 100755 index 0000000000000000000000000000000000000000..89fba0b7338843388c87435691db218f0e8aefb8 GIT binary patch literal 3882 zcmcInafBpkmVc2M^ZL8z&GURdpU)?R6jBH&rIb=CDW#NBDk+uHN@=B(GD<0}jMm0D zt&P&k7^98V)+no;HQLx<_17x4UkSx`hF82y|E3+?b=m}fB9j)7rUEc?d2~!xqfFqO(i}( zTLUy)Upqto5+FGPXn2I=w%Pqd9Y?H@*ZTm;C$%)LaO4*sL2{g?Y3gcKCrw+i4&i%A z0Is}Q!vK=^0FvK7P`XXDq$rs@8|)7@mrqOo(dr1Gu>+8}&C$FURaIG37kn&A=TvF* z3z6*|fW~eW;+Nm-0lf5vK;r{p(dUP%=tFq<7@(Ou1YlG1zq$}>mDTk`@_f=?cKVZF z{1hMw0Lii1!>sx^s~$&yMjtR=X=Bcf1*1(4qts`s2!JUba^(ytjPBuS%lCE(;-0egV{zk07%wYX89|ST>Z1< zgT-dmz4ggmNNl&?_1~;or??2;03=%g&3ddq0!Y4?Ao~>ilXSAo=<;>EDn^3zD1s!}cCP)1JNw(EO$Q zDTY%<%J-3aa;(uKM|0fz%^Sm&dCMwfFU5k7DGVk~hEIAnoiI5;=JcZ(ljoaj5NovN>Wr``TET7blEm4T2{ z*xG_w7c%Yb-5VW4^6Z$SIP@8IluPGkyxiSy+3|Z+yJ0Np2qG7_HTua7cJCiDJ4(zp#A%hF!gzZ;y0U5J$rR zi6=|u_tBPCv|A3^p5to!Vot|_td``8wsAsP#!|R#?#%Kv=k-cZb#nzsUM*&eYzoOe zM#ESQF%(#8&!u5zek?e~ryI6&x81wd+Vz82<%>=f`G~LcardNjPj~vJv)Arxm1mzu z(cbBa(+<`BA~`#P33JuPiXX3d=tqmzUFQzU zZp^Ba#cbAjEBLkQp#Qq+w7BI87qY^+Ux~E`8E?&4ds{}XR%|&p3vmN+Q-I`dZ*VP> zEg26MLzJ?Eel|CDzZLvZA2G`^<(9iPsq381={PEc+z% z%LCUk#KtLSY;tc6*%sNnOMMNf*|FR#`a7Q1oj3|*^j$F}mp67cbkZ6)*$yIGIsNF1 z7Qg=_PJcf9dG;Uk$%9}&+qmD)M4!YW+Fx@y3DTIH!o~K?W$T2 znR<3Q^-K0NcT(nN!%jezr%6)`%1E4_wjRyb?15kw8 zHcHb@g!Eo5k8ydBYAs#=u;yi&R`HOLp?Q>h-BYYLj!9CKyv5u*}Z6-+x-rvHm9@NiXTQ3ES*%QdZE6g0MIDwZ(eQ!TzOJUs~3QA-36o6ffzCHQuj}>3BC*P(tf*) zt`IZ4gnxe<03)Z}$?)J6fX1qV#(SG}H94)(`BN7RqO*$DSq?%K5e8DEsrA>@u;ID0 zEw(fg+qVIuvEof8$hgegFr^=2B;mRPk%Yh6#V;RL9M{yeLw7^2@9Yr*&AdW_vS(IinD)xG!Edz-#SEL0_y>v?5 zdHliXcNQ5buwgv*Z#(De>hb)tDokNo(niAb*FEW9mu+Pex+W3M9 z@wW6ZR`aua;b?D1EN17iO*^uwF0;XkBRmf+^uany(PlD2%}uMKa;P{7c;U&s=JD%0 z;XyENji|;UVmoriNa6>^MI&DlF$p57Co+g4C^WJ|)xdYP2d!VLOvj3(%AD|N8DpVgw~>7oykPDn9%4Yj;CqTTTN^S?6-jKFlN^e6IGkZ? zc*IoCwZj~N0s(P9e#j~7C?b!QW8g=X6B74K_6Qdzxc(uaUri^6T zCKwVlrk<(Jxx&sac-+r)07;LSyRB30^n}D?pVSGwd|BNA0KWb9+i#&cS7^>#(44oS zIj^8O??Q9lhvs|;&G`m2w+uA5525+D=g|E7GiW|Kf#yHnhUSwLn*X$h=0ER1^V45L L^WTqZpEdm#d@bz{ literal 0 HcmV?d00001 diff --git a/whdboot/save-data/Kickstarts/kick33192.A500.RTB b/whdboot/save-data/Kickstarts/kick33192.A500.RTB new file mode 100755 index 0000000000000000000000000000000000000000..89fba0b7338843388c87435691db218f0e8aefb8 GIT binary patch literal 3882 zcmcInafBpkmVc2M^ZL8z&GURdpU)?R6jBH&rIb=CDW#NBDk+uHN@=B(GD<0}jMm0D zt&P&k7^98V)+no;HQLx<_17x4UkSx`hF82y|E3+?b=m}fB9j)7rUEc?d2~!xqfFqO(i}( zTLUy)Upqto5+FGPXn2I=w%Pqd9Y?H@*ZTm;C$%)LaO4*sL2{g?Y3gcKCrw+i4&i%A z0Is}Q!vK=^0FvK7P`XXDq$rs@8|)7@mrqOo(dr1Gu>+8}&C$FURaIG37kn&A=TvF* z3z6*|fW~eW;+Nm-0lf5vK;r{p(dUP%=tFq<7@(Ou1YlG1zq$}>mDTk`@_f=?cKVZF z{1hMw0Lii1!>sx^s~$&yMjtR=X=Bcf1*1(4qts`s2!JUba^(ytjPBuS%lCE(;-0egV{zk07%wYX89|ST>Z1< zgT-dmz4ggmNNl&?_1~;or??2;03=%g&3ddq0!Y4?Ao~>ilXSAo=<;>EDn^3zD1s!}cCP)1JNw(EO$Q zDTY%<%J-3aa;(uKM|0fz%^Sm&dCMwfFU5k7DGVk~hEIAnoiI5;=JcZ(ljoaj5NovN>Wr``TET7blEm4T2{ z*xG_w7c%Yb-5VW4^6Z$SIP@8IluPGkyxiSy+3|Z+yJ0Np2qG7_HTua7cJCiDJ4(zp#A%hF!gzZ;y0U5J$rR zi6=|u_tBPCv|A3^p5to!Vot|_td``8wsAsP#!|R#?#%Kv=k-cZb#nzsUM*&eYzoOe zM#ESQF%(#8&!u5zek?e~ryI6&x81wd+Vz82<%>=f`G~LcardNjPj~vJv)Arxm1mzu z(cbBa(+<`BA~`#P33JuPiXX3d=tqmzUFQzU zZp^Ba#cbAjEBLkQp#Qq+w7BI87qY^+Ux~E`8E?&4ds{}XR%|&p3vmN+Q-I`dZ*VP> zEg26MLzJ?Eel|CDzZLvZA2G`^<(9iPsq381={PEc+z% z%LCUk#KtLSY;tc6*%sNnOMMNf*|FR#`a7Q1oj3|*^j$F}mp67cbkZ6)*$yIGIsNF1 z7Qg=_PJcf9dG;Uk$%9}&+qmD)M4!YW+Fx@y3DTIH!o~K?W$T2 znR<3Q^-K0NcT(nN!%jezr%6)`%1E4_wjRyb?15kw8 zHcHb@g!Eo5k8ydBYAs#=u;yi&R`HOLp?Q>h-BYYLj!9CKyv5u*}Z6-+x-rvHm9@NiXTQ3ES*%QdZE6g0MIDwZ(eQ!TzOJUs~3QA-36o6ffzCHQuj}>3BC*P(tf*) zt`IZ4gnxe<03)Z}$?)J6fX1qV#(SG}H94)(`BN7RqO*$DSq?%K5e8DEsrA>@u;ID0 zEw(fg+qVIuvEof8$hgegFr^=2B;mRPk%Yh6#V;RL9M{yeLw7^2@9Yr*&AdW_vS(IinD)xG!Edz-#SEL0_y>v?5 zdHliXcNQ5buwgv*Z#(De>hb)tDokNo(niAb*FEW9mu+Pex+W3M9 z@wW6ZR`aua;b?D1EN17iO*^uwF0;XkBRmf+^uany(PlD2%}uMKa;P{7c;U&s=JD%0 z;XyENji|;UVmoriNa6>^MI&DlF$p57Co+g4C^WJ|)xdYP2d!VLOvj3(%AD|N8DpVgw~>7oykPDn9%4Yj;CqTTTN^S?6-jKFlN^e6IGkZ? zc*IoCwZj~N0s(P9e#j~7C?b!QW8g=X6B74K_6Qdzxc(uaUri^6T zCKwVlrk<(Jxx&sac-+r)07;LSyRB30^n}D?pVSGwd|BNA0KWb9+i#&cS7^>#(44oS zIj^8O??Q9lhvs|;&G`m2w+uA5525+D=g|E7GiW|Kf#yHnhUSwLn*X$h=0ER1^V45L L^WTqZpEdm#d@bz{ literal 0 HcmV?d00001 diff --git a/whdboot/save-data/Kickstarts/kick34005.A500.RTB b/whdboot/save-data/Kickstarts/kick34005.A500.RTB new file mode 100755 index 0000000000000000000000000000000000000000..2407ca0b660282448e352e2ffa1a2d424c7bedc6 GIT binary patch literal 4020 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 o18iR$ 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 literal 0 HcmV?d00001 diff --git a/whdboot/save-data/Kickstarts/kick40068.A4000.RTB b/whdboot/save-data/Kickstarts/kick40068.A4000.RTB new file mode 100755 index 0000000000000000000000000000000000000000..b8c64be1fa592fb26811e163a2cf4dc4c6b2f2fa GIT binary patch literal 4976 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