Konference: Počítač SHARP MZ-800 a emulátory

Od: Zdenek Adler
Datum: 21.5.2013 16:14
Předmět: Re: Bohousova Madonna


Ahoj Bohouši,
 
díky za technické detaily, myslím že nejsem jediným, kdo si je rád přečte. Máš poměrně dost zajímavých nápadů, které by Ti leckterý programátor mohl závidět.
Sám na plnou hubu přiznávám, že emulátor zase tak dokonalý není a za mnoho věcí jsem kamenován už víc jak jedno desetiletí Veselý obličej Nebýt podobných programů (využívajících možností Sharpa ne zrovna předpisově) jako je  ten Tvůj, tak bych asi emulátor nikdy nedotáhnul do podoby v jaké je. Na druhou stranu, 90% všech uživatelů je asi šťastných, jen když uvidí a uslyší Flappyho Veselý obličej
Rozhodně ale děkuju za inspiraci a podklady k dalšímu vylepšování. Třeba mě to ještě vyprovokuje k opravě emulátoru Veselý obličej
 
Zdeněk
 
 
Sent: Tuesday, May 21, 2013 3:20 PM
Subject: Re: Bohousova Madonna
 

Zdar chlapi,

  ok, příště se polepším, všechno hazím sem :-)

No ale jak zmínil Zdeněk, limity možností Sharpa jsem využil tak z 25%, umí víc a rychleji.
Ano dokonce jsem si mohl dovolit ten luxus použít instrukci INIR místo série instrukcí INI,
no jenom pro zvuk, pro video tam ty INI mám :-)

Tohle demo vzniklo tak trošku jako vedlejší produkt při testování rychlosti a nových vlastností unikarty.
S "klasickým" hardwarovým ramdiskem to běží bez problémů, nedělá totiž wait stavy. Problém vzniká
v unikartě, kde je ramdisk emulovaný přes souborový systém, takže je okamžitě dostupný obsah pouze
vyrovnávací paměti (512 bytů), pokud chci jinou oblast, musím počkat na seek v souboru a načtení
nového obsahu. Sekvenční čtení pak vypadá tak, že pro prvních 511 čtení dostanu data okamžitě
(no nebo s minimem wait stavů, třeba 1 nebo 2) a 512té čtení se z! asekne třeba s 3000 wait stavy.
Cca 1ms zaseklý procesor, to je pro přehrávání zvuku nepoužitelné.

Proto jsem zkusil takovou obezličku, po přečtení 512tého znaku se wait stavy nekonají a načtení dalšího
sektoru se provádí v unikartě na pozadí. Pokud těch následujících 3000 hodin procesoru nic po unikartě
nechci, v klidu dočte nový sektor a je schopná mi na další vyžádání opět vracet data bez extra wait stavů.
Pokud si vzpomenu dřive jak po těch 3000 hodinách, tak si holt počkám ve wait stavech, dokud se data
nedočtou, jak to bylo dřív. Pokud s tím tedy aplikace počítá, může běžet bez časového omezení ze strany
emulovaného ramdisku. Samozřejmě to snižuje maximální prostupnost ramdisku, protože musím
na konci každého sektoru čekat než se načte nový sektor, ale nečeká ve wait stavech, může provádět
něco jiného (třeba přehrávat hudbu).

Z toho vyplývá odpově! na použití API repozitáře karty. Ačkoliv je rozhraní karty streamové, fyzicky čte
z SD karty opět po sektorech, takže máme stejný problém, 511x čtení ok, po 512té tisíce wait stavů.
Takže by se to sekalo (minimálně zvuk, na tom by to bylo poznat velmi). Šlo by opět udělat tu obezličku,
co jsem udělal pro ramdisk a pak by to s tím, že musí aplikace počkat než začne vyčítat další sektor,
šlo vyřešit, ale zase za cenu ztráty průměrné rychlosti vyčítání.

Stran použití RLE komprese pro případ podobných dat je to dobrý nápad, bohužel s emulovaným ramdiskem
to opět naráží na to, že snímky musí být zarovnané na 512 bytů, a to se to zase trošku (dost) komplikuje.

No nakonec k vlastnostem mz8win. Bohužel na jinak dokonalém (sám jsem šťastným uživatelem) emulátoru
jsou malé odlišnosti, no nutno přiznat, že s tím má problém akorát to moje demo :-)
Takže čím jsem vyp! rovokoval emulátor k odlišnostem od reálného Sharpa:
1) přerušení od i8253 čítač 0 mód 2 je dvakrát pomalejší než v reálu (kterej blbec, kromě mě, používá 11 tisíc
přerušení za sekundu :-)
2) Potřeboval jsem pomocí změny jednoho 8bitového registru přepnout scrollování o 100 řádků (nechtěl jsem
se piplat se synchronizací na vertikální synchronizaci a dělat to mimo zobrazovanou plochu). SOF pro 100
řádků je na dva zápisy, to po prvním zápisu rozhodilo obraz. Takže to dělám jen nastavením registru SSA.
Všechno nastavím na posun o 100 řádků: SSA=0, SEA=7D, SW=7D, SOF=1F4 a když nechci scroll, tak jen
přepnu SSA=7D. Mno je to prasárna, ale podle servisního manuálu to smysl dává a fakt to funguje.
Emulátor bohužel scrolluje dál. No mohl jsem udělat detekci emulátoru a upravit to tak, ať to hraje dobře i tam,
ale stejně je tam omezení na 1MB ramdisk.
Jenom pokud někdo tápe proč scrolling na video, tak protože je počet snímků za sekundu malý (6,25 - by člověk
neřekl, že tak málo, když to vidí na vlastní oči), sestavuje se obraz z jednotlivých barevných rovin na přelomu
stránky a teprve až je kompletní, tak se odscrolluje na střed a tak dokola, díky tomu obraz v prostřed nebliká
(narozdíl od těch podivností nahoře a dole).

Tolik ve zkratce :-)
Díky za podporu, za výdrž pokud jste dočeli až sem a omlouvám se netechnikům za mraky technických podrobností.

Zatím
Bohouš

---------- Původní zpráva ----------
Od: Zdenek Adler (sharpemu tu byla ta zakroucena vec pandora.cz) <zdeneka tu byla ta zakroucena vec seznam.cz>
Datum: 17. 5. 2013
Předmět: Re: Bohousova Madonna


Bohouš se s tím jistě chtěl pochlubit, až to rozchodí přes celou obrazovku při 25-ti snímcích za sekundu Veselý obličej Demo jsem zatím moc podrobně nezkoumal, nicméně jsem si z 16MB souboru ukrojil jen první 1MB a zkusil ho v emulátoru. Zvláštní je, že obraz se mi ukáže jen v horním a spodním uříznutém filmovém políčku a ne uprostřed. Čímpak to? Chyba v emulátoru?
Je to už víc jak 10 let, co jsem na Sharpa dělal něco podobného v rozlišení 160x100 a pseudo 256-ti barvách mi z ramdisku nekomprimované video (po sobě jdoucí stránky videoram) běželo zhruba 15 snímků za sekundu možná jsem to i dával sem na Pandoru. Jen tak zběžně jsem se koukal, že Bohouš vyčítá data z ramdisku instrukcí INIR já tehdá dosáhnul mírného zrychlení použitím sady za sebou jdoucích instrukcí INI.
Možná by bylo zajímavé i použití RLE komprese, kterou by se video asi značně zkrátilo, ale chápu že by to asi nepředvídatelně nabouralo časování celého dema. Jen mě to tak napadlo, při pohledu na ty černé plochy Veselý obličej
Jinak dobrá práce, gratuluju!
 
Zdeněk
 
 
 
Sent: Friday, May 17, 2013 8:44 AM
Subject: Bohousova Madonna
 


Ahoj chlapi,

takhle by to teda neslo! Kdyz udelate nejake nove demo pro Sharpa, tak o nem taky pekne napiste i tady do konfery! ;)

http://www.8bity.cz/2013/video-na-sharp-mz-800-madonna-2/

Bohousi, chtel bych se zeptat, zda to pracuje s "libovolnym" 16MB ramdiskem a nebo zda to navic jeste vyuziva nejaky hack ve tvem scandoubleru.

Z predpokladu, ze je to plne kompatibilni se Sharpem, nebylo by lepsi udelat to nacitani dat primo z SD karty pomoci API k repozitari? (Tam prece po otevreni souboru neni potreba nic strankovat a pokud se pri kontinualnim cteni vykasles na kontrolu statusu, tak v podstate jen dokola provadis IN a jednou za cas provedes seek na zacatek souboru.)

Michal


 


---
Pobyty na horách se slevou

 


---
Pobyty na horách se slevou


Připojené soubory:

5:


Ostatní příspěvky vlákna:

 
[2013/1 (17)] [2013/2 (52)] [2013/3 (60)] [2013/4 (68)] [2013/5 (60)] [2013/6 (42)] [2013/7 (9)] [2013/8 (48)] [2013/9 (1)] [2013/10 (40)] [2013/11 (45)]


[1999 (1)] [2000 (168)] [2001 (733)] [2002 (459)] [2003 (654)] [2004 (224)] [2005 (105)] [2006 (182)] [2007 (201)] [2008 (294)] [2009 (363)] [2010 (782)] [2011 (522)] [2012 (642)] [2013 (442)]