KMT Source Materials

DDSTranslation again, and here is the batch of miscellaneous files I mentioned before that should contain all (or most) of the work that was done to create this translation.

These files are being provided as-is, and I claim no responsibility if they end up erasing or deleting your PC. But it should all be safe.

The archive consists of the 65816 assembler code that I wrote to change the game’s functions, the text editor that I wrote in Java that allows easy modification of the dialogue in the game, and assorted text files containing the Japanese script, translations and my own personal notes.

These are being provided for those who are curious about the extent of work that’s been done with the translation, and also to help those who may be interested in localizing the game in their own language.

Kyuuyaku Megami Tensei – Finally released

DDSTranslation here, with news about the Kyuuyaku translation that’s been in the works for almost 4 years now. It’s been a long time coming, and I deeply apologize to everyone that’s been waiting for this to be completed.

For those that just want to play, here’s the link to the patch file:

Update: Someone discovered a bug with the v1.0 release where having a partner or friend name with the max of 8 characters would cause the save and load game screens to lag and not display anything.

I’ve made a fix for it and updated the patch to v1.1. Sorry for any inconveniences.

For those interested in keeping the megaten.asm file up-to-date, all that was added was an extra “BEQ save_screen_human_name_found_01″ to lines 7411 and 7572. If inserted correctly, the two places should have operations in the order “LDA, BEQ, CMP, BEQ”. Or basically, copy the “BEQ” line and paste it above the “CMP” line.

I hope that you have a fun time playing through this game in English, and would love to hear what you thought about it.


If you’re still interested in hearing me ramble, or want to know just what the heck happened, I guess I can summarize the last couple of years. It’ll be nice to finally get all this off my chest.

I first started working on KMT around the time I finished college, which would have been around Spring 2008. I’m no stranger to the fan translation community, and thought I could do something with my spare time that would be constructive. After doing some preliminary work to make sure I’d be able to finish what I started (ironic, considering what would be to come), I made my first post on Romhacking.net to solicit help from Japanese translators. I got a wonderful reception from people surprised at the quality of the work, and it wasn’t too long before I finally got the help I needed.

The following 2 years, I was learning how to be a white collar worker in the real world. And unsurprisingly, that meant a lot less free time to work on the translation. I was coming to the realization that it’s a lot more appealing to play games in one’s free time than it is to work on them. I started falling behind in progress, and after spending a long time trying to solve a major logic problem with my text editor, I ended up giving up on the project. That was around the time where I put up my video that apparently has become somewhat of a parody, where I said “I’ll either finish this project or release whatever I have by the end of 2011″.

Just as I was no stranger to translations, I was similarly no stranger to just giving up on translations as well. But the thing was, this was the one that I thought I had in the bag. I had done things with this project that I have never done before, and this was supposed to be my ultimate work. It hurt so much to have to give up on it, and it nagged at the back of my head for the last 3 years. What kind of person am I that can’t even finish what he set out to do? What about all the work that the translators had put into it? I had let everyone down, and all the work had been for nothing.

At the end of January, I decided to leave my job for personal reasons and became unemployed again. As the job search went on, I was finding myself bored with the games I had been playing. I thought about the Kyuuyaku translation again, and wondered if I could really ever finish it. I had tried looking at the problem I was stuck on several times over the years, but could never get my head back into it. When I looked at it again in July 2014, it just suddenly clicked. I guess I had learned a lot about programming in the last 3 years that I could finally overcome that hurdle.

I made a post on Romhacking.net at the end of July stating that I would be resuming the project, and have tried my best to be as open and engaging as possible. I thought it was the least I could do to make up for my broken promises. And it actually turned out to be the best experience I’ve ever had in this hobby. The rest is pretty much history, and might still be seen in the thread on Romhacking.net where it all started.

I don’t have any plans for the future in regards to translations, though I wouldn’t mind going back to one of my other abandoned projects and finishing them up. And I’m not sure how appealing it’d be to receive help from someone like me who has a history of just disappearing on a whim. But I’m striving to turn over a new leaf. And if I’m able to help anyone else that needs it, I’ll try my best.

In the next post, I will be releasing all of the notes, files and source code that I’ve used to make this translation. It wouldn’t do me any good to hold onto them. And maybe, it might prove to be of some use to someone out there.

More exciting tools updates

Due to popular request, it’s time for more armips news! The changes this time around aren’t as big as last time, but they are still notable developments. It can now be used for PS2 games, and also on Unix platforms! Finally you aren’t restricted to just Windows anymore. Make sure to grab the latest revision on GitHub.

Speaking about PS2 games, some of you may know that I spent a lot of time on improving PPSSPP’s debugger last year, to help with a PSP project. Unfortunately, PSP wasn’t the only platform lacking a good debugger. The PS2 was especially poor off, the only PCSX2 version to have a debugger – and a pretty poor one at that – was several years old. Recent versions completely removed it. There was nothing left.

… until recently! I took it upon myself to write a completely new debugger for PCSX2, and a much better one than before. It has almost all the features PPSSPP had, including a builtin assembler and conditional breakpoints. So far it only works for the R5900, but that’s where most of the interesting stuff happens anyway. This will hopefully help future PS2 translation projects. You can get it by building PCSX2 or by downloading a prebuilt version.

pcsx2deb

As for project updates, there’s not a lot to say. I just finished my Bachelor Thesis, so time was rather scarce lately. One notable development, though, is that dds continued working on Kyuuyaku Megami Tensei 1 & 2. See this thread for updates, and he will comment on it on this blog later on too.

armips news

I hope you’ve all been enjoying Oriental Blue! There hasn’t been much progress on the other translations this time, but those are far from the only things I work on! In the last six months I’ve spent a lot of time on improving my assembler. I rewrote about half of it, added a few very neat new features, and made it open source on a GitHub repository. If anyone wants to contribute to it, pull requests are welcome. Otherwise you can just check out the latest stuff. It needs Visual Studio 2013 to compile, and the Visual C++ 2013 redistributable to run.

Here are the currently notable changes since the last release:

  • it is now possible to load (non relocateable) PSP ELFs via .loadelf name. This takes care of any address calculations. Many more PSP specific opcodes are also supported, though not at all yet
  • now fully UCS2 compatible. Can read from UTF8 and UTF16LE/BE by detecting the byte order mark. Can be told to interprete a file as Shift-JIS, too. If no BOM is found, it defaults to UTF8
  • the biggest new feature: importing static libraries compiled for PSP or GBA/NDS. armips takes care of relocating it to the current address, resolves external symbols using the user defined labels, and makes all exports visible to the rest of the assembly code. Essentially this allows you to write a lot of your code in C/C++, and then easily link it into the existing game using armips. The usage is .importlib name.
  • new -sym2 format, which adds support for functions that PPSSPP can interprete. .function name to start a function, and .endfunc to end it. .function will implicitly end any previous function.
  • new directives: .function, .endfunction, .stringn, .sjis, .loadelf, .importlib

I’m not sure how long it’ll take to wrap things up for the next proper release, but it will definitely be the biggest update so far.