Revision: 45695
http://sourceforge.net/p/vice-emu/code/45695
Author: gpz
Date: 2025-06-10 19:47:44 +0000 (Tue, 10 Jun 2025)
Log Message:
-----------
added support for "Magic Desk 16" cartridge (Patch by Crystalct). Note that the correct CRTID is 85, not 79 like in the original patch.
Modified Paths:
--------------
trunk/vice/doc/vice.texi
trunk/vice/src/c64/c64cart.h
trunk/vice/src/c64/cart/Makefile.am
trunk/vice/src/c64/cart/c64cart.c
trunk/vice/src/c64/cart/c64carthooks.c
trunk/vice/src/cartridge.h
trunk/vice/src/tools/cartconv/c64-cartridges.c
Added Paths:
-----------
trunk/vice/src/c64/cart/magicdesk16.c
trunk/vice/src/c64/cart/magicdesk16.h
Modified: trunk/vice/doc/vice.texi
===================================================================
--- trunk/vice/doc/vice.texi 2025-06-05 20:46:21 UTC (rev 45694)
+++ trunk/vice/doc/vice.texi 2025-06-10 19:47:44 UTC (rev 45695)
@@ -9763,6 +9763,8 @@
@item
Magic Desk
@item
+Magic Desk 16
+@item
Magic Formel
@item
MAX Basic
@@ -10200,6 +10202,8 @@
83: BMP Data Turbo
@item
84: Profi-DOS
+@item
+85: Magic Desk 16
@end itemize
@vindex CartridgeFile
@@ -11160,6 +11164,10 @@
@item -cartmd <name>
Attach raw 32/64/128KiB Magic Desk cartridge image.
+@findex -cartmd16
+@item -cartmd16 <name>
+Attach raw up to 2048KiB Magic Desk 16K cartridge image.
+
@findex -cartmf
@item -cartmf <name>
Attach raw Magic Formel cartridge image.
@@ -23782,6 +23790,8 @@
MACH 5 .crt file
@item md
Magic Desk .crt file
+@item md16
+Magic Desk 16 .crt file
@item mf
Magic Formel .crt file
@item max
@@ -34926,6 +34936,47 @@
Any access (read or write) to IO2 ($dfxx) will disable the cartridge again.
@c @node FIXME
+@subsubsection 85 - Magic Desk 16
+
+@multitable @columnfractions .3 .7
+@item Size
+@tab 32KiB, 64KiB ... up to 2048KiB sizes (4 to 128 banks of 16KiB each)
+@item EXROM
+@tab active (lo) (0)
+@item GAME
+@tab active (hi) (0)
+@item Startup mode
+@tab 16KiB Game
+@item Load address
+@tab (banks 0-127) - $8000-BFFF
+@end multitable
+
+@example
+ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
+ ----------------------------------------------- ----------------
+000000: 43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20 C64 CARTRIDGE
+000010: 00 00 00 40 01 00 00 55 00 00 00 00 00 00 00 00 ...@...U........
+000020: 4d 61 67 69 63 20 44 65 73 6b 20 31 36 4b 00 00 Magic Desk 16K..
+000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
+000040: 43 48 49 50 00 00 40 10 00 00 00 00 80 00 40 00 CHIP..@.......@.
+000050: 09 80 09 80 c3 c2 cd 38 30 78 a2 ff 9a d8 a9 08 .......80x......
+..
+200820: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
+200830: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
+
+@end example
+
+Very similar to the classic "Magic Desk" cartridge, except that it uses
+16KiB banks instead and operates in "16k Game" mode.
+
+Bank switching is done by writing the bank number to $DE00.
+Bit 7 is cleared for selecting one of the ROM banks. If bit
+7 is set ($DE00 = $80), the GAME/EXROM lines are disabled, turning on
+RAM at $8000-B9FFF instead of ROM.
+
+used by "SNK vs CAPCOM - Stronger Edition"
+
+@c @node FIXME
@subsection C128 Cartridge Specifics
Note: Cartridges that work on both C64 and C128 get "C64 Cartridge" type and get a
Modified: trunk/vice/src/c64/c64cart.h
===================================================================
--- trunk/vice/src/c64/c64cart.h 2025-06-05 20:46:21 UTC (rev 45694)
+++ trunk/vice/src/c64/c64cart.h 2025-06-10 19:47:44 UTC (rev 45695)
@@ -29,8 +29,8 @@
#include "types.h"
-/* Cartridge ROM limit = 1MB (EasyFlash) */
-#define C64CART_ROM_LIMIT (1024 * 1024)
+/* Cartridge ROM limit = 2MB (Magic Desk 2 - 16K config) */
+#define C64CART_ROM_LIMIT (2 * 1024 * 1024)
/* Cartridge RAM limit = 32kB (IDE64, ...) */
#define C64CART_RAM_LIMIT (32 * 1024)
/* maximum size of a full "all inclusive" cartridge image (16MB for REU) */
Modified: trunk/vice/src/c64/cart/Makefile.am
===================================================================
--- trunk/vice/src/c64/cart/Makefile.am 2025-06-05 20:46:21 UTC (rev 45694)
+++ trunk/vice/src/c64/cart/Makefile.am 2025-06-10 19:47:44 UTC (rev 45695)
@@ -141,6 +141,7 @@
mach5.c \
mach5.h \
magicdesk.c \
+ magicdesk16.c \
magicdesk.h \
magicformel.c \
magicformel.h \
Modified: trunk/vice/src/c64/cart/c64cart.c
===================================================================
--- trunk/vice/src/c64/cart/c64cart.c 2025-06-05 20:46:21 UTC (rev 45694)
+++ trunk/vice/src/c64/cart/c64cart.c 2025-06-10 19:47:44 UTC (rev 45695)
@@ -104,6 +104,7 @@
#include "ltkernal.h"
#include "mach5.h"
#include "magicdesk.h"
+#include "magicdesk16.h"
#include "magicformel.h"
#include "magicvoice.h"
#include "maxbasic.h"
@@ -474,6 +475,7 @@
case CARTRIDGE_KCS_POWER:
case CARTRIDGE_MACH5:
case CARTRIDGE_MAGIC_DESK:
+ case CARTRIDGE_MAGIC_DESK_16:
case CARTRIDGE_MAGIC_FORMEL:
case CARTRIDGE_MAGIC_VOICE:
case CARTRIDGE_MAX_BASIC:
@@ -910,6 +912,9 @@
case CARTRIDGE_MAGIC_DESK:
rc = magicdesk_crt_attach(fd, rawcart);
break;
+ case CARTRIDGE_MAGIC_DESK_16:
+ rc = magicdesk16_crt_attach(fd, rawcart);
+ break;
case CARTRIDGE_MAGIC_FORMEL:
rc = magicformel_crt_attach(fd, rawcart);
break;
Modified: trunk/vice/src/c64/cart/c64carthooks.c
===================================================================
--- trunk/vice/src/c64/cart/c64carthooks.c 2025-06-05 20:46:21 UTC (rev 45694)
+++ trunk/vice/src/c64/cart/c64carthooks.c 2025-06-10 19:47:44 UTC (rev 45695)
@@ -113,6 +113,7 @@
#include "mach5.h"
#include "machine.h"
#include "magicdesk.h"
+#include "magicdesk16.h"
#include "magicformel.h"
#include "magicvoice.h"
#include "maxbasic.h"
@@ -369,6 +370,9 @@
{ "-cartmd", CALL_FUNCTION, CMDLINE_ATTRIB_NEED_ARGS,
cart_attach_cmdline, (void *)CARTRIDGE_MAGIC_DESK, NULL, NULL,
"<Name>", "Attach raw 32/64/128KiB Magic Desk cartridge image" },
+ { "-cartmd16", CALL_FUNCTION, CMDLINE_ATTRIB_NEED_ARGS,
+ cart_attach_cmdline, (void *)CARTRIDGE_MAGIC_DESK_16, NULL, NULL,
+ "<Name>", "Attach raw up to 2048KiB Magic Desk 16K cartridge image" },
{ "-cartmf", CALL_FUNCTION, CMDLINE_ATTRIB_NEED_ARGS,
cart_attach_cmdline, (void *)CARTRIDGE_MAGIC_FORMEL, NULL, NULL,
"<Name>", "Attach raw Magic Formel cartridge image" },
@@ -1011,6 +1015,8 @@
return mach5_bin_attach(filename, rawcart);
case CARTRIDGE_MAGIC_DESK:
return magicdesk_bin_attach(filename, rawcart);
+ case CARTRIDGE_MAGIC_DESK_16:
+ return magicdesk16_bin_attach(filename, rawcart);
case CARTRIDGE_MAGIC_FORMEL:
return magicformel_bin_attach(filename, rawcart);
case CARTRIDGE_MAX_BASIC:
@@ -1276,6 +1282,9 @@
case CARTRIDGE_MAGIC_DESK:
magicdesk_config_setup(rawcart);
break;
+ case CARTRIDGE_MAGIC_DESK_16:
+ magicdesk16_config_setup(rawcart);
+ break;
case CARTRIDGE_MAGIC_FORMEL:
magicformel_config_setup(rawcart);
break;
@@ -1888,6 +1897,9 @@
case CARTRIDGE_MAGIC_DESK:
magicdesk_detach();
break;
+ case CARTRIDGE_MAGIC_DESK_16:
+ magicdesk16_detach();
+ break;
case CARTRIDGE_MAGIC_FORMEL:
magicformel_detach();
break;
@@ -2196,6 +2208,9 @@
case CARTRIDGE_MAGIC_DESK:
magicdesk_config_init();
break;
+ case CARTRIDGE_MAGIC_DESK_16:
+ magicdesk16_config_init();
+ break;
case CARTRIDGE_MAGIC_FORMEL:
magicformel_config_init();
break;
@@ -3605,6 +3620,11 @@
return -1;
}
break;
+ case CARTRIDGE_MAGIC_DESK_16:
+ if (magicdesk16_snapshot_write_module(s) < 0) {
+ return -1;
+ }
+ break;
case CARTRIDGE_MAGIC_FORMEL:
if (magicformel_snapshot_write_module(s) < 0) {
return -1;
@@ -4220,6 +4240,11 @@
goto fail2;
}
break;
+ case CARTRIDGE_MAGIC_DESK_16:
+ if (magicdesk16_snapshot_read_module(s) < 0) {
+ goto fail2;
+ }
+ break;
case CARTRIDGE_MAGIC_FORMEL:
if (magicformel_snapshot_read_module(s) < 0) {
goto fail2;
Added: trunk/vice/src/c64/cart/magicdesk16.c
===================================================================
--- trunk/vice/src/c64/cart/magicdesk16.c (rev 0)
+++ trunk/vice/src/c64/cart/magicdesk16.c 2025-06-10 19:47:44 UTC (rev 45695)
@@ -0,0 +1,298 @@
+/*
+ * magicdesk16.c - Cartridge handling, Magic Desk 16K cart.
+ *
+ * Original magicdesk.c Written by
+ * Marco van den Heuvel <bla...@ya...>
+
+ * 16K Mod Written by
+ * Salvo Cristaldi <cr...@un...>
+ *
+ * This file is part of VICE, the Versatile Commodore Emulator.
+ * See README for copyright notice.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA.
+ *
+ */
+
+/* #define MAGICDESK16_DEBUG */
+
+#include "vice.h"
+
+#include <stdio.h>
+#include <string.h>
+
+#define CARTRIDGE_INCLUDE_SLOTMAIN_API
+#include "c64cartsystem.h"
+#undef CARTRIDGE_INCLUDE_SLOTMAIN_API
+#include "c64mem.h"
+#include "cartio.h"
+#include "cartridge.h"
+#include "export.h"
+#include "magicdesk16.h"
+#include "monitor.h"
+#include "snapshot.h"
+#include "types.h"
+#include "util.h"
+#include "crt.h"
+
+#ifdef MAGICDESK16_DEBUG
+#define DBG(x) printf x
+#else
+#define DBG(x)
+#endif
+
+/*
+ "Magic Desk 16K" Cartridge
+
+ - supports all "Magic Desk Clone" homebrew cart with 16k game config, up to 2 MB
+
+ - ROM is always mapped in at $8000-$BFFF (16k game).
+
+ - 1 register at io1 / de00:
+
+ bit 0-6 bank number
+ bit 7 exrom (1 = cart disabled)
+*/
+
+#define MAXBANKS 128
+
+static uint8_t regval = 0;
+static uint8_t bankmask = 0x7f;
+
+static void magicdesk16_io1_store(uint16_t addr, uint8_t value)
+{
+ regval = value & (0x80 | bankmask);
+ cart_romhbank_set_slotmain(value & bankmask);
+ cart_romlbank_set_slotmain(value & bankmask);
+ cart_set_port_game_slotmain(0);
+ if (value & 0x80) {
+ /* turn off cart ROM */
+ cart_set_port_exrom_slotmain(0);
+ cart_set_port_game_slotmain(0);
+ } else {
+ cart_set_port_exrom_slotmain(1);
+ cart_set_port_game_slotmain(1);
+ }
+ cart_port_config_changed_slotmain();
+ DBG(("MAGICDESK16: Reg: %02x (Bank: %d of %d, %s)\n", regval, (regval & bankmask), bankmask + 1, (regval & 0x80) ? "disabled" : "enabled"));
+}
+
+static uint8_t magicdesk16_io1_peek(uint16_t addr)
+{
+ return regval;
+}
+
+static int magicdesk16_dump(void)
+{
+ mon_out("Reg: %02x (Bank: %d of %d, %s)\n", regval, (regval & bankmask), bankmask + 1, (regval & 0x80) ? "disabled" : "enabled");
+ return 0;
+}
+
+
+/* ---------------------------------------------------------------------*/
+
+static io_source_t magicdesk16_device = {
+ CARTRIDGE_NAME_MAGIC_DESK_16, /* name of the device */
+ IO_DETACH_CART, /* use cartridge ID to detach the device when involved in a read-collision */
+ IO_DETACH_NO_RESOURCE, /* does not use a resource for detach */
+ 0xde00, 0xdeff, 0xff, /* range for the device, address is ignored, reg:$de00, mirrors:$de01-$deff */
+ 0, /* read is never valid, reg is write only */
+ magicdesk16_io1_store, /* store function */
+ NULL, /* NO poke function */
+ NULL, /* read function */
+ magicdesk16_io1_peek, /* peek function */
+ magicdesk16_dump, /* device state information dump function */
+ CARTRIDGE_MAGIC_DESK_16, /* cartridge ID */
+ IO_PRIO_NORMAL, /* normal priority, device read needs to be checked for collisions */
+ 0, /* insertion order, gets filled in by the registration function */
+ IO_MIRROR_NONE /* NO mirroring */
+};
+
+static io_source_list_t *magicdesk16_list_item = NULL;
+
+static const export_resource_t export_res = {
+ CARTRIDGE_NAME_MAGIC_DESK_16, 1, 1, &magicdesk16_device, NULL, CARTRIDGE_MAGIC_DESK_16
+};
+
+/* ---------------------------------------------------------------------*/
+
+void magicdesk16_config_init(void)
+{
+ magicdesk16_io1_store((uint16_t)0xde00, 0);
+}
+
+void magicdesk16_config_setup(uint8_t *rawcart)
+{
+ for (int i=0; i< MAXBANKS; i++) {
+ memcpy(&roml_banks[i*0x2000], &rawcart[i*0x4000], 0x2000);
+ memcpy(&romh_banks[i*0x2000], &rawcart[0x2000 + i*0x4000], 0x2000);
+ }
+
+}
+
+/* ---------------------------------------------------------------------*/
+
+static int magicdesk16_common_attach(void)
+{
+ if (export_add(&export_res) < 0) {
+ return -1;
+ }
+ magicdesk16_list_item = io_source_register(&magicdesk16_device);
+ return 0;
+}
+
+int magicdesk16_bin_attach(const char *filename, uint8_t *rawcart)
+{
+ bankmask = 0x7f;
+ if (util_file_load(filename, rawcart, 0x200000, UTIL_FILE_LOAD_SKIP_ADDRESS) < 0) {
+ bankmask = 0x3f;
+ if (util_file_load(filename, rawcart, 0x100000, UTIL_FILE_LOAD_SKIP_ADDRESS) < 0) {
+ bankmask = 0x1f;
+ if (util_file_load(filename, rawcart, 0x80000, UTIL_FILE_LOAD_SKIP_ADDRESS) < 0) {
+ bankmask = 0x0f;
+ if (util_file_load(filename, rawcart, 0x40000, UTIL_FILE_LOAD_SKIP_ADDRESS) < 0) {
+ bankmask = 0x07;
+ if (util_file_load(filename, rawcart, 0x20000, UTIL_FILE_LOAD_SKIP_ADDRESS) < 0) {
+ bankmask = 0x03;
+ if (util_file_load(filename, rawcart, 0x10000, UTIL_FILE_LOAD_SKIP_ADDRESS) < 0) {
+ bankmask = 0x01;
+ if (util_file_load(filename, rawcart, 0x8000, UTIL_FILE_LOAD_SKIP_ADDRESS) < 0) {
+ return -1;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ return magicdesk16_common_attach();
+}
+
+int magicdesk16_crt_attach(FILE *fd, uint8_t *rawcart)
+{
+ crt_chip_header_t chip;
+ int lastbank = 0;
+ while (1) {
+ if (crt_read_chip_header(&chip, fd)) {
+ break;
+ }
+ if ((chip.bank >= MAXBANKS) || ((chip.start != 0x8000) && (chip.start != 0xa000)) || (chip.size != 0x4000)) {
+ return -1;
+ }
+ if (crt_read_chip(rawcart, chip.bank << 14, &chip, fd)) {
+ return -1;
+ }
+ if (chip.bank > lastbank) {
+ lastbank = chip.bank;
+ }
+ }
+ if (lastbank >= MAXBANKS) {
+ /* more than 128 banks does not work */
+ return -1;
+ } else if (lastbank >= 64) {
+ /* min 65, max 128 banks */
+ bankmask = 0x7f;
+ } else if (lastbank >= 32) {
+ /* min 33, max 64 banks */
+ bankmask = 0x3f;
+ } else if (lastbank >= 16) {
+ /* min 17, max 32 banks */
+ bankmask = 0x1f;
+ } else if (lastbank >= 8) {
+ /* min 9, max 16 banks */
+ bankmask = 0x0f;
+ } else if (lastbank >= 4) {
+ /* min 5, max 8 banks */
+ bankmask = 0x07;
+ } else if (lastbank >= 2) {
+ /* min 3, max 4 banks */
+ bankmask = 0x03;
+ } else {
+ /* max 2 banks */
+ bankmask = 0x01;
+ }
+
+ return magicdesk16_common_attach();
+}
+
+void magicdesk16_detach(void)
+{
+ export_remove(&export_res);
+ io_source_unregister(magicdesk16_list_item);
+ magicdesk16_list_item = NULL;
+}
+
+/* ---------------------------------------------------------------------*/
+
+#define CART_DUMP_VER_MAJOR 0
+#define CART_DUMP_VER_MINOR 2
+#define SNAP_MODULE_NAME "CARTMD16"
+
+int magicdesk16_snapshot_write_module(snapshot_t *s)
+{
+ snapshot_module_t *m;
+
+ m = snapshot_module_create(s, SNAP_MODULE_NAME,
+ CART_DUMP_VER_MAJOR, CART_DUMP_VER_MINOR);
+ if (m == NULL) {
+ return -1;
+ }
+
+ if (0
+ || (SMW_B(m, (uint8_t)regval) < 0)
+ || (SMW_B(m, (uint8_t)bankmask) < 0)
+ || (SMW_BA(m, roml_banks, 0x2000 * MAXBANKS) < 0)
+ || (SMW_BA(m, romh_banks, 0x2000 * MAXBANKS) < 0)) {
+ snapshot_module_close(m);
+ return -1;
+ }
+
+ snapshot_module_close(m);
+ return 0;
+}
+
+int magicdesk16_snapshot_read_module(snapshot_t *s)
+{
+ uint8_t vmajor, vminor;
+ snapshot_module_t *m;
+
+ m = snapshot_module_open(s, SNAP_MODULE_NAME, &vmajor, &vminor);
+ if (m == NULL) {
+ return -1;
+ }
+
+ if ((vmajor != CART_DUMP_VER_MAJOR) || (vminor != CART_DUMP_VER_MINOR)) {
+ snapshot_module_close(m);
+ return -1;
+ }
+
+ if (0
+ || (SMR_B(m, ®val) < 0)
+ || (SMR_B(m, &bankmask) < 0)
+ || (SMR_BA(m, roml_banks, 0x2000 * MAXBANKS) < 0)
+ || (SMR_BA(m, romh_banks, 0x2000 * MAXBANKS) < 0)) {
+ snapshot_module_close(m);
+ return -1;
+ }
+
+ snapshot_module_close(m);
+
+ if (magicdesk16_common_attach() == -1) {
+ return -1;
+ }
+ magicdesk16_io1_store(0xde00, regval);
+ return 0;
+}
Added: trunk/vice/src/c64/cart/magicdesk16.h
===================================================================
--- trunk/vice/src/c64/cart/magicdesk16.h (rev 0)
+++ trunk/vice/src/c64/cart/magicdesk16.h 2025-06-10 19:47:44 UTC (rev 45695)
@@ -0,0 +1,45 @@
+/*
+ * magicdesk16.h - Cartridge handling, Magic Desk 16 cart.
+ *
+ * Written by
+ * Salvo Cristaldi <cr...@un...>
+ *
+ * This file is part of VICE, the Versatile Commodore Emulator.
+ * See README for copyright notice.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA.
+ *
+ */
+
+#ifndef VICE_MAGICDESK16_H
+#define VICE_MAGICDESK16_H
+
+#include <stdio.h>
+
+#include "types.h"
+
+void magicdesk16_config_init(void);
+void magicdesk16_config_setup(uint8_t *rawcart);
+int magicdesk16_bin_attach(const char *filename, uint8_t *rawcart);
+int magicdesk16_crt_attach(FILE *fd, uint8_t *rawcart);
+void magicdesk16_detach(void);
+
+struct snapshot_s;
+
+int magicdesk16_snapshot_write_module(struct snapshot_s *s);
+int magicdesk16_snapshot_read_module(struct snapshot_s *s);
+
+#endif
Modified: trunk/vice/src/cartridge.h
===================================================================
--- trunk/vice/src/cartridge.h 2025-06-05 20:46:21 UTC (rev 45694)
+++ trunk/vice/src/cartridge.h 2025-06-10 19:47:44 UTC (rev 45695)
@@ -273,7 +273,8 @@
#define CARTRIDGE_UC2 82 /* uc2.c */
#define CARTRIDGE_BMPDATATURBO 83 /* bmpdataturbo.c */
#define CARTRIDGE_PROFIDOS 84 /* profidos.c */
-#define CARTRIDGE_LAST 84 /* cartconv: last cartridge in list */
+#define CARTRIDGE_MAGIC_DESK_16 85 /* magicdesk16.c */
+#define CARTRIDGE_LAST 85 /* cartconv: last cartridge in list */
/* list of canonical names for the c64 cartridges:
note: often it is hard to determine "the" official name, let alone the way it
@@ -346,6 +347,7 @@
#define CARTRIDGE_NAME_LT_KERNAL "Lt. Kernal Host Adaptor"
#define CARTRIDGE_NAME_MACH5 "MACH 5" /* http://rr.pokefinder.org/wiki/MACH_5 */
#define CARTRIDGE_NAME_MAGIC_DESK "Magic Desk" /* also: "Domark, Hes Australia" */
+#define CARTRIDGE_NAME_MAGIC_DESK_16 "Magic Desk 16K" /* https://github.com/crystalct/MagicDesk2 */
#define CARTRIDGE_NAME_MAGIC_FORMEL "Magic Formel" /* http://rr.pokefinder.org/wiki/Magic_Formel */
#define CARTRIDGE_NAME_MAGIC_VOICE "Magic Voice" /* all lowercase on cart ? */
#define CARTRIDGE_NAME_MIDI_MAPLIN "Maplin MIDI"
Modified: trunk/vice/src/tools/cartconv/c64-cartridges.c
===================================================================
--- trunk/vice/src/tools/cartconv/c64-cartridges.c 2025-06-05 20:46:21 UTC (rev 45694)
+++ trunk/vice/src/tools/cartconv/c64-cartridges.c 2025-06-10 19:47:44 UTC (rev 45695)
@@ -152,6 +152,13 @@
CARTRIDGE_SIZE_512KB, 0x4000, 0x8000, 0, 2, CARTRIDGE_NAME_UC2, "uc2", save_regular_crt},
{0, 0, CARTRIDGE_SIZE_16KB, 0x4000, 0x8000, 1, 0, CARTRIDGE_NAME_BMPDATATURBO, "bdt", save_regular_crt},
{1, 0, CARTRIDGE_SIZE_16KB, 0x2000, 0xe000, 2, 0, CARTRIDGE_NAME_PROFIDOS, "pd", save_regular_crt},
+ {0, 0, CARTRIDGE_SIZE_32KB |
+ CARTRIDGE_SIZE_64KB |
+ CARTRIDGE_SIZE_128KB |
+ CARTRIDGE_SIZE_256KB |
+ CARTRIDGE_SIZE_512KB |
+ CARTRIDGE_SIZE_1024KB |
+ CARTRIDGE_SIZE_2048KB, 0x4000, 0x8000, 0, 0, CARTRIDGE_NAME_MAGIC_DESK_16, "md16", save_regular_crt},
{0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL}
};
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|