Welcome, Guest. Please login or register.


Author Topic: Spectrum programok átírása (Read 310062 times)

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14709
  • Country: hu
    • http://enterprise.iko.hu/
Re: Spectrum programok átírása
« Reply #75 on: 2008.August.19. 00:48:23 »
Itt az 1.1-es verzió :-) Beleraktam, a másik topicban megtárgyalt Music on kérdést. (Köszönjük Istvánnak, aki megfejtette a rejtélyt!)
Meg csak azért is megcsináltam, hogy menjen 64K-s gépen  :ds_icon_cheesygrin:
A trükk az lett, hogy a karakterkészlet fájl bekerült a betöltõbe, majd a végén (az örökélet kérdés után) teszi a helyére, úgy hogy felcseréli az adatokat, vagyis a felülírt rendszerszegmens rész el lesz mentve.
A resetre való szabályos kilépés így se mûködik, ezért beleraktam a billentyûzetfigyeléshez, hogy nézze a STOP gombot, így azzal lehet kilépni.
Ekkor visszamásolja a felülírt részt, és ezután már újra mûködõképes az EXOS, jöhet a High Score mentés, majd a bejelentkezõképhez ugrás :-)
Meg kellett egy kicsit kavarni az alsó status sorral, mert hogy az is a felülírt részen van eredetileg...

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14709
  • Country: hu
    • http://enterprise.iko.hu/
Re: Spectrum programok átírása
« Reply #76 on: 2008.August.28. 22:16:45 »
Végre kikerült a WoS-ra a Dizzy Lord meg az IXL c. játék amiket én meg egy barátom írtunk. :)
A Dizzy Lord-ot sikerült restaurálnom, hogy ne csak snapshot legyen belõle!
Szerencsére a memóriából ki lehetett bányászni az eredeti betöltõ programot is.
A betöltõképet oroszoktól sikerült visszaszerezni :-) (picit más mint az EP-s)
A másodiknak betöltött képen picit törtem a fejem, aztán rájöttem, hogy az, amivel a snapshot indul.
A megszerzet darabokat EP-n Specemu által fogyasztható formába raktam, majd amikor itt már jól mûködött, FENAS-ban írtam egy kis progit, amit átkonvertálta tap fájlba. (nem találtam olyan PC-s progit ami erre képes lett volna...)

Ez volt a mai Spectrum programok átírása...
...Spectrumra  :ds_icon_cheesygrin:

Már elküldtem a WOS-nak, de addig is:

Offline Attus

  • EP addict
  • *
  • Posts: 1225
  • Country: hu
Re: Spectrum programok átírása
« Reply #77 on: 2008.September.20. 23:57:18 »
Egy öreg átíró megjegyzése az attributum átíráshoz.....

A Spectrum programok átírásának szerintem ez a legszebb része, ahol a legtöbbet lehet tanulni az átírandó program programozóitól!

Én hajdanán, ha csak lehetett elkerültem a program futás közbeni attributum konverziót a RST utasítás segítségével, főleg a futási időre kihegyezett program részleteknél.

1. Az igazi tisztességes átiratban az attributumok fixen konvertáltak, még az attributum gyártó program részleteknél is.
2. A RST beírása a megfelelő helyekre egy tűrhető módszer.
3. A legocsmányabb módszer a screen területen teljes attributum tábla 50 Hz-es interruptból történő folyamatos konverziója. Ezt a BAM-osok használták, én csak program próbának, ilyet nem is igen adtam ki a kezemből. Ilyen a Kokotoni (legelső "átiratom"), a Battleships és még egy pár progi.

Az alkalmazandó módszert végső soron a leendő program határozza meg. A Battleships egy lassú program, ott felesleges gyötörnünk magunkat a kézi móddal. A "multicolor"-os részeknél (lásd Reaper bejelenkező menüjét) csakis a kézi módszer alkalmas.

Az igazán értékes program teljes grafikai rutinjai is átírhatók, de ez már nem attributum téma.
Ezt alkalmaztam a Head over Helles 4 színű átírásánál, ahol csodálatos programozói technikákkal találkoztam (hatalmas élmény volt, de megérte!). Gányi Sanyi is csinált egy kétszínű átiratot, őt a kényszer vitte rá, mert nem fért el a 128k-s program másként, engem a HoH szeretete.

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re: Spectrum programok átírása
« Reply #78 on: 2008.September.21. 00:34:08 »
Hát igen, ez az "idõnkénti" színkonverzió nagyon gáz volt... igénytelenség...
Vigyázat! Szektás vagyok! :)

Offline MrPrise

  • Administrator
  • EP addict
  • *
  • Posts: 2745
  • Country: hu
    • Enterprise Forever
Re: Spectrum programok átírása
« Reply #79 on: 2008.September.21. 01:29:10 »
Ismeritek az Advanced Spectrum Machine Language c. könyvet?
[ Guests cannot view attachments ]
Akit érdekel és szeretné tudni, hogy honnan lehet beszerezni, keressen privátban!

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Vigyázat! Szektás vagyok! :)

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14709
  • Country: hu
    • http://enterprise.iko.hu/
Re: Spectrum programok átírása
« Reply #81 on: 2008.September.29. 11:25:31 »
A WOS whats new? oldalán sokszor jelennek meg ilyenek.
Sok közte a Missing :-(
Lehet, hogy csak csináltak egy betöltõ képet meg egy ingame képet, és kész? :-)


Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14709
  • Country: hu
    • http://enterprise.iko.hu/
Re: Spectrum programok átírása
« Reply #82 on: 2008.September.30. 12:21:56 »
Néhány "21. századi" trükk Spectrum programok átírásához:
Itt van néhány hasznos Spectrumos utility.
Elsõ érdekes a ZX-Preview, amivel bele lehet nézni a különbözõ Spectrumos fájlok (TAP, TZX, Z80, stb) tartalmába.
Screen-t képes képként megmutatni, és ami a legfontosabb BASIC programot képes kilistázni, mégpedig úgy, hogy a mindenféle trükkös POKE-kkal kilistázhatatlanná tett programokat is kilistázza :-)
Vagyis nagyon egyszerüen meg lehet tudni mit is csinál egy-egy program BASIC betöltõje.

Másik nagyon hasznos a ZX-Blockeditor, azzal szintén ezekben a fájlokban lehet turkálni, és ami számunkra érdekes: az egyes adatblokkokat kimenteni sima bináris fájlba. Vagyis a program szétszedéséhez már nem szükséges az SCOPY használata.

Magát az átírást pedig az ep128emu kiváló új debbugere könnyíti meg!
Töréspontokat kell beállítani a spectrumos dolgokra, és utána már csak jegyzetelni kell, hol áll meg a program, majd ezeket a részeket EP-síteni.
Ezek:
FEr: olvasás az FEH portról, billentyûfigyelés
1Fr: olvasás az 1FH portról, Kempston joystick olvasása
FEw: írás az FEH portra, 48K hanggenerálás ill. keretszín állítása
FD: FDH port kezelése: 128K-s memórialapozás, ill. hangkeltés
5800-5AFF: attributum terület kezelése
(D800-DAFF: a második attributum terület kezelése 128K-n, de csak akkor ha a a RAM7 van belapozva a 3. lapra)

Az FEw ill. FD port figyelése érdekes lehet létezõ átíratok futtatása esetén is, így lehet megtalálni, hol felejtették el átírni a hangokat...

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14709
  • Country: hu
    • http://enterprise.iko.hu/
Re: Spectrum programok átírása
« Reply #83 on: 2008.November.12. 23:06:02 »
Az IM2 megszakításról is írhatnál, ugyanis ott is voltak különbözõ gépek. Ha jól emlékszem valami porton jött, hogy az IM2 rutin hol van, és ezen a porton a legtöbb gépen 0 volt. Azonban volt pár gép (pl. az enyém) amelyen ez a port random(!) értéket adott, ha jól emlékszem 255 és 254 érték váltakozott rajta. Emiatt aztán el is szálltak bizonyos átiratok.
Vagy valami ilyesmi volt, már nem emlékszem.
Az IM2 módban a megszakítást kiváltó eszköz ad a buszra egy értéket, ami alapján a Z80 egy táblázatból kiválasztva különbözõ megszakítási rutinokat tud meghívni. Mivel ez a rendszer nincs ez EP-ben használva, ilyenkor a Z80 az üres adatbuszt olvassa be. Ez általában FF, de gyakorlatilag nincs specifikálva, bármi lehet. Legtöbb gépen valóban FF, de egyrészt a különbözõ bõvítésektõl, másrészt az alkatrészek szórásától függõen megjelennek más értékek is. Turbos gép még jobban hajlamos ilyenre, akár az is elõfordulhat, hogy fantom hibás szegmensek jelennek meg a RAM teszt során. Egyes Mészáros féle kártyák pedig tipikusan hajlamosak erre. A megoldás az, ha egy felhúzó ellenálláshidat kötünk a kártya adatbuszára, így garantálva, hogy üresjáratban minden adat bit 1-esbe álljon.

IM2 esetén, ha a táblázat nincs 256 egyforma elembõl felépítve, akkor természetesen a különbözõ érkezett értékek különbözõ címre ugráshoz vezetnek. És így akkor máris adott a lefagyás lehetõsége.
Vagyis vagy korrekten meg kell csinálni a teljes táblázatot, vagy pedig maradni az IM1 módnál, és ott belerakni a program eredeti megszakítási rutinjának a meghívását. (És mindenképpen ki kell bõvíteni B4 port kezeléssel.)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Spectrum programok átírása
« Reply #84 on: 2008.November.12. 23:06:29 »
Az IM2 megszakításról is írhatnál, ugyanis ott is voltak különbözõ gépek. Ha jól emlékszem valami porton jött, hogy az IM2 rutin hol van, és ezen a porton a legtöbb gépen 0 volt. Azonban volt pár gép (pl. az enyém) amelyen ez a port random(!) értéket adott, ha jól emlékszem 255 és 254 érték váltakozott rajta. Emiatt aztán el is szálltak bizonyos átiratok.
Vagy valami ilyesmi volt, már nem emlékszem.
Az IM 2 mód a rutin címének a címét az I regiszterből (ez lesz a felső byte) és az adatbuszon éppen található byte-ból generálja. Ez az emulátorban mindig 0FFh, és az átiratok is általában ezt feltételezik. Megbízható megoldás igazi gépen azonban csak az lenne, ha a rutin címének az alsó és felső byte-ja azonos, és ez a byte 257-szer van a táblázatban, hogy minden lehetséges "véletlenszerű" címmel működjön.

Offline Attus

  • EP addict
  • *
  • Posts: 1225
  • Country: hu
Re: Spectrum programok átírása
« Reply #85 on: 2008.November.12. 23:47:17 »
Az IM 2 mód a rutin címének a címét az I regiszterbõl (ez lesz a felsõ byte) és az adatbuszon éppen található byte-ból generálja. Ez az emulátorban mindig 0FFh, és az átiratok is általában ezt feltételezik. Megbízható megoldás igazi gépen azonban csak az lenne, ha a rutin címének az alsó és felsõ byte-ja azonos, és ez a byte 257-szer van a táblázatban, hogy minden lehetséges "véletlenszerû" címmel mûködjön.
Az én átirataimnál konzekvensen mindig felépítettem a táblázatot, hogy nehogy elszálljon. Érdekes módon az általam átírt Spectrum programok is kivétel nélkül ugyancsak eredetileg teljes táblát használtak.
Janó és BAM nem mindig. Sokszor csak egy darabból áll náluk a "tábla".
« Last Edit: 2008.November.13. 01:07:04 by Zozosoft, Reason: quote vége rossz helyen volt »

Offline Attus

  • EP addict
  • *
  • Posts: 1225
  • Country: hu
Re: Spectrum programok átírása
« Reply #86 on: 2009.February.03. 23:38:33 »
EZEK biztos mûködnek.
Lehet hogy újra elkezdem az átírást?  :roll:

Offline nyuzga

  • EP addict
  • *
  • Posts: 2280
  • Country: hu
Re: Spectrum programok átírása
« Reply #87 on: 2009.February.03. 23:55:52 »
Lehet hogy újra elkezdem az átírást?  :roll:

Javasolhatnám a LORDS OF CHAOS-T? :)
[ Guests cannot view attachments ]

Offline Lacika

  • EP addict
  • *
  • Posts: 3189
  • Country: hu
    • http://www.ep128.hu
Re: Spectrum programok átírása
« Reply #88 on: 2009.February.04. 08:04:44 »
Lehet hogy újra elkezdem az átírást?  :roll:

Ha gondolod, szívesen adok néhány további tippet:
 :)

Bard's Tale (alapmű!)
Chaos (alapmű!)
Clickmania
Desert Rats
Dizzy 7
Doomdarks's Revenge
Jet-Story
Laser Squad Remix (alapmű!)
Pinball Power
Rockman
Spike in Transylvania
Street Cred' Football
Super Cars (a kivitelezés zseniális!)

Kicsit elragadtattam magam?

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14709
  • Country: hu
    • http://enterprise.iko.hu/
Re: Spectrum programok átírása
« Reply #89 on: 2009.February.04. 10:54:15 »
Lehet hogy újra elkezdem az átírást?  :roll:
Támogatom az ötletet!
Lehet, hogy egyesek azt gondolják, hogy nincs értelme, hiszen PC-s emulátorral bármelyikkel játszhatunk. De ez szerintem egy külön hobbi, van aki kertészkedik, van aki kötöget, van aki keresztrejtvényt fejt, és van aki Spectrum programokat ír át EP-re  :-)
Leginkább a rejtvényfejtéshez lehetne hasonlítani, ahogy az ember szépen sorban felderíti a program belsejét, aztán jön a logikai fejtörõ, hogy hogyan kéne ezt módosítani EP-re.
Az meg már csak a bonusz, hogy vannak akik örülnek az újabb átíratoknak  :ds_icon_cheesygrin: