Script固定長ヘッダー
00-03 » CHAR GameTag[4]; // e.g. "SR01" "AE01" "DP01" actually unchecked by the program
04-07 » DWORD ScriptFilesize; // size of current script (useful b/c .kgo is in HyPack e.g. script.pak)
08-0B » DWORD ScriptNumber; // current script's number
0C-0F » DWORD ?CRC?; // unknown
»
//#ignored. Maybe used in earlier versions.
10-13 DWORD KgoFixedHeaderSizeIgnored;
14-17 DWORD KgoVariableHeaderSizeIgnored;
18-1B DWORD SceneDescriptorsCountIgnored;
»
1C-1F » DWORD KgoHeaderSize; // Contains a fixed part plus optional variable part
// #SR01, AE01: fixed part 52 bytes
// #DP01: fixed part 64 bytes
// if set(variable part) @offset 52/64: *x* Scene Descriptors [sizeof sc_desc, .....]
20-23 » DWORD KgoDataSize; // See "Format of data" section for details on this area
»
//#ignored. Maybe used in earlier versions.
24-27 DWORD KgoSceneFuncsCountIgnored;
»
28-2B » DWORD TextOffset; // set if TextLength is not zero. Normally equals (HeaderSize + KgoDataSize)
2C-2F » DWORD TextLength; // May be zero. @offset: (TextOffset + TextLength) may be before EOF because of memory Alignment
30-33 » DWORD MessageEntriesCount; //
// #SR01,AE01: Number of strings in message table
// #DP01:ignored
=== DP01 specific fields ===
34-37 » DWORD TextSectionOffset; // same as 28-2B??
// #DP01 only
38-3B » DWORD TextSectionSize; // Section ends at last WORD-aligned '00' byte
// #DP01 only
3C-3F » DWORD MessageEntriesCount2;// Number of strings in ext message table
// #DP01 only
=== Scene Descriptor (拡張ヘッダー) ===
sc_desc: A single script may contain zero, one or several scenes
This comes right after the fixed header, but can also be
absent. Check HeaderSize to know whether you can legally read here.
SR01/AE01: SizeOfSceneDescription = 32 (offset = 52 + i * 32)
00-01 » WORD SizeOfSceneDescription;
02-03 » WORD SceneNameAllocSize; // SR01, AE01: Aligned block size necessary for scene name.
// This determines the size of the structure.
04-05 » WORD ScriptNumber; // SR01, AE01: Script containing the scene
06-07 » WORD ?SomeSize?;
08-0B » DWORD OffsetInData; // i.e. just after end of header (after varlen header padding)
0C-0F » DWORD SceneID; // ÏD defined in script header (a script may contain several scenes)
10-13 » DWORD SceneID2; // ditto
14-xx » CHAR SceneName[SceneNameAllocSize]; // NUL-terminated scene name
=== DP01 scene descriptor ===
DP01: SizeOfSceneDescription = Varies
00-01 » WORD SizeOfSceneDescription;
02-03 » WORD ScriptNumber;
04-05 » WORD ZeroFieldIgnored; // #DP01: Always 0, ignored
06-07 » WORD SceneNameAllocSize;
08-0B » DWORD OffsetInData; // i.e. just after end of header (after varlen header padding)
0C-0F » DWORD SceneID; // ÏD defined in script header (a script may contain several scenes)
10-13 » DWORD SceneID2; // ditto
14-xx » CHAR SceneName[SceneNameAllocSize]; // NUL-terminated scene name