1 Ostatnio edytowany przez szymonu (2022-02-19 22:35:19)

Realizuję od dłuższego czasu mój hobbystyczny projekt polegający na implementacji prostej gry snake na maszynach 8/16 bitowych które posiadam :-) Super poznawcze ćwiczenie i porównanie maszyn.

Założenie bazowe jest że wykorzystuję podstawowy Basic jaki jest w maszynie.
Zawsze tematy są te same - ja ustawić kursor w odpowiedniej pozycji, jak odczytać wartość z ekranu i odczyt klawisza z bufora ewentualnie manipulatora :-) Podobnie przy próbie realizacji wersji graficznej.

Do tej pory jakoś szło, apple ii, małe atari, zx81, zx48, amstrad 6128, portfolio itd.

Niestety utknąłem na ST. Czy ktoś wie jak przy pomocy POKE, PEEK odczytać kod znaku w położeniu x,y?
Założenie jest że kod ma być Atari Basic ST.

2

Ja bym planszę gry trzymał w tablicy. Łatwiej i szybciej z niej odczytać. Jedynym mankamentem jest konieczność zapisu w dwóch miejscach: tablicy i ekranie, ale nie powinno mieć to raczej wpływu na tempo rozgrywki.

Zawsze mam rację, tylko nikt mnie nie słucha.

3

heh wiem wiem ale to obejście i nie będzie spełniać założeń do porównania implementacji :-)

Skoro w wielu przypadkach udało się czytać pamięć obrazu to pewnie i tu się uda. Tak było przynajmniej w przypadku c64 i zx81 :-)

4

C64 i ZX81 mają sprzętowy tryb tekstowy. Atari ST ma wyłącznie tryby graficzne.

https://www.youtube.com/watch?v=jofNR_WkoCE

Zalecałbym przejście na GFA Basic, to jest najlepszy Basic na ST. Atari ST Basic jest... słaby.

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

6

Ale GFA Basic ma funkcję do odczytu znaku x,y z ekranu? Bo przeglądałem opis i nie znalazłem niestety :-(

7 Ostatnio edytowany przez Cyprian (2022-02-19 22:41:41)

@szymonu jest odczyt znaku z urządzeń wejścia / wyjścia ale nie kojarzę żeby była z ekranu.

napisz w jakim celu chcesz czytać znak z ekranu.

Tu masz funkcje znakowe wejścia/ wyjścia GEMDOS: http://toshyp.atari.org/en/005010.html

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

8

Atari ST musiałoby przechowywać w pamięci "ekran tekstowy" oprócz standardowej pamięci ekranu. Nie sądzę, aby tak było, dlatego zaproponowałem na początku utworzenie tablicy odzwierciedlającej ekran tekstowy.

Zawsze mam rację, tylko nikt mnie nie słucha.

9

Potrzebuję tego aby odczytywać kolizje węża z obramowaniem, dodatkowymi przeszkodami oraz aby rejestrować kontakt z "jedzeniem" :-)
Analizuję sporo materiału teraz ale chyba pomysł Lizarda wydaje się jedynym :-(

10 Ostatnio edytowany przez qbahusak (2022-02-22 13:01:47)

To raczej do tej pory korzystałeś z "ficzera", jakim jest tablica znaków do wyświetlania na ekranie, chociażby była "pod maską". Jeśli takowej nie masz - musisz zrobić. Na Amidze będziesz miał ten sam problem.

11

W sumie GFA jest chyba podstawowym basicem na ST. O tym Atari Basic ST nawet nie słyszałem. :)

12

Jest jeszcze moj ulubiony Omikron Basic.  Z tym że GFA jest najlepszą opcją. Najszybszy, najbardziej popularny no i nadal wspierany.

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

13

Panowie, tylko pamiętajcie, że ST Basic był w pakiecie (bodajże w wersji Discovery Pack), Omikron to firma trzecia, a GFA to duchowy następca Turbo Basica XL (nawet autor ten sam). A inne były (z tego co czytam) założenia szymonu.
Co do założeń autora wątku - chciałbym się dowiedzieć, czemu odczytuje przez PEEK i POKE, a nie przez LOCATE? Bo tu wychodzi za podstawowy BASIC...

Sikor umarł...

14

Sikor - zgadza się z ST był dostarczany ST Basic. Dlatego na niego padło.

A co do PEEK i POKE to tam gdzie jest funkcja LOCATE lub podobna to jej używam. Ale w ZX81 i C64 trzeba było użyć POKE i PEEK.
Tak jak napisałeś staram się maksymalnie użyć istniejącego basic'a - jak trafiam na braki wtedy stosuję obejścia.

Ale tak z obecnych doświadczeń to Amstrad CPC 6128 wymiata z basic'iem, komendami i szybkością. Wśród 8-bit to numer 1. Choć sercem jestem przy małym ATARI to niestety obiektywnie trzeba to napisać.

No nic - wracam do bojów z ST :-)

15

Jedyny sposób jaki widzę to odczyt powiedzmy tych paru bajtów gdzie masz dany znak, choć bitplany komplikują sytuacje. I potem porównujesz z wzorami znaków - nie musisz porównywać wszystkiego, tylko np górę i dół albo środek.
Ale to wszystko złe praktyki, bardzo złe, zrób tak jak pisali poprzednicy, trzymaj osobno tablicę reprezentującą pole gry.