Hallo Besucher, der Thread wurde 1,6k mal aufgerufen und enthält 2 Antworten

letzter Beitrag von spindizzy am

RasterBar

  • Hi zusammen :roll2: ,


    ich hab grad die ersten 3 Teile des Irq-Tuts von Herzog gemacht und dachte mir ich ich prog ne Rasterbar wie sie in den meisten Demos benutzt wird.
    Bestehen soll die Bar aus 4 verschieden breiten und verschieden farbigen Lines, dazu benutze ich zwei Tabellen !
    Ich hab 2 Irq's laufen weil ich noch einiges rumprobieren will !
    Das Prob. ist nur dass ich nur eine Linie gezeichnet bekomme ;(.
    Ich find einfach den Fehler nicht. Hoffentlich könnt ihr mir helfen !?


    Hier mal mein Code :


    Vielen Dank für eure Mühe schon mal vorab ... :help:


    ;)
    Spindizzy

  • ja hallo erstmal.... :D



    also... zeile 0 als startzeile ist sehr unglücklich gewählt, da das ja so weit oben
    im border ist, dass du es garnicht siehst...


    solltest mal so ab $10 anfangen...


    und wenn ich deine routine richtig verstehe, solle sie von zeile


    $12, bis $14 dunkelgrau,


    dann von


    $14 bis $17 mittelgrau,


    dann von


    $17 bis $19 hellgrau


    und von da ab gelb machen


    .....
    dann ist der fehler schon gefunden...


    denn du schreibst ja nur in $d012 rein...und dass recht schnell hintereinander...
    da solltest du anstelle des schreiben in $d012 ein wait auf $d012 machen...


    also z.b. ein


    cmp $d012
    bne *-3 (zum cmp$d012)


    allerdings müsstes du am ende der x-loop noch $d012 auf einen neuen wert für
    den 2. irq setzten..(wenn du wirklich noch einen 2. irq haben willst)



    zu dem in $d021 / $d021 schreiben sei aber noch gesagt, dass das mit der routine
    etwas zu spät sein wird, und das umschalten innerhalb des sichtbaren screens erfolgt (ps: und $d021 ist auch unnötig, da das alles ja im oberen border geschieht und die hintergrundfarbe so nicht zu sehen ist ...es sein denn du öffnest den unteren und oberen border).



    für den anfang würde ich sowieso nur mit einem irq rumspielen...das reicht auch...


    und dann macht man am besten eine rasterroutine, die auf warteschleifen, und nicht auf $d012 bassiert.


    z.b.


    ldx #$10


    loop1


    lda farbtabelle,x
    sta $d020
    sta $d021


    ldy #$09


    loop2


    dey
    bne loop2


    dex
    bne loop1




    so...die routine braucht genau 63 taktzyklen pro loop1 schleife.. und das ist genau
    die dauer einer rasterzeile (wenn es keine badline ist..aber die gibt es im oberen border ja nicht).


    nicht wundern, dass die loop1 "rückwärts" läuft.... passt so halt genau auf die 63 zyklen...


    ps: vor dem start dieser routine sollte man noch eine kleine warteschleife machen, damit das farbenumschalten immer link bzw. rechts vom sichtbaren bildschirm geschieht.... glaube ein ldx#03 dex bne *-3 sollte es tun....