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.
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.
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.
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
Aihe on jo aika vanha, joten et voi enää vastata siihen.