mjnurney Posted January 15, 2021 Share Posted January 15, 2021 I’ve finally plugged in my Sid master in to the PEB. I’m not sure if I ever knew or not but it doesn’t recognise .Sid files but $files. As it’s taken me from 2018 to connect it up I’ve forgotten everything about it but I copied some disk image over tipi and can play some music but the cut out after 15 seconds or so... does anyone have any experience of this device? I was hoping to get ocean loader, commando and various Sid tunes on it... thanks Mike. 1 Quote Link to comment Share on other sites More sharing options...
+arcadeshopper Posted January 15, 2021 Share Posted January 15, 2021 I’ve finally plugged in my Sid master in to the PEB. I’m not sure if I ever knew or not but it doesn’t recognise .Sid files but $files. As it’s taken me from 2018 to connect it up I’ve forgotten everything about it but I copied some disk image over tipi and can play some music but the cut out after 15 seconds or so... does anyone have any experience of this device? I was hoping to get ocean loader, commando and various Sid tunes on it... thanks Mike.Yep I have one and so does jedimatt42 you can only play those files no executable stuff as it's all the wrong cpu..I'll have to dig to see if I have thoseSent from my LM-V600 using Tapatalk 1 Quote Link to comment Share on other sites More sharing options...
mjnurney Posted January 15, 2021 Author Share Posted January 15, 2021 Great thank you 1 Quote Link to comment Share on other sites More sharing options...
+Ksarul Posted January 15, 2021 Share Posted January 15, 2021 Marc included all of the SID music he'd translated in the files he provided with the card (about 8,000 of them, IIRC). I will have to put up a SID section on my website (which is nothing more than a placeholder site at this time). 1 Quote Link to comment Share on other sites More sharing options...
+mizapf Posted January 15, 2021 Share Posted January 15, 2021 This is just a reminder that there is a SID Master 99 emulation in MAME since 0.225, if someone is interested to try it. 3 Quote Link to comment Share on other sites More sharing options...
mjnurney Posted January 15, 2021 Author Share Posted January 15, 2021 1 hour ago, Ksarul said: Marc included all of the SID music he'd translated in the files he provided with the card (about 8,000 of them, IIRC). I will have to put up a SID section on my website (which is nothing more than a placeholder site at this time). Thanks I’ve downloaded them or at least a bundle of them. The folders seems to be in the creators names. How are the files converted ? Quote Link to comment Share on other sites More sharing options...
+arcadeshopper Posted January 15, 2021 Share Posted January 15, 2021 1 hour ago, mjnurney said: Thanks I’ve downloaded them or at least a bundle of them. The folders seems to be in the creators names. How are the files converted ? I can download files from the http://www.c64music.co.uk/ site and play them fine they are just have to import into the ti as a "alien" df128 Sent from my LM-V600 using Tapatalk 1 Quote Link to comment Share on other sites More sharing options...
mjnurney Posted January 15, 2021 Author Share Posted January 15, 2021 (edited) Yeah those are the files I used. How difficult is it to convert .Sid to the Ti file? Edited January 15, 2021 by mjnurney Quote Link to comment Share on other sites More sharing options...
+arcadeshopper Posted January 15, 2021 Share Posted January 15, 2021 its the .mus files in that site you copy them over to the TI with the tool of your choice and they work, there is no conversion needed just rename them to be the $NAME without the extension how are you moving files to your TI? Quote Link to comment Share on other sites More sharing options...
mjnurney Posted January 15, 2021 Author Share Posted January 15, 2021 (edited) Ah ok. I saw the .mus files but they were ignored by the sid player. So I can copy a .mus over but remove the .mus extension? thank you Edited January 15, 2021 by mjnurney Quote Link to comment Share on other sites More sharing options...
+arcadeshopper Posted January 15, 2021 Share Posted January 15, 2021 3 minutes ago, mjnurney said: Ah ok. I saw the .mus files but they were ignored by the sid player. So I can copy a .mus over but remove the .mus extension? thank you Yes the sid player ignores anything that doesn't start with a $ Quote Link to comment Share on other sites More sharing options...
mjnurney Posted January 15, 2021 Author Share Posted January 15, 2021 1 minute ago, arcadeshopper said: Yes the sid player ignores anything that doesn't start with a $ Ah I see thank you Quote Link to comment Share on other sites More sharing options...
GDMike Posted April 13, 2021 Share Posted April 13, 2021 Is there any documentation for this card. I'd like to read through what information is available. Ty Quote Link to comment Share on other sites More sharing options...
+Ksarul Posted April 13, 2021 Share Posted April 13, 2021 Here's the only manual there is. . . sidmaster-player_docs.rtf 1 1 Quote Link to comment Share on other sites More sharing options...
GDMike Posted May 2, 2021 Share Posted May 2, 2021 On 4/12/2021 at 8:12 PM, Ksarul said: Here's the only manual there is. . . sidmaster-player_docs.rtf 3.65 MB · 16 downloads Have you seen this drop in replacement https://www.retrocomp.cz/produkt?id=2 Quote Link to comment Share on other sites More sharing options...
GDMike Posted May 2, 2021 Share Posted May 2, 2021 I suppose nobody has an extended basic or Forth examples of creating a sound list for SID99? Actual sounds? I know what the book says, and It's definitely over my head, and it talks about you could use extended basic with call loads but again, no example. The"extended basic" code I ever found talking about SID99 was just ti-99 sound as it played with it or without the SID card. It's nice to have hardware. I heard about a player, but I'm not interested in that option even cool as it is. Just looking for what the manual could have referenced with working examples, I think. examples in 3 languages. Ex basic, assy and Forth would be nice. Maybe I'm missing something? It wouldn't be the first time. Maybe the forths can't generate tones in this because they only know the ti sounds? So that may not be obtainable. But surely assembly code examples for this card could be available? Thank you in advance for clarification. Quote Link to comment Share on other sites More sharing options...
+arcadeshopper Posted May 2, 2021 Share Posted May 2, 2021 1 hour ago, GDMike said: Have you seen this drop in replacement https://www.retrocomp.cz/produkt?id=2 scroll up it doesn't work in the sid99 Quote Link to comment Share on other sites More sharing options...
GDMike Posted May 2, 2021 Share Posted May 2, 2021 (edited) 2 hours ago, arcadeshopper said: scroll up it doesn't work in the sid99 im sure it doesnt work in SID99, thats not what im asking...im asking if hed seen it? as in the ARM development Edited May 2, 2021 by GDMike Quote Link to comment Share on other sites More sharing options...
+OLD CS1 Posted May 2, 2021 Share Posted May 2, 2021 @GDMike There is a litany of SID programming examples out there, though 6502-specific and not 9900. As for Forth, it should be a matter of sending the correct data to the address space the SID99 occupies. (I cannot recall OTOMH, but there is good documentation of it.) Bingo bango bongo, and Bob's your uncle. I cannot see it being practical in XB without loading an assembly language progam. You would need a lot of CALL LOADs to play something, though sound effects and simple things like a bell using ADSR (did that in CBM BASIC, easily,) should be easy. Check out the "Commodore 64 Progammer's Reference Guide" for some deep info on the SID. The SID99 manual has some TI-centric programming information. http://www.dsapsc.com/free-sid-music.html Also, the manual provides an answer to my question about the LED and the latches feeding data to the SID. If I understand correctly, it is done this way to compensate for some timing differences between the 9900 and the SID, in order to make sure the SID does not miss any data being sent to it. 2 Quote Link to comment Share on other sites More sharing options...
GDMike Posted May 2, 2021 Share Posted May 2, 2021 4 minutes ago, OLD CS1 said: Also, the manual provides an answer to my question about the LED and the latches feeding data to the SID. If I understand correctly, it is done this way to compensate for some timing differences between the 9900 and the SID, in order to make sure the SID does not miss any data being sent to it. i saw that too Quote Link to comment Share on other sites More sharing options...
Tursi Posted May 2, 2021 Share Posted May 2, 2021 There are no sound lists on the SID Master card, only POKES (CALL LOADs in our case) to directly write the registers on the card. I only have one example, it's from the C64 manual converted to XB. The purpose IIRC was to demonstrate the wave shape capabilities: 10 CALL CLEAR :: CALL INIT 11 FC=0 :: WF=17 :: ATK=132 :: SR=17 :: PH=2 :: PL=255 20 FOR C=22582 TO 22576 :: CALL LOAD(C,0):: NEXT C 30 V=22576 :: W=22536 :: A=22538 :: HF=22530 :: LF=22528 :: S=22540 :: PH=22534 :: PL=22532 35 CALL LOAD(V,15) 40 CALL LOAD(A,ATK):: CALL LOAD(PH,15):: CALL LOAD(PL,15) 45 CALL LOAD(22540,SR) 46 PRINT "WAVEFORM=";WF:"ATTACK/DECAY=";ATK:"SUSTAIN/RELEASE=";SR: : 50 READ H :: IF H=-1 THEN 1000 60 READ L :: READ D 65 CALL LOAD(HF,H):: CALL LOAD(LF,L):: CALL LOAD(W,WF) 70 CALL LOAD(22578,0) 80 FOR T=1 TO D :: NEXT T :: CALL LOAD(W,WF-1) 85 FOR T=1 TO D/(D/2):: NEXT T 90 GOTO 50 100 DATA 34,75,25,43,52,25,51,97,70,43,52,8,51,97 110 DATA 25,57,172,25 120 DATA 51,97,50,0,0,12,43,52,25,51,97,25,57,172 130 DATA 100,51,97,50,-1,-1,-1 1000 CALL LOAD(HF,0):: CALL LOAD(LF,0) 1010 RESTORE 1020 IF WF=17 THEN WF=33 :: GOTO 1030 1021 IF WF=33 THEN WF=65 :: GOTO 1030 1025 IF WF=65 THEN WF=17 :: GOTO 1030 1026 IF WF=65 THEN PH=PH-1 :: PL=PL+2 1029 IF WF=65 THEN PH=PH*2 :: PL=PL/2 1030 CALL LOAD(22532,PH):: CALL LOAD(22534,PL) 1040 IF WF=17 THEN ATK=ATK/2+2 :: SR=SR*2 1500 FC=FC+1 :: IF FC<17 THEN 40 2000 FOR C=22528 TO 22568 :: CALL LOAD(C,0):: NEXT C MICH_SID 3 1 Quote Link to comment Share on other sites More sharing options...
Tursi Posted May 2, 2021 Share Posted May 2, 2021 There are no comments and possibly a few bugs, the bugs are probably my fault. 10 - Clear screen, and CALL INIT so we can CALL LOAD later 11 - init variables: FC just counts loops, after 16 times through the program will exit WF sets the "waveform" type, and is written to voice 1 control. Starting value of 17 sets a triangle wave ATK sets the attack/decay durations. The starting value is 132 is 8 frames of attack and 4 frames of decay (>84) SR holds the sustain/release durations. The starting value of 17 is 1 frame of each. PH is supposed to hold the high byte of the pulse duty cycle, but the code is buggy. PL is supposed to hold the low byte of same. Both of these variables are used as the data and address, thus the bug. 20 - seems to be a typo here too... it is meant to be zeroing all the registers, that would be 22528 to 22568, also should STEP 2 30 - sets up some variables to be addresses of registers V is the filter mode/volume W is the voice 1 waveform control A is the voice 1 attack/decay control HF is voice 1 frequency high byte LF is the voice 1 frequency low byte S is the voice 1 sustain/release control PH is the pulse wave duty high byte (and conflicts with the earlier PH, meant to hold the value. One or the other should change) PL is the pulse wave duty low byte (and conflicts with the earlier PL, meant to hold the value. One or the other should change) 35 - sets the master volume to maximum (15) with no filters enabled 40 - loads the current value for attack/decay, and sets the duty cycle to >F0F (and I'm not even sure what that value means) 45 - loads the current value for sustain/release 46 - prints the current settings 50 - start of music play - reads the high frequency byte. If it gets -1, branch to 1000 for end of song 60 - read the low frequency byte, and read a duration value 65 - load the high frequency byte, then the low frequency byte, and finally the current waveform (which also re-triggers the note) 70 - writes out of range (to a read-only register) in order to move the latch off the waveform register and let the SID process it - this is SID Master specific, so you won't find this in SID tutorials! 80 - delay for the time read from the DATA, and then clear the 'gate' bit in the waveform register to end the note (starts release) 85 - brief delay which is always 1 to 2, so I don't know why it looks like that... 90 - loop around and read the next note 100-130 - note data for the little tune, ends with -1 (only needs one, but has three for safety) 1000 - when the song ends, we come here. First we zero the high and low frequency bytes. 1010 - reset the DATA pointer 1020-1025 - select a new waveform. 33 is sawtooth, 65 is pulse (square wave), and then it loops back to 17 1026-1029 - when the waveform loops back to 17, it probably meant here to adjust the pulse width, but the tests and the math are both out to lunch, and as written this code is never executed. 1030 - loads the pulse width registers (high and low), but due to the above bugs, they are always loaded with the least significant byte of their addresses, that being >06 for high and >04 for low. 1040 - each time the WF loops around to 17, this line will cut ATK in half (then add 2, presumably to avoid 0) and double SR 1500 - increment the loop count, if not 16 loops yet, go start the music with the new settings 2000 - clear all the voice registers, probably should STEP 2. Despite the minor bugs, it does work (except for never changing the pulse width). Here's a Google Doc with the TI addresses... the meanings of the SID registers you can get from lots of sources online. https://docs.google.com/spreadsheets/d/1pEtKO53lmclql6GdIq14aL7T3CBKNCKLO7-0_79ocSA/edit?usp=sharing 4 Quote Link to comment Share on other sites More sharing options...
GDMike Posted May 2, 2021 Share Posted May 2, 2021 Perfect. This is what I needed. Thank you so much for this. Quote Link to comment Share on other sites More sharing options...
+OLD CS1 Posted May 3, 2021 Share Posted May 3, 2021 Did this for fun tonight. Here is Example Program 10 from the "Commodore 64 Programmer's Reference Guide" page 208, from the chapter "Sound and Music on Your Commodore 64." It is not optimized (could combine multiple CALL LOADs into one,) the register loads in lines 30 through 80, are pre-calculated as register*2 (as the 9900 is 16-bit, so registers are word-aligned,) and the timing between dings is longer than it would be on the 64 (try changing to 100 rather than 1000.) 10 S=22528 :: CALL INIT 20 FOR L=0 TO 24 :: CALL LOAD(S+L*2,0):: NEXT L 30 CALL LOAD(S+2,130) 40 CALL LOAD(S+10,9) 50 CALL LOAD(S+30,30) 60 CALL LOAD(S+48,15) 70 FOR L=1 TO 12 :: CALL LOAD(S+8,21) 80 FOR T=1 TO 1000 :: NEXT T :: CALL LOAD(S+8,20) 90 FOR T=1 TO 1000 :: NEXT T :: NEXT L 4 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.