1

Patrząc na wyczyny niektórych osób, które aktywnie wspomagają się tzw. AI w codziennym programowaniu zadałem sobie pytanie, czy współczesne silniki dużych modeli językowych potrafią napisać grę, kiedy są obsługiwane przez użytkowników niemających zupełnie pojęcia o programowaniu. Takich wiecie, którzy mieli 30 lat temu Atari, mają najprostszą "subskrypcję AI" i chcą sobie stworzyć grę, która wygląda jak z dzieciństwa.

Wcieliłem się więc w taką osobę, ściągnąłem sobie MADS, zestaw skilli, które przygotował Ilmenit i sobie promptowałem po polsku, bez podawania jakichkolwiek technicznych informacji. Do wykonania wybrałem model Gemini Flash 3.5, a rezultaty są na moim Gitlabie - to było naprawdę kilkanaście prostych poleceń typu:

- dodaj drzewa, które znikają po trzech strzałach
- dodaj ptaka który co kilkanaście sekund stara się trafić gracza
- niech AI przeciwnika co 10 trafień strzela lepiej

Postaci, ptak itp. zostały narysowane przez LLM, sam sobie dopowiedział, że trzeba dodać dźwięki strzelania, trafienia itp.

Czy możecie wyjaśnić, Stirlitz, dlaczego wasz służbowy adres stirlitz@rsha.gov.de ma aliasa justas@gru.su?
Nie czytam PM. Proszę używać e-mail.

2

może kiedyś AI będzie umiało modyfikować istniejące gry :-)

- napisz czwartą część gry Spy vs Spy w kosmosie używając silnik gry SpyvsSpy 2

http://atari.pl/hsc/ad.php?i=1.

3

Tylko pytanie - po co?
W sensie takim, że pisanie czegokolwiek na retro sprzęty to raczej zabawa niż chęć zarobku. Biorąc to pod uwagę, wolę sam się "męczyć" z pisaniem czegoś, kombinowaniem żeby działało itd itp. Sam proces jest frajdą. Ba, ja nawet wolę pisać w MAC/65 iż w MADSie, bo mam większą zabawę z tego.
I pewno sobie sprawdzę jak te skile działają, tak z czystej ciekawości, ale nawet nie pomyślałbym żeby za ich pomocą cokolwiek tworzyć :)

Może to kwestia podejścia? OFCZ nie neguje kompletnie odwrotnego.

kupię Atari 815 i 820 :)

4 Ostatnio edytowany przez nosty (2026-06-01 23:16:49)

@xxl pamiętam, że zajmowałeś się sporo portowaniem i budowałeś narzędzia pozwalające ten proces automatyzować.
Polecam zerknąć na "examples" w tym repo Ilmenita, jaką analizę wsteczną pliku xex potrafi zrobić AI.

5

ja to sie zastanawialem jak AI poradzilo by sobie z portem innych platform ? Jest kilka gier z otwartym kodem, może warto spróbować ? Idąc dalej może ai dało by rade nie tylko sportować ale i "zdeassemblerować" i sportowcac
W locie
I na oryginalnym sprzecie

6 Ostatnio edytowany przez Adam Klobukowski (2026-06-03 07:23:44)

Powiedziałbym że to na razie pieśń przyszłości, ale może okazać się że smaku nie do końca był wariatem :P

A mówiąc poważnie: LLMy działają na kontekstach. Kontekst to n tokenów. Obecnie, najpopularniejsze podejście to że token to jedno niewielkie słowo albo 'sylaba' (kilka znaków, ale niekoniecznie sylaba w rozumieniu gramatyki). Na ten moment w tym kontekście musiałbyś zawrzeć w tym kontekście opisy obu architektur (źródłowej i docelowej) i opis zadania do wykonania, a potem w tym kontekście musi się zmieścić wynik pracy LLMa. Obecnie, płatne usługi dają konteksty rzędu 1M tokenów (a zapotrzebowanie na pamięć liczymy w terabajtach). Wydaje mi się że to trochę za mało.

W locie to jeszcze dalsza pieśń przyszłości, na oryginalny sprzęcie to zapomnij.

(jeszcze tylko dopiszę, że zwiększanie kontekstu powoduje wykładniczy wzrost zapotrzebowania na pamięć)

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 JagCD SkunkBoard GameCart) (Lynx II AgaCart GameCart) 2xPortfolio Hades

7

Kolejny test - tym razem już nie pozycjonowałem się jako użytkownik typowo zielony. Oczywiście nie przeszkodziło to agentowi w zrobieniu czegoś, co jeszcze niedawno wydawało się niemożliwe. Mianowicie w zrobieniu ~4 KB intra obracającego w hiresie kilka obiektów 3D. Wypromptowałem to dosłownie w chwilę, najwięcej zeszło mi się z wytłumaczeniem o co mi chodzi z odbiciem "w wodzie", aby to zrozumiał :)

Repo u mnie, tutaj, a dla nieklikających dalej, to binarka w załączniku.

Post's attachments

main.xex 4.34 kb, liczba pobrań: 28 (od 2026-06-05) 

Tylko zalogowani mogą pobierać załączniki.
Czy możecie wyjaśnić, Stirlitz, dlaczego wasz służbowy adres stirlitz@rsha.gov.de ma aliasa justas@gru.su?
Nie czytam PM. Proszę używać e-mail.

8

niesamowite :)

na SV bedzie nowa kategoria ;)


a moze nakarmic AI muzyka Roba Hubbarda i niech napisze cos nowego :-) to by bylo cos :D

http://atari.pl/hsc/ad.php?i=1.

9

AI Gilmore vs real Gilmore? ;-)

10 Ostatnio edytowany przez nosty (2026-06-12 09:52:50)

xxl -  mojej ocenie to jest całkowicie do zrobienia, tyle, że aby wygenerować muzykę na Pokeya albo SIDa trzeba by pewnie wytrenować model specjalnie do tego, a to by kosztowało. Inaczej dostaniesz tylko coś "w stylu" chiptune, albo "a la" Atari.

Analogiczny problem mam zresztą z generacją grafiki pixelartowej na popularnych modelach. Każ mu zrobić grafikę pixelart w rodzielczości 16x16 w 4 kolorach. Dostaniesz pixelart, ale na pewno nie w takiej rozdziałce i w większej liczbie kolorów.

A może ktoś już zrobił odpowiednie modele do grafiki i muzyki retro? Nie sprawdzałem od wiosny, wiele mogło się zmienić ;)

11

Może w ramach eksperymentu, moglibyśmy zrobić zbiórkę na tokeny dla Astry i spróbowalibyśmy zbudować np. Alien 3 dla XE ? Gpt uważa ten pomysł za bardzo realny i szacuje koszt na 1000 USD.
Dlaczego Alien 3? Bo jest dostępne repo, pełny kod, sprite-y itp dla C64.
https://github.com/milkeybabes/Alien3-C64
Z tego co mi mówił Sun, to Ty Nosty miałbyś już na tyle dościadczenia, żeby to zrobić.
Co o tym myślicie?

Kto jest za, kto jest przeciw, kto się wstrzymał ?

12

chyba pod VBXE, Shanti77 przerobił w ten sposób Commando z C64

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

13 Ostatnio edytowany przez Javalonde (2026-09-12 17:04:38)

Czyli się da, może napisze coś więcej... gdy tu dotrze..

14

Javalonde napisał/a:

Dlaczego Alien 3? Bo jest dostępne repo, pełny kod, sprite-y itp dla C64.

Dla najnowszych modeli źródła już nie są konieczne. Analizują binarkę w kilka minut. Zerknij: https://www.atari.org.pl/forum/viewtopi ... 78#p326978

To zrobił GPT-6 Astra w przeglądarce, w trybie Work, nawet bez Codexa, bez żadnych skilli. Sam sobie zbudował środowisko ściągając asembler, emulator i sam testował to co robił.


Akurat Alien 3 z C64 wymagałoby chyba sporo pracy (i to pewnie w dużej części ludzkiej) nad grafiką, bo widzę tam sporo kolorów.
Ostatnio powstaje mnóstwo portów na różne platformy, produkowanych przez AI prawie maszynowo. Działają i to poprawnie, dają radość tym, którzy się bawią w to portowanie, ale często jest tam też sporo błędów i niedociągnięć, bo poprawienie ich wymaga już 5x więcej pracy, a często też sporo wiedzy.

Ja się nie podejmę, mam z AI inne wyzwania na tapecie, równie ambitne (w tym jeden port).
Co z tego, że zrobiłbym Ci na jutro działającą wersję Alien 3, skoro wyglądałaby jak gówno, przy wersji z C64? To bez sensu, bo słaby port tylko szkodzi Atari.

15

Cześć. Alien 3, to tylko przykład, który podałem ze względu na pełną dostępność źródeł, ale skoro Astra ogarneła nawet binarkę - no to szok, tak czy inaczej wygląda na to, że w przyszłości może czekać nas wysyp tytułów, o których wcześniej mogliśmy marzyć. Świetna robota z tym Fredem, czekam na inne Twoje realizacje :)

16

dely napisał/a:

Kolejny test - tym razem już nie pozycjonowałem się jako użytkownik typowo zielony. Oczywiście nie przeszkodziło to agentowi w zrobieniu czegoś, co jeszcze niedawno wydawało się niemożliwe. Mianowicie w zrobieniu ~4 KB intra obracającego w hiresie kilka obiektów 3D. Wypromptowałem to dosłownie w chwilę, najwięcej zeszło mi się z wytłumaczeniem o co mi chodzi z odbiciem "w wodzie", aby to zrozumiał :)

Repo u mnie, tutaj, a dla nieklikających dalej, to binarka w załączniku.

Okazało się, że jestem gapa i nie zauważyłe, że Dely wrzucił źródła :)

Właśnie mnie często interesuje odwrotna strona - jak coś jest zrobione. Niby czytałem ziny, artykuły ze strony MadTeamu, czasem kogoś zapytam, a i tak dalej czuje się gupi :)

Wrzuciłem XEXa od Delyego w Sonnet 5 effort medium na darmowym limicie.
Analiza trwała 2 dni, bo co limity  wypalały się ekspresowo. Z Astrą czy Fable pewnie byłoby 5 minut jaku Nostyego :)

Kilka wniosków - pewnie Ameryki nie odkryłem:
* Sonnet 5 lubi zgadywać, jeżeli coś "wydaje mu się" prawdopodobne. Ale jeżeli go pocisnąć i dopytywać o szczegóły - przeanalizuje dany aspekt i przyzna się do błędu :D
EDYCJA: sam Sonnet mi dobrze podpowiedział. dawać w prompcie "zweryfikuj każdą interpretację przeciw WSZYSTKIM wcześniej ustalonym faktom, zanim ją zapiszesz" i nie miałbym tego problemu :)
* przy złożonych zadaniach, np. odzyskiwanie źródła trzeba najpierw poprosić o plan pracy,
* trzeba nakazać mu zapisywać postępy w realizacji planu. Gdy darmowe wiadomości się kończyły, czekałem 5h by potem napisać krótkie "Kontynuuj gdzie przerwałeś".

W załączniku odzyskane źródło i pełna analiza prawie dla zielonych.
Na następny test wrzucę mu snapshot z emulatora z efektu z jakiegoś dema.

Post's attachments

analiza_intro_atari.htm_ 76.79 kb, liczba pobrań: 3 (od 2026-09-17) 

disasm_2000-2ff0.txt 54.43 kb, liczba pobrań: 2 (od 2026-09-17) 

Tylko zalogowani mogą pobierać załączniki.
grzybson/SSG^NG

17

grzybson napisał/a:

Na następny test wrzucę mu snapshot z emulatora z efektu z jakiegoś dema.

Proponowałbym zainteresować się AltiraSDL i "wpiąć" bezpośrednio do Claude. Cały "myk" pracy z LLM to jak najszybsza pętla zwrotna, im bardziej uda się wyelminować manualne potwierdzenia czy sugestie tym szybciej da się osiągnąć pożadany efekt. Claude rozmawiający bezpośrednio z emulatorem może od razu weryfikować efekty swojej pracy bez konieczności potwierdzenia przez człowieka.
Cały proces to zadać zadanie i precyzyjną metodę potwierdzenia czy jest to wykonane według naszych wymagań. Z mojego doświadczenia TDD (TestDrivenDevelopment) jest bardzo efektywny we współpracy ze współczesnymi modelami.

18

w tym momencie wpisalem do czata zeby napisal w asemblerze dla atari 800 program do kasowania zawartosci ekranu. oto co wypul:



; ------------------------------------------------------------
; CLEAR_SCREEN
; Wypelnia standardowy ekran 40 x 24 spacjami.
; SAVMSC wskazuje poczatek bufora ekranu.
; ------------------------------------------------------------

CLEAR_SCREEN
        lda SAVMSC
        sta DST
        lda SAVMSC+1
        sta DST+1

        ldy #0
        lda #0             ; kod spacji w kodowaniu ekranu
        ldx #0

CLEAR_LOOP
        sta (DST),y
        iny
        bne CLEAR_LOOP

        inc DST+1
        inx
        cpx #4             ; 4 strony po 256 bajtow = 1024
        bne CLEAR_LOOP

        rts

------------------------------------------------------------
; ZMIENNE
; ------------------------------------------------------------

DST      .word 0



nie wiem jak udaje sie mu napisac te wszystkie cuda skoro w tak banalnych procedurach robi kardynalne bledy.

http://atari.pl/hsc/ad.php?i=1.

19

Dać chłopu zegarek to zacznie nosić go na nodze

.

20

pablozp napisał/a:

Dać chłopu zegarek to zacznie nosić go na nodze


przeciez Ty nawet nie wiesz gdzie jest blad ;-)

http://atari.pl/hsc/ad.php?i=1.

21

xxl napisał/a:

nie wiem jak udaje sie mu napisac te wszystkie cuda skoro w tak banalnych procedurach robi kardynalne bledy.

Mi wygenrował taką odpowiedź:

Oba programy są napisane, zasemblowane MADS-em bez błędów i leżą w /tmp/ll/cls/. Dałem dwie wersje, bo "najmniejszy" i "najszybszy" to na Atari dwa różne programy.

Wersja 1: przez OS (CIO), 18 bajtów kodu, 30 bajtów XEX. To "atarowski" sposób: edytor ekranowy E: traktuje znak ATASCII $7D (CLEAR) jako polecenie "wyczyść ekran i kursor do (0,0)". Nie trzeba znać adresu ani rozmiaru pamięci obrazu, działa w każdym trybie tekstowym, na 400/800 i XL/XE, pod każdym DOS-em.

asm
; cls_cio.asm - kasowanie ekranu przez CIO (urządzenie E:)
ICCOM   = $0342         ; IOCB#0 - polecenie
ICBLL   = $0348         ; IOCB#0 - długość bufora (lo)
ICBLH   = $0349         ; IOCB#0 - długość bufora (hi)
CIOV    = $E456         ; wektor CIO (stały na wszystkich OS)
PUTCHR  = $0B           ; CIO: PUT CHARACTERS
CLS     = $7D           ; ATASCII CLEAR

        org $2000

start   ldx #0          ; IOCB#0 = E:, otwarty przez OS po starcie
        stx ICBLL       ; długość 0 => CIO wysyła pojedynczy bajt z A
        stx ICBLH
        lda #PUTCHR
        sta ICCOM
        lda #CLS
        jmp CIOV        ; tail-call: RTS z CIO wraca do DOS-u

        run start       ; MADS: segment RUNAD ($02E0)

Wersja 2: bezpośrednio w pamięci obrazu, 29 bajtów kodu, 40 bajtów XEX. Do gier i dem, bez OS. Pętla ma 11 cykli na bajt, czyli całe 960 bajtów GR.0 kasuje się w około jednej trzeciej ramki.

asm
; cls_fast.asm - szybkie kasowanie GR.0 (40x24 = 960 bajtów)
SAVMSC  = $58           ; OS: adres początku pamięci obrazu
ptr     = $CB           ; wolna para na stronie zerowej

        org $2000

start   lda SAVMSC
        sta ptr
        lda SAVMSC+1
        clc
        adc #3          ; ptr = SAVMSC + $300 (ostatnia, niepełna strona)
        sta ptr+1
        ldx #3          ; licznik stron: 3,2,1,0
        ldy #$C0        ; 1. przebieg: $C0 bajtów; kolejne: pełne 256
        lda #0          ; kod ekranowy 0 = spacja
loop    dey
        sta (ptr),y
        bne loop
        dec ptr+1       ; strona niżej
        dex
        bpl loop
        rts

        run start

Dobre praktyki, które są tu zastosowane:

- Adres ekranu z SAVMSC, nie zaszyty na sztywno jako $BC40. Dzięki temu działa przy 16/32/40/48 KB RAM i z dowolnym DOS-em.
- Wskaźnik na $CB/$CC, czyli w obszarze strony zerowej wolnym dla użytkownika na każdym OS-ie i nieruszanym przez BASIC.
- Dokładnie 960 bajtów, a nie "4 strony dla wygody". Pętla idzie od końca ekranu w dół, więc nic nie wychodzi poza pamięć obrazu, która kończy się tuż pod ROM-em.
- Jedna pętla dla niepełnej i pełnych stron: pierwszy przebieg z Y=$C0 kasuje końcówkę, potem Y przewija się przez 0 i robi pełne 256 bajtów.
- Tail-call jmp CIOV w wersji 1 oszczędza bajt i poziom stosu.
- run start w MADS generuje segment RUNAD, więc XEX ładuje się i startuje pod każdym DOS-em.

Kompilacja:

mads cls_cio.asm  -o:cls_cio.xex
mads cls_fast.asm -o:cls_fast.xex

Jedna uwaga: jeśli program ma działać tylko na XL/XE, wersję 1 można skrócić do 6 bajtów przez wektor EOUTCH (lda #$7D / jsr $F6A4 / rts), ale ten wektor nie istnieje w OS-ie 400/800, więc nie użyłem go jako wersji głównej. Programów nie uruchamiałem w emulatorze, tylko zasemblowałem i sprawdziłem listing.

22 Ostatnio edytowany przez mcs (2026-10-14 19:29:52)

No i potem pęla sprzężenia zwrotnego

"uruchom to w emulatorze i sprawdź czy działa"

Ładuję skill AltirraSDL, żeby uruchomić program przez AltirraBridge i zrobić zrzut ekranu.

● Skill(altirra-sdl-engineering)
Successfully loaded skill

  Ran 4 shell commands

Uruchamiam emulator headless i piszę skrypt testowy: breakpoint na $2000, boot XEX, zaśmiecenie ekranu, zrzut "przed", wznowienie, zrzut "po" i sprawdzenie pamięci obrazu.

  Read 1 file, ran 3 shell commands

● Background command "Run breakpoint-based clear-screen test for both XEX files in the emulator" failed with exit code 144

  Ran 2 shell commands

Stary proces emulatora się zawiesił; ubijam oba i startuję na czysto.

  Ran 3 shell commands

Klucz to PC wielkimi literami; breakpoint już trafił. Poprawiam skrypt i puszczam oba testy.

  Read 2 files, ran 5 shell commands

Widzę, że zrzuty "po" pokazywały loader Altirry, bo program po RTS wraca do niego i podmienia display listę. Zmienię adres powrotu na stosie na pętlę jmp *, żeby wynik został widoczny na ekranie.

  Read 2 files, ran 2 shell commands

Oba programy działają poprawnie w emulatorze AltirraSDL (headless, przez AltirraBridge). Zrzuty ekranu leżą w /tmp/ll/cls/ jako przed.png, po_cio.png i po_fast.png.

Jak testowałem. Breakpoint na $2000, boot pliku XEX, a po zatrzymaniu wypełniłem całe 960 bajtów pamięci obrazu (pod adresem z SAVMSC, czyli $BC40) znakami i inwersami, zrobiłem zrzut, potem wznowiłem program i zrzuciłem pamięć obrazu oraz ekran ponownie. Adres powrotu na stosie podmieniłem na pętlę w nieskończoność, bo inaczej po RTS loader Altirry wstawia własną display listę i zrzut "po" pokazywał ekran loadera, a nie efekt programu.

Wyniki:

┌──────────────┬────────────────────────┬──────────────────────────┬───────────────────────────────┐
│   Program    │         Przed          │            Po            │ Pamięć poniżej/powyżej ekranu │
├──────────────┼────────────────────────┼──────────────────────────┼───────────────────────────────┤
│ cls_cio.xex  │ 960 bajtów niezerowych │ 1 bajt: $80 na pozycji 2 │ nietknięta                    │
├──────────────┼────────────────────────┼──────────────────────────┼───────────────────────────────┤
│ cls_fast.xex │ 960 bajtów niezerowych │ 0 bajtów niezerowych     │ nietknięta                    │
└──────────────┴────────────────────────┴──────────────────────────┴───────────────────────────────┘

- Wersja CIO czyści ekran i zostawia kursor OS-u w wierszu 0, kolumna 2. Ten jeden bajt $80 to właśnie kursor edytora E: na lewym marginesie (LMARGN = 2). To jest poprawne i oczekiwane zachowanie polecenia CLEAR, na zrzucie widać niebieski ekran z kursorem w lewym górnym rogu.
- Wersja szybka zeruje dokładnie 960 bajtów i ani bajtu więcej. Na zrzucie jest czysty niebieski ekran bez kursora, bo ta wersja nie przechodzi przez OS.

Dwie rzeczy, na które natknąłem się po drodze w samym mostku, żebyś wiedział na przyszłość: po trafieniu breakpointu komenda FRAME blokuje się na zawsze, więc trzeba odpytywać REGS z opóźnieniem zamiast stepować klatkami, a słownik z REGS ma klucze wielkimi literami (PC, nie pc).

Post's attachments

po_cio.png 220.8 kb, nikt jeszcze nie pobierał tego pliku. 

po_fast.png 220.8 kb, nikt jeszcze nie pobierał tego pliku. 

przed.png 220.8 kb, nikt jeszcze nie pobierał tego pliku. 

Tylko zalogowani mogą pobierać załączniki.

23

@mcs wiem o ist ieniu AltirraSDL i AltirraBridge. Jak mu napisać w prompcie, to nawet w czacie webowym claude sobie ściągnie do kontenerka i bedzie używał do testów. Ale zrobił jedną głupotę bo wlaczył sobie emulacje błędu typu 1 GTIA.
A lokalanie z ClaudeCode to nedzie bajka.

@xxl jak go jie pilnowałem to przy obrotach 3D skorzystał z mnożenia shitlft-add zamiast metody kwadratów. Te wszystkie cuda osiągają lidzie którzy coś wiedzą i pilnują efektu ;)

grzybson/SSG^NG

24

@mcs: ale to jest darmowy czy platny? bo czytam ze darmowa to inna wersja od platnej.

widze, ze musi sobie sam testowac bo inaczej to jak w pierwszym przykladzie uzyje nawet nieistniejacego trybu adresowania.

http://atari.pl/hsc/ad.php?i=1.

25

to kto udostepni to dla atari ?


https://www.retromind.it/blog/3dvibe64- ... bit-world/

https://github.com/Librologica/3Dvibe64

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

http://atari.pl/hsc/ad.php?i=1.