26

W sumie pomysl jest nieglupi i dzialaloby to calkiem zgrabnie, bo argumenty nielegala bylby na swoim miejscu, a tylko wystarczyloby podmienic kod rozkazu na kod BRK (0 OIDP). Wystarczyloby tylko zadbac o modyfikacje stosu, zeby powrot po BRK nastapil pod adres za argumentami, a nie w nie. Jednak: jesli ktos niezmiernie chce uzywac nielegali, a chce zeby jego programy daly sie uruchomic na kazdym Atari to polecam jakis makroasembler (jak zwykle zarekomenduje MAE ;)) i odpowiedni zestaw makr symulujacych nielegale.

ps. Artykul Draco o nielegalach byl w Bajtku (taki z szara okladka, chyba z 96 roku).

27

To ja się może podczepię pod ten temat.

Wiążę się bowiem z takim problemem, że nie mam dobrego pomysłu jak "dynamicznie" wyliczać maski potrzebne do późniejszego nakładania znaku na znak. Przypomnę prockę (dla jednego znaku):

       ldx #7
petla  lda znak,x       ; znak będący tłem
       and maska,x      ; robimy miejsce
       ora nakladany,x  ; nakładamy znak
       sta znak,x
       dex
       bpl petla

Gdyby było to kilka znaków to maski mogę sobie od biedy wyliczyć ręcznie na kartce i wpakować w tablicę. Ale co, jak mam kilka(naście) charsetów?

Dzięki za pomoc.

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.

28

to zalezy czy ma byc to procedurka wyczynowa czy raczej na uzytek domowy ;-)

nie wydaje mi sie zeby trzymanie masek do kilku/kilkunastu 'nakladanych' znakow bylo pamieciozerne ale jesli tak to:

do dynamicznego tworzenia masek potrzeban jest tablica o wielkosci 1 strony pamieci (dla znakow 8*8)

        ldy #7
petla ldx nakladany,y
        lda tab_maska,x
        sta _and+1
        lda znak,y
_and and #0
        ora nakladany,y
        sta znak,y
        dey
        bpl petla

chyba o to Ci chodzilo, oczywiscie to pomysl - wykonanie zostawiam lepszym.

z nielegalami szybciej :p

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

29

Ok - ale to ma być znak multikolorowy czy 1 kolorowy - dla 1 kolorowego nie potrzeba maski , a dla multikolorowego wystarczą tak naprwadę 4 lub 1. Maska musi tylko maskować bity o kolorze np nie 0 (lub inny)
Przykładowa procka wyglądałaby tak:


ldx #7
loop ldy nakladany,x

lda tlo_znak,x
and maska_kolor,y
ora nakladany,x
sta tlo_znak,x
dex
bpl loop
rts

30

nie zgadzam sie, maska zawsze sie przydaje, kto wie, moze bedzie chcial robic obwodki wokol znaku (jak na zx)?

z mojego przykladu:

        lda tab_maska,x
        sta _and+1
        lda znak,y
_and    and #0

mozna zmienic kolejnosc pobierania i zastapic:

        lda znak,y
        and tab_maska,x

ale to wlasciwie bedzie to samo co swiety...

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

31

O matko, zapomniałem oczywiście dodać, że chodzi o tryb 4 Antica.

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.

32 Ostatnio edytowany przez xxl (2005-08-24 09:50:49)

nic to nie zmienia, poprostu tablica masek bedzie miala nadal 1 strone pamieci ale dane w niej beda sie powtarzac ...
antic 4 itp.
bez ramki:
11111111,11111100,11111100 itd
a z ramka:
11111111,11110000,11110000 itd.
dla antica 2:
bez ramki:
11111111,11111110,11111101 itd.
z ramka:
11111111,11111100,11111000 itd.

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

33

przyjrzyj sie grze Mario Bros, tam nie ma AND-owania zawartosci obrazu, jest tylko ORA duszkiem po ekranie, i wszystko ładnie chodzi

w Dynablaster jest AND-owanie zawartosci obrazu, tak jak w Twoim przykladzie XXL, tylko petla jest rozpisana, aby bylo szybciej, tyle ze w Dynablaster duchy programowe chodza po grafice, gdyby chodzily tylko po samym tle nie trzebaby bylo uzywać AND

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