the cutting room mirror

Submarine Tech Demo

Submarine Tech Demo was broadcast over DS Download Play at E3 2005. It appears to be outwardly the same as the version seen at E3 2004 in the form of a demo on the show floor, press screenshots, and the show floor DS software B-roll. It later evolved into Steel Diver.

Sub-Page#

Debug Output#

The game uses OS_Printf or a related function(s) to output text, which can be be logged by running the game on an IS Nitro Emulator and connecting it to a computer with the SDK or by running the game in the official "Ensata" emulator.

Ensata start-of-game example:

TP success
Submarine Tech Demo Start !! 
 NitroSDK ver.20040913, NitroSystem ver.20040916
heapStart 2199c40
heap handle 0
End scene :0, 1
dxNitro2d.c:329 Warning:Draw OAM overflow!! - dxDrawObjectTo( 2, 82, 54, 0, -1 )
dxNitro2d.c:329 Warning:Draw OAM overflow!! - dxDrawObjectTo( 1, 43, 85, 0, -1 )
dxNitro2d.c:329 Warning:Draw OAM overflow!! - dxDrawObjectTo( 3, 35, 60, 0, -1 )
dxNitro2d.c:329 Warning:Draw OAM overflow!! - dxDrawObjectTo( 2, 212, 133, 0, -1 )
dxNitro2d.c:329 Warning:Draw OAM overflow!! - dxDrawObjectTo( 1, 161, 76, 0, -1 )
dxNitro2d.c:329 Warning:Draw OAM overflow!! - dxDrawObjectTo( 1, 196, 173, 0, -1 )
dxNitro2d.c:329 Warning:Draw OAM overflow!! - dxDrawObjectTo( 1, 208, 176, 0, -1 )
dxNitro2d.c:329 Warning:Draw OAM overflow!! - dxDrawObjectTo( 1, 195, 162, 0, -1 )
dxNitro2d.c:329 Warning:Draw OAM overflow!! - dxDrawObjectTo( 3, 74, 115, 0, -1 )
dxNitro2d.c:329 Warning:Draw OAM overflow!! - dxDrawObjectTo( 1, 166, 5, 0, -1 )
dxNitro2d.c:329 Warning:Draw OAM overflow!! - dxDrawObjectTo( 2, 252, 22, 0, -1 )
dxNitro2d.c:329 Warning:Draw OAM overflow!! - dxDrawObjectTo( 3, 73, 99, 0, -1 )
dxNitro2d.c:329 Warning:Draw OAM overflow!! - dxDrawObjectTo( 1, 190, 133, 0, -1 )
dxNitro2d.c:329 Warning:Draw OAM overflow!! - dxDrawObjectTo( 1, 154, 35, 0, -1 )
dxNitro2d.c:329 Warning:Draw OAM overflow!! - dxDrawObjectTo( 2, 251, 2, 0, -1 )
dxNitro2d.c:329 Warning:Draw OAM overflow!! - dxDrawObjectTo( 2, 216, 65, 0, -1 )
dxNitro2d.c:329 Warning:Draw OAM overflow!! - dxDrawObjectTo( 1, 7, 197, 0, -1 )
End scene :1, 2
SndAppTrg_SystemSe(34)
SndAppTrg_GamenSe(8, 127)
SndAppTrg_SystemSe(30)
SndAppTrg_GamenSe(9, 127)
SndAppTrg_SystemSe(30)
SndAppTrg_GamenSe(9, 127)
SndAppTrg_GamenSe(6, 128)
SndAppTrg_SystemSe(12)
SndAppTrg_SystemSe(12)
SndAppTrg_SystemSe(12)
SndAppTrg_SystemSe(12)

Various strings like these are scattered at different offsets in the ROM. The text below has been formatted to remove invalid characters and add spaces.

At 0xEF980:

TP fail
TP success
Submarine Tech Demo Start !! 
NitroSDK ver.%d, NitroSystem ver.%d
heapStart %x
heap handle %d

At 0xEFA64:

dxNitro2d.c
ReadObject overflow!! stdata:%d - dxReadObject( *, *, %d, %d )
Read OAM overflow!! stdata:%d - dxReadObject( *, *, %d, %d )
Draw OAM overflow!! - dxDrawObjectAffine( %d, %d, %d, %d, %d, * )
Affine Parameter overflow!! - dxDrawObjectAffine( %d, %d, %d, %d, %d, * )
Draw OAM overflow!! - dxDrawObjectTo( %d, %d, %d, %d, %d )

At 0x171E20:

battleship.c : getModelMaterialNo() return value ERROR !!
battleship.c : getModelNodeNo() return value ERROR !!
uturikomi1
nami1
BattleShip
para
antenna
cannon_F
cannon_R
cannon_S
nami

At 0x172021:

gConnection_ReceiveIndicatorData:(%04x)
%04x
CPU:%5.2f%% sPosture:%5.2f %4d 
cockpit.creceive type:%d
SndAppTrg_SystemSe(%d)
SndAppTrg_GamenSe(%d, %d)
SndAppTrg_BgmStart(SEQ_SUB_OVER)
SndAppTrg_BgmStart(SEQ_SUB_SUCCESS)
SE_crush_alert:%d
SndAppTrg_CheckSoftReset() == FALSE
dxReleasePanel() %3d, %2d
COCKPIT_MSG_ENEMY_DETECTED- bship:%d, sub:%d
sKiraiBroken:%d
COCKPIT_MSG_ALLIED_SUB_FOUND
sSysSENum = SE_time_over %d

At 0x17246C:

CPU:%5.2f%%
CPU:%5.2f%% %4d

At 0x172530:

sub:   x  %d,  y  %d
sub:  vx  %f, vy  %f
sub:  ax  %f, ay  %f
intro_InitScreen
intro_InitScene!!!!

At 0x172674:

%s:%d Panic:
%s:%d Warning:
**** Exception Occurred ****
R%02d=%08X  %c
SP =%08X
LR =%08X
PC =%08X
CPSR=%08X  SPSR=%08X  CP15=%08X
os_reset.c
unknown command
not initialized
not file-handle
[file-system] %s.
specified file is busy
invalid argument parameter
fs_file.c
tp.c
Get illegal TP command from ARM7!

At 0x182E84:

main.c
ARM7: Fail to create heap

At 0x182F24:

%s:%d Panic:
%s:%d Warning:
os_alarm.c
alarm could be already used.
os_valarm.c
v-alarm could be already used.
os_reset.c
unknown command
Failed sound alarm OS_SendMessage
pm_utility.c
Bad LED status

At 0x19A4F8:

1.94.00
ARM7: Dummy indication function is called.
ARM7: Dummy request function is called.
wmsp_port.c
too huge packet from aid %d, len=%d, childMaxSize+header=%d+%d
same aid! @ WMSP_ParsePortPacket
odd length %d @ WMSP_ParsePortPacket
corrupted packet. rest: %d, packet: %d + %d(destBmp) + %d(seqNo)
received zero length packet. discarded.
put null data
too large send-data: size=%d+%d, maxSize=%d
send an odd length packet. data->size: %d

(Source: Original TCRF research)

(Source: Original TCRF research)

Unused Text#

At 0xEB298:

VIB2.10Sep 17 2004

At 0xEF82B:

[[ IS-NITRO-DEBUGGER Debug Support Library Ver.2004.9.11 ]]

At 0x182B07:

[[ IS-NITRO-DEBUGGER Debug Support Library Ver.2004.5.19 ]]

At 0x1725A5:

Japanese

Translation

上下左右 A B : カメラ移動
(L or R) + 上下左右 : 潜水艦移動
X : ミサイル
Up/down left/right A/B : camera movement
(L or R) + up/down left/right : submarine movement
X : missile

Some text describing old button controls. The final button controls are not described in-game, but are as follows:

  • Up/Down/Left/Right: Submarine movement.
  • L/R: Submarine rotation.
  • Select: Turn bottom screen blue.
  • Missiles can only be fired from the Touch Screen.

(Source: Original TCRF research)