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

Splatoon 3/Developer Leftovers

From The Cutting Room Floor
Jump to navigation Jump to search

This is a sub-page of Splatoon 3.

Sub-Pages

SPL3 LockerIcon.png
Return of the Mammalians DevText
Press [R] to shoot KOJAKE-kun!

Layouts

The game has a small number of layouts defined that do not have files present. As of v1.1.0, the references were silently removed but added back in v1.2.0 and then removed again in v2.0.0 onward.

Name Memory Heap Size
Cmn_TestXMenu_00 64304
Lobby_TestLockerCaption_00 15512
Lobby_TestLockerMenu_00 100400
Test_KitnTestBeatAnim_00 4512
Test_UICheckBG_00 5752

Development Shaders

Download.png Download Development Shaders
File: SPL3_Development_Shaders.zip (913 KB) (info)

Various shaders tagged with the develop tag were accidentally added to the files in the Drizzle Season 2023 (Version 5.0.0) update, and were subsequently removed in the Version 5.0.1 update a week later.
Most of the shaders were for the skyboxes seen in most stages, but other ones such as a shader for the Shipshape Cargo Co. stage and the King Mesh Tee were also included.

Uncompiled Shaders

Hmmm...
To do:
Any more archives with them?

The BtnSelectFriend_00 layout archive of the game data (of v1.1.0+) has the original source shaders in the bgsh dirctory.

#if NW_COMBINERUSERSHADER_TYPE == 1
#include "ColorGap_05.glsl"
#endif

//
// Generated shader code
//

#ifndef _SGEFUNC_ADD_FLOAT_FLOAT_
#define _SGEFUNC_ADD_FLOAT_FLOAT_
float Add( float a, float b )
{
    return a + b;
}
#endif // _SGEFUNC_ADD_FLOAT_FLOAT_
#ifndef _SGEFUNC_ADD_VEC2_VEC2_
#define _SGEFUNC_ADD_VEC2_VEC2_
vec2 Add( vec2 a, vec2 b )
{
    return a + b;
}
#endif // _SGEFUNC_ADD_VEC2_VEC2_
#ifndef _SGEFUNC_CLAMP01_FLOAT_
#define _SGEFUNC_CLAMP01_FLOAT_
float Clamp01( float x )
{
    return clamp( x, 0.0, 1.0 );
}
#endif // _SGEFUNC_CLAMP01_FLOAT_
#ifndef _SGEFUNC_INVERSE_FLOAT_
#define _SGEFUNC_INVERSE_FLOAT_
float Inverse( float x )
{
    return 1.0 / x;
}
#endif // _SGEFUNC_INVERSE_FLOAT_
#ifndef _SGEFUNC_INVERSE_VEC3_
#define _SGEFUNC_INVERSE_VEC3_
vec3 Inverse( vec3 x )
{
    return vec3( 1.0 / x.x, 1.0 / x.y, 1.0 / x.z );
}
#endif // _SGEFUNC_INVERSE_VEC3_
#ifndef _SGEFUNC_MIX_VEC4_VEC4_VEC4_
#define _SGEFUNC_MIX_VEC4_VEC4_VEC4_
vec4 Mix( vec4 x, vec4 y, vec4 a )
{
    return mix( x, y, a );
}
#endif // _SGEFUNC_MIX_VEC4_VEC4_VEC4_
#ifndef _SGEFUNC_MULTIPLY_FLOAT_FLOAT_
#define _SGEFUNC_MULTIPLY_FLOAT_FLOAT_
float Multiply( float x, float y )
{
    return x * y;
}
#endif // _SGEFUNC_MULTIPLY_FLOAT_FLOAT_
#ifndef _SGEFUNC_MULTIPLY_VEC2_FLOAT_
#define _SGEFUNC_MULTIPLY_VEC2_FLOAT_
vec2 Multiply( vec2 x, float y )
{
    return x * y;
}
#endif // _SGEFUNC_MULTIPLY_VEC2_FLOAT_
#ifndef _SGEFUNC_MULTIPLY_VEC3_VEC3_
#define _SGEFUNC_MULTIPLY_VEC3_VEC3_
vec3 Multiply( vec3 x, vec3 y )
{
    return x * y;
}
#endif // _SGEFUNC_MULTIPLY_VEC3_VEC3_
#ifndef _SGEFUNC_MULTIPLY_VEC4_VEC4_
#define _SGEFUNC_MULTIPLY_VEC4_VEC4_
vec4 Multiply( vec4 x, vec4 y )
{
    return x * y;
}
#endif // _SGEFUNC_MULTIPLY_VEC4_VEC4_
#ifndef _SGEFUNC_SUB_VEC2_VEC2_
#define _SGEFUNC_SUB_VEC2_VEC2_
vec2 Sub( vec2 a, vec2 b )
{
    return a - b;
}
#endif // _SGEFUNC_SUB_VEC2_VEC2_
#ifndef _SGEFUNC_OUTPUT_VEC4_
#define _SGEFUNC_OUTPUT_VEC4_
void Output( vec4 color )
{
    OUTPUT_COLOR = color;

    // alpha processing
    OUTPUT_COLOR.a = CalcAlphaProcess( OUTPUT_COLOR.a );

    // custom shader
    FinalAdjustmentFragmentColor();

}
#endif // _SGEFUNC_OUTPUT_VEC4_
#ifndef _SGEFUNC_GETTEXTURE0UV_
#define _SGEFUNC_GETTEXTURE0UV_
vec2 GetTexture0UV()
{
    return nwTextureCoord0;
}
#endif // _SGEFUNC_GETTEXTURE0UV_
#ifndef _SGEFUNC_GETTEXTURE0_VEC2_
#define _SGEFUNC_GETTEXTURE0_VEC2_
vec4 GetTexture0( vec2 uv )
{
    vec4 color = texture( nwAlbedoTexture0, uv );
    return color;
}
#endif // _SGEFUNC_GETTEXTURE0_VEC2_
#ifndef _SGEFUNC_GETCONSTANTCOLORBLACK_
#define _SGEFUNC_GETCONSTANTCOLORBLACK_
vec4 GetConstantColorBlack()
{
    return nwConstantColor0;
}
#endif // _SGEFUNC_GETCONSTANTCOLORBLACK_
#ifndef _SGEFUNC_GETCONSTANTCOLORWHITE_
#define _SGEFUNC_GETCONSTANTCOLORWHITE_
vec4 GetConstantColorWhite()
{
    return nwConstantColor1;
}
#endif // _SGEFUNC_GETCONSTANTCOLORWHITE_
#ifndef _SGEFUNC_GETEXUSERDATAVEC3_0_
#define _SGEFUNC_GETEXUSERDATAVEC3_0_
vec3 GetExUserDataVec3_0()
{
    return nwExUserDataVec3_0;
}
#endif // _SGEFUNC_GETEXUSERDATAVEC3_0_
#ifndef _SGEFUNC_GETEXUSERDATAVEC3_1_
#define _SGEFUNC_GETEXUSERDATAVEC3_1_
vec3 GetExUserDataVec3_1()
{
    return nwExUserDataVec3_1;
}
#endif // _SGEFUNC_GETEXUSERDATAVEC3_1_
#ifndef _SGEFUNC_GETEXUSERDATAVEC2_0_
#define _SGEFUNC_GETEXUSERDATAVEC2_0_
vec2 GetExUserDataVec2_0()
{
    return nwExUserDataVec2_0;
}
#endif // _SGEFUNC_GETEXUSERDATAVEC2_0_
#ifndef _SGEFUNC_GETVERTEXCOLOR_
#define _SGEFUNC_GETVERTEXCOLOR_
vec4 GetVertexColor()
{
    return vColor;
}
#endif // _SGEFUNC_GETVERTEXCOLOR_
#ifndef _SGEFUNC_COMBF4_FLOAT_FLOAT_FLOAT_FLOAT_
#define _SGEFUNC_COMBF4_FLOAT_FLOAT_FLOAT_FLOAT_
vec4 CombF4( float f1, float f2, float f3, float f4 )
{
    return vec4( f1, f2, f3, f4 );
}
#endif // _SGEFUNC_COMBF4_FLOAT_FLOAT_FLOAT_FLOAT_
#ifndef _SGEFUNC_DIVF3_FLOAT_FLOAT_FLOAT_VEC3_
#define _SGEFUNC_DIVF3_FLOAT_FLOAT_FLOAT_VEC3_
void DivF3( out float f0, out float f1, out float f2, vec3 v3 )
{
    f0 = v3.x;
    f1 = v3.y;
    f2 = v3.z;
}
#endif // _SGEFUNC_DIVF3_FLOAT_FLOAT_FLOAT_VEC3_

void main()
{
    vec4 GetConstantColorBlack_return_23831 = GetConstantColorBlack();

    vec4 GetConstantColorWhite_return_23915 = GetConstantColorWhite();

    vec3 GetExUserDataVec3_0_return_16172 = GetExUserDataVec3_0();

    vec3 Inverse_return_16558 = Inverse(vec3(255.0, 255.0, 255.0));

    vec3 Multiply_return_16359 = Multiply(GetExUserDataVec3_0_return_16172, Inverse_return_16558);

    float DivF3_f0_17119;
    float DivF3_f1_17119;
    float DivF3_f2_17119;
    DivF3(DivF3_f0_17119, DivF3_f1_17119, DivF3_f2_17119, Multiply_return_16359);

    vec2 GetTexture0UV_return_397 = GetTexture0UV();

    vec2 GetExUserDataVec2_0_return_22286 = GetExUserDataVec2_0();

    float Inverse_return_22926 = Inverse(100.0);

    vec2 Multiply_return_22803 = Multiply(GetExUserDataVec2_0_return_22286, Inverse_return_22926);

    vec2 Add_return_463 = Add(GetTexture0UV_return_397, Multiply_return_22803);

    vec4 GetTexture0_return_178 = GetTexture0(Add_return_463);

    float Multiply_return_17466 = Multiply(DivF3_f0_17119, GetTexture0_return_178.w);

    vec3 GetExUserDataVec3_1_return_16264 = GetExUserDataVec3_1();

    vec3 Multiply_return_16887 = Multiply(GetExUserDataVec3_1_return_16264, Inverse_return_16558);

    float DivF3_f0_17227;
    float DivF3_f1_17227;
    float DivF3_f2_17227;
    DivF3(DivF3_f0_17227, DivF3_f1_17227, DivF3_f2_17227, Multiply_return_16887);

    vec2 Sub_return_668 = Sub(GetTexture0UV_return_397, Multiply_return_22803);

    vec4 GetTexture0_return_839 = GetTexture0(Sub_return_668);

    float Multiply_return_18231 = Multiply(DivF3_f0_17227, GetTexture0_return_839.w);

    float Add_return_19050 = Add(Multiply_return_17466, Multiply_return_18231);

    float Multiply_return_17715 = Multiply(DivF3_f1_17119, GetTexture0_return_178.w);

    float Multiply_return_18498 = Multiply(DivF3_f1_17227, GetTexture0_return_839.w);

    float Add_return_19335 = Add(Multiply_return_17715, Multiply_return_18498);

    float Multiply_return_17970 = Multiply(DivF3_f2_17119, GetTexture0_return_178.w);

    float Multiply_return_18771 = Multiply(DivF3_f2_17227, GetTexture0_return_839.w);

    float Add_return_19626 = Add(Multiply_return_17970, Multiply_return_18771);

    float Add_return_20334 = Add(GetTexture0_return_178.w, GetTexture0_return_839.w);

    float Clamp01_return_20643 = Clamp01(Add_return_20334);

    vec4 CombF4_return_19923 = CombF4(Add_return_19050, Add_return_19335, Add_return_19626, Clamp01_return_20643);

    vec4 Mix_return_24001 = Mix(GetConstantColorBlack_return_23831, GetConstantColorWhite_return_23915, CombF4_return_19923);

    vec4 GetVertexColor_return_24309 = GetVertexColor();

    vec4 Multiply_return_24416 = Multiply(Mix_return_24001, GetVertexColor_return_24309);

    Output(Multiply_return_24416);

}

Locker Goods Capture

In the 1.0.0 revision of the game, a debug folder named LockerGoodsCapture exists that is not present in any subsequent version. This folder contains parameter files to set a camera position for certain gear types. Based on the name, these files are likely leftovers used to capture the icons for items and gear.

Text

Hmmm...
To do:
v1.0.0 also has some unlocalized entries.

Message Test

CommonMsg/MsgTest.msbt is referenced in the game executable. Unfortunately the file was removed from the product. The following string IDs are present.

Msg_Test_01
Msg_Test_02
Msg_Test_03
Msg_Test_04
Msg_Test_05
Msg_Test_06
Msg_Test_07
Msg_Test_20
Msg_Test_21
Msg_Test_30
Msg_Test_31
Msg_Test_32

Test X Menu

LayoutMsg/Cmn_TestXMenu_00.msbt is currently present in all releases, only containing a single text line for all languages.

Shop

Region Change

Hmmm...
To do:
Fix the encoding if possible, the string ID is referenced by the executable.

SystemWindow/SystemMsg_CloudSave.msbt in v1.1.0 has a string entry for likely telling the user to change their region to a non-Japanese one after rebooting. Interestingly, it has different localizations for the new languages, Korean and Chinese.

Msg_ConfirmFestRegion_Reboot (String ID)
Japanese Japanese (Translated)
<color id="1"/><fun_00110004 arg="0x00000000"/><color id="65535"/>向けのフェスは、
日本語に対応していません
フェスの開催中は、ソフトを再起動してゲーム内の表示を
<color id="1"/><fun_00120004 arg="0x00000000"/><color id="65535"/>に切り替える必要があります
それでもよろしいですか?
The <color id="1"/><fun_00110004 arg="0x00000000"/><color id="65535"/>Splatfest
does not support Japanese.
During this Splatfest, you will need to restart the software and switch the in-game text display to
<color id="1"/><fun_00120004 arg="0x00000000"/><color id="65535"/>.
Is this OK?
Simplified Chinese Simplified Chinese (Translated)
面向<color id="1"/><fun_00110004 arg="0x00000000"/><color id="65535"/>举行的祭典
并未对应简体中文。
举行祭典期间,必须重新启动软件,
将游戏内容切换为以<color id="1"/><fun_00120004 arg="0x00000000"/><color id="65535"/>显示。
是否仍要选择此地区?
The <color id="1"/><fun_00110004 arg="0x00000000"/><color id="65535"/> Splatfest does not support Simplified Chinese.
During this Splatfest, you will need to restart the software and switch the game content to <color id="1"/><fun_00120004 arg="0x00000000"/><color id="65535"/>.
Are you sure you want to choose this region?
Korean Korean (Translated)
<color id="1"/><fun_00110004 arg="0x00000000"/><color id="65535"/>의 페스티벌은
한국어에 대응하지 않습니다
페스티벌 개최 중에는 소프트웨어를 재기동하여 게임 내 표시를
<color id="1"/><fun_00120004 arg="0x00000000"/><color id="65535"/><fun_000800C9 arg="0x04003CC75CB802005CB8"/> 전환해야 합니다
그래도 괜찮겠습니까?
The <color id="1"/><fun_00110004 arg="0x00000000"/><color id="65535"/> Splatfest
does not correspond to Korean.
During this Splatfest, you will need to restart the software and switch the in-game text display to 
<color id="1"/><fun_00120004 arg="0x00000000"/><color id="65535"/><fun_000800C9 arg="0x04003CC75CB802005CB8"/>.
Is this OK?
Traditional Chinese Traditional Chinese (Translated)
此為<color id="1"/><fun_00110004 arg="0x00000000"/><color id="65535"/>舉行的祭典
並未對應繁體中文。
祭典舉行期間,必須重新啟動軟體,
將遊戲內容切換為以<color id="1"/><fun_00120004 arg="0x00000000"/><color id="65535"/>顯示。
是否仍確定要選擇此地區?
The <color id="1"/><fun_00110004 arg="0x00000000"/><color id="65535"/> Splatfest does not support Traditional Chinese.
During the Splatfest, you will need to restart the software and switch the game content to <color id="1"/><fun_00120004 arg="0x00000000"/><color id="65535"/>.
Are you sure you want to choose this region?

Locker Debug Menu

LayoutMsg/Lobby_TestLockerCaption_00.msbt is present in v1.0.0 with multiple entries referencing debug controls. The layout file under the same name was removed but referenced in the game executable and memory heap size configuration (with a size of 15512 bytes). Interestingly, a layout named TestLockerBtn_00 is also mentioned in the game executable to most likely reference this file but again, was removed. The other layout file referenced in both is Lobby_TestLockerMenu_00 (with a size of 100400 bytes).

String ID Japanese Japanese (Translated)
T_text_00
X:デバッグ生成
X: Debug Creation
T_text_01
A:つかむ・はなす
A: Grab/Release
T_text_02
B:けす
B: Erase
T_text_03
ZL/ZR:おおきく回転
ZL/ZR: Large Rotation
T_text_04
L/R:ちいさく回転
L/R: Small Rotation
T_text_05
左右キー:えらぶ
Left/Right: Select
T_text_06
右スティック:向きを変える
Right Stick: Change Direction
T_text_07
左スティック:カーソル移動
Left Stick: Move Cursor
T_text_08
●おける
●Place
T_text_09
●おけぬ
●Don't Place

Bug Reporting

CommonMsg/Dev.msbt contains a single text entry, being a template most likely relating to a feature used by developer/playtester builds of the game to interactively report bugs to programmers. There's no references for this file and/or text entry in any form so it is unsure if this is entirely hardcoded or referenced in a layout. It has most likely the same text translated so we don't really need to manually translate.

String ID Text
BugReportContent
――――
■手順 / Procedures
1.
2.
3.

■結果 / Result

■試行回数 / Number of attempts
X/X

■備考 / Remarks

――――

Debug Scenes

Hmmm...
To do:
More explanation.
Name Internal Label Internal Label (Translated/Localized) Version Added Version Removed Notes
Dev Portal 開発ポータル Development Portal 1.0.0 2.0.0 Likely equivalent to DbgSetting in previous games
EnemyTest 99_Msn エネミーテストシーン 99_Msn Enemy Test Scene 1.0.0 2.0.0
MapPartsTest 99_Msn マップパーツテストシーン 99_Msn Map Parts Test Scene 1.0.0 2.0.0
MiniGameEditDeckTest ミニゲーム デッキエディタテスト MiniGame Deck Editor Test 1.2.0 2.0.0
MiniGameTest ミニゲームテスト MiniGame Test 1.2.0 2.0.0
MiniGameUICheck ミニゲームUIチェックシーン MiniGame UI Check Scene 1.2.0 2.0.0
ObjectTest 99_Msn オブジェクトテストシーン 99_Msn Object Test Scene 1.0.0 2.0.0
PlayerViewer プレイヤービューワー Player Viewer 1.2.0 2.0.0 Debug tool to view players with a large degree of customization options, often used to make promotional renders
TestMatchScene P2Pテストマッチシーン P2P Test Match Scene 1.0.0 2.0.0 Likely equivalent to DbgSetting's matchmaking in previous games
UICheck UIチェックシーン UI Check Scene 1.2.0 2.0.0
UniformNameCheck お揃い称号チェックシーン Matching Title Check Scene 1.2.0 2.0.0
Vss_TF0905 Test マサバ 鹿野01 Test "Mackerel Kano"01 1.0.0 1.1.0 Likely a Hammerhead Bridge TestField


(Source: Splatoon Datasheets)