Welcome, Guest. Please login or register.


Author Topic: Uberswap (C64) (Read 910 times)

Offline nyuzga

  • EP addict
  • *
  • Posts: 2196
  • Country: hu
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Firefox 86.0 Firefox 86.0
    • View Profile
Uberswap (C64)
« on: 2021.March.13. 08:55:43 »
Egész jó kis c64 basic játék forráskóddal. Átírható ?

http://www.indieretronews.com/2021/03/uberswap-match-3-variant-for-commodore.html#more

Offline szipucsu

  • EP addict
  • *
  • Posts: 9196
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 86.0 Firefox 86.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re:Uberswap (C64)
« Reply #1 on: 2021.March.13. 11:47:54 »
Egész jó kis c64 basic játék forráskóddal. Átírható ?
Biztos meg lehetne csinálni EP-ra is, de inkább újraírni, mert kicsit más a két basic. Itt van a forrás.
A lényeg, hogy a táblán ha megcserélünk két elemet, mindkét elem körül meg kell nézni, van-e ugyanolyan elem, és ha igen, akkor azok körül is, majd ezeket mind el kell tüntetni. Ez lehet a húzósabb része, mert sok mindenre kell figyelni, pl. két egyforma elem megcserélésekor nem kell mindkettőt egymás után még egyszer megvizsgálni, és fontos, hogy egy szomszédos elem se maradjon ki. Az aknakereső elvével is itt adtam fel, de Ergognomik írt valami jó rutint erre, ide is olyasmi kéne. Utána az eltüntetett elemek oszlopát végig kell nézni, és a gravitáció elvén eggyel lejjebb pakolni az üres részek feletti részeket. Lehet, a forrásból pont jól ki lehetne az elvet lopni, de az is lehet, pont ezekhez vannak poke-ok. Az ismertetőben is írják, hogy vannak benne assembly részek. De alapvetően tuti megoldható EP-n is. Csiga sebességű lenne, de a Zzzip megoldaná.
Ha üres oszlop keletkezik, akkor össze kell rántani a mellette levőket, ez basicből nem lenne túl gyors, és mindig figyelni kéne, hol van üres oszlop, ez biztos sokat lassítana.
16 színű mód lenne talán a legjobb, de nagyobbak lennének így a cuccok, de azt TVC-re is könnyen át lehetne írni, csak ott meg nincs Zzzip
De nem a Swap is ilyesmi?
« Last Edit: 2021.March.13. 11:51:10 by szipucsu »
100 SOUND SOURCE 3,STYLE 16,LEFT 16,RIGHT 64,SYNC 2
110 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 2
120 SOUND PITCH 25,SYNC 2
Videos

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1071
  • Country: hu
  • Stray cat from Commodore alley
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 52.0 Firefox 52.0
    • View Profile
Re:Uberswap (C64)
« Reply #2 on: 2021.March.13. 19:27:42 »
Ki lehetne hüvelyezni mit és hogyan csinál, ha lenne hozzá elég türelme valakinek. Az assembly részek az elemek mozgatását végzik, semmi mást. A többi mind BASIC-ben van megírva. Egyébként írja a szerző, hogy BASIC-ben dög lassú, ő is egy fordítóval tette élvezhető sebességűvé.

Egyébként az elemek PETSCII grafikus karakterekből vannak összeállítva 2x2-es egységekké. És hát az attribútumos (mert ugye nincs másfajta) karakteres képernyőn fut a program, ami kicsit nehezít az esetleges átíráson.

Offline szipucsu

  • EP addict
  • *
  • Posts: 9196
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 86.0 Firefox 86.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re:Uberswap (C64)
« Reply #3 on: 2021.March.14. 15:02:01 »
ErgoGnomik: Ha jól sejtem, a Commodore basichez érthetsz valamennyire. Nincs kedved átírni ezt a játékot? Elég lenne csak annyira, hogy éppen működjön. A grafikai részét meg egyéb körítéseket majd megcsinálhatom.
2x2 méretű grafikus elemeket használ? Ebben nem voltam biztos, mert nem túl nagyok a karakterek, szerintem 1 karakter 1 pályaelem is lehetne.
Érdemes lehetne talán egy tömbben tárolni a pályát és abban átírni mindig, ha valami változás történik a pályán. Így még utána is lehetne variálni, milyen videomód legyen, de alighanem az attribútum mód tűnik a legjobbnak, esetleg a karakteres mód, de azt is át lehet állítani gracha módra majd, akkor egy karakteren belül több szín is lehet, de összességében kevesebb szín lenne és a felbontás is rosszabb lenne. Vagy mehetne 4 vagy 16 színű módban is, akkor különböző színű karaktereket egymásra lehet másolni és úgy látványosabb, de lassabb is lenne. De még mindig talán az attribútum mód a legjobb.
Érdemes lenne a játékteret a képernyő felső részére tenni, és alul lenne minden kijelző, és alul másmilyen színű/módú videolapokkal látványosabb lenne.
100 SOUND SOURCE 3,STYLE 16,LEFT 16,RIGHT 64,SYNC 2
110 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 2
120 SOUND PITCH 25,SYNC 2
Videos

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1071
  • Country: hu
  • Stray cat from Commodore alley
  • OS:
  • Windows NT 6.3 Windows NT 6.3
  • Browser:
  • Firefox 78.0 Firefox 78.0
    • View Profile
Re:Uberswap (C64)
« Reply #4 on: 2021.March.14. 15:22:26 »
Igazából a C64 BASIC-jén nincs sok minden érteni való, lévén csak egy nagyon alap nyelv. Amit érdemes tudni, az a gép működése, hogy mit és hová kell POKE-olni, hogy a grafikát és zenét működtetni lehessen. Ki tudom ezeket a dolgokat deríteni, de nincs benne rutinom a C16 vagy Plus/4 masinákkal ellentétben. Ráadásul most a melóban is jobban kell tempóznom, és a pluszin van egy hobbi projektem, amit szeretnék kiszenvedni végre magamból. Így nem szívesen kezdenék hozzá. :( Viszont a nyári két hetes szabadságomon valószínűleg tudnék belőle Plus/4-es változatot készíteni, csak az nem segít rajtad. ;)

Offline szipucsu

  • EP addict
  • *
  • Posts: 9196
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 86.0 Firefox 86.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re:Uberswap (C64)
« Reply #5 on: 2021.March.14. 17:07:56 »
valószínűleg tudnék belőle Plus/4-es változatot készíteni, csak az nem segít rajtad. ;)
A Plus4-es basic emberközelibb lehet, mint a C64-es. Talán az is segíthet. (De pl. PRINT AT azon sincs, de mintha lenne helyette valami más, talán te írtad egyszer, de lehet, hogy más.)
De lehet, még mindig a nulláról lenne jobb megírni a játékot. Nem tudom, mennyire lesz hozzá indíttatásom, még meglátom.
100 SOUND SOURCE 3,STYLE 16,LEFT 16,RIGHT 64,SYNC 2
110 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 2
120 SOUND PITCH 25,SYNC 2
Videos

Offline geco

  • EP addict
  • *
  • Posts: 6354
  • Country: hu
  • OS:
  • Linux Linux
  • Browser:
  • Chrome 88.0.4324.181 Chrome 88.0.4324.181
    • View Profile
Re:Uberswap (C64)
« Reply #6 on: 2021.March.14. 18:37:23 »
A basic reszhez szinte hozza se kell nyulni, szerintem ugy athuzhato ep-re, annyi, hogy c64 basic rugalmasan kezeli a space es a lezaro aposztrof hianyat. Print at nincs, ott a "-on beluli vezerlokarakterekkel pozicionalnak. Az erdekes resz, a gepi kodu betetekbol adodik, mag abbol , hogy a grafika, zene pokok hada.

Offline szipucsu

  • EP addict
  • *
  • Posts: 9196
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 86.0 Firefox 86.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re:Uberswap (C64)
« Reply #7 on: 2021.March.14. 19:12:56 »
Azt sem értem teljesen, hogy a Githubon a basic mappában hogyan érhető el maga a program. Bal oldalon kikattintgattam azokat a nyilakat, és újabb programsorok is megjelentek. Az egészet copy-pastéval lemásoltam, itt van, remélem, nem maradt ki semmi:
* uberswap.txt (15.69 kB - downloaded 78 times.)
Néhány programsor kétszer szerepel, a régi verzió is benne van, pl. a 110-es sor ilyen. Nem tudom, a Githubon be lehet-e állítani, hogy csak a legutóbbi verziót mutassa. Ahogy nézem, mindenhol csak a go változó nevét írták át gz-re a régi verzióhoz képest. (Vagy fordítva, de gondolom, a piros a régi, a zöld az új verzió.)
A változók végén a % jelek a $ megfelelői?
Mindenképpen Commodore szaki kéne, hogy az a sok poke mit csinál.

PRINT AT hiányában az lehet érdekes, hogyan oldják meg, ha PRINT AT X,Y: van, amikor X és Y változó, de biztos erre is poke kell.
100 SOUND SOURCE 3,STYLE 16,LEFT 16,RIGHT 64,SYNC 2
110 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 2
120 SOUND PITCH 25,SYNC 2
Videos

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1071
  • Country: hu
  • Stray cat from Commodore alley
  • OS:
  • Windows NT 6.3 Windows NT 6.3
  • Browser:
  • Firefox 78.0 Firefox 78.0
    • View Profile
Re:Uberswap (C64)
« Reply #8 on: 2021.March.14. 20:06:36 »
Azt sem értem teljesen, hogy a Githubon a basic mappában hogyan érhető el maga a program. Bal oldalon kikattintgattam azokat a nyilakat, és újabb programsorok is megjelentek. Az egészet copy-pastéval lemásoltam, itt van, remélem, nem maradt ki semmi:
(Attachment Link)
Néhány programsor kétszer szerepel, a régi verzió is benne van, pl. a 110-es sor ilyen. Nem tudom, a Githubon be lehet-e állítani, hogy csak a legutóbbi verziót mutassa. Ahogy nézem, mindenhol csak a go változó nevét írták át gz-re a régi verzióhoz képest. (Vagy fordítva, de gondolom, a piros a régi, a zöld az új verzió.)
A változók végén a % jelek a $ megfelelői?
Mindenképpen Commodore szaki kéne, hogy az a sok poke mit csinál.

PRINT AT hiányában az lehet érdekes, hogyan oldják meg, ha PRINT AT X,Y: van, amikor X és Y változó, de biztos erre is poke kell.
Magára az uberswap.bas fájlnévre kellett volna kattintanod. Az megnyitja a fájl aktuális állapotát. Amit néztél az egy eltéréseket összegző megjelenítés a legutóbbi változtatásokról, ami a go-ról gz-re átnevezés. Ezért is vannak benne duplázott sorok.

A % azt jelenti, hogy egész típusú numerikus változó, vagyis szám, aminek az értéke -32768..32767 lehet.

Ahogy azt szerintem már korábban is mondtuk és geco most is elismételte, a PRINT parancsban az idézőjelek közé zárt karakterlánc vezérlő karaktereket is tartalmazhat, mint kurzor fel, le, jobbra, balra, képernyő bal felső sarkába, képernyő törlés, kiírás színének megváltoztatása. Ezzel lehet pozicionálni a szövegeket a kép tetszőleges pontjára. Lásd a 35000-es sortól kezdődő szubrutint. Bár itt eltérő a kódolás attól, amit C64-en látnál, mert PC-n vagy böngészőkben a PETSCII grafikus karaktereket nagyon nehéz megjeleníteni.

Offline szipucsu

  • EP addict
  • *
  • Posts: 9196
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 86.0 Firefox 86.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re:Uberswap (C64)
« Reply #9 on: 2021.March.14. 21:03:31 »
A basic programot sikerült most már megjeleníteni rendesen:
* uberswap.txt (15.55 kB - downloaded 79 times.)

Quote
A % azt jelenti, hogy egész típusú numerikus változó, vagyis szám, aminek az értéke -32768..32767 lehet.
Akkor a % itt simán elhagyható EP-n.

Ha jól számoltam a videón, 26 sor van a képernyőn, így a kijelzők lentre rakása nem feltétlen jó ötlet, egyetlen sor maradna nekik, de lehet, úgy is jó lentre.

Ahogy azt szerintem már korábban is mondtuk és geco most is elismételte, a PRINT parancsban az idézőjelek közé zárt karakterlánc vezérlő karaktereket is tartalmazhat
Azt értettem, tudtam eddig is. Erre írtam a PRINT AT X,Y-t, ami neked kerülhette el a figyelmed. Pl. PRINT AT 5,10-nél 5 és 10 vezérlőkarakter kell, de X,Y-nál mindig eltérő számú kell, így az előre elkészített vezérlőkarakteres PRINT-ek nem jók. (Erre mondta valaki, vagy te, vagy más, hogy ilyenre van valami más utasítás, ha minden igaz.) De ez nem annyira fontos.
100 SOUND SOURCE 3,STYLE 16,LEFT 16,RIGHT 64,SYNC 2
110 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 2
120 SOUND PITCH 25,SYNC 2
Videos

Offline geco

  • EP addict
  • *
  • Posts: 6354
  • Country: hu
  • OS:
  • Linux Linux
  • Browser:
  • Chrome 88.0.4324.181 Chrome 88.0.4324.181
    • View Profile
Re:Uberswap (C64)
« Reply #10 on: 2021.March.14. 22:05:54 »
C64 kepernyoje 40x25 alapbol, ezen novelni nem lehet, max sprite-okat lehet kirakni a keretre trukkel. A szelesseget lehet 38 karakterre csokkenteni, es raster interrupt segitsegevel lehet meg egyeb manipulaciot vegezni, de szerintem ez utobbi ketto nem fordul elo a basic programban.

Offline geco

  • EP addict
  • *
  • Posts: 6354
  • Country: hu
  • OS:
  • Linux Linux
  • Browser:
  • Chrome 88.0.4324.181 Chrome 88.0.4324.181
    • View Profile
Re:Uberswap (C64)
« Reply #11 on: 2021.March.15. 10:38:40 »
Megneztem, a gepi kodu resz nem csinal mast, mint fuggoleges/vizszintes elemcseret, ha lyuk keletkezett, akkor a lefele mozgatast, es a palya elmenteset/visszaallitasat, ugy fest, az osszes tobbi (zene/cursor sprite) pokolodik.

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1071
  • Country: hu
  • Stray cat from Commodore alley
  • OS:
  • Windows NT 6.3 Windows NT 6.3
  • Browser:
  • Firefox 78.0 Firefox 78.0
    • View Profile
Re:Uberswap (C64)
« Reply #12 on: 2021.March.15. 14:38:25 »
. de X,Y-nál mindig eltérő számú kell, így az előre elkészített vezérlőkarakteres PRINT-ek nem jók.
Nem-e? Ehhez mit szólsz? PRINT "{ugrás bal felső sarokba}";LEFT$("{39*jobbra}",X);LEFT$("{24*le}",Y);A$

Offline szipucsu

  • EP addict
  • *
  • Posts: 9196
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Chrome 89.0.4389.82 Chrome 89.0.4389.82
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re:Uberswap (C64)
« Reply #13 on: 2021.March.15. 15:30:40 »
Nem-e? Ehhez mit szólsz? PRINT "{ugrás bal felső sarokba}";LEFT$("{39*jobbra}",X);LEFT$("{24*le}",Y);A$
Áhá, szóval vannak ilyen kis finomságok is! Akkor most már kígyós karakteres játékot vagy karakteres pekment sem lenne olyan nehéz írni Commodore-ra! Bár ez off, én így képzeltem volna a PRINT AT-ot Commodore-on:

PRINT AT X,Y:A$

FOR A=1 TO X
PRINT "{jobbra}";
NEXT
FOR A=1 TO Y
PRINT "{le}";
NEXT
PRINT A$

az osszes tobbi (zene/cursor sprite) pokolodik.
Hang, zene van benne? A videón nem hallottam, de lehet, valami gond volt a géppel, pedig a hangerőt is feltoltam.
100 SOUND SOURCE 3,STYLE 16,LEFT 16,RIGHT 64,SYNC 2
110 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 2
120 SOUND PITCH 25,SYNC 2
Videos

Offline szipucsu

  • EP addict
  • *
  • Posts: 9196
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 86.0 Firefox 86.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re:Uberswap (C64)
« Reply #14 on: 2021.March.15. 16:37:17 »
Első probléma, a sorszámok. Az eleje kivételével öt számjegyűek. Én egyesével átírnám kisebbre, mondjuk tízesével növekvőre. Ez azonban nem tesz jót a gosuboknak. Így még ezt megelőzően át lehetne írni az összes gosub-ot call eljárásra. Ahova a gosub ugrik, az lenne def blokknév, a return helyett meg end def lenne. Szerencsére a szöveges dokumentumban lazán megoldható, hogy az összes return-t end def-re írja át, és a gosub-ot meg call-ra, így kicsit kevesebbet kell majd pötyögni. Szóval én így esnék neki. Nem tudom, ennek a változtatásnak lehet-e bármilyen hátránya, pl. nem mindig az általunk értelmezett eljárás első sorára megy a call, vagy kiugrál, önmagát hívja meg vagy bármi, ami gosubbal még működik, call-lal már nem. Belső változók keletkeznének így, amit a Zzzip nem csíp, de majd kihozhatjuk őket a főprogram elé numeric után. Ahol THEN után van egyből RETURN, nyilván nem lehet END DEF-re cserélni, így pl. GOTO kéne, és egyelőre hagyni, ahogy van, és ha meglesznek a sorszámok, akkor kellene átírni.
Vélemény?
Feltettem ide a programlistát. Bárki megnézheti, de szerkesztéshez engedély kell. De meg lehet csinálni úgy is, hogy bárki szerkeszthesse, olyan még úgyse volt, max. jönnek ráérő internet-cowboyok és elrontják az egészet. Ha valaki szeretne engedélyt a szerkesztéshez, szóljon! Elvileg gmail kell hozzá.
« Last Edit: 2021.March.15. 16:42:43 by szipucsu »
100 SOUND SOURCE 3,STYLE 16,LEFT 16,RIGHT 64,SYNC 2
110 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 2
120 SOUND PITCH 25,SYNC 2
Videos