atari-home.de - Foren

Software => Software (16-/32-Bit) => Thema gestartet von: sarnau am Mi 23.04.2025, 18:57:38

Titel: MIDImaze Source Code (reverse engineered)
Beitrag von: sarnau am Mi 23.04.2025, 18:57:38
Moin,

Ich hatte dies vor Jahren schon gemacht, aber die Sourcen nie online gestellt. Ich habe mit einem Python Script aus den Assembler-Code wieder C-Sourcen erstellt. Man kann die Version sogar auf einem Mac starten (ich habe dazu ein paar 64-bit Fixes eingepflegt). Zusätzlich habe ich ausführlich die Sourcen dokumentiert.

https://github.com/sarnau/AtariST-MIDIMaze-Source (https://github.com/sarnau/AtariST-MIDIMaze-Source)
Titel: Re: MIDImaze Source Code (reverse engineered)
Beitrag von: Lynxman am Do 24.04.2025, 00:05:23
Ich bin beeindruckt.
Titel: Re: MIDImaze Source Code (reverse engineered)
Beitrag von: sarnau am Do 24.04.2025, 00:56:59
Danke sehr.
Titel: Re: MIDImaze Source Code (reverse engineered)
Beitrag von: Thorsten Otto am Do 24.04.2025, 08:56:50
Stark.

Ich hab mir noch nicht alles angeschaut, aber ist auch irgendwo der ursprüngliche Assembler-Code, den du als Ausgang genommen hast? Den sehe ich da nirgends. Irgendeine Idee, welcher Compiler ursprünglich benutzt wurde?

Edit: Ah, gefunden. Oha, Alcyon-C. Ja, das macht die Sache erheblich einfacher, wie ich aus eigener Erfahrung sagen kann ;)


Titel: Re: MIDImaze Source Code (reverse engineered)
Beitrag von: sarnau am Do 24.04.2025, 16:55:00
Der "InverseCompiler" sind die Python Sourcen, welche ich genutzt habe. Braucht etwas Arbeit, aber kann den Code gut zurückübersetzen. Siehe auch MIDIMAZE_SYMBOLS.h innerhalb des Ordners für die Datenstrukturen, Funktionsnamen, etc – der Script nutzt die um einen Source zu erzeugen.
Titel: Re: MIDImaze Source Code (reverse engineered)
Beitrag von: goetz @ 3rz am Do 24.04.2025, 21:51:09
Edit: Ah, gefunden. Oha, Alcyon-C. Ja, das macht die Sache erheblich einfacher, wie ich aus eigener Erfahrung sagen kann ;)

Weil Alcyon-C so wenig / nicht optimiert?
Titel: Re: MIDImaze Source Code (reverse engineered)
Beitrag von: goetz @ 3rz am Do 24.04.2025, 21:52:24
Moin,

Ich hatte dies vor Jahren schon gemacht, aber die Sourcen nie online gestellt. Ich habe mit einem Python Script aus den Assembler-Code wieder C-Sourcen erstellt. Man kann die Version sogar auf einem Mac starten […]. Zusätzlich habe ich ausführlich die Sourcen dokumentiert.

https://github.com/sarnau/AtariST-MIDIMaze-Source (https://github.com/sarnau/AtariST-MIDIMaze-Source)

Danke dir!
Titel: Re: MIDImaze Source Code (reverse engineered)
Beitrag von: Thorsten Otto am Fr 25.04.2025, 05:31:34
Weil Alcyon-C so wenig / nicht optimiert?

Ja, genau. Der erzeugte Code ist ziemlich straight-forward. Bei Pure-C ist das auch noch halbwegs gut zu verstehen, lediglich die Register-Variablen machen manchmal Schwierigkeiten. Bei gcc ist es praktisch unmöglich, C-code zu schreiben der wirklich wieder genau den Assembler-Code erzeugt.

Schlüsselpunkt ist aber in jedem Fall, erstmal die verwendeten Strukturen zu verstehen. Bei TOS war das damals unproblematisch, weil die grösstenteils schon bekannt waren. Bei fremden Programmen wie Midimaze muss man sich die erstmal erarbeiten.