Beszélő Spectrum - beszédszintetizátorok

ZX Spectrum 48/+/128/szürke +2/+2A/+2B/+3 kérdések: hardver, szoftver
Avatar
Zozosoft
Speccyalista
Hozzászólások: 735
Csatlakozott: 2012.01.06. 14:03
Kapcsolat:

Re: Beszélő Spectrum - beszédszintetizátorok

Hozzászólás Szerző: Zozosoft » 2012.01.27. 13:42

Pgyuri írta: A Booty játékot fejtettem vissza teljesen, mert érdekelt mit is tud. Kijavítottam benne egy hibát, meg egy érdekességet találtam (a tipshop-ban megtalálható). Ennek a játénak az volt a különlegessége, hogy volt benne egy hidden game, ami csak úgy jött elő, ha Currah volt a géphez csatlakoztatva.
Talán az egyetlen ilyen program volt.
Ebből a játékból még nincs EP átírat :oops:

A Currah programozási részből mi derül ki, ami az előző találgatásomat tudja cáfolni, vagy pontosítani?

C64-re emlékezve, az ottani beszédszintetizátor nagyon tetszett. Szépen beszélt.
Ott se mindegyik, a korábban linkelt oldalon végig hallgattam a mintákat, tényleg volt ami egész szép, de sok a szokásos "ha tudjuk mit mond, akkor értjük" kategóriás :-)

Avatar
Pgyuri
Speccyalista
Hozzászólások: 499
Csatlakozott: 2012.01.06. 13:34

Re: Beszélő Spectrum - beszédszintetizátorok

Hozzászólás Szerző: Pgyuri » 2012.01.27. 14:16

Üdv,

Hívj be egy emulátort, kapcsold be a Currah emulációt is és ha debugger-be megnézed, láthatod, hogy a ROM más .... az IM rutint is teljesen kicserélték.

A 2Kb ROM is stimmel, $0000-$07FF-ig más minden ... szerintem még lapozgatás sincs. Egy Anson is olvasható benne :) csak nem a tervező neve ?


A Booty-ra célzást értettem :) Mi a teendőm ? A forrás teljesen kommentezve van, rendesen újrafordítható, így EP specifikussá lehet alakítani. A szerzői jogok miatt viszont nem szívesen vésném bele a nevem. Már a Wriggler átírás/fejlesztés is határeset volt.

Pgyuri

Avatar
Asimo
Speccyalista
Hozzászólások: 147
Csatlakozott: 2012.01.09. 18:49

Re: Beszélő Spectrum - beszédszintetizátorok

Hozzászólás Szerző: Asimo » 2012.01.27. 15:23

A forrás teljesen kommentezve van, rendesen újrafordítható
Hoppá! Elérhető ez a visszafejtés? 8-)

Avatar
Zozosoft
Speccyalista
Hozzászólások: 735
Csatlakozott: 2012.01.06. 14:03
Kapcsolat:

Re: Beszélő Spectrum - beszédszintetizátorok

Hozzászólás Szerző: Zozosoft » 2012.01.27. 15:56

Pgyuri írta: A 2Kb ROM is stimmel, $0000-$07FF-ig más minden ... szerintem még lapozgatás sincs.
Aha így már érthető a dolog.
Első ránézésre úgy tűnik a 38H címre lépésre váltakoznak a ROM-ok, elsőnek bejön a CURRAH, majd amikor végzett JP 38H, és ekkor már a az eredeti ROM rutin fut le.
A hangproci piszkálása úgy tűnik az 1000H és 3000H címek környékén történik.
Az is meg van, miért nincs meg a felirat: karakterek grafikája van letárolva, 75BH-tól van a címtáblázat, ami mutatja, hogy az egyes betűkhöz honnan kell másolni a 8x1 bájtnyi képet. A betűk vannak a 0-37H és 798-7FFH területeken tárolva, így a zagyvaságnak látszó bájtok egy része már megoldódott :)

A Booty-ra célzást értettem :) Mi a teendőm ?
Pl. elküldöd egy EP-s ismerősödnek, csináljon már ő is valamit :D amíg te légifarkasozol :D

Avatar
Asimo
Speccyalista
Hozzászólások: 147
Csatlakozott: 2012.01.09. 18:49

Re: Beszélő Spectrum - beszédszintetizátorok

Hozzászólás Szerző: Asimo » 2012.01.27. 16:29

a 38H címre lépésre váltakoznak a ROM-ok
És mi történik, ha IM2-t használ a játék? Nem lesz beszéd? Vagy ebben a ROM-ban nincs semmi, amire egy gépi kódú verziónak szüksége lenne?
Úgy értem, a ROM verzió csak a BASIC kiegészítéseket (gomblenyomás figyelése, spéci változók) és a RAMTOP figyelését végzi, a 65364-es cím figyelését pedig hardverből? Vagy azt is a ROM végzi, pl. ott küldözgeti ki OUT-tal a bájtokat a HW-nek? Mert ha ROM, akkor tényleg ki lehetne nyerni a rutint, ami vezérli az eszközt, és gondolom akkor már IM2-ből is használhatóvá válna...

Avatar
Zozosoft
Speccyalista
Hozzászólások: 735
Csatlakozott: 2012.01.06. 14:03
Kapcsolat:

Re: Beszélő Spectrum - beszédszintetizátorok

Hozzászólás Szerző: Zozosoft » 2012.01.27. 17:01

Asimo írta: És mi történik, ha IM2-t használ a játék? Nem lesz beszéd?
Amennyire eddig látom, így van, nincs beszéd, hacsak nem hívja meg a játék rutinja a 38H-t is.
Vagy azt is a ROM végzi, pl. ott küldözgeti ki OUT-tal a bájtokat a HW-nek? Mert ha ROM, akkor tényleg ki lehetne nyerni a rutint, ami vezérli az eszközt, és gondolom akkor már IM2-ből is használhatóvá válna...
A ROM küldözgeti, de nem OUT-tal hanem memória művelettel. 1000H címen van írás/olvasás, 3000-3001H címeken írás. Ami kérdés, hogy ezek a memória regiszterek elérhetőek-e kivülről valahogy, vagy csak akkor ha a CURRAH ROM van belapozva. És a CURRAH ROM-ot csak a 38H-ról való utasítás végrehajtással lehet belapozni, vagy van más mód is? Ha 74LS IC-kből lenne az áramkör, akkor ezt a kapcsolási rajzból megtudhatnánk, de így nem tudni mi van a cél IC belsejében.

Avatar
Zozosoft
Speccyalista
Hozzászólások: 735
Csatlakozott: 2012.01.06. 14:03
Kapcsolat:

Re: Beszélő Spectrum - beszédszintetizátorok

Hozzászólás Szerző: Zozosoft » 2012.01.27. 17:57

Na itt írják is, ha nem megy az IRQ rutin, akkor megakad a beszélőgép:
Before attempting to LOAD from a tape recorder, it is sensible to
disable the keyvoices, as otherwise you will get a continuous "e"
allophone outputted during the program load. This is due to the tape
handling routines taking complete control of the Spectrum's CPU and
preventing the MicroSpeech from updating its speech buffer. Upon
completion of the LOAD, the "enter" keyvoice is completed normally.

Avatar
Pgyuri
Speccyalista
Hozzászólások: 499
Csatlakozott: 2012.01.06. 13:34

Re: Beszélő Spectrum - beszédszintetizátorok

Hozzászólás Szerző: Pgyuri » 2012.01.27. 21:03

Üdv,

...és mindez a megoldás csak azért, hogy BASIC-ből képes legyen brekegni...hihetetlen.

De hogy feldobjam a labdát, kedves hardverhez értők:

Ha ti kaptátok volna a feladatot 1983-ban, hogy tervezzetek egy beszélő modult, milyen megoldást választottatok volna? Hogyan építettétek volna fel az interface-t és miképp lehetett volna kezelni programokból?

Mert valamiért ez az eszköz nem volt túl népszerű a korai megjelenése ellenére se a programozók között.

Pgyuri

Avatar
Asimo
Speccyalista
Hozzászólások: 147
Csatlakozott: 2012.01.09. 18:49

Re: Beszélő Spectrum - beszédszintetizátorok

Hozzászólás Szerző: Asimo » 2012.01.28. 01:14

A leírás alapján a beszédszintetizátor processzor működése igen egyszerű. Mode 0 üzemmódban csak simán be kell küldeni az adatokat a proci 8-bites bemenetére. Minden egyes bájt előtt nullázni kell ezt a bemenetet. Mode 1 üzemmódban az /ALD lábbal lehet jelezni, hogy a 8-bites bemeneten érvényes adat van. Egyszerre max. 15 bájtot lehet beküldeni. Ha tele van a puffere az /LRQ kiement magas szintje jelzi. Az allofónokat már ismerjük, ezeket kell a bemenetre küldeni. Ami érdekes, hogy van 5 néma hang is, gyk. különböző hosszúságú szünetek (10,30,50,100,200 ms). Úgy nézem, összesen 64 különböző kód van, így a felső két bit kihasználatlan.

Úgy tűnik, a Currah MicroSpeech a Mode 0 üzemmódot használja. A 1000h címet törli majd kiküld oda egy bájtot. A 3000h 3001h címeket nem értem egyelőre. Az látszik, hogy az Intonáció bit alapján dönti el, hogy az allofónt melyik címre írja ki. Az 1000h-es címről olvasással dönti el, hogy írhat-e a proci pufferébe. Bár a leírás szerint csak Mode 1 módban használatos az /LRQ, lehet, hogy itt mégis ezt olvassa vissza. Nem nagyon nézegettem tovább a kódot, de az látszik, hogy a 38h-as címen tényleg azzal kezdi az interfész, hogy megvizsgálja a RAMTOP-ot.

A leütött billentyűk hangját kihagytam volna, bár gondolom ezzel a gyengén látók számára is akartak eszközt. Lehet, hogy a ROM-ot is kihagytam volna, és inkább adtam volna egy rutinkönyvtárat, amit BASIC-hez be lehet tölteni, gépi kódhoz meg assembly forrást adnék. Az adatokat out-tal küldeném ki, persze figyelni kell az időzítésre/folytonosságra, különben szakadozni fog a beszéd. De tesztelés nélkül ez csak okoskodás. Ráadásul, így ez már egy kevésbé sokrétű és profi eszköz lenne.

Avatar
Zozosoft
Speccyalista
Hozzászólások: 735
Csatlakozott: 2012.01.06. 14:03
Kapcsolat:

Re: Beszélő Spectrum - beszédszintetizátorok

Hozzászólás Szerző: Zozosoft » 2012.01.28. 12:06

Asimo írta: A leütött billentyűk hangját kihagytam volna, bár gondolom ezzel a gyengén látók számára is akartak eszközt.
Erre én is gondoltam, viszont van egy nagy hiányosság, ami miatt erre a célra alkalmatlan az eszköz: a hibaüzeneteket nem olvassa fel! Valamint időnként mondja, hogy ready, de a kurzortípusokat nem különbözteti meg.

Így ezek a beszélő gombok csak egyfajta demónak fogható fel, hogy hallja a felhasználó, kellő kitartással érthető szavakat is elő lehet csalogatni :) mivel a programozás nem olyan túl egyszerű. (Az EP-s beszélődoboznál kapunk egy SAY$() Basic függvényt, ami a megadott szöveget lefordítja allophone-okra, a kommunikáció meg a printer porton történik, egyszerű LPRINT-tel, tehát pl LPRINT SAY$("Hello"), így egész hamar sikerélményhez juthat a felhasználó :) )

Válasz küldése

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég