mamedev / mame

MAME
https://www.mamedev.org/
Other
7.75k stars 1.95k forks source link

initialize Tandy Color Computer cassette software list #12505

Open udance4ever opened 1 week ago

udance4ever commented 1 week ago

Commit Summary

  1. Initializes the software list for cassettes for the Tandy Color Computer
  2. Adds a hiscore.dat update for Zaxxon
  3. Registers new cassette software lists (coco_cass) for COCO and COCO3 in MAME

Software Titles

  1. Grover’s Number Rover (Children’s Computer Workshop)
  2. Sam Sleuth (Computerware)
  3. Zaxxon (Datasoft) [+ hiscore.dat]
  4. Zonx (The Rainbow)

Cassette images downloaded from https://www.colorcomputerarchive.com

  1. Renamed zips to adhere to 8.3 and match disk counterparts
  2. File sizes and crc & sha checksums calculated
  3. Required metadata & additional fields as information is available
  4. usage info so software can be autobooted in MAME

Other details

In preparation, we’ve implemented coco autoload behavior in Batocera Linux and the option to search a cassette software list in Advanced Game Options for a coco software item.

Historical (dev issue resolved)

This is a draft pull request because the following command does not find coco_cass.xml in the specified hash path (/var/run/mame_software/hash):

/usr/bin/mame/mame -skip_gameinfo -rompath /userdata/roms/coco/cas;/userdata/bios/mame/;/userdata/bios/;/userdata/roms/mame/ -bgfx_path /usr/bin/mame/bgfx/ -fontpath /usr/bin/mame/ -languagepath /usr/bin/mame/language/ -pluginspath /usr/bin/mame/plugins/;/userdata/saves/mame/plugins -samplepath /userdata/bios/mame/samples/ -artpath /var/run/mame_artwork/;/usr/bin/mame/artwork/;/userdata/bios/mame/artwork/;/userdata/decorations/ -cheat -cheatpath /userdata/cheats/mame/ -verbose -nvram_directory /userdata/saves/mame/nvram/ -cfg_directory /userdata/system/configs/mame/coco3/ -input_directory /userdata/saves/mame/input/ -state_directory /userdata/saves/mame/state/ -snapshot_directory /userdata/screenshots/ -diff_directory /userdata/saves/mame/diff/ -comment_directory /userdata/saves/mame/comments/ -homepath /userdata/saves/mame/plugins/ -ctrlrpath /userdata/system/configs/mame/ctrlr/ -inipath /userdata/system/configs/mame/;/userdata/system/configs/mame/ini/ -crosshairpath /userdata/bios/mame/artwork/crosshairs/ -swpath /var/run/mame_software/ -hashpath /var/run/mame_software/hash/ -video opengl -resolution 1920x1080 -ui_active -plugins -plugin hiscore -dial_device mouse -trackball_device mouse -paddle_device mouse -positional_device mouse -mouse_device mouse -ui_mouse -lightgun_device mouse -adstick_device mouse coco3 zonx1 -autoboot_delay 2 -autoboot_command CLOADM:EXEC\n

A nearly identical command line boots just fine for the coco diskette software list:

/usr/bin/mame/mame -skip_gameinfo -rompath /userdata/roms/coco;/userdata/bios/mame/;/userdata/bios/;/userdata/roms/mame/ -bgfx_path /usr/bin/mame/bgfx/ -fontpath /usr/bin/mame/ -languagepath /usr/bin/mame/language/ -pluginspath /usr/bin/mame/plugins/;/userdata/saves/mame/plugins -samplepath /userdata/bios/mame/samples/ -artpath /var/run/mame_artwork/;/usr/bin/mame/artwork/;/userdata/bios/mame/artwork/;/userdata/decorations/ -cheat -cheatpath /userdata/cheats/mame/ -verbose -nvram_directory /userdata/saves/mame/nvram/ -cfg_directory /userdata/system/configs/mame/coco3/ -input_directory /userdata/saves/mame/input/ -state_directory /userdata/saves/mame/state/ -snapshot_directory /userdata/screenshots/ -diff_directory /userdata/saves/mame/diff/ -comment_directory /userdata/saves/mame/comments/ -homepath /userdata/saves/mame/plugins/ -ctrlrpath /userdata/system/configs/mame/ctrlr/ -inipath /userdata/system/configs/mame/;/userdata/system/configs/mame/ini/ -crosshairpath /userdata/bios/mame/artwork/crosshairs/ -swpath /var/run/mame_software/ -hashpath /var/run/mame_software/hash/ -video opengl -resolution 1920x1080 -ui_active -plugins -plugin hiscore -dial_device mouse -trackball_device mouse -paddle_device mouse -positional_device mouse -mouse_device mouse -ui_mouse -lightgun_device mouse -adstick_device mouse coco3 zonx -autoboot_delay 2 -autoboot_command LOADM"ZONX":EXEC\n

I’ve verified the hash file is in the specified hash path and it is a valid, world-readable XML file.

The error MAME reports (listing no matches):

"zonx1" approximately matches the following
supported software items (best match first):

I’ve double checked the checksum 7c949bd685a5db980dda034237564d6956654995 is correct.

I’ve reviewed the codebase and couldn’t find any reference to anything that is hardcoded when it comes to software lists (this is based on my limited understanding of how software lists work in MAME)

Could someone please verify the syntax of the new software list is correct and if there are any changes to the MAME codebase that needs to happen for the above MAME command to work?

Thank you in advance for your support integrating this contribution into MAME!

wilbertpol commented 1 week ago

You also need to hook it up in the relevant driver files using a line like this:

    SOFTWARE_LIST(config, "cass_list").set_original("coco_cass");
udance4ever commented 4 days ago

is the automated CI build passing sufficient to request a merge of this pull request?

I have very limited hardware & last I tried my own local build, I believe it ran out of memory.

I originally thought this was a submission of a single XML file & didn't anticipate any code changes until this was pointed out to me.

I am wondering if it is acceptable to request a merge given how straightforward the changes are.

is there any way to download the Linux build of MAME from CI for me to verify these changes worked?

Pernod70 commented 4 days ago

The appending of "1" to all software names will not be accepted. The issue should be addressed in Batocera rather than adding meaningless numbers to names.

You don't need the publisher duplicated in brackets in the software description, unless the same title was released by different publishers.

Why do you have a both a .cas and .wav for Zaxxon? Are they effectively the same data in different formats? And I'd be surprised if both the .cas and .wav were exactly the same size of 3700 bytes. In fact all of your files are listed with size of 3700 bytes which I highly doubt to be correct.

wilbertpol commented 4 days ago

I am wondering if it is acceptable to request a merge given how straightforward the changes are.

is there any way to download the Linux build of MAME from CI for me to verify these changes worked?

Yes, you can download the built artifacts. Expand the 'All checks have passed' part by clicking 'Show all checks'. This will display all the tests, then click 'Details' for one of the tests you're interested in, click 'Summary' at the top left then in the bottom right you can see and download the artifacts.

ICEknigh7 commented 4 days ago

Also, I believe that credit for softlist items should go in the PR description rather than the xml. Else there will be a lot of work left to do to go back and add everyone in all of them (would be awkward to all contributors if it was a "friends only" thing).

angelosa commented 3 days ago

The appending of "1" to all software names will not be accepted. The issue should be addressed in Batocera rather than adding meaningless numbers to names.

In case it wasn't clear: MAME accepts a root XML as input of a SW item, so:

./mame coco3 coco_flop:zonx Will load the floppy version of Zonx, while

./mame coco3 coco_cass:zonx Will (hopefully) load the cassette version of it.

udance4ever commented 1 day ago

thank you so much @wilbertpol for the tip! I really like the build environment here - it’s very supportive & quite functional :)

I verified the Linux build loads coco_cass.xml successfully and does a software list lookup (I verified with a non-existent item and MAME correctly reports “close” matches)

The issue I’m running into now is it’s not automatically mounting the cassette image (I verified this by opening up the MAME File Manager and see no cassette image is mounted) - I poked around again through the code trying to understand how the software list is mapped to devices. My best guess is dataarea name=cass in the softList is what points it to the cass device - is this correct? What else can we try now that we’ve confirmed the softList is recognized and loaded into memory?

The appending of "1" to all software names will not be accepted. The issue should be addressed in Batocera rather than adding meaningless numbers to names.

removed and will coordinate with the Batocera Linux team

You don't need the publisher duplicated in brackets in the software description, unless the same title was released by different publishers.

removed all references that were duplicates.

Why do you have a both a .cas and .wav for Zaxxon? Are they effectively the same data in different formats? And I'd be surprised if both the .cas and .wav were exactly the same size of 3700 bytes. In fact all of your files are listed with size of 3700 bytes which I highly doubt to be correct.

@Pernod70 yes - they are two accepted formats and thank you for catching the incorrect sizes - I’ve updated all the sizes for all images to exact byte counts.

Also, I believe that credit for softlist items should go in the PR description rather than the xml. Else there will be a lot of work left to do to go back and add everyone in all of them (would be awkward to all contributors if it was a "friends only" thing).

@ICEknigh7 could you elaborate on this a bit more? I’m initializing the cassette list with software titles I actually own. I do not have the hardware to make my own dumps so I made sure to acknowledge the source of the images from colorcomputerarchive.com

ICEknigh7 commented 20 hours ago

could you elaborate on this a bit more?

My understanding is that softlists are for software info and credits should go in the PR description.

udance4ever commented 19 hours ago

My understanding is that softlists are for software info and credits should go in the PR description.

ok - I added a bulleted summary of this PR and a list of software titles to the original PR request above:

Commit Summary

  1. Initializes the software list for cassettes for the Tandy Color Computer
  2. Adds a hiscore.dat update for Zaxxon
  3. Registers new software lists for COCO and COCO3 in MAME

Software Titles

  1. Grover’s Number Rover (Children’s Computer Workshop)
  2. Sam Sleuth (Computerware)
  3. Zaxxon (Datasoft) [+ hiscore.dat]
  4. Zonx (The Rainbow)

Cassette images downloaded from https://www.colorcomputerarchive.com