News: 11 March 2016 - Forum Rules
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia, Danke

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - DackR

Pages: 1 2 [3] 4 5 6 7
Personal Projects / Re: [SNES] Super Famicom Wars Translation
« on: January 28, 2016, 02:16:27 am »
*A surge of excitement has jolted through my arms!* Nice font. I love it! Ooh, is that a subtle suggestion that you could be looking into retrieving the latest unfinished beta of an English translation patch for Fire Emblem 4 on this site here and complete it as you'd know all about the compression used therein?

The Font is a combination of the partial upper-case english font that the game already contained in the Japanese version-- and the font that ddstranslation was using for their translation. I modified the ddstranslation font to include shadows so the font is a bit more readable. More or less just merged the two.

Unfortunately, I have no motivation to work on Fire Emblem 4 at this point. ;) Maybe someone else will be able to do something with it.

Personal Projects / Re: [SNES] Super Famicom Wars Translation
« on: January 27, 2016, 12:09:00 am »
Just a quick question. I presume you have worked out the txt compression?? What did they use?? Was it LZSS or some form of it?

I'm interested if there are any common compression methods used on the SNES. It would take a long time to message all the people that had done translations and ask.....


The text is not compressed (at least none that I've found), just encoded strangely (super bomberman 5 is just as bad, lol). The font and various other game graphics are compressed, however. This actually uses a unique combination of LZSS, and RLE in certain cases. I recently learned that Fire Emblem 4 uses the same or very similar compression method. I wish I would have known this before reverse engineering the compression. Luckily, it was fairly easy to reverse because it was mostly straight-forward and clean in execution.

I've been in touch with ddstranslation and he has shared some of his hacking notes and various translations by Honookatana. The notes are quite helpful and should put me many weeks farther ahead than I would have been otherwise. Big thanks to these two for all of their hard work!

I did this today...


Personal Projects / Re: [SNES] Super Famicom Wars Translation
« on: January 20, 2016, 07:12:27 am »
I noticed in the Japanese font that the depth of these hiragana or letters have its own perspective compared to that of the length of the text from the left to the right. Is this impossible to do in Illustrator?

This is possible, but I don't think it'll ever be perfectly similar. I feel like it's fairly close besides the additional rough-ups that are necessary to make it look like a stone carving.

This is VERY rough, but here is an update more as a proof of concept:

I have compression working smoothly. Optimizations to the code will have to wait until later. At least now I can get a modified font inserted so I can start translating menus. :)

Personal Projects / Re: [SNES] Super Bomberman 5 Translation
« on: January 19, 2016, 05:49:13 pm »
Thanks everyone for keeping me motivated! :)

I've been steadily moving through and hacking several of the Menu headings as well as many of the menu options. Most areas are pretty simple to get hacked in, but quite tedious. Also, the way the font graphics are stored and referenced by the display routine can get pretty complicated.

So far, only one menu screen has become a pain to hack, so I'm leaving it for last. That is the Sound Test menu. For whatever reason, i'm having trouble locating the tilemap which means its probably encoded strangely. When I feel like a grind-session, I'll be stepping through the code to figure out where and how the data is stored in the ROM for this screen. Hopefully this is the only screen that is done this way... :p

I'll try to have some progress screenshots in my next update, but for now this description will have to do. Honestly, the progress isn't very impressive yet anyway.

Newcomer's Board / Re: Wanted : StarTropics text editing
« on: January 16, 2016, 05:07:01 pm »
Command line apps are quite useful. When I hear someone say they hate something, this usually signals to me that one does not understand that thing and instead chooses the easier path of ignorance and dismissal.

I suggest you attempt to understand the uses for command line apps before writing it off completely. Respectfully, you are simply missing out. I doubt you will get far with your project if you continue to put up barriers for yourself.

Personal Projects / Re: [SNES] Super Bomberman 5 Translation
« on: January 16, 2016, 12:08:33 pm »
Thanks for the info Mike and Panzer!

I'm moving pretty slow changing the tile map for the new font, but then it's been a pretty busy week for me personally.

No problems thus far.

Finished playing! What a great game, thanks for the awesome translation!  :thumbsup:
While playing i just noted these:
The same as above

Some japanese text

My english isn't that good  :-[, but i think these 2 "out" aren't right

Also after the credits when miss Gina shows up the lower part of the screen glitched

None of these are gamebreaking though  :thumbsup:

Thanks for keeping track of these as you went through the game! We'll be completely bug-free before you know it. ;)
A couple of these should be fixed in the latest revision. Do you happen to know which patch you used? You can check the readme, and alternatively I can tell what revision of the translation the rom is patched to by checking the snes header info. I can tell you where to look for the revision byte a little later today hopefully. (I'll check my notes.)

Personal Projects / Re: [SNES] Super Famicom Wars Translation
« on: January 13, 2016, 06:32:59 pm »
DackR, can you try to massively extrude the depth side of those title letters? Also could you try to bend some of them to appear more hidden behind some of the letters on the 2D text side just like the Japanese font? Or is this impossible to do in your free tool?
I can increase the extrusion depth, but I'm not sure what you mean by the rest of this. Perhaps you want me to increase the spacing between letters? I'm using Adobe Illustrator, so not sure what you mean there either. Can you give me an example?

Found a dialogue bug for Miss Sisko.   When showing her the Mysterious Photo and picking Benson, some of her text gets layered.   EG:   "This is an example" and "Demonstration" would have both lines sharing the same space, resulting in unreadable muck.
I'm making one Final, Final release that fixes this issue as well as fixing issues when patching from a ROM already patched with Tashi's release. v1.06. EDIT: Big thanks to forum member Alcahest for pointing out the patching issue!

Thanks for this translation DackR! I've wanted to play this game for years.
My pleasure! Thanks for playing.  :beer:

Personal Projects / Re: [SNES] Super Famicom Wars Translation
« on: January 12, 2016, 01:21:52 am »
But the Japanese logos almost always look better whether I can read them or not. I also prefer to not have 100% of a game's Japanese origins bleached out just because some people have no appreciation for that sort of thing. And I disagree about a simple subtitle looking lazy, but that's my opinion. If you want to see lazy, look at some NES title screen and box art localizations/butchering. :D
Not to get too far off topic, but I think both you and Xenesis have some valid points. I'm more of the opinion that title reworking should be approached on a case-by-case basis. For example: If the game has a distinctly "Japanese Feel", and/or heavily references Japanese history, places, or culture then it's probably a good idea to think about keeping the original logo and subtitling it. One really good example of an official localization utilizing this layout this is the title for the Onimusha series. I'm sure there many examples of this.

My thinking in the case of Super Famicom Wars is that I should try to approach title localization similar to how a localization team from the 90's might have. And then-- with that in mind, give it a more modern feel. I may add a Japanese subtitle, however. ;)

No rush to get the source up, was just making sure I wasn't over looking it.

If I run into any problems and we can't solve them then I'll download the source (what's it written in btw?) and see if it helps but to start lets just go for it like a normal use case.
I shall not rush then. :)
This is written in C#. There are a few portions of code that were originally written in C++.

Just let me know if you find anything broken, or if you have any other ideas for features.

ROM Hacking Discussion / Re: Fire Red wont even open on VBA-M
« on: January 11, 2016, 08:24:20 pm »
They have a pre-patched rom available for download on their website... which is about the worst website ever made. Its copious use of banner ads, popup windows, and trick download ads (pretty easy to spot, but yeah...) are quite irksome.

However, just visiting the site makes me want to punch whoever made this hack.

Personal Projects / Re: [SNES] Super Famicom Wars Translation
« on: January 11, 2016, 05:47:08 pm »
Thanks for the examples Gemini! I've actually made a few changes since the initial image.

How about this one:

I'm still not entirely happy with it, but it's getting closer. :)

This was made in Adobe Illustrator using the 3D Extrusion tool and then edited in Photoshop.

Newcomer's Board / Re: Wanted : StarTropics text editing
« on: January 10, 2016, 09:02:09 pm »
Here is something that may help:
A tool called "rsearch" it is for relative searching in binary files. I searched for "PRELUDE" and it pointed me to 0x1A28.

I even whipped up a quick table file (missing control codes, but a good start):

You'll want to locate the text pointers (usually somewhere before the script in the ROM). And then use a tool like "cartographer" to dump the script.

Always reassuring to hear. :)
:thumbsup: It's not anything that would mangle your files or murder your dog, but just in case it blows up with an unhandled exception or something...

That's it download and it runs without any files displaying the 'Press any key to exit' message which is a start. Will get a project set up for it during the week and give it a whirl on something simple.
Oh- also note that the XML file I packaged with the app should really be an "MBXML" file. If "MBuild.MBXML" exists in the same folder as the app and you run it without arguments, it will automatically try to build using that file.

Had a quick look on the project on GitHub, is it just the binaries and not the actual source that is up there?
The repo on GitHub is intended to be for the Marvelous translation project. I really only referenced it as a working example of the tool.

I'll try to have the source code for MBuild up in it's own repo sometime this week. I feel too lazy to set up the remote repository and push it at the moment-- unless you think that would help you get started. Then just let me know.  ;)

I'm in the need of something like this with my current process being exactly what you described, making modifications via HxD directly on the ROM file.

I'm doing a bit of a toolchain review just now so can slot this in quite nicely and report back how it goes if you are interested?

Only issue I can foresee is I need it for the Megadrive (68K) but it's meant to be generic right, so could be interesting to see how I get on.

Here's a current build. Give it a try and let me know how it works out for you. I've made some major changes to the code over the last 3 days, so it's probably a little buggy.

I <b>think</b> I'm starting to understand what this tool does. Could you check if the following is correct?
As input to this tool, the user provides:
- the original rom
- binary files containing some modifications
As output, the program creates a new ROM file.
All operations you can specify (today) are binary insert, replace, remove operations, with the option of executing a compression on a binary file before its use for insertion/replacement.

This is more or less correct for the main "build" function, yes.
It has a script building function that is currently less feature-full than Atlas, but I plan on adding compatibility for Atlas-formatted scripts. I usually build the script into a binary separately from the main build process-- depending on the size of the script because this is something that is still a bit slow-- and when I'm making edits to other binary files and rebuilding fairly frequently to test. It's just faster that way. (It's the difference between a 300ms vs 5-8 second build.)

Don't forget that it can automatically create ips and xdelta patches following a build as well. (Not that there are any shortages of ways to do those functions in the first place...)

Anyway, does this seem like it could be potentially useful? Or are there already tools that I've overlooked the perform the same function? Maybe it's too complicated to be of any use to most people? Would it be better if it had some kind of GUI to support it in some way? Maybe I should rethink the design a bit.

Personal Projects / Re: [SNES] Super Famicom Wars Translation
« on: January 10, 2016, 12:34:03 pm »
You may want to hit up DDSTranslation here in the forums on this game. He worked on the game in the past and made some headway. He might be a good resource. Good luck on this. It would be awesome to finally have this in English. :woot!:
I've sent a PM to see if they would be interested in contributing in some way. I don't mind collaboration in the least. :)

What about changing the pointer to the compressed graphics and move those graphics to a fee area in the ROM?
You can always expand the ROM if you run out of space.
Indeed, this will likely be necessary in the end, and I have had to do this on other projects. My focus on the compression is to make sure my changes take as little additional space as possible. The good news is that I've got a pretty good compression routine worked out now. I still need to do some additional testing, but it might be a couple weeks before I circle back to this.

Super Famicom Wars tends to be a hilarious translator's newbie-trap for whatever reason, it'd be nice to see an actual translation for once.
lol... It's a trap all right. I'll try to make regular updates and be open about my progress.

You going to match it to the Advance Wars translations for units/maps/names/etc?
This is actually not a bad idea. I'll do some comparisons and try to be as consistent as possible with the games that saw official localization.

This is kind of a tough space to discuss, and yet one where it would be so great to find something common. And so tough. :)
I'd like a text-supporting tool for dumping & inserting to handle quite a few things...
- a mix of hex data and text data. We generally talk about pointers tables, but it so happens my favourite example game also has headers that need updating (because sizes of sections containing text are changed, offsets to subsequent sections in the main header need to be updated.) On top of the pointers table, and the text encoded according to a table.
- some pure hex data, when I'm changing screen layouts and whatnuts.
- some pure hex data taken from the results of an assembly generating toolchain. Actually, for the PSP, I'm using armips and it is not obvious which toolchain should be called first. (Currently I have 1 specific tool of my making to generate a game-specific table (dependent on files sizes), and I run a 2-pass process: assemble, then generate the table, then assemble again.
- support custom encryptions / compressions because that's what these games do - they specialize a lot of things. (need a plugin or executable call interface)

- Cartographer + Atlas propose part this with quite some flexibility. (But it would have worked in my example of interest. I tried.)
- I don't see myself using the quickbms scripts to do anything beyond pure structure parsing. (I'm not even using it for that.)
- I haven't seen any updates on TextAngel for a while (but I may be missing stuff)

If versions are taken care of in that nice toolchain, that's great. (And I mean using a versioning system like git - since it's the hype system of the moment.)

Those would be my overall 3 cents.

I'll need to update this post later to address everything you've talked about, however, I'd be interested to hear more about your current tool set. I will admit that right now this tool is very focused on SNES translation projects. I plan on adding onto the tool whenever someone sees a need. My plan was to post it on GitHub and allow people to customize the tool to their project and then I would possibly merge their changes into the main repo. I'm used to coding alone, so I'm hoping to get some experience with collaborative work...

I've posted an example of how this tool works over at GitHub. This includes all of the data that I used to build Version 1.05 of my Marvelous SFC translation patch. It also includes the MBuild tool and a few other tools. It's not completely documented nor is the latest source available yet. If you get a moment, give it a look and see how it would fit into your processes compared to what you currently do.

Hey guys-- Ever since I started work on the Marvelous translation early last year, I've also been working on a tool that would help keep me organized. I call it MBuild (or Marvelous Build).

Here's a preview from the readme file of what I've got so far:

MBuild v1.28 - 2016/01/09
MBuild - A Marvelous Translation and Hacking Tool
Written by DackR aka Daniel Martin Burgess
!!!Requires .Net Framework 4.5
Lunar Compress DLL v1.8 by FuSoYa.
Lunar Compress Interface Code Originally by giangurgolo and Omega (I've made some minor changes).
Super Bomberman 5 Decompression/Compression by Proton (Ported to C# by yours truely).
xDelta3 created by Joshua MacDonald (jmacd).
The SNES Checksum routine was ported to C# from the original SNES9x source.
MBuild was originally created to assist in change management while
working on the translation of Marvelous: Another Treasure Island.
There are many features, with more features being added all the time.

Gone are the days of making permanant changes in a hex editor to the
original ROM file. With MBuild, the user is encouraged to extract data from
the original ROM and store it separately, in an organized way. When the time
comes to build the data, an XML file containing a list of data files, offsets,
and other information is used to neatly fold in the changes to the output file.

Ability to dump binary data from a file.
Ability to dump script text.
Ability to encode script files into binary format.
Build-time compression using a variety of methods.
Supports Lunar Compress DLL compression types.
Supports Super Bomberman 5 RLE-type compression.
Seperate command-line options for any process available during build-time.
Build-time SNES ROM file expansion support (pad option).
Build-time SNES checksum correction and header modification (pad option).
Build-time diff patch creation supporting output of xdelta and/or ips files.
Drag-and-drop XML files on the MBuild executable to use that XML file to build a project.

Relative paths are accepted.
PC hexadecimal offsets only.
Previous build files of the same name will be overwritten.
Modify the MBuild.XML (can be named differently) file to customize the build process.
XML Comments are supported.

XML Structure example:
<build original="ROMFILENAME.SFC" name="NameUsedToGenerateOutput" path="..\">
   <lzr file="x121964_LZR_TITLE.bin" offset="121964" />
   <lzr file="x1DA5ED_LZR_SUBTITLE.bin" offset="1DA5ED" />
   <lzr file="x1D948F_LZR_NINTENDO.bin" offset="1D948F" />
   <lzr file="x123951_LZR_INTROFONT.bin" offset="123951" />
   <lzr file="x1257F6_LZR_INTROTEXT.bin" offset="1257F6" />
   <lzr file="x14B628_LZR_PUZZLE1.bin" offset="14B628" />
   <lzr file="x132FC4_LZR_ANTBUSTER_GINARANSOM.bin" offset="132FC4" />
   <rep file="x270000_REP_KANJI_FONT.bin" offset="270000" />
   <rep file="x2AC000_REP_MAIN_FONT.bin" offset="2AC000" />
   <rep file="x2B6000_REP_ACTION_MENU_GFX.bin" offset="2B6000" />
   <rep file="x2CE000_REP_LARGE_FONT.bin" offset="2CE000" />
   <rep file="x7C84_REP_ASM_RELOCATE.bin" offset="7C84" />
   <rep file="x268000_REP_MISC_MENU_AND_NUMBERS.bin" offset="268000" />
   <rep file="x7FDC_REP_Possible_PalleteFix.bin" offset="7FDC" />
   <ins file="x300000_INS_EnglishScript.bin" offset="300000" />

To simplify the management of changes to a ROM file,
you are able to keep separate binary files. This is for ease of backup and editing.

Supported Node Types:
build=    attributes under this node control the basic build parameters such
      as source file, name of output, and file path for all files.
rep=   Replace data at offset using RAW uncompressed data.
ins=   Insert data at offset using RAW uncompressed data. When inserting data,
        the output file will be padded to the next valid ROM size by default.
lzr=   Stands for LZ, Replace. Essentially compresses binary data before
      replacing data at a specified offset with the compressed data.
      All Lunar Compress compression types are supported.
lzi=   Stands for LZ, Insert. Compresses data and insert at specified offset.
bpr=   Bitplane conversion will be attempted. Currently, only two modes are supported.
bpi=   Same as above, but the data will be inserted into the outfile.
rlr=   RLE compression is performed before the data is overwritten at the specified offset.
rli=   Same as rlr, but the compressed data is inserted (file size changes).
sbr=   Script build and replace. When you specify a script text file and a table file,
      the data is build and then written to the output file at the specified offset.
sbi=   Same as sbr, but as an insert operation.

Additional Build Process Notes:
-Build process will follow node steps in order.
-Original ROM is not modified.
-Input files are not modified.
-Output file is generated fresh for each build.
-A unique file name is generated (for each date).XX- This is depreciated. Uses build info to generate the output file name.
-Multiple build nodes are supported, but nested builds are not.

Command-line arguments:

      "build"   -   Used to build a project using a specific XML file.
            -   If no argument is specified, this process runs against "MBuild.XML" by default.
            -   This behavior can be changed by modifying the "MBuild.exe.config" file's AutoBuild Setting.
            -   This argument only evaluates the /xmlfile property-- all others are ignored.
            -   Example: MBuild build /xmlfile:"c:\folder\file.xml"

  "dump-script"   -   Used to dump an unformatted script file. (Currently) Support is planned for pointer table traversal.

   "bin-script" -   Used to build the script file (unicode/ascii txt file) into a binary-formatted file. Support is planned for Pointer table generation.

      "comp" -   Uses one of any number of compression types to compress a file. Lunar Compress Types are supported as well as a few others.

      "fixsum" -   Use this argument to fix the checksum of SNES ROM files. Headered and Interleaved ROMs are unsupported.

        "ips" -   Use this argument to generate an IPS patch.

      "xdelta" -   Generates an xDelta3-compatible patch file.

  "bpp-convert" -   Convert a file between a few of the supported bpp formats.


I'm working on several game-specific tools. Also general tools for bulk dumping of data utilizing pointer table data. (I need more examples of different pointer tables used in games.)

So far, I am able to dump data utilizing a pointer table in the case of Marvelous and Super Bomberman 5, but I want the tool to be flexible enough to be able to read a configuration file and be able to traverse different pointer types and dump data efficiently.

I've already made an older version of this tool available (comes with the Marvelous Localization Tools in the translation thread). Just wanted to see if there was any interest for me to maintain general releases. If not, I'll probably just keep it to myself because that really all I made it for...

I'm looking for some other ideas of features to implement as well. So, if you've got ideas, lets hear them. If you think this tool is poorly planned, let me know that too. ;)

Pages: 1 2 [3] 4 5 6 7