Beiträge von GI-Joe im Thema „Sammelthread: Lernen aus Fehlern“

    Ist das (böser SelfMod) nicht noch schneller, als über die ZP?

    Sollte Dein Code in der Zeropage laufen, ist er gleich schnell mit meinem 3 Zyklen schneller als meiner.

    Sollte Dein Code woanders laufen, ist er 3 Zyklen langsamer, da ein sta$xxxx 4 Zylen braucht und ein sta$xx nur 3 ;)

    Was Du meintest war bestimmt sta ($xx),y , das braucht 6 Zyklen und wäre langsamer als Dein SelfModCode

    edit2: meine ja nur, effizientes multitasking UND stable-raster klingt halt irgendwie ... kaum machbar :nixwiss:

    doch , mit Timer-NMI und ohne PHA/PLA - einfach A,X,Y in 3 ZP-Adressen rotzen und am Ende wieder laden, spart viel Rasterzeit gegenüber PHA/PLA wenn man z.B. in jeder Rasterline den Sideborder öffnen will. Und da der NMI auch einen IRQ unterbricht, hätte man den Rest der Rasterlines in der horzontalen frei für Mainloop oder Sound oder ....

    Und alles Timing-kritische inkl. StableRaster kann dann ja der NMI übernehmen. ggf. mit 2 CIA2-Timern falls badlines mit im Spiel sind ....

    und $DD0C vorher mit #$40 laden (Opcode für RTI) spart ja auch noch bisschen.

    Oder hab ich jetzt einen Gedankenfehler ?

    Code
    nmi_routine:
        sta $02
        stx $03
        sty $04
        dec $d016
        inc $d016
        ldy $04
        ldx $03
        lda $02
        jmp $dd0c                ; JMP$dd0c = rti+ack = 3 cycles - ack