Welcome, Guest. Please login or register.


Author Topic: Pinball Power (Read 36680 times)

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: Pinball Power
« Reply #45 on: 2010.November.05. 11:20:13 »
Érdemes lenne még néhány másik gépet is megnézni, hogy milyen arányban fordul elő a hiba.

Én vasárnap "megszabadultam a családtól" egy napra, akkor ki tudtam volna próbálni. Sajnos ilyen alkalom a közel jövőben nem várható...  :(

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: Pinball Power
« Reply #46 on: 2010.November.05. 11:50:05 »
Nem lehetetlen, de a két gép közül, amelyeken Zozosoft tesztelte a programot, az egyiken pontosan ugyanilyen hiba jött elő. Mint már leírtam, az adatok memóriában való mozgatásának és/vagy a várakozás engedélyezésének nincs semmilyen hatása a problémára, mindenhogyan ugyanúgy lefagy. A többi játék, amit eddig próbáltam, hibátlanul működik. A gép német (volt mielőtt az EPROM-ot eltávolítottam :oops:) EP128, bővítés és turbósítás nélkül, nem a korai pixelhibás, lassú RAM-os, stb. sorozatból van. Érdemes lenne még néhány másik gépet is megnézni, hogy milyen arányban fordul elő a hiba.

Lehet előrámolom a gépet a szekrényből egy tesztelés erejéig, le lesz tesztelve a program is, meg az is, hogy műxik-e még a drágaszág :)

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Pinball Power
« Reply #47 on: 2010.November.05. 12:03:17 »
Kirpóbáltam igazi géppel. Sajnos lefagyott többször is, valószínû nem a táp miatt. :(
Elõször még egész sokáig lehetett játszani vele. Minél többször töltöttem be, annál hamarabb lefagyott, most már közvetlen a golyó kilövése után. (Esetleg melegedés okozza a hibát, vagy ez csak véletlen?)
Szerintem nem a táp miatt van, mert azon a fagyáson a RESET sem segített, most meg resetre újraindul a gép.
Viszont egy érdekesség: most magára hagytam a gépet a játékkal lefagyva pár percre. Aztán nyomtam egy RESET-et és úgy csinált, mintha újra be akarná tölteni a játékot. Megjelent a PRESS SPACE és a CHEATS... felirat, SPACE-re töltött valamit, de csak egy kék képernyõ van a screen helyén és semmi.
EXOS 2.1 és EXDOS 1.0 van a gépemben, ha ez számít valamit, és floppyról töltöttem, a gép angol nyelvû. Más extra (óra kártya, turbó, stb.) nincs a gépben.

UI: Valami melegedés lehet a dolog mögött, mert harmadszor is közvetlen a golyó kilövése után volt fagyi, az elsõ néhány próbálkozásnál még lehetett játszani valamennyit.
UI2: Nem harmadszor, hanem hatodszor is. Viszont kipróbáltam, hogy nem közvetlen a BASIC indulása után töltöm be, hanem kicsit pötyögtem BASIC-ben. Így betöltve megint lehetett kicsit játszani.
« Last Edit: 2010.November.05. 12:10:11 by szipucsu »
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: Pinball Power
« Reply #48 on: 2010.November.05. 12:21:54 »
A fagyós gépen nekem is közvetlenül a golyó kilövése után fagyott meg. Viszont turbóban tovább jutott.
A melegedés szerintem a különbözõ órajel frekvenciák beállásában játszhat közre. (Pl van olyan gépem, amin hidegen hullámzik a kép, a két félkép független színusztáncot jár :-) )

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Pinball Power
« Reply #49 on: 2010.November.05. 13:32:23 »
Viszont turbóban tovább jutott.
Nem mintha értenék hozzá, de akkor valami olyasmi okozhatja a fagyást, amit a turbó nem gyorsít fel... vagy az mindent gyorsít?
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: Pinball Power
« Reply #50 on: 2010.November.05. 14:15:09 »
Nem mintha értenék hozzá, de akkor valami olyasmi okozhatja a fagyást, amit a turbó nem gyorsít fel... vagy az mindent gyorsít?
Nick-et nem gyorsítja.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Pinball Power
« Reply #51 on: 2010.November.05. 17:02:48 »
Lehet, hogy megtaláltam a probléma okát, de ha valóban ez az, akkor az összes CPC átiratom hibás igazi gépen :( Úgy sikerült megtalálni, hogy a lefagyás helyének a megkeresése céljából a megszakítási rutint módosítottam, hogy legyen egy nagy frekvenciájú (kb. 6 kHz-es) megszakítás, amely tárolja a megszakítás előtti PC és SP értékét; így ugyan lassult a program futása, de ez nem változtatott a hibán. Így tűnt fel, hogy a lefagyás előtti utolsó megszakítás mindig 4336h címen történik, amely a loaderCall rutin elején található LD A, I utasítás utáni byte címe. Ennek az utasításnak az a célja, hogy a betöltő kódjába történő hívások vissza tudják állítani a megszakítások engedélyezését (amelyet az LD A, I elvileg a P/V biten tárol) a visszatéréskor. Gyanús lett az LD A, I utasítás, és rövid keresés után meg is találtam ezt az információt:

"Hey another thing you may wish to consider mentioning are the bugs in the NMOS version of the CPU.
One of them is with regard to the buggy IFF2->parity flag performance in the LD A,I and LD A,R instructions.
An error can occur when an INTACK runs near these instructions:
the parity flag will be showing 0 when it should have been 1.
A Zilog app. note is around somewhere talking about this.
It's a rather nasty bug for embeddedaapps... There are I think a few others.
"

Tehát ez egy Z80 hardver bug: az LD A, I / LD A, R hibásan tárolja a megszakítás engedélyezését a P/V biten, ha véletlenül pont ilyen utasításnál történik megszakítás. Ez nem minden Z80 változatnál fordul elő (csak az NMOS hibás), így lehetséges, hogy az egyik (kicserélt CPU-s ?) gép jól működött. Ezért Z80 CPU-n gyakorlatilag lehetetlen megbízhatóan megállapítani, hogy éppen engedélyezettek-e a megszakítások. :evil: Mivel a problémás rutint mindegyik CPC átiratban használtam, elvileg mindet javítani kellene :(, bár úgy látszik, soknál a gyakorlatban nincs hiba (vagy azért, mert csak letiltott megszakításnál történik loaderCall hívás, vagy mert szerencsés módon olyan az időzítés, hogy az LD A, I utasításnál nem lehet megszakítás, vagy pedig a játék időben újra engedélyezi a megszakításokat, és így nem fagy le).
« Last Edit: 2010.November.05. 17:06:14 by IstvanV »

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: Pinball Power
« Reply #52 on: 2010.November.05. 17:56:36 »
Ezek szerint nem minden gépben van ilyen NMOS szériájú proci gyárilag sem? Hisz Zozo is talált olyan gépet, melyen működik.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Pinball Power
« Reply #53 on: 2010.November.05. 19:10:25 »
Ezek szerint nem minden gépben van ilyen NMOS szériájú proci gyárilag sem? Hisz Zozo is talált olyan gépet, melyen működik.

Nem tudom, mint említettem, lehet, hogy abban az egy gépben, amely jól működött, már cserélt Z80 van, és nem az, amit gyárilag beépítettek :?:

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: Pinball Power
« Reply #54 on: 2010.November.05. 19:40:23 »
Nem tudom, mint említettem, lehet, hogy abban az egy gépben, amely jól mûködött, már cserélt Z80 van, és nem az, amit gyárilag beépítettek :?:

Igen, az én gépemben egy 2006-os gyártású 10Mhz-es Zilog Z80 van.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Pinball Power
« Reply #55 on: 2010.November.05. 20:04:38 »
Ezért Z80 CPU-n gyakorlatilag lehetetlen megbízhatóan megállapítani, hogy éppen engedélyezettek-e a megszakítások. :evil:

Illetve pontosabban többé-kevésbé megoldható, de méretnövekedés és lassulás árán, így nem tudom, megéri-e. Az egyik megoldás az, hogy ha PO (tiltott megszakítás) az eredmény, akkor újabb LD A, I utasítást kell végrehajtani, abban a reményben, hogy nem lesz két megszakítás közvetlenül egymás után pontosan ilyen időzítéssel:
Code: ZiLOG Z80 Assembler
  1.         LD    A, I
  2.         JP    PE, L1
  3.         LD    A, I
  4. L1:
A másik az, ha a megszakítási rutin ellenőrzi a visszatérési címet, és ha az LD A, I utáni byte-ra mutat, akkor módosítja a mentett F regisztert.

A legjobb, de több munkával járó megoldás természetesen az, ha külön hívható loaderCallDI és loaderCallEI rutint készítek, és módosítom a *conv.s file-okat is, hogy mindenhol a megfelelő verziót hívják.

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Pinball Power
« Reply #56 on: 2010.November.06. 22:53:49 »
Tehát ez egy Z80 hardver bug
Az emulátorban hogyhogy nem fordul elõ a fagyás? Eleve a nem bugos Z80-at emulálja?
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Pinball Power
« Reply #57 on: 2010.November.06. 22:58:56 »
Az emulátorban hogyhogy nem fordul elõ a fagyás? Eleve a nem bugos Z80-at emulálja?

Igen, mivel eddig nem tudtam erről a Z80 hibáról :oops: De ha nem így lenne, akkor természetesen az átiratokba sem került volna olyan kód, ami nem működik megfelelően a bug miatt. :)

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: Pinball Power
« Reply #58 on: 2010.November.07. 08:50:04 »
Ha eaetleg az emu-ba bekerül ez a "javítás", úgy kellene megoldani, hogy a processzor típusa választható legyen. :)
Az én gépemben is Z80B van.

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Pinball Power
« Reply #59 on: 2010.November.07. 12:32:13 »
Ha eaetleg az emu-ba bekerül ez a "javítás", úgy kellene megoldani, hogy a processzor típusa választható legyen. :)
Az én gépemben is Z80B van.
Szerintem ha visszafele "javítjuk" az emulátort, akkor elõbb-utóbb abakusz-emulátor lenne belõle.

UI: Persze fejlesztésekhez, új programok teszteléséhez ez nem hülyeség. De átlag felhasználó (pl. én) soha nem használná ezt a lehetõséget. Valami eldugott menü eldugott opciójába be lehet tenni, hogy béna Z80 és király Z80 között lehessen választani. Vagy fejlesztõknek külön emulátor csomag kéne? :D
« Last Edit: 2010.November.07. 12:46:14 by szipucsu »
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos