Welcome, Guest. Please Login or Register
 
The Purple Parade is marching in full stride to the beat of that 'other' drum we all hear, but generally ignore. Wink
Home Help Search Login Register


Pages: 1 2 
Send Topic Print
Project - Text Angel (GUI Generic Dumper/Inserter) (Read 21377 times)
Gil Galad
Peasant
*
Offline


I Love TransCorp!

Posts: 5
Ohio, USA
Gender: male
Re: Text Angel (GUI Generic Script Dumper/Inserter)
Reply #15 - Jul 29th, 2011 at 7:57am
 
Sounds like you've done a lot of work on Text Angel. I'm sure a lot of those functions will be useful to me. I understand many things about Atlas but not all. If you have a question, perhaps I can answer it. I don't know the inner workings, but I know a good deal of the commands used in a Atlas script.

The utility sounds promising though.
Back to top
 
WWW Klingo1000  
IP Logged
 
Nightcrawler
YaBB Administrator
*****
Offline


The Dark Angel of Romhacking

Posts: 3232
USA
Gender: male
Re: Text Angel (GUI Generic Script Dumper/Inserter)
Reply #16 - Aug 1st, 2011 at 10:51am
 
I've been speaking to Klarth about it all, so he's clearing up the issues. The #W16 type commands Cartographer uses are actually deprecated and only in there for legacy support of old versions of Atlas. They shouldn't even be used.

Basically, the preferred (per methodology of Atlas) and cleanest method is to use AUTOWRITE with a  PTRTABLE and a CUSTOMPOINTER for all linear pointer tables. AUTOWRITE with PTRLIST and a CUSTOMPOINTER for near all other cases that can be handled with a CUSTOMPOINTER. Outside of that, you'd need to use the individual byte writes WLB, WHB, WBB, WUB for pointers that have arbitrary spacing between bytes such as those in assembly instructions. That covers nearly all conceivable possibilities.

WRITE commands exist only for comfort or need of having those addresses right in the script instead of pointer list. Since many ROM hackers seem to desire this for debugging or wanting less files, I may provide an option for normal and extended Atlas output.
Back to top
 

ROMhacking.net - The central hub of the ROM hacking community.
WWW  
IP Logged
 
Nightcrawler
YaBB Administrator
*****
Offline


The Dark Angel of Romhacking

Posts: 3232
USA
Gender: male
Re: Project - Text Angel (GUI Generic Dumper/Inserter)
Reply #17 - Aug 18th, 2011 at 9:07am
 
I've updated the first post with some screenshots you guys may be interested in. Smiley Over the past several weeks the GUI has gotten a complete overhaul and gone in a different direction. While the old one was very simple to use, it just couldn't scale to incorporate everything the backend was getting sensibly. So, as the utility has grown and become more project oriented, the GUI needed to become more project centric as well.  I think I'm finally happy with the direction. It's too bad it took me this much work and this long to get there! That's what happens when you don't have clearly defined goal and plan from the start. My original plan was a mere fraction of what I ended up doing. It's really been a good learning experience in software design though. Tearing down and rebuilding until you get it right works wonders. You see what works, what doesn't, reinvent the wheel a bit, and start to understand why some methods and patterns are commonplace today.

I added a translation interface and string search interface, which I think will be very helpful. I find myself always having to look up strings in a project during debugging. Now I can search the entire script and quickly pull the original dump data, translation, and insert data.  Cool

Back to top
 

ROMhacking.net - The central hub of the ROM hacking community.
WWW  
IP Logged
 
Nightcrawler
YaBB Administrator
*****
Offline


The Dark Angel of Romhacking

Posts: 3232
USA
Gender: male
Re: Project - Text Angel (GUI Generic Dumper/Inserter)
Reply #18 - May 1st, 2012 at 11:20am
 
Now that I got the extremely long side tangent of the table standard mostly out of the way, I've gone back to this.

As you can see from this image, I've now got the program set up revolving around a project tree. How it works right now is you select the file/s to dump from. Then you add  any combination of building blocks you'd like. The building blocks (StringTable, PointerTable, PointerTableTree, PointerTree, AutoDiscoveryTable, PointerList, Pointer, and String) available cover all possible functions my dumper is able to do. Any combination of those items can be added to the files to dump whatever you need in the fashion necessary.

This by itself could be tedious depending on the situation. For instance, my Herc4 example contains decompressed data files 'decompX.bin'. In each one I simply want to dump the contents. I don't want to have to add StringTables to all of those files individually. So, I have a shortcut option 'Add to all Files' so I can add a newly defined building block to all files at once. That solves that. All of the building blocks will generate and dump associated subblocks or strings that may be necessary. So now whether you're dumping from a single ROM file, or various other data files, you can set up and dump sanely so far. It seems OK for the situations I've tried with it.


Insertion:

Due to the fact that I added script editing abilities to it, it needs to be able to do some sort of insertion. By default the hierarchy is set up to insert directly back into the same files and places the data came from. This is not always desirable as you may want to insert many files to a single file, insert to new individual files, or insert to new locations. I thought about changing the hierarchy once again, but it seems to make logical sense to me to just select a bunch of files and tell it what to dump from them rather than create a bunch of blocks (that may all dump from the same file) and tell it the same file all the time.

My current idea is to keep the hierarchy as-is based around dumping and add insertion options on the Insert table on how to insert (All sources insert to single ROM, All sources insert to new files based on pattern naming, Insert back to same source file/s) and what to do with it on the insertion tab (relocate strings or other options I make). This keeps it external to the hierarchy. Otherwise, I can't think of any way to manipulate the hierarchy to better handle the various dump/insert file situations.


Dumping:

If I keep my current hierarchy and internal script editor, and go in the direction I've described above for insertion, I could make similar options on the Dump tab to either (dump to Atlas ready single text file, dump to Atlas ready file per block, dump to XML). These would be the the options in the event you didn't want to translate in-program (in which case you wouldn't be dumping anything outside the program).

On top of that, I'd like to have the ability to import external text files, XML etc from above. This would be useful for scripts that exist already or choosing to use TextAngel to insert after exporting for some reason. It would probably be limited in scope as I don't think I will parse the entire Atlas command set for import and it would make assumptions for some non Atlas format scripts. This is just in the idea phase right now. Perhaps some basic support to start and leave room for import expansion in the future.
Back to top
 

ROMhacking.net - The central hub of the ROM hacking community.
WWW  
IP Logged
 
Nightcrawler
YaBB Administrator
*****
Offline


The Dark Angel of Romhacking

Posts: 3232
USA
Gender: male
Re: Project - Text Angel (GUI Generic Dumper/Inserter)
Reply #19 - Sep 7th, 2012 at 11:13am
 
Since the program has evolved to now center around doing the translation in-program, I've started working out methods to import strings from external files into the project structures. Ultimately, I want to have a variety of import and export capabilities to be able to get things in and out of the program in various formats in addition to simply dumping or inserting. There's always going to be occasions where you might want to say export the script to text, modify it in some other program and import it back into the program or maybe export to XML, Atlas compatible insert file etc.

What prompted me to work on the importing was that I want to import the Herc4 script, which was dumped and translated prior to TextAngel becoming project centric with in-program editor. Having the strings organized editable, and searchable within TextAngel makes management, debugging, and editing far simpler than going through text files. So, there needs to be a way for me to do that.

As always, more flexibility equals more code and more time.
Back to top
 

ROMhacking.net - The central hub of the ROM hacking community.
WWW  
IP Logged
 
Nightcrawler
YaBB Administrator
*****
Offline


The Dark Angel of Romhacking

Posts: 3232
USA
Gender: male
Re: Project - Text Angel (GUI Generic Dumper/Inserter)
Reply #20 - Jul 15th, 2014 at 8:44pm
 
Wow, I didn't realize it had been so long since I updated on this. This project is not dead. I have been updating and expanding it here and there when time allows. It's actually my primary utility for all my current script needs. As such, it's definitely not going away.

I typically work from more than one location via flash drive. Since TextAngel is project based, I decided to make it use relative paths so the whole project becomes portable. That means you basically have a TextAngle project file in the root and all other file references are relative. I think I will end up adding a blend where if a file is outside the main project directory, it will utilize a full path, but I currently don't have a need for that.

I've also improved Atlas compatibility and added flexibility of being able to dump any block node individually, multiple together all in one file, or the whole project split into files or into one. It can be a bit tricky to output compatible Atlas files in all instances.

I added a number of additions to the native insertion abilities as well. TextAngel can do a number of things Atlas can't since it has an break down of the entire text structure right there in the dump. The potential is huge there, but I haven't gotten all that far yet.

In the more immediate future, I'd like to get some command line usage working for when you don't really need the GUI anymore  and just need to build it via batch file and what not. Oh, and one of these days I've got to finish implementing the full table file spec that I drafted. I would agree with some of the critics that it is quite complex. All of my constituents insisted these things be included, so it drags on. I don't really need some of that functionality for my current projects, so I've had little motivation to work on the more complex aspects.

Unfortunately, as afar as a public release goes, I bit off more than my time can chew on this. There's still so many incomplete features, no documentation, and bugs requiring workarounds. I wouldn't expect any major developments here for awhile yet. Although, lately I have been starting to catch up on all my backlogged tasks relating to TransCorp so you never know. Wink
Back to top
« Last Edit: Jul 15th, 2014 at 10:38pm by Nightcrawler »  

ROMhacking.net - The central hub of the ROM hacking community.
WWW  
IP Logged
 
Pages: 1 2 
Send Topic Print
(Moderator: Nightcrawler)