Splatoon 3/Developer Leftovers
This is a sub-page of Splatoon 3.
Contents
Sub-Pages
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 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
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
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
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
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 |