Hammer time

Aloittaja pophead, helmikuu 05, 2014, 10:40

« edellinen - seuraava »

pophead

Terve,

Ensimmäinen "oikea" C64 intro valmistuu hyvää vauhtia. Taitaa olla tyypillinen tarina tässä takana. Hommat jäi silloin muksuna kesken ja nyt piti tehdä homma loppuun ajelehtimasta.
Ajattelin, että lisäisin toisen osan introon. Siinä olisi kuva, musa ja ehkäpä scrolli.

Voiko osa yksi ja kaksi olla muistissa päällekkäin jollain pakkaus yms. tekniikkaa käyttäen? Muistelen, että jotain juttuja sledgehammerilla tein, mutta en muista sen logiikkaa.

virgo

Tervetuloa joukkoon  ;D

kyllä montakin osiota voi pakata koneen muistiin kunhan ne on suuniteltu myös tukemaan kyseistä operaatiota
homma menee vaikeaksi jos demo on plasteltu ympäri muistia

yleensä toinen osio puretaan edellisen päälle tai rakennetaan koko Demokoodi toimimaan kokonaisuudessaan avattuna
muistissa tekniikoita on monia
myöskin pelkän grafiikan pakkaamista olen nähnyt eli koko Demon rutiinit on purettu muistiin ja pelkkä grafiikka pysyy pakattuna kunnes sitä tarvitaan

valitettavsti itse en olen noihin kerrospaketointeihin tutustunut
mutta tekniikka on tuttu

Genetic-PET C64 BBS:
g-point.tunk.org port 1025

Genetic-point Amiga BBS:
g-point.tunk.org port 500

pophead

Kiitosket! Mukava olla porukoissa. Pulma. Bitmap Kuva on $c000. Nyt kun yritän laittaa sitä ruudulle, niin näkyy vain osittain ja värit väärät.
En oikein ole varma, miten seuraavien rivien asetukset pitäisi olla.

           lda #$3b
           sta $d011
           lda #$18
           sta $d016
           lda #$30     <- tämä lienee väärin?
           sta $d018

virgo

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.
Genetic-PET C64 BBS:
g-point.tunk.org port 1025

Genetic-point Amiga BBS:
g-point.tunk.org port 500

virgo


jos menee yli hilseen ei se haittaa kysymällä lisää siitäkin pääsee
en ole maailman parhaita selittämään asioita jotka minulle ovat melko selkeitä mutta
ajatus polut ei sitten tunnu aukeavan kunellekkään muulle ja toisin päin toisten selitykset ei aukee mulle  :bang:
Genetic-PET C64 BBS:
g-point.tunk.org port 1025

Genetic-point Amiga BBS:
g-point.tunk.org port 500

pophead

Kyllä tuo varmasti aukeaa muutamalla lukemisella. Nyt on vaan ollut niin kiirettä, että kaikki harrasteet on jääneet jälkeen. Pitäisi tuo eka intro tosin saada nyt viikonlopuksi valmiiksi. Tänne varmasti voi laittaa sitten jakoon kun tuotos on valmis. Onko olemassa jotain multikansallista the paikkaa, johon tuotokset voisi työntää?