Hallo Besucher, der Thread wurde 5,7k mal aufgerufen und enthält 62 Antworten

letzter Beitrag von feuertonne am

Intro-Coding mit acme

  • @feuertonne


    spider-j hat gemeint ich soll oben in meinem Code jjsr $1003 einfübgen, hab ich auch gemacht aber nur mit dem einzigen Efeikt, daß der Sound doppelt
    so schnell abläuft und die Sprites sich trotzdem nicht zeigen.

    Äh. Doppelt so schnell? Kann es sein, dass Du dann etwa den Code am Ende dringelassen hast?


    Obwohl, das blöde ist, dass Dein IRQ Init ja auch VOR Deinem Bildschirmaufbau kommt... Da ist wirklich noch der Wurm drin... Bin mir nicht sicher, ob es so einfach zu lösen ist.


    Musste wirklich nochmal grundsätzlich klären:
    - 1. Screenaufbau -> Sprites und Charset positionieren.
    - 2. Musik init [LDA #$00, TAX, TAY, JSR $1000 - fertig]
    - 3. IRQ Init [Der Kram nach SEI]
    - 3. JMP * [endlos JUMP]
    - 4. Code der IRQ Routinen

  • Ach Du grüne Neune... Jau, da fällt mir ne ganze Menge auf. :)
    Grob lässt sich das aber so zusammenfassen:
    Wenn bei irgendwelchen Programmierbeispielen wie bei dem Scroller oder der Playmusik Routine solche Sachen vorkommen wie lda $d012, cmp $d012 oder sowas, dann hat das nur den simplen Effekt, dass hier ohne einen Raster-IRQ zu "Demonstrationszwecken" gearbeitet wird.


    Diese Sachen hast Du schätze ich mal einfach so abgeschrieben und in Deinen Code eingebaut.


    z.B.:



    Das macht man SO nicht, wenn man einen Raster-IRQ benutzt...


    Den Musik-Init Part musst Du selbstverfreilich schon wieder irgendwo haben, der fehlt nämlich jetzt.


    Code
    1. LDA #$00
    2. TAX
    3. TAY
    4. JSR $1000
  • Öhm, die Routine hatte ich in meinem Workfile auskommentiert und habe das falsche geschickt.
    Hänge jetzt das richtige intro an. Aber ich kann nicht oft genug danke sagen, denn als ich voriges Jahr richtg mit Assembler angegangen habe,
    konnte ich nur so kleine wizige Routingen wie z.B.: sys 828 BorderColor,BackColor,TextColor erstellen.

  • Ach, kein Problem. Ich würde Dir gerne eigentlich noch mehr helfen, aber ich glaube, wenn ich jetzt einen Source von mir poste verwirrt Dich das nur noch mehr, weil ich vollkommen ohne ROM arbeite - d.h. da sind dann die IRQ Vektoren schon bei $fffe/ff statt bei $0314/15 - und außerdem ist da überall jetzt ein Stable-IRQ drin, was nochmal so eine Sache für sich ist, das zu begreifen.


    Wie gesagt: Struktur ist die halbe Miete.


    Ich muss mal schauen, ob ich das hier mal "eben schnell" durch copy+paste in Deinem Source hinbekomme, was ich meine...

  • spider-j
    Theoretisch weiß cih was du meinst, aber praktisch bin ich noch ein bisschen sehr weit weg von der Matiere.
    Aber es macht immer mehr spaß, je mehr ich lerne und code. Hoffe ich kann auch meine idee von einem einfachen Spielchen mal umsezten
    in der nächsten Zeit.



    Edit: Zur Not mache ich es mal in ( Beginners All Purpose Instruction Coded - kurz BASIC ) ich hoffe ich habe es jetzt richt geschrieben, aber
    wenn nicht auch wurscht also egal.


    Dann folgt heuer hoffentlich die Version in ASM. Ich feu mich schon drauf /edit

  • Mh. Ich hab's jetzt hier mal probiert, aber ich glaube kaum, dass ich es so ordentlich auf die schnelle hinbekomme, ohne dass es noch verwirrender ist als vorher. Ich bin ja schließlich auch noch weit entfernt davon richtig gut zu sein.
    Es hakt schon sehr an den IRQs. --- hm vielleicht fällt mir noch was ein, wie ich's besser erklären kann.

  • muss ich (teilweise) widersprechen. Das Warten auf eine Rasterzeile ist innerhalb eines IRQ nicht unbedingt nötig, da der IRQ selbst ja "das Warten auf eine Rasterzeile" bedeuted.
    Wenn man es richtig anstellt ist wie gesagt bei gh23 Intro bislang zwischen Ende der Rasterbars und Anfang des Scrollbereichs endlos viel Rasterzeit um Musik abspielen zu lassen.
    Da braucht man auf nix warten.


    Ich versuch's nochmal schematisch:


    ------------ SETUP


    1.) Musik Setup 0 in A, X, Y + JSR $1000
    2.) Screensetup (sky und Kobolde)



    ------------ IRQ Init [zwischen SEI und CLI]


    IRQ-Vektoren auf IRQ1
    $d012 = #$72 (bedeuted: der Code bei IRQ1 wird ab Rasterzeile #$72 ausgeführt)


    ----------------------------------------------------------------------------
    Endlossprung oder weiterer Code ausserhalb des IRQs [eventuell Scrollroutine]
    ----------------------------------------------------------------------------


    ------------ IRQ1 bei Rasterzeile #$72
    1.) Rasterbars anzeigen
    2.) JSR $1003 [Musik abspielen]
    X.) [eventuell Scrollroutine - kann, muss aber nicht in einen IRQ]
    3.) IRQ-Vektoren auf IRQ2 / $d012 = #$e0
    4.) IRQ Beenden


    ------------ IRQ2 bei Rasterzeile #$e0
    1.) von 40 auf 38 Zeilen Modus schalten [Smoothscroll Wert nach $d016]
    2.) IRQ-Vektoren auf IRQ3 / $d012 = #$ff [da ist im Source noch #$00, es wäre aber schlauer #ff zu nehmen]
    3.) IRQ Beenden


    ------------ IRQ3 bei Rasterzeile #$ff
    1.) von 38 Zeilen Modus auf 40 Zeilen Modus schalten [$d016 "normal"]
    2.) IRQ-Vektoren auf IRQ1 / $d012 = #$72
    3.) IRQ Beenden

  • ja, du hast recht.
    aber das war als 'sicheres Beispiel' gedacht, das funzt auf jeden fall.
    hatte noch nicht die Zeit mich durch seinen code zu wühlen.
    Deine Erklärung ist top gemacht. Danke und :winke:

  • So, ich hab's jetzt nochmal durch. hat jetzt endlich bei mir geklingelt. Der Border sollte ja auch geöffnet werden.
    Deswegen waren die Sprites weg, weil die im Top-Border liegen.


    Das Ergebnis muss also so sein. Siehe Anhang.


    Start mit SYS 8192 - hatte ja Charset und Musik etc... nicht da, deswegen einfach "irgendetwas" genommen.
    INC $d020 eingefügt vor JSR $1003
    und vor Borderopen und Scrollroutine..


    Das gehört alles in IRQs. Muss aber immer noch aufgeräumt werden!!!!