| |
spider-j
Registered: Oct 2004 Posts: 503 |
Release id #245934 : Castlevania - Invitation of a Crazed Moon
Okay, after testing a bit, I'm moving the "possibly borked" *.sid file discussion here:
I guess it has something to do with the tune data overlapping into the BASIC ROM area (?!?). Relocating the tune i.e. to page 10 default with sidreloc fixes the problem.
I'm still not sure if it is a problem with the PSID header in the tune or with SID players in general (?!?).
sidreloc -s -t 0 -p 8F Castlevania_Crazed_Moon.sid ccm.sid
does write different values into +78 BYTE startPage (relocStartPage) and +79 BYTE pageLength (relocPages) than the original file. But the result still is borked then. |
|
| |
chatGPZ
Registered: Dec 2001 Posts: 11418 |
This describes the logic which is used to setup $01: https://sourceforge.net/p/vice-emu/code/HEAD/tree/testprogs/vsi..
(This logic is used in sidplay/w, vsid and in TC64 player - probably also in others)
Seems the case of init/play NOT being "under ROM", but then the tune is overlapping with ROM anyway is not covered. Or to be exact - init/play is supposed to deal with setting up $01 correctly in this case. |
| |
spider-j
Registered: Oct 2004 Posts: 503 |
Interesting. Didn't know that.
SID_file_format.txt does indeed gives this player implementation hint at the end:
When the init and play addresses are called the bank register value must be
written for every call and the value is calculated as follows:
if address < $A000 -> 0x37 // I/O, Kernal-ROM, Basic-ROM
else address < $D000 -> 0x36 // I/O, Kernal-ROM
else address >= $E000 -> 0x35 // I/O only
else -> 0x34 // RAM only
But I must admit I would have also assumed it would be end address instead of load / init / play address.
Knowing that I guess musicians could start releasing music releases only as PRG with player code starting at >=$9F00, just to keep the HVSC team busy XD |
| |
iAN CooG
Registered: May 2002 Posts: 3207 |
Yeah, if you want to get your tunes ignored, go on, do your best to piss me off =)
Jokes apart, it's not a big deal, in these cases it's normal to either put init/play jmps after the data or relocate the tune and be done with the need of extra jmps.
It only takes few seconds in both cases. |