ROM hacking? What's that?
Things were moving along so well up to the end of last year. I was even convinced I was actually going to finish some of these long standing projects in the near future. What followed however, was a string of life events that resulted in no ROM hacking whatsoever for months. Deplorable, I know. So, here is a little recap of how time can go by without getting anything done when life throws more bricks in your face.
Soon after the last update, December became very busy with overtime at work, unexpected home repairs, family obligations, future planning, and holiday events. Almost immediately after the new year, I became ill with a nasty infection (or maybe multiple subsequent infections) lasting several weeks. This was easily in the top 3 for the longest and worst illnesses I’ve ever had in my life. Several days after I got better, the northeastern US got assaulted with one of our worst winters ever (which was depressing since last year was also a worst winter ever candidate). Shoveling became a way of life and nearly found a place in my daily life. Even when it wasn’t snowing, the relentless arctic winds typically drifted my driveway and walkways over at rates comparable with actual snow storms. Along all of this, at my job a major new product was being launched for a big industry show. I was critical to making the launch occur and I had to work more sustained long hours than I have ever had to before.
The only enjoyable thing I’ve done in months is play the Last of Us and Heavy Rain on my new PS3. Even that was somewhat painful due to my longstanding elbow issues, go figure. Life was really starting to get depressing. You’ve got to try to see that light at the end of the tunnel though, right? The Earth was still tilting me closer to the sun every day and the winter assault finally ended. The big product launch happened at work, and I have now scaled back a bit on hours. I am currently healthy (or at least at my ‘normal’ level these days). So, I’m hoping things will be able to get back on track in a forward direction soon.
It sure is frustrating when you are determined to get things done and life keeps defeating you over and over preventing you from doing so. I shall not update again until there is progress to report! Boy, those could infamous last words, huh? Let’s hope not! Don’t worry, I have been back on track this week with Heracles IV and some worthy progress will surely manifest itself soon!
Lots of things have been going on at TransCorp since the last update. And I bet you thought we were sitting around doing nothing, well… :P. I’m still working on clearing out the backlog of old overdue tasks, as well as continuing to move forward with current projects. Life has been especially difficult again in recent weeks, but I’ve still been able to keep a good pace going. Work is progressing much better than the past few years and that carrot of work completion is dangling within my sites! First, we’ll look at what’s new with the old projects.
Dual Orb 2, Wozz, Emerald Dragon, OH MY!
This has been a long time coming, but I have blown the dust off of all of the old projects to give them the tender love and care they deserve. All 3 have received new patch updates to take care of some long standing things that needed taking care of. Every now and then, I like to enhance or improve my old releases. I never truly abandon them and they are never truly done. In addition to the new patch content itself, I took this opportunity to also add xdelta patches to the distributions for superior patching to IPS (IPS is still included for cases where it is needed). The new patches are also now licensed under the Creative Commons (CC BY-NC-ND 4.0) Deed in an effort to standardize and legitimize the distribution as much as possible for this type of work.
It was brought to my attention some time ago that there were some issues on some flashcarts with the splash screen intros. This caused all kinda of havoc to figure out. Earlier versions of BSNES indicated no problems, and I had previously tested my translations on real hardware via a copier I had. So, it wasn’t until more recently that I was able to decipher the issues. First, there was a crazy issue with my sound driver. The way I was handling the FLG register, echo registers, and ordering/timing of the two caused varying problems on some hardware from distorted to no sound (even locking the game from starting). After running what seemed like billions of tests, I better understood the timing requirements of the DSP’s FLG, echo registers, and their associated functionality. I Just needed to reorder a few register writes, and add some proper delays and it was golden. Secondly, I have always tried to use a minimal initialization of the main system, but it has always gotten me into trouble. What is the minimal initialization? Well, without a real cart with immediate, direct virgin access to the hardware, it’s hard to say. All other devices (such as copiers and flash carts) influence the initialization process by running their BIOS or boot code first. I thought I had figured out the minimal answer for what I was doing, without owning a means for such access. However, it turned out I was still wrong. So, I abandoned the minimal idea and did it the right way, as I should have done years ago. Live and learn, right? Now, the splash intros are pristinly done and have been tested on a virgin cart just to be doubly sure. As an added bonus, I made the intros skippable! Now it can be properly preserved SNES software throughout the ages.
Dual Orb 2 saw an update that finally translated the monster weaknesses for the scan spell. That was something that was missed years ago. I never got to that in the last release either because it was too difficult of a fix to do years after the fact. This time I had a small breakthrough deciphering some of my ancient work that allowed me to more easily do it. I also fixed a small ‘blipping’ issue present while the 8×16 was printing. That one had annoyed me for years. It was a crazy minor tile mapping issue that I’m sure nobody ever noticed but me. I also addressed a few minor reported inconsistencies that I’ve collected since the last release. Every so often detail oriented players come along whom pay very close attention and find some new things no one else before them did. That’s a great feat all these years later after many, many people have looked at it! Congrats! The least I can do is address such issues as a reward. :)
Wozz had previously never gotten a follow-up patch. So, now it has received a new patch update that fixes all of the reported issues to date. Nothing major here, just the usual assortment of minor mistranslations, consistency fixes, etc. There was a pesky missed battle string from Vangas that has alluded me for years that I finally got. I had just a single screenshot of evidence someone sent long ago. I was never able to see this string myself nor find it via searches. At long last, I found it! It had some extra data bytes mixed in the string which hid it from all my previous searches. I never searched for the right combination. Could this be the string that would give new meaning to Vangas, Wozz, or even my life? The excitement from my conquest quickly turned to disappointment. The translation of the missed string was simply that of a generic battle cry… Boo.. Hiss… Oh well, at least the project is now at a status of no known issues. Since it seems I continue to work on my projects years and years after the fact, perhaps one day I’ll revoke the promise to myself of never touching the 8×8 again and do something nice for it. Never say never! Ha!
Emerald Dragon just got the splash intro hardware fix. There was nothing else that needed addressing. :)
Most of the past few months for Heracles has been spent continuing on with converting the remaining 100 submenus to 8×8 VWF. I have roughly completed all of them now. I say roughly because a handful of them cannot be finalized due to some serious problems. Basically, the conversion has been impossible on a few of these menus. I have been trying to make the impossible possible by utilizing every trick in the book, but I still need to go back to the drawing board on some of them. The biggest issue in this game is the original NMI routine exceeds all available vblank time in many instances. Actually, I believe the original game only works properly by the skin of its teeth because most of the registers written to (illegally) after vblank is over aren’t immediately visible and/or fixed in subsequent frames (with legal writes). What does this all mean? Well, it means there is absolutely NO time at all for me to load ANY tiles whatsoever, let alone the tiles I need for 8×8 VWF.
In some cases, I could wait for less busy frames. In other cases, I made some hacks to trim the original NMI routine with optimizations and throwing out things that wouldn’t have visible consequences. Even with that, there are parts in battle that run 20 scan lines over allowed vblank time EVERY frame. I have not been able to skin off enough time to get near that. Even for the frames where I have some time, I can’t get enough time to transfer any large amounts, which typically rules out pre-rendering much. These menus have no loading screen between them either, so I can’t load it during black screen or forced blank without visible consequence. These are some difficult situations to work out.
If that wasn’t bad enough, the second major problem is lack of available VRAM for tiles. I’ve even tried the painstaking hacks of rearranging where in VRAM tilemaps and tile data go. However, thanks to the heavy usage of HDMA, the game typically uses TWO tile maps and TWO tile address spaces for EACH background as it changes them mid-frame. There’s just not enough VRAM available when you have to do it like that. Even with some serious new management, the game rarely reloads tile data. It loads a bunch of tiles very early and expects it to be untouched even when not used. So, even if you have gobs of free unused tiles on the current screen, if you use them, when a later screen which needs those tiles comes, they aren’t loaded. What am I supposed to do? I can’t sit there and figure out every tile data load in the game and load it myself when it is needed. That’s just maddening!
Other than these handful of menus from hell which have no solution yet, the game would be once again ready for alpha level testing, which I usually do myself before doing a second round of beta level testing with others. So, if I can get these remaining menus working somehow, we will be ready to move into the testing phase at long last! So, let’s keep hoping I can come up with some kind of solution to these problems…
Big Fat Greek Translation
This has been an exceptional past few months for TransCorp! I’ve accomplished more than I have in a long time. Even though I neglected to make frequent news posts, work has been steadily ongoing the entire time since the last update! The majority of time has been spent on taking Heracles IV to new heights, however I have also spent quite a bit of time cleaning up loose ends that have been hanging around for a few years.
As you can see from the screenshots, things have been progressing very well on Heracles IV. Let’s refresh: All of the dialog work is done and is ready for the testing/revision phase. We were about to go alpha, however I choose to do a monumental 8×8 VWF hack that broke every single menu in the game. So, I’ve been going through and hacking each and every one of them back to working glory! I’ve gone through about 100 so far. It just so happens this is one of the most menu heavy games I’ve ever seen on the SNES. There are still about 100 more to go!
They really are coming out beautifully though. It’s starting to look like a GBA/PSX level game now. Heracles IV is turning out to be my highest quality hacking work yet. As always though, the higher the quality, the larger the time investment. There is definitely been a huge price to pay time wise, and I was having second thoughts at one time. However, now that I have come so far along and it’s looking so great, I can’t imagine it any other way. I’ve gotten most of the main and battle menus all done, so the core game is becoming fully playable again. The remaining menus encompass the monster guide, shops, letters, diaries, and maps.
There have been constant hurdles along the way with VRAM management. This game uses multiple background layers for the menus, sometimes all simultaneously full of text. Text must remain there even if not visible on screen! This is due to the fancy HDMA effects which scroll in and out leaving other menus partially viewable, temporarily hidden, etc. Since the original was tile based, the game often shared tiles amongst layers too. This makes it even more of a hacking nightmare as there are instances where there is VRAM available, but it is inaccessible. It can’t be made accessible without a painstaking hack and relocation of all of the game’s existing loads and maps that used the old area. Ugh! These are the reasons I choose not to do this on my previous translations. It’s very tedious and time consuming. It’s probably not worth it if it can be otherwise done in an acceptable fashion (It can’t for Heracles IV).
It also deserves mention that FlashPV has been working on a nice looking title screen for Heracles IV, which you can see over at ROMhacking.net. We can now rest assured that the translation will have a nice English title screen to compliment the level of the rest of the project. FlasPV is amongst the best in the business when it comes to translated title screens, so I am happy!
I am setting a goal to try and be ready for beta testing by year’s end with Heracles IV. If there are no major life setbacks, I think I can do it. The end may be in sight after all!
Wozz, Emerald Dragon, Dual Orb 2
There will soon be updated releases for all of our existing translations. They were long overdue for a maintenance release to fix some minor lingering reported issues and address compatibility with some flash carts and SNES9x. I got a flashcart of my own which has been a big help. Also, BSNES/higan was fixed to match rather than give different results like it used to. So, I was able to work out some of the mysterious issues that were occurring with the sound driver, black screen, etc. As an added bonus, the intros can now be skipped. It was a bit annoying to not be able to do so previously.
WIP patches are available on the forum for regression testing before an official release is made.
I hadn’t updated on TextAngel in a long time, but that doesn’t mean it hasn’t been being developed. You can read about some of the more recent happenings over at the forum. I am trying to take care of the oldest backlogged TransCorp projects first, so a public release will come along after some other things are completed. In the meantime, it will continue to to be developed.
It seems to be the norm these days that every time I build up substantial momentum, life throws bricks at my head to try and stop me! Not all bricks are bad though. One of them landed me a new job this past summer, in July. It was a good brick for my career, family, and wallet. However, it was a bad brick for ROM hacking! I was kept busy for half a year with increased responsibilities and establishing my worth at my new position. The next brick hit me right in the face and really hurt. In December, a family member went terminally ill and recently passed away. As much time as possible was spent getting the family through it all these past few months. Plenty of other little bricks such as relentless snow, and other unexpected tasks came up along the way, but that’s just life unless you’re in the upper 1%!
Despite all of life’s bricks, I am determined to persevere as I always do! There have still been some interesting progress happenings of interest over the past several months. I’m not even sure if that’s grammatically correct, but I like the sound of it anyway!
Basically, this project was in the alpha stage and close to beta. However, it was deemed necessary go back a few steps and break everything in efforts of getting an 8×8 VWF (proportional font) in for as many menus and screens as possible. The quality of the translation would have really suffered without it. Normally I like to show nearly finished screenshots, but being that this is a large undertaking and things will be broken for awhile, I’ve shown some down and dirty work in progress screens.
As can be seen, much progress has been made. There is still much more to go. The 8×8 VWF conversion is very difficult in this game as the menus can sometimes span all three background layers at once. They utilize numerous HDMA tables, and are extremely cramped for VRAM space thanks to the game utilizing the same regions of VRAM for multiple backgrounds. The only way to make it all work is to go through each and every sub menu and manually address where it is going, and optimized it with the parent menus to fit nicely. The game is set up in such a way that there is simply no easy way to do it.
Work will continue onwards in getting the menus all back up and running with shiny new proportional rendering. There will probably then be a second pass for performance reasons where some things may need to be converted to static rendering. I am trying to set up all screens to use a universal 8×8 rendering engine, which leads me to the next area of progress…
I have been attempting to leverage and salvage my nuVWF project for Heracles IV. I had previously shoved it in the closet for a long while. I have taken this opportunity to redesign the project and make something worthwhile out of it besides a set of reusable routines. You can see an update and some details from the title link above (or simply go to the forums). I don’t know if this project will ever amount to anything worth releasing, but I haven’t given up just yet!