Enterprise Forever

:HUN => Emulátorok => Topic started by: Attus on 2009.October.03. 18:53:30

Title: Lua Spectrum Emulator
Post 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:
Title: Re: Lua Spectrum Emulator
Post by: Attus on 2009.October.03. 22:51:22
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.  :(
Title: Re: Lua Spectrum Emulator
Post by: IstvanV on 2009.October.05. 17:01:36
Quote from: IstvanV
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:
Title: Re: Lua Spectrum Emulator
Post by: Attus on 2009.October.05. 17:12:03
Ezek szerint valóban nem bizonyult hasznosnak vagy érdekesnek :oops:
Engem érdekelne, de késõbbre halasztottam. Gentoo -t szeretnék telepíteni hozzá,
 ;-)
Title: Re: Lua Spectrum Emulator
Post by: Zozosoft on 2009.October.05. 17:23:21
Reggel volt még itt egy Kempston-os :-(
Title: Re: Lua Spectrum Emulator
Post by: Zozosoft on 2009.October.05. 17:55:55
Ez ? :)
Most gyorsan elmentettem :-)
Title: Re: Lua Spectrum Emulator
Post by: IstvanV on 2009.October.09. 16:33:52
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:
Title: Re: Lua Spectrum Emulator
Post by: Zozosoft on 2009.October.09. 16:49:01
É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.
Title: Re: Lua Spectrum Emulator
Post by: nyuzga on 2009.October.10. 17:38:33
Arra már rájöttem, hogy a debuggerböl kell elindítani, de hogy lehet Tape fájlt betölteni? :?:
Title: Re: Lua Spectrum Emulator
Post by: IstvanV on 2009.October.11. 17:01:17
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.
Title: Re: Lua Spectrum Emulator
Post by: Zozosoft on 2009.October.11. 21:10:04
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.
Title: Re: Lua Spectrum Emulator
Post by: IstvanV on 2009.October.11. 21:56:54
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.
Title: Re: Lua Spectrum Emulator
Post by: Zozosoft on 2009.October.11. 22:35:13
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?
Title: Re: Lua Spectrum Emulator
Post by: IstvanV on 2009.October.11. 22:37:19
[attachurl=#]
Title: Re: Lua Spectrum Emulator
Post by: IstvanV on 2009.October.11. 22:40:20
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
Title: Re: Lua Spectrum Emulator
Post by: szipucsu on 2009.October.11. 22:54:22
exolon.avi
Húha, ez nem semmi.  :shock:
Title: Re: Lua Spectrum Emulator
Post by: Ep128 on 2009.October.12. 00:08:54
Tetszik és nagyon jó minõségben is vetted fel!  :)
Title: Re: Lua Spectrum Emulator
Post by: Zozosoft on 2009.October.12. 19:13:56
Na ezt követem el 128-as videó ügyben:
Code: ZiLOG Z80 Assembler
  1. LAPOZAS:        PUSH AF
  2.                 AND 7
  3.                 LD (RCIM+1),A
  4. RCIM:           LD A,(200H)
  5.                 OUT (0B3H),A
  6.                 POP AF
  7.                 PUSH AF
  8.                 BIT 3,A
  9.                 LD A,(LASTLPT)
  10.                 JR Z,NULLASLPT
  11.                 OR A
  12.                 JR Z,MOSTNULLAS
  13.                 POP AF
  14.                 RET
  15. MOSTNULLAS:
  16.                 LD A,(LPT1+1)
  17.                 OUT (83H),A
  18.                 LD (LASTLPT),A
  19.                 POP AF
  20.                 RET
  21. NULLASLPT:      OR A
  22.                 JR NZ,MOSTEGYES
  23.                 POP AF
  24.                 RET
  25. MOSTEGYES:
  26.  
  27.                 LD A,(LPT0+1)
  28.                 OUT (83H),A
  29.                 XOR A
  30.                 LD (LASTLPT),A
  31.                 POP AF
  32.                 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:
Code: ZiLOG Z80 Assembler
  1.                 XOR A
  2.                 LD HL,VIDCIM2+1
  3.                 RRD
  4.                 RLCA
  5.                 RLCA
  6.                 RLCA
  7.                 RLCA
  8.                 OUT (82H),A
  9.                 LD (LPT0),A
  10.                 OR 0C0H
  11.                 RRD
  12.                 OUT (83H),A
  13.                 LD (LPT0+1),A
  14.                 XOR A
  15.                 LD HL,VIDCIM4+1
  16.                 RRD
  17.                 RLCA
  18.                 RLCA
  19.                 RLCA
  20.                 RLCA
  21.                 LD (LPT1),A
  22.                 OR 0C0H
  23.                 RRD
  24.                 LD (LPT1+1),A
Title: Re: Lua Spectrum Emulator
Post by: IstvanV on 2009.October.13. 16:19:46
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=#]
Title: Re: Lua Spectrum Emulator
Post by: Attus on 2009.October.13. 17:28:26

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.  :)
Title: Re: Lua Spectrum Emulator
Post by: szipucsu on 2009.October.13. 21:25:14
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?
Title: Re: Lua Spectrum Emulator
Post by: IstvanV on 2009.October.13. 22:31:41
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:
Title: Re: Lua Spectrum Emulator
Post by: nyuzga on 2009.October.14. 10:12:56
Ha esetleg valaki ki akarja próbálni, itt a legújabb verzió

NAGYSZERÜ! :)
[attachthumb=1]
[attachthumb=2]
Title: Re: Lua Spectrum Emulator
Post by: nyuzga on 2009.October.14. 12:32:48
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=#]
Title: Re: Lua Spectrum Emulator
Post by: IstvanV on 2009.October.14. 16:31:29
IstvanV, a Soudtrakkerhez nem tudom belöni az emut.

Mi volt a probléma ?

Quote
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:
Title: Re: Lua Spectrum Emulator
Post by: IstvanV on 2009.October.14. 16:36:56
Ú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.
Title: Re: Lua Spectrum Emulator
Post by: nyuzga on 2009.October.14. 18:49:24
Mi volt a probléma ?

Nálam lassú és akadozik.
Title: Re: Lua Spectrum Emulator
Post by: IstvanV on 2009.October.14. 21:47:59
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.
Title: Re: Lua Spectrum Emulator
Post by: Attus on 2009.October.19. 18:33:41
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
Title: Re: Lua Spectrum Emulator
Post by: IstvanV on 2009.October.24. 15:01:40
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=#]