Over the past few months, a friend and I have been working on translating Majaventure, a mahjong adventure game for the Famicom, into English. We’ve made great progress recently, and I feel like the game is in a state where we can release the first preview patch. There are 10 regions you play through in the game, and so far the first region is completely translated. All enemy names, dialog, menus, and gameplay are translated and functional.
Majaventure was originally developed as a doujin game for the NEC PC-8801 and released in 1986. There were a handful of sequels and spin-off games, one of which being Majaventure: Mahjong Senki, or Majaventure: Record of Mahjong War, released for the Famicom in 1990. In this game, the kingdom of Oniogard is attacked by Mahlord, whose army conquers Oniogard with the weapon of mahjong. The king of Oniogard sends his men out to find someone skilled enough at mahjong to defeat Mahlord. That hero is you.
You start off at the castle and explore a maze-like overworld. Sections of the map are blocked off by gates that must be opened with keys obtained by defeating certain enemies at areas marked “Let’s雀”. Upon returning to the castle, the princess will refill your HP. Eventually, you’ll encounter that region’s lord. Once you’ve defeated them, you can move on to the next region.
I mentioned the princess refills your HP. Instead of starting each mahjong match with 25,000 or 30,000 points, your point bank and HP are one and the same. If your opponent wins with tanyao, you’ll take about 1,000 points of damage. Similarly, if you riichi, you’re also spending 1,000 of your own HP to make that riichi happen. When you win a hand, those points do not refill your HP, so the risk vs reward plays out a bit differently here because you can’t always return to the castle to get healed. As you and your enemies get stronger, your ATK and DEF will grow stronger. ATK deals additional damage after each winning hand, and DEF prevents damage from making its way to you (or your enemy). Eventually, your abilities will be augmented with items you purchase and equip, as well as special abilities you can use to give yourself an advantage during the match.
Enemies in this game all have their own quirks to them that you’ll need to learn in order to defeat them without too much hassle. I won’t go too in-depth about it in this post, but as an example, Enemy A has a weakness for dealing into ippatsu.
Retro mahjong games tend to use controls that, by modern standards, feel a bit unorthodox. Thankfully the controls in Majaventure are largely intuitive, but there are a few places you might get tripped up.
First, at the title screen. you use [select] to switch between ‘START’ and ‘CONTINUE’, and [start] to confirm your choice. If you choose ‘START’, the story intro starts playing. Press [A] to advance through the pages of text, and [start] to skip the intro and head straight to the overworld. From there, you can enter each building by either walking on top of it, or by walking on top of it and pressing [A] (different buildings behave differently). In the overworld as well as inside the castles and gates, [start] will pause the game, and there is no indication that the game is paused other than the music stopping. If your controller suddenly stops doing anything, try hitting [start] to unpause the game. While you’re in the overworld, pressing [select] will open up your stats and inventory screen. This is a handy screen to check before starting a match so you know if you need to head back to the castle to be healed or not.
Once you’ve started a match, use [left] and [right] on the D-pad to select a tile, and [A] to discard it. After the enemy discards a tile, you can press [A] to draw your tile (yes, you must draw every tile manually), or [B] to open the call menu. The game will not allow you to make illegal calls or riichi without being in tenpai, so no need to worry about chombo here. The last thing you’ll want to be aware of is that, when calling chii, if there’s more than one possible group of tiles that can be used as part of your chii, you’ll see these dancing balls appear on the tiles. This is showing which tiles you can call. If you hit [A] while those tiles are highlighted, they’ll be removed from your hand and placed face-up per usual. However, getting the timing down is difficult and error-prone. A better way is to use [left] and [right] to highlight the tile in the group you want to call. The balls should stop dancing around if there’s no ambiguity about which group you want to call.
Given how compact Japanese text is compared to English, quite a few parts of the game had to be changed to accommodate the updated text. In order to fit proper yaku names in the available space, compressed characters were created for common character sequences. This also enabled us to fit translated names into the call menus without having to rewrite the game’s instructions to draw a wider menu.
The location and orientation of text were also changed to accommodate for wider, horizontal text. “ドラ” and “ウラドラ” were moved and the instructions re-written to allow for longer text. You might also notice that the placement of the player name, enemy name, and corresponding HP have been moved. The enemy names, along with other data about the enemy, are stored in 19-byte strings, of which only 8 are made available for the name. For names like せんとういんA, this isn’t a big deal because it can be easily translated as Enemy A, but other names like といといまじん which translate to something like Toi-Toi Devil blow way past that limit. By moving the name and HP locations I’m preparing to have wider names (I think we’ve settled on 12 characters), but because so many subroutines in the game access these tables, it’s going to take quite a while to update everything so it doesn’t immediately crash the game.
Once you leave the first region, you’ll encounter a combination of translated and untranslated text. Much of this has already been translated, but not yet placed into the game ROM. English text takes up not only more space on the screen but more space in the game ROM, so as we’re adding text to the game, we’re also having to move around the text and its associated metadata, as well as update game code that’s expecting things to be in specific locations. All that is to say, while the game is technically fully playable, you’ll quickly encounter a land of garbage text where almost nothing is coherent. This patch of the game is meant to be a milestone for us working on the project, as well as a sort of “minimum viable product” that will allow players to experience the game, to some extent, without the language barrier. As we progress with the project, additional progress should get faster and faster as a majority of the text will already be translated as we go, and more of the work will become polishing text and readability.
If you would like to download the patch, it’s available below. If you have any questions, comments, or if you find any bugs in the game, please comment below or message me on Twitter.