Emulace Sound Blasteru v DOSu - heuréka!

      21.7.2018 O nefunkční emulaci Sound Blasteru v DOSových ovladačích od Creative pro zvukovky SB Live! a Audigy jsem se zmiňoval již dříve. Problém je v tom, že ovladače pro odchytávání legacy I/O přístupů potřebují funkční routování PCI signálu SERR# na NMI procesoru, které se z nových základních desek někam vytratilo, protože si asi návrháři MB mysleli, že už to nebude nikdo k ničemu potřebovat. Buď chybí přímo fyzicky spoj na MB nebo není routování nakonfigurované v chipsetu. Pro druhý případ jsem napsal utilitu SERREN, která někdy aspoň zprovozní FM syntézu (cvrdlikání přes Adlib). V případě mé základní desky Gigabyte GA-P67-DS3-B3 mi to ale stejně nepomohlo, zvukovka je úplně němá, ani ji žádný program nedetekuje. Zkoušel jsem ještě SERREN upravit tak, aby zapnul SERR# routování i na onboard PCIe -> PCI můstku IT8892E, avšak nebylo to nic platné. Stejně by to ale neřešilo nefunkční samplovaný zvuk, který vyžaduje funkční DMA, jehož emulace na nových deskách také nefunguje (ani nevím, jakým způsobem je to řešeno). Patrně poslední chipsety, kde ještě v těchto ovladačích emulace SB fungovala, byla řada intel 8xx, na novějších chipsetech s PCIe už prostě smůla. Zkoušel jsem také další PCI zvukové karty ForteMedia FM801 a C-Media CMI8738, které mají SB emulační ovladač pro DOS, ale bez úspěchu. UPDATE: nakonec se mi povedlo rozběhnout starou ISA zvukovku přes vlastní LPC2ISA adaptér, další možností je nový softwarový emulátor SBEMU pro DOS.
      Již jsem nevěřil, že by se našlo nějaké funkční řešení SB emulace v DOSu na nových MB, ale kupodivu někdo na fóru VOGONS před 2 lety objevil funkční zvukové karty od Yamahy s chipy YMF72x a 74x na PCIe chipsetu intel 965 a později také Aureal Vortex (2) - chipy AU88xx. Dále byla ověřena funkčnost i na novějším PCIe chipsetu intel x58 pro Core 1. generace (Nehalem) a úspěšně otestována více než stovka DOSových her. Tento chipset má na rozdíl od P67 ještě nativní PCI sběrnici, takže jsem byl zvědavý, jestli to bude fungovat i u mě přes PCIe to PCI můstek. S Ruthanem jsme si již předtím vyměňovali nějaké informace ohledně zvuku pod DOSem a tak nebyl problém se zapůjčením karty na testování, kterou jsem si v pátek v noci přivezl domů.
      V sobotu jsem kartu s čipem YMF744B s napětím strčil do PCI slotu mé základní desky a nainstaloval ovladače. Pro úspěšné zprovoznění v DOSu je potřeba splnit pár podmínek. Inicializační program setupds.exe používá extender DOS/4GW, který má problém s 4 GB RAM. Zkoušel jsem jak původní dos4gw.exe verze 1.97, který vyhodil paradoxní chybu: "DOS/4GW fatal error (1307): not enough memory", tak novější dos4g.exe verze 2.61, který též zkolaboval s chybou: "DOS/4G fatal error (1010): can't initialize loader LINEXE_LOADER [1]". Bylo tedy třeba omezit velikost XMS paměti na 2,5 GB či méně. Záhy jsem zjistil, že další potřebný program dsdma.exe (rezidentní emulátor legacy SB s podporou DMA) při zavedení ihned restartuje PC, pokud je XMS více než cca 704 MB, takže jsem nakonec velikost XMS omezil na 512 MB. Toho lze docílit např. použitím správce paměti himemx.exe s parametrem /MAX=512M, celý řádek do config.sys:
DEVICE=C:\DOS\HIMEMX.EXE /MAX=512M /METHOD:FAST /VERBOSE
      Další háček je v tom, že rezident dsdma.exe vyžaduje správce paměti s podporou VCPI, který přepne CPU do virtuálního režimu v86, jinak vyhodí chybu: "Program could not load. This program requires an expanded memory manager such as EMM386.EXE with VCPI support". Je možné použít EMM386 (i v kombinaci s UMBPCI) s podporou EMS:
DEVICE=C:\DOS\UMBPCI.SYS
DEVICEHIGH=C:\DOS\EMM386.EXE FRAME=NONE RAM D=64 HIGHSCAN AUTO VERBOSE
nebo bez podpory EMS:
DEVICE=C:\DOS\UMBPCI.SYS
DEVICEHIGH=C:\DOS\EMM386.EXE NOEMS D=64 HIGHSCAN AUTO VERBOSE
A nebo Quarterdeck QEMM386, který sám neumí více jak 256 MB XMS, takže ho ani není třeba omezovat (parametry jsou specifické pro moji HW konfiguraci a nejsou tedy přenositelné):
DEVICE=C:\QEMM\QEMM386.SYS RAM ROM XBDA:N ARAM=B000-B7FF X=F000-FFFF X=C000-CFFF RF ST:M
Také jsem experimentoval moderním správcem paměti JEMMEX, ale při spuštění nějaké pmode hry jsem vždy dostal chybu: "DOS/16M error: [17] system software does not follow VCPI or DPMI specifications Spawn Error: Error 0" Později jsem přišel na to, že je třeba vypnout podporu rozšíření VME parametrem NOVME:
DEVICE=C:\DOS\JEMMEX.EXE A20METHOD:FAST XMSHANDLES=96 MAXEXT=512M MIN=32M MAX=64M NOVME VERBOSE
Bohužel některé hry či dema nejsou kompatabilní (nebo používají nesnášenlivé extendery) s režimem v86 a pak takový pokus o spuštění programu končí zátuhem nebo restartem PC. BTW později jsem zjistil, že dsdma.exe instaluje do paměti rezidentní 32-bitový DPMI 0.9 server a zlikviduje kompletně VCPI služby. Dostupná paměť přes DPMI závisí na použitém manažeru (patrně dle velikosti VCPI paměti, kterou nabízel) EMM386 (32 MB) nebo JEMM386 (60 MB), což pro starší hry v pohodě stačí.
      V souboru autoexec.bat jsem pak měl tyto řádky pro zavedení ovladače:
SET BLASTER=A220 I5 D1 T4
C:\DS-XG\setupds.exe /S
C:\DS-XG\dsdma.exe
Extender dos4gw.exe mám umístěný v systémové cestě PATH. Po spuštění setupds.exe bez parametru je možné ověřit funkčnost zvukové karty. Měl jsem tam aktivní akorát položky pro nativní zvuk a FM syntézu (oboje přehrálo čistě ukázkový zvuk), položka SB emulace byla zašedlá. Vyzkoušel jsem verze 3.14, 3.15 a 3.16 a všechny se chovaly stejně. Nastavení je uloženo v souboru ds.ini. Když jsem tam manuálně zeditoval např. hodnotu parametru SBIRQ, tak ovladač změnu patrně nereflektoval (alespoň ne ve výpisu), nicméně doporučuju nastavit SBIRQ na jinou hodnotu než INTAIRQ (PCI přerušení). Později jsem také napsal jednoduchou DOSovou utilitu YMF7XX na zapnutí S/P-DIF výstupu.
      Ve zbylém čase následovalo testování v několika hrách a demech, které mám trvale na disku. Výsledky jsou docela dobré, akorát jsem narazil na problém u her, které implicitně používají Sound Blaster Pro (např. Doom), kde se v samplovaném zvuku objevovalo jakési praskání. U her, kde šlo v nastavení změnit typ DSP na Sound Blaster 16 nebo Sound Blaster 2.x byl zvuk v pohodě. Také celkem nepřekvapivě nefungovala wavetable syntéza, protože karta nemá žádnou vlastní soundfont ROM či RAM, pouze fungovala FM syntéza Adlib či Sound Blaster. To se dá ale řešit přes externí DreamBlaster. Už se mi podařilo sehnat 2 čipy SAM2695 z Belgie a postavím si vlastní DreamBlaster přímo do gameportu. Při testování jsem zkusil natočit narychlo video: část 1., část 2. (zvuk je snímaný mikrofonem ve foťáku, takže za kvalitu se omlouvám). Zde jsou shrnuty výsledky testovaných her a demíček:

program/karta YMF744B SFX
MS-DOS 6.22
YMF724F SFX
MS-DOS 6.22
AU8820B2 SFX
MS-DOS 6.22
AU8820B2 SFX
Win98 SE
AU8830 SFX
MS-DOS 6.22
music (FMS)
MS-DOS 6.22
SBEMU 5.4.2023
MS-DOS 6.22
SFX/music
Blood OK (SB16), praskání s SB Pro OK OK OK OK OK OK / OK
Commander Keen - OK OK OK OK OK OK / OK
Doom 1 praskání ve zvuku OK OK OK OK OK OK / OK
Doom 2 praskání ve zvuku OK OK OK OK OK OK / OK
Duke Nukem 3D OK (SB16), praskání s SB Pro OK OK OK OK OK OK / OK
Dyna Blaster OK OK OK nelze spustit OK OK OK / OK
F-22 Lightning II - OK - - - - nedetekuje SB
Quake praskání ve zvuku OK OK OK OK n/a OK / n/a
SandWarriors OK (SB 2.x), praskání s SB Pro OK OK OK OK OK setup OK / game HDPMI error
Wolfenstein 3D OK OK OK OK OK OK OK / OK
DosAmp - - - - - n/a OK 3
DSS Player - OK - - - n/a nedetekuje SB
FastTracker II - DPMI error - - - n/a X / n/a
Impulse Tracker - OK - - - n/a OK / n/a
Inertia Player - OK - - - n/a OK / n/a
MikMod Player - OK - - - n/a OK / n/a
Open Cubic Player - zatuhne - - - n/a OK, skáče obraz 4
OpenMPT123 - OK - - - n/a JEMM crash
TetraMED - OK - - - n/a totální zkreslení
XTC Player - zatuhne - - - n/a nedetekuje SB
RealSpectrum - - - - - - OK / n/a 5
Amnesia - nelze spustit - - - - nelze spustit
Blind - OK - - - - X / n/a
Boost zatuhne zatuhne OK 1 OK OK n/a X / n/a
Crystal Dream - zatuhne - - - - X / n/a
Crystal Dream 2 - nelze spustit - - - - nelze spustit
Cyboman 3 - zatuhne - - - - zatuhne
Cyboman 4 - OK - - - - OK
Dejavu - OK - - - - X / n/a
Delusion - OK - - - - zatuhne
Dimension - OK - - - - X / n/a
Dream OK (SB16), praskání s SB Pro OK OK 2 OK OK 2 n/a JEMM crash
DX Project - nelze spustit - - - - zatuhne
Hyla - zatuhne - - - - X / n/a
Jump - zatuhne - - - - X / n/a
Lamer - OK - - - - praskavý zvuk
Second Reality OK (SB mono), praskání s SB Pro OK zatuhne nelze spustit zatuhne n/a zrychlený zvuk
The Fulcrum - OK - - - n/a X / n/a
Vlak by MovDS - - - - - - OK / n/a 5
1 - někdy se zvuk v průběhu přehrávání zasekne a opakuje dokola poslední DMA buffer
2 - pouze při nastavení SB DSP 2.00 - 3.xx, 8-bit, mono, sem tam zvuk přeskakuje
3 - SBEMU přehrává 44 kHz MP3 poloviční rychlostí, s parametrem -downsample hraje OK na 22 kHz
4 - obraz ruší periodický debug výpis z HDPMI32I, s upravenou verzí obraz neskáče
5 - před spuštěním programu nutno spustit utilitu setpvi.exe
"X" - program běží bez zvuku, "n/a" - program nepoužívá FM syntézu, "-" - netestováno

      Tyto výsledky jsou pro mě rozhodně zajímavé a pokusím se nějakou takovou zvukovku získat. Bohužel ty nejlevnější se nabízí zrovna v Americe, kde poštovné přesahuje cenu samotné karty (a ještě k tomu clo). Na českých bazarech jsem neobjevil vůbec nic. Další zajímavá informace přišla od uživatele agent_x007 z VOGONS, který úspěšně otestoval demo Boost na zvukové kartě Aureal Vortex 2 a chipsetu intel x58. Tyto karty totiž používají ovladač, který řeší emulaci DMA nějakým jiným způsobem, jenž nevynucuje "problémový" režim v86. Tyto karty se také obecně prodávají za vyšší ceny než Yamahy. Z hlediska funkcionality pod DOSem by mělo být jedno, jestli je to starší Aureal Vortex (AU8810/AU8820) nebo novější Aureal Vortex 2 (AU8830).
      Ruthan také vyzkoušel svou Yamahu v novější základní desce Gigabyte s chipsetem intel Z97 bez nativních PCI slotů a fungovala mu jen FM syntéza. Taktéž byl problém, pokud se zvukovka připojila do PCIe slotu MB s chipsetem intel x58 přes externí PCIe to PCI můstek Pericom. Ve výpisu PCI konfiguračních registrů jsem si všiml, že externí můstek neměl zapnuté subtraktivní dekódování (v mém případě ho onboard můstek ITE zapnuté má), takže se domnívám, že pokud by se zapnulo, mohlo by to třeba fungovat. UPDATE: Ruthan už sehnal i Aureal Vortex a začal testovat. Další relevantní vlákna na VOGONS: Sound Blaster Emulator for Dos?, Is there PCI-E soundcard with working DOS SB driver?, PCI sound cards and Chipsets from various manufacturers... Which PCI Sound Card for DOS (SB, FM and General MIDI)?
      UPDATE: Ruthan úspěšně otestoval funkčnost zvukovek Yamaha YMF7xx a Aureal Vortex na novější základní desce Gigabyte GA-X79-UP4 se socketem LGA 2011 pro HEDT procesory Sandy Bridge-E a Ivy Bridge-E. PCH chipset intel X79 má ještě nativní podporu PCI 2.3 slotu, ale deska už má AMI UEFI, což ukazuje, že samotné UEFI není obecně překážkou kompatability.

      28.4.2022 Sehnal jsem základní desku Gigabyte GA-H97-HD3 rev. 1.1 s 2 PCI sloty a tak jsem otestoval, zda-li v ní bude fungovat zvukovka Yamaha YMF744 pod DOSem. PCI sloty jsou řešeny přes stejný PCIe -> PCI můstek IT8892E jako na mé základní desce Gigabyte GA-P67-DS3-B3. V UEFI setupu jsem povypínal všechny zbytečnosti nechal aktivní pouze legacy funkce. Ovladač zvukovku zinicializoval, zavedl se i dsdma.exe, testovací WAV se v nativním režimu v setupds.exe přehrál taky, ale emulace SB SFX nefunguje. Všechny hry, co jsem zkoušel, tak zatuhnou při spuštění, např. Doom vytuhne ve fázi "S_Init: Setting up sound". Funguje akorát FM syntéza. Zkoušel jsem ještě měnit správce paměti a přendat zvukovku do druhého PCI slotu, ale nemělo to žádný efekt. Zatím tedy poslední chipset, kde to ještě funguje, zůstává X79.

      7.8.2018 Dnes mi dorazil balíček z Polska se zvukovou kartou Yamaha YMF724F, kterou jsem našel na Allegru. Nyní se tam zrovna nabízí Yamaha YMF744 XP za 15 Zlotých. Kartu jsem nadšeně strčil do druhého PCI slotu vedle SB Audigy místo TV tuneru. K žádné kolizi prostředků nedošlo, nechám si tedy v PC obě zvukovky. Audigy budu nadále používat ve Windows, Linuxu a pár DOSových programech s nativní podporou a Yamahu pro SB emulaci v DOSu. Ve Windows jsem jí zatím ve správci zařízení zakázal. Oba výstupy mám připojené k zesilovači přes přepínač. V DOSu jsem použil stejné ovladače a nastavení jako při předchozím testu YMF744B. Příjemně mě překvapilo, že u YMF724F se neobjevuje ve zvuku žádné praskání při nastavení SB Pro ve hrách. Zkoušel sem kartu v obou PCI slotech i bez SB Audigy a prostě nepraská, hraje čistě. Ze zvědavosti jsem kartu vyzkoušel ještě ve 3 dalších základních deskách. Zatím co v Gigabyte GA-H55M-S2 s nativními PCI sloty fungovala YMF724F správně, tak na platformě AMD Asus M4A79XTD EVO a Gigabyte GA-MA790GP-DS4H sice setupds.exe správně kartu rozpoznal a TSR dsdma.exe se bez chyby zavedl, ale zvukovka pak nevydala ani hlásku. Ani testovací zvuky v setupds.exe nešly přehrát (menu v programu bylo neaktivní).

Yamaha YMF724F-V PCI

      3.9.2018 Dostal jsem jednu Yamahu YMF744B s upadlým blokovacím kondenzátorem na napájení PVDD. Karta fungovala i bez něj, ale pro pořádek jsem tam připájel 1 µF keramiku 0603. Znovu jsem kartu přezkoušel a potvrdilo se, že YMF744B v Doomu 1 a 2 praská a také všude tam, kde se vybere typ karty SB Pro. Po výměně zvukovky zpět za mou YMF724F praskání zmizelo. Nevím, čím to je, ale na jiných (starších) základních deskách to nepraská.

Yamaha YMF744B-R PCI

      5.9.2018 Dnes mi dorazil balíček z Ruska se zvukovou kartou Diamond Aureal Vortex AU8820B2, kterou jsem koupil přes eBay. Ovladače jsou ke stažení zde. Pro DOS stačí zavést TSR asp4dos.com, který funguje i v reálném módu a nepotřebuje žádnou podporu EMS/XMS, ale nevylučuje se s nimi. Pokud není k dispozici UMB, tak TSR sežere 37 kB dolní paměti, což může být v některých případech problém. TSR načítá nastavení z textového souboru vortex.ini z adresáře Windows (dle systémové proměnné WINBOOTDIR), ale k dispozici je i patchnutá verze pro samotný DOS, jenž se řídí systémovou proměnnou VORTEXINI, kterou si lze libovolně nastavit. Nastavení v INI souboru lze upravit buď ručně (důležité jsou zejména proměnné PCIIRQ - skutečné IRQ PCI karty, SBFMIRQ - emulované IRQ SB, SBFMDMA, SBFMDMA2, SBFMBase, FMBase a MPU401Base) nebo pokud máte nainstalované i Windows 9x, tak nainstalovat windowsí ovladač a nechat nastavení na něm. Pod Windows navíc funguje wavetable syntéza (využívá 5MB banku samplů aurealgm).

nastavení SB Pro emulace ve Windows 98 SE

nastavení wavetable syntézy ve Windows 98 SE

      Otestoval jsem znovu hry a dema uvedená v tabulce výše. Všechny hry fungovaly, ale nepodařilo se mi rozběhnout demíčka Dream a Second Reality. Vyzkoušel jsem několik konfigurací správců paměti (JEMMEX, QEMM386, HIMEM + UMBPCI + EMM386 EMS/NOEMS, HIMEM + UMBPCI, HIMEM a bez) s minimem dalších driverů a TSR, ale vždy došlo k zatuhnutí při startu dema. Akorát demo Boost fungovalo se zvukem, ale občas se stalo, že se třeba po 30 s od spuštění zvuk zaseknul (neustále se opakoval dokola poslední obsah DMA bufferu) a obraz běžel dál. Paradoxně pod Windows 98 SE fungovala emulace SB lépe, povedlo se mi tam rozběhnout i demo Dream. Second Reality mi nešlo spustit zřejmě z důvodu nekompatability s Windows. Další poznatek je ten, že Aureal Vortex má opravdu hnusný zvuk FM syntézy, horší sem ještě neslyšel. Yamaha nebo ESS zní o dost lépe. U her podporujících General MIDI to naštěstí řeší DreamBlaster.

Diamond Aureal Vortex AU8820B2 PCI

      15.12.2018 Ruthan mi zapůjčil na vyzkoušení zvukovou kartou Aureal Vortex2 AU8830. Nic moc jsem si od toho nesliboval, což se mi také potvrdilo. Nainstaloval jsem ovladače a znovu otestoval hry a dema uvedená v tabulce výše. Karta se chovala prakticky stejně, jako její předchůdce Aureal Vortex AU8820B2, v kvalitě FM syntézy jsem nepoznal žádný podstatný rozdíl. Snad jediná výhoda je, že tahle karta má header na WaveBlaster.

Aureal Vortex2 AU8830 PCI

OpenSource SBEMU software pro DOS

      10.3.2023 Na VOGONS fóru jsem našel zajímavý projekt SBEMU uživatele Crazii, který emuluje zvukovky SB 1.0, 2.0, Pro a 16 na moderních zvukových čipech intel AC'97, HDA, nVidia nForce, VIA VT8233, VT82C686, SB Live! a Audigy pod DOSem v reálném i chráněném režimu. Autor využil kódy ovladačů zvukovek z populárního DOSového přehrávače MPXPlay, které jsou portované z Linuxu. Pro podporu v RM je třeba použít JEMM386 verze 5.74 (a novější), do které Japheth přidal podporu I/O trap API (QPI) a loadnout JLM qpiemu.dll nebo použít QEMM386. Pro podporu v PM je potřeba loadnout upravený DPMI server hdpmi32i.exe (parametr r ho zavede trvale jako rezident, parametr x limituje paměť na 256 MB kvůli některým starým programům, které při detekci více paměti crashnou). Podobě zřejmě funguje i yamahácký ovladač dsdma.exe s integrovaným DPMI serverem. Zdrojáky i binárky jsou ke stažení na GitHubu. Zde je článek od Sledgeho a Philovo video s testy různých her. Mě bohužel SBEMU na MB Gigabyte GA-P67-DS3-B3 nefunguje, sice detekuje mou SB Audigy, ale následně zatuhne s chybou: "Internal stack overflow, System halted". Japheth na tento problém taky narazil a zmiňoval, že je problém v pořadí vykonávání funkcí v SBEMU, kdy dojde k povolení přerušení dříve, než je nainstalována ISR. Čekám tedy, až to Crazii zapracuje do oficiální verze.

      19.3.2023 Crazii vydal aktualizovanou verzi SBEMU 1.0 beta 2b, která opravuje problém s IRQ na SB Live! a Audigy. Také přibyla funkce pro výpis detekovaných zvukovek (parametr /scl) a možnost vybrat si požadovanou (parametr /sc <n>). Takže nyní se mi už SBEMU loadne korektně a první rychlý test v Doomu proběhl úspěšně, SFX i hudba hraje OK, bez sekání či praskání. Avšak v Dynablaster či demo Boost nehraje vůbec. Postupně budu testovat dále a výsledky doplním do tabulky výše. UPDATE: v beta 2c byla opravena chyba detekce Sound Blasteru ve hře Dynablaster.


jload.exe C:\DOS\PLUS\qpiemu.dll
JLoad: 'C:\DOS\PLUS\qpiemu.dll' loaded successfully.		      

hdpmi32i.exe -r -x
HDPMI32 now resident						      

sbemu.exe /k44100
00:00:00.000 sc_sbliv.c   1250 SB sound card: 4 3 531102	      
Found sound card: SB Live!/Audigy				      
Real mode support: enabled.					      
Protected mode support: enabled.				      
OPL3 emulation enabled at port 388h.				      
Sound Blaster Pro emulation enabled at Adress: 220, IRQ: 7, DMA: 1    

set BLASTER=A220 I7 D1 T5

      23.11.2023 Uživatel Thomas Perl vytvořil fork SBEMU-X, který přidává podporu dalších zvukovek, přehrávání CD audio, volitelné debugování přes sériový port a možnost multiplatformní kompilace z Windows, Linuxu a MacOS.

      26.3.2024 Japheth vydal novou verzi svého SB emulátoru VSBHDA 1.4 (fork SBEMU), která nově podporuje i 16-bitový chráněný režim, takže si můžete zahrát nativně se zvukem třeba hru Tyrian 2000. Na mojí SB Audigy hraje výstup s VSBHDA velmi potichu i při nejvyšší nastavené hlasitosti, musel jsem pořádně vyhulit volume na zesilovači. Také pozor na to, že verze DPMI serveru hdpmi32i.exe dodávaná s VSBHDA není kompatabilní s SBEMU, je tedy dobré mít pro každý SB emulátor odpovídající verzi separátně.

DreamBlaster - wavetable syntéza do game portu

      28.8.2018 Problém ošklivé FM syntézy a chybějící wavetable syntézy se dá řešit pomocí externího MIDI syntezátoru jako např. Roland Sound Canvas, který se dá připojit přes rozhraní MPU-401 MIDI skoro ke každé zvukovce s game portem. Na 15-pinovém game portu je pin 12 využit jako výstup UARTu MIDI out a pin 15 jako vstup MIDI in. Na pinech 1, 8 a 9 je navíc k dispozici napájecí napětí 5 V. Rychlost je 31250 baudů a posílají se tam MIDI příkazy jako zapni notu x, vypni notu y atd. Napěťová úroveň na výstupu není přesně definovaná (důležitá je proudová budicí schopnost), záleží jakým napětím je napájen zvukový čip na kartě z kterého výstup jde. V případě YMF724 je to 3,3 V.
      Ještě poznamenám, že kdysi některé karty podporovaly MPU-401 "intelligent mode" s dalšími funkcemi, které využívaly nějaké staré hry. Novější zvukové karty už mají MPU-401 jen v UART režimu. V případě potřeby lze funkcionalitu "intelligent mode" získat pomocí rezidentního OpenSource programu SoftMPU pro DOS, který podporuje tyto zvukové karty a nebo pro slabší PC lze pořídit HW řešení HardMPU v podobě 8-bitové ISA karty s MCU ATmega1284P či karty PCMIDI.

MIDI UART data out oscilogram

      Jelikož takový synťák od Rolandu je velká a drahá krabice, tak francouzská firma Dream vyvinula vlastní jednočipové řešení v podobě integrovaného obvodu SAM2695 (a dalších). Tento obvod obsahuje 0,5 MB banku samplů, efektový DSP (umožňující 64-hlasnou polyfonii, reverb, chorus, prostorový efekt a 4-pásmový ekvalizér), stereo DAC a pomocný analogový mikrofonní vstup. Čip je v poměrně mrňavém pouzdře QFN48 (6 x 6 mm; 0,4 mm pitch), napájený z 3,3 V (MIDI vstup je 5V-tolerantní) a s typickým odběrem 18 mA. Je použitý např. v daughterboardu WaveBlaster za 35 euro, který lze osadit na pin header karet Sound Blaster. Obě mé zvukové karty Yamaha 724 a 744 však takový header nemají a na Aureal Vortexu se s ním sice počítalo, ale zůstal neosazený (spolu s dalšími součástkami). Navíc se mi cena zdá poněkud vysoká, takže jsem se rozhodl navrhnout si vlastní univerzální DreamBlaster do game portu, který se vejde do krytky konektoru Cannon. Jeho výstup se jednoduše propojí jack-jack kablíkem do line-in vstupu zvukovky a v mixéru se nastaví vhodná hlasitost. U her se v setupu vybere místo Adlib či FM syntézy General MIDI nebo MPU-401 a jede se. Pokud by někdo chtěl zároveň používat gameport i pro joystick, dá se snadno vyrobit rozdvojka, kde se na druhý konektor pro DreamBlaster vytáhnou 3 dráty (5 V, GND a MIDI out).
      Sehnat čipy SAM2695 nebylo úplně jednoduché (v běžných obchodech se součástkama je vůbec nevedou a na eBay jsou předražené). Nakonec jsem ale sehnal pár kousků od jednoho maníka z Belgie, kterému jsem na oplátku poslal jeden osazený DreamBlaster. Schéma zapojení je celkem minimalistické, vycházející z datasheetu. Napájení je řešeno mým oblíbeným 3,3V LDO TLV70033 z 5V výstupu game portu. Pro analogovou část je napájení ještě lehce filtrováno RC článkem R1 - C9. Výstupní napětí vnitřního 1,2V regulátoru lze zkontrolovat na pinu 34, resp. C16 a C17. Po zapnutí je aktivní sériové rozhraní MIDI IN na pinu 16 a paralelní rozhraní je neaktivní.

schéma DreamBlasteru

      Vytvořil jsem layout 2-vrstvého plošného spoje, který jsem poslal do výroby čínskému AllPCB, neboť jsem se dozvěděl, že tam teď mají dopravu DHLkem zdarma při ceně 10 $ za 5 ks destiček do velikosti 5 x 5 cm. Abych využil možnou plochu, přifařil jsem k zakázce ještě druhý plošňák na spínaný snižující měnič s LM43603, takže výsledná velikost byla 75 x 33 mm, což pořád spadalo do 10$ kategorie. Za 3 dny už byla zakázka vyrobená a odeslaná. Za další 2 dny dorazila do ČR, ale jelikož jsem byl zrovna mimo, vyzvednul jsem ji později. Po rozbalení (dorazilo 6 ks PCB) můžu říct, že kvalita je na velmi slušné úrovni, pouhým okem jsem nepoznal rozdíl např. od Pragoboardu. Za ty prachy s takhle rychlou dopravou je to fakt paráda, to už asi nebudu doma nic osvětlovat přes fólii a leptat (vyjma jednoduchých PCB, které instantně načmárám lihovkou :).

DreamBlaster PCB layout panelizace 2 PCB pro zakázku v AllPCB vyrobené destičky z AllPCB vyrobené destičky z AllPCB osazený DreamBlaster - top osazený DreamBlaster - bottom
PCB layout GERBER panelizace vyrobené PCB vyrobené PCB osazený PCB osazený PCB

      Destičky jsem rozřezal, zapiloval okraje a hned jednu na zkoušku osadil. Obvod SAM2695 jsem připájel regulovanou horkovzdušnou pistolí, zbytek klasicky mikropájkou. Nenarazil jsem na žádné podstatné chyby a DreamBlaster fungoval na první zapnutí. Rozdíl proti FM syntéze je opravdu znát, viz ukázková videa: test s Doomem, test s Duke Nukem 3D.



Zpět

Aktualizováno 27.3.2024 v 2:49