Double Time? No, Triple Time!
Shortly after the last update, I was able to get back to major action! I made sure I was working double time to make up for last quarter’s lack of progress. No! That still wasn’t good enough! I had to make the push of a lifetime to make sure Heracles IV was going to get finished. I had to work triple time! The result was one of the most productive quarters in the past 10 years for TransCorp! Where do I even start? I’ll start with the punchline that all hacking is now complete and all currently known issues have been resolved!
I had a big breakthrough with the many NMI overrun problems that plagued many menus. Recall that the original game already used 110% (it overran already at times) of vblank time in many instances. This meant I could transfer NOTHING at all, let alone what I needed to to make the menus work. It looked like an impossible feat to gain the necessary time back. I’ve spent the entire project with the mantra of making the impossible possible though. Persistence pays off and nothing is impossible. I forged on and continued to study the NMI routine for some way to cut it down so I would have some time to at least do SOMETHING! The solution finally came to me when I studied the usage of the CGRAM and OAM refresh DMA transfers that occurred each frame. With some very careful new NMI management, I could defer these transfers on certain key frames without visibly upsetting the on-screen graphics. Next, I cracked how the game was triggering refreshes of tiles and tilemaps in VRAM for loading areas, overworld etc. Coupled together, I was ultimately able to better distribute tasks across different frames and buy a little bit of time on some lesser action frames. I seized those frames to transfer a few bytes at time to make the menus work! It barely works, but it works nonetheless!
It was especially difficult for two reasons. First, the code needed to manage NMI cuts into the very cycles you’re trying to save by managing it. So, you have to strike a ratio where the cycles you’re saving outweigh the management code enough. Secondly, it was very difficult to decide how and when was safe to defer CGRAM, OAM, tile data, and tilemap refreshes. The NMI routine is called millions of times. It’s called on every frame of every screen for the entire game! Thankfully I was able to leverage some key memory locations to toggle this management when needed with limited side effects. This did not come without a price however. Some things are slower and some compromises were made. I have minimized the observable impact as best as possible. With the conclusion of the above issue, I was able to then finish all 200+ submenus and convert them to use the new 8×8 VWF engine!
On the translation front, Kay spent much time revising and formatting the letters, monster guide, and Plato’s journal. We came up with some great ideas to better fit English text onto those little book pages without it looking too cramped. We did have to do some cutting here to make it all work, but Kay did a great job at cutting words rather than content or meaning. I was closely involved in this process and have new found respect for how difficult it can be to do that effectively. It’s much easier to take the cheap way out and just cut some content to make it fit. I’m sure you will all appreciate the passion and effort Kay has put into his work to not allow that to happen. We spent a great deal of time going through all of the 8×8 text and finalizing items, monsters, equipment, battle text, places, and more.
Now that everything works and the game is fully playable again, we need to continue on with some polishing, editing, and revision. We are basically having a mini in-house beta test between myself and Kay. I do not expect any further major issues. After this phase of polishing, the project should be ready to assemble a team for full beta testing! These are good times folks! It’s all downhill coasting to the finish line from here! I’m anxious to rush the process, but I know we need to have due diligence and proper procedure to make sure the release does itself justice and properly reflects the passion and effort that has gone into it!
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.