Ha már konvertálás, készítettem Windowsos (x64) csomagot a sid_dump és sid_conv programokból:
*
sidconv.7z (szerk.: burkológörbe emuláció javítva a sid_conv.cpp-ben)
A forráskódból is egyszerűen fordítható
ezzel a fordítóval (vagy
ezzel a 32 bites változatával), a
compile.bat futtatásával.
Használat:
sid_dump.exe INFILE OUTFILE [LENGTH1 [LENGTH2...]]
sid_dump.exe INFILE OUTFILE [SONGLENGTHS FILENAME]sid_conv.exe INFILE OUTFILE [INTFREQ [BLKSIZE]]A sid_dump PSID file-t futtat minimális emulált 6502-es környezetben, és a kimenete egyszerű "nyers" formátum, ami a SID regiszterekbe írt értékeket tárolja 50 Hz-es (vagy egyéb frekvenciájú) megszakításonként. Az ilyen file megfelelő tömörítés után lejátszható a sid.com (lent) használatával, ha van SID kártya (azaz jelenleg csak emulátoron
). A PSID -> RAW konvertálás egyébként a
SIDPLAY programmal és a
sidrecn.lua scripttel is lehetséges, ha a sid_dump valamiért nem működik.
A formátum leírása: 16384 byte-os blokkokat használ, minden blokk a 25 írható SID regiszter 655 értékét tárolja, az első 655 byte a 0. regiszter, a következő 655 byte az 1. regiszter, és így tovább. Az utolsó 9 byte általában 0, az alábbiak kivételével:
- az utolsó blokkban 3FFE-3FFF pozíciónál a ténylegesen használt megszakítások száma található, ami kevesebb lehet 655-nél
- az első blokkban 3FFD-nél a megszakítás frekvencia - 50 Hz található (így 50-305 Hz tartomány lehetséges), 3FFB-3FFC-nél pedig a megszakítások közötti SID ciklusok pontos száma CIA időzítésnél (CIA számlálóba írt érték + 1). Video megszakításnál ez 0, és az alapértelmezés 312 * 63 (PAL 50 Hz) vagy 262 * 65 (NTSC 60 Hz). A sid.com csak a kerekített Hz értéket veszi figyelembe
A 3-as csatorna regiszter (PWM felső 4 bit) eredetileg nem használt 7. bitjének speciális funkciója van: azt jelzi, ha a burkológörbét újra kell indítani a GATE bit egy megszakítás ciklus alatti 1->0->1 átmenete miatt.
SID zenék például
innen tölthetők le, példa konvertálásra (az epcompress csak a sid.com-os lejátszáshoz kell, a sid_conv.exe a tömörítetlen formátumot is elfogadja):
..\sidconv\sid_dump.exe MUSICIANS/T/Tel_Jeroen/Cybernoid_II.sid cybnoid2.raw DOCUMENTS/Songlengths.txt MUSICIANS/T/Tel_Jeroen/Cybernoid_II.sid
Name: Cybernoid II
Author: Jeroen Tel
Released: 1988 Hewson
Video standard: PAL
SID model: MOS6581
IRQ frequency: 50.12 Hz
Done converting track 1: 17343 frames
IRQ frequency: 50.12 Hz
Done converting track 2: 451 frames
epcompress -raw -m0 -9 -blocksize 16384 -maxoffs 32768 cybnoid2.raw cybnoid2.raw
Compressing data
100% [ Guests cannot view attachments ]
[ Guests cannot view attachments ]
[ Guests cannot view attachments ]
[ Guests cannot view attachments ]
[ Guests cannot view attachments ]
A következő lépés a SIDBASIC.COM által támogatott és SID kártya nélkül is lejátszható formátum létrehozása, ami a sid_conv programmal lehetséges. Ennek a formátumnak a leírása:
- az elején 16 byte-os EXOS fejléc található: 00h, 4Fh, tömörített adat méret L, tömörített adat méret H, IRQ frekvencia L, IRQ frekvencia H, megszakítások száma (24 bit, az alsó 8 bit az első), 7 nem használt (mindig 0) byte
- az EXOS fejlécet követi a tömörített adat epcompress -raw -m2 -blocksize 8192 -maxoffs 16384 formátumban
- minden 8K-s blokk legfeljebb 682 megszakítás hosszúságú felvételt tartalmaz, csatornánként 4 konvertált "regiszterrel". Az adat szervezése a blokkon belül hasonló a RAW formátumhoz. Az utolsó blokk végén (1FFE-1FFF) 682 - a blokkban ténylegesen használt megszakítások száma található
- a 0. és 1. csatorna regiszter a 16 bites SID frekvencia, zaj hullámformánál 4 bittel jobbra léptetve
- a 2. regiszter a gyűrűmodulációt (7. bit), hullámformát (5-6. bit, 00=háromszög, 01=fűrész, 10=négyszög, 11=zaj), és az aktuális hangerőt (0-4. bit) tartalmazza. 0 hangerő esetén a hullámforma mindig négyszög
- a 3. regiszter a négyszögjel kitöltési tényezője (felső 8 bit), csak nem 0 hangerejű négyszögjelnél, egyébként 0
Példa konvertálásra:
..\sidconv\sid_conv.exe cybnoid2.raw cybnoid2.m64
Converting file...
100%
Compressing data
100%