OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů


Právě je 28.03.2024, 21:38

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 19 ]  Přejít na stránku 1, 2  Další
Autor Zpráva
 Předmět příspěvku: Loxley - tohle ze je BASIC?
PříspěvekNapsal: 20.02.2022, 00:04 
Offline
Profík
Uživatelský avatar

Registrován: 20.02.2017, 01:17
Příspěvky: 800
Has thanked: 19 times
Been thanked: 48 times
Loxley, is programmed in Interpreted Sinclair Basic with ROM calls, under the premise of not executing any machine code in RAM (PC register always in #0000-#3FFF range). It will be submitted to the Bytemaniacos' Basic contest 2022.

https://worldxxisoft.itch.io/loxley

Ve videu je krasne videt plynuly pohyb maskovanych sprajtu. Muze mi nekdo prosim vysvetlit vo co tu go, protoze tohle urcite v BASICu na Spectru nejde udelat, ledaze snad pres kompilator. Ale oni s tim snad lezou do BASIC souteze (?!).


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Loxley - tohle ze je BASIC?
PříspěvekNapsal: 21.02.2022, 18:13 
Offline
Pan Štábní

Registrován: 12.05.2013, 22:24
Příspěvky: 1508
Bydliště: u Prahy
Has thanked: 44 times
Been thanked: 380 times
A viděl jsi Scroll a Animo od Busyho?
Taky Basic.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Loxley - tohle ze je BASIC?
PříspěvekNapsal: 21.02.2022, 19:34 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 09.10.2013, 19:04
Příspěvky: 1403
Has thanked: 130 times
Been thanked: 71 times
Takže od Busyho sa to tam pozrieť nedá a tiež ani stiahnuť, ale to nie je podstatné. Keďže mu to nikto nevysvetlil, skúsim to ja. BASIC je interpreter (teda aspoň na ZX Spectre v našom prípade). Funguje to tak, že program sa postupne spracováva príkaz po príkaze a vykonáva. Každý jeden príkaz sa musí niekde v tabuľke nájsť, musia sa vyhodnotiť parametre, ktoré sa mu odovzdajú a potom sa musí spustiť. Toto celé sa pri každom príkaze opakuje a zaberá to určitý čas procesora. Pokiaľ ale ty nahádžeš niekde do voľnej pamäte parametre pre daný príkaz, prípadne nejaký podprogram v samotnom kóde BASICu a len ich odovzdáš a spustíš daný príkaz alebo podprogram, ušetril si čas, ktorý musí procesor vynaložiť na spracovanie riadku v BASICu, vyhľadanie príkazu a nastavenie parametrov. Áno, parametre musíš síce nastaviť ty, ale ide o to, že príkaz na zobrazenie čiary potrebuje hodnotu v registri, kde sa má začať a kde sa má skončiť. To sa síce dá nastaviť v programe, lenže ten pracuje s reálnymi číslami a tie treba prekonvertovať na hodnotu do toho registra. To je čas, ktorý ušetríš, pretože ty zavoláš príkaz s pripravenými hodnotami. Ak vieš, kde je podprogram na zobrazenie znaku, stačí ti nastaviť nejaké obrazové dáta sprajtu miesto dát toho znaku a zavolať podprogram. Miesto znaku vylezie sprajt 8x8. Zavoláš to 4x a máš sprajt 16x16. Ak by si to kreslil cez príkazy v programe, tak len vykreslenie by bolo niekoľkonásobne pomalšie a skončil si. To isté vieš urobiť so zvukom a pri kreslení. Samozrejme BASICový program bude vyzerať divne, lebo tam budú len samé dáta, ktoré chceš použiť a cez POKE sa do pamäte nasypú. Samotné volanie podprogramov a príkazov je ale už rýchlejšie a potom vieš vytvoriť niečo také ako vidíš tam.

_________________
Sharp MZ-821
Milsa MZ-841


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Loxley - tohle ze je BASIC?
PříspěvekNapsal: 21.02.2022, 20:30 
Offline
Pan Štábní

Registrován: 12.05.2013, 22:24
Příspěvky: 1508
Bydliště: u Prahy
Has thanked: 44 times
Been thanked: 380 times
Milsa asi myslí použití strojákových rutin, ale to je omyl.
Busyho dema (party do dema Cowina) jsou opravdu v Basicu. Používají jen šikovně připravená data.
Ten Loxley je na tom podobně, sprity má předpřipravené i s pozadím (vzorek, žebřík, prázdno) a tiskne je normálně jako znaky, jen přepisováním, bez předchozího mazání.
Je to vidět při nastupování na žebřík a z žebříku - stojím vedle, najednou jsme na něm, žádná mezifáze, na tu by potřeboval další paměť.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Loxley - tohle ze je BASIC?
PříspěvekNapsal: 21.02.2022, 21:30 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 09.10.2013, 19:04
Příspěvky: 1403
Has thanked: 130 times
Been thanked: 71 times
Busy píše:
Milsa píše:
Takže od Busyho sa to tam pozrieť nedá a tiež ani stiahnuť
Da sa, ale na tom demozoo to nie je moc intuitivne a treba sa tam preklikat.
Cele basicove demo Cowina sa da stiahnut tu alebo tu. Nie je nijak chranene, kedykolvek ho mozno breaknut a pozriet sa ako su jednotlive efekty v tom basicu naprogramovane.
Milsa píše:
Pokiaľ ale ty nahádžeš niekde do voľnej pamäte parametre pre daný príkaz, prípadne nejaký podprogram v samotnom kóde BASICu a len ich odovzdáš a spustíš daný príkaz alebo podprogram, ušetril si čas, ...
Toto by ma blizsie zaujimalo, ako to myslis. Vedel by si napisat nejaky kratucky priklad, ako v cistom basicu, bez pouzita strojaku, takymtom sposobom urychlit napriklad kreslenie ciar ktore by sa normalne robili prikazmi PLOT a DRAW ?

Veď som tam písal, že s použítím POKE. Neviem presne aké parametre BASICové rutiny používajú, ale v princípe som to myslel takto: Pripravíš dáta do pamäte cez POKE, kľudne aj viac dát naraz a potom len spúšťaš cez USR s odvolávkou, kde sa dáta nachádzajú. Tak by malo fungovať, napr., vykresľovanie znakov/sprajtov. Ten PLOT a DRAW možno pýtajú dáta priamo v registroch, čo by bolo ťažšie dosiahnuť, ak bude PC register len v časti 0000h-3fffh, neviem, naštudované to nemám. Ide mi o princíp, čo môže ako urýchliť.

_________________
Sharp MZ-821
Milsa MZ-841


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Loxley - tohle ze je BASIC?
PříspěvekNapsal: 21.02.2022, 21:47 
Offline
Pan Štábní

Registrován: 12.05.2013, 22:24
Příspěvky: 1508
Bydliště: u Prahy
Has thanked: 44 times
Been thanked: 380 times
Jenže podmínkou těchto Basicových záležitostí bývá, že se USR nesmí použít.
Pak by bylo možné kompletní strojákový program vydávat za Basic jen tím, že ho zapouzdřím do Basicového řádku.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Loxley - tohle ze je BASIC?
PříspěvekNapsal: 21.02.2022, 22:08 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 09.10.2013, 19:04
Příspěvky: 1403
Has thanked: 130 times
Been thanked: 71 times
Aha, to som ale nevedel.

_________________
Sharp MZ-821
Milsa MZ-841


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Loxley - tohle ze je BASIC?
PříspěvekNapsal: 21.02.2022, 23:27 
Offline
Pan Štábní

Registrován: 12.05.2013, 22:24
Příspěvky: 1508
Bydliště: u Prahy
Has thanked: 44 times
Been thanked: 380 times
Pokud si nemůžu (nesmím) pomoci strojovou rutinou, je pořád ještě k dispozici (jak byl označen v jednom demu na Spectru) "fucking pre-calc".


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Loxley - tohle ze je BASIC?
PříspěvekNapsal: 22.02.2022, 11:39 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
Milsa píše:
Veď som tam písal, že s použítím POKE. Neviem presne aké parametre BASICové rutiny používajú, ale v princípe som to myslel takto: Pripravíš dáta do pamäte cez POKE, kľudne aj viac dát naraz a potom len spúšťaš cez USR...
Ako uz vyssie napisal dex, USR pouzit nemozes, pretoze volas priamo svoj vlastny strojak kde si mozes robit co len chces, a to uz potom nie je cisty basic. A v demach Cowina a Balik je vsetko v cistom basicu, ani jedno USR nie je pouzite.

Inak, rozmyslal som nad tvojim navrhom najprv naPOKEovat parametre, nasledne nacitat parametre vo vlastnom strojaku a potom priame volanie vykonnej casti prikazu do romky (ak som to spravne pochopil). Napriklad:
Kód:
POKE 40000,riadok : POKE 40001,stlpec : POKE 40002,CODE "x" : RANDOMIZE USR 50000
Strojak:
Kód:
org 50000
ld a,#16 ; Kod pre AT
rst #10
ld de,40000
ld bc,3
jp #203C
Ale cele toto mi stale vychadza ovela pomalsie, nez normalne poctive vykonanie basic prikazu PRINT AT riadok,stlpec;"x"


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Loxley - tohle ze je BASIC?
PříspěvekNapsal: 22.02.2022, 15:14 
Offline
Radil

Registrován: 18.10.2014, 23:10
Příspěvky: 377
Has thanked: 28 times
Been thanked: 120 times
dex píše:
Jenže podmínkou těchto Basicových záležitostí bývá, že se USR nesmí použít.
Pak by bylo možné kompletní strojákový program vydávat za Basic jen tím, že ho zapouzdřím do Basicového řádku.

Neviem ako presne to je definované a či je to vo všetkých súťažiach rovnaké, ale tu používajú USR na volanie rutín v romke a tvrdia že celú dobu je PC v oblasti ROM, takže vlastný kód nepoužívajú.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Loxley - tohle ze je BASIC?
PříspěvekNapsal: 22.02.2022, 16:00 
Offline
Profík

Registrován: 06.02.2019, 11:47
Příspěvky: 898
Has thanked: 51 times
Been thanked: 230 times
dex píše:
Jenže podmínkou těchto Basicových záležitostí bývá, že se USR nesmí použít.
Pak by bylo možné kompletní strojákový program vydávat za Basic jen tím, že ho zapouzdřím do Basicového řádku.

Hneď v prvej vete sa píše
tommik píše:
Loxley, is programmed in Interpreted Sinclair Basic with ROM calls, under the premise of not executing any machine code in RAM (PC register always in #0000-#3FFF range).
...takže chápem to tak, že USRxxxx tam bude.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Loxley - tohle ze je BASIC?
PříspěvekNapsal: 22.02.2022, 20:17 
Offline
Site Admin
Uživatelský avatar

Registrován: 11.05.2013, 23:48
Příspěvky: 10111
Bydliště: Praha
Has thanked: 1953 times
Been thanked: 1517 times
Tak ono si stačí stáhnout balíček z jejich stránek a podívat se na ten "zdroják". To je slušná divočina.

_________________
Amiga/Amstrad/Atari/Commodore/Mac/Nintendo/PS/PC/Sega/Tandy/ZX


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Loxley - tohle ze je BASIC?
PříspěvekNapsal: 22.02.2022, 20:49 
Offline
Pan Generální
Uživatelský avatar

Registrován: 18.05.2013, 14:56
Příspěvky: 2331
Has thanked: 303 times
Been thanked: 637 times
Jen taková idea... zrychlí se PRINT když místo dvojic/trojic znaků budu používat dvou/tří znakové tokeny? (AT, OR, <=, RND, INT, ABS ...)

Jde mi o to, že když se kreslí sprity s upraveným fontem, tak by se to dalo optimalizovat tak, aby sprite mohl být složený ze znaků tokenu, zvlášť pokud se tokeny nepřekrývají a každý používá unikátní znaky.

_________________
https://cygnus.speccy.cz ZX Spectrum 128k, Betadisk, DivIDE, ESXDOS


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Loxley - tohle ze je BASIC?
PříspěvekNapsal: 22.02.2022, 22:07 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
zxcygnus píše:
Jen taková idea... zrychlí se PRINT když místo dvojic/trojic znaků budu používat dvou/tří znakové tokeny? (AT, OR, <=, RND, INT, ABS ...)
Prave naopak, este sa spomali. Pretoze okrem vypisu samotnych znakov sa cas vypisu mierne navysi o dekodovanie tokenu a prehladavanie tabulky tokenov.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Loxley - tohle ze je BASIC?
PříspěvekNapsal: 22.02.2022, 22:17 
Offline
Profík
Uživatelský avatar

Registrován: 20.02.2017, 01:17
Příspěvky: 800
Has thanked: 19 times
Been thanked: 48 times
Moc děkuji za reakce. Takže je to magic precalc? No to používali i borci jako Joffa Smith ne?


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 19 ]  Přejít na stránku 1, 2  Další

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 5 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz