Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Commodore 64:n 160x200-grafiikkatila

peran [10.01.2017 20:07:36]

#

Yritin googlettaa, mutten osannut.

Mitkä on rajat C64:n grafiikalle 160x200-tilassa ?

Ainakin 4-väriä voi yhtä aikaa käyttää, mutta voiko käyttää eri 8x8:n pixelin blokissa useampaa väriä ?

(Siis niin että 8x8:n blokissa on neljä väriä, mutta ne värit voisivat olla erit eri blokeissa.)

Jos mahdollista, niin mistä löytyisi esimerkkiohjelmaa. (Basic:lle ilman Simoa.)

Tavoitteena olisi tehdä staattinen taustakuva ilman spritejä C64:lle.

reino [10.01.2017 21:27:05]

#

160x200 tilassa jokainen piste on 2 pikseliä leveä koska värin määrittelyyn tarvitaan 2 bittiä. Koko ruudulle on määritelty 3 yhteistä väriä ja jokaiselle 8x8 ruudulle on yksi oma väri joka määritellään värimuistialueella (Color RAM). Eli vain yksi väri voi olla kokonaan oma eri blokeissa.

Codebase 64 sisältää paljon Commodore 64 ohjelmointiin liittyviä dokumentteja ja esimerkkikoodia. Basicilla grafiikan koodaaminen on hankalaa ja hidasta joten kannattaa opetella konekieli. Vähintäänkin kannattaa kirjoittaa omat konekielirutiinit grafiikan piirtämiseen joita sitten kutsutaan basicista

Jos meinaat tehdä taustakuvan jonka päällä on tekstiä niin se ei onnistu ilman että teksti olisi mukana kuvassa.

peran [10.01.2017 22:02:57]

#

reino kirjoitti:

160x200 tilassa jokainen piste on 2 pikseliä leveä koska värin määrittelyyn tarvitaan 2 bittiä. Koko ruudulle on määritelty 3 yhteistä väriä ja jokaiselle 8x8 ruudulle on yksi oma väri joka määritellään värimuistialueella (Color RAM). Eli vain yksi väri voi olla kokonaan oma eri blokeissa.

Vähän tolleen ymmärsinkin, mutta sillä on saatu sen verran nättejä kuvia, joten toivoin vähän enemmän vapauksia ohjelmointiin.

reino kirjoitti:

Codebase 64
sisältää paljon Commodore 64 ohjelmointiin liittyviä dokumentteja ja esimerkkikoodia. Basicilla grafiikan koodaaminen on hankalaa ja hidasta joten kannattaa opetella konekieli. Vähintäänkin kannattaa kirjoittaa omat konekielirutiinit grafiikan piirtämiseen joita sitten kutsutaan basicista

Olen jonkin verran googlaillu, mutta kyseinen sivu ei ollut tuttu. kiitoksia...
Olen laiska konekielen räplääjä, mutta löysin C-kääntäjän, jolla olen tehnyt ohjelmia. Lisäksi oma käsialani kaipaisi laajempaa käskykantaa. Tosin tuskin hirvittävän kauan kestäisi muutaman assemblerperusrutiinin opetteleminen.

reino kirjoitti:

Jos meinaat tehdä taustakuvan jonka päällä on tekstiä niin se ei onnistu ilman että teksti olisi mukana kuvassa.

No se on ollut tiedossa.

peran [11.01.2017 16:25:35]

#

Lisää kysymyksiä...

Osaan siirtää C-koodini Vice:lle, mutta kuinka siirrän assembler-koodini vicelle ?

Siis esimerkiksi tällainen assemblerkoodi...

           * = $1000

loop:      inc $d020 ; increment $d020
           jmp loop  ; jump to label loop

kääntyy seuraavanlaiseksi...

$ hexdump -C a.o65
00000000  ee 20 d0 4c 00 10                                 |. .L..|
00000006

Siis kääntyy ihan oikein, mutta kuinka laitan sen vicelle (muuten kuin pokeamalla )?

pokeamalla menee ihan oikein...

poke 4096,238
poke 4097,32
poke 4098,208
poke 4099,76
poke 4100,0
poke 4101,16
sys(4096)

Edit - Ratkaistu ...
Asensin ACME Cross-compilerin, ja seuraavalla loitsulla teki oikeanlaisen tiedoston...

acme.exe --cpu 6510 --format cbm --outfile flashingBorders.prg flashingBorders.asm

Kiitokset vaivannäöstänne. :)

Edit2 - Näyttää riittäneen, kun laittaa tiedoston eteen aloitusosoitteen, sillä muutettu koodi näyttää seuraavanlaiselta...

$ hexdump -C flashingBorders.prg
00000000  00 10 ee 20 d0 4c 00 10                           |... .L..|
00000008

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta