Monday, January 25, 2016

Just For Fun: The Rockbreaker Code

This password works with the original
cartridge and the Virtual Console re-release.
Hello, everyone!  It's been pretty busy at my day job for the past little while, so I figured I'd take a breather today and properly recharge my batteries before I plunge back into my RKS workload tomorrow morning (remember, my weekends are Monday and Tuesday, not the standard Saturday and Sunday).  Since nothing prepares me for working on RKS better than Megaman, I figured I'd dust off my old console and give the black sheep of the original series a go after I-don't-know-how-many years.

Following last week's discussion on password cracking, I noticed that nobody has ever fully deciphered the password scheme for Megaman 7.  Not one to let an interesting challenge slip by, I decided to take a crack at it and see if there was a reason behind the lack of details.  Skip ahead a few hours, and I can confidently say that I've found my answers.  I have to admit, the guys working for Capcom in the mid-90's were brilliant programmers; how the game validates each password would definitely frighten wannabe crackers away.

Mad Grinder, meet the Hyper Rocket Buster.
Of course, it goes without saying that I've completely cracked the code.  After isolating what each individual value does, I've generated some very interesting passwords that significantly change how the game can be played.  I'll be publishing my findings after I've had the chance to properly organize the data, but that won't be for a little while since RKS naturally takes priority.

Still, I've decided to release a single custom password that will allow you to have fun with the game in a way you might not have expected.  I'm tempted to post a bunch of screenshots elaborating on what I mean, but I think it'd be a better idea to preserve the surprise and let you discover the intricacies for yourself.

The above password will start you at the very beginning of the game.  The moment you pause your game, you'll notice that something is a bit different (...well, a lot different, especially on the second page of the Status Subcreen).  Once you finish the first battle with Bass, the game opens up completely.  For better or worse, this password only works with authentic versions of the game (the original cartridge, the Virtual Console re-release, or up-to-speed Super Nintendo emulators); the code will not work on the incomplete port of the game found in the Megaman Anniversary Collection.  Given some of the cuts that were made to that version of the game, it's not really a big loss.

That said, enjoy!

Tuesday, January 19, 2016

RKS Developer Diary #9 - Head's Up!

Hello, everyone!

This time around, we'll be looking at a couple of the visual references in Rosenkreuzstilette.  One of RKS's claims to fame is its many sight gags, which pay homage to a number of old-school classics.  As many of you already know, we're quite particular about styling sight gags just right to subtly reinforce the developer's intended nods.

Let's start by having a look at our favorite fiery redhead, Zorne Zeppelin.  Zorne's fighting style is a direct homage to Hudson's Bomberman series, what with her old-fashioned cross-explosion fragmentation bombs and all.  As much as I hate to admit it, her prosthetic arm is modeled after the character's redesign in Bomberman: Act Zero.  I'd prefer to pretend the game never existed and credit that element of her design to the title character of the second Prince of Persia reboot, but I can't live in denial forever...

Zorne's character design aside, each of the Bomberman visual elements and mechanics in RKS is a reference to Super Bomberman 2 for the Super Nintendo Entertainment System.  For example, once Zorne's vitality reaches 50%, a familiar warning message appears and blocks begin to fill the screen, leaving Spiritia and Zorne with only one minute to finish their fight before both of them are incapacitated -- just like Super Bomberman 2's Sudden Death mode, but with a slightly more forgiving time limit.

Now, we could very well have left the warning message as-is since it was already in English.  Admittedly, many translation outfits chose not to do any more work than they have to.  There's no reason for us to follow their lead, though; we believe anything worth doing is worth doing right.

(...Why do I get the feeling someone is going to take the above statement out-of-context and misinterpret it as a personal attack of some kind...?)

Anyway, taking a cue from Bomberman's 2002 release on the Nintendo GameCube, we've updated the warning text to match the look of its counterpart in Super Bomberman 2 while using the higher-resolution font of Bomberman Generation.  We followed this same train of thought with the Head's Up Display (HUD) for the secret area hidden in Zeppelin Stage IV.  And the results?  Well, they speak for themselves.

Naturally, we followed the same principle with the Super Mario Bros. reference in Schwer-Muta's Stage.  Truth be told, we weren't satisfied with the HUD for this stage in our fan translation and made a point of revisiting it to properly polish it off, redesigning the coins and counters to better fit RKS with the Super Mario universe.  The HUD's palette matches that of the Super Mario All-Stars version of Super Mario Bros., while the coins are modeled after the currency in Super Princess Peach.  It was a bit of a toss-up deciding which font to use for the HUD: we could stick with the classic look that the series has had since Super Mario 64, or we could go with the more modern interface of New Super Mario Bros. U. Ultimately, the decision was a no-brainer -- old-school all the way.

...In case anyone is wondering: yes, there are exactly 100 coins in this room, and collecting all of them does just what you would expect.  So does letting the timer run down to 100 (or letting it expire completely), so don't dawdle!

Well, that's all for today.  Thankfully, my new glasses are ready, so I can resume my usual pace now.  I'm a bit surprised at how much extra programming work is needed to implement each individual subtitle for the voice clips in RKS (though, in all fairness, I shouldn't be).  Because many of the voice clips play randomly, additional programming logic is required to catch which randomly-selected voice clip was chosen and display the corresponding subtitle before returning control to the game.  The extra work in this department is a bit tedious and nowhere near as fun as the graphics work given its repetitive nature, but it's ultimately worth doing.

See you next time!

Wednesday, January 13, 2016

RKS Developer Diary #8 - Psst! What's the password?

This password works properly in
the English version of the game.
Hi, everyone!

Today, we'll be looking at Rosenkreuzstilette's password system.  Before we go over the changes we've made, it only makes sense to take a close look at how RKS's password scheme actually works.

As many of you have already noticed, RKS's password system is modeled after the password system from Megaman 4.  In fact, until version 1.03a of RKS, the password schemes were identical.  In Megaman 4, each password consists of six dots plotted on a six-by-six grid.  Five of these dots each represent two specific items; the position each of these dots is placed in determines whether the player starts with one, both, or neither of the corresponding items.  The position of the sixth dot records the total number of items.  If the password contains less than six dots, if the values of any of the first five dots contradict one another, or if the value of the sixth dot does not match the actual number of items, the password is considered invalid.

Though RKS maps its values a little differently than Megaman 4, every single valid password that can be obtained in Megaman 4 works perfectly in RKS:

Note the placement of each of the
boss characters in both games.
Dot 1 Sichte Active
(Toad Man Active)
Die Geplante Zukunft
(Rain Flush)
Grolla Active
(Bright Man Active)
A2 B1
(Flash Stopper)
C2 A1
Dot 2 Liebea Active
(Drill Man Active)
(Drill Bomb)
Luste Active
(Pharaoh Man Active)
A3 C3
(Pharaoh Shot)
B4 A4
Dot 3 Schwer-Muta Active
(Dust Man Active)
(Dust Crusher)
Freudia Active
(Ring Man Active)
A5 C5
(Ring Boomerang)
B6 B5
Dot 4 Trauare Active
(Skull Man Active)
(Skull Barrier)
Zorne Active
(Dive Man Active)
D1 F2
(Dive Missile)
E1 E2
Dot 5 No Lilli
(No Wire)
Story Mode
D3 F3
Arcade Mode
(No Balloon)
E3 D4

The sixth dot records how many items you have.  To make things easier, I've color-coded the values; add 1 to your count for every dot mapped to a red coordinate, and add 2 to your count for every blue coordinate.  The sixth dot should be mapped to the appropriate position:

These passwords only work with versions
1.03a through 1.06b of Rosenkreuzstilette.
Items Position
0 F5
1 A6
2 B2
3 B3
4 C1
5 C4
6 C6
7 D2
8 E4
9 E6
10 F1

In version 1.03 of Rosenkreuzstilette, [erka:es] tweaked the password scheme a little so that players who had made it to the final stages (but were forced to end their play session prematurely) did not need to replay a quarter of the game just to be able to pick up where they left off.  In order to start players beyond the Stage Select Screen, Isemiya capitalized on the fact that players were guaranteed to have at least 8 items before they could proceed to the castle or palace levels.  Instead of mapping the sixth dot to E4, E6, or F1, players who had completed Zeppelin Stage IV received a new password with the sixth dot mapped to the following coordinates instead:

Items Position
8 D5
9 E5
10 D6

Of course, this password scheme, even in its expanded form, is not without its flaws.  Since Megaman 4 only allowed players to start at the Stage Select Screen, passwords obtained during the game's opening stage are not recognized since they do not contain exactly six dots.  Second, Megaman 4's password scheme uses 31 of the 36 dots to store 31 bits worth of information.  The expanded password scheme adds just one bit of data, but occupies three more dots.  Considering the game has a special value that records whether or not the player has reached the palace levels, this solution leaves plenty of room for improvement.

For the English release of RKS, the password algorithm has been expanded to recognize passwords for the Prologue stage (I won't count that as much of an accomplishment since the solution required very little additional code).  The password scheme has been modified to allow for not just one, but four additional starting locations.  I won't spill the beans on exactly what these starting points are -- many of you will discover them through normal gameplay, and the more ambitious among you can try and reverse-engineer the English password scheme in the same way I reverse-engineered the Japanese one.

Fun fact:  I crack Megaman X passwords in my spare time as a mental exercise, to help me recognize patterns and help improve my programming skills.  Did you know that you can enter a special password to start Megaman X with the Hadouken?  Or that you can skip to any of the X-Hunter Stages in Megaman X2?  How about equipping more than one enhancement chip at a time in Megaman X3?

Well, that's all for today.  My new glasses are still in the shop; as you can imagine, my head is beginning to hurt from the eye strain.  Next time, we'll have a look at a localization decision that I'm particularly proud of.

See you then!

Tuesday, January 5, 2016

Provisional RKS Developer Diary - As blind as a bat....

Happy New Year, everyone!  After a much-needed and well-deserved break, we're ready and willing to dive back into work.  For better or worse, however, fate had something else in mind:

This past week, my glasses quite literally fell apart on me.  My ophthalmologist is booked solid until late February, so I had to do a bit of legwork to find an optometrist that wasn't still on winter break.  If you can believe it, I hadn't realized that I'd been using the same pair of glasses for the past ten years...!

As of today, I have a new prescription and my order for new glasses has been placed and paid for (...for six hundred and thirty Canadian clams, I'd better get as much mileage out of the new one as I did its predecessor).  My new specs should be ready in 5 to 10 business days.

Until then, unfortunately, I'm forced to take it easy for a while.  I have astigmatism and a lazy left eye, so trying to read without glasses strains my eyes to the point of causing headaches.  The MacGuyver solution of attaching the better half of my glasses to my face with an elastic band works in small bursts (and looks absolutely ridiculous), but having the lens that close to my eye causes a different kind of eyestrain and headache.  That naturally means I won't be anywhere near as productive as usual for the next week or two.

Thankfully, our list of remaining tasks is relatively short.  As of this writing, the graphics work for the original RKS is complete.  We still need to implement the translated subtitles and the English script, as well as update the text engine to properly handle whitespace and wordwrapping (the stopgap solution we used for the fan-translation -- dummying out a single font character -- isn't an acceptable solution in a professional release by our standards).  After that, we'll need to update the game's manual with revised installation instructions and an expanded Q&A section.  Since things haven't quite gone according to plan on the voice acting front, the initial release unfortunately will not include English voices.  WOMI wishes for us to use the proceeds from the initial batch of sales to fund the voicework post-release.

As I said before, we're aiming for a Summer 2016 release window, and any addons we release after the fact (the English voicing included) will be free-of-charge (we don't believe in forcing people to pay for content that should have been available at launch).

In any event, I'll try and come up with one or two short Developer Diary entries for you in the interim.  I already have one such topic in mind; if there's anything about the release that you'd like to know about that has already been completed and wouldn't require a lengthy writeup to adequately discuss, feel free to ask away in the comments.

...My temples are not-so-subtly warning me that I've been staring at my laptop screen for too long, so I'll take that as my cue to wrap this up.  Until next time!