Recent Updates:

MultiPatch 1.7 released

Details

Published: 14 December 2018

MultiPatch has been updated to version 1.7. There are several changes in this release including fixes for applying PPF patches, added support for .RUP patches, and I replaced the IPS, BPS and UPS patchers with a more popular patching library. It also supports dark mode in macOS Mojave and it is signed and notarized for newer versions of macOS Gatekeeper so you don't need to right-click launch to bypass it. The latest version is available here.

Fruit Remover 1.5 and MP3Gain Express 2.3

Details

Published: 22 November 2018

Last month I received a notification email that Fruit Remover would be pulled from the iOS App Store for not being updated in a long time unless I updated it. As a result, I updated Fruit Remover with support for the iPhone X family of devices as well as the new iPad Pro models. The timing worked out well because it meant Fruit Remover was one of the first games to support the 11 inch iPad Pro. The download count is pretty low on that, but it's nice to be able to continue offering my old projects for download which is the primary reason why I wanted to update it again. For more information, visit FruitRemover.com. While I was working on it I found some interesting things to post about, but I never got around to re-installing the blog after the site outage several years back. I don't think I'll re-install the blog software at this point, but I may bring back the content at some point.

Also, MP3Gain Express has been updated to version 2.3. More information on the update can be found on the page for that application.

The update to MultiPatch mentioned in the previous post was delayed due to the two other app updates mentioned above. Now that those have been completed, I'm currently planning for the MultiPatch update to be my next release.

Website HTTPS support, MP3Gain Express 2.2

Details

Published: 25 September 2018

Earlier this year I enabled HTTPS support for this website. If you prefer to visit the site over SSL and your browser doesn't automatically redirect you to the secure version you can now manually change the URL in your browser to view the site over HTTPS instead. I've also updated the Projects link on the left navigation bar to point to the secure version as well.

MP3Gain Express has been updated to version 2.2. Version 2.1 was released in October 2017 and the "Check for Updates" feature will have automatically prompted users who don't check the website for news. Unfortunately some changes were necessary before I could update this page again so I did not get around to making an update to post about it last year. Version 2.1 featured new icons, a new translation, and several bug fixes. Version 2.2 updates the dark mode feature in MP3Gain Express to fully support the dark mode that was added to macOS 10.14 Mojave. It also includes an updated Spanish translation as well as a minor change to the "Add Files" dialog to disable selection of non-supported files. The application was already filtering out unsupported files after selection to prevent them from being used, but I received a bug report that made me decide to improve the rejection of unsupported files.

If anyone has followed my activity on GitHub recently, they may have noticed that I posted a new beta build of MultiPatch in response to a bug report that was filed recently. I hope to release a new version of MultiPatch within the next month that improves compatibility with PPF patches. I may address some other outstanding changes at that time.

MP3Gain Express 2.0

Details

Published: 19 June 2017

MP3Gain Express has been updated to version 2.0. It can be found here. This update addresses every feature request that I've received and documented since the application was first released. New features include:

Album Gain Support

AACGain Support (.mp4 / .m4a files)

Multi-threaded processing, which as far as I know is not available in any other port.

Saved preferences

Refreshed UI with updated icons and Dark Mode support

Errors no longer interrupt processing

Aside from addressing any bugs that may have been introduced with this update, this may be the last update for a while. There are no additional features that I plan to add, any future updates will probably just address bugs or fix compatibility with newer operating systems. MP3Gain itself is a stable piece of software that hasn't been updated since 2010, which was prior to my first release of MP3Gain Express. I initially started the port as a side project for personal use and released it in case others needed it. It eventually became the project I received the most emails about, so in return I've given it everything that everyone wanted. Thanks to everyone who emailed me over the years about it.

Now that the MP3Gain Express update is completed, I plan to return to some other projects that have not yet been released. I don't have anything to announce right now, but I hope to update at least once more this year.

MultiPatch 1.6 and project updates

Details

Published: 18 April 2017

MultiPatch version 1.6 has been released. A bug fix for UPS patch creation was contributed via GitHub, which is the primary reason for the new release. But I didn't want to post a new release just for a small fix, so I made some additional changes as well. Drag and drop is now supported, so you can drag files into the window instead of browsing for them. Also, the file extension for patch files is no longer case sensitive.

I received several requests for updates to MP3Gain Express over the past 2 years. Last summer I began working on a re-write of a major portion of that so it would be easier to add much of the requested functionality. I only worked on it for a short amount of time before I went back to other things, so it's currently sitting about a third of the way done. I hope to have another release of that out sometime this year which should include several requested features.

MultiPatch 1.5

Details

Published: 29 December 2015

MultiPatch has been updated to version 1.5. I received a report that IPS patch creation wasn't working correctly. This was broken in version 1.4, and is now fixed in 1.5. Additionally, the application is now signed for gatekeeper so you don't need to right-click it to run it for the first time. Finally, some changes were made to modernize the codebase to better align it with current development tools.

Reverse Engineering Games

Details

Published: 04 December 2015

Back around 2002 to 2006, I used to make codes for cheat devices on various platforms. One of the most interesting things to me back then was discovering and playing around with unused or debug content in games. Some people may recall when I discovered and released a cheat device code to access a test level in the US Gamecube version of Sonic Adventure 2 Battle, or the unused kart racing stages present in the first game, as examples. One aspect of finding interesting things like this (other than trial and error) was being able to trace though the game's assembly code to try and figure out how things worked. At the time, I wasn't very good at that and so any changes I made were usually single instruction changes if they involved assembly code at all. With time (especially after writing the HC11 emulator that I mentioned in the previous post) I became better and reading through assembly code for various processors and understanding the larger scope of what various logic was doing.

Recently I wanted to revisit some of the things that I couldn't do back when I was actively making codes back then. For example, I recently posted a cheat device code for the UK Dreamcast version of Shenmue 2 that allows the save file import feature to import files from the US version of the first game. (The Dreamcast version was cancelled in the US a few months before release, so most people including me had imported the English version from the UK) This required disassembling the game, locating the function that verifies the validity of the save file and modifying it to ignore the logic that checks the game region. Stuff like this is made easier using tools like disassemblers which can help by tracing the flow of assembly code, keeping a list of functions and their locations, and keeping track of text strings along with where they're referenced. But when it comes to disassembly of game console binaries, there wasn't really much choice when it comes to tools to do that. For example, with Dreamcast's SH4 processor the only option for a graphical dissembler was IDA Pro, which costs $1,129 USD. That's completely out of reach for anyone who wants to do this stuff as a hobby. The only other option was to compile some open source code that would disassemble into a massive text file, which doesn't give you any tracing or other advanced features.

A few years ago I found out about Hopper Disassembler, a much cheaper disassembly tool for Mac OS X and Linux. It costs less than $90 USD which is a fraction of the cost of IDA, and out of the box it supports both disassembly AND decompiling of both x86 and ARM assembly. The decompiler was an interesting feature too, because IDA charges an extra $2,350 per processor for theirs and Hopper has that feature included with its normal licenses. It also has a plug-in SDK to add support for additional processors, which is why I'm writing about it now. During the past few months, I released 3 plug-ins for Hopper to help with analysis of older games:

HopperPPC-Plugin adds support for the PowerPC processor used in the Gamecube and Wii consoles. There's also an additional plug-in in that repository to load Gamecube DOL files.

Both plug-ins are relatively basic at this point in time, but as I use them I'll be adding any features and fixing anything that will make them more useful to me. I hope someone else out there is able to use them as well. That's the only news I have for now, but I hope to update some of my older projects or start a new one in the near future.

Fall 2015 Update

Details

Published: 10 October 2015

I've decided to start looking through my backlog of past projects that might be worth releasing the source code to. The biggest one that came to mind is one that I wrote during 2006 and 2007. When I learned assembly language in college, we were taught on development boards using 68HC11 processors typically used in embedded systems. At that point, I had been interested in emulators for several years and had wanted to try and write one from scratch. This was the first time I knew enough about specific hardware to actually do it, so I took the opportunity to try and do it since the hardware was fairly simple. The end result was a mostly complete emulator which was helpful for developing basic assembly language programs. There are some inaccuracies that need correcting, 2 CPU instructions that I didn't implement (both of which are usually used for hardware testing and not useful in actual code) and some hardware features like interrupts are missing. But the debugger is pretty neat. In addition to read, write, and execute breakpoints, (which are pretty common) it's the only debugger I know of that explains what each instruction is doing. That's very useful when you're trying to debug code and aren't familiar with the instruction set yet.

I've posted the source to the 68HC11 emulator on Github. Please note that this will not be useful to almost everyone. The 6811 is a really old processor from the 80's that nobody really uses anymore, and it was primarily hooked up to other devices like card readers or keypads. The emulator was designed against a very specific development board, the only people who will have stuff to run against it are those who have developed for it themselves. Having said that, here is a link to the code. I hope someday it might be useful to someone.

I will look through other old projects in the future and release the code if it seems appropriate to do so.

For news that may interest more people, I thought it would be a good idea to mention the BizHawk emulator. It's a multi-system emulator written in C#. I learned about the project in 2012, and started working on the Mac OS X port of it later that year. The OS X port is very rough, mostly because the user interface is a wrapper around the original windows code, but it's good enough to use for playing games. At some point I hope to complete a native UI for OS X that will solve some of the problems it currently has. I would recommend that anyone interested in helping the project try and get involved, especially if you're interested in helping on the OS X or Linux side of things. You can find a forum post where I link to the latest OS X build here.

GDIBuilder 1.2

Details

Published: 28 March 2015

I've released a new version of GDIBuilder for Windows and Mac.

New in this release is the ability to generate a truncated image. Normal valid GDI images will always be 1.11GB, however some people wanted the ability to make smaller images to save space. This option produces an image that while not technically valid, will usually still work for most situations. RAW mode is now enabled by default since this option is more commonly used and better supported on hardware. You can download the new version here.

New Application, MP3Gain Express updated

Details

Published: 04 December 2014

MP3Gain Express has been updated to version 1.2. The new version adds drag and drop support for files. As usual, you can find it here.

I've also released a new tool, GDIBuilder, which can be used to help build Dreamcast .gdi images from scratch. You can find it here. The tool is available for both Windows and Mac OS X.