I'm working on a ca65 project template for SPCs assembled directly from source code. An early version is included with my LoROM project template. For example, a homebrew game developer could use this to offer a clean SPC rip of the game's soundtrack. But I don't know how to set up some of the fields listed in SPC and RSN File Format.
$24: "Version Minor (i.e. 30)"
This is decimal, correct?
$27: "A"
Is there a way to specify that all SPCs in a set are identical except for one register value without paying for WinRAR and making an RSN with multiple copies of the SPC that differ only by $27 (A) to select a song? It might be possible by including a Python script that duplicates the ROM, but the vast majority who uses Microsoft Windows as a primary operating system do not have a copy of Python installed. Should a set include a PowerShell script for Windows users and a Python script for everyone else?
$2E: "Song Title"
Are text fields like this space-padded or NUL-padded?
$6E: "Name of Dumper"
What goes here if the SPC was created by the artist?
$7E: "Comments"
What goes here?
$9E (binary format): "Date SPC was Dumped (YYYYMMDD)"
How are the 4 bytes allocated? Is it BCD or something else? Or is the "text format" more compatible?
$A9 (text format): "Number of Seconds to Play Song before Fading Out"
Is this zero-padded on the left, space-padded on the left, space-padded on the right, or NUL-padded on the right? Also, nobody needs more than 16 minutes and 39 seconds in the same way that nobody needs more than 64K.
$A9 (binary format): "Number of Seconds to Play Song before Fading Out"
I'm assuming little endian. Am I right?
$D2 (text format), $D1 (binary format): "Emulator used to dump SPC (0 = Unknown, 1 = ZSNES, 2 = Snes9x)"
Should SPCs assembled from source just use 0?
$101C0: "Extra RAM (Memory Region used when the IPL ROM region is set to read-only)"
What is this? Is this supposed to be a copy of the IPL ROM, or the memory "behind" the IPL ROM? Should the IPL ROM be stored at $100C0 in the file ($FFC0 within the RAM segment)? For songs that don't themselves call the IPL ROM other than to "quit", how critical is it that the data stored here match the actual IPL ROM?
Why are the metadata fields called ID666 anyway? I understand ID<number> because of ID3, a metadata extension to MP3 audio files. But why the 666?
$24: "Version Minor (i.e. 30)"
This is decimal, correct?
$27: "A"
Is there a way to specify that all SPCs in a set are identical except for one register value without paying for WinRAR and making an RSN with multiple copies of the SPC that differ only by $27 (A) to select a song? It might be possible by including a Python script that duplicates the ROM, but the vast majority who uses Microsoft Windows as a primary operating system do not have a copy of Python installed. Should a set include a PowerShell script for Windows users and a Python script for everyone else?
$2E: "Song Title"
Are text fields like this space-padded or NUL-padded?
$6E: "Name of Dumper"
What goes here if the SPC was created by the artist?
$7E: "Comments"
What goes here?
$9E (binary format): "Date SPC was Dumped (YYYYMMDD)"
How are the 4 bytes allocated? Is it BCD or something else? Or is the "text format" more compatible?
$A9 (text format): "Number of Seconds to Play Song before Fading Out"
Is this zero-padded on the left, space-padded on the left, space-padded on the right, or NUL-padded on the right? Also, nobody needs more than 16 minutes and 39 seconds in the same way that nobody needs more than 64K.
$A9 (binary format): "Number of Seconds to Play Song before Fading Out"
I'm assuming little endian. Am I right?
$D2 (text format), $D1 (binary format): "Emulator used to dump SPC (0 = Unknown, 1 = ZSNES, 2 = Snes9x)"
Should SPCs assembled from source just use 0?
$101C0: "Extra RAM (Memory Region used when the IPL ROM region is set to read-only)"
What is this? Is this supposed to be a copy of the IPL ROM, or the memory "behind" the IPL ROM? Should the IPL ROM be stored at $100C0 in the file ($FFC0 within the RAM segment)? For songs that don't themselves call the IPL ROM other than to "quit", how critical is it that the data stored here match the actual IPL ROM?
Why are the metadata fields called ID666 anyway? I understand ID<number> because of ID3, a metadata extension to MP3 audio files. But why the 666?