Sinn und Zweck der Schattenregister
Verfasst: 14.02.2022 10:22
Hallo,
ich beschäftige mich ja gerade im anderen Thread viewtopic.php?p=4504#p4504 mit der Nutzung des RAM unter dem ROM.
Da ja dazu der VBI ausgeschaltet werden muss (wie man DLI und VBL trotzdem weiterbenutzen kann recherchiere ich gerade) werden nun logischerweise die Schattenregister nicht mehr aktualisiert.
Macht aber nix, nutze ich halt die Hardwareregister.
Und damit komme ich nun zu meiner Frage:
Was ist überhaupt der Sinn und Zweck der Schattenregister?
Ich verstehe, dass ATARIs Ingenieure Transistoren in GTIA, ANTIC und POKEY) sparen wollten und daher einige Adressen mit untschiedlicher Logik für Lesen und Schreiben versehen haben, z.B. die Adresse $d000 bzw. 53248, die schreibend die horizontale Position des Player0 bedeutet und lesend die Kollision von Missile0 mit den Farben des Playfields.
Will ich also die horizontale Position des Player0 wissen, greife ich also auf das Schattenregister zu.
Aber hätte ich das nicht auch selber machen können? So viele nicht lesbare Hardwareregister gibt es jetzt auch nicht und die wenigen, die man dann tatsächlich benötigt, könnte man doch selber in ein frei definiertes Schattenregister retten?
Der Vorteil wäre aber, dass man den derzeit fest definierten Speicherbereich der Schattenregister für eigene Zwecke frei hätte.
Aktuell werden die Schattenregister ja im VBI aktualisiert, findet also synchron zum Bildaufbau statt, aber das hätte man für die wenigen Register ebenfalls selber im VBL tun können, auch wenn das Rechenzeit im VBI kostet. Wenn der ATARI die Schattenregister aber nicht im VBI füllen würde, hätte man da aber auch mehr Zeit für eigene Routinen.
Anderer Fall ist die Abfrage des Feuerknopfes des Joysticks. Wenn man das nur im Schattenregister erfragt bekommt man durch die (späte) Aktualisierung im VBI das Prellen des Feuerknopfes weg (hat @Jac! hier sehr schön erklärt: https://m.youtube.com/watch?v=OCMzYpHSNa8).
Aber sonst?
Also kann mich jemand zum Sinn und Zweck der Schattenregister erhellen?
ich beschäftige mich ja gerade im anderen Thread viewtopic.php?p=4504#p4504 mit der Nutzung des RAM unter dem ROM.
Da ja dazu der VBI ausgeschaltet werden muss (wie man DLI und VBL trotzdem weiterbenutzen kann recherchiere ich gerade) werden nun logischerweise die Schattenregister nicht mehr aktualisiert.
Macht aber nix, nutze ich halt die Hardwareregister.
Und damit komme ich nun zu meiner Frage:
Was ist überhaupt der Sinn und Zweck der Schattenregister?
Ich verstehe, dass ATARIs Ingenieure Transistoren in GTIA, ANTIC und POKEY) sparen wollten und daher einige Adressen mit untschiedlicher Logik für Lesen und Schreiben versehen haben, z.B. die Adresse $d000 bzw. 53248, die schreibend die horizontale Position des Player0 bedeutet und lesend die Kollision von Missile0 mit den Farben des Playfields.
Will ich also die horizontale Position des Player0 wissen, greife ich also auf das Schattenregister zu.
Aber hätte ich das nicht auch selber machen können? So viele nicht lesbare Hardwareregister gibt es jetzt auch nicht und die wenigen, die man dann tatsächlich benötigt, könnte man doch selber in ein frei definiertes Schattenregister retten?
Der Vorteil wäre aber, dass man den derzeit fest definierten Speicherbereich der Schattenregister für eigene Zwecke frei hätte.
Aktuell werden die Schattenregister ja im VBI aktualisiert, findet also synchron zum Bildaufbau statt, aber das hätte man für die wenigen Register ebenfalls selber im VBL tun können, auch wenn das Rechenzeit im VBI kostet. Wenn der ATARI die Schattenregister aber nicht im VBI füllen würde, hätte man da aber auch mehr Zeit für eigene Routinen.
Anderer Fall ist die Abfrage des Feuerknopfes des Joysticks. Wenn man das nur im Schattenregister erfragt bekommt man durch die (späte) Aktualisierung im VBI das Prellen des Feuerknopfes weg (hat @Jac! hier sehr schön erklärt: https://m.youtube.com/watch?v=OCMzYpHSNa8).
Aber sonst?
Also kann mich jemand zum Sinn und Zweck der Schattenregister erhellen?