Viewing Issue Advanced Details
ID Category [?] Severity [?] Reproducibility Date Submitted Last Update
07899 Media Support Major Always Mar 14, 2021, 08:50 Mar 14, 2021, 23:47
Tester star2root View Status Public Platform MAME (Self-compiled)
Assigned To Resolution Open OS
Status [?] Acknowledged Driver coco3.cpp
Version 0.229 Fixed in Version Build
Fixed in Git Commit Github Pull Request # #7862
Summary MESS-specific 07899: cocoe, coco2, coco2b, coco3: It is no longer possible to insert a rom pak into a multi-pak slot.
Description With a multi-pak inserted, it is not possible to select a device of "pak" or "banked 16k" for any multi-pak slot.
Steps To Reproduce Start an emulation with a system type of cocoe, coco2, coco2b, or coco3, select a multi-pak to be inserted in slot devices in the main cartridge port, then in any multi-pak slot try to select a device type of "pak" or "banked 16k", the option will not be present.
Additional Information This worked in version 0.224.
Github Commit
Flags Verified with Original
Regression Version
Affected Sets / Systems cocoe, coco2, coco2b, coco3
Attached Files
 
Relationships
There are no relationship linked to this issue.
Notes
7
User avatar
No.18538
star2root
Tester
Mar 14, 2021, 08:54
These patches will correct the issue...

--- src/devices/bus/coco/coco_multi.cpp 2021-03-13 23:07:40.000000000 -0500
+++ src/devices/bus/coco/coco_multi.cpp 2021-03-14 03:55:45.000000000 -0400
@@ -160,33 +160,27 @@
     IMPLEMENTATION
 ***************************************************************************/
 
-static void coco_cart_slot1_3(device_slot_interface &device)
-{
- coco_cart_add_basic_devices(device);
-}
-
-static void coco_cart_slot4(device_slot_interface &device)
+static void coco_cart_slot1_4(device_slot_interface &device)
 {
  coco_cart_add_basic_devices(device);
  coco_cart_add_fdcs(device);
 }
 
-
 void coco_multipak_device::device_add_mconfig(machine_config &config)
 {
- COCOCART_SLOT(config, m_slots[0], DERIVED_CLOCK(1, 1), coco_cart_slot1_3, nullptr);
+ COCOCART_SLOT(config, m_slots[0], DERIVED_CLOCK(1, 1), coco_cart_slot1_4, nullptr);
  m_slots[0]->cart_callback().set(FUNC(coco_multipak_device::multi_slot1_cart_w));
  m_slots[0]->nmi_callback().set(FUNC(coco_multipak_device::multi_slot1_nmi_w));
  m_slots[0]->halt_callback().set(FUNC(coco_multipak_device::multi_slot1_halt_w));
- COCOCART_SLOT(config, m_slots[1], DERIVED_CLOCK(1, 1), coco_cart_slot1_3, nullptr);
+ COCOCART_SLOT(config, m_slots[1], DERIVED_CLOCK(1, 1), coco_cart_slot1_4, nullptr);
  m_slots[1]->cart_callback().set(FUNC(coco_multipak_device::multi_slot2_cart_w));
  m_slots[1]->nmi_callback().set(FUNC(coco_multipak_device::multi_slot2_nmi_w));
  m_slots[1]->halt_callback().set(FUNC(coco_multipak_device::multi_slot2_halt_w));
- COCOCART_SLOT(config, m_slots[2], DERIVED_CLOCK(1, 1), coco_cart_slot1_3, nullptr);
+ COCOCART_SLOT(config, m_slots[2], DERIVED_CLOCK(1, 1), coco_cart_slot1_4, nullptr);
  m_slots[2]->cart_callback().set(FUNC(coco_multipak_device::multi_slot3_cart_w));
  m_slots[2]->nmi_callback().set(FUNC(coco_multipak_device::multi_slot3_nmi_w));
  m_slots[2]->halt_callback().set(FUNC(coco_multipak_device::multi_slot3_halt_w));
- COCOCART_SLOT(config, m_slots[3], DERIVED_CLOCK(1, 1), coco_cart_slot4, "fdcv11");
+ COCOCART_SLOT(config, m_slots[3], DERIVED_CLOCK(1, 1), coco_cart_slot1_4, "fdcv11");
  m_slots[3]->cart_callback().set(FUNC(coco_multipak_device::multi_slot4_cart_w));
  m_slots[3]->nmi_callback().set(FUNC(coco_multipak_device::multi_slot4_nmi_w));
  m_slots[3]->halt_callback().set(FUNC(coco_multipak_device::multi_slot4_halt_w));
--- src/devices/bus/coco/cococart.cpp 2021-03-14 03:30:57.000000000 -0400
+++ src/devices/bus/coco/cococart.cpp 2021-03-14 03:28:55.000000000 -0400
@@ -694,8 +694,10 @@
 void coco_cart_add_basic_devices(device_slot_interface &device)
 {
  // basic devices, on both the main slot and the Multi-Pak interface
- device.option_add_internal("banked_16k", COCO_PAK_BANKED);
- device.option_add_internal("pak", COCO_PAK);
+// device.option_add_internal("banked_16k", COCO_PAK_BANKED);
+ device.option_add("banked_16k", COCO_PAK_BANKED);
+// device.option_add_internal("pak", COCO_PAK);
+ device.option_add("pak", COCO_PAK);
  device.option_add("ccpsg", COCO_PSG);
  device.option_add("dcmodem", COCO_DCMODEM);
  device.option_add("games_master", COCO_PAK_GMC);
User avatar
No.18539
star2root
Tester
Mar 14, 2021, 08:55
edited on: Mar 14, 2021, 17:21
This patch also allows any device to be inserted into any multi-pak slot, which is the same as the physical system.
User avatar
No.18541
Osso
Developer
Mar 14, 2021, 10:58
edited on: Mar 14, 2021, 11:01
I'd advise you to create a pull request on GitHub's MAME repository, where it can discussed properly and merged if so decided. Just posting the diff here creates the risk it gets forgotten once this bug will have scrolled off the most recent ones.
User avatar
No.18542
Robbbert
Developer
Mar 14, 2021, 13:42
Why is 0.224 listed as the regression version when it is stated it was working?
User avatar
No.18543
star2root
Tester
Mar 14, 2021, 17:20
Sorry, did I use the regression version field wrong? Version 0.229 is broken and version 0.224 is the last version I tested that worked. It was broken some time after 0.224. I haven't tested every version after 0.224 to determine exactly when it broke.
User avatar
No.18544
star2root
Tester
Mar 14, 2021, 18:02
Created pull request.
User avatar
No.18546
Robbbert
Developer
Mar 14, 2021, 22:34
edited on: Mar 14, 2021, 22:35
The regression field holds the earliest broken version. If you don't know, leave it blank.

I've removed it for you.