Heute so gecodet...

Es gibt 2.379 Antworten in diesem Thema, welches 480.640 mal aufgerufen wurde. Der letzte Beitrag (1. November 2025 um 13:53) ist von Unseen.

  • Warum Sprites und nicht einfach das ColorRAM, um die Ränder zu färben?


    Oder bei Sprites: ich vermute, Du nimmst inverse Character mit den Sprites als Hintergrund. Du könntest ja die Sprites so gestalten, dass sie zum jeweils nächsten Sprite pixelweise „ausfaden“. Dann sieht der Übergang weicher aus. Also etwa so:


    xxxxxxxxxxxxxxxxx.x.x.x.x

    xxxxxxxxxxxxxxxxxx.x.x.x.

    xxxxxxxxxxxxxxxxx.x.x.x.x

    xxxxxxxxxxxxxxxxxx.x.x.x..


    usw.

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

  • Mit ColorRAM kann man das machen, dann hat man aber immer ein "hüpfen". Das sieht man, allerdings gar nicht so sehr wie ich anfangs gedacht habe. Kann man machen, wenn es mit der Zeit knapp wird.

    Pixel akkurat geht das am einfachsten (wenn nicht sogar nur) mit Sprites, denke ich. Ich mache das so, dass ich mir das letzte Zeichen (also auf der linken Seite jetzt) vom Text hole , dann die dazugehörigen Charakter Daten kopiere und diese dann pixelweise durch die Sprites ROL-le.

    Das mit den inversen Chars ist auch ein interessanter Ansatz, aber ich glaube da gibt es Probleme an der "Schnittstelle" Sprite-Charakter.

    Das funktioniert ja auch alles, nur sind 2 Zeichen pro Grau-Ton irgendwie zu viel.

  • Ach so, Du scrollst tatsächlich per Screen-X-Offset und zusätzlich durch die Sprites! Interessant, scheint mit aber relativ umständlich. Ich würde vermutlich komplett inverse Chars nehmen und einfach komplett farbig gefüllt Sprites an den Rändern dahinterlegen, um die Chars einzufärben.

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

  • OK! Und der Bereich in der Mitte, den ich jetzt über Scroll-X bewege? Inverted Chars & ECM? Das sieht doch im "Schnittbereich" bestimmt merkwürdig aus.

    Ach.. klar! *pling* Man! X-Expanded! Dann kommt man ja locker mit 8 Sprites aus! Das hab ich ja so gar nicht auf der Rille gehabt! Das ist ja einfach! :D

    Vielen Dank! :saint:

  • Manchmal denkt man zu umständlich. Wenn man den Offset schon hat, muss man keine Schleifen mehr durchlaufen. Auf Zyklen optimiert:

    Richtig erkannt. Echt erstaunlich, welch eigentlich offensichtlichen Dinge einem immer wieder passieren können.
    Noch was:
    Das Maskieren fürs High Byte (and #0b11110000) kann man auch noch weglassen. Die 4 LSRs verwerfen ohnehin das "Low Nibble". ;)

  • Manchmal denkt man zu umständlich. Wenn man den Offset schon hat, muss man keine Schleifen mehr durchlaufen. Auf Zyklen optimiert:

    Richtig erkannt. Echt erstaunlich, welch eigentlich offensichtlichen Dinge einem immer wieder passieren können.
    Noch was:
    Das Maskieren fürs High Byte (and #0b11110000) kann man auch noch weglassen. Die 4 LSRs verwerfen ohnehin das "Low Nibble". ;)

    Ja, genau, danke. Ich schreibe mir im Moment zwischendurch immer mal wieder ein paar Routinen für ein 6502 SDK, speziell für die CBMs, sollte weitestgehend aber auch für alle anderen funktionieren. Dabei bin ich mir auch noch nicht sicher, ob das die beste Umwandlung ist:

    Btw ... die Code-Anzeige:</> des Forum filtert immer die Leerzeichen raus

    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
    Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. |

  • Dabei bin ich mir auch noch nicht sicher, ob das die beste Umwandlung ist:

    Ich glaube nicht... :P Steck da mal "A=$0f" rein. Liege ich richtig mit meiner Annahme, dass da ein unsigned-8-Bit-Integer (in A) zu zwei BCD-Bytes gewandelt werden soll?

    "hex" ist eine Darstellungsform, der Inhalt eines Registers kann als hex dargestellt werden, aber er ist nicht "hex".

    Yes, I'm the guy responsible for the Bitte melde dich an, um diesen Link zu sehen. cross assembler. And some Bitte melde dich an, um diesen Link zu sehen..

  • Verdammt :) Hatte erst adc #$01 drin und habe es danach mit inc kürzen wollen. Da hat der Dezimal-Modus mir einen Strich durch gemacht. Hatte ich zuvor noch nie verwendet.

    Liege ich richtig mit meiner Annahme, dass da ein unsigned-8-Bit-Integer (in A) zu zwei BCD-Bytes gewandelt werden soll?


    "hex" ist eine Darstellungsform, der Inhalt eines Registers kann als hex dargestellt werden, aber er ist nicht "hex".

    Ja, richtig.

    So klappt es dann aber.

    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
    Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. |

  • Nach vielen Umbauten kommt mein Disassembler endlich wieder etwas voran. :thumbsup:

    Bitte melde dich an, um diesen Anhang zu sehen.

    Bitte melde dich an, um diesen Anhang zu sehen. :verehr: .: Mit Bitte melde dich an, um dieses Bild zu sehen.wäre das nicht passiert! :. :prof:  Bitte melde dich an, um diesen Anhang zu sehen.

    :syshack: .: Meine 3D-Drucker Teile auf :. Bitte melde dich an, um diesen Link zu sehen. :strom:

  • Ich habe meinem Z80 Disassembler einen neuen Steuerbefehl gegönnt. :)

    Bitte melde dich an, um diesen Anhang zu sehen.

    Der Befehl "EXIT" sorgt dafür das alle im nachfolgenden Steuerbefehle übersprungen werden.

    Das ist zum Testen praktisch, da so die Log-Ausgabe nur Befehle auflistet die ausgewertet

    wurden und mir so einen besseren Überblick bietet.

    Bitte melde dich an, um diesen Anhang zu sehen. :verehr: .: Mit Bitte melde dich an, um dieses Bild zu sehen.wäre das nicht passiert! :. :prof:  Bitte melde dich an, um diesen Anhang zu sehen.

    :syshack: .: Meine 3D-Drucker Teile auf :. Bitte melde dich an, um diesen Link zu sehen. :strom:

  • Ohje, & als Präfix für Hexadezimal. X/

    Das verwirrt mich immer, wenn ich zum Beispiel in Acorn Foren mal nach interessanten Code-Schnipsel stöbere. Ich bin ja eher ein Fan von $ oder 0x

    oobdoo Schaut gut aus :thumbsup:

  • Ohje, & als Präfix für Hexadezimal. X/

    Das verwirrt mich immer, wenn ich zum Beispiel in Acorn Foren mal nach interessanten Code-Schnipsel stöbere. Ich bin ja eher ein Fan von $ oder 0x

    & ist beim CPC üblich. $ und 0x sind aber auch eingebaut. Sogar # geht als Präfix. Das ist auch nur ein Zeichen lang, spart aber die Shift-Taste bei der Eingabe.

    oobdoo Schaut gut aus :thumbsup:

    Danke. :)

    Bitte melde dich an, um diesen Anhang zu sehen. :verehr: .: Mit Bitte melde dich an, um dieses Bild zu sehen.wäre das nicht passiert! :. :prof:  Bitte melde dich an, um diesen Anhang zu sehen.

    :syshack: .: Meine 3D-Drucker Teile auf :. Bitte melde dich an, um diesen Link zu sehen. :strom:

  • Wieder ein bisschen 6502-Assembler. Macht aus drei passenden Chars (000-255) eine hexadezimale Darstellung in result.

    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
    Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. |

    2 Mal editiert, zuletzt von cbmhardware (24. Februar 2024 um 23:50) aus folgendem Grund: Korrektur des Source

  • Wieder an menem Dockingmodul weiter gearbeitet. Da mir meine eigenen API schon zu unverständlich geworden ist, habe ich beschlossen das nochmal zu überarbeiten. Das funktioniert zwar soweit, aber wie man es als Programmierer benutzen soll ist nicht mehr so recht nachvollziehbar. Am stärksten aufgefallen ist mir das,alsich ein paar Parameter, die gesetzt werden müssen, reduziert habe, um die API zu vereinfachen. Dabei ist mir dann aufgefallen dass mir selbst schon manche Funktionen zu kompliziert und unverständlich waren. Also habe ich begonnen diesen Teil nochmal neu zu schreiben und auch zu dokumentieren. Ich habe jedenfalls das Gefühl dass durch die Reduktion der nötigen Parameter die neuen Funktionen jetzt klarer und verständlicher sind, was ja nicht schlecht ist. :D

    Der Code ist halt mittlerweile recht umfangreich und zu demZeipunkt als ich das geschrieben habe, erschienen mir die Entscheidungen recht verständlich und leicht nachvollziehbar. Aber jetzt, durch die längere Pause habe ich dann gemerkt dass ds ganz und gar nicht der Fall war. :D Wobei mir das aber ein wenig auch schon früher aufgefallen ist, weil ich für diverse Hilfsfunktionen gar keinen vernünftigen Namen gefunden habe. Normalerweise schaue ich dass die Funktionen Namen haben, die bereits dokumentieren was die Funktion macht. Das hätte mir also schon ein deutliches Warnsignal sein müssen dass da was nicht passt, aber ich wollte dann halt auch weiter kommen. Was eine schlechte Entscheidung war,aber da hat mir auch ein wenig der Abstand gefehlt.

  • Wieder ein bisschen 6502-Assembler. Macht aus drei passenden Chars (000-255) eine hexadezimale Darstellung in result.

    and #$00 könnte man wohl wegoptimieren :)


    Edit: ach so, Du nimmst es statt lda #0, braucht ja genauso viele Zyklen. Man könnte result natürlich gleich mit den Einern initialisieren.

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

    3 Mal editiert, zuletzt von Claus (25. Februar 2024 um 08:07)

  • Man könnte auch die noch drei "and #$0f" einsparen, wenn man nach einer Eingabe direkt die oberen Bits löscht. Dann kann man "result" natürlich auch vorher initialisieren. Ich wollte es vorerst möglichst komplett und nachvollziehbar haben.

    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
    Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. |

  • Die Nerdy-Version: möglichst alles vorher initialisieren und dann kurz und knackig.

    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
    Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. |

  • Instruction Decoding meiner RiscV CPU vereinfacht. (Cool, bringt aber kein Geld.)

    Layout von VB Applikation angefangen zu überarbeiten. (Uncool, bringt aber bischen Geld.)