Monday, February 29, 2016

RKS Developer Diary #10 - I Understood That Reference

Hello, everyone!

I've been wanting to make this post for quite some time.  Thanks to my day job, changes around the homestead, a series of untimely developments, and a bad case of insomnia, I had little choice but to prioritize the urgent over the important for much longer than I'd like.  Now that the interruptions have been taken care of (and my sleep patterns seems to have returned to normal), I'm proud to showcase what may be the most significant improvement to the Rosenkreuzstilette localization since our original fan translation: our real-time subtitle feature.

The first time you boot up the new version of Rosenkreuzstilette, English subtitles will be enabled by default.  If you would like to disable subtitles at any time for any reason, just tap the F2 key to toggle them on or off.  The game will immediately save your choice to config.dat, so if you're a purist who'd rather not clutter up the screen, you don't need to worry about disabling subtitles every single time you launch the game.  Originally, F2 toggled whether Vertical Synchronization (V-Synch) was enabled or not.  In version 1.06a, [erka:es] decided to disable the hotkey since activating V-Synch required a restart, rendering a real-time V-Synch toggle effectively useless.  We decided to put the disabled hotkey code to good use.

As tempting as it would be to go over every character's dialogue and point out all of the references present in their voice clips, I have to save something for the full release, don't I?  So, rather than doing that, I figured I'd go over some of our localization choices with a bit of trivia thrown in.  As usual, feel free to leave any feedback in the comments:

Spiritia Rosenberg
"I'm not done yet!"
「まだいけるっ!」

(Zero, Megaman X4 / X, Megaman X8 / Vile, Maverick Hunter X)

Tia cries this out the moment her vitality falls below 50%.  Those of you who have played through Megaman X4 in the original Japanese might recognize this cry as the same one Zero uses in the same circumstances.  Interestingly enough, variants of this line are used throughout the series - by Zero, X, and even Vile.  We decided to use X's rendition from X8 for Tia, and save Zero's more iconic X4 rendition ("It's not over yet!") for Freudia in Freudenstachel.

Freudia Neuwahl
"You could use a nice, cold nap."
「氷のベッドで眠らせてあげるわ」

(Frost Walrus, Megaman X4)

One of Freu's one-liners is a nod to the boast Frost Walrus uses in the Japanese version of Megaman X4.  Unfortunately, Capcom USA decided to cut the voices for the eight boss Mavericks instead of dubbing them into English, meaning there is no official English rendition of this line we can reference.  Literally, the two say variants of, "I'll lay you to rest on a bed of ice"; we revised the line to sound more like the subtle threat it's supposed to be (and downplay the cheese in the "ice" pun).

Bist du bereit?
Zorne Zeppelin
"I'm not gonna hold back!"
「容赦はしないわよ!」

(Colonel, Megaman X4)

If you can believe it, this Zorne line is actually a reference to the Japanese version of Colonel's "I'll show you no mercy! Now, get ready!". Unfortunately, the British mannerisms Capcom decided to give his character don't flow well from the fiery redhead, so, unfortunately, the reference just had to go.  We rephrased the line to sound like something Zorne would actually say.




Nothing personal, but she's got orders.
Trauare Wrede
"Maybe a jellyfish would put up a better fight?"
「クラゲのほうがまだ手ごたえがありそうね」

(Jet Stingray, Megaman X4)

If you choose to fight Trau before defeating Zorne, Trau uses the exact same boast as Megaman X4's Jet Stingray, which was also left on the cutting room floor by Capcom USA's decision to remove the boss Maverick voices.  Jellyfish are quite lethal because of the poisonous barbs that cover their bodies; even a dead jellyfish can kill you if you touch their corpse.  There are two possible interpretations to the Japanese in this line: Trau and Stingray may be implying that even the dead stand a better chance against them than you do.  They might also be insinuating something to the effect of, "it looks like this jellyfish still has some life in her".  Which of these interpretation do you prefer?

Luste Teuber
"Let's play Tag! Tia, you're it!"
「ヒーローごっこしよ! ティアが悪者ね!」

(Split Mushroom, Megaman X4)

Yep, another deleted X4 reference.  "Hero-gokko" is actually a play on "Oni-gokko", the Japanese name for the game of Tag.  Japanese children love giving traditional games new names when they've implemented rules of their own (see: "Old Man" in Higurashi no Naku Koro ni, a variant of Old Maid that ultimately plays a strong narrative role in the story).  Luste refers to Tia by name, whereas Split Mushroom uses "kimi" ("you") to refer to both X and Zero with the same line.  Unlike Mushroom, Luste's AI actively seems to be playing Tag with Tia, rushing to the other side of the room whenever Tia gets close.  This line is a perfect example of why a literal translation isn't necessarily an accurate one.


The typesetting has not yet been finalized;
we're aware that Sichte's lines are difficult to read.
Sichte Meister
"For the honor of RKS, I shall strike you down!"
「エルカーエスの誇りにかけて君を倒す!」

(Jet Stingray, Megaman X4)

More X4 references?  It looks like Isemiya and WOMI love the game just as much as I do.  Sichte's line is a variation of Stingray's, replacing his reference to the Repliforce army with RKS.  We're still on the fence as to whether we should preserve the (officially-untranslated) reference as-is or if we should go for a slightly more fluid, "In the name of RKS, I shall carry out your sentence" (remember, Tia has been charged with treason -- a crime punishable by death -- and Sichte is her commanding officer).  Your thoughts?

That's "Freeze!" in German.
"Time, be still!"
「時よ止まれ!」

(Dio Brando, Jojo's Bizarre Adventure / Zephyr, Castlevania: Portrait of Ruin)

Dio is a fairly popular character among Japanese game developers, and many of their original characters are inspired at least in part by the deranged vampire.  His iconic Stand, "The World", allows him to manipulate time itself, and the words he shouts when he does so are instantly recognizable, even to those who aren't Jojo fans.  Project Touhou's Sakuya Izayoi, Castlevania's Zephyr, and RKS's Sichte Meister are just a few examples of the characters he has inspired.  Given how many different official renditions of "toki yo tomare!" there are to choose between, we decided to go with the one that would resonate best with RKS's target audience.  Given no less than five different characters in the Castlevania mythos use Dio's line (Richter Belmont, Soma Cruz, Julius Belmont, Jonathan Morris, and Zephyr), it only made sense to follow their lead and render the line as, "Time, be still!".


Liebea Palesch
"Stay with me, Brother...!"
「お兄様、私を守って!」

(Iris, Megaman X4)

Yet another Megaman X4 reference.  On one hand, the major characters of X4 all have their dialogue dubbed in English.  On the other hand, their lines are somewhat over-localized: "Stay with me, Brother...!" doesn't mean the same thing as "Brother, protect me...!"...  Given Liebea is thoroughly an embodiment of Iris's character -- a pacifist caught in the crossfire who just wants the ones she loves to stay safe -- we decided to go with the official localization, even if it's not 100% accurate.


Raimund Seyfarth
"That was a magnificent battle...!"
「良い戦いだったぞ」

(Armored Armadillo, Maverick Hunter X)

Believe it or not, one of Seyfarth's victory cries is a reference to the Maverick Hunter X incarnation of Armored Armadillo.  In Japanese, Seyfarth and Armadillo both follow the creed of the samurai.  Unfortunately, this element of Armadillo's personality was lost in translation; in English, he comes across as stoic and stubborn instead of honor-bound and dutiful.  In Maverick Hunter X, "Tatakai datta..." was rendered as, "It was a good fight..."; we revised the line to fit better with Seyfarth's battle-hungry personality.

I'm tempted to keep going and shine a spotlight on the remaining characters, but this post is already long enough as-is, and I need to make sure that at least a few of the references can still surprise you in the final release.  We're regularly submitting debug builds to the publisher, so it's only a matter of time before the game is ready for release.

Well, that's all for now.  See you next time!

Thursday, February 18, 2016

Help Wanted: The Hyper Dragon Chip Challenge

Megaman 7 - Versus Mode
Hold L & R and press Start
Hello, everyone.  Sorry to keep you waiting!

There are still a few things on the ol' To-Do List that need taking care of before I can roll out the next RKS Developer Diary.  Assuming everything goes according to plan in the next few days, the next entry should be ready sometime this weekend.  As I've hinted to before, we'll be taking a closer look at one of the new features that we had to code from scratch, as well as a handful of related homages that no one had the means to appreciate in our original fan translation.  You'll understand what I mean by that once the next post is ready.

In the meantime, I'd like to ask a few of you to lend me a hand with something I've been tinkering with on the side:

As I mentioned in my last post, I enjoy cracking the password schemes of my favorite games both as a mental exercise and as a way of figuring out the intricacies of how the games work.  Sundays at my day job have been rather slow as of late, so I've often found myself whipping out my notes and trying to figure out exactly how the password schemes for all four Megaman titles on the Super Nintendo function -- with fascinating results.  Well, after a few weeks of waiting around for customers to serve, I'm proud to say that I've completely cracked the code schemes for all four games.  I've also written password generators for all four games in Microsoft Excel, so I'm now able to generate passwords for any scenario I could possibly want (provided the relevant variables I want to manipulate are actually stored in the password).

Megaman X - Hadouken
Hold L, R, X & Down and press Start
Interestingly enough, I'm pleased to report that the long-held belief that the "100% completion" bonuses of Megaman X through X3 (the Hadouken, the Shoryuken, and the Hyper Chip - a.k.a the Gold Armor) weren't being saved in your passwords is decidely not true.  Don't believe me?  Boot up Megaman X, enter the password 3673-2177-2487, hold the L, R, X and Down buttons, then press Start to confirm the code.  Enter any stage, then immediately press Down, Down-Forward, Forward, Y to fire a Hadouken without needing to return to the cliff in Armored Armadillo's Stage.  Ah, the convenience!

Suffice to say, I've isolated the exact variables that determine whether or not you resume your game with the completion bonus equipped.  I've also determined that these variables are automatically reset if a specific combination of buttons is not held down when the Start button is pressed to confirm the password entry.  Megaman 7 confirms this theory since its completion bonus, Versus Mode, is unlocked in the exact same manner -- holding down the L and R buttons before confirming the password entry with Start.

Megaman X2 - Shoryuken
Starts at X-Hunter Stage 2
Hold Down, Left, R & B and press Y
As tempting as would be to spend my free time uncovering some brand-new secrets in two of my favorite games, I have more important matters to attend to at the moment that must take priority (namely, finishing the remaining work on RKS).  So, while I'm busy working on RKS, I'd like to release a pair of passwords and ask the RKS community to help figure out the secret in my stead.

For the emulation enthusiasts among you, what I'm asking should be relatively simple (if time-consuming).  Launch your favorite Super Nintendo emulator (preferably SNES9x, Higan, RetroArch, or ZSNES), boot up either Megaman X2 or X3, and enter the corresponding password pictured in this post.  Before pressing Start to confirm the password and start your game, record a save-state.  Then, hold down a button or two (or three, or four... could be as many as six buttons - I don't know...) and press Start.  The X2 password will start you at Serges' Stage  (X-Hunter Stage 2),  while the X3 code will start you at Doppler Town Stage 1 with Bit, Byte, and Vile alive and Zero's Z-Saber equipped (remember: to get the Z-Saber, you need fight Mosquitus as Zero, which is impossible to do when while Vile is still alive ^_^).  In either case, check to see if the completion bonus is equipped (in X2's case, press Forward, Down, Down-Forward, Y or Back, Down, Forward, Y to execute a Shoryuken; in X3's, whether X's armor is gold instead of blue should be obvious).  If it didn't work, reload your save-state and try again with a different button combination, recording which ones worked and which ones didn't.

Megaman X3 - Hyper Chip
Vile rematch with the Z-Saber
No code available...
I have no way of knowing how little or how much time the process of pinpointing the secret button combination might take since I have no idea how complex the combinations might be.  However, we can safely exclude the B and Y buttons from among the possibilities since they have other functions on the password scheme (Y increases any given digit's value in both games, and B decreases the digit's value in X2 and returns to the Title Screen in X3).  So, that leaves any combination among the four directional buttons (Up, Down, Left, and Right), L, R, X, A, and Select.  If you don't have a gamepad, check if your emulator allows you to map custom commands to a single button (I know for sure that ZSNES supports this feature; I used to map the Hadouken / Shoryuken to my Dual Shock 2's R2 button when playing X / X2).

By my calculations, the odds of any particular button combination being the correct one is 255 to one, so only take part in this task if you have plenty of free time to kill.  That said, thank you to everyone who is interested in helping out.  Here's hoping we're able to find the final piece in this pair of 20+ year old mysteries.

That said, I wish you luck!  See you later!

Update: Justin3009 from Romhacking.net has figured out the codes!  Good work, Justin!

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
Grollschwert
(Flash Stopper)
C2 A1
Dot 2 Liebea Active
(Drill Man Active)
Liebessturm
(Drill Bomb)
Luste Active
(Pharaoh Man Active)
A3 C3
Lustatem
(Pharaoh Shot)
B4 A4
Dot 3 Schwer-Muta Active
(Dust Man Active)
Geisterwand
(Dust Crusher)
Freudia Active
(Ring Man Active)
A5 C5
Freudenstachel
(Ring Boomerang)
B6 B5
Dot 4 Trauare Active
(Skull Man Active)
Klageharnisch
(Skull Barrier)
Zorne Active
(Dive Man Active)
D1 F2
Zornesbombe
(Dive Missile)
E1 E2
Dot 5 No Lilli
(No Wire)
Lilli
(Wire)
Story Mode
(Balloon)
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!