Zeichensatz-ROM überlagert Spritedaten

Es gibt 10 Antworten in diesem Thema, welches 1.618 mal aufgerufen wurde. Der letzte Beitrag (9. September 2020 um 21:09) ist von BIF.

  • Aus der C64-Wiki ( Bitte melde dich an, um diesen Link zu sehen. )

    Zeichensatz-ROM überlagert Spritedaten

    Der VIC sieht in zwei Addressbereichen immer nur das Bitte melde dich an, um diesen Link zu sehen. anstelle des RAM-Inhalts. In die folgenden Adressbereiche können also keine Sprites gelegt werden:

    • 4096 bis 8191 ($1000 bis $1fff) - Bank 0
    • 36864 bis 40959 ($9000 bis $9fff) - Bank 2

    Es gilt daher: In VIC Bank 0 und 2 können die Sprite-Blöcke 64 bis 127 ($40 bis $7f) nicht verwendet werden. Ist der VIC jedoch Bitte melde dich an, um diesen Link zu sehen., besteht keine Einschränkung

    Nun bin ich aber in Bank 0, und das stört mich. Kann ich nicht irgendwie diese Überlagerung ausschalten? Ich habe eh mein eigenes Character Set.

    Bitte melde dich an, um diesen Link zu sehen. (Bitte melde dich an, um diesen Link zu sehen.)Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen.
  • Nein, es gibt keine Möglichkeit das der VIC dort andere Daten liest. Das ganze beschränkt sich nicht nur auf Spritedaten, Bitmap/Zeichensatz geht auch nicht. Du musst wohl oder übel auf Bank 1 oder 3 ausweichen. Vieles spricht für Bank 3, da du dort alles schön unter das Farbram/IO/Kernal legen kann.

    Es ist praktisch unmöglich, ein schnelles Programm zu schreiben, wenn man es in Basic programmiert.

  • Danke für die Antwort, Acorn. Na gut. Ich bin mit den Daten erstmal nach $1000 ausgewichen.

    Bitte melde dich an, um diesen Link zu sehen. (Bitte melde dich an, um diesen Link zu sehen.)Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen.
  • Damit ich ohne Problem Bank 3 benutzen kann, habe ich Winvice auf “Inject into RAM“ gestellt. Das ganze findet man bei Winvice 3.2 unter Autostart/PRG Autostartmodus und bei Winvice 3.4 versteckt sich das unter Maschine/Autostart. Dadurch kann man mit C64-Studio einfach den Speicherbereich unter das Farb/IO/Kernal benutzen ohne kopieren / ausblenden. Das fertige Programm muss später nur mit einem Packer wie Exomizer bearbeitet werden.

    Es ist praktisch unmöglich, ein schnelles Programm zu schreiben, wenn man es in Basic programmiert.

  • Kann ich nicht irgendwie diese Überlagerung ausschalten? Ich habe eh mein eigenes Character Set.

    Ohne Hardware-Umbau nicht. Wenn man /VA14 vom PLA abtrennt und den Pin auf +5 V legt müsste es klappen. Das wird man aber dem Programmnutzer wohl eher nicht zumuten können. ^^

    Dass der VIC an $1000/$9000 immer den Inhalt des Char-ROM sieht ist keine Eigenheit des ViC, sondern wird vom PLA so gesteuert.

  • Es hat ja auch einen Grund warum Musik in der Regel bei $1000 liegt :wink:

    Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen.

  • Damit ich ohne Problem Bank 3 benutzen kann, habe ich Winvice auf “Inject into RAM“ gestellt. Das ganze findet man bei Winvice 3.2 unter Autostart/PRG Autostartmodus und bei Winvice 3.4 versteckt sich das unter Maschine/Autostart. Dadurch kann man mit C64-Studio einfach den Speicherbereich unter das Farb/IO/Kernal benutzen ohne kopieren / ausblenden. Das fertige Programm muss später nur mit einem Packer wie Exomizer bearbeitet werden.

    oh, muss ich mal probieren ^^

    Ich hatte bis jetzt auch unter Vice immer nen HEXMON benutzt - da kann man mit dem Befehl U+ das RAM von $D000-$FFFF einschalten.

    Sitz halt ca. 30 Jahre so drin :nixwiss:

    Arcade: Twinliner, Fashion Vision,
    "Cosmic Guerilla" cocktail table
    Pins: Scared Stiff + Getaway
    C64, C65, C66, Gammel+Mist...

  • Ich leg ja immer alles gerne unter $d000-$ffff. Also Screen zb. bei $cc00, Sprites grundsätzlich unter $d000 und mein Zeichensatz dann "hintendran".

    Ist mit "Inject to RAM" auch ganz einfach zu arbeiten/compilieren. Und wenn das Projekt fertig ist 1x mit Exomizer packen - der schmeißt dann alle Daten korrekt unter den I/O Bereich, wie Bitte melde dich an, um diesen Link zu sehen. schon schrieb...

  • Ich hatte diese Probleme anfangs auch, weil ich auch immer Bank 0 nutzen wollte aus "Einfachheit" (man koennte auch sagen Faulheit ;) oder halt weil man mit der Materie noch nicht so vertraut war und einfach froh war ueberhaupt was hinzubekommen). Inzwischen habe ich aber mal meine Code-Basis ueberarbeitet und so umgestaltet dass ich relativ einfach die Baenke wechseln kann und die entsprechenden Daten zu Beginn des Programms dorthin verschieben kann. Das lohnt sich dann schon, weil eigentlich ist diese Einschraenkung ziemlich oft hinderlich.

    - neue Spiele für den C64 -
    Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen.

    Einmal editiert, zuletzt von ZeHa (9. September 2020 um 10:36)

  • Ich bin auch eher ein Freund von Zehas Ansatz, die Daten selbst zurechtzuschieben, zumindest bei der Bank unter IO.

    Wenn man sich auf (zumindest am Anfang) zu sehr auf Exomizer verlaesst/gewoehnt bekommt man leicht unfreiwillige Seiteneffekte durch inject to RAM (init-Probleme).

    Besser man ist Herr/Frau der Lage :)

    Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen.

  • Das man die ROM-Zeichensätze in Bank 0 und 2 nicht ausschalten kann ist natürlich unschön. Ideal wäre es naürlich gewesen, man setzt irgendwo ein Bit und man kann den ROM-Zeichensatz ein oder ausschalten.


    Mit ROM-RAM-Kopy, Basic-Thread Tricks mit ROM-RAM, kann man allerdings problemlos die oberen 16 kB, Bank.3 in Basic und Assembler für alle Daten nutzen und man hat keine Speicherüberschneidungen, wie in Bank 0/1/2 .

    Schönen Gruß.