EvilEngine/CSN

From Heavy Iron Modding
< EvilEngine(Redirected from CSN)

CSN
Cutscene
TypeBinary
Games usedNight of 100 Frights

Battle for Bikini Bottom
The SpongeBob SquarePants Movie
The Incredibles

Rise of the Underminer


Format[edit]

Header[edit]

CSN starts with a header, which is also present in the CTOC asset (without padding bytes).

xCutsceneInfo[edit]

This xCutsceneInfo header is 0x50 bytes in Scooby/BFBB, 0x830 bytes in TSSM and 0x1030 bytes in The Incredibles long.

Offset Type Variable Description
0x00 uint Magic
  • CTSN (Xbox/PlayStation 2) (little-endian)
  • NSTC (GameCube) (big-endian)
0x04 uint AssetID AssetID of CSN.
0x08 uint NumData Amount of xCutsceneData entries.
0x0C uint NumTime Amount of xCutsceneTime entries.
0x10 uint MaxModel Largest model in bytes (+padding bytes) in xCutsceneData.
0x14 uint MaxBufEven Largest timechunk in bytes (+padding bytes), usually the first one.
0x18 uint MaxBufOdd Largest timechunk in bytes (+padding bytes).
0x1C uint HeaderSize Size of header.
0x20 uint VisCount Amount of visibility entries.
0x24 uint VisSize Total size of all visibility entries.
0x28 uint BreakCount Amount of xCutsceneBreak entries.
0x2C uint pad null
0x30 Night of 100 Frights/Battle for Bikini Bottom
0x30 char[16] SoundLeft
0x40 char[16] SoundRight null
0x30 xCutsceneAudioTrack AudioTracks[32] The SpongeBob SquarePants Movie
0x00 uint uLeftSoundId
0x04 uint uRightSoundId
0x08 char[28] szLeftSound
0x24 char[28] szRightSound
0x30 xCutsceneAudioTrack AudioTracks[32] The Incredibles
0x00 uint uLeftSoundId
0x04 uint uRightSoundId
0x08 char[60] szLeftSound
0x44 char[60] szRightSound


xCutsceneData[edit]

  • If ChunkSize and FileOffset are 0, an external MODL is used within the HOP.
  • Every model has padding - 0x00 bytes at the end, 2048 byte alignment.
Offset Type Variable Description
0x00 uint DataType
  • 1 = MODL
  • 6 = JDTM (JDeltaModel) (Not present in Scooby)
0x04 AssetID AssetID AssetID of model.
0x08 uint ChunkSize Size of model.
0x0C uint FileOffset Offset to model.

xCutsceneTime[edit]

Offset Type Variable Description
0x00 uint TimeChunkOffs Offset to TimeChunk

Visibility[edit]

Offset Type Variable Description
0x00 uint Visibility

xCutsceneBreak[edit]

Offset Type Variable Description
0x00 float Time
0x04 int Index

Padding[edit]

Padding - 0x00 bytes, 2048 byte alignment.

TimeChunk[edit]

Each timechunk has a 0x10 byte header:

Offset Type Variable Description
0x00 float StartTime
0x04 float EndTime
0x08 uint NumData Number of entries.
0x0C uint ChunkIndex TimeChunk index.

xCutsceneData[edit]

Each entry has this 0x10 byte header:

Offset Type Variable Description
0x00 uint DataType
  • 2 = Animation
  • 3 = Camera
  • 4 = MorphTarget (Only present in scooby)
  • 5 = Sound
  • 7 = JDTA (JDeltaAnim) (Not present in scooby)
0x04 AssetID AssetID AssetID of entry.
0x08 uint ChunkSize Size of data, relative to end of this header.
0x0C uint FileOffset Starting position of data, relative to end of this header.

Every entry has padding - 0x00 bytes at the end, 16 byte alignment.

Sound[edit]

SNDS

Animation[edit]
Offset Type Variable Description
0x00 uint RootIndex
0x04 float[3] Translate Starting position?
0x10 ANIM
Camera[edit]

(BFBB/TSSM/Incredibles only)

Offset Type Variable Description
0x00 uint Amount of frames.
0x04 FLY (big-endian on GameCube)
JDTA[edit]

Unknown

MorphTarget[edit]

Unknown

Padding[edit]

Padding - 0x00 bytes, 2048 byte alignment.

AssetID List[edit]

Battle for Bikini Bottom[edit]

The following is a list of every model inside the cutscene file and their corresponding name. Some names are still unknown.

-b1_open [B101]
	19B3F661 = news_skel.dff
	CB7037E3 = king_neptune_skel.dff
	EAB142DF
	EEF23E95 = sb_skel.dff
	E7B7032A = patrick_skel.dff

-b1_round2 [B101]
	EEC1DD72
	EEF23E95 = sb_skel.dff
	E7B7032A = patrick_skel.dff

-b1_round3 [B101]
	EEF23E95 = sb_skel.dff
	E7B7032A = patrick_skel.dff

-b1_ending [B101]
	19B3F661 = news_skel.dff
	CB7037E3 = king_neptune_skel.dff
	EAB142DF
	4C039C0D = golden_spatula_golden_spatula.dff
	EEF23E95 = sb_skel.dff
	E7B7032A = patrick_skel.dff
	
-b2_open [B201]
	873173AC
	CE6C11AF
	BDDE5529 = spongebob.dff
	1D5AA8B0 = squidward.dff
	5DEB2C3E = icecube.dff
	6F7F2327 = sandy.dff

-b2_round2 [B201]
	C58FBA9D = group4_SB_frozen1.dff
	873173AC
	CE6C11AF
	5DEB2C3E = icecube.dff
	581C8370
	6F7F2327 = sandy.dff

-b2_round3 [B201]
	E8FCA8BF = group6_bubble_bowlingbal1.dff
	1F278F15 = goo_skel.dff
	BEE66906 = handle.dff
	CE6C11AF
	97A2A315
	BDDE5529 = spongebob.dff
	D1EDEEAA
	E37BA4FB
	F5095B4C
	1D5AA8B0 = squidward.dff
	FF1EBBF4
	6C130598
	6F7F2327 = sandy.dff

-b2_ending [B201]
	1F278F15 = goo_skel.dff
	CE6C11AF
	BDDE5529 = spongebob.dff
	DD70AFB2 = squidward_skel.dff
	6F7F2327 = sandy.dff

-B3_open [B302]
	BA272258 = mime_skel.dff
	CC46C1ED = dupe_duplicatotron3001_skel2.dff
	8EB6570A = sb_karate_skel.dff
	1B5BC0B9 = plankton_boss_skel.dff
	46109027 = sandy_skel.dff
	DD70AFB2 = squidward_skel.dff
	38482557
	EEF23E95 = sb_skel.dff
	E7B7032A = patrick_skel.dff
	6C6AF9E3 = karen_skel.dff
	C60604A3 = plankton_skel.dff

-B3_transition [B302]
	01CFF3B0 = sb_big_skel.dff
	8EB6570A = sb_karate_skel.dff
	1B5BC0B9 = plankton_boss_skel.dff
	3ADE96C2 = platform02_platform_b301_boss.dff
	4C40CEF7 = platform01_platform_b301_boss.dff
	46109027 = sandy_skel.dff
	DD70AFB2 = squidward_skel.dd
	EEF23E95 = sb_skel.dff
	E7B7032A = patrick_skel.dff
	6C6AF9E3 = karen_skel.dff
	C60604A3 = plankton_skel.dff
	37182A4C = duplicatotron3001_skel.dff

-B3_end_game_win [B303]
	01CFF3B0 = sb_big_skel.dff
	1B5BC0B9 = plankton_boss_skel.dff
	46109027 = sandy_skel.dff
	DD70AFB2 = squidward_skel.dff
	38482557
	EEF23E95 = sb_skel.dff
	E7B7032A = patrick_skel.dff
	6C6AF9E3 = karen_skel.dff
	80B211B7 = sb_big_armr_skel.dff
	89AA4965 = sb_big_arml_skel.dff
	C60604A3 = plankton_skel.dff
	37182A4C = duplicatotron3001_skel.dff
	
-cin_glove [BB01]
	C3E9D2BD = fish_f.dff
	4A508ABB
	AF72467B = gary.dff
	FC9FE2B3
	EB122C62

-cin_chuck [BB02]
	BEE9319C
	E389D856 = fish_g_01.dff
	A6F1332A
	21D10872 = chuck.dff
	CDC26722 = proj_missile.dff

-cin_arf_intro [BC01]
	A20322A8 = arf_dog.dff
	CC0B8B7D = hook2.dff
	DD9941CE = hook3.dff
	BA7DD52C = hook1.dff
	286622B3 = arf_skel.dff
	8B147E65 = arf_bone1.dff

-cin_prawn_opening [BC05]
	5A8AD591 = barnacle_boy_skel.dff
	CEB5ED08 = prawn.dff
	EEF23E95 = sb_skel.dff
	229D1D0C = mermaid_man_skel.dff

-cin_prawn_ending [BC05]
	CBD62B3A = prawn_skel.dff
	A05EC923
	5A8AD591 = barnacle_boy_skel.dff
	EEF23E95 = sb_skel.dff
	FD9BF34B
	229D1D0C = mermaid_man_skel.dff
	
-cin_monsoon [GL01]
	F7A5B367 = cloud.dff
	8CFA41B8
	D70E1E66 = fried_fish_h.dff
	E7053F5F = fish_h.dff
	
-cin_slick [GY01]
	54709D95
	869328D7
	3B45C4B0
	24ED7263
	AA4AFDE4
	40B29FAA
	F5653B83
	0E901468
	72D52AEC
	3E51677D
	F02B8711
	EB953B9A = fish_a_skel.dff
	D92C5D64
	F6A5A508 = slick_skel.dff
	EEF23E95 = sb_skel.dff
	67191FC3 = fish_d_skel.dff
	6E30D2DC

-GY_dutchman_open [GY04]
	0BF9646E
	41A13BE3 = spatula_golden_spatula.dff
	46109027 = sandy_skel.dff
	32B65AD6 = dutchman_skel.dff
	EEF23E95 = sb_skel.dff
	82E9EDF7

-GY_dutchman_end [GY04]
	51E90D95 = group12_golden_spatula.dff
	46109027 = sandy_skel.dff
	32B65AD6 = dutchman_skel.dff
	D19A5D40 = group12_bubble1.dff
	EEF23E95 = sb_skel.dff
	D71E617C = group12_bubble_pirate_ship.dff
	F4B5C9E2 = group12_bubble3.dff
	E3281391 = group12_bubble2.dff
	17D13684 = group12_bubble5.dff
	06438033 = group12_bubble4.dff
	
-cin_prolog [HB00]
	74A14D0A
	DF04CB7A
	CEF30AE3 = gary_skel.dff
	10B55FD7
	066622B6
	22431628
	E7D5BCDF
	ED99F335
	FF27A986
	DC0C3CE4
	EEF23E95 = sb_skel.dff
	E7B7032A = patrick_skel.dff
	6C6AF9E3 = karen_skel.dff
	C60604A3 = plankton_skel.dff
	
-DB_entry [HB01]
	71C634E0
	EEF23E95 = sb_skel.dff
	
-BC_entry [HB06]
	EEF17CC5
	6BAF1746 = couch_skel.dff
	EEF23E95 = sb_skel.dff
	229D1D0C = mermaid_man_skel.dff
	
-cin_fodder [JF01]
	19E972DB = robot_0A_fodder_bind.dff  [External]
	1DC1C387 = jellyfish_pink_bind.dff  [External]
	1D5AA8B0 = squidward.dff

-cin_hammer [JF01]
	BDDE5529 = spongebob.dff
	5E20E815 = fish_j_skel.dff
	9FF87F23 = ham_bind07_ham_bind1.dff

-cin_tartar [JF03]
	D49D1B0F
	23731D5C = robot_tar_skel.dff
	C30F64BE
	B181AE6D
	1D2392ED = pat.dff
	B9F7CE9A
	33BE64E9
	CB8584EB
	454C1B3A
	87856DE9
	9913243A
	75F7B798

-cin_jf_kingjelly_open [JF04]
	6E4E9930 = curtain.dff
	BDDE5529 = spongebob.dff
	2AE7B631 = kingjelly.dff

-cin_jf_kingjelly_end [JF04]
	6E4E9930 = curtain.dff
	91AB287B
	2AE7B631 = kingjelly.dff
	EEF23E95 = sb_skel.dff
	
-cin_tublet_intro [KF01]
	C49F56E5
	B311A094
	9AAF4D48
	A183EA43
	B673A54F = fish_h_skel.dff
	
-game_win [PG12]
	CEF30AE3 = gary_skel.dff
	19B3F661 = news_skel.dff
	0520AD6E = larry_lobster_skel.dff
	BF0C202E 
	5A8AD591 = barnacle_boy_skel.dff
	DD70AFB2 = squidward_skel.dff
	EEF23E95 = sb_skel.dff
	C360D2CF = mr_skel.dff
	1ABD8E14 = mspuffs_skel.dff
	229D1D0C = mermaid_man_skel.dff
	0C1FE7DE = King_neptune_bind_gecklund_group1.dff
	4C46724C = bubblebuddy.dff
	6F7F2327 = sandy.dff
	C60604A3 = plankton_skel.dff 
	
-cin_sleepytime_intro [RB01]
	B25C1C6C = fish_e.dff
	03E711FA
	4538E751 = sleepytime.dff
	201047AA