| |
Sasq
Registered: Apr 2004 Posts: 156 |
Playing SIDs on the 64
So, anyone has some insights on how to make sid player as compatible as possible?
This is what I'm currently doing, and it works reasonably well:
- Put the player on $100-$180 (seems to be a bit more safe than $400). Of course it's best to use the reloc info in the SID if it exists, but often it doesn't.
- Clear all SID-regs before each subtune, except #$F -> $D418.
- Check the high nibble of the init adress, and set banking accordingly.
Things that doesnt work:
Some obviously broken SIDs, like Mikey who has its Init under ROM but still puts #$37 in $01. Playsid64 handles this though, not sure how you do that without actually checking the code for such things.
RSID. What I first thought was a good thing turns out to be stupid, since many of them put the player in the INIT and there is no way of changing song without resetting (or maybe use NMI to break it ?)
Also the ones that do install an interrupt and return like they're supposed to often break when you try to switch songs.
Thoughts, comments, anything to add?
|
|
... 14 posts hidden. Click here to view all posts.... |
| |
Sasq
Registered: Apr 2004 Posts: 156 |
Thats not really true. Athena has a 0 but still puts code at 100-130. That may count as the stack and thus never included in what is considered "free" but its a good place to put the player in most cases. When all songs where converted to the new format, how did you know what to put in reloc? Maybe there should have been a value that meant UNKNOWN.
I thought I gave pretty good descrtiption on the problems with those Galway songs :) Well I can put together all I find and send a mail later.
|
| |
Inge
Registered: Nov 2003 Posts: 144 |
Combat School, Arkanoid, Game Over and Microprose Soccer use digis, and the problem is that the digiroutine goes in an infinite loop. There is a simple solution (I have thought about implementing such a thing in my rips), and that is to add a keychecker to the routine. SIDPlay won't (hopefully) do anything with it, but a real C64 will.
Mikie and Athena are probably a matter of "doing it right", and shouldn't be too difficult to fix.
When it comes to the reloc-values, the person who creates the PSID/RSID-file is responsible for checking out if there's any need to set them. When the reloc-values are 0,0, the music-routine is expected to write to nothing else than its own mem-area (ie the mem it uses when it loads), the zero-page area, and the SID-chip. RSIDs can also be expected to write to 0314/15, 0318/19 and FFFA/FB, FFFE/FF.
Inge/HVSC |
| |
Inge
Registered: Nov 2003 Posts: 144 |
@Sasq: You are free to report any problems you encounter with the tunes. We will try to fix the tunes if it's doable.
Inge/HVSC |
| |
Graham Account closed
Registered: Dec 2002 Posts: 990 |
@Inge: What about those "real" PlaySID-like registers? It would be cool to listen to those tunes without scrambled SID channels on C64 too, and the sfx sound sampler is offering that. |
| |
Sasq
Registered: Apr 2004 Posts: 156 |
Quote:When it comes to the reloc-values, the person who creates the PSID/RSID-file is responsible for checking out if there's any need to set them.
Didnt you batch convert to V2 format? Somehow I doubt someone sat down and checked 20,000+ songs (or however may it was back then) and recorded free pages... :)
Another way to solve the RSID issue is to flag songs that take over the CPU, and make sure they allow an interrupt to be run.
This would mean you need two routines again; INIT that just sets up the song to be played and flags the play routine to stop playing, and PLAY that "busy-plays" the current song but watches for song change flagged by INIT routine.
|
| |
SIDWAVE Account closed
Registered: Apr 2002 Posts: 2238 |
There's a lot of things that could be different, if there was another fileformat, and another sidplay.
If you want to help make anything, the person to write is Simon White.
We are living still with the limits of the original PSID format. Only way you can change that, is to work on a whole new technology. |
| |
Steppe
Registered: Jan 2002 Posts: 1510 |
@Sasq: Indeed we had our mighty tools run over the whole HVSC back then, created a memory usage map of every tune and compared these maps with the loadrange. Based upon this the reloc fields were set.
@Graham: Do you think it's really worth tweaking 1500+ tunes to take advantage of a piece of hardware that probably isn't that wide spread? |
| |
Graham Account closed
Registered: Dec 2002 Posts: 990 |
@Steppe: Samples + SID voices sound horrible, so yeps, i think it is worth it. PlaySID registers was an attempt to do this, but they sucked because they didn't reflect anything which existed in the real world. |
| |
Steppe
Registered: Jan 2002 Posts: 1510 |
Hm, the more I think about it the more interesting it gets. It would probably just require inserting some ST(A|X|Y) to the usual sampler memory area in PSID specific rips. The original PSID specific writes don't hurt a real C64, but the question is, would the additional sampler specific writes hurt Sidplay1/2 or would they just be ignored?
Unfortunately I'm missing technical insight, as I've become a ripper only after the PSID era. Inge? |
| |
macx
Registered: Mar 2002 Posts: 255 |
this fab-sidplayer, when produced, should be implemented to a mmc64-update, making life even easier for the ones of us running HVSC from the mmc64 :-) |
Previous - 1 | 2 | 3 - Next |