atarionline.pl AltirraSDL Lobby - Grajmy Online Razem - Forum Atarum

    Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

    • :
    • :

    Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

      • 1:
         
        CommentAuthorMaW
      • CommentTime15 May 2026 20:56 zmieniony
       
      @Ilmenit, no to fatality, blik tylko polskie banki :/

      __ __ __

      • 2: CommentAuthorzbyti
      • CommentTime15 May 2026 21:08
       
      takie tam ->link<-
      • 3:
         
        CommentAuthorMaW
      • CommentTime15 May 2026 21:11 zmieniony
       

      me:

      Przy okazji chciałem zadać skomplikowane pytanie: czy jest możliwość osadzenia emu na swojej stronie jako obiektu linkującego do oryginalnej lokalizacji? W taki sposób, żeby odpalał automatycznie XEXa umieszczonego na tej stronie?

      ilmenit:

      tzn. aby odpalał .xex z innej strony?

      Częściowo mi się udało: GeminiShooter
      - pokazuje play, ale niestety nie ładuje emulatora :/ (prawdopodobnie jakiś problem z ładowaniem XEXa do WASM-a)

      ...chyba będę musiał użyć AI, żeby podpytać, co to się stanęło xD

      //EDIT: skąd on bierze te ścieżki??
      • 4: CommentAuthornosty
      • CommentTime16 May 2026 01:21 zmieniony
       
      @Ilmenit, dopiero dzisiaj wziąłem się za AltirraBridge i mam zonka od razu na starcie.
      Odpaliłem serwer, utworzył się token. Bazując na README.md odpaliłem 01_hello.py. Wszystko dobrze.
      Spróbowałem więc odpalić .xex i zrobić screena, bazując na sekcji "## A 30-second example" z README.md
      Skrypt wykonał się poprawnie, plik .png się utworzył, ale jest to czarny obraz. Próbowałem na kilku różnych programach.

      Wrzuciłem AltirraBridge + skill do Antigravity i kazałem powalczyć najpierw Opus 4.6, potem Gemini 3.1. Oba dotarły do tego punktu co ja: czarny screen.
      Próbowały tworzyć jakiś plik settings.ini, zażądały ode mnie ROM'ów do Atari, bo upierały się, że w pamięci emulatora nie ma systemu.
      W końcu oba się poddały (no dobra, Opus wyczerpał pulę).

      Pracuję pod Windows.
      Konfiguracja, jaką mi zwrócił to:
      {'ok': True, 'basic': False, 'machine': '800XL', 'memory': '320K', 'debugbrkrun': False}

      Co ja i AI robimy źle?
      Dzięki za pomoc.

      EDITED: Po poleceniu załadowania .xex odczekałem kilka sekund i dałem a.peek(0x2f80, 16) z adresem gdzie wiem jakie powinny być dane. Wygląda na to, że plik xex się nie załadował, bo zwrócił mi ff00ff00ff00ff00ff00ff00ff00ff00.
      • 5: CommentAuthorilmenit
      • CommentTime16 May 2026 07:18
       
      @nosty - już wiem czemu. Ja używam obok AltirraSDL który wytwarza wymagany settings.ini. Dodam do Bridge aby był kompletnie niezależny od AltirraSDL.
      • 6: CommentAuthorilmenit
      • CommentTime16 May 2026 09:07 zmieniony
       
      Poprawione (wygląda na to, że Codex z GPT 5.5 sobie też nieźle radzi).

      To był bug w standalone `AltirraBridgeServer`.

      Bridge wybierał domyślny wbudowany AltirraOS/BASIC, ale headless build nie ładował faktycznie wbudowanych zasobów ROM. Efekt był taki, że emulator startował bez kernela, więc XEX nie był ładowany. To tłumaczy czarny screenshot i `ff00ff00...` w pamięci.

      Naprawione: Bridge używa teraz wbudowanego AltirraOS/BASIC bez dodatkowych ROM-ów. Przykład:

      ```python
      a.boot(r"C:\path\demo.xex")
      a.frame(240)
      a.screenshot(r"C:\path\screen.png")
      ```

      Ważne: po `boot()` trzeba użyć `frame()`, nie `time.sleep()`, bo ładowanie XEX dzieje się po stronie emulowanego Atari, a nie przez samo czekanie w Pythonie.

      Możesz też użyć prawdziwych ROM-ów Atari OS/BASIC, jeśli chcesz:

      ```python
      a.config("kernel", r"C:\roms\ATARIXL.ROM")
      a.config("basicrom", r"C:\roms\ATARIBAS.ROM")
      a.cold_reset()

      a.boot(r"C:\path\demo.xex")
      a.frame(240)
      a.screenshot(r"C:\path\screen.png")
      ```

      Dodałem też logging diagnostyczny Bridge’a. Przy starcie serwera pojawi się ścieżka do logu, na Windows domyślnie coś w stylu:

      ```text
      %TEMP%\altirra-bridge-<pid>.log
      ```

      Log zawiera m.in. wybraną konfigurację, faktycznie załadowany kernel/BASIC, komendy `BOOT`, błędy ładowania i błędy protokołu. Token nie jest zapisywany do pliku logu. Jeśli po aktualizacji dalej zobaczysz czarny ekran, podeślij proszę ten log oraz wynik:

      ```python
      print(a.config())
      ```

      Szczególnie interesujące są pola `kernel_id`, `actual_kernel_id`, `basic_id`, `actual_basic_id` i `exeloadmode`.

      Pobierz proszę najnowszą wersję z ->link<-
      Nie mam jak przetestować na Windows, ale "powinno działać".
      • 7: CommentAuthorilmenit
      • CommentTime16 May 2026 10:00 zmieniony
       
      @zbyti - Codex dokończył analizę, zrobił rekonstrukcję kodu na podstawie Save State i wygląda na to, że robi to nawet lepiej niż Claude Opus. Wymagało to około 5 promptów z mojej strony, aby powiedzieć co więcej w analizie chcę widzieć (początkowo analiza była podstawowa i bez rekonstrukcji kodu). Ale szkoda mi było tokenów na dłuższą analizę, którą proponuje:
      "The next reverse-engineering milestone is to replace the snapshot resume with a stable frame/main entry once the animation state machine is fully understood.
      [...]
      We can now improve readability incrementally: split more code/data ranges, add branch-local labels, convert display lists at `$2200/$2377` to structured macros, and convert bitmap/charset blocks to `ins` files while comparing after each step."
      • 8: CommentAuthorzbyti
      • CommentTime16 May 2026 12:56
       
      @ilmenit dzięki, zapoznam się wieczorem.
      • 9: CommentAuthorzbyti
      • CommentTime16 May 2026 13:38
       
      OK. zajrzałem wcześniej ;) ciekawość silniejsza :D

      robi to wrażenie, dobrze rozebrane na kawałki i złożone do kupy.

      co prawda można się uśmiechnąć jak się widzi:

      org $2200
      ; jakieś dane
      mul8_add_fraction:
      beq $2404
      dex
      stx $C1
      tax
      beq $2404
      stx $C0
      lda #$00
      ldx #$08
      asl
      asl $C0
      bcc $23FC
      adc $C1
      dex
      bne $23F5
      clc
      adc $87
      sta $87
      lda $86
      ldx $87
      rts


      bo raczej jak już się używa MADS to pisanie `beq` z adresem absolutnym raczej wskazuje, że AI wolało by pisać w monitorze języka maszynowego ;) no ale to kwestia, powiedzmy, "postprocessingu".

      tak czy inaczej zrobiło to na mnie jako całość DUŻE wrażenie!
      • 10: CommentAuthorgregor2
      • CommentTime16 May 2026 16:19 zmieniony
       
      Niezla masakra, mysle ze lepiej aby nie pokazywac tego kodu publicznie, bo jeszcze znajda sie nasladowcy ;)
      mnie rozwalilo to:

      sta $87
      lda $86
      ldx $87

      dlaczego nie ? :

      sta $87
      tax
      lda $86

      A potencjalnie wyglada ze jest tam wiecej kwiatkow ;)
      • 11: CommentAuthorilmenit
      • CommentTime16 May 2026 16:24
       
      Ale to kod z dekompilacji, tego nie pisało AI ;-)
      • 12: CommentAuthorgregor2
      • CommentTime16 May 2026 18:48
       
      A to jak bez AI to moze tak:

      mul8:
      STA $86
      STX $87
      LDA #0
      LDX #$8
      LSR $86
      loop:
      BCC no_add
      CLC
      ADC $87
      no_add:
      ROR
      ROR $86
      DEX
      BNE loop
      STA $87 ; mozna pominac jesli wystarczy wynik w rej. A i X
      LDX $86
      RTS

      i przy okazji zaoszczedzic 2 bajty na stronie zerowej.
      • 13:
         
        CommentAuthorMaW
      • CommentTime16 May 2026 22:58 zmieniony
       
      Dzięki, poprawka zadziałała!
      Z tym, że wyłącznie na kopii WASMa ładowanym z samej lokalizacji - gdy linkuję do AltirraSDL, działa tylko odpalenie xex ze strony - np:
      ->link<-

      ale już podanie ścieżki do własnego {encodeURIComponent([URI]builds/geminishooter.xex)} nichuchu - wygląda na to, że emu kieruje się do library/games na własnym serwerze i ta ścieżka jest zafiksowana w kodzie.

      --> GeminiShooter
      • 14: CommentAuthorRoeoender
      • CommentTime16 May 2026 23:10 zmieniony
       
      Dzięki AltiraSDL na stronie domowej mojego F-16 Falcon Strike umożliwiłem granie bezpośrednio w przeglądarce - było to bardzo proste - dzięki!

      Pewnie jeszcze będę to osadzenie udoskonalał - np. klawisz Esc normalnie działa jako katapultowanie a tutaj jest przechwytywany przez emulator i zamyka wirtualną klawiaturę oraz trochę z obawy co do wydajności powyłączałem wszelkie efekty crt.
      • 15: CommentAuthornosty
      • CommentTime16 May 2026 23:47 zmieniony
       
      @Ilmenit - dzięki, teraz AltirraBridge śmiga! Ale trafiłem na inny błąd.
      Scenariusz replikacji:
      1. robię najprostszy program w asemblerze - pętlę bez końca.
      2. Wykonuję:
      a.boot(xex_path)
      a.frame(240)
      rtclok1 = a.peek(0x12, 3)
      a.frame(50)
      rtclok2 = a.peek(0x12, 3)
      3. Porównuję wyniki:
      RTCLOK before: 000013 (decimal: 19)
      Advancing exactly 50 frames...
      RTCLOK after: 000019 (decimal: 25)
      Difference: 6 frames

      Krótko mówiąc, upływa 6 klatek zamiast 50.

      Przetestowałem też wykonując w pythonie 50x w pętli a.frame(1) oraz na oryginalnym, atarowskim ROM'ie. Rezultat bez zmian: 6 klatek zamiast 50.
      • 16: CommentAuthorilmenit
      • CommentTime17 May 2026 07:02
       
      Dzięki @nosty za raport. Poprawka wrzucona.
      • 17: CommentAuthornosty
      • CommentTime17 May 2026 09:31 zmieniony
       
      @Ilmenit wielkie dzięki! Potwierdzam, że teraz działa idealnie.
      Jak to napisał Gemini po zapoznaniu się z COMMANDS.md: "Wbudowany headless emulator (AltirraBridge) to absolutny "game changer" w naszym procesie deweloperskim!" :)

      Ale ponieważ apetyt rośnie w miarę jedzenia, to zacząłem się zastanawiać: przecież, jeśli mamy emulator z rozkazami frame(1), peek(), rawscreen(), joy() przez API to nic nie stoi na przeszkodzie, by AI samodzielnie GRAŁ w gry na Atari klatka po klatce! Tzn jedyna przeszkoda jaką widzę, to liczba przepalonych tokenów i umiejętności samego modelu, który przecież nie do takich zadań został stworzony. Ale gdyby wytrenować od podstaw lokalny model w graniu w konkretną grę... Dobrze myślę?
      • 18: CommentAuthorzbyti
      • CommentTime17 May 2026 09:38 zmieniony
       
      @nosty przecież tak zaczynało DeepMind w 2020 roku opykali 57 gier na Atari, całkiem niedawno Carmack powtarzał taką zabawę, wnioski miał ciekawe.

      nawet masz paper dla rozrywki: ->link<- z 2013
      • 19: CommentAuthornosty
      • CommentTime17 May 2026 10:01
       
      @zbyti, ale ja przecież wiem, że to nie jest odkrycie i pomysł pierwszy na świecie :) Widziałem lata temu AI grające w Mario. Rzecz w tym, że kilka lat temu robił to DeepMind, a dziś możemy zrobić to sami na laptopie z AltirraBridge! Jeszcze pół roku temu moje próby tworzenia z AI pierwszej gry na Atari polegały na mozolnym przeklejaniu kodu z okienka LLM'a.
      A patrząc na wsteczne analizy kodu załączone przez Ilmenit'a zastanawiam się jak to wpłynie na portowanie gier...
      Czekają nas niesamowite przygody w najbliższych latach i cieszę się, że jestem (małą) częścią tego i mam dzięki temu niesamowitą zabawę i ekscytację.
      • 20:
         
        CommentAuthorMaW
      • CommentTime17 May 2026 10:03 zmieniony
       
      @nosty - jeśli to nie tajemnica, to jak definiujesz agentowi dostęp/użycie do AltirraBridge? Możesz poprosić, żeby wypluł md konfiguracyjny?
      • 21: CommentAuthorzbyti
      • CommentTime17 May 2026 10:07
       
      @nosty to co pokazał Ilmenit z 525 pokazuje, że sporo więc gier z BBC może zagościć na A8.

      trochę mam wgląd ile i jakiej pracy wymaga taka konwersja obserwując jak zmieniał się Barbarian z prawie automatycznej konwersji w 2 dni z BBC a ile było trzeba dołożyć do tego by mieć to co ostatecznie powstało.

      ale ostatecznie kibicuję ;)
      • 22: CommentAuthornosty
      • CommentTime17 May 2026 10:21
       
      @MaW używam Antigravity. Jedyne co zrobiłem, to wrzuciłem AltirraBridge do katalogu roboczego a skill stworzony przez Ilmenita skopiowałem do skilli. I kazałem agentowi zapoznać się z tym skillem, plikiem README.md i dokumentacją z /docs. Więcej mu nic nie trzeba.
      • 23: CommentAuthorilmenit
      • CommentTime17 May 2026 11:09
       
      Tak, zwykle wystarczy wskazać AI ścieżkę do katalogu. Do zadań reverse engineeringu polecam dodać niech sprawdzi w przykładach jak używa się project.json
      • 24: CommentAuthorastrofor
      • CommentTime19 May 2026 01:03
       
      czy w AltirraBridge da sie wlaczyc vbxe ?