the cutting room mirror

Mario Party 10

This article has a talk page!
view on tcrf.net

Developer Leftovers#

To do:
Sort and document their functionality better.

A portion of developer files were leftover.

Sound Source#

Source for the 10STARS_SOUND_XX (XX is region dependent) sound archives as SDK projects and map HTML files are present in sound/common, same for the 10STARS_SOUND_LOC / 10STARS_SOUND_xx_XX (region dependent) sound archive in content/sound/Default sound/xx_XX and content/sound/source has a SDK sound preset file built from the NW4F sound SDK, as well as a lot of setting preset files also in sound/source/settingpreset.

Download Mario Party 10 Source Files in Sound directory

File: MP10_SourceFilesInSoundDirectory.zip (874 KB) (info)

Log Files#

There's a log file in some of the directories in common appearing once, it is named XXX_fileaccsess.log where XXX is dependent on the scene name, it lists files in specific folders relating to the scene. They are made by common\ch_base\logmake.pl, a Perl script, the typo in the file name oddly isn't fixed and also makes the log.lst file.

#!/usr/bin/perl

use File::Find;

open(LOGLST, "> log.lst");



print LOGLST "PACK_DIR = ch_base/\n\n";
print LOGLST "LOG_FILE =";

#----------------------------------------
# PC
#----------------------------------------
opendir(DIR, "pc");
foreach(readdir(DIR))
{
    if($_ eq '.' || $_ eq '..'){ next; }    # '.' と '..' は除外.
    if(-f "pc/$_"){ next; } # ファイルは除外.
    
    $aa = ("pc/Scene" . $_ . "_fileaccsess.log");   # ログファイル名を生成.
    print "#---- $aa\n";
    print LOGLST " \\\n\t$aa";
    
    @array = ();
    find(\&sub_func, "pc/$_");  # ファイルリストを取得.
    
    $pc = substr($_, 0, 4); # 'pc??' を取得.
    
    open(LOG, ">", $aa);
    foreach(@array)
    {
        $bb = $_;
        if($bb =~ /mot/){
            open(LST, "pcmot.lst"); # モーションリストを取得.
            while(<LST>){
                chomp($_);  # 改行を削除.
                $mm = ($pc . $_ . "."); # 'pc??_' + 'pcmot.lst' + '.'.
                if($bb =~ $mm){
                    print "$bb\n";
                    print LOG "$bb\tcommon/ch_base/$bb\n";
                    last;
                }
            }
            close(LST);
            next;
        }
        if($bb =~ /.bnfm/){
            print "$bb\n";
            print LOG "$bb\tcommon/ch_base/$bb\n";
        }
        if($bb =~ /.mcf/){
            print "$bb\n";
            print LOG "$bb\tcommon/ch_base/$bb\n";
        }
        if($bb =~ /.gtx/){
            print "$bb\n";
            print LOG "$bb\tcommon/ch_base/$bb\n";
        }
        if($bb =~ /.mphy/){
            print "$bb\n";
            print LOG "$bb\tcommon/ch_base/$bb\n";
        }
    }
    close(LOG);
}
closedir(DIR);

#----------------------------------------
# NPC
#----------------------------------------
opendir(DIR, "npc");
foreach(readdir(DIR))
{
    if($_ eq '.' || $_ eq '..'){ next; }    # '.' と '..' は除外.
    if(-f "npc/$_"){ next; }    # ファイルは除外.
    
    $aa = ("npc/Scene" . $_ . "_fileaccsess.log");  # ログファイル名を生成.
    print "#---- $aa\n";
    print LOGLST " \\\n\t$aa";
    
    open(LOG, ">", $aa);
    print "$_\n";
    print LOG "[common/ch_base/npc/$_]\n";
    print LOG "npc/$_\n";
    close(LOG);
}
closedir(DIR);

#----------------------------------------
# OBJECT
#----------------------------------------
opendir(DIR, "object");
foreach(readdir(DIR))
{
    if($_ eq '.' || $_ eq '..'){ next; }    # '.' と '..' は除外.
    if(-f "object/$_"){ next; } # ファイルは除外.
    
    $aa = ("object/Scene" . $_ . "_fileaccsess.log");   # ログファイル名を生成.
    print "#---- $aa\n";
    print LOGLST " \\\n\t$aa";
    
    open(LOG, ">", $aa);
    print "$_\n";
    print LOG "[common/ch_base/object/$_]\n";
    print LOG "object/$_\n";
    close(LOG);
}
closedir(DIR);

print LOGLST "\n";
close(LOGLST);

#----------------------------------------
#
#----------------------------------------
sub sub_func{
    push(@array, $File::Find::name);
}

Leftover Build Strings#

To do:
Document more development-related strings in .rpl files.

In most .rpl files located in code/, build paths for the RPL can be found. For instance, in menu.rpl the following strings exist:

H:\project\tenst_debug\src\rpls\menu\.bin\Final\menu.rpl
BUILD_TYPE
NDEBUG

In boot.rpl:

H:\\project\\tenst_debug\\src\\rpls\\boot\\.bin\\Final\\boot.rpl
BUILD_TYPE
NDEBUG

And so on, most (if not all) of these files seem to contain strings like this.

Font Files#

The common/font directory has two font files, uncompiled.

Debug Mode#

A debug XML labeled "TenstGameList.xml" can be found in content/assets/xml/TenstGameList.xml It is written in Japanese but translated below map names and minigame names are relative to the Japanese titles.

<GameList>
<!--  Game List
Please edit this file using a text editor. 
Valid Tags and Attributes:
## Group: An RPL Group
### Attributes
* name: The name of the group. 
* color: Color setting. Specify a keyword. Keywords are defined within the 'color' tags in the TenstOptionList. 
* categ: Specifies the category name as a string. Optional; may be omitted. Do not specify this attribute for Groups intended solely for testing purposes.
** "mg": Mini-game
** "mr": Main Rules
** "sys": System
### Content (Tag Body)
List the RPL entries using 'Item' tags. 
### Valid Child Tags
* Item

## Item: RPL Name and Display Name. Must be a child element of a 'Group' tag. 
### Attributes
* rpl: The name of the RPL file (without the file extension). 
* dbparam: (Optional) The name of the debug parameter definition file (including the file extension). 
* usedbparam: (Optional) Set to 'false' to hide the debug parameter input screen. Default = true. 
### Content (Tag Body)
The display name. Insert the newline character '\n' to create a line break. (Two lines or fewer recommended.)
### Valid Child Tags
* None.
--> -->
<!--  ****************************************************************  -->
<Group name="Menu & System" categ="sys">
<Item rpl="menu" dbparam="menu_dbparam.xml"> menu : Main Menu</Item>
<Item rpl="opt000" scene="SceneOpt000" dbparam="opt000_dbparam.xml"> opt000 : Extras</Item>
<Item rpl="opt006" scene="SceneOpt006" dbparam="opt006_dbparam.xml"> opt006 : Staff Credits</Item>
<Item rpl="nex111" scene="SceneNEX111"> nex111 : Save Parameter Settings</Item>
</Group>
<!--  ****************************************************************  -->
<!--  ****************************************************************  -->
<Group name="Boards" color="mr" categ="mr">
<Item rpl="bd001" scene="SceneBD001" dbparam="bd001_dbparam.xml"> bd001 : Excitement Park</Item>
<Item rpl="bd002" scene="SceneBD002" dbparam="bd002_dbparam.xml"> bd002 : Suspense Woods</Item>
<Item rpl="bd003" scene="SceneBD003" dbparam="bd003_dbparam.xml"> bd003 : Heart-Pounding Ocean</Item>
<Item rpl="bd004" scene="SceneBD004" dbparam="bd004_dbparam.xml"> bd004 : High-Spirits Airplane</Item>
<Item rpl="bd005" scene="SceneBD005" dbparam="bd005_dbparam.xml"> bd005 : Shaky Castle</Item>
<Item rpl="sbd001" scene="SceneSbd001" dbparam="sbd001_dbparam.xml"> sbd001 : amiibo Board Game</Item>
</Group>
<!--  ****************************************************************  -->
<!--  ****************************************************************  -->
<Group name="4-Player Minigames A" color="mg" categ="mg">
<Item rpl="mg0401" scene="SceneMg0401" dbparam="mg0401_dbparam.xml"> mg0401 : Magma Survival</Item>
<Item rpl="mg0402" scene="SceneMg0402" dbparam="mg0402_dbparam.xml"> mg0402 : Snake Block Scramble</Item>
<Item rpl="mg0403" scene="SceneMg0403" dbparam="mg0403_dbparam.xml"> mg0403 : Cheep Cheep Panic</Item>
<Item rpl="mg0404" scene="SceneMg0404" dbparam="mg0404_dbparam.xml"> mg0404 : Boo's Mansion</Item>
<Item rpl="mg0405" scene="SceneMg0405" dbparam="mg0405_dbparam.xml"> mg0405 : Desert Fruit</Item>
<Item rpl="mg0406" scene="SceneMg0406" dbparam="mg0406_dbparam.xml"> mg0406 : Ball-Rolling Switch Rally</Item>
<Item rpl="mg0407" scene="SceneMg0407" dbparam="mg0407_dbparam.xml"> mg0407 : Instant Golf</Item>
<Item rpl="mg0408" scene="SceneMg0408" dbparam="mg0408_dbparam.xml"> mg0408 : Swinging Iron Ball Road</Item>
<Item rpl="mg0409" scene="SceneMg0409" dbparam="mg0409_dbparam.xml"> mg0409 : Don't Hide, Kirifukey!</Item>
<Item rpl="mg0410" scene="SceneMg0410" dbparam="mg0410_dbparam.xml"> mg0410 : Fruit Picking at Unira Falls</Item>
</Group>
<!--  ****************************************************************  -->
<!--  ****************************************************************  -->
<Group name="4-Player Minigames B" color="mg" categ="mg">
<Item rpl="mg0411" scene="SceneMg0411" dbparam="mg0411_dbparam.xml"> mg0411 : Forest Hide-and-Seek</Item>
<Item rpl="mg0412" scene="SceneMg0412" dbparam="mg0412_dbparam.xml"> mg0412 : Don't Get Knocked Off by Tsukidashidon</Item>
<Item rpl="mg0413" scene="SceneMg0413" dbparam="mg0413_dbparam.xml"> mg0413 : Charge On!</Item> Chorobon Tower</Item>
<Item rpl="mg0414" scene="SceneMg0414" dbparam="mg0414_dbparam.xml"> mg0414 : Excitement Fight</Item>
<Item rpl="mg0415" scene="SceneMg0415" dbparam="mg0415_dbparam.xml"> mg0415 : Paint Shot Battle</Item>
<Item rpl="mg0416" scene="SceneMg0416" dbparam="mg0416_dbparam.xml"> mg0416 : Spinning Cyclone</Item>
<Item rpl="mg0417" scene="SceneMg0417" dbparam="mg0417_dbparam.xml"> mg0417 : Hoverboat Race</Item>
<Item rpl="mg0418" scene="SceneMg0418" dbparam="mg0418_dbparam.xml"> mg0418 : Dodge the Bees</Item>
<Item rpl="mg0419" scene="SceneMg0419" dbparam="mg0419_dbparam.xml"> mg0419 : Apple Bargain</Item>
<Item rpl="mg0420" scene="SceneMg0420"> mg0420 : Shy Guy Donuts</Item>
</Group>
<!--  ****************************************************************  -->
<!--  ****************************************************************  -->
<Group name="4-Player Minigames C" color="mg" categ="mg">
<Item rpl="mg0421" scene="SceneMg0421" dbparam="mg0421_dbparam.xml"> mg0421 : Slippery Frozen Road</Item>
<Item rpl="mg0422" scene="SceneMg0422" dbparam="mg0422_dbparam.xml"> mg0422 : Forest Parade</Item>
<Item rpl="mg0423" scene="SceneMg0423" dbparam="mg0423_dbparam.xml"> mg0423 : Rise Up with the Blooper Machine</Item>
<Item rpl="mg0424" scene="SceneMg0424" dbparam="mg0424_dbparam.xml"> mg0424 : Shoot! Piranha Plants</Item>
<Item rpl="mg0425" scene="SceneMg0425" dbparam="mg0425_dbparam.xml"> mg0425 : Bob-omb Chain Reaction</Item>
<Item rpl="mg0426" scene="SceneMg0426" dbparam="mg0426_dbparam.xml"> mg0426 : Where, Where, Where?</Item>
<Item rpl="mg0427" scene="SceneMg0427" dbparam="mg0427_dbparam.xml"> mg0427 : Search and Hit</Item>

Unused Graphics#

UnusedLavaRiseSpaceMarioParty10.png
An unused space that would have seemingly raised lava if landed on. This space would have most likely been used in the Chaos Castle board in the wall climbing section. This was most likely cut from the final game since its behavior is exactly the same as the magma rising spaces in the Magma Mine board in Mario Party 9. My guess is that the skewer spaces replaced this.

Mario-Party-10-Temp.png
A hand drawn "temporary" texture.

Mario-Party-10-Dummy-2.png
More dummy lettering.

Mario-Party-10-Dummy-Blooper.png
A Blooper with "dummy" written on top.

Test textures, featuring Koopas, a cloud, and a rainbow with an arrow drawn on it.

Mario-Party-Test-Stamp-1.png Mario-Party-Test-Stamp-2.png Mario-Party-Test-Stamp-3.png Mario-Party-Test-Stamp-4.png
Four test stamp textures. Interestingly, the Star and Bowser stamps are anti-aliased, while the Bowser Jr. and Mushroom stamps are not.

Mario-Party-10-Minigame-Placeholder-1.png Mario-Party-10-Minigame-Placeholder-2.png Mario-Party-10-Minigame-Placeholder-3.png Mario-Party-10-Minigame-Placeholder-4.png

Mario-Party-10-Minigame-Placeholder-5.png Mario-Party-10-Minigame-Placeholder-6.png Mario-Party-10-Minigame-Placeholder-7.png Mario-Party-10-Minigame-Placeholder-8.png
Eight placeholder images for minigames with "temporary" written on the top right corner. Most of these images are debug screenshots of the game, but they are too small to read the info.

Mario-Party-10-Debug-Screen-1.png
A debug screenshot surrounded by checkerboard bars. There's a transparent "temp" stamped in the middle of the screenshot. The debug text reads:

Cafe [Build] Apr 22 2014 04:39:20 NDGS version 0.10.150 Cafe OS SDK Version 2.10.03 Build 55447

The part in bold is cut off in this screenshot.

Mario-Party-10-Debug-Screen-2.png
Another debug screenshot with a large menu being displayed with various info. The main debug info on the top left reads:

Cafe [Build] Feb 5 2014 09:54:23 NDGS version 0.10.122 Cafe OS SDK Version 2.10.03 Build 55447

Mario-Party-10-Debug-Screen-3.png
A full size debug screenshot. This is the earliest one left in the game, dating back to January 2014. All of the text in this debug screenshot is as follows:

Cafe [Build] Jan 16 2014 16:24:08 NDGS version 0.10.115 Cafe OS SDK Version 2.10.03 Build 55447

On Screenshot

Translated

[ZR:デバッグ力メラ終了] [X:表示非表示] [Y:ポーズ状態切り替え]
[L:カメラ後退] [R:カメラ前進]
[左スティック:カメラ平行移動] [右スティック:カメラ回転]
カメラ座標 [十字キー左:カメラ基本位置に移動]
pos: x=5.923810 y=32.058460 z=14.748335
tag: x=2.719729 y=14.124818 z=9.086901

[ZR:End Debug Camera] [X:Hide Indicator] [Y:Pause/Unpause]
[L:Zoom Out] [R:Zoom In]
[Left Stick:Shift Camera] [Right Stick:Rotate Camera]
Camera Coordinates [Left D-Pad:Move to Camera Foundation Position]
pos: x=5.923810 y=32.058460 z=14.748335
tag: x=2.719729 y=14.124818 z=9.086901

ワクワクパークへようこそ!

Welcome to Excitement Park!

FPS:59.97 CPU: 39 DRAW: 314 GPU: 60 VI: 659649

(Source: Original TCRF research)

Texture Oddity#

Reflection Texture

Source Image

A metal reflection texture is actually a photograph of the Tokyo Big Sight convention center. The image itself was specifically taken from this website's photo pack of Tokyo Big Sight. The sign in the Mario Party texture has been blurred heavily.

(Source: Original TCRF research)

Unused Message Data#

To do:
Document the rest of the differing messages.

Among the message data files for each region, located in content/Mess/[language], is a file named test.msbt.

As the name would imply, this file is not used by the game, and mostly consists of multiple blank "test" message data entries. However, some seemingly old (but localised!) message data is included as well.

menu_051, sbd001_entry_title_009 and a few other messages within this archive prefixed sbd_ (which is the prefix used for most Amiibo Party related data) refer to a mode called "Classic Party".

sbd001_op_026_E even contains an introductory message for it!

Welcome to Classic Party! In this game, you'll collect coins as you go around the board. Then you'll trade coins for Stars.

sbd_op_23_001 contains a shorter version of this message, which is almost identical to the used sbd001_op_23 message contained within sbd001.msbt.

(Early) test.msbt - sbd_op_23_001

(Final) sbd001.msbt - sbd001_op_23

Welcome to Classic Party!
All players compete to collect the most Stars over 10 rounds.
Welcome to amiibo Party! The player with the most Stars after 10 rounds wins!

This suggests that Amiibo Party was originally called Classic Party.

This file also contains several other early strings for Classic Party, which are mostly just differently worded versions of the final ones, for instance:

(Early) test.msbt - sbd001_amiibo_002_E

(Final) sbd001.msbt - sbd001_amiibo_002_001_E

Players who have equipped a Token that can be used in minigames can use them here.
Check the
equipped
Tokens on the
GamePad!

Haunted Trail Board Discrepancy#

To do:
Try to load bd002k's space data config.

For some reason, the Haunted Trail board (which is referred to as bd002 internally) has both bd002b.bin (Mario Party) and bd002k.bin (Bowser Party) versions of its archive, despite the board only being playable in Mario Party mode. The bd002k version has its own space data configuration file, confusingly named bd002b_masu_build.xml, that seems to be an edited version of its counterpart with the same name in the bd002b.bin archive.

This version is largely identical to that one, however it has several more references to "EventBooth" spaces, generally placed before the "Item" space type, that do not exist in the used version.

Sadly, it doesn't seem like the Bowser Party version of this board was developed very much, as little to no actual board-specific data for it seems to exist outside of this (the space layout is still very similar to the Mario Party version, and it seems like the only wholly unique file that exists for it specifically is bd002k_masu_data.csv, which references Lucky2 and Unlucky2 spaces, and lacks any references to the Teresa or Spotlight spaces seen in the Mario Party version and are important parts of this board's unique mechanics.)

Even so, this data existing at all would seem to indicate that a Bowser Party version of this board was planned at some point. This is further indicated by the complete lack of any k variants of bd004, the only other board not present in Bowser Party, which has only one archive containing the necessary data for Mario Party mode as one might expect, meaning the developers likely created the k version of this one intentionally.

Interestingly, most of the NodeNames (spaces) inbd002b's version of this file are prefixed bd002k_.

Debug Logging#

To do:
Research and better document the logged messages.

There are many instances where messages intended to help with development and debugging are logged to OSReport/OSConsole. This is most accessibly viewable via debugging features in emulation software (such as the logging window in Cemu with Coreinit logging enabled). The strings for these messages can also be seen through reverse-engineering the .rel files responsible for printing them. There are far too many examples of this to list all of them, but the kinds of things logged include modules being initalised, certain functions being called, flags being set, save data being written, assets being loaded, camera positioning and status, error messages, dice values and much, much more. It effectively appears NDCube never removed any debugging messages (or functions related to them) from the game.

...So much so, in fact, that a cursory look through the main tenst.rpx executable (which has much of it's symbol data intact) reveals that it exports a handful of functions related to debugging, including a function signature identified as report__10NdSysDebugSFPCce, which is called for most of the below examples:

When the game is started, a large amount information regarding different modules starting up and their settings is logged, including what appears to be a readout of minigames and data associated with them, various flags and their current values, and special properties for rendering DK (yes, really) among other information.

Many in-game events will log accompanying debug messages. For instance, every time a player selects a dice block, the internal type of the block will be logged. When the dice block is being rolled and bounces off a wall, "Contact Wall!" is logged. Once a value for a dice block is determined the message dice val:%d will be printed (with %d being replaced at runtime with the value rolled.)

Some mini-games will log function calls related to their progression. For instance when starting Bowser's Wicked Wheel the text void libca::mgk::SceneKoopaBase::mgsequence_initialize() is logged, followed by void libca::mgk::SceneKoopaBase::mgsequence_openingdemo() when the introductory demo plays, void libca::mgk::SceneKoopaBase::mgsequence_start() when the minigame starts, void libca::mgk::SceneKoopaBase::mgsequence_gamemain() when it enters the main gameplay loop, and void libca::mgk::SceneKoopaBase::mgsequence_finish() when the timer runs out and the minigame ends.

In Bowser's Bad Breathevery time the Bowser player shoots a fireball the text"startFire"' is logged.

When Bowser's Hammer Slammer starts, information regarding each player's starting position is logged. The minigame logs players being 'hit' with a timestamp (though this does not appear to refer to being hit by Bowser, as this is logged even when the Bowser player isn't doing anything.) When the minigame finishes "TIME IS OVER" is logged along with a timestamp.

And so on, there are likely many more mini-game, board and mode specific logs, no doubt implemented as a means to help the developers and debuggers resolve whatever issues they were encountering when working on them. Further research into the specifics is encouraged.

Internal Project Name#

Mario Party 10's project name is internally referenced as both "TenSt" and "10stars".

(Source: Random Talking Bush)