atarionline.pl Gra/gry od tbxx - 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: CommentAuthorxxl
    • CommentTime17 Feb 2010 zmieniony
     
    innym rozwiazaniem moze byc stworzenie dl dla trybu 2 basica (tekstowy) i podmiana zestawu znakow. zajmie to o wiele mniej pamieci tylko czy grafika zmiesci sie w jeden zestaw znakow? jesli nie to trzeba ja tak zdefiniowac zeby sie zmiescila :-) bo nie trzeba sie bedzie dodatkowo przejmowac dli
    • 2: CommentAuthortbxx
    • CommentTime17 Feb 2010
     
    No to pieknie... bo ja takim ekspertem jestem, że to co piszecie jest dla mnie zrozumiałe jak chiński przeplatany staro-cerkiewno-słowianskim ;)
    • 3: CommentAuthormono
    • CommentTime17 Feb 2010
     
    Tbxx - podeślij może pliczek xex. Spróbuję wieczorem coś z tego zrobić strawnego dla basica. Kaz ma mój adres mailowy.
    • 4: CommentAuthorirwin
    • CommentTime17 Feb 2010 zmieniony
     
    @xxl
    Jeśli dobrze rozumiem to tyle "wystaje" poza standardowe 192 pixle:



    Czyli pewnie się zmieści w jednym a nawet pół charsecie.

    @Kaz obrazek ZNAKOMITY! Tylko tak jak Mono pisze, może by tytuł wypełnić solid kolorem. Bo wpierw go nie zauważyłem, i myślę że niezaznajomieni z tematem też mogą przeoczyć.
    • 5:
       
      CommentAuthorKaz
    • CommentTime17 Feb 2010
     
    Ale wlasnie o to mi chodzilo - zeby tytul ginal w znaczkach i sie nie wyroznial. Sprawdze jednak, czy lepiej to wyglada z jakims wypelnieniem. Pamietac bowiem nalezy, ze gra ma swoj czytelny tytul gdzie indziej - w czolowce w GR15 (GR12?).

    Obrazek jest wymagajacy pod wzgledem liczby znakow (bardzo duzo niepowtarzajacej sie grafiki), G2F raportuje 4 zestawy:
    116
    121
    106
    87
    Nawet gdyby pooptymalizowac ich wykorzystanie to trzy zestawy i tak pojda.
    • 6:
       
      CommentAuthorKaz
    • CommentTime17 Feb 2010 zmieniony
     

    tbxx:

    No to pieknie... bo ja takim ekspertem jestem, że to co piszecie jest dla mnie zrozumiałe jak chiński przeplatany staro-cerkiewno-słowianskim ;)


    No to moze tak najpierw ogolnie:

    1. Obraz na Atari tworzy procesor Antic i w tym celu potrzebuje specjalnego programu (zwanego Display List, potocznie DL, dl, displej, dlist, etc), zeby wiedziec jak ten obraz ma wygladac.

    2. Display List opisuje jak maja wygladac poszczegolne linie/wiersze ekranu, poczynajac od gory, a konczac na dole ekranu - lacznie 240 linii. Szczegoly tutaj:

    ->link<-

    3. Po wlaczeniu Atari masz standardowy program DL - na gorze puste wiersze, potem 24 wiersze trybu GR0 (24x8=192 linie), potem znowu puste wiersze.

    4. Basicowa komenda GRAPHICS x (skrot GR.x) uruchamia nowy program Display List, zgodny z parametrem x. Przykladowo komenda GR.8 uruchamian taki DL, ze na gorze masz puste wiersze, potem 160 linie grafiki trybu $02, potem 4 wiersze trybu $0F. potem znowu puste wiersze. Z kolei uzyty przec Ciebie GR.8+16 (co jest rownoznaczne z GR.24) to taki DL, w ktorym zamiast tych czterech wierszy $0F sa dalej 32 linie trybu $02 - co lacznie daje 192 linie.

    5. Modyfikacja Display List jest konieczna, zeby osiagac na ekranie taki zestaw trybow jaki chcesz, na przyklad obrazki o wysokosci 240 pikseli albo miks trybow graficznych i trybow znakowych. Bo basicowe GR wlacza tylko standardowe, ustalone przez projektantow Atari tryby, oparte wlasnie na rozdzielczosci pionowej 192 pikseli (polecam opis w "Atari Basic" Miguta, strona 32-33).

    6. Czyli musisz napisac wlasny program dla Antica - i Mono napisal jak to zrobic i o czym pamietac. Wiele porad w tym zakresie znajdziesz na forum, duzo pisal o tym Larek, zaraz poszukam gdzie dokladnie.

    7. No wiec takie znalazlem przydatne informacje:

    o granicy 4KB, ktora wspomnial Mono:
    ->link<-

    duzo cennych porad dla poczatkujacych programistow:
    ->link<-

    adiblol walczyl tu z miksem trybow:
    ->link<-

    linki do ksiazek:
    ->link<-

    tutaj tez jakas walka z grafika:
    ->link<-
    • 7:
       
      CommentAuthorxeen
    • CommentTime17 Feb 2010
     
    no i jak chcesz mieć obrazek podkolorowany nie tylko duchami - tak jak Kaz wkleił z odcieniami, musisz jeszcze napisać sobie procedurkę obsługi przerwania (nie tylko zmodyfikować DL). mono mnie trochę naprowadził w tym wątku

    ->link<-

    sam z tym teraz walczę, się uczę i męczę:))

    ładnie i zrozumiale dla mnie też to opisał kiedyś Tebe
    ->link<-

    istotę samej DL ja zrozumiałem czytając artykuł stąd:

    ->link<-
    • 8: CommentAuthortbxx
    • CommentTime17 Feb 2010
     
    Jeszcze takie pytanie:
    Czy da się jakoś zintegrować obrazek *.xex z runtime.com (tym od TBXL tak aby podczas ładowania runtime.com i autorun.ctb obrazek był nadal widoczny?
    • 9: CommentAuthormono
    • CommentTime17 Feb 2010
     
    Można spróbować połączyć zmodyfikowany obrazek.xex, odpalić ustawienie dlisty na inicie i potem puścić dalej ładowanie tbxl. Dopiero GR.x prestawiłoby dlistę. Warunek: raczej nie używać przerwań DLI w obrazek.xex (czyli nie podkolorowywać za bardzo - co najwyżej sprajtami, ale tak żeby nie trzeba było używać DLI - czyli jedna pozycja sprajta i jeden kolor na całym ekranie). Ewentualnie bardzo niewielkie procedury odpalane na DLI.
    • 10:
       
      CommentAuthorKaz
    • CommentTime18 Feb 2010
     
    Tbxx - podeślij może pliczek xex. Spróbuję wieczorem coś z tego zrobić strawnego dla basica. Kaz ma mój adres mailowy.


    Chcialbym uruchomic mozliwosc wysylania wiadomosci miedzy forumowiczami, ale to zapewne dopiero po przenosinach.
    • 11:
       
      CommentAuthorMaW
    • CommentTime18 Feb 2010 zmieniony
     
    A ja wrócę do samej gry - Tbxx, nie wiem, co zmieniłeś, ale jest o wiele lepiej. Jedna uwaga: przy włączonym "pikselu" wyłącz inwersję znaku.

    //EDIT: i może jeszcze jedno: "kolory" zastąpiłbym podczas rysowania pustymi polami, a dopiero na koniec wypełnił właściwą "barwą".
    • 12: CommentAuthortbxx
    • CommentTime19 Feb 2010
     
    Kilka drobnych zmian.
    Ułatwiłem "warm up"
    dodałem poziom "extreme"
    znowu zmieniłem kursor
    -------------------------
    pozostało:
    -dodanie muzyki
    -załadowanie grafiki od KAZ'a
    -edycja nowych picrossów (czym się aktualnie zajmuje)
    -dodanie napisów koncowych gry
    • 13:
       
      CommentAuthorKaz
    • CommentTime19 Feb 2010
     
    Sprobowalem poziomu "extreme", ale jest dla mnie... zbyt extreme :)

    Fajny efekcik w czolowce.
    • 14: CommentAuthortbxx
    • CommentTime19 Feb 2010
     
    Może na poziomie "extreme" zwiększyć limit czasu...
    • 15:
       
      CommentAuthorMaW
    • CommentTime21 Feb 2010
     
    chyba jednak bez kolorów piątego gracza się nie obejdzie... nadal nie widać, czy pole pod kursorem jest zaznaczone, czy odznaczone; "extreme" == hardcore
    • 16: CommentAuthortbxx
    • CommentTime1 Mar 2010
     
    Chwile mnie nie było - dłubie picrossy w edytorze ;)

    Demo z muzyką i długim scrollem.
    • 17:
       
      CommentAuthorKaz
    • CommentTime1 Mar 2010
     
    U mnie boot error :(
    • 18: CommentAuthortbxx
    • CommentTime1 Mar 2010
     
    Dziwne, u mnie działa..
    A jest różnica jak plik spakuje zipem?
    • 19:
       
      CommentAuthorMaW
    • CommentTime1 Mar 2010
     
    Tbxx a podzieliłbyś się procedurami obsługi duszków ? Bo nie chce mi się koła wymyślać na nowo...
    • 20: CommentAuthortbxx
    • CommentTime1 Mar 2010 zmieniony
     
    Pisze bardzo nie elegancko i chaotycznie, więc zaraz ktoś może paść na zawał. Jestem programistycznym flejtuchem, tak że czasem sam się dziwie że coś mi działa;)

    2100 PROC DUCHY
    2110 PMB=PEEK(106)-32:PMB=PMB*256
    2120 POKE 559,46:POKE 54279,PMB/256
    2130 FOR I=0 TO 111
    2131 IF I<16 THEN POKE PMB+512+I,0:GOTO 2134
    2132 IF I>47 AND I<52 THEN POKE PMB+640+I,255
    2133 POKE PMB+512+I,240
    2134 NEXT I:MOVE PMB+640,PMB+768,111:MOVE PMB+640,PMB+896,111
    2135 POKE 53257,3:POKE 53258,3:POKE 53259,3
    2136 POKE 706,20:POKE 707,20
    2137 POKE 623,1
    2140 ENDPROC
    2150 PROC DUDU
    2155 MOVE 640+YD,640+YD+4,4:MOVE PMB+512,640+YD,4
    2160 MOVE 768+YD,768+YD+4,4:MOVE PMB+512,768+YD,4
    2170 MOVE 896+YD,896+YD+4,4:MOVE PMB+512,896+YD,4
    2180 ENDPROC
    2200 PROC DUGO
    2205 MOVE 640+YD,640+YD-4,4:MOVE PMB+512,640+YD,4
    2210 MOVE 768+YD,768+YD-4,4:MOVE PMB+512,768+YD,4
    2215 MOVE 896+YD,896+YD-4,4:MOVE PMB+512,896+YD,4
    2220 ENDPROC


    Procedurka DUCHY - generuje i aktuwuje duszki
    Procedurka DUDU - odpowiada za ruch w dół
    Procedurka DUGO - odpowiada za ruch w górę
    • 21:
       
      CommentAuthorMaW
    • CommentTime1 Mar 2010
     
    dzięki - wiesz, nie jest źle :D
    • 22:
       
      CommentAuthorxeen
    • CommentTime1 Mar 2010
     
    wciąga:)
    jak się kończy żywot, to przez ułamek sekunda w pozycji życia widać cyferkę -1. nie jest to duża rzecz, oczywiście....
    • 23:
       
      CommentAuthortdc
    • CommentTime1 Mar 2010
     
    tbxx: eee... jest całkiem dobrze.

    Mój wykładowca na programowaniu mówił, że prawdziwy programista to leń patentowany, dlatego zgodnie z tą teorią masz zadatki;)
    • 24:
       
      CommentAuthorxeen
    • CommentTime2 Mar 2010
     
    coś chyba nie działa na poziomie extreme
    załączam zrzut
    • 25: CommentAuthortbxx
    • CommentTime3 Mar 2010
     
    Xeen - możesz opisać w czym problem? Po wczytaniu twojego stanu gry, nie działa mi joystick...
    • 26:
       
      CommentAuthorxeen
    • CommentTime3 Mar 2010
     
    no generalenie zazanczam sobie co chcę, wszędzie pokazuje mi się na planszy że zaznaczyłem błędnie (x), liczba żyć nie ulega pomniejszeniu.......
    • 27: CommentAuthortbxx
    • CommentTime3 Mar 2010
     
    Wszystko ok. Tryb "extreme" jest bardzo trudny ;)

    - możemy gasić i zapalać punkty (tak że "X" zaznaczone są zarówno dobre jak i błędne pola)
    - nie ubywa nam życ, ale mamy ograniczony czas (docelowo 10min/obrazek)
    • 28:
       
      CommentAuthorxeen
    • CommentTime3 Mar 2010
     
    aa, nie załapałem
    sorry
    • 29:
       
      CommentAuthorMaW
    • CommentTime13 Mar 2010
     
    TBXX, jest jakiś kontakt do Ciebie?
    • 30:
       
      CommentAuthorKaz
    • CommentTime14 Mar 2010
     
    Mozesz wyslac mu PM przez forum.
    • 31:
       
      CommentAuthorxeen
    • CommentTime25 Mar 2010
     
    pasożytniczo podłączę się do tego wątku nieco offtopic'owo
    Popełniłem onegdaj (10 lat temu, hlip, hlip) coś podobnego co TBXX teraz;zrobiłem to w WINAPI, jest to połączenie logicznej układanki z grą w statki.
    taka gra w statki na jednego gracza. może się komuś spodoba - gra jest bardzo malutka.
    Odgrzebałem ją ostatnio na jakimś starym dysku i postanowiłem się pochwalić. njoy.
    sorki za zaśmiecanie :) ale może można zrobić taki wariant rozgrywki w grze tbxx?
    • 32: CommentAuthormac
    • CommentTime25 Mar 2010
     
    też napisałem kiedyś grę w statki pod win, jakoś około 95 roku, była nawet na płycie PC World Komputer ;-)) ale mi wspomnienie przywołałeś ;-))
    • 33:
       
      CommentAuthorKaz
    • CommentTime28 Mar 2010
     
    Pewnie nie kazdy pamieta, ze na AOL mamy specjalny katalog z grami (czesciowo auotorstwa czytelnikow), ktore sa dla peceta, ale bazuja na sentymentach do gier Atari:

    Byla kiedys o tym nowinka na glownej stronie, mozna tez bezposrednio dotrzec do tych gier, wystarczy podac sciezke "http://atarionline.pl/pliki/gry_win32/nazwapliku", a zamiast "nazwapliku" wstawic odpowiednia nazwe pliku:

    archon_evolution.7z
    asteroidy.7z
    bitwa_morska.7z
    boulder_dash.7z
    bugatron_worlds_trial.7z
    dog_daze_revolution.7z
    gnu_robbo_057win.7z
    knight_lore.7z
    lasermania.7z
    logoman edit.7z
    logoman.7z
    mdd_clone.7z
    montezumas_revenge.7z
    montezumas_revenge_remake.7z
    platypus_trial.7z
    pole_minowe.7z
    reverse.7z
    river_raid_extreme.7z
    robal.7z
    robbo_adventures.7z
    robbox_trial.7z
    thinker.7z
    wladca_01beta.7z
    zball_trial.7z
    • 34: CommentAuthorAmun-Ra
    • CommentTime28 Mar 2010
     
    W kwestii formalnej... Albo hieroglify powinny być zwrócone w stronę postaci, albo postać z drugiej strony ekranu patrząca na hieroglify. :P
    • 35: CommentAuthortbxx
    • CommentTime28 Mar 2010
     
    Przeciez postać za pomocą joysticka dopiero ustawia hieroglify w odpowiednią stronę;)
    • 36: CommentAuthortbxx
    • CommentTime15 Oct 2010
     
    Czy da się do tbxl'a zrobić wstawkę w asm nakładającą "rainbow effect" na wybrane duszki?
    • 37:
       
      CommentAuthorKaz
    • CommentTime22 Oct 2010
     
    Jakis czas temu przegladalem stare pisemka komputerowe i widzialem taka procedurke, ale w Atari Basic/asm... ale czy to byl "Atari User" czy inne pismo - nie pamietam... ech, ta poglebiajaca sie skleroza :)

    Moze przeszukanie po grach daloby odpowiedz, bo wtedy mozna by namierzyc tytul gry w czasopismie.
    • 38: CommentAuthormono
    • CommentTime22 Oct 2010
     
    Procedura jest prosta:
    dli:
    pha
    lda color
    inc color
    inc color
    sta wsync
    sta colpm0
    pla
    rti

    jeśli użyjemy dli (wtedy wypadałoby mieć tryb graficzny), lub:
    ldy #0
    loop: sty wsync
    sty colpm0
    iny
    iny
    jmp loop

    jeśli generujemy tęczę bez użycia dli.
    Pytanie brzmi:
    1. Jakiego trybu używasz?
    2. Czy to tekst czy grafika?
    3. Czy w trakcie coś chcesz robić, czy ma to być statyczna grafika?
    4. Czy tęcza jest na całej wysokości playera/missilea, czy tylko na wybranym fragmencie?
    5. Czy fragment jest mały czy stanowi np. pół ekranu?
    6. Czy wykorzystujesz jeden player do tęczy, czy więcej?
    Oczywiście zamiast colpm0 może być pm1, pm2, pm3, pf3 (dla playera 5).
    Zwiększenie jest o 2, bo najmłodszy bit koloru jest ignorowany.
    Zależnie od potrzeby procedura może korzystać z dli, lub nie, być bardziej lub mniej skomplikowana. Przykładowy kod obrazuje tylko ideę.
    • 39: CommentAuthortbxx
    • CommentTime19 May 2013
     
    Da się w TBXL zrobić taki myk żeby w trybie GRAPHICS 31 w liniach 8-16 była inna paleta kolorów niż w pozostałych?
    • 40: CommentAuthormono
    • CommentTime19 May 2013
     
    Za pomocą dli tak.
    • 41: CommentAuthortbxx
    • CommentTime19 May 2013
     
    o DLI mam bardzo blade pojęcie :/
    wystarczy kilka/kilkanaście "POKE" jak przy tworzeniu "własnego" trybu grafiki, czy to już będzie asm i X=USR(xxxx)?
    • 42: CommentAuthormono
    • CommentTime19 May 2013
     
    Asm i usr.
    • 43: CommentAuthormono
    • CommentTime20 May 2013
     
    Mniej więcej coś takiego:
    dli:
    pha
    lda vcount
    cmp #($20+(8+16)/2)/2
    bcc ?custom
    lda colpf0s
    sta colpf0
    lda colpf1s
    sta colpf1
    lda colpf2s
    sta colpf2
    pla
    rti
    ?custom:
    lda #kolor01
    sta colpf0
    lda #kolor10
    sta colpf1
    lda #kolor11
    sta colpf2
    pla
    rti

    Oczywiście trzeba włączyć dli w linii 7 i 15 dlisty, no i ustawić wektor przerwań dliv oraz włączyć je w nmien:
    lda dlptrs
    sta adr
    lda dlptrs+1
    sta adr+1
    ldy #3+3+(7-1)
    lda #$80
    ora (adr),y
    sta (adr),y
    ldy #3+3+(15-1)
    lda #$80
    ora (adr),y
    sta (adr),y
    lda #<dli
    sta dliv
    lda #>dli
    sta dliv+1
    lda #$c0
    sta nmien

    Możliwe, że trzeba by docyklować dli.
    • 44:
       
      CommentAuthorxeen
    • CommentTime20 May 2013 zmieniony
     
    no nie wiem czy w tym konkretnym przypadku nie lepiej zapodać prockę DLI z kilkoma dodatkowymi sta $d40a :)

    zwłaszcza pod kątem zrozumienia dla kogoś kto tego nie robił....
    • 45: CommentAuthors2325
    • CommentTime21 May 2013
     
    Wciągające i według mnie dobrze wykonane. W hieroglify zaplątany kaz, joystick i symbol Atari.

    • 46: CommentAuthormono
    • CommentTime21 May 2013
     
    @xeen: Czyli coś takiego:
    lda colpf0s
    sta c1
    lda colpf1s
    sta c2
    lda colpf2s
    sta c3
    lda dlptrs
    sta adr
    lda dlptrs+1
    sta adr+1
    ldy #3+3+(7-1)
    lda #$80
    ora (adr),y
    sta (adr),y
    lda #<dli
    sta dliv
    lda #>dli
    sta dliv+1
    lda #$c0
    sta nmien
    rts

    dli:
    pha
    lda #kolor01
    sta colpf0
    lda #kolor10
    sta colpf1
    lda #kolor11
    sta colpf2
    sta wsync
    sta wsync
    sta wsync
    sta wsync
    sta wsync
    sta wsync
    sta wsync
    sta wsync
    c1 = *+1
    lda #0
    sta colpf0
    c2 = *+1
    lda #0
    sta colpf1
    c3 = *+1
    lda #0
    sta colpf2
    pla
    rti

    wsync to trochę strata czasu (cpu) i wolę unikać takich rzeczy.
    • 47:
       
      CommentAuthorxeen
    • CommentTime21 May 2013
     
    tak, oczywiście masz rację co do zasady.
    w praktyce w basicu nie potrzeba usr aby wywolac DLI, jezeli dli jest jedno z wsync (zresztą w Twoim przykladzie to nie ma znaczenia)

    można ustawić przerwanie np. tak:
    DLIST=DPEEK(560):POKE DLIST+62,PEEK(DLIST+62)+128 - w zaleznosci od linii.
    a potem:
    DPOKE 512,BL:POKE 54286,192
    gdzie bl to adres skompilowanej procki jak wyzej.
    • 48: CommentAuthors2325
    • CommentTime21 May 2013
     
    Picross przywędrował niedawno też na Amstrada:

    • 49: CommentAuthortbxx
    • CommentTime29 Jul 2013 zmieniony
     
    Moja czwarta gra raczej zbyt szybko nie powstanie - wpadłem na szalony pomysł napisania jej w Action! W każdym razie tytuł już jest "Action! Tank".
    • 50:
       
      CommentAuthorKaz
    • CommentTime12 Aug 2013
     
    He he, Action! :)
    Trzymam kciuki i jakby cos bylo Ci potrzebne to smialo pisz.