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.