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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 delta 3930 zcmZ`*2~-qU7X7^z{b`!bZuUh{K~NA-4z7R(B4ZO#%!v{sZW+ZG#h?+FXxar$R0KWx z2obPFz(Zmt1ho*^k%`f$Gfs@g9Ce~mS zzd54go3O$-4?>*Cwh!M*T^`82cFIV|`aZSeUKmX(buZ$e#`}eQbwWqT6xX_WrrSCh zm(y}-&nzE8rVXsi3;xhY#%Tj4kKTxJ7hLNChgZwv$Ofl3cs(HtJnQa^{Z22%&0CRc z{@0-R$RFGYnd4J;J-yq_%TY`8p}deMr{X>fTt`Swq@s?_8n#XfWIcSha@8rLhL9Ot zUH0`jjl{8}mX5S2KQ$rg+Pco$W7HBS@4ar&{X0F)v$(QDbLvOnz8vqvkJc!r8Kr6% zxiI15lyoa0{+SBC%~!F&Dy3y?;Jov?8cN8|z4(kq#c8S$8iDc(YUIa%ttbw#16LT} za$S+7mBLw7%Wgz=y5jbYbmh0-QAEl2@B3fPWw#83G zijwD3RE1UWMwe=-fT+aCj-L~zHoDkPBWpj_T`^R>NUu_3b@;hfyu=KV zaq58Ji*MFuK2h`{>Ej*ikIHN&J44ELUzkG3;~M^}c(rn>)FoZnKJJGzL6gp6o>eCP zVv$|6I$@uG4n+O#c@jjSKv}B=WtB zPWX81`Hl5jWzU?kH7jmCR{D4o5+Bb0txcQa?dNEmkxh@BOyLPQgewT~ByNz@Kuvty zMeXneNybVG??`=N!*P7Ymk=Y$3L2<4tVreze47ua=owv>GWq6zUiI+Dp@`;x3FA`y z?K|Rn6nA7wGFRL4hGFW!?A+Q#?u6V8=cBT?N_V@ug{ix9xV{d+wGjdHT5fKTDJ?#s`}Ge@-jt~jV9q+Lsh2i88b33aQ^amSR>2A@sO zGoLP;@cCYp`DysSUf{k_Lc)*SNE|XJk})aIJYdt8>%0$PnL`zP!H-<(A?dLyotS67 zF*Pi&pFu&E1SmIl7dr9Xg}TWGm{qPDE4-Z9gclUAKJ-4GeEme8FV`Iiw--I51&b*- zp?iD+w(q1V_?B`aOg_db_o)d7m%YOMAi9)#fqEB>l07uPJgBS>L4F{+M9r2~>I++U z(O9G7kXf>KMs=BjP!s^}CDd;h&;(hYvZn=03z4qJD@4qbQ%v=+8EBQwc4R#hfWFb(w?u{dfh7F%L@UT3NGssg+4=M-qi*VRZ*}gZ5A9NPA*y2PTdw zr6w4?n+}yl*6-FoVr373L8a6W1|OrY(7v0d^hA2X;8HqCDygkxnR)x3twZKx&|EjhjqpHW_d+eV*qxgyxKZ!QWU_y%0ydh@~^@#lQKLUoltWLza8yl6Bo0~m% zAuP7iUT6)SduWi}W=RZY)YwHi%N>NqN`urk%lE?|%t`}M`6>b`n`H-NTd6 z@*E)-)_DVQ+|4w1&{YbXF#x|1crpUal|u8`A}~D}wp7vtbyt$+E}W^PBk))JT`*J$ zTZX*aiw&$g=JN|D+Z zsv4+=(16^^32~R{+l%3R4GqN&Kwl3s*euVTG-5$Ba~JGt5E_Dd+;p2|*D(zot)~&F zy(uDY_cc(uM(ZsshH%^wq1uyuVCoSXF03y1a6;TLbFzo)$x&4TgtDge3wR zgj^Y^kk~*6VDkA0U=_`qw9KQ!5ji3vq*x1=8fY{k=)_Dj?VuK>CUd>v_oKqu&K2R% z(^}Ykl*XbEO_&LU)heCcu_-aV$qNr1KmZcKD_99MvRrMPGp#O*9M(`A7u1Q{eL^nvAo4DHWbH z(O{%Z&8XdHG5!UHHPgWe%tt`8&$86UK|wQ3L-D^|;7YS_dRz-~U6vq&4jRjKeITtx zs2ok0!B^vTu`1E+Z_o%?(S_Zhs#RFu*d{O^hztnko7qOaq%~y5D_di_R;&?YjL_O1~ zhY*#n6Df3H_6|nlWx2k!qv*cW5%5f;qNx~w#>-w;7~tvFTUPmDyJEAbIB-lz8SE^^ uIeb?GzaA6H*LMp1r5@e{Z*~gQLXj%fLs2J - + 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 zcmcgve}rU59S{rMOHO3fgw6R946>-*D zV~w?9tymEw)`?iTlRs9tvm#;Lkin|lBVx5z_&zoe=g&c8zT)kJX z>Q#N;x2nEBKHu-#_~whZ2qBH%HCUrTR>rctW!Vec4ZM*0P+Gfc6z3p#(HKKk4hdPg zMac74(7wyQWoOaOF+1EV?JC-{YovCeV%4BO|6)H$y8#A2`xe!jWuqbe{R8Z0#gwYq z5nmBfJHVTz*cIFOraFhOD9@Cbc~tfKIqllXLsDB}&ka)zH5-lCqy6b32|01OA_Ipv zQNO;a_yx|V+{+*zw71%;)BBlyINQa#>zFsI-Eqq+6d{$Gh^18gkmt(ViIi)gSlP&( z|LW-`AxRB?x}%yVQr<+NOG6TElG?<%*bO__<13?H-bOp8S%^-P+R1;<+@7rF#ra29Nlh1J zVV}<8eL8VZLA!v&DqTNB|M4hF_$#icc(iiJuXdx@Ii$<|4yEl4(zrHXUY#cQSJQ*U z6|j>p^%@^O2%x*?Nv&#Ak$#bO=P?w+Io;YIwIhtax--?AgEc=$Dw=;dg-K^OjPbCL zS~sb*@$~k~2Wi~=a0~r!KbPfMIfzN^oOm^bw(ENTGM*op?|N?qQnOxdMo>NGpKMPr zHOa~;xu Pp<1oM_y*Kv!*sD0}#0f>p59T7LvZ9_Q4w-S?hi&UQ1RMVkF-_;Cj@V}6n7)4KdgXrF!Gk04Xt4-6()o`XsEqdTz()f0(vTeqA@?SmR zf3l8lK8_N$%DfW1txPOhWfnE9bDA63m0aScJcuEw?eh5Jg@~*f+j9~BCL=Ib<*Skwn zd$1H9r&q^qY;uNmx32AYo(oR2{ z>5lH0wzDaS zyW8jY((!yR675TK3g26~qfAJg8Oys$4TQ*3nv1(L(Xri0eASrktneYB<3smyR zvg+1)U0pVjV46}D7*~`!XrAJg8_%g@ybJz;zq>BfqSr0^X$X&8nQfbxabUO-L4cEH zT*q8T1uvBYr=>iXlyJ{XDq}<3ubfPQoOHpkdi6xP0;i7+>uUrn&Ai$^aWjh{Gt{86z0NfD#N2t0kw^ zD<&z%s}ZB|ks-C6#H3or0rr35ZIP?#_tE&o4N4k4XcN}AaubyilDKNFig4A~dJ1$i&aQqb>y{dQo=u|!6pUtkhA>R@No<6u4L7or^w4r+^c%CX9Rs{{svG52f;<2D}Feeq^}_h*-A5S63IHp zDmS_W2Cnk^$LbYEgiHO_TWJY2+53O`T$e(kZVpl-Ge?Lb1S{ zupz5TN}m<5yC7TC=i`IxZg+ECY8noG%Gc#8@LM~G8Jl!5wGJxg9vIQ3Dq?ZYvyP$z zM~^ILFIxKTC3n*?1MFAGT`5gHu#a+S+swdUzT(h|#JIAY!)Bl^39&W%Q;NJqPh2W2Tl;*EDSwtWep@B&DK)LO_CSONHuuBjj&$?#WDmEp0kqXTD) zkl~<*y428V6-*^-!W*XTfngNF24KQIC2#=>LfKDPyS&&PP;)`?CM~vt4z$dz0u9WM zaaIa-QoueFWE{qUAukkoB2Tw|k_n2xC^*DP!4>1@srIUc-~_R7{5T-pXBIt!gN$Pp z$&Amqhy>N5L%Upgj?6@0GqY_VvJnsk_61b72pp!Xt6wyENzhZtKx2z*!E-jJ5kS|v z-swUr2%P~+LqQ=D2pX9QokzP2mn`+*z8Jbs8lLtAzGj+7$D0aXzy&@Vo_|<^CWN znQH1A1@9KsZ;?K0wm5dh856S^eQ^i_VJSlxmDp!xsql|PkB&sY462Q+mJ3nD`>NT3 zA6Qy)Wh8n27~SzFOa6(1G+3d=s3~fWTA-Gw9n>DFFBqw>?U4Gf4@v#E2LSLrQvdx0 bQoq+A^*_u>{g3OU{@F*Q{@2}#XI1_Md@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 zcmcgve}rU59S{rMOHO3fgw6R946>-*D zV~w?9tymEw)`?iTlRs9tvm#;Lkin|lBVx5z_&zoe=g&c8zT)kJX z>Q#N;x2nEBKHu-#_~whZ2qBH%HCUrTR>rctW!Vec4ZM*0P+Gfc6z3p#(HKKk4hdPg zMac74(7wyQWoOaOF+1EV?JC-{YovCeV%4BO|6)H$y8#A2`xe!jWuqbe{R8Z0#gwYq z5nmBfJHVTz*cIFOraFhOD9@Cbc~tfKIqllXLsDB}&ka)zH5-lCqy6b32|01OA_Ipv zQNO;a_yx|V+{+*zw71%;)BBlyINQa#>zFsI-Eqq+6d{$Gh^18gkmt(ViIi)gSlP&( z|LW-`AxRB?x}%yVQr<+NOG6TElG?<%*bO__<13?H-bOp8S%^-P+R1;<+@7rF#ra29Nlh1J zVV}<8eL8VZLA!v&DqTNB|M4hF_$#icc(iiJuXdx@Ii$<|4yEl4(zrHXUY#cQSJQ*U z6|j>p^%@^O2%x*?Nv&#Ak$#bO=P?w+Io;YIwIhtax--?AgEc=$Dw=;dg-K^OjPbCL zS~sb*@$~k~2Wi~=a0~r!KbPfMIfzN^oOm^bw(ENTGM*op?|N?qQnOxdMo>NGpKMPr zHOa~;xu Pp<1oM_y*Kv!*sD0}#0f>p59T7LvZ9_Q4w-S?hi&UQ1RMVkF-_;Cj@V}6n7)4KdgXrF!Gk04Xt4-6()o`XsEqdTz()f0(vTeqA@?SmR zf3l8lK8_N$%DfW1txPOhWfnE9bDA63m0aScJcuEw?eh5Jg@~*f+j9~BCL=Ib<*Skwn zd$1H9r&q^qY;uNmx32AYo(oR2{ z>5lH0wzDaS zyW8jY((!yR675TK3g26~qfAJg8Oys$4TQ*3nv1(L(Xri0eASrktneYB<3smyR zvg+1)U0pVjV46}D7*~`!XrAJg8_%g@ybJz;zq>BfqSr0^X$X&8nQfbxabUO-L4cEH zT*q8T1uvBYr=>iXlyJ{XDq}<3ubfPQoOHpkdi6xP0;i7+>uUrn&Ai$^aWjh{Gt{86z0NfD#N2t0kw^ zD<&z%s}ZB|ks-C6#H3or0rr35ZIP?#_tE&o4N4k4XcN}AaubyilDKNFig4A~dJ1$i&aQqb>y{dQo=u|!6pUtkhA>R@No<6u4L7or^w4r+^c%CX9Rs{{svG52f;<2D}Feeq^}_h*-A5S63IHp zDmS_W2Cnk^$LbYEgiHO_TWJY2+53O`T$e(kZVpl-Ge?Lb1S{ zupz5TN}m<5yC7TC=i`IxZg+ECY8noG%Gc#8@LM~G8Jl!5wGJxg9vIQ3Dq?ZYvyP$z zM~^ILFIxKTC3n*?1MFAGT`5gHu#a+S+swdUzT(h|#JIAY!)Bl^39&W%Q;NJqPh2W2Tl;*EDSwtWep@B&DK)LO_CSONHuuBjj&$?#WDmEp0kqXTD) zkl~<*y428V6-*^-!W*XTfngNF24KQIC2#=>LfKDPyS&&PP;)`?CM~vt4z$dz0u9WM zaaIa-QoueFWE{qUAukkoB2Tw|k_n2xC^*DP!4>1@srIUc-~_R7{5T-pXBIt!gN$Pp z$&Amqhy>N5L%Upgj?6@0GqY_VvJnsk_61b72pp!Xt6wyENzhZtKx2z*!E-jJ5kS|v z-swUr2%P~+LqQ=D2pX9QokzP2mn`+*z8Jbs8lLtAzGj+7$D0aXzy&@Vo_|<^CWN znQH1A1@9KsZ;?K0wm5dh856S^eQ^i_VJSlxmDp!xsql|PkB&sY462Q+mJ3nD`>NT3 zA6Qy)Wh8n27~SzFOa6(1G+3d=s3~fWTA-Gw9n>DFFBqw>?U4Gf4@v#E2LSLrQvdx0 bQoq+A^*_u>{g3OU{@F*Q{@2}#XI1_Md@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 zcmcgve}o-L9?a>)}H5ip63~3j4{R-V~p{Ph!GJn zaxo$zB4Vu-5hvD)yLC>i-TPy$73(fyZ$(6`v(AdO)`{g-thHjTyZiQJ!-YN8{c+V@ zUDZ|Jt{>m;=liK||1$dZy9lAqA3LPeK?_5k-O}XvW(QtS`+#dbQG!wsIH{CE3+EA9 zxP{Ow7omKQd`I@7oI!6r&-4V!{Uy{o(+t(YKmQ^>DZ2^-{Op@GbLO26xAzZWJqs)o zNx>c?)H(}q9!9O}Wb5l@A3-CzmqE|pnp!``r5-&*tzB4iM>S1Jr{h~Fe>!o5UcS_b z!3b|cesWXLGn9_0<&HndH}c8&UZfvRcVONX=vR|+*tG%@<3fzsE*JDXjfK@C&X+)9 zVKp}PtEcM-y>ynNg-aado?QaUTj-Ttu!N^DLX0%eUtHr-3MN#SbI(;-FYe}vIoPje zAEMTtkUK7Z?BY)hj2z-yUZiSo0PDCE^}30VZ^Vn-h85*ejt#{Lm(bU@Siz+gq3%LV zVD<}qOL9=e|1X^z26(<%h*TM4RA5T%0v8tJDi8C}H^w*pqAIJZN@_JI<2>k>)gg|o z3;W|?mG`1&B6Zmxjv&_Qz_?g_s&aMDLBC_)O!wYejz5}& z2Z2cmYQ3t&3a#&2)C$(^H=hP9+}d?vIrG7yl;Yi0`057agRQArua;~-XvX>82 zRVfSDY83%kuJ!GE7Y{=}xxE4PCy#ix&nq9b)~<)ksBMm20z}+bpZ9J$)DlLldH@;J zI{n?|_*{w>midy9%3ofQp7bq`c)loBM->R^2dg1kC~6O1=6f*mA0XFXv#a4G@Aq!* zT^Qy0dDITKQ42h!6^%E}$k6)&wH`|XGm)=Q3-_%KLg(%FO8dd>y*u5dX{vb2Ji%Es zZLs7$u&1DGuQfhG2o3(LC;d;@D&xvJG9gwlnhWK#ZjyL0Kt@ujJAnSQjKYxFpjjCKC~RQ8pJ>rYmtKG9}Wivhs(;$WlyU zYf=V`$Pur*>zB$o?DGCLvm89e;Y6@d>6%T($NfhxEhJg6XMh*F0Au7f| zjRCteVY$pk{uQM*!_2yPKBx!rd821Sbklty>fk^H%D6zO_kmA09a|hQ(Oo2bIbxD| zWWrU+RSo;OoE7ViFY^?ilU3LD@<&4%1Okc z{aGpcE?0cfaK7l#%a0tpdC!#Z74N(6tNKkXzbmdK9{&in!m5%U_So20ceE%tInLY% zf89`ZX)um_Uu=x%00$yeR1V!EYo6Ztl=cEO-~F63r7r86JwmLnBqKVeT|s+7I?jop zRyjF~_OHo+hH*SC7)@ne>oL=`Ry^`ZPe+WAK`JL~&uGPTpu{^pXA*GoZo(+z3=#zw ze1e;!g@(Dt}`mpIMJDt>`&g)IRkH?!G(bV?tH_xckiR~7{47GP0IZD7s z&%T20UQ;`I|~y!mKT;Z$750bu>OxbQ*K>wT;Y0rwFCgTa~MG?ozJ2u%A@9Tx-;Fp$z` zl9pU{r2(gsTocDJ!|T3IF^=6hR;=gpJmfWBf4;bLG6o>YuE;V#xwTwaI#!WVm;*fp zREsILq2Ow1dMOl|RN!@y;&2S5p#(0iD5F|}PPD=x97y-&848@_dCFnht$9IYB#yT8#N` zi4cChik&0_8-nA(NejYFQoJFmqeOA!AlA_oe2Z}GnVBIYBSjSzn1+SG zeS=@ql$=ud=}~kBVK?y zIHm`&5!4`WO9qS$Cod;4c+EKLX@WuFK&=2(4jckTf;9I@);(QTSe+I$!Re-z7H2X1 zoi#iLjzBUd78$@afN(__7?38Qc*S5LZWIG}C{q}ilnO!*u(YBZ1MuL50vn6QXDP%` zTn;_qctod^c??U?Ye50=5(b3DOgCv?NRJv=7BIMm0c0tGSSf#-Ll$I&bh7c$8CWYluLfCYI=M?~jgai&>4hserx(d!^eg{V{Gj0(l!f2}bq{8OWUK|<}?K#n1&kTb{ybNYOWnGq^ev^e)>><=9Y<@&aU92S9LE^PF~%5U%o}5kF~%5U ztg+TwYpgZKh&3W&<*gMfR>X>kwbr#_trb^9tSi=95piAXx~_~3yyJ>DPh zpI5rNtG@c`tFOLa^;Q4pvwwV#5UPJvC-pk2-GI6m4M<2d;ex0S4md)!ZxXHds1g(* zyr;EBwMzgUB4pMP@~Zl83##4z!BKn1y^4CB%186NfFCwQR_}{*0YC&R-ss7CpXzGc?KB3h97L01U4gfSSx%ZTSxqR{)95-BFsn;2NJ>gdC z>kg`Y`I0O9b?+kb5}5lL@HhidzcdQ=_-u4}5uwvRf~YzGZT4H+clr!k&^t9(`6hsN zLXh_{eDPzbFn=1xK7ko;0&MUZ^7a7c_78HbwZ&hvIB#58?;)=SuvNjAgB<3;3r&G+ zYk%UZbLn%CaP3Aro`1J{F|kABrJ=POs%# zj+K$R$n8~WS93X@dvLD%0O+xSeh+!KdglhfZ4FJ^&Srl3KB_%lHNeR>)CUJQe?ZcjXO ze%}Xuz&eYI%VB4XJaeu;Z_c+DzFjL}+(w~Ac>n9_0rKWoz}h^qe+<}P@OzuETj($H z^myd}o%)9cdCzD63i=Cd+C<)k(Fb^b z*x;*sMmAI@I99$dgcu;t*?{Bn8PvZ$N8Z{J=-B$>ao&o5DUBDcFiBzzK6L*n^7#l|vjj&_4w2=s?(kpH))Y33xFT7qcs z_=sFW9%zI@wE5#%(9AukKOrQ?W6(-{=k5A=7;{S?^dD<4W83#f*jLf7IY#PhihjQX z6d^1*+*7j*oxb=IpGtIk%Yn1(1*P=fNti^nPZNk0UTegB6g7WMuwLIjiEX)?@G02+ zyI1bR-jr{`ENGomVViL9t}%&qSS&2`by%&zxMhbw-vo*~>V2h46@#w=^b<#9$JzKk zR4u`1UzQvwzbY0}ObI9GwLOP_!r_pk*Z$#pO|p411tb-_{vud3xjs4>!U{-)gj@y5 zpEg4WJ1WuCiDF>ALk9qXgH~J%&J*>-H6~;C{`_Q}6>j>E0ON)O5%LjeQ-J)vYp&k} zuLfN-U3-$^^XIOeV@WxjPy(HT z6>An&IuSaw4JRR`yg)p3m@qN}n!V;5P6JF3o!`kj<=#5@{Hz;?oekt6kA+c+hgvZX zMKg#mlFR9*eu!$>3vK`z3VE_@#rNNZb*GuLA?zM7ny_viK+$_AONv>9{_wGhU$P9R zlSF@PBq;h+qS_(giWe0B5AR!ZZY4q}aM5EvXIyiwmEh3g)|WzX!LY(y3V5K$+^Kx> z2*vlOBi-_pVY|`&yteRG` zbsF`Wxu8<%KuewavpVVP0s_9|V?Xj!?OV6pDBnsrZ(5*}Omyt4U7T?o-ys>f8)MRA z8gd@owT(iWR@cr{IEn=fMinvf& zAftrkYUwJz$Yg`6Km?dVQek_lISjhn?d?5=3B!HA5#WRfjD6vU=c{q6m`*D{(QRs$ zV}Tn)>gc?Q4C559O)IV`#=-l`My`lZD0iw^kg+AZ2@{8SH>yI)Wx|?e%Z5?cT&ZM!ZI-7nY7fhiFQn|ZtaZo}lZVbsO2Y!i6{7}( zy`ILAoy3)84E9o(QnpyM2kD9)5L%>pltZ-Cklk8yo?i_3$C$Y`n4h~-hL|HBv z3Ob-vGr>Y#siyBXg29f7X0Qpu*>`zw^!Y^&+=CT+t%H01%%vIiK}%50*>o;t$bx`q zOLSj|FJSvZ=DSIr*n&yijeN*`oHyl^ zG82`)=-~~O$IF%uLmW}u#v+h?f@zXiu%x7e1zzp?tmKWIzf>1+qoa-K446%En~*-I zLYBA_?i(9T21eZA!5{<|;p$=#@Q`fwEZZj;BQpU$gJ}hx%vuuna9=8j%tP>P2!Xwj z$$TGc8q?lTWs96rLM?4(Wl@Ifl;L)P!$n(J9D(bBGl)5p6Mwfo2gW89?)I;fL?%&C zNDu|g z!wuaHGND2lVcG~Jr8q1!maIX2VA$#LZi7q)SDLFLs?3lNM_c#DJk0FdTQd<0wC?$t zPVo)XmL1uIS}tu==LGngAIlY(rLM(l-?en+s%}57R+-+1jEV zM9lBQR;<5dWYmg+ayYlBVLanTFQqf*looPRi=P(@P3L_VaixqH;TL)WP6aLC-V>EG zTFjO)*htVE^ISBGti2s~m;BH)Sj_B5#o7ef4Y1X&YK`xdddgFIv-et_R1-BR^Z(0vl5ZEbji>o8C{UmbBNB~9V}H8bp! znUKG`X!E?w-Myl2m0@ayFIUAG(@MiE(N$yJu#TO6OwZGgzFVrundQ6`#D^?e$D%hM zO)KyjO13)ZA;!*=otb0^aj+z2qAL~(lUSY| zCHoc*N=taBm`RmU7LFR9yMQv8okW$?@T@df!I?+n)}WcRKb)D@!*nwt2EyN$?ZhxM zl%mYiG*w4g3~?XKLG7IJ<5J9KOou$0k*g4XQW?wGA88W6BW2azgrhUMKFlz_#|sEY z9g#Zo_all(g49w0wDcL-Q~Y(liwxB^;bdaH=8-Z$G3}A5PUajhKv! zh;9xyCaJ9$^C5VL-9Sx4pn!;16qRqYWN<9cEj25$uS(pK0*;Na2oo9z1J~j91(B|# zg^v|W1pK}j_(aB6OUct^QUDN6s!S=ums28WssX3%w@k8I6hZ|ZiGKGo z<9n5#5eb`y^B(djml7fGylcHGE`7a@YICo!;mhEEj&uoHNv@*$pMi%9kb`~&U-vKK z8hj6+Le@Ct3v@d98ezysU%v!*p}#}E`bCNeWS6`GTonF77RUuJlDaIksrPq6m!Xbb4xgpoJC5h>i=VHWW3!EMW1_z6zVDRd7Abdd))H17bT*MD?( z=~I7$x$Ymu1E7>$L{m5LmWU$_caJyScbNYOTD_K^ev^e)>^;T+HtgY9LI4S$8n5t9Ak_z#=J4s7-Nkw z#u{s^vBthN#)!2dV#Qh!u_9KiSZiJDS}Wp;SnG+o5fORstJ$5rgva~i z{q;&$SM^t4ef8D%tG?=gzkjid5USs;lX@N1Zb99R1|%e!a6#0^ha92Ww~5xfR0)a@ z-ql*8+GT(a5i;utc~$-Q1=a5S=%~HtUf8{c9MSn-zYu@v`hAVinJ2LHHK6g$)iy#? zLLzVflo+h=CDgBA^cY(EqPLH{1hBq)tYH+i)z_mdiwK?l321fTyV-BSJM1%f z!*}go<(mNd2|?bc(Bh|1VeK*WVMn#L_s=6&gjyXr zUAY}z@qPb`?N3<3(p$yfV8Rc+NWvA77w2!=(vwsJD1vYIW@6zaFJU?vk)mj8>gs{{zmyrh= zp>>4*bOAK;0P4>O$?+JpQr~{Jz6WD&355P_&9(6SaEyHw{gz{-UQqNe+dz>yFj(Cz zLudD2<5P*wZaQ$5y`uE53n%dn)jm%kR(P!u^HJ3NEx~$yOT3h^%BU zVg50E1sHjEGh#@Kw>ouQcE4Y30QAzyWS#LKe;(N0b&I{91?O3 zv~<=C9Sqf9?UdXF9SWe~-EiPzh!9gJ%AJhe_uZ5I183^l$t>^4H7nfoKSSOv*KdON z!|F}f-*z5-098wH(bpx1wNH!16jQk1TPRf;by_$QyKl*0XslvpF0JI zCtB{LME$pozee{vPMoMVa8z^m`W%*g|LQ}4Dc^)y(7LF?HsKH($0XKav9QqBVYTLD z$Busa0C?V3A1Pg`7$Pk||MH5z`V3gr4c~AYU;^jjcHSv>*CF1_x^a-pKpyc}7^Qfq z72{AegV-jyoPO?ysFuCr5RjpeXUkUn@O@Z!a=H+L1OcN7tJMJ%eR#5@m__K1pPKlU zpy+dnYDa)8UQzr%yl>CBl?b6gy~ljcxaL|b!J)^kFNNTOVTHLA@W2;y z_IvUO#sE$DS^=&@~aK>?bk7VS2 zj7g7a$b4|uHVO@ENrElqU8W_YI$`j}%5a{Fj*Ky7DK03PUQ=N#IAMHR3fK#AW=s3h zXPDs_i!}GufUgbMtjclvZMtjcZqF6jbw5{9PAhfT8Ky15t7$^pd>Pw_5%p?6W z+ZZ&->cPYb6Nh*wszS>b;uKwht5n&!ve+? zqXvY%p2m@##Fb?X_EMNqwpg?asgfgb*hq>*Z6?5sTnPDUpF9Q$1Tb`=Oj~V859~Pp zu$_&A4w&qPDhLUWB@C}gp{OWEB8|UEY1Dj6z*2*(a8zfL>~QP;9BdvZvCZENj!wgq zEEfy~9Z;&7V4<#5({~%eV8=u=*aYG1`@A>$a-ReDV8veR@PR*bc}9KQ5>#_Gol6oLmLjHBTL1=D8L>rg~oN`}i?c7Iz974$p*uIeYPLe0KU=nvDAM!5e zO*y5^M5Ql!cthp!vZcciM-;cQ2xOmNnj{u1Dd}K=SGztdd1L!;)g|2MXk$79W>efI zq|d34CGLa=#zvEY5x00S2*E|T+7ALAlJh;w4oJqxOn}c}T7f6Cmc%{WmkQ2@A^0|g zz+T8?etX{qMNTQ9mNv7pD8qHiaJ#_aqOB~B!1cfx#GJ{Aztf%rW0MMZ`!`7< zlPD-82mxcM;+|~u+9{73=}3fT;g zxk0tzhVBNLP@#-4Z3L2192Oc&)}THx?DTlQK_-K%%~cUqX2^%5&4*(iX7=69nTQ2i z_xwz!_?BtQj%-3Lmo}=40({Mn=J>1`v%3u*(hp+FZ_GnrGq{k=R#LDg8!Tq3BOm;w zYBUlNbr&WrxZRBWFp$eOm83mSg0UoF+$VZ*iCiR>G(jV5Lsn(dHx&t+3uK)S(?NK} z+M*pq%R?Im|Ee>RdLR=(lASO)mS&IW2c|eJ$m>1rHY(e&Pzdj$l!G> zdh^k=0-vE|v$F>$^cM$@Qy)X-@tlEFmzaJFhmwU$cO+dIl%(8bBFk)^hO4td31J>i zDUon-9nPIh5SU8x5R>^HY$X-qpb1eIN4RQ29QzMVSpy5DTbb?5BtwXUB{36Su~3-A z^6WS{uy9aX!aK!Gs*JL5)cD*5l*#NQs-%WzrMU{uJQ}wK&7}Rw%)B0^=M!Qe{C(9< z3^PM1$}CM&b)3Zz_rV<0_BlT;#calO$fFs#3gIV}v5ftZCILKBR_*g}bVfIa8O9HI z0pX}a5=&Wt_sYa??rEAD(FB>#^ac?mqd~p}=6RWS`BvTxg^0o@nrPXM%CypCd^=4c z$GNnFy!UcvIX%$K?Va3);Z7)NuX|+q^45mtVIZVwDn3d$IFsO1MHJqCNUJ`as%;uE z85a>fKirt4wqneO;2m}YH4T9RB3@BczRi-sb$M~AS&;)(;+7O}Y=lLa&_EctinlL` zbR{i(tXLx8C&s`hGQL(yo-UIDfN)Y}N)f)?5)ez`X*oSm6$@0t2+rxs2kl`P+876I z2LC&Fj)_SXRsA54LZ>Qdr4ME@ICAs`JHBxWiaA;I#dYNp^}tsGuX! zA6{pCr}-I?uxU8&A&+t?5%Tt2@3gp-_9m*$onk}F;IEE!30g_6q55Behf9!yego|; zXzK>FhfpDFobm-ao4i06^3gXh!#(VukcU4>5rOQISAdJcU&#Ww;8oIhq`)MqpQ%e# z;rLsyh+e*>5W{CjZI^A>)FlXD6^00Ld)O#|c*qc?wY z_xLmafVuAf$RnVX?W3t%cvHlYhP%w$ZoGCAWif8BJeKW!)wE~=wBylu}A*t+m$rwKiI7t+m!h z8*Q}K#%Qgr(bigHjj_fWV~nxR7~_n4W2|-78sn@n#v13Gaeq8(t+m#^_eIal-px6l z_vZ^4nGx}Q@x}K=e7_?9{Xf+rLa6##l~k*!vJ3TG*dqZUns7nXtwWBcSgiF9Re~af zceK{1vX4-ukC3;DkW*IQE~s+*2TSc^`+|o`bY=rk&~JaV-QxnGDbKcY3;TR_8)yYJ zkrwPFP&@-w4**lSUXc2Y^D1Z(z7F^#(m_5q z*VRF}0&v5Qe!dQLw$x3f3l$;9gV8@&B3lWJA3)U-|57rb{H7R8F(sU!cXurQj0D^@ z+kyxG(-%$6Nz5_TZ*2vddMdF?C^c^nqsq1&0DAlOJtbf+pS*=*!PTW|mBH7McC}ll zYXbLQ#2L(N448|;`rDH>#cRI4KgO;K{}G7P3yS`23!yVW(ysc>G(%_hEIzb{K+zCN zJ_P#5BxI;Efssd5a(YmaK~rl8vEKpo0~lZXDaujhk~crImai@1`e577gh0OrD%Eej zx(8b|wE!zUIVSta2@#^O#&6Dnr1zozgpeGMG2m`}RNY1IK7Yl-D=88Bj}_bRYT)WI z;9Q3FzPZ#q-6iDgy%7mG`3maS0JR!pUUc@569d+l&>O+1%W9s2Z~1(1aUOX25ooob zU+*^H9dsGIp>t_bMO;ER3+IPgMK zeZcrVSFQc8z!ECgn$heh?Y-Fak&^_*tf{6kEb$WW*eVqd7`Z|V$u85r%$SihM9!+3 zPBLNB`j zf8Xu8ppUT5{QP3j8iS>r@6LL=&AD$^z+xQ}1_t4S7v)3b%r0>l5eFxL{g~eeyR)`5 z&y$m-L-fv9%y6){JD@R+ojIQoz`N%mr@5IHa7NDGx=m{M{dw%8GgqMh;kPhK9&YiI zHf)oGS{~W6vJzf&UH8kaJ1l0&wfs*Yaer2 z_G^53$CEYH@=uiO3L$#PvFB~Md=B-mFOjpdfGRJIJ053^=$BG^)e7P`!r<#3JVQ_HVOF*JfVP-bgtU|Je)YW zI_E{N0s?ptiGEXyQTT;Kl_Q`c{)NE*x1k#~yU^)A^ug-r9oq%U9w&n5h@Hv~`ZfX^ zxZ--8`j{X(yOp(yomJ4&X^TJS;Ww-P(x5=*%rhGdg42l5N{IUVS-wVhThM^jRxK4m zC~`W?<&0~twGtd!+_+K*E*MsrO92n`n2l(sk6;YYgsTFIkDU$#Oh1;Lt&{`8ZI~{l17^}LGY?X$cdM2n;+SgJi?zE1(ItOPV`PdEJ zM7zc=H^??(&g%x~#1kF4Y8$5&7d z6VZ|prYylZCBqdJM1m8>hf;tn#3m24D_w>ej<85FSM~Txk4>u#Cx1?M%*>6MJUwwU zCFM}5!&X0O5MB-mZSqBILQ3$6UB$SIvBo&Yxbp!U%Ysj8R7~!{22w(VV0oxgMSThR z7o$Dtaq0C8_37e(FyS@Dv}_mCB_%=`*N7-rsV~ErWoqFv-ea;xl`niuAt0HKs`vf& zW^;3gVZw0Nt@$`60%KRW!EQNj}KKsZ--?-xr|x8XqX^udzVU? zU76+yK+RDxaD|lJhA|d-;$?wVlfq*@J&=_;Qy#f*tSybgoDmO>pmK9DUkM$9@Y`_FU-)ghvv90={P;yyf*{F<2W+eNB)tG=C;UU&ZBS!lxikepi5PEtsofmm}mw<5YE2K zI)ktFIB*YI>@*JVyQBS)y44U=b2iMR44Cf|ZHVp)vAE_feVRc0yip@GGa{rl%zaL| zE3~%eBVZo_$#W22$ZR{#Vv{q8+o20_(^^wTDf7a@6&<{$vS`uJet<)Yn^^d=OE8UN z1DX`Ku)xc0mleFW^{4UzuC=u1wR+4XxJgKtQy~l73JyFIPI{iW#{FIZCc@R8@AH7H zcMLlqDI+5vpT)EUOJ)s;JGd(qc*s83Hn^frz+`rSHH~PeuhMx=DWQhe(;_c|RmyNP z$HBZQ4GzKdz!=1gml1cnIRnZj6>fL0l32!}pG(*TjHQY?ves!PJOnADNDcGNm7@z2 zs%0$wn9h2sXc2sS!6p%4H-w;f$hk6LBOY-NRr+hX?WaNoGQ_mzOG0PQXi?HI&t_rM+EKJn8!Awh!}+(HgAAwR?) zl6Ijw37mcGCr$0~8rOlZbhbR;Qc9XA2OHptjDsQ6Z*NrUM?1 z3V-{l9-Y)7o2y{_SFy^1$ewXFI|(y zy%TwUp$Rp5pc5H^B5h^a3;xJorIh-4|rU94Cv;15O5B{I5PNS-W`90nm$rAiUL z*bv}LqM;o2RLOi5GlDa^biLUR0uy1s$>47W&oJ>4MOD}LrO=5ABP|0@NhX%HTT8XK zlckVDo`tMJHQT~Y%s(2KY8TqwUK(XU?Tqi+&4B0*?~_mD@~ln6Pyw)LjiRP8FN z%)G&dFN1$Jr+)|vav4?s2s~VXToCRa&JLWGy=tJ#d!!_Z1FqZ{h5$w4dyFa{L)L!bBjo&WIs(=&frIt?zlXI?1{*;4IzZn4vq<3H z2eW{G=RVZApCEEhq5D9fjhrEj9Afm|kMCtlhQ)>gw5kUHTL;MT(bkU) s