Moin Leute,
man kann ja im HEX Editor etwas im Code ändern, leider kenne ich mich mit dem Jiffy Code gar nicht so gut aus, ich würde gern die Farben vom Hintergrund und der Schrift ändern.
Jemand einen Tipp wo dieser Deklariert ist?
Du bist in Begriff, Forum64 zu verlassen, um auf die folgende Adresse weitergeleitet zu werden:
Bitte beachte, dass wir für den Inhalt der Zielseite nicht verantwortlich sind und unsere Datenschutzbestimmungen dort keine Anwendung finden.
letzter Beitrag von e-tron am
Moin Leute,
man kann ja im HEX Editor etwas im Code ändern, leider kenne ich mich mit dem Jiffy Code gar nicht so gut aus, ich würde gern die Farben vom Hintergrund und der Schrift ändern.
Jemand einen Tipp wo dieser Deklariert ist?
Hallo,
such doch nach sowas wie STA $D020 bzw. nach der Bytefolge $8D $20 $D0.
Im Originalkernal liegen die Adressen:
$E535 $0E - Cursorfarbe
$EC09 $0E - Rahmenfarbe
$ECDA $06 - Hintergrundfarbe
das dürfte bei Jiffydos auch nicht wirklich anders sein.
Danke mal sehen ob ich das Packe, gibts irgend wo was drüber zu lesen wie die Kernal aufgebaut sind?
Nach sta $d020 suchen wird nichts bringen, denn der VIC wird aus einer Tabelle initialisiert:
E5A0 A9 03 LDA #$03
E5A2 85 9A STA $9A
E5A4 A9 00 LDA #$00
E5A6 85 99 STA $99
E5A8 A2 2F LDX #$2F
E5AA BD B8 EC LDA $ECB8,X
E5AD 9D FF CF STA $CFFF,X
E5B0 CA DEX
E5B1 D0 F7 BNE $E5AA
E5B3 60 RTS
Die Tabelle mit den Werten, die beim Initialisieren nach $D000 usf. geschrieben werden, beginnt obigem Code nach beim normalen Kernal an Adresse $ECB9. Für die Bildschirmfarben müßte man demzufolge den Inhalt von $ECD9 und $ECDA anpassen, wenn ich mich nicht irre. Das wird bei Jiffy sicherlich gleich sein.
@Edit: Unter Jiffydos ist es offenbar so wie beim normalen Kernal. ?peek(60633) liefert 14 und ?peek(60634) liefert 6. Das entspricht den hell- und dunkelblauen Bildschirmfarben.
@Edit2: Ach oldskool hatte das ja auch schon geschrieben. Naja, da sind wir uns ja einig (-:
Bin gerad dabei, mit einem HEX-Editor auf Win7 den JD-KERNAL zu modifizieren, was die Farben angeht,
finde aber die entsprechenden Werte/Adressen nicht
Was mache ich vermutlich falsch?
muss man noch eine bestimmte Ansicht im Editor einstellen?
Der Kernal ist 8 KiB groß und liegt im C64-Adressraum von Adresse $e000 bis $ffff. Das weiß aber Dein Hex-Editor nicht, der zeigt also nur Adressen von $0000 bis $1fff an. Entsprechend musst Du also jeweils $e000 subtrahieren, um das richtige Byte zu erwischen.
Shit, ich kenne mich zu wenig mit HEX-Dingens aus: Kann ich das nach dem öffnen des ROMs dann einmal im Hexeditor machen
(die Subtraktion), um dann "richtig" weiterarbeiten zu können?
Wenn dein HexEditor das kann geht das. Die Frage ist natürlich, welchen du da nutzt...
Habe sowohl "HxD" als auch "Hex Workshop" momentan zur Auswahl...
Wenn der Editor es nicht kann, wär das auch nicht so schlimm:
Um eine Speicherstelle wie $eXYZ zu ändern, änderst Du stattdessen $0XYZ, und
um eine Speicherstelle wie $fXYZ zu ändern, änderst Du stattdessen $1XYZ.
Ist also halb so wild - kompliziert wird das nur bei krummen Offsets.
OK, mal HxD geöffnet, ROM geladen und anstatt nach $EC09 im Offset dann nach $0C09 gesucht.
Es gibt eine $0C00, danach kommt aber direkt $0C10. OK, denk ich mir, schaue ich mal oben auf die
Spalten: aha, oben gehts nochmal von 00 bis 0F - Gut, nochmal im thread nach der Rahmenfarbe
geschaut: Hm, oldskool schrieb was von $0E bei $EC09 - somit ist meine vorige Überlegung, die "09" von $EC09
unter den Spalten zu finden, wohl nicht richtig... *aua*... sorry, in Sachen HEX bin ich n Depp
Die Adresse $0CDA (abgeleiteter Offset v. $ECDA) kann ich ebenfalls nicht finden
Doch doch, das stimmt schon alles - nur hat sich oldskool wohl bei der einen Adresse verlesen bzw. vertippt:
Die Cursorfarbe ($0e für hellblau) liegt bei $e535 (d.h. "Zeile" 0530, "Spalte" 5)
die Rahmenfarbe ($0e für hellblau) liegt bei $ecd9 (d.h. "Zeile" 0cd0, "Spalte" 9),
die Hintergrundfarbe ($06 für dunkelblau) liegt bei $ecda (d.h. "Zeile" 0cd0, "Spalte" a).
Ich wärme das mal kurz auf .....
ich habe mich jetzt an
Doch doch, das stimmt schon alles - nur hat sich oldskool wohl bei der einen Adresse verlesen bzw. vertippt:
Die Cursorfarbe ($0e für hellblau) liegt bei $e535 (d.h. "Zeile" 0530, "Spalte" 5)
die Rahmenfarbe ($0e für hellblau) liegt bei $ecd9 (d.h. "Zeile" 0cd0, "Spalte" 9),
die Hintergrundfarbe ($06 für dunkelblau) liegt bei $ecda (d.h. "Zeile" 0cd0, "Spalte" a).
diese Aussage gehalten, um die richtigen Adressen zu finden, jedoch wäre es für mich sehr hilfreich, wenn ich meinen Hex-Editor dazu bekommen könnte, mir die richtigen Adressen gleich zu zeigen, sodass ich nicht umrechnen muss. Ich benutze auf dem Mac den Editor iHex (wird wahrscheinlich niemand kennen). Wie würde denn so eine Funktion heissen, dass man die Adressen gleich anders angezeigt bekommt? Sorry für diese Noob-Frage, aber das letzte Mal, dass ich irgendwelche Bytes mit einem Hex-Editor geändert habe, war irgendwann in den 80er Jahren und da hatte ich einen Diese-Editor, der ohnehin auf dem C64 lief. da brauchte ich mir um die Adressen keine Gedanken machen ... Ich hoffe, meine Frage ist halbwegs verständlich ...
Du könnstest dir mit dd auf dem Terminal helfen:
Eine 64k große Datei namens memory.bin erzeugen (stehen nur Nullen aus /dev/zero drin):
dd if=/dev/zero of=memory.bin bs=1024 count=64
Kernal aus kernal.bin an die richtige Stelle im memory.bin schreiben:
dd if=kernal.bin of=memory.bin bs=4096 seek=14 conv=notrunc
Jetzt kannst du die memory.bin editieren, die Adressen stimmen.
Und danach wieder rausholen als kernal-patched.bin:
dd if=memory.bin of=kernal-patched.bin bs=4096 count=2 skip=14
Unter der Annahme, dass deine Kernal-Datei keine Ladeadresse enthält, also genau 8192 bytes hat und nicht 8194 bytes.
diese Aussage gehalten, um die richtigen Adressen zu finden, jedoch wäre es für mich sehr hilfreich, wenn ich meinen Hex-Editor dazu bekommen könnte, mir die richtigen Adressen gleich zu zeigen, sodass ich nicht umrechnen muss.
So viel gibt es da nun auch wieder nicht umzurechnen. Statt "$e" fangen die Adressen im HEX-Editor halt mit "$0" an.
So viel gibt es da nun auch wieder nicht umzurechnen. Statt "$e" fangen die Adressen im HEX-Editor halt mit "$0" an.
Ich hoffe, dass ich einfach wieder altes Wissen aktivieren kann und das, was ich hier lese auch verstehe, damit ich bei der nächsten Sache, nicht prinzipiell immer wieder die gleiche Frage stellen muss.
Unter der Annahme, dass deine Kernal-Datei keine Ladeadresse enthält, also genau 8192 bytes hat und nicht 8194 bytes.
Die Länge der Kernal-Datei passt, allerdings habe ich jetzt im Editor nicht die richtigen Adressen, d.h. ich finde nicht $ECD0 sondern "nur" $ECD8. Verdammt, das ist alles so lange her ..... ein simples Anzeigeproblem, wette ich. Ich kann Dir ja fast folgen, wenn ich das richtig verstehe, ist die gefüllte memory.bin am Anfang nur mit nullen vollgeschrieben, bis halt das Kernal.rom an der richtigen Adresse anfängt, soll wohl E000 sein. Im Editor steht jetzt aber E010, E000 gibt es nicht. Ich bin echt zu doof ...