|
|
This page is rather stubbly and could use some expansion. |
This is a sub-page of Mario Kart 8.
A kiosk demo for Mario Kart 8.
Debug Folder#
A folder named debug wasn't fully removed, with leftovers that were most likely used by debug builds of the game.
Build Date and Resource Revision#
Present in the root of the directory are the files builddate.dat and resourcerev.dat, respectively stating the the build date (04/16 14:58:16) and resource revision (96168).
Symbol Map#
A symbol map for a non-Production build of the executable was left in the root directory, under the filename Turbo.map. The metadata states it was built on a Windows 7 PC on Wed Apr 16 14:58:55 2014 however the map does not match the provided executable due to it being a Production build which stripped the debug code.
Download Debug Build Symbol Map File: MK8_RetailDemo_SymbolMap.zip (966 KB) (info) |
gfx Folder#
All SARC files have SHARC files with plaintext shader data for AGL and GSys inside, same for the one SHARC file.
Download Sources for AGL shaders File: MK8_RetailDemo_Dev_ShaderSource.zip (194 KB) (info) |
gx2_font Directory#
Leftovers from LayoutViewer in the NW4F SDK.
Scripts#
|
|
'...But what does it mean?' |
partsCheck.nut#
function main()
{
local startPCIdx = 0; // テストするPCのインデックス
local testPCNum = 1; // テストするPCの台数
local startIdx = 0; // 開始インデックス
local comp = false; // Masterのみで全パターン試すか
local mii = true; // Miiあり
local max_pattern = Game.RaceInfo.GetMaxPatternIdx(4,false,false)
local jobNum = (max_pattern / testPCNum) + 1; // PC一台あたりの仕事量
local partsStartIdx = jobNum * startPCIdx + startIdx;
local courseIdx = 0;
local end = false;
Game.System.WaitFrame(2);
while( !end && startIdx < jobNum )
{
Game.System.WaitFrame(2);
end = Game.RaceInfo.SetNextPartsSetAll4( partsStartIdx + startIdx, comp, mii );
if( !end )
{
Game.RaceInfo.SetNextCourse( Course.Gu_MarioCircuit + courseIdx );
++courseIdx;
courseIdx = courseIdx % 32;
print( "[Squirrel] " + startIdx + ".\n" );
// 決定ボタンを押してレースに入る
local controller = Game.Controller.CreateUI(0);
controller.PressButton( UIButton.Decide );
controller.Reflect();
// レース待ち
Game.System.WaitNextScene();
Game.System.WaitFrame(30);
controller.PressButton(UIButton.Decide);
controller.Reflect();
Game.System.WaitNextPage();
++startIdx;
}
}
Game.Test.End( true );
}
random_menu_debug.nut#
//---------------------------------------------
//
// 自動でレースに入るテスト
//
//---------------------------------------------
function main()
{
// メニューに入るのを待つ
Game.System.WaitNextScene();
Game.System.WaitFrame( 60 );
controller <- Game.Controller.CreateUI(0);
controller.PressButton( UIButton.Up );
controller.Reflect();
Game.System.WaitFrame(1);
controller.PressButton( UIButton.OK );
controller.Reflect();
Game.System.WaitFrame(1);
Game.System.WaitNextScene();
Game.Controller.Recognize(0, ControllerType.DRC);
Game.Controller.Recognize(1, ControllerType.WiiRemoteSolo);
Game.System.WaitFrame( 120 );
controller.PressButton( UIButton.Down );
controller.Reflect();
Game.System.WaitFrame(10);
controller.PressButton( UIButton.OK );
controller.Reflect();
Game.System.WaitFrame(10);
while(1){
controller1 <- Game.Controller.CreateUI(0);
controller1.PressButton( UIButton.Right );
controller1.Reflect();
controller2 <- Game.Controller.CreateUI(1)
controller2.PressButton( UIButton.Down );
controller2.Reflect();
Game.System.WaitRandomFrame(1, 10);
}
}
test.nut#
function main()
{
Game.System.WaitNextScene();
{
local controller = Game.Controller.CreateUI(0);
controller.PressButton(UIButton::OK);
controller.Reflect();
}
}
test_race.nut#
//---------------------------------------------
//
// 自動でレースに入るテスト
//
//---------------------------------------------
function main()
{
//----------------------------------
// 設定
//----------------------------------
local test_frame = 5 * 60 // 計測するフレーム数
local course_id = 0; // テストするコースのID
local course_name = "Gu_MarioCircuit"; // テストするコースの名前
local output_yaml = false; // 処理計測の yaml を出力するか
local output_capture = false; // 処理落ちのスクリーンショットを出力するか
local master_num = 1; // プレイヤーの数
// CPU
local driver_name = [Driver.Mario, Driver.Mario, Driver.Mario, Driver.Mario, Driver.Mario, Driver.Mario, Driver.Mario, Driver.Mario, Driver.Mario, Driver.Mario, Driver.Mario, Driver.Mario];
local body_name = [Body.K_Std, Body.K_Std, Body.K_Std, Body.K_Std, Body.K_Std, Body.K_Std, Body.K_Std, Body.K_Std, Body.K_Std, Body.K_Std, Body.K_Std, Body.K_Std];
local tire_name = [Tire.Std, Tire.Std, Tire.Std, Tire.Std, Tire.Std, Tire.Std, Tire.Std, Tire.Std, Tire.Std, Tire.Std, Tire.Std, Tire.Std];
local wing_name = [Wing.Std, Wing.Std, Wing.Std, Wing.Std, Wing.Std, Wing.Std, Wing.Std, Wing.Std, Wing.Std, Wing.Std, Wing.Std, Wing.Std];
local worst_mii = -1;
local ctrl = [ControllerType.DRC, ControllerType.WiiRemoteSolo, ControllerType.WiiRemoteSolo, ControllerType.WiiRemoteSolo];
// 定点観測箇所
local snap_available = false; // 観測するかどうか
local snap_beginindex = 0; // 観測番号の開始index
local snap_max = 3; // 観測枚数
local cam_pos = [ [0, 0, -10.0], [0, 0, -10.0], [0, 0, -10.0] ]; // 観測座標(pos)
local cam_at = [ [0, 0, 0], [0, 0, 0], [0, 0, 0] ]; // 観測座標(at)
local screenshot_dir = "D:"; // スクリーンショットの保存場所
//----------------------------------
// テスト
//----------------------------------
// デバッグメニューに入るのを待つ
Game.System.WaitScene( SceneID.DebugMenu );
Game.System.WaitFrame( 60 );
print( "[Squirrel] DebugMenu enter.\n" );
// 処理落ちスクリーンショットを出力するか設定
if( output_capture )
{
Game.Test.EnableCapture();
}
// ドライバーとパーツをセットする
local i;
for( i = 0; i < master_num; ++i )
{
Game.RaceInfo.SetNextWholeKart( i, PlayerType.Master, driver_name[i], body_name[i], tire_name[i], wing_name[i] );
}
for( ; i < 12; ++i )
{
Game.RaceInfo.SetNextWholeKart( i, PlayerType.CPU, driver_name[i], body_name[i], tire_name[i], wing_name[i] );
}
// コントローラをセットする
Game.System.WaitFrame( 5 );
for( i = 0; i < master_num; ++i )
{
Game.Controller.Recognize( i, ctrl[i] );
}
Game.System.WaitFrame( 5 );
// ワーストMii 12体 にする
if( worst_mii >= 0 )
{
Game.System.SetWorstMii( worst_mii );
}
// コースをセットする
if( course_id >= 0 )
{
Game.RaceInfo.SetNextCourse( course_id );
}
else
{
Game.RaceInfo.SetNextTestCourse( course_name );
}
// レースモードを Test にする
Game.RaceInfo.SetNextRaceMode( Play.Local, Rule.Test, Enter.Race );
// 決定ボタンを押してレースに入る
controller <- Game.Controller.CreateUI(0);
controller.PressButton( UIButton.Decide );
controller.Reflect();
// レースに入るのを待つ
Game.System.WaitNextScene();
print( "[Squirrel] Race enter.\n" );
// レースに入ったら、一定時間待つ
Game.System.WaitFrame( test_frame );
// yaml出力
if( output_yaml )
{
Game.System.SuspendGameThread();
Game.Test.PutsProcYaml();
Game.System.ResumeGameThread();
}
// 定点観測
if ( snap_available != false )
{
// デバッグスクリーン無効
Game.Test.DisableDebugScreen();
// デバッグ描画無効
Game.Test.DisableDebugDraw();
// 処理バー消去
dcontroller <- Game.Controller.CreateDebug();
dcontroller.PressButton( DebugButton.Z | DebugButton.Right );
dcontroller.Reflect();
Game.System.WaitFrame( 2 );
dcontroller.PressButton( DebugButton.Z | DebugButton.Right );
dcontroller.Reflect();
Game.System.WaitFrame( 1 );
// 二秒待つ
Game.System.WaitFrame( 120 );
// 周回観測撮影
local kart = Game.Kart.Create(5);
for (i=0; i<4; ++i)
{
local mtx = Game.Test.GetTestStartMtx( i )
Game.System.SuspendGameThread();
kart.Reset();
kart.SetMtx(mtx);
Game.System.ResumeGameThread();
Game.System.WaitFrame( 2 );
Game.Test.SnapScreen( screenshot_dir, i + snap_beginindex );
}
// UI消去
dcontroller.PressButton( DebugButton.R | DebugButton.L | DebugButton.Up );
dcontroller.Reflect();
Game.System.WaitFrame( 120 );
// カリング無効
Game.Test.DisableCulling();
// カメラセット
Game.Test.AttachCamera();
// 撮影
local n;
for (n=0; n<snap_max; ++n)
{
Game.Test.SetCameraPos(
Game.Test.GetVector3f( cam_pos[n][0], cam_pos[n][1], cam_pos[n][2] ),
Game.Test.GetVector3f( cam_at[n][0], cam_at[n][1], cam_at[n][2] ),
Game.Test.GetVector3f( 0.0, 1.0, 0.0 ),
56.0
);
Game.System.WaitFrame( 2 );
Game.Test.SnapScreen( screenshot_dir, n + 4 + snap_beginindex );
}
Game.System.WaitFrame( 120 );
}
// テスト終了
Game.Test.End();
}
test_title.nut#
//---------------------------------------------
//
// 自動でレースに入るテスト
//
//---------------------------------------------
function main()
{
print( "[Squirrel] Start test_title.nut\n" );
//----------------------------------
// テスト
//----------------------------------
// デバッグメニューに入るのを待つ
Game.System.WaitScene( SceneID.DebugMenu );
Game.System.WaitFrame( 60 );
print( "[Squirrel] Entered DebugMenu.\n" );
// コントローラをセットする
Game.Controller.Recognize( 0, ControllerType.DRC );
// タイトルへ
controller <- Game.Controller.CreateUI(0);
Game.System.WaitFrame( 10 );
controller.PressButton( UIButton.Up );
controller.Reflect();
Game.System.WaitFrame( 10 );
controller.PressButton( UIButton.OK );
controller.Reflect();
Game.System.WaitNextScene();
Game.System.WaitFrame( 20 );
// タイトルで10回くらいAボタン押す
Game.Controller.Recognize( 0, ControllerType.DRC );
controller <- Game.Controller.CreateUI(0);
local i;
for(i=0;i<11;i++)
{
Game.System.WaitFrame( 60 );
controller.PressButton( UIButton.OK );
controller.Reflect();
}
Game.System.WaitFrame( 300 );
// テスト終了
Game.Test.End();
}
Unknown XML File#
There's an XML file called snapcamera_info.xml. It is not known what this is used for.
<?xml version="1.0" encoding="utf-8"?>
<snap_camera_info format-version="2013-05" language="ja">
<course name="Gu_MarioCircuit">
<snap_available>true</snap_available>
<snap_beginindex>0</snap_beginindex>
<snap_max>2</snap_max>
<cam_pos>[ [-383.42, 2931.29, -931.10], [-700.00, 3136.51, 320.79] ]</cam_pos>
<cam_at>[ [-392.58, 2931.97, -882.81], [-631.87, 3083.40, 645.92] ]</cam_at>
</course>
<course name="Gu_Expert">
<snap_available>true</snap_available>
<snap_beginindex>6</snap_beginindex>
<snap_max>2</snap_max>
<cam_pos>[ [1039.828, 1929.794, -2320.251], [-535.314, 5509.352, 2007.498] ]</cam_pos>
<cam_at>[ [980.340, 1903.015, -2198.546], [-535.299, 5421.264, 2008.783] ]</cam_at>
</course>
<course name="Gu_Ocean">
<snap_available>true</snap_available>
<snap_beginindex>12</snap_beginindex>
<snap_max>2</snap_max>
<cam_pos>[ [-544.878, 1421.169, 1888.901], [3070.654, 1198.968, -1882.904] ]</cam_pos>
<cam_at>[ [-240.463, 1335.869, 1967.313], [2830.759, 1128.128, -1738.266] ]</cam_at>
</course>
<course name="Gu_Cloud">
<snap_available>true</snap_available>
<snap_beginindex>18</snap_beginindex>
<snap_max>2</snap_max>
<cam_pos>[ [-803.598, 2593.699, -2023.524], [3930.619, 3354.679, 2392.996] ]</cam_pos>
<cam_at>[ [-644.812, 2583.936, -1928.528], [3175.667, 3377.062, 2186.490] ]</cam_at>
</course>
<course name="Gu_WaterPark">
<snap_available>true</snap_available>
<snap_beginindex>24</snap_beginindex>
<snap_max>2</snap_max>
<cam_pos>[ [-1382.559, 1162.894, 2351.215], [546.849, 880.395, 771.440] ]</cam_pos>
<cam_at>[ [-1065.294, 1121.404, 1363.156], [-110.402, 487.601, 1819.613] ]</cam_at>
</course>
</snap_camera_info>