SpecBall

Kutassunk fel minden magyar fejlesztésű ZX81/Spectrum programot!
Avatar
mezei
Hozzászólások: 563
Csatlakozott: 2012.01.06. 14:52

SpecBall

Hozzászólás Szerző: mezei » 2015.12.27. 20:37

Sziasztok!

Van ez a játék... A SpecBall, ami az enterprise-os EnterBall Spectrum-átirata.
2010-ben lett bejelentve, de el is készült? Én csak a Sinclair.hun fent lévő videobemutatókból ismerem és azóta nagy a csend, nincs fent a hazai fejlesztések között sem. Zozo és Pgyuri, elkészült végül a játék? Letölthető valahonnan?

Üdv
M/ZX

Avatar
Zozosoft
Hozzászólások: 793
Csatlakozott: 2012.01.06. 14:03
Kapcsolat:

Re: SpecBall

Hozzászólás Szerző: Zozosoft » 2015.12.28. 14:31

Volt benne egy bug, ami miatt időnként lefagyott. Gyuri engem vádolt, hogy biztos én rontottam el, de mint végül kiderült, hogy az eredetiben is benne volt, az 'a' Studio-sok rontották el.
Meg lett a hibajavítás, azóta arra vár, hogy PGyuri belerakja az általa készített betöltőbe a javított verziót :oops:

A hiba leírása:
ENTERPRESS Programozási fogások és melléfogások rovatának 2013-as különkiadása következik :-)

Hogyan sorsolja a pályákat a játék? Az 1. és az 50. pálya fix, a közte lévő 48-at sorsolja úgy, hogy egy játék alatt mindegyik csak egyszer kerüljön sorra.
Ehhez létrehoz egy táblázatot:

Kód: Egész kijelölése

>6008  00 01 02 03 04 05 06 07  :........
>6010  08 09 0A 0B 0C 0D 0E 0F  :........
>6018  10 11 12 13 14 15 16 17  :........
>6020  18 19 1A 1B 1C 1D 1E 1F  :........
>6028  20 21 22 23 24 25 26 27  : !"#$%&'
>6030  28 29 2A 2B 2C 2D 2E 2F  :()*+,-./
>6038  30 31 FF 00 00 04 01 05  :01......
6008h címen egy változó, amit minden megszakításban változtat.
6009h hanyadik LEVEL-en tart a játékos
600A-6039h 48 pályasorszám, bit 7 1-esbe állításával jelzi, hogy az adott pálya már volt.
603Ah listát lezáró FFh

Véletlenszám generálása a megszakítási rutinban:

Kód: Egész kijelölése

      A6BE  3A 08 60     LD    A, (6008)
      A6C1  3C           INC   A
      A6C2  FE 31        CP    31
      A6C4  20 01        JR    NZ, A6C7
      A6C6  AF           XOR   A
      A6C7  32 08 60     LD    (6008), A
Növeli a változó értékét, és ha elérte a 49-t, akkor újrakezdi nulláról.

Itt a sorsoló programrész:

Kód: Egész kijelölése

  9D9D  3A 09 60     LD    A, (6009)
  9DA0  FE 32        CP    32
  9DA2  20 04        JR    NZ, 9DA8
  9DA4  32 06 79     LD    (7906), A
  9DA7  C9           RET  
  9DA8  21 0A 60     LD    HL, 600A
  9DAB  3A 08 60     LD    A, (6008)
  9DAE  5F           LD    E, A
  9DAF  16 00        LD    D, 00
  9DB1  19           ADD   HL, DE
  9DB2  CB 7E        BIT   7, (HL)
  9DB4  20 07        JR    NZ, 9DBD
  9DB6  7E           LD    A, (HL)
  9DB7  CB FE        SET   7, (HL)
  9DB9  32 06 79     LD    (7906), A
  9DBC  C9           RET 
  9DBD  23           INC   HL
  9DBE  7E           LD    A, (HL)
  9DBF  FE FF        CP    FF
  9DC1  20 03        JR    NZ, 9DC6
  9DC3  21 0A 60     LD    HL, 600A
  9DC6  CB 7E        BIT   7, (HL)
  9DC8  20 F3        JR    NZ, 9DBD
  9DCA  7E           LD    A, (HL)
  9DCB  CB FE        SET   7, (HL)
  9DCD  32 06 79     LD    (7906), A
  9DD0  C9           RET 
7906h a használandó pálya sorszáma.
Elsőként leellenőrzi, hogy az 50. LEVEL következik? Ha igen, akkor vissza is tér az 50. pálya kiválasztásával.
Ha nem, akkor jön a sorsolás:
A véletlenszám változót hozzáadja a táblázat címéhez, majd megnézi, hogy az így kiválasztott pálya volt-e már használva, ha még nem, akkor azzal visszatér.
Ha igen, akkor veszi a táblázat következő elemét, és leellenőrzi nem-e a táblázat vége, ha igen, akkor ugrik a táblázat elejére.
Az így kiválasztott pályát megnézi, volt-e használva, ha nem, akkor visszatér, ha igen, akkor folytatódik a keresés. Biztosan talál elöbb-utóbb, amikor már nincs szabad pálya (50. LEVEL), már nem lép be a sorsoló rutinba.

Hol a hiba? A véletlenszám generálásban! 48 pályából kell sorsolni, és a legnagyobb szám 48 lehet. Ez miért hiba? Azért mert a táblázat elemeit 0 eltolással kezdve címzi, azaz 0-47 az értelmes eltolási érték, míg a véletlenszám 0-48 érték lehet (összesen 49 érték)!
Ha a véletlenszám pont 48 (30h), akkor az ellenőrizendő érték a lezáró FFh lesz. Mivel ez felhasznált elemnek tünik (bit 7 = 1) ugrik a következőre. Itt már hiába ellenőrzi, hogy ez-e a táblázat vége... az itt található 00h elfogadható értéknek tűnik majd, ezzel kiválasztja a 0. valójában a 256. pályát, ami mivel csak 50 pálya van, valami véletlenszerű memóriaszemét lesz!

Javítás: a véletlenszám generálásban CP 31h helyett CP 30h kell.

Az rejtély, hogy ennyi éven át nem tűnt fel, gyakorlatilag minden új pályára lépés 1:49-es arányú orosz rulett volt...
(Bár nekem rémlik, hogy láttam ilyen sérült pályát, még az Enterball kazetta új korában, de újra betöltve nem jött elő, azt gondoltam, biztos hibás betöltés volt.)

Avatar
mezei
Hozzászólások: 563
Csatlakozott: 2012.01.06. 14:52

Re: SpecBall

Hozzászólás Szerző: mezei » 2015.12.28. 17:36

Hát igen, egy ilyen kis hiba mennyi gondot okozhat... Így utólag egyértelmű, de gondolom nem két perc volt megtalálni (azért öt évre sem tippelnék :)), könnyű az ilyesmin átsiklani. Mindenesetre a játék nagyon jónak tűnik a videó alapján. Már nagyon várom a megjelenést! Gondolom idén már hiába, de legalább 2016-ban is lesz magyar Spectrum játék!

Üdv
M/ZX
A hozzászólást 1 alkalommal szerkesztették, utoljára mezei 2016.01.25. 21:09-kor.

Avatar
Zozosoft
Hozzászólások: 793
Csatlakozott: 2012.01.06. 14:03
Kapcsolat:

Re: SpecBall

Hozzászólás Szerző: Zozosoft » 2016.01.25. 20:26

Elvileg végleges verzió, de a tuti az lenne, ha nem csak emulátoron lenne megnézve, hanem különféle valódi gépen is (48/128/+2/+3).
Irányítás Kempston vagy IF2 joy, ill. a két SHIFT is használható, Space asztalrázás, P Pause.
specball2016.zip
(19.57 KiB) Letöltve 49 alkalommal.

Avatar
mezei
Hozzászólások: 563
Csatlakozott: 2012.01.06. 14:52

Re: SpecBall

Hozzászólás Szerző: mezei » 2016.01.26. 10:07

Szuper, 48K-n biztos letesztelem :)

Avatar
Zozosoft
Hozzászólások: 793
Csatlakozott: 2012.01.06. 14:03
Kapcsolat:

Re: SpecBall

Hozzászólás Szerző: Zozosoft » 2016.01.26. 10:50

128-ason van zene is :-)

Avatar
mezei
Hozzászólások: 563
Csatlakozott: 2012.01.06. 14:52

Re: SpecBall

Hozzászólás Szerző: mezei » 2016.01.26. 12:11

Igen, hallottam, az Eleanor Rigby a Beatlestől, meglehetősen jól szól :)

Avatar
mezei
Hozzászólások: 563
Csatlakozott: 2012.01.06. 14:52

Re: SpecBall

Hozzászólás Szerző: mezei » 2016.01.26. 17:14

Zozosoft írta:Elvileg végleges verzió, de a tuti az lenne, ha nem csak emulátoron lenne megnézve, hanem különféle valódi gépen is (48/128/+2/+3).
Nos, gumibillentyűsön 45 percig nyúztam, hibamentesen ment.
Nagyon gonosz, halálra szívat, második pályának mindig olyat ad, amin k..va mélyen is vannak téglák, persze nem olyanok, amiket szét lehetne ütögetni, szóval az első pályán beszerzett plusz életeim is nagyon gyorsan eltűnnek, szégyenteljes 746 pontig jutottam, úgyhogy most rápihenek az újabb próbára.

Üdv
M/ZX

ui: már 1454 pontnál járok, mára ezzel meg is elégszem :)

Avatar
mezei
Hozzászólások: 563
Csatlakozott: 2012.01.06. 14:52

Re: SpecBall

Hozzászólás Szerző: mezei » 2016.01.26. 17:32

Zozosoft írta: Irányítás Kempston vagy IF2 joy, ill. a két SHIFT is használható, Space asztalrázás, P Pause.
Zozo, nincs esetleg egy beszkennelt enterprise-os útmutatód?

Üdv
M/ZX

Avatar
Zozosoft
Hozzászólások: 793
Csatlakozott: 2012.01.06. 14:03
Kapcsolat:

Re: SpecBall

Hozzászólás Szerző: Zozosoft » 2016.01.26. 17:33

Baloldalt felveszed az ajándékokat?

Válasz küldése

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég