]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
DraCo updates, Quickstart, optional CIAs.
authorToni Wilen <twilen@winuae.net>
Sat, 6 Jan 2024 08:38:58 +0000 (10:38 +0200)
committerToni Wilen <twilen@winuae.net>
Sat, 6 Jan 2024 08:38:58 +0000 (10:38 +0200)
cfgfile.cpp
cpuboard.cpp
draco.cpp
expansion.cpp
include/rommgr.h
inputevents.def
memory.cpp
od-win32/resources/winuae.rc
od-win32/win32gui.cpp

index 537220dc7cd810ee918e1be26cbe5201a5f79b04..3b76518993500f5439362bdf1eddb70edaf12b61 100644 (file)
@@ -9465,8 +9465,10 @@ static int bip_casablanca(struct uae_prefs *p, int config, int compa, int romche
        p->m68k_speed = -1;
        p->immediate_blits = 0;
        p->produce_sound = 2;
+       p->nr_floppies = 0;
        p->floppyslots[0].dfxtype = DRV_NONE;
        p->floppyslots[1].dfxtype = DRV_NONE;
+       p->floppyslots[2].dfxtype = DRV_PC_35_ONLY_80;
        p->cs_compatible = CP_CASABLANCA;
        built_in_chipset_prefs(p);
        return configure_rom(p, roms, romcheck);
@@ -9476,24 +9478,50 @@ static int bip_draco(struct uae_prefs *p, int config, int compa, int romcheck)
 {
        int roms[8];
 
-       roms[0] = 16;
-       roms[1] = -1;
-
        p->bogomem.size = 0;
        p->chipmem.size = 0x200000;
        p->cpu_model = 68060;
        p->fpu_model = 68060;
        p->mmu_model = 68060;
+       p->cpuboardmem1.size = 128 * 1024 * 1024;
        p->chipset_mask = CSMASK_AGA | CSMASK_ECS_AGNUS | CSMASK_ECS_DENISE;
        p->cpu_compatible = p->address_space_24 = 0;
        p->m68k_speed = -1;
        p->immediate_blits = 0;
        p->produce_sound = 2;
+       p->nr_floppies = 0;
        p->floppyslots[0].dfxtype = DRV_NONE;
        p->floppyslots[1].dfxtype = DRV_NONE;
+       p->floppyslots[2].dfxtype = DRV_PC_35_ONLY_80;
        p->cs_compatible = CP_DRACO;
+       p->cpuboard_type = BOARD_MACROSYSTEM;
+       p->cpuboard_subtype = BOARD_MACROSYSTEM_SUB_DRACO;
+       p->rtgboards[0].rtgmem_type = GFXBOARD_ID_ALTAIS_Z3;
+       p->rtgboards[0].rtgmem_size = 4 * 1024 * 1024;
        built_in_chipset_prefs(p);
-       return configure_rom(p, roms, romcheck);
+       fetch_nvrampath(p->flashfile, sizeof(p->flashfile) / sizeof(TCHAR));
+       _tcscat(p->flashfile, _T("draco.nvr"));
+       roms[0] = 61;
+       roms[1] = -1;
+       if (!configure_rom(p, roms, romcheck)) {
+               return 0;
+       }
+       roms[0] = 234;
+       roms[1] = 311;
+       roms[2] = -1;
+       if (!configure_rom(p, roms, romcheck)) {
+               return 0;
+       }
+       return 1;
+}
+
+static int bip_macrosystem(struct uae_prefs *p, int config, int compa, int romcheck)
+{
+       if (config == 0) {
+               return bip_draco(p, config, compa, romcheck);
+       } else {
+               return bip_casablanca(p, config - 1, compa, romcheck);
+       }
 }
 
 int built_in_prefs (struct uae_prefs *p, int model, int config, int compa, int romcheck)
@@ -9540,14 +9568,11 @@ int built_in_prefs (struct uae_prefs *p, int model, int config, int compa, int r
                v = bip_arcadia(p, config, compa, romcheck);
                break;
        case 12:
-               v = bip_casablanca(p, config, compa, romcheck);
+               v = bip_macrosystem(p, config, compa, romcheck);
                break;
        case 13:
                v = bip_super (p, config, compa, romcheck);
                break;
-       case 14:
-               v = bip_draco(p, config, compa, romcheck);
-               break;
        }
        if ((p->cpu_model >= 68020 || !p->cpu_memory_cycle_exact) && !p->immediate_blits)
                p->waiting_blits = 1;
index 2aebb189daaff24ae336b7584a3a34f1ff15ca06..69683a82da10d62342bb263f3f19078c86f7c893 100644 (file)
@@ -2569,6 +2569,8 @@ bool cpuboard_autoconfig_init(struct autoconfig_info *aci)
                case BOARD_MACROSYSTEM_SUB_FALCON040:
                        romtype = ROMTYPE_CB_FALCON40;
                        break;
+               case BOARD_MACROSYSTEM_SUB_DRACO:
+                       return false;
                }
                break;
 
index 1ca710becfc3a3664876b02a7308f1c1d585e1e3..f5175c7f22da520f8a74fdc138ad3448d1ac1710 100644 (file)
--- a/draco.cpp
+++ b/draco.cpp
@@ -150,6 +150,7 @@ static void *draco_serial[2];
 static void *draco_mouse_base, *draco_keyboard;
 static uae_u8 *dracorom;
 static int dracoromsize;
+static uae_u8 draco_revision, draco_cias;
 
 static uae_u8 draco_intena, draco_intpen, draco_svga_irq_state;
 static uae_u16 draco_timer, draco_timer_latch;
@@ -221,6 +222,8 @@ static uae_s8 draco_kdb_params;
 static uae_u16 draco_kbd_in_buffer[16];
 static int draco_kbd_in_buffer_len;
 
+#define DRACO_KBD_POLL_VAL 96
+
 static void draco_keyboard_reset(void)
 {
        draco_kbd_buffer_len = 0;
@@ -241,7 +244,7 @@ static void draco_keyboard_read(void)
                if (draco_kbd_poll == 0) {
                        draco_reg[3] &= ~DRSTAT_KBDCLKIN;
                        v &= ~DRSTAT_KBDCLKIN;
-                       draco_kbd_poll = -4;
+                       draco_kbd_poll = -DRACO_KBD_POLL_VAL;
                }
                draco_reg[3] = v;
                return;
@@ -250,7 +253,7 @@ static void draco_keyboard_read(void)
        if (draco_kbd_poll < 0) {
                draco_kbd_poll++;
                if (draco_kbd_poll == 0) {
-                       draco_kbd_poll = 4;
+                       draco_kbd_poll = DRACO_KBD_POLL_VAL;
                        v |= DRSTAT_KBDCLKIN;
                        uae_u16 bit = (draco_reg[1] & DRCNTRL_KBDDATOUT) ? 0x8000 : 0;
 #if KBD_DEBUG > 1
@@ -299,7 +302,7 @@ static void draco_keyboard_write(uae_u8 v)
                draco_reg[3] |= DRSTAT_KBDCLKIN;
                draco_kbd_code = 0;
                draco_kbd_state2 = 0;
-               draco_kbd_poll = 4;
+               draco_kbd_poll = DRACO_KBD_POLL_VAL;
        }
 
        draco_kbd_state = v;
@@ -385,7 +388,7 @@ static void draco_1wire_set_bit(void)
 {
        uae_u8 *dptr = NULL;
        int maxlen = 0;
-       if (draco_1wire_cmd == DS_ROM_SEARCH) {
+       if (draco_1wire_cmd == DS_READ_MEMORY) {
                dptr = draco_1wire_sram;
                maxlen = sizeof(draco_1wire_sram);
        } else if (draco_1wire_cmd == DS_READ_SCRATCHPAD) {
@@ -600,6 +603,19 @@ static void draco_1wire_reset(void)
 #endif
 }
 
+static uaecptr draco_convert_cia_addr(uaecptr addr)
+{
+       uaecptr ciaaddr = 0;
+       addr &= 0xffff;
+       if ((addr & 0x1001) == 0x1001 && (draco_cias & 2)) {
+               ciaaddr = 0xbfe001 + (addr & 0xf00);
+       }
+       if ((addr & 0x1001) == 0x0000 && (draco_cias & 1)) {
+               ciaaddr = 0xbfd000 + (addr & 0xf00);
+       }
+       return ciaaddr;
+}
+
 void draco_bustimeout(uaecptr addr)
 {
        write_log("draco bus timeout %08x\n", addr);
@@ -706,7 +722,7 @@ static uae_u32 REGPARAM2 draco_bget(uaecptr addr)
 #endif
                        break;
                case 9:
-                       v = 4;
+                       v = draco_revision;
                        draco_timer_latched = true;
                        break;
                case 0xb:
@@ -718,9 +734,19 @@ static uae_u32 REGPARAM2 draco_bget(uaecptr addr)
                        break;
                }
 
+               // casablanca revision
+               if (addr == 0x020007c3)
+                       v = draco_revision;
+
        } else if ((addr & 0x07c00000) == 0x02800000) {
 
                // CIA (no CIAs if rev4+)
+               if (draco_cias) {
+                       uaecptr cia_addr = draco_convert_cia_addr(addr);
+                       if (cia_addr) {
+                               v = cia_bank.bget(cia_addr);
+                       }
+               }
 
        } else if ((addr & 0x07000000) == 0x01000000) {
 
@@ -909,6 +935,12 @@ static void REGPARAM2 draco_bput(uaecptr addr, uae_u32 b)
        } else if ((addr & 0x07c00000) == 0x02800000) {
 
                // CIA (no CIAs if rev4+)
+               if (draco_cias) {
+                       uaecptr cia_addr = draco_convert_cia_addr(addr);
+                       if (cia_addr) {
+                               cia_bank.bput(cia_addr, b);
+                       }
+               }
 
        } else if ((addr & 0x07c00000) == 0x02000000) {
 
@@ -961,6 +993,7 @@ static void REGPARAM2 draco_bput(uaecptr addr, uae_u32 b)
                                draco_reg[3] &= ~DRSTAT_BUSTIMO;
                                break;
                }
+
        } else if ((addr & 0x07000000) == 0x01000000) {
 
                // interrupt control
@@ -1023,17 +1056,6 @@ static addrbank draco_bank = {
 };
 
 
-void casablanca_map_overlay(void)
-{
-       // Casablanca has ROM at address zero, no chip ram, no overlay.
-       map_banks(&kickmem_bank, 524288 >> 16, 524288 >> 16, 0);
-       map_banks(&extendedkickmem_bank, 0 >> 16, 524288 >> 16, 0);
-       map_banks(&draco_bank, 0x02000000 >> 16, 0x01000000 >> 16, 0);
-       // KS ROM is here
-       map_banks(&kickmem_bank, 0x02c00000 >> 16, 524288 >> 16, 0);
-       map_banks(&draco_bank, 0x03000000 >> 16, 0x01000000 >> 16, 0);
-}
-
 void draco_ext_interrupt(bool i6)
 {
        if (i6) {
@@ -1178,39 +1200,54 @@ void draco_reset(int hardreset)
 
 void draco_init(void)
 {
-       if (currprefs.cs_compatible != CP_DRACO) {
-               return;
-       }
+       if (currprefs.cs_compatible == CP_DRACO) {
+               TCHAR path[MAX_DPATH];
+               cfgfile_resolve_path_out_load(currprefs.flashfile, path, MAX_DPATH, PATH_ROM);
+               struct zfile *draco_flashfile = zfile_fopen(path, _T("rb"), ZFD_NORMAL);
+               if (draco_flashfile) {
+                       zfile_fread(draco_1wire_rom, sizeof(draco_1wire_rom), 1, draco_flashfile);
+                       zfile_fseek(draco_flashfile, 8, SEEK_CUR);
+                       zfile_fread(draco_1wire_sram, sizeof(draco_1wire_sram), 1, draco_flashfile);
+                       zfile_fclose(draco_flashfile);
+               }
 
-       TCHAR path[MAX_DPATH];
-       cfgfile_resolve_path_out_load(currprefs.flashfile, path, MAX_DPATH, PATH_ROM);
-       struct zfile *draco_flashfile = zfile_fopen(path, _T("rb"), ZFD_NORMAL);
-       if (draco_flashfile) {
-               zfile_fread(draco_1wire_rom, sizeof(draco_1wire_rom), 1, draco_flashfile);
-               zfile_fseek(draco_flashfile, 8, SEEK_CUR);
-               zfile_fread(draco_1wire_sram, sizeof(draco_1wire_sram), 1, draco_flashfile);
-               zfile_fclose(draco_flashfile);
-       }
+               draco_revision = (currprefs.cpuboard_settings & 1) ? 4 : 3;
+               draco_cias = draco_revision < 4 ? 2 : 0;
+               if (currprefs.cpuboard_settings & 4) {
+                       draco_cias |= 1;
+               }
+               if (currprefs.cpuboard_settings & 8) {
+                       draco_cias |= 2;
+               }
+               int idx;
+               const TCHAR *romname = NULL;
+               struct boardromconfig *brc;
+               brc = get_device_rom(&currprefs, ROMTYPE_CPUBOARD, 0, &idx);
+               if (brc) {
+                       romname = brc->roms[idx].romfile;
+                       dracorom = zfile_load_file(romname, &dracoromsize);
+               }
 
-       int idx;
-       const TCHAR *romname = NULL;
-       struct boardromconfig *brc;
-       brc = get_device_rom(&currprefs, ROMTYPE_CPUBOARD, 0, &idx);
-       if (brc) {
-               romname = brc->roms[idx].romfile;
-               dracorom = zfile_load_file(romname, &dracoromsize);
+               draco_reset(1);
+
+               device_add_rethink(draco_irq);
+               device_add_hsync(draco_hsync);
+               device_add_reset(draco_reset);
        }
+       if (currprefs.cs_compatible == CP_CASABLANCA) {
 
-       draco_reset(1);
+               draco_revision = 9;
+               draco_reset(1);
 
-       device_add_rethink(draco_irq);
-       device_add_hsync(draco_hsync);
-       device_add_reset(draco_reset);
+               device_add_rethink(draco_irq);
+               device_add_hsync(draco_hsync);
+               device_add_reset(draco_reset);
+       }
 }
 
 bool draco_mouse(int port, int x, int y, int z, int b)
 {
-       if (currprefs.cs_compatible == CP_DRACO) {
+       if (currprefs.cs_compatible == CP_DRACO || currprefs.cs_compatible == CP_CASABLANCA) {
                if (b < 0)
                        return true;
                mouse_serial_poll(x, y, z, b, draco_mouse_base);
@@ -1219,6 +1256,18 @@ bool draco_mouse(int port, int x, int y, int z, int b)
        return false;
 }
 
+void casablanca_map_overlay(void)
+{
+       // Casablanca has ROM at address zero, no chip ram, no overlay.
+       map_banks(&kickmem_bank, 524288 >> 16, 524288 >> 16, 0);
+       map_banks(&extendedkickmem_bank, 0 >> 16, 524288 >> 16, 0);
+       map_banks(&draco_bank, 0x02000000 >> 16, 0x01000000 >> 16, 0);
+       // KS ROM is here
+       map_banks(&kickmem_bank, 0x02c00000 >> 16, 524288 >> 16, 0);
+       map_banks(&draco_bank, 0x03000000 >> 16, 0x01000000 >> 16, 0);
+}
+
+
 void draco_map_overlay(void)
 {
        // hide custom registers
index 8c4b8f17aa71c26a2988a151b07c4149cf7d692a..71310d2e75f31bbe69b453bbaf837e41f0f1c3d2 100644 (file)
@@ -6538,6 +6538,29 @@ static const struct cpuboardsubtype cyberstormboard_sub[] = {
                NULL
        }
 };
+static const struct expansionboardsettings draco_settings[] = {
+       {
+               // 0/1
+               _T("Revision\0") _T("3\0") _T("4\0"),
+               _T("hwrev\0") _T("3\0") _T("4\0"),
+               true, false, 0
+       },
+       {
+               // 2
+               _T("CIA-A (Rev3 always includes CIA-A)"),
+               _T("ciaa"),
+               false, false, 1
+       },
+       {
+               // 3
+               _T("CIA-B (Optional)"),
+               _T("ciab"),
+               false, false, 0
+       },
+       {
+               NULL
+       }
+};
 static const struct cpuboardsubtype macrosystem_sub[] = {
        {
                _T("Warp Engine A4000"),
@@ -6567,6 +6590,17 @@ static const struct cpuboardsubtype macrosystem_sub[] = {
                128 * 1024 * 1024,
                0,
                ncr710_draco_init, NULL, BOARD_NONAUTOCONFIG_BEFORE, 1,
+               draco_settings
+       },
+       {
+               _T("Casablanca"),
+               _T("casablanca"),
+               ROMTYPE_CB_CASAB | ROMTYPE_NONE, 0, 4,
+               draco_add_scsi_unit, EXPANSIONTYPE_SCSI,
+               BOARD_MEMORY_HIGHMEM,
+               128 * 1024 * 1024,
+               0,
+               NULL, NULL, BOARD_NONAUTOCONFIG_BEFORE, 1,
        },
        {
                NULL
index f166632b38c181983e5b209136a18aaf133af7c9..d3448ede987a19208df6b977253fbc4be33629a3 100644 (file)
@@ -55,6 +55,7 @@ extern int decode_cloanto_rom_do(uae_u8 *mem, int size, int real_size);
 #define ROMTYPE_CB_HARMS3KP    0x00040020
 #define ROMTYPE_CB_A1230S1     0x00040021
 #define ROMTYPE_CB_DRACO       0x00040022
+#define ROMTYPE_CB_CASAB       0x00040023
 
 #define ROMTYPE_FREEZER                0x00080000
 #define ROMTYPE_AR                     0x00080001
index 49cc257ef84853d784b6d73a6001be822eba18a1..2efefe5eee856b231280fd08f5055d3429789359 100644 (file)
@@ -273,8 +273,8 @@ DEFEVENTKB(KEY_NUMBERSIGN,_T("Numbersign"),AM_K,AK_NUMBERSIGN,0x00)
 
 DEFEVENTKB(KEY_LEFTBRACKET,_T("Left Bracket"),AM_K,AK_LBRACKET,0x1a)
 DEFEVENTKB(KEY_RIGHTBRACKET,_T("Right Bracket"),AM_K,AK_RBRACKET,0x1b)
-DEFEVENTKB(KEY_SEMICOLON,_T("Semicolon"),AM_K,AK_SEMICOLON,0x4c)
-DEFEVENTKB(KEY_SINGLEQUOTE,_T("Single Quote"),AM_K,AK_QUOTE,0x0e)
+DEFEVENTKB(KEY_SEMICOLON,_T("Semicolon"),AM_K,AK_SEMICOLON,0x27)
+DEFEVENTKB(KEY_SINGLEQUOTE,_T("Single Quote"),AM_K,AK_QUOTE,0x28)
 DEFEVENTKB(KEY_COMMA,_T("Comma"),AM_K,AK_COMMA,0x33)
 DEFEVENTKB(KEY_PERIOD,_T("Period"),AM_K,AK_PERIOD,0x34)
 DEFEVENTKB(KEY_DIV,_T("Slash"),AM_K,AK_SLASH,0x35)
@@ -288,29 +288,24 @@ DEFEVENT(MOUSEWHEEL_UP,_T("Mouse Wheel Up"),AM_K,0,0,0x7b)
 
 /* misc */
 
-DEFEVENT(KEY_CDTV_STOP,_T("CDTV Stop"),AM_K,0,0,0x72)
-DEFEVENT(KEY_CDTV_PLAYPAUSE,_T("CDTV Play/Pause"),AM_K,0,0,0x73)
-DEFEVENT(KEY_CDTV_PREV,_T("CDTV Previous"),AM_K,0,0,0x74)
-DEFEVENT(KEY_CDTV_NEXT,_T("CDTV Next"),AM_K,0,0,0x75)
-DEFEVENT(KEY_CDTV_REW,_T("CDTV Rewind"),AM_K,0,0,0x76)
-DEFEVENT(KEY_CDTV_FF,_T("CDTV Fast Forward"),AM_K,0,0,0x77)
-
-DEFEVENT(KEY_0E,_T("Keycode 0x0E"),AM_K,0,0,0x0e)
-
-DEFEVENT(KEY_1C,_T("Keycode 0x1C"),AM_K,0,0,0x1c)
-
-DEFEVENT(KEY_2B,_T("Keycode 0x2B"),AM_K,0,0,0x2b)
-
-DEFEVENT(KEY_2C,_T("Keycode 0x2C"),AM_K,0,0,0x2C)
-
-DEFEVENT(KEY_30,_T("Keycode 0x30"),AM_K,0,0,0x30)
-
-DEFEVENT(KEY_3B,_T("Keycode 0x3B"),AM_K,0,0,0x3b)
-
-DEFEVENT(KEY_68,_T("Keycode 0x68"),AM_K,0,0,0x68)
-DEFEVENT(KEY_69,_T("Keycode 0x69"),AM_K,0,0,0x69)
-DEFEVENT(KEY_6A,_T("Keycode 0x6A"),AM_K,0,0,0x6a)
-DEFEVENT(KEY_6C,_T("Keycode 0x6C"),AM_K,0,0,0x6c)
+DEFEVENTKB(KEY_CDTV_STOP,_T("CDTV Stop"),AM_K,0x72,0)
+DEFEVENTKB(KEY_CDTV_PLAYPAUSE,_T("CDTV Play/Pause"),AM_K,0x73,0)
+DEFEVENTKB(KEY_CDTV_PREV,_T("CDTV Previous"),AM_K,0x74,0)
+DEFEVENTKB(KEY_CDTV_NEXT,_T("CDTV Next"),AM_K,0x75,0)
+DEFEVENTKB(KEY_CDTV_REW,_T("CDTV Rewind"),AM_K,0x76,0)
+DEFEVENTKB(KEY_CDTV_FF,_T("CDTV Fast Forward"),AM_K,0x77,0)
+
+DEFEVENTKB(KEY_0E,_T("Keycode 0x0E"),AM_K,0x0e,0)
+DEFEVENTKB(KEY_1C,_T("Keycode 0x1C"),AM_K,0x1c,0)
+DEFEVENTKB(KEY_2B,_T("Keycode 0x2B"),AM_K,0x2b,0x2b)
+DEFEVENTKB(KEY_2C,_T("Keycode 0x2C"),AM_K,0x2c,0)
+DEFEVENTKB(KEY_30,_T("Keycode 0x30"),AM_K,0x30,0x56)
+DEFEVENTKB(KEY_3B,_T("Keycode 0x3B"),AM_K,0x3b,0)
+
+DEFEVENTKB(KEY_68,_T("Keycode 0x68"),AM_K,0x68,0)
+DEFEVENTKB(KEY_69,_T("Keycode 0x69"),AM_K,0x69,0)
+DEFEVENTKB(KEY_6A,_T("Keycode 0x6A"),AM_K,0x6a,0)
+DEFEVENTKB(KEY_6C,_T("Keycode 0x6C"),AM_K,0x6c,0)
 
 DEFEVENTKB(KEY_INSERT,_T("Insert (PC)"),AM_K,0x47,0xe052)
 DEFEVENTKB(KEY_PAGEUP,_T("Page Up (PC)"),AM_K,0x48,0xe049)
@@ -323,14 +318,14 @@ DEFEVENTKB(KEY_F12,_T("F12 (PC)"),AM_K,0x6f,0x58)
 DEFEVENTKB(KEY_HOME,_T("Home (PC)"),AM_K,0x70,0xe047)
 DEFEVENTKB(KEY_END,_T("End (PC)"),AM_K,0x71,0xe04f)
 
-DEFEVENT(KEY_78,_T("Keycode 0x78 (Reset Warning)"),AM_K,0,0,0x78)
-DEFEVENT(KEY_79,_T("Keycode 0x79"),AM_K,0,0,0x79)
-DEFEVENT(KEY_7A,_T("Keycode 0x7A"),AM_K,0,0,0x7a)
-DEFEVENT(KEY_7B,_T("Keycode 0x7B"),AM_K,0,0,0x7b)
-DEFEVENT(KEY_7C,_T("Keycode 0x7C"),AM_K,0,0,0x7c)
-DEFEVENT(KEY_7D,_T("Keycode 0x7D"),AM_K,0,0,0x7d)
-DEFEVENT(KEY_7E,_T("Keycode 0x7E"),AM_K,0,0,0x7e)
-DEFEVENT(KEY_7F,_T("Keycode 0x7F"),AM_K,0,0,0x7f)
+DEFEVENTKB(KEY_78,_T("Keycode 0x78 (Reset Warning)"),AM_K,0x78,0)
+DEFEVENTKB(KEY_79,_T("Keycode 0x79"),AM_K,0x79,0)
+DEFEVENTKB(KEY_7A,_T("Keycode 0x7A"),AM_K,0x7a,0)
+DEFEVENTKB(KEY_7B,_T("Keycode 0x7B"),AM_K,0x7b,0)
+DEFEVENTKB(KEY_7C,_T("Keycode 0x7C"),AM_K,0x7c,0)
+DEFEVENTKB(KEY_7D,_T("Keycode 0x7D"),AM_K,0x7d,0)
+DEFEVENTKB(KEY_7E,_T("Keycode 0x7E"),AM_K,0x7e,0)
+DEFEVENTKB(KEY_7F,_T("Keycode 0x7F"),AM_K,0x7f,0)
 
 /* special */
 
index 0416e652c011e0e0a4df350feb019910fe49f48e..3dbf7d3155ef1cb1a00df2371109c5f60d1210e0 100644 (file)
@@ -2536,7 +2536,7 @@ static void allocate_memory (void)
 
                a3000hmem_bank.reserved_size = currprefs.mbresmem_high.size;
                a3000hmem_bank.mask = a3000hmem_bank.reserved_size - 1;
-               if (currprefs.cs_compatible == CP_DRACO) {
+               if (currprefs.cs_compatible == CP_DRACO || currprefs.cs_compatible == CP_CASABLANCA) {
                        a3000hmem_bank.start = 0x40000000;
                } else {
                        a3000hmem_bank.start = 0x08000000;
@@ -2691,8 +2691,7 @@ void map_overlay (int chip)
        if (currprefs.cs_compatible == CP_CASABLANCA) {
                casablanca_map_overlay();
                return;
-       }
-       if (currprefs.cs_compatible == CP_DRACO) {
+       } else if (currprefs.cs_compatible == CP_DRACO) {
                draco_map_overlay();
                return;
        }
index edcd9f04d8d5bb3b7d7644cb80537d67b0ae4cbd..ea2fa04fc69bb01a1380d7194a167fab7fbc6953 100644 (file)
@@ -2073,7 +2073,7 @@ END
 
 STRINGTABLE
 BEGIN
-    IDS_QS_MODELS           "A500\nA500+\nA600\nA1000\nA1200\nA3000\nA4000\nCD32\nCDTV\nAmerican Laser Games\nArcadia Multi Select system\nMacrosystem Casablanca/DraCo\nExpanded WinUAE example configuration\n"
+    IDS_QS_MODELS           "A500\nA500+\nA600\nA1000\nA1200\nA3000\nA4000\nCD32\nCDTV\nAmerican Laser Games\nArcadia Multi Select system\nMacrosystem\nExpanded WinUAE example configuration\n"
     IDS_QS_MODEL_A500       "1.3 ROM, OCS, 512 KB Chip + 512 KB Slow RAM (most common)\nThis configuration is capable of running most games and demos produced for first-generation hardware. Only few exceptions need a different configuration (e.g. the oldest games tend to be incompatible with this configuration).\n1.3 ROM, ECS Agnus, 512 KB Chip RAM + 512 KB Slow RAM\nLater hardware revision of the A500. Nearly 100% compatible with the previous configuration.\n1.3 ROM, ECS Agnus, 1 MB Chip RAM\nFew newer games and demos require this configuration.\n1.3 ROM, OCS Agnus, 512 KB Chip RAM\nVery old (e.g. pre-1988) games and demos may require this configuration.\n1.2 ROM, OCS Agnus, 512 KB Chip RAM\nAs available for the A1000, and installed on the first A500 and A2000 series. Some very old programs only work correctly with this configuration. Note: This system ROM version can only boot from floppy disk (no hard disk boot support).\n1.2 ROM, OCS Agnus, 512 KB Chip RAM + 512 KB Slow RAM\nThis configuration adds expansion memory to the first A500 produced. Try this if your game does not work with newer configurations, but works with the previous one. It could add some features to the game, including faster loading times. Note: This system ROM version can only boot from floppy disk (no hard disk boot support)."
     IDS_QS_MODEL_A500P      "Basic non-expanded configuration\nThe A500+ adds an ECS Agnus chip, 1 MB of Chip RAM and a 2.0 ROM to the A500. Many A500 games and demos don't work properly on an A500+.\n2 MB Chip RAM expanded configuration\n\n4 MB Fast RAM expanded configuration\n"
     IDS_QS_MODEL_A600       "Basic non-expanded configuration\nThe A600 is smaller than the A500+ and has an updated 2.0 ROM.\n2 MB Chip RAM expanded configuration\n\n4 MB Fast RAM expanded configuration\n"
@@ -2090,7 +2090,7 @@ BEGIN
     IDS_QS_MODEL_A3000      "1.4 ROM, 2MB Chip + 8MB Fast\n\n2.04 ROM, 2MB Chip + 8MB Fast\n\n3.1 ROM, 2MB Chip + 8MB Fast\n"
     IDS_QS_MODEL_A4000      "68030, 3.1 ROM, 2MB Chip + 8MB Fast\n\n68040, 3.1 ROM, 2MB Chip + 8MB Fast\n\nCyberStorm PPC\n"
     IDS_QS_MODEL_A4000T     "A4000T (test)\nA4000T\n"
-    IDS_QS_MODEL_MACROSYSTEM "Macrosystem Casablanca/DraCo\n"
+    IDS_QS_MODEL_MACROSYSTEM "DraCo\n\nCasablanca\n"
     IDS_QS_MODEL_ALG        "American Laser Games\n"
 END
 
index 85a0225ccde27fabab00998ef740a215b3658e53..5d813e689f8d186ab8ff27e98df4bc97c76844d8 100644 (file)
@@ -7312,6 +7312,7 @@ static void enable_for_quickstart (HWND hDlg)
 static void load_quickstart (HWND hDlg, int romcheck)
 {
        bool cdmodel = quickstart_model == 8 || quickstart_model == 9;
+       bool pcmodel = quickstart_model == 12;
        ew (guiDlg, IDC_RESETAMIGA, FALSE);
        workprefs.nr_floppies = quickstart_floppy;
        workprefs.ntscmode = quickstart_ntsc != 0;
@@ -7324,7 +7325,7 @@ static void load_quickstart (HWND hDlg, int romcheck)
                }
        }
        for (int i = 0; i < 2; i++) {
-               if (cdmodel) {
+               if (cdmodel || pcmodel) {
                        quickstart_floppytype[i] = DRV_NONE;
                        quickstart_floppysubtype[i] = 0;
                        quickstart_floppysubtypeid[i][0] = 0;