With no coding experience, can I create a GUI for Game Editors?

Started by Grimoire LD, June 19, 2017, 02:45:47 PM

Previous topic - Next topic

Grimoire LD

Hello everyone, it has been a rather long time since I've been active here.

Over the years I've worked on modding several games, the main three being Final Fantasy IV, Ocarina of Time, and .hack//Infection. I have copious amount of notes regarding these games but because my interests are often outside what an editor can do I normally have to hex edit. That's fine for small portions of simple data, but games like Ocarina of Time should really have a GUI for monster's HP, their damage tables, and how much damage they deal, that sort of thing, This goes double for .hack// which has stats, tables, skills, treasure lists, and event commands that can be easily manipulated, but it is burdensome to try and do anything large scale with that many variables with just the Hex Editor.

Alas though I pounded away at finding the information, no editor-maker ever showed up to make these matters easily accessible for the burgeoning modder. Therefore if you want something done, you have to do it yourself. Unfortunately I am no coder and don't exactly know how to go about making a GUI for any potential program. Is there a template around of that sort of thing, or would I have to create one from scratch? Any help I could be given would be much appreciated.


This sort of thing is the ideal "learn to code" project, and other than launching right into editing other files (for some reason most programming tutorials I have ever read spend ages on all the things that make up programming and then keep the opening other files stuff for later) it is pretty much first steps in coding -- taking inputs, rendering tables, checking inputs are sane, doing repeated operations, fetching specific parts of data segments, basic boolean logic type operations....

Alas most of the GUI making programs/languages (things like autoit https://www.autoitscript.com/site/autoit/ and other automation of tasks programming languages/programs) I have ever played with have sharply limited hex and file manipulation abilities, save for text files which they tend to be all about. If you are calling lots of command line programs or calling things in a DLL file, and making a GUI for said same, even doing screen button presses, they are wonderful and you can be doing useful things within hours using them. For ROM hacking, assuming you don't want to go the whole way and learn something in the C family, then you would be better off looking at something like python which can do it all. Not especially speedy, and a bit tricky for full 3d rendering, but will get the job done and while not speedy still more than enough for someone to be clicking, typing and thinking, not to mention be reasonably cross platform if that is a thing you want.

Templates... no. I have contemplated fragments before and again if you are just doing a GUI for a command line program which takes an input, has an output and maybe a simple variable/modifier or two then I could see one but for something as frequently radically different between even games of the same series it is not really going to happen.


Assuming there isn't compression involved in any of this you could try using nightmare.
The long and short of it is you make up a formatted text file that tells it what values can be edited at what addresses and what kind of edit box you want for the item.

Grimoire LD

Thank you both very much. I tried to give AutoIt a try and it was... lacking in many respects, as far as I could see. I have looked at Nightmare and that really may be the way to go with this. Looking at the source files it seems very malleable from all appearances. Here's to hoping I can try to manipulate that.

June 19, 2017, 11:26:34 PM - (Auto Merged - Double Posts are not allowed before 7 days.)

Well that's a shame. Nightmare looked to be off to a fantastic start with a simple and efficient way of editing stats quickly, when alas it turns out that Nightmare doesn't actually load PlayStation games, I really must wonder what the issue is, the ease of access is unparalleled. I even tried out the new version of Nightmare but it seems to also lack compatibility with Playstation games, both of these occurrences are odd as they both can load Wii games which I imagine have similar data volumes. This may work out great for Zelda64 and FFIV though.

June 20, 2017, 12:34:15 AM - (Auto Merged - Double Posts are not allowed before 7 days.)

Hmm, actually locating the main file that contained the aspects I want to edit can be loaded just fine in Nightmare, hah, bizarre... ah well, should work fine now, I think.


Good to see you around again!

Nightmare is indeed a handy tool - I use it myself for simple data table edits on a game I'm hacking. However it's poorly suited to editing bitfield values or data structures that aren't conveniently fixed entry-length or contiguous. That's why I'm working on a more general-use editor.

If you're willing to learn some basic coding, making an editor program yourself could be a good option; you'd be able to make it work just the way you want to. Python has lots of libraries out there to aid this sort of thing. Java is also a decent choice, the JavaFX library is pretty good these days.

Grimoire LD

It is always nice to see you Kea, you have done wonderful work on FFIV and FFI and II both, Heaven knows that Dawn of Souls needed something done with it. Thankfully for my current project of getting Some Editor out for .hack// is going very well by using Nightmare. I have a full Character Editor and an Enemy Editor set up. It is so nice to be able to modify this stuff without wading through endless code. .hack// is largely table based (I mean Ridiculously table based) so Nightmare is perfect for it. I may have some trouble when I try to use it for Zelda 64 down the line, but I'll cross that bridge when I come to it.

June 23, 2017, 11:20:19 PM - (Auto Merged - Double Posts are not allowed before 7 days.)

Nightmare has indeed been fantastic, thank you Zoinkity for the suggestion. I tried to make something with autoit and python but my lack of math and logic understanding again comes back to haunt me.

So far I have made a character editor, an enemy editor, and a character editor and they are all working flawlessly. I did try out Nightmare v2 but that has some nonsensical problems that I couldn't figure out. It is a vast improvement, but alas, it is also unstable it appears.

Though since I am making these editors using the Nightmare Editor would the modules which make up the editors even be possible to submit?


(Only noticing your latest post now...)

You can probably submit Nightmare modules as documentation to the site - one my my own documents includes some- but if you're not sure you can always contact the staff and explain your idea. It may be helpful to also include more standard notes on the data offsets and structure along with the modules for people who aren't interested in Nightmare.

Grimoire LD

Hello Kea, yeah my notes are... a bit of a mess, I can read them fine but others may have issues, not to mention pretty much all of the offsets refer to CheatEngine offsets rather than the actual memory offsets. What makes modding the dot hack games rather simple is it has all of its ELF labels intact, so all of the tables, all of the data is listed systematically. It's highly convenient. This allowed me to build numerous editors in no time at all with wholly accurate readings. At least... 15 or so by now. I'm worried if it is simply put as documents it's unlikely it will ever be seen, especially since it is the only dot hack editor to my knowledge. My real issue comes with how to reinsert the file though. PS2 directories won't just let you insert a file, there may be some tool I'm missing, but for now I'm just using the Hex Editor to take the whole file and insert it that way. I don't know if other people would want to take that much work though. Any thoughts on that process?


PS2 hacking is well outside my purview I'm afraid.

You could always put your notes on the Datacrystal wiki too, that way people can just view them on a webpage rather than downloading and looking through an archive.


now i see why this forum is dead. and where to delete accout button? i am dont want to see my name here.


Welcome back Grimoire LD :P

If you only need basic controls for game data such as numeral [and text] textboxes, dropdown lists, numeric up-down and you don't really care your UI looks generic, you should give C# / winform a chance. Visual Studio Community is now free, it's a powerful development environment and with winform you can simple drag / drop your UI components on your forms. Like a UI to create a UI.

Also C# examples are abundant on the web. I'm pretty sure there is also aversion of Eclipse (for Java) that has a drag / drop feature for UI components. This could be another option for you.


If you want to create a program in C# or C++ just use Visual Studio. Creating a menu is not too difficult and you can drag and drop options. Just latch onto the names of the input boxes and buttons for handling commands.

If you know the exact hex location in the ROM to edit certain data, such as Boss HP, Monster Stats, etc. you can just use fseek() and fread() to help get to that location in the ROM. File handing is very introductory stuff you should be able to find many free and helpful tutorials online. As far as headers and checksums I'm not sure how those work in N64 or PSX roms, but you can probably find a good readme that explains it.
"Programming in itself is beauty,
whether or not the operating system actually functions." - Steve Wozniak