Welcome, Guest. Please login or register.


Author Topic: Dots and Gems (Read 34431 times)

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Dots and Gems
« Reply #105 on: 2020.June.25. 20:03:40 »
Most Tomato szörnymozgató eljárása van a programban, jól működik. Talán annyit lehetne változtatni, hogy ha mind a négy irányba mehet, akkor nagyobb valószínűséggel tartsa a régi irányt, mint hogy irányt váltson. Itt a snapshotban pont ez jönne jól: [ Guests cannot view attachments ] Viszont ilyenkor meg az lenne a gond, hogy ha csak kereszteződésnél lenne 4 iránylehetőség, akkor meg majdnem mindig csak továbbmenne, nem fordulna el. De lehet, hogy ez nem lenne gond. Lehet, hogy ez most így jó, ahogy van.

Lehet, érdemes lenne még a drágakövek felvételekor egy kis fényeffekt, a szörnyekkel ütközéskor meg képernyőrázás.
A menühöz még gondolkodom kisebb animáción.
Azt nem tudja valaki, hogyan lehetne megoldani, hogy ebben a négyszínű karakteres módban 8 szín lehessen? Amikor néhány karakternek más a színe, mint a többinek.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: Dots and Gems
« Reply #106 on: 2020.June.26. 12:28:18 »
a fenyeffekt jo otletnek tunik, bar lehet zavaro is, mert sok a potty, a kepernyorazas sztem tuti, es az anim a menube is.

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Dots and Gems
« Reply #107 on: 2020.July.24. 17:53:20 »
Időközben Geco-val beszélgetés közben felmerült, hogy a játék nem fut megfelelően EP64-en. A program elejefelé van egy sor:

  390 LET VM=(SPEEK(255,14644)+((SPEEK(255,14645)-128)*256))-35

Itt meghatározzuk, hol kezdődik a videolap, ahonnan majd adatokat akarunk kiolvasni. Elvileg a videomemória helye is eléggé változékony, mégis csak a program elején van ez a sor, ahova később nem tér vissza a gép, és mégis jól működik 128-as gépen.
EP64-en eleve lassabb az egész játék (nem gondoltam, hogy egy basic programnál is ekkora jelentősége van, hogy a videomemóriát használja-e vagy nem), és nem is működik jól, mert máshol van az LPT és a videomemória.
Addig jutottam el, hogy a következő sorok adatait bele kéne művelni a fenti VM változó értékébe:

   10 LET LPTSTART=SPEEK(255,16372)+(SPEEK(255,16373)-128)*256
   20 LET LPT=LPTSTART+20

De az is lehet, hogy a VM változó értékét teljesen át kéne írni. Még nem tudom, még kísérletezek vele. Addig is, ha valakinek van ötlete, megírhatja.

Addig is felteszem a legutóbbi verzióját a játéknak. Talán csak Zozo "ASK 3 A" ötlete került bele, hogy megnézze, van-e magnón kívül más is, és ha igen, akkor menti a pontszámtáblát.
[ Guests cannot view attachments ]
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Ferro73

  • EP lover
  • *
  • Posts: 967
  • Country: hu
Re: Dots and Gems
« Reply #108 on: 2020.July.24. 19:03:15 »

  390 LET VM=(SPEEK(255,14644)+((SPEEK(255,14645)-128)*256))-35


Erre egyszerűsítetted le.
Már volt EXOS kompatibilis változat.
Mert EXOS v2.0-nál máshol kezdődött az LPT.

Viszont az LPT kezdeti címe egy állandó helyen tárolódik.
Ezért volt olyan sok SPEEK az egyenletben./4/

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: Dots and Gems
« Reply #109 on: 2020.July.24. 19:23:28 »
igen, az lpt kezdocimet a bff4h tarolja, akkor az a verzio pont jo is volt :-)

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Dots and Gems
« Reply #110 on: 2020.July.24. 21:08:22 »
Visszakerestem a Dot collector turbo edition-t, amit tovább írva lett ez a program. Abban is ugyanez a VM érték volt. Hacsak nem néztem el valamit.
Előszedtem az Entersnake-et is, az EP64-en is helyesen fut ebből a szempontból (más probléma viszont van vele, arra majd talán később visszatérek), ott ez volt:

Code: [Select]
5870 DEF SCRINI
 5880   LET LPBADDL=SPEEK(255,16372)
 5890   LET LPBADDH=SPEEK(255,16373)
 5900   LET LPBADDH=LPBADDH-128:LET LPBSZ=255
 5910   LET LPBADD=LPBADDL+(256*LPBADDH)
 5920   SET VIDEO X 40:SET VIDEO Y 1
 5930   SET VIDEO MODE 0:SET VIDEO COLOR 1
 5940   FOR GIFF=1 TO 27
 5950     OPEN #GIFF:"video:"
 5960     PRINT #GIFF:CHR$(27);"o"
 5970     DISPLAY #GIFF:AT GIFF FROM 1 TO 1
 5980     SET #GIFF:SCROLL OFF
 5990     LET CIM=LPBADD+(GIFF*16)
 6000     LET GETAH=SPEEK(LPBSZ,CIM+5)-128
 6010     LET GETAN(GIFF)=SPEEK(LPBSZ,CIM+4)+(256*GETAH)
 6020   NEXT
 6030 END DEF

Szóval ide is majd ilyesmi kéne, csak ott még soronként más videolap volt, itt meg csak egy nagy videolap van. Megpróbálom innen ellopni az elvet és megcsinálni a VM változót. (De ha valaki esetleg megcsinálja, azt is örömmel fogadnám.)

Más probléma, hogy EP64-en lassabb a sebesség, a zene akadozik a menüben (az Entersnake-ben legalábbis), tehát több mindent át kéne majd írni, hogy ugyanúgy menjen EP64-en is. Nem tudom, ez így megéri-e, vagy jobb lenne külön elkészíteni az EP64-es verziót. De lehet, hogy csak arra kéne külön egy változó, hogy mennyit várakoztasson játék közben, és EP64-en kisebb lenne a szám.

UI.: Kipróbáltam, a Hungry Creature mit csinál EP64-en. Betöltődik, de nem indul el, leáll Insufficient memory üzenettel. Nem tudom, érdemes-e megpróbálni csinálni vele valamit, mert valaki pont ezzel akarna EP64-en játszani...
« Last Edit: 2020.July.24. 21:31:55 by szipucsu »
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: Dots and Gems
« Reply #111 on: 2020.July.25. 09:45:09 »
na, ez cim szamito teljesen jo, annyi, hogy a GETAH ertekadasanal nem 128-at, hanem 192-t kell kivonni, de ugy latszik a speek jol lekezeli a 16k-nal nagyobb szamokat, igy lehet a kivonas is folosleges.
Az, hogy hany videolapod van, nem szamit, az EXOS LPT-ben mindig 1 statusz sor + 27 karaktersor definicio van, akar 1 sor magas kepet definialsz, akar 27-et, tehat a lathato kepernyod kezdopoziciojatol, es annak magassagaval kell operalni az LPT-ben, ha nem nyitsz es zarsz uj videolapot, es nem scrollozol, akkor eleg egyszer kigyujteni a cimeket a lap letrehozasa utan, mint ahogy a lenti pelda mutatja, ha ezek valamelyiket csinalja a program, akkor erdemes inkabb egyesevel csak a szukseges LPB-kbol lekerdezni a cimet, mondjuk sprite utkozesdetektalasara.
szerintem eleg a varakozasokat atallitani.
HC-nel az a kerdes, hogy mennyivel kevesebb a memoria, ha sokkal, akkor nem hinnem, hogy erdemes probalkozni.

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Dots and Gems
« Reply #112 on: 2020.July.25. 11:14:15 »
HC-nel az a kerdes, hogy mennyivel kevesebb a memoria, ha sokkal, akkor nem hinnem, hogy erdemes probalkozni.
Ha külön DATA sorokat összevonok egyetlen sorba, azzal lehet memóriát spórolni? Vagy ha több utasítást több sor helyett egyetlen sorba összevonok? Majd még kísérletezek azzal is.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: Dots and Gems
« Reply #113 on: 2020.July.25. 11:42:47 »
Ha külön DATA sorokat összevonok egyetlen sorba, azzal lehet memóriát spórolni? Vagy ha több utasítást több sor helyett egyetlen sorba összevonok? Majd még kísérletezek azzal is.
Szerintem igen, ugyan nem tudom mennyit, de a sorszamokat, es az utasitas par bajtjat megsporolod 2 data osszevonasaval, tobb soros utasitasnal meg a sorszam bajtokat.

Offline Ferro73

  • EP lover
  • *
  • Posts: 967
  • Country: hu
Re: Dots and Gems
« Reply #114 on: 2020.July.26. 08:31:41 »

Code: [Select]
5870 DEF SCRINI
 5880   LET LPBADDL=SPEEK(255,16372)
 5890   LET LPBADDH=SPEEK(255,16373)
 5900   LET LPBADDH=LPBADDH-128:LET LPBSZ=255
 5910   LET LPBADD=LPBADDL+(256*LPBADDH)
 5920   SET VIDEO X 40:SET VIDEO Y 1
 5930   SET VIDEO MODE 0:SET VIDEO COLOR 1
 5940   !FOR GIFF=1 TO 27
 5950     OPEN #1:"video:"
 5960     PRINT #1:CHR$(27);"o"
 5970     DISPLAY #1:AT 1 FROM 1 TO 27
 5980     SET #1:SCROLL OFF
 5990     LET CIM=LPBADD+(1*16) !
 6000     LET GETAH=SPEEK(LPBSZ,CIM+5)-128
 6010     LET GETAN(GIFF)=SPEEK(LPBSZ,CIM+4)+(256*GETAH)
 6020   !NEXT
 6030 END DEF

Más probléma, hogy EP64-en lassabb a sebesség, a zene akadozik a menüben (az Entersnake-ben legalábbis), tehát több mindent át kéne majd írni, hogy ugyanúgy menjen EP64-en is. Nem tudom, ez így megéri-e, vagy jobb lenne külön elkészíteni az EP64-es verziót. De lehet, hogy csak arra kéne külön egy változó, hogy mennyit várakoztasson játék közben, és EP64-en kisebb lenne a szám.


esetleg egy TIME viszony szám?
valami ilyesmi
Code: [Select]
10 TIME "00:00:00"
20 FOR X =0 to 32767
30  IF TIME="00:00:01" THEN EXIT NEXT
40 NEXT
50 IF X<250 THEN SPEED=EP64BASIC
60 IF 250<X THEN SPEED=EP128BASIC
70 IF 1250<X THEN SPEED=EP64ZZZIP
80 IF 1550<X THEN SPEED=EP128ZZZIP


Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1291
  • Country: hu
  • Stray cat from Commodore alley
Re: Dots and Gems
« Reply #115 on: 2020.July.26. 10:39:02 »
Szerintem igen, ugyan nem tudom mennyit,
Megnéztem a régi PETSCII-s projektemben. Egy BASIC DATA sor kezdődik egy bájt hossz adattal, folytatódik három bájt sorszám adattal, utána jön a DATA tokenje, ami látszólag két bájt, majd egy szóköz és a végén az adatok szövegesen. Két DATA sor összevonásával 6-7 bájtot meg lehet spórolni. Csak arra kell vigyázni, hogy olyan adatcsoportot nem szabad összevonni másikkal (a végére ragasztani), amit RESTORE utasítás segítségével többször is használ a program.

Próbálom értelmezni az első forráskódot, de vannak dolgok, amiket nem teljesen értek. Az LPBSZ miért változó? Látszólag sehol sem változik az értéke. A -128-ak helyett nem inkább BAND 127 lenne a korrekt művelet? Az a FOR ciklus ami ki lett kommentezve az azért volt ott, hogy az EXOS LPT összes sorának külön meg lehessen határozni a memória címét?

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Dots and Gems
« Reply #116 on: 2020.July.26. 15:15:55 »
esetleg egy TIME viszony szám?
valami ilyesmi
Code: [Select]
10 TIME "00:00:00"
20 FOR X =0 to 32767
30  IF TIME="00:00:01" THEN EXIT NEXT
40 NEXT
50 IF X<250 THEN SPEED=EP64BASIC
60 IF 250<X THEN SPEED=EP128BASIC
70 IF 1250<X THEN SPEED=EP64ZZZIP
80 IF 1550<X THEN SPEED=EP128ZZZIP
Szerintem a TIME értékét nem jó elállítani, mert ha pl. órakártya van a gépben, akkor nem jó az időt elállítani, valami más módszerrel kéne mérni az időt. Vagy valami más módszerrel megállapítani, hogy az adott gép EP64 vagy EP128-e. Ha jól tudom, a VERNUM változó 2.1 a 128-as, 2.0 64-es gép esetében. Azt nem tudom, hogy létezik-e 2.0-ás verziójú Exos 128-as géphez, vagy 2.1-es 64-es géphez valami tévedés folytán valahol.
Ja, de mégsem jó a VERNUM változó, mert a Zzzip annak is kerekíti az értékét, gondolom. Na, most kipróbáltam: a Zzzip mindig 1-et ad vissza a VERNUM változó értékére, akár 2.1-es, akár 2.0-ás. Akkor ezt a Zzzip nem jól kezeli.
Van viszont a VER$ változó, aminek a 29-31. karakterében benne van az Exos/Basic verziószáma is, abból is ki lehetne olvasni. (Azt hiszem, a dokumentációkban nem is említik a VER$ és VERNUM változókat, valamelyik könyv elején írnak róluk.)
Hogy Zzzip vagy basic alól megy-e a program, azt legegyszerűbben a PI értékéből lehet megállapítani. Ha 3, akkor Zzzip megy (mert a Zzzip kerekít), ha nem 3 (3-nál nagyobb), akkor basic.
Hirtelen ez jut eszembe:

Code: [Select]
50 IF PI>3 AND VER$(31)=0 THEN LET SPEED=EP64BASIC
60 IF PI>3 AND VER$(31)>0 THEN LET SPEED=EP128BASIC
70 IF PI=3 AND VER$(31)=0 THEN LET SPEED=EP64ZZZIP
80 IF PI=3 AND VER$(31)>0 THEN LET SPEED=EP128ZZZIP

Itt most a program a verziószám utolsó számjegyét vizsgálja, ha az 0 (2.0-ás verzió), akkor EP64, ha 0-nál nagyobb (pl. 2.1-es, 2.2-es, stb. verzió), akkor EP128. Probléma lehet még, hogy állítólag van/volt 1.9-es Exos/basic is, és állítólag lesz 3.0-ás Exos/basic, nem tudom, ezeket is számba kellene-e venni.

UI.: Most nézem, a VER$-ban csak a basic verziószáma van benne, az Exos-é nincs. Gondolom, a VERNUM is a basic verziószáma, abból meg csak 2.0 és 2.1 létezik. (Volt az EXT bug javítása, de az úgy tudom, nem a basic, hanem az Exos módosítása.)
Nem lenne egyszerűbb egyébként a SPEEK-elés helyett IF VER$(31)=... THEN ...-nel állítani be az LPT és a videomemória kezdőcímét? Vagy az nem bombabiztos?
« Last Edit: 2020.July.26. 15:44:32 by szipucsu »
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Ferro73

  • EP lover
  • *
  • Posts: 967
  • Country: hu
Re: Dots and Gems
« Reply #117 on: 2020.July.26. 16:08:31 »
Szerintem a TIME értékét nem jó elállítani, mert ha pl. órakártya van a gépben, akkor nem jó az időt elállítani, valami más módszerrel kéne mérni az időt. Vagy valami más módszerrel megállapítani, hogy az adott gép EP64 vagy EP128-e.

Code: [Select]
50 IF IN(176)=252 AND PI<>3 THEN SPEED=EP64BASIC
60 IF IN(176)<=248 AND PI<>3 THEN SPEED=EP128BASIC
70 IF IN(176)=252 AND PI=3 THEN SPEED=EP64ZZZIP
80 IF IN(176)<=248 AND PI=3 THEN SPEED=EP128ZZZIP
Akkor ennél biztosabb nincs.
Code: [Select]
50 IF PI>3 AND VER$(31)=0 THEN LET SPEED=EP64BASIC
60 IF PI>3 AND VER$(31)>0 THEN LET SPEED=EP128BASIC
70 IF PI=3 AND VER$(31)=0 THEN LET SPEED=EP64ZZZIP
80 IF PI=3 AND VER$(31)>0 THEN LET SPEED=EP128ZZZIP

És akinek nincs VERNUM telepítve ?
ERROR ???

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Dots and Gems
« Reply #118 on: 2020.July.26. 16:48:15 »
Akkor ennél biztosabb nincs.
Ez tetszik, ezt fogom használni.

Quote
És akinek nincs VERNUM telepítve ?
Azt telepíteni kell, vagy hogyan érted? Nincs benne alapból minden gépben? Szerintem ugyanúgy benne van, mint a PI a basicben. (Vagy nem tudom, a PI-t a basicben tárolja-e a rendszer, vagy netalán már az Exos is tudja.)

Úgy emlékszem, valaki kitalálta az IS-BASIC v2.2-t, mert nagyon megörült, hogy a status sorban át tudja írni a szöveget a saját nevére. De lefogadom, a VERNUM és VER$ változókban már nem írta át 2.2-re. :D

UI.: A Zzzip ismertetőjében nincs benne, hogy a VERNUM-ot hogyan kezeli a Zzzip (alapból érdekes, mivel az egy tizedestört, amit kerekíteni szokott). Érdemes lenne ezt is beleírni.

UI2.: Ha az "Enterprise" szövegre van szüksége valakinek, azt nem kell karakterenként eltárolni, mert a VER$ változó elején is ott van. Ez akkor lehet jó, ha valaki pl. 256 bájtosnál nem nagyobb méretű programot ír valami versenyre, és spórolni kell a karakterekkel.

UI3.: Nem is kell a basic programnál megnézni külön, EP64 vagy EP128 van-e. Ha nincs lefordítva Zzzippel a program, a sebesség lehet a leggyorsabb, basicben az is lassú lesz.
« Last Edit: 2020.July.26. 17:35:31 by szipucsu »
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Dots and Gems
« Reply #119 on: 2020.July.29. 21:44:12 »
Az a FOR ciklus ami ki lett kommentezve az azért volt ott, hogy az EXOS LPT összes sorának külön meg lehessen határozni a memória címét?
Gondolom, igen. (Bár a részletekhez nem értek.) Abban a játékban nem egyetlen nagy videolap volt a játéktér, hanem soronként külön videolapokat nyitottunk a játéktérnek, így minden videolapon külön-külön kellett vizsgálni pl. az ütközéseket. Ez azért volt jó, mert minden videolapnak külön lehet palettát beállítani, így szép színes lehet a kép. Ez még az Entersnake játékban volt.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos