Jak3 Build Environment (#3098)

This sets out the bones of a Jak 3 build, many things are stubbed out,
guessed, or copied from Jak 2 but it should at least be good enough to:
run `task set-game-jak3`
launch the repl
run builds from the repl

build outputs themselves are untested but the build itself runs without
errors

---------

Co-authored-by: Tyler Wilding <xtvaser@gmail.com>
This commit is contained in:
jabermony 2024-01-16 01:37:16 +00:00 committed by GitHub
parent 637b043293
commit 07427799a6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
324 changed files with 72465 additions and 387 deletions

View File

@ -1 +0,0 @@
endOfLine: "auto"

11
.prettierrc.json Normal file
View File

@ -0,0 +1,11 @@
{
"endOfLine": "auto",
"overrides": [
{
"files": ["**/*.jsonc"],
"options": {
"parser": "json"
}
}
]
}

View File

@ -74,16 +74,6 @@ tasks:
msg: "Couldn't locate compiler executable in '{{.GOALC_BIN_RELEASE_DIR}}/goalc'" msg: "Couldn't locate compiler executable in '{{.GOALC_BIN_RELEASE_DIR}}/goalc'"
cmds: cmds:
- "{{.GOALC_BIN_RELEASE_DIR}}/goalc --user-auto --game {{.GAME}}" - "{{.GOALC_BIN_RELEASE_DIR}}/goalc --user-auto --game {{.GAME}}"
format:
desc: "Format code"
cmds:
- cmd: python ./scripts/cpp/format-includes.py
- cmd: python ./third-party/run-clang-format/run-clang-format.py -r common decompiler game goalc test tools lsp -i
# npm install -g prettier
- cmd: npx prettier --write ./decompiler/config/jak1/**/*.jsonc
ignore_error: true
- cmd: npx prettier --write ./decompiler/config/jak2/**/*.jsonc
ignore_error: true
format-json: format-json:
desc: "Format code" desc: "Format code"
cmds: cmds:
@ -92,6 +82,15 @@ tasks:
ignore_error: true ignore_error: true
- cmd: npx prettier --write ./decompiler/config/jak2/**/*.jsonc - cmd: npx prettier --write ./decompiler/config/jak2/**/*.jsonc
ignore_error: true ignore_error: true
- cmd: npx prettier --write ./decompiler/config/jak3/**/*.jsonc
ignore_error: true
format:
desc: "Format code"
cmds:
- cmd: python ./scripts/cpp/format-includes.py
- cmd: python ./third-party/run-clang-format/run-clang-format.py -r common decompiler game goalc test tools lsp -i
- task: format-json
# DECOMPILING # DECOMPILING
decomp: decomp:
cmds: cmds:

View File

@ -11,13 +11,15 @@ GameVersion game_name_to_version(const std::string& name) {
return GameVersion::Jak1; return GameVersion::Jak1;
} else if (name == "jak2") { } else if (name == "jak2") {
return GameVersion::Jak2; return GameVersion::Jak2;
} else if (name == "jak3") {
return GameVersion::Jak3;
} else { } else {
ASSERT_MSG(false, fmt::format("invalid game name: {}", name)); ASSERT_MSG(false, fmt::format("invalid game name: {}", name));
} }
} }
bool valid_game_version(const std::string& name) { bool valid_game_version(const std::string& name) {
return name == "jak1" || name == "jak2"; return name == "jak1" || name == "jak2" || name == "jak3";
} }
std::string version_to_game_name(GameVersion v) { std::string version_to_game_name(GameVersion v) {
@ -26,6 +28,8 @@ std::string version_to_game_name(GameVersion v) {
return "jak1"; return "jak1";
case GameVersion::Jak2: case GameVersion::Jak2:
return "jak2"; return "jak2";
case GameVersion::Jak3:
return "jak3";
default: default:
ASSERT_MSG(false, fmt::format("no game_name for version: {} found", fmt::underlying(v))); ASSERT_MSG(false, fmt::format("no game_name for version: {} found", fmt::underlying(v)));
} }
@ -37,13 +41,16 @@ std::string version_to_game_name_external(GameVersion v) {
return "Jak 1"; return "Jak 1";
case GameVersion::Jak2: case GameVersion::Jak2:
return "Jak 2"; return "Jak 2";
case GameVersion::Jak3:
return "Jak 3";
default: default:
ASSERT_MSG(false, fmt::format("no game_name for version: {} found", fmt::underlying(v))); ASSERT_MSG(false, fmt::format("no game_name for version: {} found", fmt::underlying(v)));
} }
} }
std::vector<std::string> valid_game_version_names() { std::vector<std::string> valid_game_version_names() {
return {game_version_names[GameVersion::Jak1], game_version_names[GameVersion::Jak2]}; return {game_version_names[GameVersion::Jak1], game_version_names[GameVersion::Jak2],
game_version_names[GameVersion::Jak3]};
} }
std::string build_revision() { std::string build_revision() {

View File

@ -191,7 +191,7 @@ TP_Type SimpleExpression::get_type(const TypeState& input,
return TP_Type::make_from_ts("float"); return TP_Type::make_from_ts("float");
} }
// new for jak 2: // new for jak 2:
if (env.version == GameVersion::Jak2 && in_type.is_integer_constant() && if (env.version >= GameVersion::Jak2 && in_type.is_integer_constant() &&
(s64)((s32)in_type.get_integer_constant()) == (s64)in_type.get_integer_constant()) { (s64)((s32)in_type.get_integer_constant()) == (s64)in_type.get_integer_constant()) {
return TP_Type::make_from_ts("float"); return TP_Type::make_from_ts("float");
} }
@ -406,7 +406,7 @@ TP_Type SimpleExpression::get_type_int2(const TypeState& input,
} }
if (m_kind == Kind::RIGHT_SHIFT_ARITH) { if (m_kind == Kind::RIGHT_SHIFT_ARITH) {
if (env.version == GameVersion::Jak2 && arg0_type.typespec().base_type() == "float") { if (env.version >= GameVersion::Jak2 && arg0_type.typespec().base_type() == "float") {
return TP_Type::make_from_ts(TypeSpec("float")); return TP_Type::make_from_ts(TypeSpec("float"));
} }
return TP_Type::make_from_ts(TypeSpec("int")); return TP_Type::make_from_ts(TypeSpec("int"));

View File

@ -170,7 +170,7 @@ FormElement* handle_get_property_struct(const std::vector<Form*>& forms,
const Env& env) { const Env& env) {
return handle_get_property_data_or_structure( return handle_get_property_data_or_structure(
forms, pool, env, ResLumpMacroElement::Kind::STRUCT, forms, pool, env, ResLumpMacroElement::Kind::STRUCT,
env.version == GameVersion::Jak2 ? "(the-as structure #f)" : "#f", TypeSpec("structure")); env.version >= GameVersion::Jak2 ? "(the-as structure #f)" : "#f", TypeSpec("structure"));
} }
FormElement* handle_get_property_value(const std::vector<Form*>& forms, FormElement* handle_get_property_value(const std::vector<Form*>& forms,

View File

@ -3255,7 +3255,7 @@ goos::Object DefpartgroupElement::to_form_internal(const Env& env) const {
if (offset) { if (offset) {
// jak2 has switched this field to a signed 16 bit number // jak2 has switched this field to a signed 16 bit number
if (env.version == GameVersion::Jak2) { if (env.version >= GameVersion::Jak2) {
result += fmt::format(" :offset {}", (s16)offset); result += fmt::format(" :offset {}", (s16)offset);
} else { } else {
result += fmt::format(" :offset {}", offset); result += fmt::format(" :offset {}", offset);

View File

@ -122,7 +122,7 @@ Form* try_cast_simplify(Form* in,
return in; return in;
} }
if (env.version == GameVersion::Jak2) { if (env.version >= GameVersion::Jak2) {
if (new_type == TypeSpec("float")) { if (new_type == TypeSpec("float")) {
auto ic = get_goal_integer_constant(in, env); auto ic = get_goal_integer_constant(in, env);
if (ic) { if (ic) {
@ -138,7 +138,7 @@ Form* try_cast_simplify(Form* in,
if (new_type == TypeSpec("meters")) { if (new_type == TypeSpec("meters")) {
auto fc = get_goal_float_constant(in); auto fc = get_goal_float_constant(in);
if (!fc && env.version == GameVersion::Jak2) { if (!fc && env.version >= GameVersion::Jak2) {
auto ic = get_goal_integer_constant(in, env); auto ic = get_goal_integer_constant(in, env);
if (ic) { if (ic) {
ASSERT((s64)*ic == (s64)(s32)*ic); ASSERT((s64)*ic == (s64)(s32)*ic);
@ -2853,7 +2853,7 @@ bool try_to_rewrite_vector_inline_ctor(const Env& env,
token_matchers = {DerefTokenMatcher::string("quad")}; token_matchers = {DerefTokenMatcher::string("quad")};
} }
if (env.version == GameVersion::Jak2) { if (env.version >= GameVersion::Jak2) {
token_matchers = {DerefTokenMatcher::string("quad")}; token_matchers = {DerefTokenMatcher::string("quad")};
} }
@ -3376,7 +3376,7 @@ void FunctionCallElement::update_from_stack(const Env& env,
argset = argset.substr(1); argset = argset.substr(1);
auto argsym = arg_forms.at(1)->to_string(env); auto argsym = arg_forms.at(1)->to_string(env);
// convert the float param // convert the float param
if (env.version == GameVersion::Jak2) { if (env.version >= GameVersion::Jak2) {
static const std::unordered_set<std::string> use_degrees_settings = { static const std::unordered_set<std::string> use_degrees_settings = {
"matrix-blend-max-angle", "matrix-blend-max-angle",
"fov", "fov",
@ -4081,7 +4081,7 @@ void DerefElement::update_from_stack(const Env& env,
} }
auto as_simple_expr = m_base->try_as_element<SimpleExpressionElement>(); auto as_simple_expr = m_base->try_as_element<SimpleExpressionElement>();
if (env.version == GameVersion::Jak2 && as_simple_expr && as_simple_expr->expr().is_identity() && if (env.version >= GameVersion::Jak2 && as_simple_expr && as_simple_expr->expr().is_identity() &&
as_simple_expr->expr().get_arg(0).is_sym_val() && as_simple_expr->expr().get_arg(0).is_sym_val() &&
as_simple_expr->expr().get_arg(0).get_str() == "*game-info*" && m_tokens.size() >= 2 && as_simple_expr->expr().get_arg(0).get_str() == "*game-info*" && m_tokens.size() >= 2 &&
m_tokens.at(0).is_field_name("sub-task-list") && m_tokens.at(1).is_int()) { m_tokens.at(0).is_field_name("sub-task-list") && m_tokens.at(1).is_int()) {

View File

@ -263,7 +263,7 @@ static void link_v2_or_v4(LinkedObjectFile& f,
const uint8_t* code_end = const uint8_t* code_end =
&data.at(code_offset + code_size - 1) + 1; // get the pointer to one past the end. &data.at(code_offset + code_size - 1) + 1; // get the pointer to one past the end.
if (version == GameVersion::Jak2) { if (version >= GameVersion::Jak2) {
while (((code_end - code_start) % 4)) { while (((code_end - code_start) % 4)) {
code_end++; code_end++;
} }
@ -689,7 +689,7 @@ static void link_v3(LinkedObjectFile& f,
segment_size++; segment_size++;
} }
if (game_version == GameVersion::Jak2) { if (game_version >= GameVersion::Jak2) {
while (segment_size % 4) { while (segment_size % 4) {
segment_size++; segment_size++;
} }

View File

@ -647,8 +647,8 @@ void ObjectFileDB::ir2_type_analysis_pass(int seg, const Config& config, ObjectF
} }
constexpr bool kForceNewTypes = false; constexpr bool kForceNewTypes = false;
if (config.game_version == GameVersion::Jak2 || kForceNewTypes) { if (config.game_version != GameVersion::Jak1 || kForceNewTypes) {
// use new types for jak 2 always // use new types for jak 2/3 always
types2::Input in; types2::Input in;
types2::Output out; types2::Output out;
in.func = &func; in.func = &func;

View File

@ -1846,7 +1846,24 @@ void inspect_top_level_for_metadata(Function& top_level,
if (state_name.empty()) { if (state_name.empty()) {
continue; continue;
} }
objectFile.state_methods[type_match][method_id] = state_name; // Ensure there are no labels between now and when the `method-set!` is actually called
bool was_another_label = false;
for (int j = i; j < (int)top_level.ir2.atomic_ops->ops.size(); j++) {
const auto& temp_aop = top_level.ir2.atomic_ops->ops.at(j);
const std::string temp_as_str = temp_aop.get()->to_string(top_level.ir2.env);
if (temp_as_str.find("call!") != std::string::npos) {
break;
}
auto temp_label_match =
get_regex_match(temp_as_str, std::regex("\\(set!\\s[^\\s]*\\s(L.*)\\)"));
if (!temp_label_match.empty()) {
was_another_label = true;
break;
}
}
if (!was_another_label) {
objectFile.state_methods[type_match][method_id] = state_name;
}
} }
} }

File diff suppressed because it is too large Load Diff

View File

@ -125,5 +125,14 @@
"apply_patches": true, "apply_patches": true,
// what to patch an object to and what the patch file is // what to patch an object to and what the patch file is
"object_patches": { "object_patches": {
},
"version_overrides": {
"ntsc_v1": {},
"pal": {
"game_name": "jak3_pal",
"expected_elf_name": "SCES_524.60",
"is_pal": true,
"object_patches": {}
}
} }
} }

View File

@ -755,14 +755,21 @@
"generic-warp-dest", "generic-warp-dest",
"generic-warp-envmap-dest", "generic-warp-envmap-dest",
"generic-no-light-proc" "generic-no-light-proc"
], ],
"mips2c_jump_table_functions": {}, "mips2c_jump_table_functions": {},
// there are some missing textures. I don't know what the game actually does here. // there are some missing textures. I don't know what the game actually does here.
// the format for entries is [level, tpage, index] // the format for entries is [level, tpage, index]
"missing_textures": [["lfac", 0, 0], ["ltow", 0, 0], ["lcit", 0, 0], ["pow", 0, 0], ["wasintro", 0, 0], ["lfacctyb", 0, 0], ["intpfall", 0, 0]], "missing_textures": [
["lfac", 0, 0],
["ltow", 0, 0],
["lcit", 0, 0],
["pow", 0, 0],
["wasintro", 0, 0],
["lfacctyb", 0, 0],
["intpfall", 0, 0]
],
// some object files have garbage pad data at the end which makes the decompiler // some object files have garbage pad data at the end which makes the decompiler
// assume they must be different files, such as the art group for orb-cache-top. // assume they must be different files, such as the art group for orb-cache-top.

View File

@ -7,7 +7,7 @@
// most objects are part of CGO/DGO files (both go in dgo_names). This includes levels and the engine // most objects are part of CGO/DGO files (both go in dgo_names). This includes levels and the engine
// the DGOs will be processed in this order. Usually it's best to have KERNEL, ENGINE, then the levels when // the DGOs will be processed in this order. Usually it's best to have KERNEL, ENGINE, then the levels when
// you want to run on the entire game. // you want to run on the entire game.
"dgo_names":[ "dgo_names": [
//"CGO/ART.CGO", //"CGO/ART.CGO",
"CGO/KERNEL.CGO", "CGO/KERNEL.CGO",
// "CGO/ENGINE.CGO", // "CGO/ENGINE.CGO",
@ -285,7 +285,7 @@
"DGO/LCTYPROT.DGO", "DGO/LCTYPROT.DGO",
"DGO/DESHOVER.DGO", "DGO/DESHOVER.DGO",
"DGO/DESBOSS2.DGO" "DGO/DESBOSS2.DGO"
], ],
// some objects are part of STR files (streaming data). // some objects are part of STR files (streaming data).
"str_file_names": [], "str_file_names": [],

View File

@ -1 +1 @@
{} {}

View File

@ -1 +1 @@
{} {}

View File

@ -1 +1 @@
{} {}

View File

@ -1368,7 +1368,7 @@ void types2_for_add(types2::Type& type_out,
} }
} }
if (env.version == GameVersion::Jak2 && tc(dts, TypeSpec("symbol"), arg1_type) && if (env.version >= GameVersion::Jak2 && tc(dts, TypeSpec("symbol"), arg1_type) &&
is_int_or_uint(dts, arg0_type)) { is_int_or_uint(dts, arg0_type)) {
if (arg0_type.is_integer_constant(jak2::SYM_TO_STRING_OFFSET)) { if (arg0_type.is_integer_constant(jak2::SYM_TO_STRING_OFFSET)) {
// symbol -> GOAL String // symbol -> GOAL String

View File

@ -0,0 +1,57 @@
;; "project file" for subtitles make tool.
(subtitle-v2
(file-json
:language-id 0
:text-version "jak2"
:lines "game/assets/jak2/subtitle/subtitle_lines_en-US.json"
:meta "game/assets/jak2/subtitle/subtitle_meta_en-US.json")
(file-json
:language-id 1
:text-version "jak2"
:lines "game/assets/jak2/subtitle/subtitle_lines_fr-FR.json"
:meta "game/assets/jak2/subtitle/subtitle_meta_fr-FR.json"
:lines-base "game/assets/jak2/subtitle/subtitle_lines_en-US.json"
:meta-base "game/assets/jak2/subtitle/subtitle_meta_en-US.json")
(file-json
:language-id 2
:text-version "jak2"
:lines "game/assets/jak2/subtitle/subtitle_lines_de-DE.json"
:meta "game/assets/jak2/subtitle/subtitle_meta_de-DE.json"
:lines-base "game/assets/jak2/subtitle/subtitle_lines_en-US.json"
:meta-base "game/assets/jak2/subtitle/subtitle_meta_en-US.json")
(file-json
:language-id 3
:text-version "jak2"
:lines "game/assets/jak2/subtitle/subtitle_lines_es-ES.json"
:meta "game/assets/jak2/subtitle/subtitle_meta_es-ES.json"
:lines-base "game/assets/jak2/subtitle/subtitle_lines_en-US.json"
:meta-base "game/assets/jak2/subtitle/subtitle_meta_en-US.json")
(file-json
:language-id 4
:text-version "jak2"
:lines "game/assets/jak2/subtitle/subtitle_lines_it-IT.json"
:meta "game/assets/jak2/subtitle/subtitle_meta_it-IT.json"
:lines-base "game/assets/jak2/subtitle/subtitle_lines_en-US.json"
:meta-base "game/assets/jak2/subtitle/subtitle_meta_en-US.json")
(file-json
:language-id 5
:text-version "jak2"
:lines "game/assets/jak2/subtitle/subtitle_lines_jp-JP.json"
:lines-base "game/assets/jak2/subtitle/subtitle_lines_en-US.json"
:meta "game/assets/jak2/subtitle/subtitle_meta_jp-JP.json"
:meta-base "game/assets/jak2/subtitle/subtitle_meta_en-US.json")
(file-json
:language-id 6
:text-version "jak2"
:lines "game/assets/jak2/subtitle/subtitle_lines_ko-KR.json"
:meta "game/assets/jak2/subtitle/subtitle_meta_ko-KR.json"
:lines-base "game/assets/jak2/subtitle/subtitle_lines_en-US.json"
:meta-base "game/assets/jak2/subtitle/subtitle_meta_en-US.json")
(file-json
:language-id 7
:text-version "jak2"
:lines "game/assets/jak2/subtitle/subtitle_lines_en-GB.json"
:meta "game/assets/jak2/subtitle/subtitle_meta_en-GB.json"
:lines-base "game/assets/jak2/subtitle/subtitle_lines_en-US.json"
:meta-base "game/assets/jak2/subtitle/subtitle_meta_en-US.json"))

View File

@ -0,0 +1,18 @@
;; "project file" for text make tool.
;; it's very simple... a list of (action args...)
;; There are two actions:
;; - file-json (A path to a json file)
;; - args: (language_id text_version group_name '(filename list))
;; - file (A path to a GOAL data file)
;; - the same arguments are provided within the file itself
(text
;; NOTE : we compile using the fixed v2 encoding because it's what we use.
(file "$DECOMP/assets/game_text.txt") ;; this is the decompiler-generated file!
;; add custom files down here
(file-json 0 jak2 "common" '("game/assets/jak3/text/game_custom_text_en-US.json"))
(file-json 5 jak2 "common" '("game/assets/jak3/text/game_custom_text_ja-JP.json"))
(file-json 7 jak2 "common" '("game/assets/jak3/text/game_custom_text_en-GB.json"))
)

View File

@ -0,0 +1,5 @@
{
"cutscenes": {},
"other": {},
"speakers": {}
}

View File

@ -0,0 +1,5 @@
{
"cutscenes": {},
"other": {},
"speakers": {}
}

View File

@ -0,0 +1,5 @@
{
"cutscenes": {},
"other": {},
"speakers": {}
}

View File

@ -0,0 +1,5 @@
{
"cutscenes": {},
"other": {},
"speakers": {}
}

View File

@ -0,0 +1,5 @@
{
"cutscenes": {},
"other": {},
"speakers": {}
}

View File

@ -0,0 +1,5 @@
{
"cutscenes": {},
"other": {},
"speakers": {}
}

View File

@ -0,0 +1,5 @@
{
"cutscenes": {},
"other": {},
"speakers": {}
}

View File

@ -0,0 +1,5 @@
{
"cutscenes": {},
"other": {},
"speakers": {}
}

View File

@ -0,0 +1,4 @@
{
"cutscenes": {},
"other": {}
}

View File

@ -0,0 +1,4 @@
{
"cutscenes": {},
"other": {}
}

View File

@ -0,0 +1,4 @@
{
"cutscenes": {},
"other": {}
}

View File

@ -0,0 +1,4 @@
{
"cutscenes": {},
"other": {}
}

View File

@ -0,0 +1,4 @@
{
"cutscenes": {},
"other": {}
}

View File

@ -0,0 +1,4 @@
{
"cutscenes": {},
"other": {}
}

View File

@ -0,0 +1,4 @@
{
"cutscenes": {},
"other": {}
}

View File

@ -0,0 +1,4 @@
{
"cutscenes": {},
"other": {}
}

View File

@ -0,0 +1,2 @@
{
}

View File

@ -0,0 +1,2 @@
{
}

View File

@ -0,0 +1,14 @@
{
"1a3": "しゅうへん機器をぬいたり, さしたり, 電源を 切ったりは しないでください",
"1b5": "このアイコンが あらわれている間、しゅうへん機器をぬいたり, さしたり, 電源を 切ったりは しないでください",
"1215": "デフォルト",
"1216": "モーフィング・ガン",
"1217": "ジェットボード",
"1218": "タイタンスーツ",
"1219": "ダークジャック",
"121a": "乗り物",
"124d": "オートセーブを無効にする",
"124e": "オートセーブ オフ",
"124f": "オートセーブを切っても よろしいでしょうか?",
"1288": "パーティクル カリング"
}

View File

@ -1193,4 +1193,8 @@
(asm-file "goal_src/jak2/compiler-setup.gc") (asm-file "goal_src/jak2/compiler-setup.gc")
(seval (fmt #t "Jak 2 Mode\n")) (seval (fmt #t "Jak 2 Mode\n"))
) )
((eq? GAME_VERSION 'jak3)
(asm-file "goal_src/jak3/compiler-setup.gc")
(seval (fmt #t "Jak 3 Mode\n"))
)
) )

View File

@ -0,0 +1,37 @@
;;
;; Compiler Setup for Jak 3
;;
;; load kernel type definitions.
;; these types/functions are provided by Jak 3's runtime.
(asm-file "goal_src/jak3/kernel-defs.gc")
;; load jak 3 project
(load-project "goal_src/jak3/game.gp")
(defmacro basic? (obj)
;; todo, make this more efficient
`(= 4 (logand (the integer ,obj) #b111))
)
(defmacro pair? (obj)
;; todo, make this more efficient
;`(= 2 (logand (the integer ,obj) #b111))
`(< (shl (the-as int ,obj) 62) 0)
)
(defmacro not-pair? (obj)
`(>= (shl (the-as int ,obj) 62) 0)
)
(defmacro binteger? (obj)
`(zero? (logand (the integer ,obj) #b111))
)
(defmacro rtype-of (obj)
`(cond ((binteger? ,obj) binteger)
((pair? ,obj) pair)
((basic? ,obj) (-> (the basic ,obj) type))
(else symbol)
)
)

View File

@ -0,0 +1,18 @@
("ARENACST.DGO"
("tpage-1484.o"
"tpage-1245.go"
"tpage-1248.go"
"tpage-1246.go"
"daxter-highres-ag.go"
"pecker-highres-ag.go"
"jakc-highres-ag.go"
"sig-highres-ag.go"
"king-highres-ag.go"
"seem-highres-ag.go"
"jak-highres-ag.go"
"battle-amulet-ag.go"
"blue-gun-mod-one-ag.go"
"wstd-gate-pass-ag.go"
"yellow-barrel-ag.go"
"arenacst.o"
))

21
goal_src/jak3/dgos/cfa.gd Normal file
View File

@ -0,0 +1,21 @@
("CFA.DGO"
("ctyfarm-obs.o"
"ctyfarma-part.o"
"ctyfarmb-part.o"
"tpage-246.go"
"tpage-244.go"
"tpage-245.go"
"tpage-243.go"
"tpage-247.go"
"tpage-241.go"
"tpage-238.go"
"com-airlock-outer-ag.go"
"com-airlock-inner-ag.go"
"farm-chilirots-ag.go"
"farm-cabbage-ag.go"
"farm-marrow-ag.go"
"farm-beetree-ag.go"
"farm-small-cabbage-ag.go"
"farm-sprinkler-barrels-ag.go"
"ctyfarma-vis.o"
))

20
goal_src/jak3/dgos/cfb.gd Normal file
View File

@ -0,0 +1,20 @@
("CFB.DGO"
("ctyfarm-obs.o"
"ctyfarma-part.o"
"ctyfarmb-part.o"
"tpage-258.go"
"tpage-256.go"
"tpage-257.go"
"tpage-255.go"
"tpage-259.go"
"tpage-253.go"
"tpage-250.go"
"yakow-ag.go"
"farm-chilirots-ag.go"
"farm-cabbage-ag.go"
"farm-marrow-ag.go"
"farm-beetree-ag.go"
"farm-small-cabbage-ag.go"
"farm-sprinkler-barrels-ag.go"
"ctyfarmb-vis.o"
))

14
goal_src/jak3/dgos/cgb.gd Normal file
View File

@ -0,0 +1,14 @@
("CGB.DGO"
("ctygenb-part.o"
"tpage-226.go"
"tpage-224.go"
"tpage-225.go"
"tpage-227.go"
"tpage-222.go"
"tpage-219.go"
"jakc-highres-ag.go"
"city-flitter-ag.go"
"com-airlock-outer-ag.go"
"battle-amulet-ag.go"
"ctygenb-vis.o"
))

15
goal_src/jak3/dgos/cia.gd Normal file
View File

@ -0,0 +1,15 @@
("CIA.DGO"
("elec-gate.o"
"ctyinda-part.o"
"ctyinda-obs.o"
"tpage-180.go"
"tpage-1401.go"
"tpage-179.go"
"tpage-177.go"
"tpage-175.go"
"krimson-wall-ag.go"
"com-airlock-outer-ag.go"
"ctyinda-evil-streetlamp-ag.go"
"vin-door-ctyinda-ag.go"
"ctyinda-vis.o"
))

11
goal_src/jak3/dgos/cib.gd Normal file
View File

@ -0,0 +1,11 @@
("CIB.DGO"
("ctyindb-part.o"
"ctyindb-obs.o"
"tpage-188.go"
"tpage-186.go"
"tpage-187.go"
"tpage-184.go"
"tpage-181.go"
"krimson-wall-ag.go"
"ctyindb-vis.o"
))

View File

@ -0,0 +1,10 @@
("CITYCAST.DGO"
("tpage-2094.o"
"tpage-2095.go"
"daxter-highres-ag.go"
"jakc-highres-ag.go"
"torn-highres-ag.go"
"palmpilot-b-ag.go"
"particleman-ag.go"
"citycast.o"
))

View File

@ -0,0 +1,50 @@
("COMBA.DGO"
("squad-control-h.o"
"squad-control.o"
"vehicle-h.o"
"vehicle-part.o"
"vehicle-effects.o"
"vehicle.o"
"vehicle-util.o"
"vehicle-physics.o"
"vehicle-states.o"
"vehicle-manager.o"
"vehicle-hud.o"
"turret-control.o"
"target-pilot.o"
"pilot-states.o"
"comb-mood.o"
"comb-part.o"
"comb-obs.o"
"comb-sentry.o"
"comb-field.o"
"comb-scenes.o"
"h-sled.o"
"comb-travel.o"
"comba-init.o"
"jak-pilot+0-ag.go"
"jak-pilot-hcar+0-ag.go"
"jak-pilot-wcar+0-ag.go"
"jak-pilot-gun+0-ag.go"
"tpage-2431.go"
"tpage-1577.go"
"tpage-2889.go"
"tpage-2481.go"
"tpage-2496.go"
"tpage-2676.go"
"daxter-highres-ag.go"
"pecker-highres-ag.go"
"jakc-highres-ag.go"
"comb-pillar-ag.go"
"pre-sled-ag.go"
"comb-obstacle-ag.go"
"comb-sentinel-ag.go"
"comb-rail-rider-ag.go"
"comb-energy-ring-ag.go"
"precursor-ag.go"
"vehicle-explosion-ag.go"
"kidmedallion-ag.go"
"particleman-ag.go"
"security-wall-ag.go"
"comba.o"
))

View File

@ -0,0 +1,4 @@
("COMBB.DGO"
("tpage-2189.o"
"combb.o"
))

View File

@ -0,0 +1,4 @@
("COMBC.DGO"
("tpage-2191.o"
"combc.o"
))

View File

@ -0,0 +1,4 @@
("COMBD.DGO"
("tpage-2199.o"
"combd.o"
))

View File

@ -0,0 +1,4 @@
("COMBE.DGO"
("tpage-2599.o"
"combe.o"
))

View File

@ -0,0 +1,7 @@
("COMBN.DGO"
("tpage-2210.o"
"tpage-2595.go"
"tpage-2211.go"
"min-elevator-ag.go"
"combn.o"
))

View File

@ -0,0 +1,13 @@
("COMBX.DGO"
("pecker-ingame.o"
"combx-obs.o"
"combx-scenes.o"
"tpage-2333.go"
"tpage-2306.go"
"tpage-2334.go"
"daxter-highres-ag.go"
"pecker-ingame-ag.go"
"jakc-highres-ag.go"
"tpl-elevator-ag.go"
"combx.o"
))

16
goal_src/jak3/dgos/cpo.gd Normal file
View File

@ -0,0 +1,16 @@
("CPO.DGO"
("ctyport-part.o"
"ctyport-scenes.o"
"tpage-274.go"
"tpage-272.go"
"tpage-273.go"
"tpage-268.go"
"tpage-265.go"
"com-airlock-outer-ag.go"
"broken-mdaxter-ag.go"
"barge-ag.go"
"mecha-daxter-ag.go"
"air-train-ag.go"
"hip-door-a-ag.go"
"ctyport-vis.o"
))

11
goal_src/jak3/dgos/cta.gd Normal file
View File

@ -0,0 +1,11 @@
("CTA.DGO"
("des-burning-bush.o"
"ctysluma-part.o"
"neon-baron-part.o"
"tpage-136.go"
"tpage-135.go"
"tpage-133.go"
"tpage-131.go"
"des-burning-bush-ag.go"
"ctysluma-vis.o"
))

10
goal_src/jak3/dgos/ctb.gd Normal file
View File

@ -0,0 +1,10 @@
("CTB.DGO"
("ctyslumb-part.o"
"tpage-166.go"
"tpage-165.go"
"tpage-1743.go"
"tpage-162.go"
"tpage-159.go"
"cty-door-ag.go"
"ctyslumb-vis.o"
))

13
goal_src/jak3/dgos/ctc.gd Normal file
View File

@ -0,0 +1,13 @@
("CTC.DGO"
("ctyslumc-part.o"
"ctyslumc-obs.o"
"tpage-174.go"
"tpage-173.go"
"tpage-1505.go"
"tpage-170.go"
"tpage-167.go"
"cty-door-ag.go"
"cty-elevator-ag.go"
"ctyslumc-flag-ag.go"
"ctyslumc-vis.o"
))

View File

@ -0,0 +1,7 @@
("CTYCARA.DGO"
("tpage-948.o"
"carc-ag.go"
"cara-ag.go"
"carb-ag.go"
"ctycara.o"
))

View File

@ -0,0 +1,7 @@
("CTYCARB.DGO"
("tpage-949.o"
"bikec-ag.go"
"bikeb-ag.go"
"bikea-ag.go"
"ctycarb.o"
))

View File

@ -0,0 +1,6 @@
("CTYCARC.DGO"
("tpage-950.o"
"tpage-951.go"
"hellcat-ag.go"
"ctycarc.o"
))

View File

@ -0,0 +1,3 @@
("CTYCARKG.DGO"
("ctycarkg.o"
))

View File

@ -0,0 +1,7 @@
("CTYPEPA.DGO"
("tpage-956.o"
"citizen-fat-ag.go"
"citizen-norm-ag.go"
"citizen-chick-ag.go"
"ctypepa.o"
))

View File

@ -0,0 +1,5 @@
("CTYPEPB.DGO"
("tpage-958.o"
"predator-ag.go"
"ctypepb.o"
))

View File

@ -0,0 +1,3 @@
("CTYPEPC.DGO"
("ctypepc.o"
))

View File

@ -0,0 +1,8 @@
("CTYPESA.DGO"
("tpage-957.o"
"crimson-guard-ag.go"
"shield-sphere-explode-ag.go"
"shield-sphere-distort-ag.go"
"shield-sphere-ag.go"
"ctypesa.o"
))

View File

@ -0,0 +1,8 @@
("CTYPESB.DGO"
("metalhead-grunt.o"
"metalhead-predator.o"
"tpage-1758.go"
"city-grunt-ag.go"
"city-flitter-ag.go"
"ctypesb.o"
))

View File

@ -0,0 +1,11 @@
("CTYPESC.DGO"
("roboguard-city.o"
"spydroid.o"
"flying-turret.o"
"tpage-1244.go"
"roboguard-city-ag.go"
"spydroid-ag.go"
"kg-flying-turret-ag.go"
"kg-debris-ag.go"
"ctypesc.o"
))

105
goal_src/jak3/dgos/cwi.gd Normal file
View File

@ -0,0 +1,105 @@
("CWI.DGO"
("squad-control-h.o"
"squad-control.o"
"vehicle-h.o"
"vehicle-part.o"
"vehicle-effects.o"
"vehicle.o"
"vehicle-util.o"
"vehicle-physics.o"
"vehicle-states.o"
"vehicle-manager.o"
"vehicle-hud.o"
"turret-control.o"
"target-pilot.o"
"pilot-states.o"
"nav-graph-h.o"
"cty-borrow-manager-h.o"
"cty-faction-h.o"
"traffic-engine-h.o"
"height-map-h.o"
"vehicle-control.o"
"nav-graph.o"
"height-map.o"
"traffic-height-map.o"
"hvehicle-h.o"
"vehicle-rider.o"
"hvehicle.o"
"hvehicle-util.o"
"hvehicle-effects.o"
"hvehicle-physics.o"
"mission-squad-control-h.o"
"citizen-h.o"
"squad-control-city-h.o"
"squad-control-city.o"
"kg-squad-control-h.o"
"ff-squad-control-h.o"
"mh-squad-control-h.o"
"cty-faction.o"
"formations.o"
"formation-object.o"
"ctywide-obs-h.o"
"mission-squad-control.o"
"cty-attack-controller.o"
"flee-info.o"
"citizen.o"
"civilian.o"
"guard-h.o"
"traffic-util.o"
"traffic-engine.o"
"traffic-manager.o"
"cty-guard-projectile.o"
"trail-graph.o"
"bike.o"
"car.o"
"test-bike.o"
"citizen-enemy.o"
"kg-squad-member-h.o"
"mh-squad-member-h.o"
"guard.o"
"guard-grenade.o"
"guard-tazer.o"
"guard-rifle.o"
"guard-states.o"
"citizen-norm.o"
"citizen-fat.o"
"citizen-chick.o"
"kg-squad-member.o"
"mh-squad-member.o"
"metalhead-flitter.o"
"kg-squad-control.o"
"ff-squad-control.o"
"mh-squad-control.o"
"cty-borrow-manager.o"
"ctywide-init.o"
"ctywide-texture.o"
"ctywide-part.o"
"ctywide-obs.o"
"ctywide-tasks.o"
"ctywide-scenes.o"
"ctywide-speech.o"
"ctyport-obs.o"
"mhcity-part.o"
"mhcity-obs.o"
"mhcity-obs2.o"
"krimson-wall.o"
"trail.o"
"searchlight.o"
"jak-pilot+0-ag.go"
"jak-pilot-hcar+0-ag.go"
"jak-pilot-gun+0-ag.go"
"tpage-127.go"
"tpage-125.go"
"tpage-128.go"
"tpage-123.go"
"citizen-norm-rider-ag.go"
"fac-lorez-ag.go"
"vehicle-explosion-ag.go"
"newbike-ag.go"
"ctycrate-ag.go"
"eco-canister-ag.go"
"searchlight-ag.go"
"burning-bush-ag.go"
"security-wall-ag.go"
"ctywide-vis.o"
))

View File

@ -0,0 +1,7 @@
("DESA.DGO"
("tpage-1372.o"
"tpage-3309.go"
"tpage-1579.go"
"jakc-scarf-ag.go"
"deserta-vis.o"
))

View File

@ -0,0 +1,8 @@
("DESB.DGO"
("tpage-1377.o"
"tpage-1378.go"
"tpage-1379.go"
"wascity-airlock-ag.go"
"air-train-ag.go"
"desertb-vis.o"
))

View File

@ -0,0 +1,21 @@
("DESBATTL.DGO"
("target-turret-shot.o"
"target-turret.o"
"jak-turret+0-ag.go"
"desbeast-path-h.o"
"desbeast-path.o"
"des-beast.o"
"mh-flyer.o"
"des-beast-2.o"
"beast-battle-path.o"
"scorpion-gun.o"
"tpage-1853.go"
"tpage-2173.go"
"tpage-2406.go"
"des-beast-ag.go"
"mh-flyer-ag.go"
"scorpion-gun-ag.go"
"quantum-reflector-ag.go"
"mh-flyer-missile-ag.go"
"desbattl.o"
))

View File

@ -0,0 +1,15 @@
("DESBCST.DGO"
("tpage-2762.o"
"tpage-2764.go"
"tpage-2763.go"
"daxter-highres-ag.go"
"errol-ag.go"
"jakc-highres-ag.go"
"sig-highres-ag.go"
"ashelin-highres-ag.go"
"des-terraformer-break-ag.go"
"snake-wheel-fma-ag.go"
"particleman-ag.go"
"jakc-scarf-ag.go"
"desbcst.o"
))

View File

@ -0,0 +1,23 @@
("DESBOSS1.DGO"
("terraformer-drone.o"
"terraformer-part.o"
"terraformer-setup.o"
"tpage-1756.go"
"tpage-3172.go"
"tpage-3176.go"
"tpage-2643.go"
"daxter-highres-ag.go"
"jakc-highres-ag.go"
"terraformer-leg-c-ag.go"
"terraformer-head-ag.go"
"terraformer-ag.go"
"terraformer-leg-b-ag.go"
"terraformer-leg-a-ag.go"
"terraformer-spike-ag.go"
"terraformer-drone-ag.go"
"snake-wheel-fma-ag.go"
"terraformer-mine-ag.go"
"particleman-ag.go"
"terraformer-target-ag.go"
"desboss1.o"
))

View File

@ -0,0 +1,17 @@
("DESBOSS2.DGO"
("terraformer-drone.o"
"terraformer-head.o"
"tpage-2953.go"
"tpage-3036.go"
"tpage-3175.go"
"daxter-highres-ag.go"
"errol-ag.go"
"jakc-highres-ag.go"
"errol-lowres-ag.go"
"terraformer-head-ag.go"
"snake-wheel-fma-ag.go"
"particleman-ag.go"
"terraformer-laser-end-ag.go"
"terraformer-laser-ag.go"
"desboss2.o"
))

View File

@ -0,0 +1,5 @@
("DESC.DGO"
("tpage-1371.o"
"tpage-1573.go"
"desertc-vis.o"
))

View File

@ -0,0 +1,21 @@
("DESCHASE.DGO"
("marauder.o"
"external-player-control.o"
"wcar-catapult.o"
"desert-jump.o"
"wcar-marauder-b.o"
"desert-chase-path-h.o"
"desert-chase-path.o"
"desert-chase.o"
"tpage-3203.go"
"tpage-2961.go"
"tpage-2962.go"
"tpage-3184.go"
"marauder-male-ag.go"
"catapult-ag.go"
"interceptor-ag.go"
"interceptor-b-ag.go"
"pre-artifact-a-ag.go"
"catapult-target-ag.go"
"deschase.o"
))

View File

@ -0,0 +1,12 @@
("DESD.DGO"
("des-cactus.o"
"desertd-obs.o"
"desertd-texture.o"
"tpage-1382.go"
"tpage-1383.go"
"tpage-1381.go"
"tpage-3384.go"
"des-cactus-b-ag.go"
"des-cactus-a-ag.go"
"desertd-vis.o"
))

View File

@ -0,0 +1,5 @@
("DESE.DGO"
("tpage-1380.o"
"tpage-1597.go"
"deserte-vis.o"
))

View File

@ -0,0 +1,6 @@
("DESERROL.DGO"
("tpage-3179.o"
"tpage-3180.go"
"errol-ag.go"
"deserrol.o"
))

View File

@ -0,0 +1,10 @@
("DESF.DGO"
("desertf-obs.o"
"tpage-1384.go"
"tpage-2844.go"
"tpage-2871.go"
"des-draw-bridge-ag.go"
"des-jump-bridge-ag.go"
"des-garage-door-ag.go"
"desertf-vis.o"
))

View File

@ -0,0 +1,12 @@
("DESG.DGO"
("elec-gate.o"
"desertg-obs.o"
"tpage-1373.go"
"tpage-1376.go"
"tpage-1374.go"
"tpage-3409.go"
"desert-eggwall-ag.go"
"des-cactus-obstacle-ag.go"
"particleman-ag.go"
"desertg-vis.o"
))

View File

@ -0,0 +1,5 @@
("DESH.DGO"
("tpage-1385.o"
"tpage-1995.go"
"deserth-vis.o"
))

View File

@ -0,0 +1,23 @@
("DESHOVER.DGO"
("desbeast-path-h.o"
"desbeast-path.o"
"des-beast.o"
"desert-hover.o"
"deshover-texture.o"
"tpage-1920.go"
"tpage-1598.go"
"tpage-1935.go"
"tpage-1989.go"
"tpage-1998.go"
"tpage-2727.go"
"des-beast-ag.go"
"daxter-highres-ag.go"
"jakc-highres-ag.go"
"beast-rider-ag.go"
"errol-effect-ag.go"
"mh-communicator-ag.go"
"snake-wheel-fma-ag.go"
"eco-crystal-dark-ag.go"
"particleman-ag.go"
"deshover.o"
))

View File

@ -0,0 +1,6 @@
("DESHUNT.DGO"
("tpage-1809.o"
"tpage-1808.go"
"sig-highres-ag.go"
"deshunt.o"
))

View File

@ -0,0 +1,7 @@
("DESINTER.DGO"
("tpage-1712.o"
"tpage-1713.go"
"interceptor-ag.go"
"interceptor-b-ag.go"
"desinter.o"
))

View File

@ -0,0 +1,13 @@
("DESJUMP.DGO"
("wcar-catapult.o"
"desert-jump.o"
"tpage-3220.go"
"tpage-2768.go"
"tpage-2769.go"
"tpage-2766.go"
"catapult-ag.go"
"interceptor-ag.go"
"wascity-airlock-debris-ag.go"
"beam-generator-ag.go"
"desjump.o"
))

View File

@ -0,0 +1,18 @@
("DESLIZ.DGO"
("flut-part.o"
"flut.o"
"target-flut.o"
"jak-fldax+0-ag.go"
"desert-lizard-h.o"
"desert-lizard-task.o"
"desert-lizard.o"
"tpage-1624.go"
"tpage-1654.go"
"daxter-highres-ag.go"
"kleever-highres-ag.go"
"jakc-highres-ag.go"
"flut-saddle-ag.go"
"snake-wheel-fma-ag.go"
"particleman-ag.go"
"desliz.o"
))

View File

@ -0,0 +1,26 @@
("DESOASIS.DGO"
("ai-task-h.o"
"simple-focus.o"
"bot-h.o"
"bot.o"
"bot-states.o"
"ash-h.o"
"ash-task.o"
"ash-shot.o"
"ash.o"
"ash-states.o"
"marauder.o"
"oasis-defense.o"
"ash-oasis-course.o"
"tpage-1603.go"
"tpage-2114.go"
"tpage-1605.go"
"tpage-2408.go"
"ashelin-highres-ag.go"
"ashelin-ag.go"
"marauder-male-ag.go"
"hellcat-ag.go"
"interceptor-ag.go"
"interceptor-b-ag.go"
"desoasis.o"
))

View File

@ -0,0 +1,15 @@
("DESRACE1.DGO"
("artifact-race.o"
"tpage-1418.go"
"tpage-1300.go"
"tpage-1399.go"
"interceptor-ag.go"
"interceptor-b-ag.go"
"gauntlets-ag.go"
"pre-artifact-a-ag.go"
"pre-artifact-d-ag.go"
"pre-artifact-b-ag.go"
"pre-artifact-c-ag.go"
"was-artifact-ag.go"
"desrace1.o"
))

View File

@ -0,0 +1,8 @@
("DESRACE2.DGO"
("artifact-race.o"
"tpage-1408.go"
"tpage-1409.go"
"interceptor-ag.go"
"interceptor-b-ag.go"
"desrace2.o"
))

View File

@ -0,0 +1,20 @@
("DESRALLY.DGO"
("race-h.o"
"race-mesh.o"
"race-control.o"
"race-info.o"
"race-manager.o"
"race-hud.o"
"pilot-recorder.o"
"turtle-training.o"
"kleever-rider.o"
"course-race.o"
"tpage-2892.go"
"tpage-2893.go"
"tpage-2976.go"
"wland-driver-ag.go"
"interceptor-ag.go"
"interceptor-b-ag.go"
"des-rally-bollard-ag.go"
"desrally.o"
))

View File

@ -0,0 +1,51 @@
("DESRESC.DGO"
("nav-graph-h.o"
"cty-borrow-manager-h.o"
"cty-faction-h.o"
"traffic-engine-h.o"
"height-map-h.o"
"vehicle-control.o"
"nav-graph.o"
"mission-squad-control-h.o"
"citizen-h.o"
"squad-control-city-h.o"
"squad-control-city.o"
"kg-squad-control-h.o"
"ff-squad-control-h.o"
"mh-squad-control-h.o"
"cty-faction.o"
"formations.o"
"formation-object.o"
"ctywide-obs-h.o"
"mission-squad-control.o"
"cty-attack-controller.o"
"flee-info.o"
"citizen.o"
"civilian.o"
"guard-h.o"
"traffic-util.o"
"traffic-engine.o"
"traffic-manager.o"
"desresc-path.o"
"desresc-texture.o"
"desert-rescue.o"
"desert-rescue-bbush.o"
"wland-passenger.o"
"rope-system-h.o"
"rope-system.o"
"rope-prim-system-h.o"
"rope-prim-system.o"
"neo-satellite.o"
"tpage-1599.go"
"tpage-1625.go"
"tpage-1731.go"
"wlander-male-ag.go"
"wland-passenger-ag.go"
"neo-satellite-ag.go"
"neo-satellite-c-ag.go"
"neo-satellite-a-ag.go"
"neo-satellite-b-ag.go"
"eco-crystal-dark-ag.go"
"neo-satellite-shield-ag.go"
"desresc.o"
))

View File

@ -0,0 +1,6 @@
("DESRESCC.DGO"
("tpage-1717.o"
"daxter-highres-ag.go"
"jakc-highres-ag.go"
"desrescc.o"
))

View File

@ -0,0 +1,8 @@
("DESRESCG.DGO"
("tpage-1715.o"
"tpage-1716.go"
"interceptor-ag.go"
"desert-transport-ag.go"
"interceptor-b-ag.go"
"desrescg.o"
))

View File

@ -0,0 +1,26 @@
("DESTRACK.DGO"
("race-h.o"
"race-mesh.o"
"race-control.o"
"race-info.o"
"race-manager.o"
"race-hud.o"
"pilot-recorder.o"
"turtle-training.o"
"kleever-rider.o"
"course-race.o"
"tpage-1795.go"
"tpage-1796.go"
"tpage-2363.go"
"tpage-1666.go"
"daxter-highres-ag.go"
"jakc-highres-ag.go"
"wland-driver-ag.go"
"interceptor-ag.go"
"kleever-rider-ag.go"
"interceptor-b-ag.go"
"des-train-barrier-ag.go"
"des-train-stones-ag.go"
"des-train-bollard-ag.go"
"destrack.o"
))

Some files were not shown because too many files have changed in this diff Show More