PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Rom Wizard



mikemcbike
27-11-2011, 09:01
Hi Leutz,

nachdem ich für manche meiner PCBs ausprobiere, ob da nicht irgendwelche ROM-Swaps eunktionieren, also aus einem Spiel mehrere machen durch Tauschen der EPROMs, habe ich festgestellt, dass es im Netz nichts Gutes zur Analyse der ROMs gibt. Selbst die Convertierungs-Tools Intel-Hex nach Binär und umgekehrt gibt es nur als unpraktische Kommandozeilenversionen...

Da ich Elektroniker und Programmierer bin, dachte ich mir, hier könnte man ja mal was Nettes machen.

Anbei ein erster Screenshot nach zwei Tagen Programmierung...

12008

Ist noch micht fertig, aber man sieht die Möglichkeiten:
Windoof XP / 7 fähig
Einfache Bedienung
Hex2Bin
Bin2Hex
Ändern der Hex-Inhalte
Grafische Darstellung des ROM-Inhalts
Vergleich zweier ROMs
Analyse des Codes (Beispiel: ein 65C02-System-Rom...)
U.s.w.

Wenn's fertig ist, stelle ich Euch das Tool kostenlos zur Verfügung, Forumsexclusiv, sozusagen.
Programmiersprache ist Visual c#, Net.4 ist Voraussetzung, ggf. kann ich auch für Net.2 compilieren...

Was sagt Ihr dazu?
Verbesserungen, Vorschläge und Sourcecodebeiträge für spezielle Probleme sind erwünscht.

Grüßle,
Mike McBike

mrdo!
27-11-2011, 11:17
Gute Idee,

finde ich gut.

Hast du schon mal den winhex editor benutzt?
Das Tool verwende ich ab und zu. Sind auch einige praktische tools drin versteckt ....

speleo_de
27-11-2011, 11:40
Schaut sehr nett aus.

Was mir noch so einfällt...
- Geänderte ROM Inhalte speichern, wenn noch nicht vorgesehen
- Gängige Checksums darstellen (ideal, wenn die 'klassiche' 4Byte Signature der Data I/O Programmer dabei ist :))
- Vergleich von ROM Inhalten side by side mit HEX Werten und farblicher Unterstützung.
- ROMS splitten/mergen

Ich probiere es gerne mal aus, wenn es soweit ist .

mikemcbike
27-11-2011, 14:35
@mrdo! Klar hab' ich Winhex... der kann aber nicht so schöne übersichtliche Vergleichsgrafiken machen und auch nicht nach speziellen Assemblecodesignaturen suchen... Ich wollte es halt mal schön einfach und übersichtlich...

@speleo: Speichern, editieren und Hex-Ansicht ist geplant. Split, Merge ebenfalls, außerdem die Eingabe einer Indexadresse...

Prüfsumme ist schön, hat wer fertigen Sourcecode dafür? Ich will ja das Rad nicht nochmal neu programmieren.

Nebenbei, ich untersuche den Code auf das häufige Auftreten von z.B. A9 / 85 / 20 etc., um einen 6502-Assemblercode zu entdecken... Das funktioniert eigentlich ganz gut, ist aber nicht 100% bei anderen Prozessoren. Kennt jemand von Euch einen besseren Algorithmus, der nicht zu aufwändig ist?

Grüßle,
Mike McBike

mikemcbike
27-11-2011, 14:38
Haben die Data I/Os eine CRC32-Prüfsumme? Wenn ja, ist der Startwert 0cFFFFFFFF?

Ein Beispielrom mit passender Prüfsumme wäre hier hilfreich! Sachdienliche Hinweise an wolfpunktrobelätwebpunktde würden weiterhelfen.

MMB

mrdo!
27-11-2011, 15:41
Verstehe...

BTW: Wenn du Sequenzen wie A9 / 85 / 20 im winhex finden möchtest, musst du nur nach A98520 suchen.

Eine Automatische Erkennung von Code? Gute Frage. Wenn du den Prozessor kennst, folgt daraus der Resetvektor,
der zuerst in den Programmcounter der cpu geladen wird. Wo der Vektor hinzeigt, da ist Code.

Prüfsumme? Du kannst alle Bytes eines Roms als 4 byte Wert (unsigned) aufsummieren. Dann mal mit einer Prüfsumme
des DataIOs von speleo vergleichen.

mikemcbike
27-11-2011, 16:23
Also...
so einfach ist das nicht, ich suche nicht nach Sequenzen, da diese nicht wirklich relevant für einen speziellen Code sind.
Beispiel 6502: A9 lade Accu, 20 Jump Subroutine etc. sind häufige Codes...
Im Speicher steht dann aber z. B. A9 nn 20 xx yy, also LDA mit nn und dann springe nach yyxx, also kann ich nur nach gehäuftem Auftreten einzelner wichtiger Befehle sehen. Da hilft mir Winhex nicht weiter.

Mein Programm erkennt daraus, zu welchem Prozessor der Code gehört. Das ist der Gag.

Grüßle,
Mike McBike

mikemcbike
27-11-2011, 16:25
@speleo:
danke, ich werde die Roms heute noch durch meine Analyse jagen. Ich berichte dann alles Weitere.

MMB

mikemcbike
27-11-2011, 18:30
Das ist definitiv keine reine additive Prüfsumme, auch nicht Zweierkomplement...
Morgen checke ich mal CRC16...

Grüßle,
Mike McBike

mrdo!
27-11-2011, 19:54
kugge da:

ftp://ftp.dataio.com/FCNotes/Footnote/Data%20IO%20CS%20Calculate%20Method%20AppNote.pdf

:)

mikemcbike
27-11-2011, 21:30
Ah, vielen Dank für den Hinweis, hab' ich mir gleich mal abgespeichert.

Ich komme aber immer noch nicht zum gleichen Ergebnis...:mad:

Mal sehen, jetzt ist es schon zu spät für Spielchen...

Grüßle,
Mike McBike

mikemcbike
15-12-2011, 07:57
So, jetzt mal wieder dazu gekommen, etwas weiter zu machen...

12131

Integrierter 6502 Disassembler, selbst geschrieben.
Für die Hexedit-Darstellung habe ich mir eine Klasse aus dem Netz besorgt, GNU, frei einsetzbar.

Die Prüfsummenproblematik ist noch offen...

Grüßle,
Mike McBike

mikemcbike
15-12-2011, 08:28
Äh, kann man das nicht einrichten, dass eingebundene Grafiken auch gleich als Bild dargestellt werden?

Grüßle,
MMB

mikemcbike
15-12-2011, 09:17
Hab jetzt noch SHA1 Prüfsumme mit eingebunden...
12132

Die entstehende Prüfsumme hat einen genialen Effekt in Verbindung mit Google...

Szenario: unbekannter Speicherbaustein auf dem Tisch --> auslesen --> ins Tool einlesen --> SHA1-Prüfsumme kopieren und in Google eingeben --> Profit!

ad4cdf2e0fd1304a135022eeafa2f61c5f5789cd

Grüßle,
MMB

mikemcbike
15-12-2011, 18:19
Gibt's hier eigentlich noch mehr Programmierer? 0-)

Vielleicht will sich ja jemand beteiligen, z.B. am Z80-Disassembler...

Grüßle,
Mike McBike

speleo_de
16-12-2011, 16:44
Leider nein. Programmieren ist nicht mein Ding, ein wenig Assembler, aber das war's.

mikemcbike
05-01-2012, 20:32
Hab wieder weitergemacht, jetzt mit Auswahl über rechte Maustaste und Lademöglichkeit für 4 ROMs, außerdem automatische Google-Suche auf Knop-(Maus)Druck...

12156

Das wird noch...

Grüßle,
MMB

mikemcbike
07-01-2012, 16:33
Jetzt geht das Bildereinfügen, danke!

MMB

mikemcbike
18-01-2012, 07:31
Also,

es gibt jetzt eine erste funktionsfähige Version. Wer will testen? Wer interessiert sich dafür?

Funktionen:
ROMs einlesen / grafische Übersichtsdarstellung
Anzeige von CRC Prüfsumme
Anzeige von SHA1 Prüfsumme
Integrierter HEX-Editor mit Editier- und Speichermöglichkeit
Integrierter 6502-Disassembler
Intel-Hex Speichermöglichkeit (derzeit begrenzt auf max. 64k)
ROM-Merge - Roms kombinieren in verschiedenen Variationen
Binärdatei-Erzeugungstool
Automatische Google-Suche nach ROM-Hash

Mail per PN, dann schicke ich das File zu. Tester werden in den Credits genannt...

Anregungen und Fehlermeldungen werden gerne entgegen genommen.

Also: ran an den Speck.

Grüßle,
Mike McBike

mikemcbike
18-01-2012, 07:40
Noch etwas:

hat jemand ein Beispiel für mich, wie ein Intel-Hex File >64k aussieht? aus dem Dokument File Format Specification werde ich auf Anhieb nicht recht schlau...

Dokumentation ist noch nicht erstellt, folgt aber noch nach. Derzeit einfach mal mit Rechtsklick auf die EPROM-Bilder versuchen...

Grüßle,
Mike McBike

mikemcbike
01-02-2012, 20:45
Nachdem die Begeisterung hier mal etwas mau ist, habe ich den Thread mal in der Nachbarkneipe weiterlaufen lassen...

wen es interessiert:
http://www.arcadezentrum.com/forum/showthread.php?14777-Rom-Wizard-Software-Tool-f%FCr-Arcade-ROMs

Man kann jetzt schon Spiele manipulieren...

Grüßle,
Mike McBike

mikemcbike
16-06-2015, 10:33
Eine neue Version 1.20 ist verfügbar.

http://www.wolfgangrobel.de/romwizard.htm

Updates:

Dateiladeprobleme bei ROM-Merge eliminiert
Neue Funktion: ROM-Split (aus groß mach klein) in verschiedenen Varianten
Doku fortgeführt und ergänzt...