[WIP] Scripty Script-Editor (Abgebrochen)

  • Guten Tag,


    ich möchte euch heute ein kleines Projekt von manuth und mir vorstellen.^^


    WAS?


    Scripty ist ein neuer, noch nicht fertiger, Scripteditor für die 3. Generation von Pokémon. Ziel von Scripty ist es, das Schreiben und Verwalten von Scripts einfacher zu gestalten, gerade für jene Hacker, die gerne Ordnung in ihrer ROM halten und auch nicht davor zurückschrecken, eigene Scriptbefehle mit Hilfe von ASM zu entwickeln. Scripty wird nicht nur ein Scriptcompiler bzw. Decompiler. Scripty wird eine interaktive Scripting-IDE, die in der Lage ist, Scripts und Scriptresourcen in einer Bibliothek zu verwalten und ggf. aus der ROM zu löschen. Obendrein erlaubt Scripty es, dank intelligenter XML-Konfigurationsdatei, Scriptbefehle neu zu definieren und Makros sowie Konstanten zu erstellen. Dies alles wird in der IDE, also ohne XML-Kenntnisse, möglich sein. Auch wird es in Scripty möglich sein, die Commandtable und Specialtable der Spiele zu bearbeiten. Scripty soll unter Windows, Mac OS X und Linux lauffähig sein.


    IN A NUTSHELL


    - 3rd Gen. Script Editor mit eigenem, dynamischen Compiler / Decompiler
    - Befehle sind austauschbar bzw. änderbar. Dadurch ist es ein einfaches, eigene Scriptbefehle zu verwenden.
    - Es lassen sich Makros und Konstanten definieren
    - Editor für Specialtable sowie Commandtable (die Jumptable mit den Codepointern für die einzelnen Scriptbefehle)
    - Bibliothek für Scripts, Texte, Movements, Märkte, ASM-Codes etc. Skripte können direkt auf diese Verweisen und die Ressourcen können ggf. per Klick aus der ROM gelöscht werden.
    - Dank C# lauffähig unter Windows, Mac OS X und Linux


    TEAM


    hack!osa: Programmiererung
    manuth: Implementierung der Scriptbefehle, Programmierung


    GENERELLE INFOS

    Programmiersprache
    : C#
    Source Code: https://github.com/nanoemu/scripty/


    Beispiel für eine (unfertige) Konfigurationsdatei: https://github.com/nanoemu/scr…aster/Scripty/scripty.xml


    Fortschritt:
    - Decompiler: ~85%
    - Befehle: 15%?
    - Rest: 0%


    CREDITS


    Laz0r: Gameboy32 Library zum Lesen/Schreiben von ROMs.


    MfG
    hack!osa & manuth

  • Was genau würde denn das im Gegenzug zu bereits bestehenden Scripteditoren bringen? Gut, man hat commands, die erweiterbar sind, aber wenn ich mir euren Code so anschaue bietet das nicht unbedingt viel Freiraum für erweiterte Typen etc. (Die liegen bei euch in einer enum)
    Ein XML File als command base ist imo recht unübersichtlich, was spricht gegen direktiven wie #command, die werdet ihr womöglich ohnehin implementieren müssen, da ihr ansonsten nicht einmal XSE funktionalitäten erreicht... (#include, etc.) - Generell sieht mir der Code einfach recht unstrukturiert aus. Ihr könntet wohl die ganzen Typen als Objekte implementieren und wärt somit auch gewissermaßen erweiterbar, ich habe sowas mal irgendwann angefangen, allerdings nie wirklich fertiggestellt, könnt ihr euch ja mal ansehen, nur halt nicht unbedingt kopieren... https://github.com/SBird1337/ScriptLib/


    Achja: http://caveoforig.in/pks2-std_r5.pdf, auch lesenswert.


    ~Sturmvogel


    Edit: Auch anzumerken: Für Memory Access innerhalb von Datenstrukturen wie Arrays gibt es Memory Streams, und für korrekte Datendarstellung gibt es BitConverter, das Framework bietet recht viel von dem, was ihr in eurer Romlibrary per Hand macht...


    Let the old ways live and prosper in the hearts of our young


  • Was genau würde denn das im Gegenzug zu bereits bestehenden Scripteditoren bringen? Gut, man hat commands, die erweiterbar sind, aber wenn ich mir euren Code so anschaue bietet das nicht unbedingt viel Freiraum für erweiterte Typen etc. (Die liegen bei euch in einer enum)
    Ein XML File als command base ist imo recht unübersichtlich, was spricht gegen direktiven wie #command, die werdet ihr womöglich ohnehin implementieren müssen, da ihr ansonsten nicht einmal XSE funktionalitäten erreicht... (#include, etc.) - Generell sieht mir der Code einfach recht unstrukturiert aus. Ihr könntet wohl die ganzen Typen als Objekte implementieren und wärt somit auch gewissermaßen erweiterbar, ich habe sowas mal irgendwann angefangen, allerdings nie wirklich fertiggestellt, könnt ihr euch ja mal ansehen, nur halt nicht unbedingt kopieren... https://github.com/SBird1337/ScriptLib/


    Der originale Code ist mittlerweile 8 Monate alt und lag seit dem unberührt auf GitHub. Ich bin im Moment dabei, viele Sachen an der Struktur anzupassen. Dabei ziehe ich auch in Erwähnung, eigene/erweiterbare Typen zu ermöglichen. Jedoch hat es im Moment größere Priorität, den Code generell erst einmal lesbar und verständlich zu machen, da ich den Code damals nicht mehr dokumentiert habe, bevor ich das Projekt auf Eis gelegt habe. Ziel ist es, dass der Nutzer nachher nicht selber mit der XML-Datei arbeitet, sondern diese über ein Tool (XML-(De)Serialization und DataBinding sind da zwei Stichwörter) bearbeiten kann. Es soll später natürlich Direktiven geben. Mit diesen wäre es unter anderem möglich Dateien zu inkludieren (sowohl Skriptdateien, als auch XML-Dateien, welche Befehle überschreiben könnten, neue Makros definieren etc.).. Weitere Vorteile wäre wie gesagt die Verwaltung von Scripts, Texten etc. direkt über den Editor oder die Möglichkeit, Cmdtable und Specialtable zu editieren.


    Achja: http://caveoforig.in/pks2-std_r5.pdf, auch lesenswert.


    Danke, das Dokument gab es glaube ich noch nicht als ich mit dem Projekt angefangen habe. Ich werde da definitiv mal reingucken, kann jedoch jetzt schon sagen, dass es nicht das Ziel von Scripty ist, 100% konform mit der PokéScript Syntax zu gehen.


    PS: Zu der Library. Diese stammt nicht von mir, sondern von dem, dessen Namen du wahrscheinlich nicht gerne hörst^^. Ich benutzte sie allerdings, weil sie damals in den Performance-Tests deutlich schneller war. Dass es MemoryStreams gibt, ist mir längst bewusst.


    MfG
    hack!osa