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

User:Kojin/Dark Cloud 2 Technical Information

From The Cutting Room Floor
Jump to navigation Jump to search

This is a sub-page of User:Kojin.

Dark Cloud 2 (Dark Chronicle) is a game developed by level-5 and was released between Dark Cloud and Dragon Quest VIII: Journey of the Cursed King (PlayStation 2). As such, the engine of Dark Cloud 2 closely resembles the engine of those games (being more similar it seems to Dragon Quest VIII). This subpage is for expanding on the details of the Level-5 engine as it pertains to Dark Cloud 2. Some details provided here may be used to gain insight into other Level-5 games.

Details are from the US release of the game with notes about differences between other releases.

Notes

Codes

Dark Cloud 2 Japanese Demo debug code

00195f38 24020000

Diffs

jp v101 vs v201

Binary files NTSCJ-SCPS-15033-v101/DATA/event/e300/e314/e314_monica.chr and NTSCJ-SCPS-15033-v201/DATA/event/e300/e314/e314_monica.chr differ
Binary files NTSCJ-SCPS-15033-v101/DATA/event/e300/e315/e315_monica.chr and NTSCJ-SCPS-15033-v201/DATA/event/e300/e315/e315_monica.chr differ
Binary files NTSCJ-SCPS-15033-v101/DATA/event/e300/e316/e316_monica.chr and NTSCJ-SCPS-15033-v201/DATA/event/e300/e316/e316_monica.chr differ
Binary files NTSCJ-SCPS-15033-v101/DATA/event/e300/e317/e317_monica.chr and NTSCJ-SCPS-15033-v201/DATA/event/e300/e317/e317_monica.chr differ
Only in NTSCJ-SCPS-15033-v101/DATA: g.lnk
Binary files NTSCJ-SCPS-15033-v101/DATA/map/s/s17/s17.stb and NTSCJ-SCPS-15033-v201/DATA/map/s/s17/s17.stb differ
Only in NTSCJ-SCPS-15033-v201/DATA: nk

en v100 vs v200

Binary files NTSCU-SCUS-97213-v100/DATA/map/i/i04/h01/i04h01_1.stb and NTSCU-SCUS-97213-v200/DATA/map/i/i04/h01/i04h01_1.stb differ

Version Numbers

Version numbers reported by the debug menu.

Serial Version ELF Modified Notes
PAPX-90506 0.152 2002/09/02 Japan Demo
SLPM-61033 0.154 2002/09/06 Dengeki D55
SCUS-97261 0.154 2002/08/18 Kiosk Demo 2.8
SCUS-97229 0.154 2003/07/28 US Demo
SCPS-15033 0.204 2002/11/07 Japan v1.01
SCPS-15033 0.208 2003/01/24 Japan v2.01
SCUS-97213 0.309 2003/01/10 US v1.00
SCUS-97213 0.309 2003/01/10 US v2.00
SCES-51190 0.334 2003/07/28 PAL
SCKA-20014 Korea

Folder Structure

Note: Not all files are included here for brevity. Instead, interesting files are highlighted.

chara/
dbg/
dungeon/
effect/
etc/
event/
img/
item/
mainchr/
map/
menu/
meswin/
sg/
snd2/
title/
wep_t/
edit.cfg 
geo0.cfg // Georama condition scripts (Japanese)
geo1.cfg // Georama condition scripts (English)
gyop.cfg
gyorace.cfg
mv.bk // Backup from mv.cfg that includes a reference to "e3rush.pss"
mv.cfg // Movie scripts for debugger
npc.cfg // NPC scripts (Japanese Demo)
npc_place.cfg
npc_place2.cfg
npc_place3.cfg
npc_place4.cfg
npc0.cfg // NPC scripts (Japanese)
npc1.cfg // NPC scripts (English)
place.cfg // NPC position scripts
test.stb
uofp.cfg

chara

dbg

cap1.cfg // Chapter 1 script
...
cap8.cfg
db_cap1.cfg // Chapter 1 script (debug)
...
db_cap8.cfg
dbg1.cfg // Dungeon 1 script
...
dbg7.cfg
game0.cfg // Script loaded by "Load cfg"
...
game22.cfg
geo.cfg // Georama script
pb.cfg // Palm Brinks script
sg0.cfg // Spheda script
sg1.cfg // Finny Frenzy script
sg2.cfg // Fishing script

Scripting Engine

Dark Cloud 2 uses a simple scripting engine to perform tasks like setting progress and npc names.

Debug Scripts

// Sets the in-game progress to chapter id
PROGRESS int;

// Loads inventory defaults
// 0: Presentation
// 1: Game Start
// 2: Debug
// 6: Weapon Only
ITEM_SET int;

// Adds Monica to party
MONICA;

// Sets Steve core
STEVE int;

// Sets available monster transformations by id
MONSTER int, int;

// Adds NPC to party
PARTY int;

GET_ITEM int [, int...];

GET_N_ITEM int, int [, int...];

// Equips weapons.
// character_id, item_id
EQUIP int, int;

HP int, int;

DEFENSE int, int;

// Game Settings
// ex:
//   OPTION "MonsterName", 1;
//   enables monster names
OPTION string, int;

// Sets the current character
// 0: Max
// 1: Monica
ACTIVE_CHARA int;

BIT_FLAG_ON int;

ALL_GEO_PARTS;

Notable Labels

So I don't forget them.

// Address
00305e5c // Location of finny frenzy crash (US v2)

// Memory
GamePad      // Controller input
DebugFlag    // Debug enable
menu_mode    // Current debug menu (0=main, 1=map, 2=game start)
select$1302  // Current debug menu selection (0=game start, 1=map, etc)
event_view   // Event selection menu
future_sel   // Future map selection menu
hdd_sel      // HDD debug menu
select$1459  // Current game start menu selection (0=from the beginning, 1=from chapter (normal), etc)

// Debug Routines
MainLoop_Fv                                  // Main loop
MenuLoop_Fv                                  // Main debug menu draw loop
EventSelect_Fv                               // Game start menu loop
EditDebugLoop__FP6CSceneP13EditDebugInfo     // Field debug menu loop

// Finny Frenzy Routines
sgInitGyoRace_FP11SubGameInfo  // Finny Frenzy init
sgLoopGyoRace_FP11SubGameInfo  // Finny Frenzy loop

File Format

img

Archive for TIM2 files and other texture metadata

HEADER

File 1 Header
File 2 Header
File 3 Header
...
FILE 1
FILE 2
FILE 3
...

VERSION 1

HEADER

struct {
  char ver[4];
  int32_t numFiles;
  int32_t unk1;
  int32_t unk2;
}

FILE HEADER

struct {
  char name[32];
  int32_t fileLoc;
  int32_t fileSize;
  int32_t align1;
}

VERSION 2

HEADER

struct {
  char ver[4];
  int32_t numFiles;
  int32_t unk1;
  int32_t unk2;
}

FILE HEADER

struct {
  char name[32];
  int64_t fileLoc;
  
}

VERSION 3

HEADER

struct {
  char ver[4];
  int32_t unk1;
  int32_t numFiles;
  int32_t align1;
}

FILE HEADER

struct {
  char name[32];
  int32_t unk1;
  int32_t fileLoc;
  int32_t unk2;
  int32_t align1;
  int32_t unk3;
  int32_t fileSize;
  int32_t unk4;
  int32_t align2;
}

pak

Generic archive.

structure:

- header
- file1
- header
- file2
...

header:

struct chrHeader {
  char name[64];
  int32_t headerSize; 
  int32_t fileSize; 
  int32_t nextHeaderOffset; 
  int32_t unk[4]; //sometimes has value
};

chr

pak archive for model-related files.

ipk

pak archive for map related stuff.

mpk

pak archive for map related stuff.

mds

Model data

mot

Motion data