katsotaampas miten tämän osaan selittää...
jos aijot näyttää kokokuvan (hires) sulla on huono paikka sille mutta toimii jos vain puolet kuvasta pitää näkyä
kokonainen Hires kuva vie tuossa tilaan $C000-DFFF asti
vika tässä on se että C64 IO alueet alkaa $D000 osoitteesta ne toki saa tieltä pois mutta sitten ei näy enään kuvakaan
ja koska kuvasi on pois alueeltta 0000-3FFF mitä systeemi normaalisti käyttää joudumme
vaihtamaan muisti lohkoa mitä Vic katselee sehän näkee muuistista vain 16k blokin kerrallaan
eli $DD00 osoiteessa lymyää ensimmäiset 2 bittiä jotka määräävät mitä lohkoa vic katselee
loput bitit ovat seriaaliliikenteelle eivätkä ne kiinnosta meitä
$DD00
Bits #0-#1: VIC bank. Values:
#%xxxxxx00
%00, 0: Bank #3, $C000-$FFFF, 49152-65535.
%01, 1: Bank #2, $8000-$BFFF, 32768-49151.
%10, 2: Bank #1, $4000-$7FFF, 16384-32767.
%11, 3: Bank #0, $0000-$3FFF, 0-16383.
eli sinun tapauksessa molemmat bitit pitäisi olla %00
vasta tämän jälkeen voidaan alkaa laskemaan mihiin kaikki muu laitetaan
hires Grafiikalle $d018 antaa vain kaksi osoitetta jotka
bitti 0 määrittelee Alkaako hires osoitteesta (normaalisti) 0000-1FFF vai 2000-3FFFF väliltä
jos DD00 on määritelty grafiikka muistin alkamaan esim $C000 vaihtoehdot ovat seuraavat C000-DFFF tai E000-FFFF
Lasketaan siis DD00=%xxxxxx00 (C000-FFFF) D018=%xxxxxxx0 (0000-1FFF) C000+0000=C000 nyt osoite on oikea
sitten pitää määritellä missä kuvaruutu muisti sijaitsee eli toinen osa värimuistista tässä tapauksessa
niistä päättää D018 bitit #4-7 koska nyt muitin olisi kuvalle varattuna C000-DFFF väliltä sijoitamme
kuvaruutumuistiin osoitteeseen E000-E3FFF
D018 #4-7 =%1000xxxx (2000-23FF) C000+2000=E000
varsinaista värimuistia ei pysty siirtämään minnekkän se on aina D800 osoitteessa
jos kuvan alareunaan pitäisi vielä sijoitaa jokin oma scroll ruutu
pitäisi vielä sijoittaa char grafiikka osoitin
sijoitamme char grafiikan vaikka $F000 osoitteeseen $d018 bits 1-3 %xxxx110x (3000-37FF) C000+3000=F000
eli konekielisesti tekisimme sen näin
LDA #%00000000
STA $DD00
LDA #%10001100
STA $D018
kerrataan vielä d018 rekisterit
bits
0 Hires aluen määrittely kaksi vaihtoehtoa 16k lohkossa
1Char grafiikan sijoitus 7 paikkaa
2
3
4 Kuvaruutu muistin sijoitus 15 paikkaa
5
6
7
lisäksi jos aikoo käyttää Spritejä ne myös noidattavat DD00 rekisterin 16k lohko määrittelyä
laskenta kaava on sama kuin D018 rekisterissä
tässä vielä "selkeyden" vuoksi mitä D018 rekisteristä sanotaan
Memory setup register. Bits:
Bits #1-#3: In text mode, pointer to character memory (bits #11-#13), relative to VIC bank, memory address $DD00. Values:
%xxxx000x, 0: $0000-$07FF, 0-2047.
%xxxx001x, 1: $0800-$0FFF, 2048-4095.
%xxxx010x, 2: $1000-$17FF, 4096-6143.
%xxxx011x, 3: $1800-$1FFF, 6144-8191.
%xxxx100x, 4: $2000-$27FF, 8192-10239.
%xxxx101x, 5: $2800-$2FFF, 10240-12287.
%xxxx110x, 6: $3000-$37FF, 12288-14335.
%xxxx111x, 7: $3800-$3FFF, 14336-16383.
Values %010 and %011 in VIC bank #0 and #2 select Character ROM instead.
In bitmap mode, pointer to bitmap memory (bit #13), relative to VIC bank, memory address $DD00. Values:
%0xx, 0: $0000-$1FFF, 0-8191.
%1xx, 4: $2000-$3FFF, 8192-16383.
Bits #4-#7: Pointer to screen memory (bits #10-#13), relative to VIC bank, memory address $DD00. Values:
%0000xxxx, 0: $0000-$03FF, 0-1023.
%0001xxxx, 1: $0400-$07FF, 1024-2047.
%0010xxxx, 2: $0800-$0BFF, 2048-3071.
%0011xxxx, 3: $0C00-$0FFF, 3072-4095.
%0100xxxx, 4: $1000-$13FF, 4096-5119.
%0101xxxx, 5: $1400-$17FF, 5120-6143.
%0110xxxx, 6: $1800-$1BFF, 6144-7167.
%0111xxxx, 7: $1C00-$1FFF, 7168-8191.
%1000xxxx, 8: $2000-$23FF, 8192-9215.
%1001xxxx, 9: $2400-$27FF, 9216-10239.
%1010xxxx, 10: $2800-$2BFF, 10240-11263.
%1011xxxx, 11: $2C00-$2FFF, 11264-12287.
%1100xxxx, 12: $3000-$33FF, 12288-13311.
%1101xxxx, 13: $3400-$37FF, 13312-14335.
%1110xxxx, 14: $3800-$3BFF, 14336-15359.
%1111xxxx, 15: $3C00-$3FFF, 15360-16383.