If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Mayjinsen 3

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Mayjinsen 3

Also known as: Blitz Shogi Championship 3
Developer: Random House
Publisher: Seta
Platform: Arcade (Aleck64)
Released in JP: April 1999


GraphicsIcon.png This game has unused graphics.
DebugIcon.png This game has debugging material.


Mayjinsen 3 is a short and simple single-player speed shogi arcade title with AI developed by Kazuro Morita of Random House, namesake of the Morita Shogi series, and likely why that code is byte-for-byte identical to Saikyo Habu Shogi and Morita Shogi 64. There are two difficulty levels and two game modes - Academy and Metropolis - with three opponents each.

EEPROM Gamedata

Mayjinsen3 GAMEDATA.png

There is an unused file called "gamedata", similar to the EEPROM statistics pages in other Aleck64 titles. Unlike other debug content, its layout is designed for the 8×8 font (in 8×16 tiles) used in the final release's Test Menu. In this menu, "Metropolis" is called "Cosmopolis", only odd since the cosplay itself remains.

All saved data is viewable from this menu. It breaks down wins, loses, ties, and continues for each round of each path on both difficulties. Play time per credit per coin is also given.

Statistics are read from the copy of EEPROM at 8004A400. A few are peculiar. ACADEMY's play count is stored, but COSMOPOLIS is the total plays minus ACADEMY's plays. Like many arcade games, the total score tacks on two zeroes.

Press A to switch between Normal and Easy modes, B to return to the main runtime, or press the C + D + P1 Start buttons together to reinitialize the EEPROM. The entire EEPROM is cleared, irregardless if it's 4K or 16K.

Unused Game Setting Menu

In-Game Corrected
Mayjinsen3-tsettei-org.jpg Mayjinsen3 setting fix.png

This is one of two green, Motif-style debug menus. Like the other window, it was formatted for a different 8×16 font than what was used in the final game. For illustrative purposes, the screenshot above shows what this menu would display using the earlier font.

Internally named "tsettei", it allows you to set up a custom game (with several caveats). Handicaps, time, and multiplayer options are available. It appears to be a repurposing of a play record save menu. Unused options include date input, short and long string entry (the interface works but isn't on screen), 3-digit move input, and numerical lists with and without suffixes. The window code itself is an extension of the N64 sprite library and not shared with the other two N64 titles.

Scrolling Help Message

Scrolling help text should be printed at the bottom of the screen, moving at an unreadable rate. Each message replaces the first depending on context. An allocation is made after finding the longest of the string lengths from a list. It isn't mapped as a window element; it uses the same printer as TEST MODE.

The main window is 256×240. When created, the message is placed 48 pixels up, at 192. However, when the message is scrolled and displayed, the y position is doubled to 384, clipping the string off. Typically SeTa games have 640×480 windows, somebody clearly forgot to update the remaining code.

There are two messages:

J) 設定を変更したい箇所にカーソルを合わせてAボタンを押してください。「対局開始」で対局を開始します。「中止」で設定を中止します。
E) Hover your cursor where you want to change a setting and press the A Button.  "Start Game" starts play, "Cancel" cancels setup.
  
J) 十字ボタンの上下で選択してAボタンを押してください。Bボタンでキャンセルします。
E) Select with up & down on the + pad and press the A button to confirm.  Press the B Button to cancel.

User Interface

The top-most box selects the board & piece set. The three boards correspond to the three rounds in a normal game.

The left and right columns set the players; by default it's Black, then White. From top to bottom, the fields are "対局者/Player", "手合割/Handicap", "持時間/Total Time", and "秒読み/Countdown" (turn time).

Options for "コンピュータレベル/COM Player Levels" 1-6 do not display the halfwidth moji correctly. The ASCII portion (first 0xA00) was replaced with 8×8 tiles when the EEPROM details and test menus were revamped, overwriting the Japanese with a second copy of capitals. Replacing this with the 8×14 images from Saikyo Habu Shogi or Morita Shogi 64 displays the text properly, though causes layout issues on the EEPROM and test menu.

Although 2 player is technically an option, only input from controller 1 is read. Players will have to take turns using the controls. Despite the order, the CPU will always be on the top screen.

Handicaps are "平手/Even", "香落/No Lance", "角落/No Bishop", "飛落/No Rook", "飛香落/No Rook or Lance", "二枚落/2 Pieces", "四枚落/4 Pieces", "六枚落/6 Pieces", and "八枚落/8 Pieces". Handicaps are only applied to the top field (the CPU), irregardless who they're set for.

What's interesting is the handicap positions for bottom field are present in memory; the table simply doesn't provide for assigning them.

Your total play time can range 50 to 5 minutes, 10 seconds, "設定通り/Use (DIPSW) Setting", "無制限/Unlimited", or "なし/None" - as in no time at all, leading to an automatic loss!

Turn time countdowns can range from 60 to 5 seconds or be set to "切れ負け/Loss Due to Time Exceeded" (aka no turn limit).

The bottom-most buttons are "対局開始/Start Game" and "中止/Cancel". Starting returns 1, canceling returns 2. There is no known manager. However, the settings themselves are stored to registers so simply calling the menu before a normal game is sufficient to play a custom match.

Unused Main Menu

Mayjinsen3-main.png

Internally called "main menu" (メインメニュー), this acted as a landing pad before running the game proper. It's displayed in a green Motif-style window like the other debug window. Element selection and movement is based on its index in this list, counting labels, etc. Some elements are dynamic; widths of drop-down boxes are calculated from the widest string length unless overridden. Its default values - which they didn't use - expect "hi-res" 640×480 resolution. Thanks to dynamic element generation, it still displays as expected at 320×240.

Returned values when a selection is made corresponds to menu order: 1 for "対局/Play Game", 2 for "女の子テスト256色/Gal Test 256 Colors", 3 for "女の子テスト32000色/Gal Test 32000 Colors", "テストモード/Test Mode" is 4, and "オープニング/Opening" is 5. However, menu modules can't directly load other code; all use the same memory range. The runtime calls the menu, and the menu returns a value handled by the runtime to swap menus or trigger other effects. Without its attached code to manage it, this menu loses its functionality. Selecting any option falls back to the caller.

The options themselves are easy to infer.

  • "対局/Play Game" likely directed to either the "tsettei" menu above or directly to gameplay.
  • "女の子テスト256色/Gal Test 256 Colors" tests using ci8 indexed images.
  • "女の子テスト32000色/Gal Test 32000 Colors" is similar, using 16bit color images.
  • "テストモード/Test Mode" jumps to the TEST MODE service menu.
  • "オープニング/Opening" is the name of the Aleck title card, starting the attract sequence.

Unused Graphics

Mayjinsen3-gclear.png

A 320×240 "GAME CLEAR" graphic goes unused. It has a white, not alpha, background so it would have been displayed on its own, not over or alongside other images.

Mayjinsen3-pieces1.png

There is an unused set of non-rounded, woodtone shogi tiles originally attached to the first board layout at 0x424624/0x424628. The size here was never updated. Instead, they're replaced with a call to the second set of tiles - themselves nearly identical to the third, differing only in the stroke at the base of the jeweled general being one pixel higher and less distinct. This causes a minor overallocation as a result.

Drop Record Bug

Drop symbols should be printed to the screen but aren't.

The main shogi runtime is effectively no different from its more complicated cousins. It generates a full play record from a 2-byte from/to encoded value and move number and prints it as a series of strings in memory. This record is never shown to the user but can be printed externally to a debugger.

Mayjinsen 3's user interface parses the strings generated in this record using simple string comparisons to generate the much simpler "last play record" fields at the top and bottom of the screen. It has no access to the moves themselves.

The drop bug was in the main runtime. It only adds the drop symbol to the play record string when the count of tabled pieces is greater than one, but that counter only increments when a piece wasn't dropped. The reparser picks out the symbol without any coercion, but only when it was included in the lower-level, more complicated string.