atarionline.pl Panowie i Poddani 2021 - 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: CommentAuthorpirx
    • CommentTime11 Jun 2021
     
    tak mnie zmogło na starą gierkę "panowie i poddani", w którą pogrywałem za dzieciaka z kolegami. pomyślałem sobie, że dorobię obsługę fujineta czy coś.

    o kurka wodna, jak zacząłem patrzeć w kod to się załamałem, spaghetti code turbo power, ale to nie wina programisty, w zwykłym basicu ciężko inaczej robić...

    W każdym razie przepisałem kod na tbxl_parser kolegi dmsc (https://github.com/dmsc/tbxl-parser) i benedyktyńskim wysiłkiem odspagettiowałem kod i deobfuskowałem większość zmiennych i procedur.

    niestety nie obeszło się bez dorzucenia worka błędów.
    Obecna wersja jest gorsza od oryginału, bo wyrzuciłem też większość obsługi błędów. Ale w większości wypadków da się kontynuować wpisując 2 razy CONT.

    drugi krok - poprawa błędów, uzyskanie "jakości" oryginału, ale nie ortodoksyjnie :]

    trzeci krok - przepisanie na madpaskala czy coś, to już zadanie bliskie trywialnemu z obecnej postaci.

    krok czwarty - server gry i obsługa przez fujinet
    • 2:
       
      CommentAuthorPecus
    • CommentTime11 Jun 2021 zmieniony
     
    Nosz kurde. :)

    Nudzisz się :)

    Też bardzo lubiłem tę grę i kiedyś zaglądałem do kodu - masakra.
    Tak więc świetna robota (roboty początek ;) ).

    edit:

    Ale widzę, że inne teksty, ale ja grałem w "wersję" Hammurabi. I tam śmierć gracza była oznajmiana tekstem "Własne straciłeś życie" a tutaj jest "Zszedł śmiertelnie" :)
    • 3:
       
      CommentAuthorjhusak
    • CommentTime11 Jun 2021
     
    Nic nie chcę mówić, ale jak to przepiszecie na madpascala czy inny cc65, to kod się rozrooośnie.
    • 4: CommentAuthorpirx
    • CommentTime11 Jun 2021
     
    źródło to pewnie nie spuchnie bardzo, ale wynik to niewątpliwie - tutaj 'print' zajmuje 1 bajt, w asemblerku pewnie z 12. Za to liczby się skrócą, większość wejdzie w short inta, mniejsza część w bajt, tylko część będzie trzeba floatować.
    • 5: CommentAuthormono
    • CommentTime11 Jun 2021
     
    Czy dobrze rozumiem, że w takim razie to co mówił Roland Pantoła w wywiadzie u Vasco że Forth to najlepszy kompromis między szybkością a zajętością ma sens?
    A w takim razie najsensowniejsze na maszyny z małymi zasobami są interpretery z wstawkami w kodzie maszynowym. Heh niby prawda stara jak świat, ale zanim do człowieka dotrze... :)
    • 6:
       
      CommentAuthorjhusak
    • CommentTime11 Jun 2021 zmieniony
     
    Dokładniej to procesory bytecodów (szybsze i prostsze interpretery). Czyli jak maszynówka, ale więcej na raz.

    Jak się dobrze interpreter napisze, to nie ustępuje dużo takiemu C czy Pascalowi. Patrz fastbasic kolegi dmsc na tymże githubie (2 x szybszy niż Turbo Basic KOMPILOWANY opierając się na deklaracjach).
    • 7: CommentAuthormono
    • CommentTime11 Jun 2021
     
    Roland w wywiadzie mówił coś w rodzaju: "w maszynówce, żeby skoczyć do podprogramu to potrzebuję 3 bajtów kodu, w Forth tylko 2". Jestem w stanie wyobrazić sobie coś w rodzaju:
    run:
    ldy #0

    go:
    lda (prgad),y
    sta jump
    iny
    lda (prgad),y
    sta jump+1
    iny

    jmp (jump)

    co służy wywoływaniu procedur składających się np z:
    sum_a_b:
    lda (prgad),y
    iny
    clc
    adc (prgad),y
    iny
    sta acc

    jmp go

    Strasznie szybkie to nie będzie, taki program niby chaotycznie będzie skakał po pamięci, ale zrobi co trzeba. I będzie krótki bo w pamięci programu będzie miał adresy procedur i ewentualnie argumenty np.
    <sum_a_b_LSB>
    <sum_a_b_MSB>
    <arg0>
    <arg1>
    ...

    Przy zastosowaniu ONP to faktycznie może to być dość krótkie. Kod kompilowany zabrałby ze 30 bajtow, kod stokenizowany 4...
    • 8: CommentAuthorilmenit
    • CommentTime11 Jun 2021 zmieniony
     
    Kod się rozrośnie, ale jednocześnie pozbywamy się interpretera i runtime Basica oraz potencjalnie zwalniamy przestrzeń pod OS, z którego zwykle BASICi korzystają. Gdyby robić współcześnie interpreter, to wielu niedogodności by się można pozbyć, ale jeżeli się używa starych narzędzi, to nie jestem przekonany, czy przesiadka na język kompilowany do ASM to ostatecznie aż taka strata miejsca.
    • 9:
       
      CommentAuthorjhusak
    • CommentTime11 Jun 2021 zmieniony
     
    Jedyną zaletą Basica (AtariB też) jest właśnie ten zwięzły bytecode, ale psuje wszystko brak dwubajtowych intów, który to brak się niweluje dużą ilością zmiennych-stałych. Drugą jedyną zaletą jest, że jest i że jest od dawna :)

    Poza tym przesiadka na MP czy CC65 wiąże się z nauką "do czego się to kompiluje), wówczas można tworzyć o wiele oszczędniejszy kompilat. Ale tak w sumie jest zawsze, nie wyłączając AtariBasic.
    • 10: CommentAuthorpirx
    • CommentTime4 dni temu
     
    trochę poprawiłem, w zasadzie to daje się grać. jakby ktoś spróbował i podpowiedział jakieś grube błędy to bardzo chętnie przyjmę na klatę
    ->link<-
    • 11: CommentAuthormcs
    • CommentTime3 dni temu
     
    Jak najszybciej odpalić to pod emulatorem?
    • 12: CommentAuthorpirx
    • CommentTime3 dni temu
     
    trzeba mieć atr z turbbejem i z niego uruchomić program.
    • 13:
       
      CommentAuthorKaz
    • CommentTime1 dzień temu zmieniony
     
    Jak ktoś nie ma to przygotowałem: dyskietka ATR z Turbo Basic XL 1.5 oraz programem Pirxa. Można zrobić jeszcze łatwiejszą dla początkujących, samouruchamialną, ale to może wtedy, jak gra będzie gotowa. W tej chwili trzeba poczekać na odpalenie DOS-a, kliknąć literę L (Load), podać nazwę TURBOBAS.COM, po załadowaniu Turbo Basic XL, wpisać LOAD "D:FEUDAL.BAS" i potem odpalić grę komenda RUN.

    Pirx - a czy nie chciałbyś nadawać rozszerzenia TBA zamiast BAS? Taka konwencja ułatwia rozróżnianie programów w Basicu i stosują to niektórzy autorzy. To nie jest "big deal", ale zawsze ciutkę czytelniej :)
    • 14: CommentAuthormcs
    • CommentTime1 dzień temu
     
    Wielki dzięki Kaz! :)

    Hammurabi to była jedna z moich ulubionych gier :)
    • 15:
       
      CommentAuthorKaz
    • CommentTime1 dzień temu
     
    Mcs - nie ma sprawy. Uruchamiać grę można pod emulcem na wiele sposobów, na prawdziwym Atari plik ATR przydaje się bardziej niż goły program BAS.
    • 16: CommentAuthorpirx
    • CommentTime1 dzień temu zmieniony
     
    Hej hej, dobra robota, ja myślę, że to ostatnia wersja w turbobeju, chyba, że jakieś ciekawe błędy się znajdą.
    Generalnie to wersja, którą przerabiałem miała sporo błędów oryginalnie, w szczególności związanych z końcem gry.
    Kawałki nigdy nie były wykonywane, a najsmutniejsze, że nigdzie się nie wyświetlają nazwy księstw, chociaż są w liniach DATA.
    Rozszerzenie ".bas" tylko z powodu tego, że tak z automatu nazywa wynik tbxl-parser.
    Dodałem całkiem autostartującego atra.
    • 17:
       
      CommentAuthorKaz
    • CommentTime1 dzień temu
     
    Pirx - o, świetnie! To jak mniemam, można wrzucić taką wersję do katalogu gier - czy czekamy jeszcze na jakieś zgłoszenia?
    • 18: CommentAuthorpirx
    • CommentTime20 godzin temu
     
    hehehe, może jeszcze nie, dopiero na screenie zauważyłem, że w tej wersji na początek jest 100000 dukatów, potrzebowałem tego, żeby szybciej zostać supreme ruler :]
    to oczywiście za dużo do normalniej gry, wystarczy może z 5 rund, żeby wygrać ;]
    • 19:
       
      CommentAuthorDracon
    • CommentTime13 godzin temu zmieniony
     
    Działa OK, od razu wspomnienia wróciły... ;)
    Tylko, że ja w to grałem pod nazwą "HAMMURABI". :o Jakie są więc różnice między tym ostatnim a tą grą (poza czołówką z zamkiem, ze znaków atascii :)) ?

    Acha, można łatwo "wywalić" program:
    - przy pytaniu "ile ziarna i nasion kupujesz", wciskając sam Return pojawi się... "Error - 8 INPUT AT LINE 90".
    • 20: CommentAuthorpirx
    • CommentTime11 godzin temu
     
    No właśnie to dla mnie zagadka, najchętniej obejrzałbym oryginalną wersję z USA, ale nie mogę takowej znaleźć. "Hammurabiów" znalazłem kilka, ale to są inne gry.
    Co do braku obsługi błędów wprowadzania np. liczb - oryginalnie gierka była obstawiona TRAPami, ale jako że celem jest przepisanie na madpaskala to je wszystkie wyrzuciłem.
    Zwykle da się kontynuować wpisując CONT raz lub dwa razy.