We just released a Feb. 5 '89 prototype of DuckTales for the NES!
If you'd like to support our preservation efforts (and this wasn't cheap), please consider donating or supporting us on Patreon. Thank you!

Mario Kart 8/Kiosk Demo (April 4th, 2016)/debug directory

From The Cutting Room Floor
Jump to navigation Jump to search

On the root of the directory, the build date (04/16 14:58:16) and resource revision (96168) in files builddate.dat and resourcerev.dat are present.

Symbol map

The symbol map of the executable was left over in the root, metadata also proves it was built off a Win 7 PC in Wed Apr 16 14:58:55 2014, named Turbo.map.

Download.png Download 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.png 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

Cacti speak Japanese.
...But what does it mean?
This game has text or audio that needs to be translated. If you are fluent with this language, please read our translation guidelines and then submit a translation!

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] __PARTS_CHECK_START__" + 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 unknown what it was 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>