A video regiszterek egyelőre nem befolyásolják a grafikai megjelenítést. Az alap programoknál ez nem okoz gondot, lehet hogy a "Vili a bányász" és más profibb játékok jobban vezérelik a regisztereket és nem a szabványos beállításokat használják. Majd ha tudok próbálok javítani ezen.
Viszont a hang emulációhoz kérnék segítséget.
Ennyi alap információt gyűjtöttem össze, TVC hanggenerálással kapcsolatban:
-Van egy 12 bites PITCH érték.
Pitch=((port[5]&0x0F)<<
|port[4];
-Van egy 4 bites amplitúdó (hangerõ? 0..15)
Amp=(port[6]>>2)&0x0F;
-Van egy hang Interrupt (engedélyezve-tíltva) -uganezt használja a magnó
port[5] 5. bit
-Hangjel tiltva, engedélyezve:
port[5] 4. bit
-van egy frekvencia osztó
nullázás: adat küldés a port[0x5B]-ra (az adat közömbös)
Pitch= 0..4095 4095=nincs hang
F=195312.5/(4096-Pitch)
Meg tudom azt csinálni, hogy van egy "puffer", amibe másodpercenként X alkalommal feltöltöm a hang adatait, ami szól folyamatosan -ha kell. 22 Khz-es 8 bites mono 1 csatornás a hang, ez szerintem elég is lesz.
A 22 Khz azt jelenti, hogy 22050 adat (byte) kell másodpercenként. Ha 50 képkocka fut másodpercenként, akkor kb. 440 byte képkockánként.
Egy adat ugye -128 és 127 közötti érték lehet (vagy 0..255), nem tudom a Windows hogy kezeli ezt.
Próbáltam, hogy szinusz függvényt másoltam ebbe a pufferbe. Itt azt tapasztaltam, hogy ha hosszabb a hullám akkor mélyebb a hang, ha rövidebb akkor magasabb. Elméletileg a hullám magassága lenne a hangerő, de itt nem tapasztaltam változást, úgy tűnik csak a hossz számít.
És akkor az a kérdés, hogy a programok által küldött PITCH értékből hogy lesz nekem olyan adat, amit a byte tömbbe töltve nagyjából az a hang szól, aminek szólnia kellene?
Nem akarok (egyelőre) pontos időzítést, tökéletes hangot, csak nagyjából közelítsen az eredetihez.
Van valami "frekvenciaosztó", ezt nem értem mire jó (valami számláló lehet?). Illetve a hang megszakításról sem találtam elég információt, szükség van e erre még pluszban. Ha valaki tud infót ezekről, vagy valahol van leírás erről, esetleg valamelyik topikban volt erről szó akkor írjátok meg, hogy hol és mit tudok elolvasni.
Köszi előre is!