Enterprise Forever
:HUN => Emulátorok => Topic started by: Attus on 2009.October.03. 18:53:30
-
Lua Spectrum emulátor:
:shock:
Letöltöttem, hátha tudok vele valamit kezdeni. ;-)
Szerk:
Sajnos semmit.
Terminálból ez a válasz:
lua: zxemu.lua:5: `=' expected near `zxPalette'
Ep28emu debuggerében futtatva sem megy persze.
Ez most még biztos nem az én értelmi színvonalamnak való. :oops: :oops: :oops:
-
Ha az emulátor Lua 5.0 verzióval vagy Lua nélkül volt fordítva, akkor természetesen nem mûködik.
Az én rendszeremen lua 5.0.2 van és ezért "természetesen nem mûködik".
Gyanítom, hogy a szkript nem kompatibilis vele. :(
-
Lua Spectrum emulátor:
zxemu.lua
Sok értelme ugyan nincsen, mert a futása közben a debuggert csak nagyon korlátozozzan lehet használni, és egyébként sem sokat tud. Mindenesetre érdekesség, hogy ilyet is lehet készíteni :) Az elején beállítható a betöltendő .tap file neve (talán akadnak olyanok, amelyek működnek is :oops:)
Ezek szerint valóban nem bizonyult hasznosnak vagy érdekesnek :oops:
-
Ezek szerint valóban nem bizonyult hasznosnak vagy érdekesnek :oops:
Engem érdekelne, de késõbbre halasztottam. Gentoo -t szeretnék telepíteni hozzá,
;-)
-
Reggel volt még itt egy Kempston-os :-(
-
Ez ? :)
Most gyorsan elmentettem :-)
-
Bár az érdeklődés nem tűnik túl nagynak, de talán érdemes lenne megpróbálni 128K-s változat készítését is ? :idea:
-
Érdekes lenne, tanulni belõle az igazi emulátor 128-asításához!
Elvileg ki lehetne belõle hozni azt is, még pár átvágással :-) hogy az FDH portra is reagáljon. bár lennének gondok, de azért talán pár játék menne rajta.
-
Arra már rájöttem, hogy a debuggerböl kell elindítani, de hogy lehet Tape fájlt betölteni? :?:
-
Elvileg ki lehetne belõle hozni azt is, még pár átvágással :-) hogy az FDH portra is reagáljon. bár lennének gondok, de azért talán pár játék menne rajta.
A RAM lapozást talán viszonylag egyszerű lenne megoldani a ZX41.ROM-ban, igaz, problémát jelent, hogy bővítetlen 128K-s EP-n nem működne. Ezen kívül elvileg 5 video szegmens kellene (Spectrum 4.-7. lap és LPT szegmens), de ennek csak az időzítés miatt lenne jelentősége, és az EP-s video memória egyébként is lassabb, mint a Spectrumon, tehát a pontos sebességet a szegmens típusától függetlenül nem lehet elérni :)
Nehezebb lehet a video lapozás (5. vagy 7. lap megjelenítése), és valószínűleg bonyolultabb és lassabb is lenne az emuláció, mint a 48K-s verziónál. Magát a lapozást vagy az LPT átírásával (lassú, de a Lua scriptben például így oldottam meg), vagy két LPT-vel és az LPT cím állításával (késve jelenik meg, Spectrumon viszont azonnal ?) lehetne megvalósítani. Az attribútumoknál két konvertált attribútum területre lenne szükség, és a lapozásra is figyelni kellene a konverziónál.
További nehézség az AY emuláció (de ennek a hiányától legalább nem fagynak le a programok, és a kép sem lesz hibás :)). A Lua scriptben az egész AY-t szoftveresen emuláltam hangmintánként (~220 kHz), ez az ötlet EP-n természetesen használhatatlan. Geco emuációját viszont fel lehetne használni, bár nem tudom, az megoldható-e, hogy közben a hagyományos ULA hangkimenet (FEh port) is működőképes maradjon.
-
két LPT-vel és az LPT cím állításával (késve jelenik meg, Spectrumon viszont azonnal ?) lehetne megvalósítani.
Ebbe már belefutottam egy készülödõ 128-as átirat kapcsán. Spectrumon valóban azonnal történik a váltás, ezt leginkább az oroszok használják ki mindenféle interlace és multicolor effekthez.
EP-n úgy lehet megoldani, hogy a 2 LPT-t úgy kell elhelyezni, hogy a váltáshoz csak felsõ bájtot írjuk az azonnali áttérés bitjével, így az LPT-n belüli pozicíó megmarad, vagyis azonnali lesz a váltás.
-
EP-n úgy lehet megoldani, hogy a 2 LPT-t úgy kell elhelyezni, hogy a váltáshoz csak felsõ bájtot írjuk az azonnali áttérés bitjével, így az LPT-n belüli pozicíó megmarad, vagyis azonnali lesz a váltás.
Ez biztos, hogy így van ? :shock: Ha igen, akkor újabb emulátor hibát lehet javítani :oops: Nekem eddig úgy tűnt, hogy az LPT-n belüli pozíció nem marad meg, hanem az elejétől kezdi az új LPT-t.
-
Ha majd gép közelbe leszek, megnézem pontosan, hogy mit alkottam :)
Az biztos, hogy megy ep128emuval és valódi gépen is!
Lehet, hogy csak a címbiteket írom?
-
[attachurl=#]
-
Lehet, hogy csak a címbiteket írom?
Az biztosan működik az emulátorral, de csak a következő képkockában :) Az azonnali újratöltés bit viszont elvileg az új LPT elejére ugrik az emulátorban (az LPB-n belüli sorszámláló azonban megmarad).
Egészen pontosan így működik az emulált 83H port felső két bitje:
- van két tároló, amelyek az LPT-t vezérlik:
- az első ha be van állítva a sor végén, akkor az LPB cím frissítése történik (azaz +16 byte, vagy újratöltés) az LPB-n belüli sorszámlálótól függetlenül, de a sorszámláló nem változik, hanem fut tovább
- ha a második be van állítva a sor végén, akkor a hatása azonos az LPB "reload" bitjének (második byte 0. bit) a beállításával - de az LPT újraindítása itt is csak az LPB cím frissítésekor történhet
- ha a 83H port 6. bitje 0, akkor mindkét tároló törlődik, és az LPB cím nem változhat (tehát amíg ez a bit folyamatosan 0, addig az aktuális LPB ismétlődik)
- a 83H port 6. bitjének 0-ról 1-re változása (felfutó él) beállítja a fent említett első tárolót (LPB cím frissítése a sor végén)
- ha a 83H port 6. bitje 1, a 7. bit pedig 0, az beállítja a második tárolót (LPT újratöltés)
- a sor végén az első tároló az ellenőrzése után automatikusan törlődik, a második viszont csak akkor, ha a 83H port 7. bitje már 1
-
exolon.avi
Húha, ez nem semmi. :shock:
-
Tetszik és nagyon jó minõségben is vetted fel! :)
-
Na ezt követem el 128-as videó ügyben:
LAPOZAS: PUSH AF
AND 7
LD (RCIM+1),A
RCIM: LD A,(200H)
OUT (0B3H),A
POP AF
PUSH AF
BIT 3,A
LD A,(LASTLPT)
JR Z,NULLASLPT
OR A
JR Z,MOSTNULLAS
POP AF
RET
MOSTNULLAS:
LD A,(LPT1+1)
OUT (83H),A
LD (LASTLPT),A
POP AF
RET
NULLASLPT: OR A
JR NZ,MOSTEGYES
POP AF
RET
MOSTEGYES:
LD A,(LPT0+1)
OUT (83H),A
XOR A
LD (LASTLPT),A
POP AF
RET
Mondjuk lehet, hogy fölösleges tárolni, hogy éppen melyiken vagyunk, és csak a váltásnál írni.
Az LPT címek képzõdése:
XOR A
LD HL,VIDCIM2+1
RRD
RLCA
RLCA
RLCA
RLCA
OUT (82H),A
LD (LPT0),A
OR 0C0H
RRD
OUT (83H),A
LD (LPT0+1),A
XOR A
LD HL,VIDCIM4+1
RRD
RLCA
RLCA
RLCA
RLCA
LD (LPT1),A
OR 0C0H
RRD
LD (LPT1+1),A
-
Na ezt követem el 128-as videó ügyben:
Úgy látszik, ez valóban csak a címbiteket írja, tehát elvileg a következő képkocka elejétől lesz érvényes. De a gyakorlatban talán nem probléma, mert a játékok általában egyébként is a keret vagy szinkron sorokban próbálják végezni a lapozást.
Tetszik és nagyon jó minõségben is vetted fel! :)
Még egy video: WEC Le Mans a Lua Spectrum 128 emulátorban (zx128emu.lua):
[attachurl=#]
-
Még egy video: WEC Le Mans a Lua Spectrum 128 emulátorban (zx128emu.lua):
Ez nem semmi. :shock:
Nagyon jók az effektek. :smt038
Állatira tetszik. :)
-
Még egy video: WEC Le Mans a Lua Spectrum 128 emulátorban (zx128emu.lua):
Ügyes!
A Lua-ban komplett játékokat, programokat is lehetne írni akár?
-
Ha esetleg valaki ki akarja próbálni, itt a legújabb verzió (az eredetivel a Wec Le Mans például nem működött megfelelően):
[attachurl=#]
[attachurl=#]
A 128K-s változathoz legalább 176K RAM méretet kell beállítani. Ezen kívül az órajelet is célszerű csökkenteni mindkét gépnél:
[attachimg=#]
A Lua-ban komplett játékokat, programokat is lehetne írni akár?
Elvileg igen. De azért még jobb, ha sikerül megoldani, hogy igazi gépen is fusson :)
UI: újabb kisebb javítás: úgy látszik, az eredeti dokumentációval ellentétben Spectrum 128-on a páratlan lapok lassúak, és nem a 4.-7.
UI2: a Kempston joystick címdekódolása is javítva :oops:
-
Ha esetleg valaki ki akarja próbálni, itt a legújabb verzió
NAGYSZERÜ! :)
[attachthumb=1]
[attachthumb=2]
-
IstvanV, a Soudtrakkerhez nem tudom belöni az emut.
Készitenél egy avi demót? A Play-t kell csak megynyomni és már szól is a muzik. :)
[attachthumb=#]
-
IstvanV, a Soudtrakkerhez nem tudom belöni az emut.
Mi volt a probléma ?
Készitenél egy avi demót? A Play-t kell csak megynyomni és már szól is a muzik. :)
[attachurl=#]
A minőség nem túl jó a file méret miatt :oops:
-
Újabb Lua Spectrum emulátor verzió:
[attachurl=#]
[attachurl=#]
A 48K-s emulátor valamivel gyorsabb lett, a 128K-s pedig 311 soros LPT-t használ, mivel az igazi Spectrum 128 képernyője is csak 311 soros. A megszakítás időpontja is módosult 64 (illetve 128K-nál 63) sorral a kép kezdete elé.
Érdemes lehet még a Z80 frekvenciát a fent ajánlott 3546896 helyett 3546897 Hz-re állítani, így kevésbé lassú a video RAM.
-
Mi volt a probléma ?
Nálam lassú és akadozik.
-
Nálam lassú és akadozik.
A sebesség valóban lehetne jobb is :oops: De interpreteres nyelvhez képest talán nem nagyon lassú :) Nekem a 48K-s verzió 400%, a 128K-s pedig 180% körüli sebességgel fut az ep128emu 32 bites Linux változatán (a 64 bites lassabb lenne, mert ott nincs LuaJIT). De Windows alatt az is probléma, hogy video felvétel közben akadozhat a normál EP emuláció is a lemezműveletek miatt.
-
István!
Most még UHU õrültségem miatt még nem próbáltam ki (XP-tõl irtózom) és most a lua függõsége miatt (is) épp más disztrók után kapkodok.. :oops:
De!
Ha ez elkészül, akkor lehet, hogy az ep128emu a MESS versenytársa is lehet Lua alapon? :shock:
Esetleg az ep128emu leendõ új verziójába is be lehetne tenni. :smt115
-
A Lua Spectrum emulátor (http://enterpriseforever.com/szoftver/spectrum_emulator-t16.0.html;msg16621#msg16621) újabb kisebb módosítása (AY emuláció, és .tap betöltés):
[attachurl=#]
[attachurl=#]