PAL & NTSC-J support + updates (#1490)

* PAL dumps files

* alrighty then

* make PAL warning slightly more specific

* PAL patches for `title-obs`

* Update all-types.gc

* PAL patch `beach-obs`

* `process-taskable` PAL patch

* `ambient` PAL patch

* `yakow` PAL patch

* `village-obs` PAL patch

* `sparticle-launcher` patch

* `swamp-obs` PAL patch

* `sequence-a-village1` PAL patch

* typo

* errors

* `powerups` PAL patch

* `ogreboss` PAL patch

* jak 1 v2 encoding

* `load-boundary` PAL patch

* `flying-lurker` PAL patch

* `mayor` PAL patch

* update game encoding to PAL (v2) encoding

* `cam-debug` and `cam-update` PAL patch

* `fisher` PAL patch

* `target` PAL patch

* `target2` PAL patch and fix text compiling

* `target-death` PAL patch

* `target-racer-h` PAL patch

* `logic-target` PAL patch

* `main` PAL patch

* `snow-flutflut-obs` PAL patch

* `rolling-obs` PAL patch

* `gsound` PAL patch

* update refs

* `progress` and `progress-draw` PAL patches

* clang

* wrong.

* complain

* clang

* fix test

* fix blurry jp text

* fix weird interrupt lag from setting window size

* patch more text lines, special handling for credits

* Update FontUtils.cpp

* Add xdelta3 and file patching interface

* add window lock toggle and update settings ver

* better particle hacks

* add PAL support to extractor

* Fix credits

* also NTSC-J support

* make xdelta3 a separate library

* address feedback

Co-authored-by: water <awaterford111445@gmail.com>
This commit is contained in:
ManDude
2022-06-22 05:16:34 +01:00
committed by GitHub
parent 90a049dcc5
commit 7d5045ab3f
92 changed files with 14446 additions and 9934 deletions
@@ -16,5 +16,8 @@
},
"4020": {
"msg": "Validation Failed: ISO Extraction failed, output directory did not contain expected files"
},
"4030": {
"msg": "Decompilation Failed: An error occurred"
}
}
+1 -1
View File
@@ -138,7 +138,7 @@
"project" : "CMakeLists.txt",
"projectTarget" : "extractor.exe (bin\\extractor.exe)",
"name" : "Run - Extractor - Extract",
"args" : [ "\"E:\\ISOs\\Jak\\Jak 1.iso\"", "--extract", "--proj-path", "C:\\Users\\xtvas\\Repositories\\opengoal\\launcher\\bundle-test\\data"]
"args" : [ "\"C:\\Game\\PS2SMB\\DVD\\SCPS_150.21.Jak & Daxter - TPL (NTSC-J).iso\""]
}
]
}
+1
View File
@@ -164,6 +164,7 @@ add_subdirectory(third-party/lzokay EXCLUDE_FROM_ALL)
add_subdirectory(third-party/fmt EXCLUDE_FROM_ALL)
add_subdirectory(third-party/stb_image EXCLUDE_FROM_ALL)
add_subdirectory(third-party/tiny_gltf EXCLUDE_FROM_ALL)
add_subdirectory(third-party/xdelta3 EXCLUDE_FROM_ALL)
# discord rich presence
+58 -3
View File
@@ -6,7 +6,8 @@
#include "common/util/json_util.h"
static const std::unordered_map<std::string, GameTextVersion> s_text_ver_enum_map = {
{"jak1-v1", GameTextVersion::JAK1_V1}};
{"jak1-v1", GameTextVersion::JAK1_V1},
{"jak1-v2", GameTextVersion::JAK1_V2}};
// TODO - why not just return the inputs instead of passing in an empty one?
void open_text_project(const std::string& kind,
@@ -27,6 +28,10 @@ void open_text_project(const std::string& kind,
auto& ver = o.as_pair()->car.as_symbol()->name;
auto& in = o.as_pair()->cdr.as_pair()->car.as_string()->data;
if (s_text_ver_enum_map.count(ver) == 0) {
throw std::runtime_error(fmt::format("unknown text version {}", ver));
}
inputs[s_text_ver_enum_map.at(ver)].push_back(in);
});
}
@@ -77,7 +82,7 @@ void parse_text(const goos::Object& data, GameTextVersion text_ver, GameTextDB&
for_each_in_list(data.as_pair()->cdr, [&](const goos::Object& obj) {
if (obj.is_pair()) {
auto& head = car(obj);
if (head.is_symbol() && head.as_symbol()->name == "language-id") {
if (head.is_symbol("language-id")) {
if (banks.size() != 0) {
throw std::runtime_error("Languages have been set multiple times.");
}
@@ -99,7 +104,7 @@ void parse_text(const goos::Object& data, GameTextVersion text_ver, GameTextDB&
banks.push_back(db.bank_by_id(possible_group_name, lang));
}
});
} else if (head.is_symbol() && head.as_symbol()->name == "group-name") {
} else if (head.is_symbol("group-name")) {
if (!possible_group_name.empty()) {
throw std::runtime_error("group-name has been set multiple times.");
}
@@ -113,6 +118,56 @@ void parse_text(const goos::Object& data, GameTextVersion text_ver, GameTextDB&
if (!cdr(cdr(obj)).is_empty_list()) {
throw std::runtime_error("group-name has too many arguments");
}
} else if (head.is_symbol("credits")) {
// parse a "credits" object. it's a list of lines where the ID automatically increments, and
// empty lines are skipped
if (banks.size() == 0) {
throw std::runtime_error("At least one language must be set before defining entries.");
}
if (cdr(obj).is_empty_list() || cdr(cdr(obj)).is_empty_list() ||
!car(cdr(obj)).is_symbol(":begin") || !car(cdr(cdr(obj))).is_int()) {
throw std::runtime_error("Invalid credits begin param");
}
const auto& it = cdr(cdr(obj));
int begin_id = car(it).as_int();
int id = begin_id - 1;
for_each_in_list(cdr(it), [&](const goos::Object& entry) {
++id;
if (entry.is_string()) {
if (entry.as_string()->data.empty()) {
// empty string! just advance
return;
}
auto line = font->convert_utf8_to_game(entry.as_string()->data);
// add to all langs
for (auto& bank : banks) {
bank->set_line(id, line);
}
} else if (entry.is_pair()) {
int b_i = 0;
for_each_in_list(entry, [&](const goos::Object& entry) {
if (entry.is_string()) {
if (b_i >= int(banks.size())) {
throw std::runtime_error(fmt::format("Too many strings in text id #x{:x}", id));
}
auto line = font->convert_utf8_to_game(entry.as_string()->data);
banks[b_i++]->set_line(id, line);
} else {
throw std::runtime_error(fmt::format("Non-string value in text id #x{:x}", id));
}
});
if (b_i != int(banks.size())) {
throw std::runtime_error(
fmt::format("Not enough strings specified in text id #x{:x}", id));
}
} else {
throw std::runtime_error(fmt::format("Non-string value in text id #x{:x}", id));
}
});
}
else if (head.is_int()) {
+236 -1
View File
@@ -502,6 +502,240 @@ GameTextFontBank g_font_bank_jak1(GameTextVersion::JAK1_V1,
&g_replace_info_jak1,
&passthrus);
/*!
* ================================
* GAME TEXT FONT BANK - JAK 1 (v2)
* ================================
* This font is used in:
* - Jak & Daxter: The Precursor Legacy (PAL)
*
* It is the same as v1, but _ has been fixed and no longer overlaps 掘
*/
static std::vector<EncodeInfo> g_encode_info_jak1_v2 = {
// random
{"_", {0x03}}, // large space
{"ˇ", {0x10}}, // caron
{"`", {0x11}}, // grave accent
{"'", {0x12}}, // apostrophe
{"^", {0x13}}, // circumflex
{"<TIL>", {0x14}}, // tilde
{"¨", {0x15}}, // umlaut
{"º", {0x16}}, // numero/overring
{"¡", {0x17}}, // inverted exclamation mark
{"¿", {0x18}}, // inverted question mark
{"", {0x1a}}, // umi
{"Æ", {0x1b}}, // aesc
{"", {0x1c}}, // kai
{"Ç", {0x1d}}, // c-cedilla
{"", {0x1e}}, // gaku
{"ß", {0x1f}}, // eszett
{"\"", {0x22}}, // double-quotes
{"", {0x24}}, // wa
{"", {0x26}}, // wo
{"", {0x27}}, // -n
{"", {0x5c}}, // iwa
{"", {0x5d}}, // kyuu
{"", {0x5e}}, // sora
{"", {0x5f}}, // horu
{"", {0x60}}, // -wa
{"", {0x61}}, // utsu
{"", {0x62}}, // kashikoi
{"", {0x63}}, // mizuumi
{"", {0x64}}, // kuchi
{"", {0x65}}, // iku
{"", {0x66}}, // ai
{"", {0x67}}, // shi
{"", {0x68}}, // tera
{"", {0x69}}, // yama
{"", {0x6a}}, // mono
{"", {0x6b}}, // tokoro
{"", {0x6c}}, // kaku
{"", {0x6d}}, // shou
{"", {0x6e}}, // numa
{"", {0x6f}}, // ue
{"", {0x70}}, // shiro
{"", {0x71}}, // ba
{"", {0x72}}, // shutsu
{"", {0x73}}, // yami
{"", {0x74}}, // nokosu
{"", {0x75}}, // ki
{"", {0x76}}, // ya
{"", {0x77}}, // shita
{"", {0x78}}, // ie
{"", {0x79}}, // hi
{"", {0x7a}}, // hana
{"", {0x7b}}, // re
{"Œ", {0x7c}}, // oe
{"", {0x7d}}, // ro
{"", {0x7f}}, // ao
{"", {0x90}}, // nakaguro
{"", {0x91}}, // dakuten
{"", {0x92}}, // handakuten
{"", {0x93}}, // chouompu
{"", {0x94}}, // nijuukagikakko left
{"", {0x95}}, // nijuukagikakko right
// hiragana
{"", {0x96}}, // -a
{"", {0x97}}, // a
{"", {0x98}}, // -i
{"", {0x99}}, // i
{"", {0x9a}}, // -u
{"", {0x9b}}, // u
{"", {0x9c}}, // -e
{"", {0x9d}}, // e
{"", {0x9e}}, // -o
{"", {0x9f}}, // o
{"", {0xa0}}, // ka
{"", {0xa1}}, // ki
{"", {0xa2}}, // ku
{"", {0xa3}}, // ke
{"", {0xa4}}, // ko
{"", {0xa5}}, // sa
{"", {0xa6}}, // shi
{"", {0xa7}}, // su
{"", {0xa8}}, // se
{"", {0xa9}}, // so
{"", {0xaa}}, // ta
{"", {0xab}}, // chi
{"", {0xac}}, // sokuon
{"", {0xad}}, // tsu
{"", {0xae}}, // te
{"", {0xaf}}, // to
{"", {0xb0}}, // na
{"", {0xb1}}, // ni
{"", {0xb2}}, // nu
{"", {0xb3}}, // ne
{"", {0xb4}}, // no
{"", {0xb5}}, // ha
{"", {0xb6}}, // hi
{"", {0xb7}}, // hu
{"", {0xb8}}, // he
{"", {0xb9}}, // ho
{"", {0xba}}, // ma
{"", {0xbb}}, // mi
{"", {0xbc}}, // mu
{"", {0xbd}}, // me
{"", {0xbe}}, // mo
{"", {0xbf}}, // youon ya
{"", {0xc0}}, // ya
{"", {0xc1}}, // youon yu
{"", {0xc2}}, // yu
{"", {0xc3}}, // youon yo
{"", {0xc4}}, // yo
{"", {0xc5}}, // ra
{"", {0xc6}}, // ri
{"", {0xc7}}, // ru
{"", {0xc8}}, // re
{"", {0xc9}}, // ro
{"", {0xca}}, // -wa
{"", {0xcb}}, // wa
{"", {0xcc}}, // wo
{"", {0xcd}}, // -n
// katakana
{"", {0xce}}, // -a
{"", {0xcf}}, // a
{"", {0xd0}}, // -i
{"", {0xd1}}, // i
{"", {0xd2}}, // -u
{"", {0xd3}}, // u
{"", {0xd4}}, // -e
{"", {0xd5}}, // e
{"", {0xd6}}, // -o
{"", {0xd7}}, // o
{"", {0xd8}}, // ka
{"", {0xd9}}, // ki
{"", {0xda}}, // ku
{"", {0xdb}}, // ke
{"", {0xdc}}, // ko
{"", {0xdd}}, // sa
{"", {0xde}}, // shi
{"", {0xdf}}, // su
{"", {0xe0}}, // se
{"", {0xe1}}, // so
{"", {0xe2}}, // ta
{"", {0xe3}}, // chi
{"", {0xe4}}, // sokuon
{"", {0xe5}}, // tsu
{"", {0xe6}}, // te
{"", {0xe7}}, // to
{"", {0xe8}}, // na
{"", {0xe9}}, // ni
{"", {0xea}}, // nu
{"", {0xeb}}, // ne
{"", {0xec}}, // no
{"", {0xed}}, // ha
{"", {0xee}}, // hi
{"", {0xef}}, // hu
{"", {0xf0}}, // he
{"", {0xf1}}, // ho
{"", {0xf2}}, // ma
{"", {0xf3}}, // mi
{"", {0xf4}}, // mu
{"", {0xf5}}, // me
{"", {0xf6}}, // mo
{"", {0xf7}}, // youon ya
{"", {0xf8}}, // ya
{"", {0xf9}}, // youon yu
{"", {0xfa}}, // yu
{"", {0xfb}}, // youon yo
{"", {0xfc}}, // yo
{"", {0xfd}}, // ra
{"", {0xfe}}, // ri
{"", {0xff}}, // ru
// kanji 2
{"", {1, 0x01}}, // takara
{"", {1, 0x10}}, // ishi
{"", {1, 0x11}}, // aka
{"", {1, 0x12}}, // ato
{"", {1, 0x13}}, // kawa
{"", {1, 0x14}}, // ikusa
{"", {1, 0x15}}, // mura
{"", {1, 0x16}}, // tai
{"", {1, 0x17}}, // utena
{"", {1, 0x18}}, // osa
{"", {1, 0x19}}, // tori
{"", {1, 0x1a}}, // tei
{"", {1, 0x1b}}, // hora
{"", {1, 0x1c}}, // michi
{"", {1, 0x1d}}, // hatsu
{"", {1, 0x1e}}, // tobu
{"", {1, 0x1f}}, // fuku
{"", {1, 0xa0}}, // ike
{"", {1, 0xa1}}, // naka
{"", {1, 0xa2}}, // tou
{"", {1, 0xa3}}, // shima
{"", {1, 0xa4}}, // bu
{"", {1, 0xa5}}, // hou
{"", {1, 0xa6}}, // san
{"", {1, 0xa7}}, // kaerimiru
{"", {1, 0xa8}}, // chikara
{"", {1, 0xa9}}, // midori
{"", {1, 0xaa}}, // kishi
{"", {1, 0xab}}, // zou
{"", {1, 0xac}}, // tani
{"", {1, 0xad}}, // kokoro
{"", {1, 0xae}}, // mori
{"", {1, 0xaf}}, // mizu
{"", {1, 0xb0}}, // fune
{"", {1, 0xb1}}, // trademark
};
GameTextFontBank g_font_bank_jak1_v2(GameTextVersion::JAK1_V2,
&g_encode_info_jak1_v2,
&g_replace_info_jak1,
&passthrus);
/*!
* ========================
* GAME TEXT FONT BANK LIST
@@ -510,7 +744,8 @@ GameTextFontBank g_font_bank_jak1(GameTextVersion::JAK1_V1,
*/
std::map<GameTextVersion, GameTextFontBank*> g_font_banks = {
{GameTextVersion::JAK1_V1, &g_font_bank_jak1}};
{GameTextVersion::JAK1_V1, &g_font_bank_jak1},
{GameTextVersion::JAK1_V2, &g_font_bank_jak1_v2}};
const GameTextFontBank* get_font_bank(GameTextVersion version) {
return g_font_banks.at(version);
+17 -7
View File
@@ -1,5 +1,5 @@
#include "read_iso_file.h"
#include "third-party/fmt/core.h"
#include "common/log/log.h"
#include "common/common_types.h"
#include "common/util/Assert.h"
#include "common/util/FileUtil.h"
@@ -79,14 +79,18 @@ void add_from_dir(FILE* fp, u32 sector, u32 size, IsoFile::Entry* parent) {
void unpack_entry(FILE* fp,
IsoFile& iso,
const IsoFile::Entry& entry,
const std::filesystem::path& dest) {
const std::filesystem::path& dest,
bool print_progress) {
std::filesystem::path path_to_entry = dest / entry.name;
if (entry.is_dir) {
std::filesystem::create_directory(path_to_entry);
for (const auto& child : entry.children) {
unpack_entry(fp, iso, child, path_to_entry);
unpack_entry(fp, iso, child, path_to_entry, print_progress);
}
} else {
if (print_progress) {
lg::info("Extracting {}...", entry.name);
}
std::vector<u8> buffer(entry.size);
if (fseek(fp, entry.offset_in_file, SEEK_SET)) {
ASSERT_MSG(false, "Failed to fseek iso when unpacking");
@@ -113,13 +117,19 @@ IsoFile find_files_in_iso(FILE* fp) {
return result;
}
void unpack_iso_files(FILE* fp, IsoFile& layout, const std::filesystem::path& dest) {
unpack_entry(fp, layout, layout.root, dest);
void unpack_iso_files(FILE* fp,
IsoFile& layout,
const std::filesystem::path& dest,
bool print_progress) {
unpack_entry(fp, layout, layout.root, dest, print_progress);
}
IsoFile unpack_iso_files(FILE* fp, const std::filesystem::path& dest, const bool hashFiles) {
IsoFile unpack_iso_files(FILE* fp,
const std::filesystem::path& dest,
bool print_progress,
const bool hashFiles) {
auto file = find_files_in_iso(fp);
file.shouldHash = hashFiles;
unpack_iso_files(fp, file, dest);
unpack_iso_files(fp, file, dest, print_progress);
return file;
}
+4 -1
View File
@@ -34,4 +34,7 @@ struct IsoFile {
IsoFile find_files_in_iso(FILE* fp);
void unpack_iso_files(FILE* fp, IsoFile& layout, const std::filesystem::path& dest);
IsoFile unpack_iso_files(FILE* fp, const std::filesystem::path& dest, const bool hashFiles = false);
IsoFile unpack_iso_files(FILE* fp,
const std::filesystem::path& dest,
bool print_progress,
const bool hashFiles = false);
-12
View File
@@ -1,12 +0,0 @@
#pragma once
/*!
* @file xdelta3.h
* Interface around including xdelta3.
* C library weirdness.
*/
#define SIZEOF_SIZE_T 8
#define SIZEOF_UNSIGNED_LONG_LONG 8
#include "third-party/xdelta3/xdelta3/xdelta3.h"
#include "third-party/xdelta3/xdelta3/xdelta3.c"
+1
View File
@@ -84,6 +84,7 @@ target_link_libraries(decomp
common
fmt
stb_image
xdelta3
)
add_executable(decompiler
+57 -2
View File
@@ -27,6 +27,7 @@
#include "common/log/log.h"
#include "common/util/json_util.h"
#include "common/util/crc32.h"
#include "third-party/xdelta3/xdelta3.h"
namespace decompiler {
namespace {
@@ -140,6 +141,59 @@ ObjectFileDB::ObjectFileDB(const std::vector<std::string>& _dgos,
for (auto& obj : object_files) {
auto data = file_util::read_binary_file(obj);
auto name = obj_filename_to_name(obj);
if (auto it = config.object_patches.find(name); it != config.object_patches.end()) {
// print the file CRC
fmt::print("CRC for {} is: 0x{:X}\n", name, crc32(data.data(), data.size()));
// write patch file if necessary
if (config.write_patches) {
// this is the "target" file we want to patch to
auto data2 = file_util::read_binary_file(
(file_util::get_jak_project_dir() / it->second.target_file).string());
// we need to allocate a buffer to store the delta patch
// we make it 2x the source file's size because... it seems like a good size?
// ideally the delta patch should never be that big.
int buf_sz = data.size() * 2;
u8* out_buf = (u8*)malloc(buf_sz);
size_t out_sz = 0; // this is where the actual used size of the delta patch will be stored
int xd3_res = xd3_encode_memory(data2.data(), data2.size(), data.data(), data.size(),
out_buf, &out_sz, buf_sz, 0);
if (xd3_res) {
lg::error("error patching {} with {} (out {}): {}", name, it->second.target_file,
it->second.patch_file, xd3_strerror(xd3_res));
} else {
std::vector<u8> patch_data(out_sz);
memcpy(patch_data.data(), out_buf, patch_data.size());
file_util::write_binary_file(
(file_util::get_jak_project_dir() / it->second.patch_file).string(),
patch_data.data(), patch_data.size());
}
free(out_buf);
}
// apply patch file if necessary
// note that xd3 doesnt really have any safety against bad files so we check crc ourselves
if (config.apply_patches && it->second.crc == crc32(data.data(), data.size())) {
// this is the delta patch file
auto data2 = file_util::read_binary_file(
(file_util::get_jak_project_dir() / it->second.patch_file).string());
// we need to allocate a buffer to store the patched file
// the delta patch isn't gonna be this big but we allocate 2x the source file's size + the
// delta patch's size
int buf_sz = data.size() * 2 + data2.size();
u8* out_buf = (u8*)malloc(buf_sz);
size_t out_sz = 0;
int xd3_res = xd3_decode_memory(data2.data(), data2.size(), data.data(), data.size(),
out_buf, &out_sz, buf_sz, 0);
if (xd3_res) {
lg::error("error patching {} with {} (out {}): {}", name, it->second.target_file,
it->second.patch_file, xd3_strerror(xd3_res));
} else {
data.resize(out_sz);
memcpy(data.data(), out_buf, data.size());
}
free(out_buf);
}
}
add_obj_from_dgo(name, name, data.data(), data.size(), "NO-XGO", config);
}
@@ -220,7 +274,8 @@ void ObjectFileDB::get_objs_from_dgo(const std::string& filename, const Config&
if (i == header.object_count - 1) {
if (reader.bytes_left() == obj_header.object_count - 0x30) {
if (config.is_pal) {
lg::warn("Skipping {} because it is a broken PAL object", obj_header.name);
lg::warn("Skipping {} in {} because it is a broken PAL object", obj_header.name,
dgo_base_name);
reader.ffwd(reader.bytes_left());
continue;
} else {
@@ -646,7 +701,7 @@ std::string ObjectFileDB::process_game_text_files(const Config& cfg) {
if (text_by_language_by_id.empty()) {
return {};
}
return write_game_text(cfg, text_by_language_by_id);
return write_game_text(cfg.text_version, text_by_language_by_id);
}
std::string ObjectFileDB::process_game_count_file() {
+11
View File
@@ -240,6 +240,17 @@ Config read_config_file(const std::string& path_to_config_file,
config.import_deps_by_file =
import_deps.get<std::unordered_map<std::string, std::vector<std::string>>>();
config.write_patches = cfg.at("write_patches").get<bool>();
config.apply_patches = cfg.at("apply_patches").get<bool>();
const auto& object_patches = cfg.at("object_patches");
for (auto& [obj, pch] : object_patches.items()) {
ObjectPatchInfo new_pch;
new_pch.crc = (u32)std::stoull(pch.at("crc32").get<std::string>(), nullptr, 16);
new_pch.target_file = pch.at("in").get<std::string>();
new_pch.patch_file = pch.at("out").get<std::string>();
config.object_patches.insert({obj, new_pch});
}
return config;
}
+12
View File
@@ -8,6 +8,7 @@
#include "decompiler/Disasm/Register.h"
#include "decompiler/data/game_text.h"
#include "common/versions.h"
#include "common/common_types.h"
namespace decompiler {
struct RegisterTypeCast {
@@ -82,6 +83,12 @@ struct DecompileHacks {
std::unordered_map<std::string, std::vector<std::pair<int, int>>> missing_textures_by_level;
};
struct ObjectPatchInfo {
u32 crc;
std::string target_file;
std::string patch_file;
};
struct Config {
GameVersion game_version = GameVersion::Jak1;
std::vector<std::string> dgo_names;
@@ -115,6 +122,10 @@ struct Config {
bool generate_symbol_definition_map = false;
bool is_pal = false;
bool write_patches = false;
bool apply_patches = false;
std::string game_name;
std::string expected_elf_name;
GameTextVersion text_version = GameTextVersion::JAK1_V1;
@@ -134,6 +145,7 @@ struct Config {
std::unordered_map<std::string, std::unordered_map<std::string, LabelConfigInfo>> label_types;
std::unordered_map<std::string, std::vector<StackStructureHint>>
stack_structure_hints_by_function;
std::unordered_map<std::string, ObjectPatchInfo> object_patches;
std::unordered_map<std::string, int> bad_format_strings;
+220 -196
View File
@@ -2946,9 +2946,7 @@
(define-extern exp (function float float))
(define-extern sinerp-clamp (function float float float float))
(define-extern coserp-clamp (function float float float float))
;; ;; unknown type
(define-extern coserp180-clamp (function float float float float))
;; unknown type
(define-extern ease-in-out (function int int float))
;; - Symbols
@@ -4009,7 +4007,7 @@
;; - Symbols
(define-extern *vif-disasm-table* (array vif-disasm-element)) ;; unknown type
(define-extern *vif-disasm-table* (array vif-disasm-element))
(define-extern *dma-disasm* symbol)
@@ -4856,8 +4854,8 @@
(define-extern set-display (function display int int int int int display))
(define-extern put-draw-env (function (pointer gif-tag) none))
(define-extern *pre-draw-hook* (function object none)) ;; unknown type
(define-extern *post-draw-hook* (function dma-buffer none)) ;; unknown type
(define-extern *pre-draw-hook* (function object none))
(define-extern *post-draw-hook* (function dma-buffer none))
;; ----------------------
@@ -5664,8 +5662,8 @@
;; - Symbols
(define-extern *math-camera* math-camera) ;; unknown type
(define-extern *math-camera-fog-correction* fog-corrector) ;; unknown type
(define-extern *math-camera* math-camera)
(define-extern *math-camera-fog-correction* fog-corrector)
;; ----------------------
@@ -5841,8 +5839,8 @@
;; - Symbols
(define-extern *font-default-matrix* matrix) ;; unknown type
(define-extern *font-work* font-work) ;; unknown type
(define-extern *font-default-matrix* matrix)
(define-extern *font-work* font-work)
;; ----------------------
@@ -6268,7 +6266,7 @@
(define-extern *texture-pool* texture-pool)
(define-extern *font-texture* texture)
(define-extern global kheap)
(define-extern *txt-dma-list* dma-buffer) ;; unknown type
(define-extern *txt-dma-list* dma-buffer)
(define-extern ct32-24-block-table (array int32))
(define-extern ct16-block-table (array int32))
(define-extern ct16s-block-table (array int32))
@@ -6277,7 +6275,7 @@
(define-extern mz16s-block-table (array int32))
(define-extern mt8-block-table (array int32))
(define-extern mt4-block-table (array int32))
(define-extern *shader-list* pair) ;; unknown type
(define-extern *shader-list* pair)
(define-extern *edit-shader* texture-id)
@@ -11993,6 +11991,7 @@
)
)
;; NOTE : type has been PAL patched
(deftype control-info (collide-shape-moving)
(
(unknown-vector00 vector :inline :offset 448) ;; from - logic-target::build-conversions
@@ -12114,6 +12113,7 @@
(unknown-uint30 uint32 :offset 2188) ;; from target::(code target-running-attack)
(unknown-float121 float :offset 2188) ;; from target::mod-var-jump
(unknown-uint31 uint32 :offset 2192) ;; from target::(trans target-running-attack)
(unknown-int37 int32 :offset 2192)
(unknown-float122 float :offset 2196) ;; from target::(trans target-jump)
(unknown-float123 float :offset 2200) ;; from target::mod-var-jump
(unknown-float124 float :offset 2204) ;; from target::init-var-jump
@@ -12152,10 +12152,15 @@
(wall-pat pat-surface :offset 18976) ;; pat information for wall-check collision
(unknown-soundid00 sound-id :offset 18980) ;; from powerups::target-powerup-process
(unknown-float141 float :offset 18984) ;; from powerups::target-powerup-process
;; PAL patch here
(unknown-soundid01 sound-id :offset 18988)
(unknown-int34 int32 :offset 18992)
(unknown-int35 int32 :offset 18996)
(unknown-int36 int32 :offset 19000)
)
:size-assert #x4a2c
:size-assert #x4a3c ;; #x4a2c
:method-count-assert 65
:flag-assert #x4100004a2c
:flag-assert #x4100004a3c ;; #x4100004a2c
)
;; ----------------------
@@ -12595,39 +12600,41 @@
(declare-type tube-info basic)
(declare-type racer-info basic)
(declare-type flut-info basic)
;; NOTE : type has been PAL patched.
(deftype target (process-drawable)
((self-override target :score 100 :offset 28)
((self-override target :score 100 :offset 28)
(control control-info :score 100 :offset 112)
(fact-info-target fact-info-target :score 100 :offset 144)
(skel2 basic :offset-assert 176)
(racer racer-info :offset-assert 180)
(game game-info :offset-assert 184)
(neck joint-mod :offset-assert 188)
(state-hook-time time-frame :offset-assert 192)
(state-hook-time time-frame :offset-assert 192)
(state-hook (function none :behavior target) :offset-assert 200)
(cam-user-mode symbol :offset-assert 204)
(sidekick (pointer sidekick) :offset-assert 208)
(manipy (pointer manipy) :offset-assert 212)
(sidekick (pointer sidekick) :offset-assert 208)
(manipy (pointer manipy) :offset-assert 212)
(attack-info attack-info :inline :offset-assert 224)
(attack-info-rec attack-info :inline :offset-assert 336)
(anim-seed uint64 :offset-assert 440)
(alt-cam-pos vector :inline :offset-assert 448)
(snowball snowball-info :offset-assert 464)
(tube tube-info :offset-assert 468)
(flut flut-info :offset-assert 472)
(snowball snowball-info :offset-assert 464)
(tube tube-info :offset-assert 468)
(flut flut-info :offset-assert 472)
(current-level level :offset-assert 476)
(saved-pos transformq :inline :offset-assert 480)
(saved-owner uint64 :offset-assert 528)
(alt-neck-pos vector :inline :offset-assert 544)
(fp-hud handle :offset-assert 560)
(no-load-wait time-frame :offset-assert 568)
(no-look-around-wait time-frame :offset-assert 576)
;;(burn-proc handle :offset-assert 584) ;; PAL only
(no-load-wait time-frame :offset-assert 568)
(no-look-around-wait time-frame :offset-assert 576)
;; PAL patch here
(burn-proc handle :offset-assert 584)
)
:heap-base #x1e0
:method-count-assert 21
:size-assert #x248 ;;#x250
:flag-assert #x1501e00248 ;;#x1501e00250
:size-assert #x250 ;;#x248
:flag-assert #x1501e00250 ;;#x1501e00248
(:methods
(find-edge-grabs! (_type_ collide-cache) object 20) ;; none or #f
)
@@ -13158,9 +13165,9 @@
;; - Symbols
(define-extern *collide-work* collide-work) ;; unknown type
(define-extern *collide-cache* collide-cache) ;; unknown type
(define-extern *collide-list* collide-list) ;; unknown type
(define-extern *collide-work* collide-work)
(define-extern *collide-cache* collide-cache)
(define-extern *collide-list* collide-list)
;; ----------------------
@@ -16116,8 +16123,8 @@
;; - Symbols
(define-extern process-level-heap kheap) ;; unknown type
(define-extern *default-nav-mesh* nav-mesh) ;; unknown type
(define-extern process-level-heap kheap)
(define-extern *default-nav-mesh* nav-mesh)
;; ----------------------
@@ -16347,7 +16354,7 @@
(define-extern sound-set-sound-falloff (function sound-name int int int int))
(define-extern sound-set-flava (function uint int))
(define-extern sound-volume-off (function int))
(define-extern sound-set-fps (function uint int))
(define-extern sound-set-fps (function int int))
(define-extern show-iop-info (function dma-buffer int))
(define-extern show-iop-memory (function dma-buffer int))
(define-extern make-sqrt-table (function int))
@@ -16355,14 +16362,14 @@
;; - Symbols
(define-extern *flava-table* flava-table) ;; unknown type
(define-extern *sound-iop-info* sound-iop-info) ;; unknown type
(define-extern *ambient-spec* sound-spec) ;; unknown type
(define-extern *debug-effect-control* symbol) ;; unknown type
(define-extern *flava-table* flava-table)
(define-extern *sound-iop-info* sound-iop-info)
(define-extern *ambient-spec* sound-spec)
(define-extern *debug-effect-control* symbol)
(define-extern *setting-control* setting-control)
(define-extern *sound-player-enable* symbol) ;; unknown type
(define-extern *sound-player-rpc* rpc-buffer-pair) ;; unknown type
(define-extern *sound-loader-rpc* rpc-buffer-pair) ;; unknown type
(define-extern *sound-player-enable* symbol)
(define-extern *sound-player-rpc* rpc-buffer-pair)
(define-extern *sound-loader-rpc* rpc-buffer-pair)
;; ----------------------
@@ -17131,7 +17138,7 @@
;; - Unknowns
(define-extern generic-vu0-block vu-function) ;; unknown type
(define-extern generic-vu0-block vu-function)
;; ----------------------
@@ -17149,7 +17156,7 @@
;; - Symbols
(define-extern *generic-foreground-sinks* (array generic-dma-foreground-sink)) ;; unknown type
(define-extern *generic-foreground-sinks* (array generic-dma-foreground-sink))
;; ----------------------
@@ -17205,12 +17212,12 @@
;; - Symbols
(define-extern *generic-envmap-texture* texture) ;; unknown type
(define-extern *generic-envmap-texture* texture)
;; - Unknowns
(define-extern *generic-consts* generic-consts) ;; unknown type
(define-extern *target-lock* symbol) ;; unknown type
(define-extern *generic-consts* generic-consts)
(define-extern *target-lock* symbol)
;; ----------------------
@@ -17246,8 +17253,8 @@
;; - Unknowns
(define-extern mercneric-vu0-block vu-function) ;; unknown type
(define-extern *inv-init-table* (inline-array invinitdata)) ;; unknown type
(define-extern mercneric-vu0-block vu-function)
(define-extern *inv-init-table* (inline-array invinitdata))
;; ----------------------
@@ -17270,7 +17277,7 @@
;; - Unknowns
(define-extern *generic-tie* symbol) ;; unknown type
(define-extern *generic-tie* symbol)
;; ----------------------
@@ -17348,7 +17355,7 @@
;; - Unknowns
(define-extern shadow-vu0-block vu-function) ;; unknown type
(define-extern shadow-vu0-block vu-function)
;; ----------------------
@@ -17398,7 +17405,7 @@
;; - Unknowns
(define-extern shadow-vu1-block vu-function)
(define-extern *shadow-vu1-tri-template* shadow-vu1-gifbuf-template) ;; unknown type
(define-extern *shadow-vu1-tri-template* shadow-vu1-gifbuf-template)
;; ----------------------
@@ -17809,7 +17816,7 @@
;; - Unknowns
(define-extern *global-toggle* int) ;; unknown type
(define-extern *global-toggle* int)
(define-extern *part-id-table* (array sparticle-launcher))
(define-extern *particle-300hz-timer* int)
(define-extern *sp-launch-queue* sp-launch-queue)
@@ -18798,11 +18805,11 @@
;; - Unknowns
(define-extern *sky-work* sky-work) ;; unknown type
(define-extern *sky-tng-data* sky-tng-data) ;; unknown type
(define-extern sky-roof-polygons (inline-array sky-vertex)) ;; unknown type
(define-extern sky-cloud-polygons (inline-array sky-vertex)) ;; unknown type
(define-extern sky-cloud-polygon-indices (pointer uint8)) ;; unknown type
(define-extern *sky-work* sky-work)
(define-extern *sky-tng-data* sky-tng-data)
(define-extern sky-roof-polygons (inline-array sky-vertex))
(define-extern sky-cloud-polygons (inline-array sky-vertex))
(define-extern sky-cloud-polygon-indices (pointer uint8))
;; ----------------------
@@ -18890,7 +18897,7 @@
;; - Unknowns
(define-extern *load-boundary-list* load-boundary) ;; guess for now
(define-extern *load-boundary-target* (inline-array lbvtx)) ;; unknown type
(define-extern *load-boundary-target* (inline-array lbvtx))
;; ----------------------
@@ -18985,7 +18992,7 @@
;; - Unknowns
(define-extern *static-load-boundary-list* (array array)) ;; unknown type
(define-extern *static-load-boundary-list* (array array))
;; ----------------------
@@ -19127,7 +19134,7 @@
;; - Unknowns
(define-extern collide-vu0-block vu-function) ;; unknown type
(define-extern collide-vu0-block vu-function)
(define-extern *collide-probe-stack* collide-probe-stack) ;; scratchpad pointer?
@@ -19217,8 +19224,8 @@
;; - Unknowns
(define-extern *rotate-surface* surface) ;; unknown type
(define-extern *no-walk-surface* surface) ;; unknown type
(define-extern *rotate-surface* surface)
(define-extern *no-walk-surface* surface)
;; ----------------------
@@ -19238,9 +19245,9 @@
;; - Unknowns
(define-extern *col-timer-enable* symbol) ;; unknown type
(define-extern *frame-timer* stopwatch) ;; unknown type
(define-extern *col-timer* stopwatch) ;; unknown type
(define-extern *col-timer-enable* symbol)
(define-extern *frame-timer* stopwatch)
(define-extern *col-timer* stopwatch)
(define-extern *race-track-surface* surface)
@@ -19252,7 +19259,7 @@
;; - Unknowns
(define-extern *collide-vif0-init* (array uint32)) ;; unknown type
(define-extern *collide-vif0-init* (array uint32))
;; ----------------------
@@ -19298,12 +19305,12 @@
;; - Unknowns
(define-extern *merc-death-globals* vector) ;; unknown type
(define-extern death-beach-puppy death-info) ;; unknown type
(define-extern death-jungle-snake death-info) ;; unknown type
(define-extern death-default death-info) ;; unknown type
(define-extern death-warp-in death-info) ;; unknown type
(define-extern death-warp-out death-info) ;; unknown type
(define-extern *merc-death-globals* vector)
(define-extern death-beach-puppy death-info)
(define-extern death-jungle-snake death-info)
(define-extern death-default death-info)
(define-extern death-warp-in death-info)
(define-extern death-warp-out death-info)
;; ----------------------
@@ -19681,11 +19688,11 @@
;; - Unknowns
(define-extern *CAM_BIKE-bank* cam-bike-bank) ;; unknown type
(define-extern *CAM_STICK-bank* cam-stick-bank) ;; unknown type
(define-extern *CAM_STRING-bank* cam-string-bank) ;; unknown type
(define-extern *CAM_BILLY-bank* cam-billy-bank) ;; unknown type
(define-extern *CAM_EYE-bank* cam-eye-bank) ;; unknown type
(define-extern *CAM_BIKE-bank* cam-bike-bank)
(define-extern *CAM_STICK-bank* cam-stick-bank)
(define-extern *CAM_STRING-bank* cam-string-bank)
(define-extern *CAM_BILLY-bank* cam-billy-bank)
(define-extern *CAM_EYE-bank* cam-eye-bank)
;; ----------------------
@@ -19759,9 +19766,9 @@
;; - Unknowns
(define-extern *camera-orbit-info* camera-orbit-info) ;; unknown type
(define-extern *CAM_ORBIT-bank* CAM_ORBIT-bank) ;; unknown type
(define-extern *CAM_POINT_WATCH-bank* cam-point-watch-bank) ;; unknown type
(define-extern *camera-orbit-info* camera-orbit-info)
(define-extern *CAM_ORBIT-bank* CAM_ORBIT-bank)
(define-extern *CAM_POINT_WATCH-bank* cam-point-watch-bank)
;; ----------------------
@@ -20116,28 +20123,28 @@
;; - Unknowns
(define-extern *camera-layout-blink* symbol) ;; unknown type
(define-extern *last-cur-entity* int) ;; unknown type
(define-extern *clm-select* clm) ;; unknown type
(define-extern *clm* clm) ;; unknown type
(define-extern *camera-layout-message-ypos* int) ;; unknown type
(define-extern *CAM_LAYOUT-bank* cam-layout-bank) ;; unknown type
(define-extern *clm-edit* clm) ;; unknown type
(define-extern *clm-focalpull-attr* clm) ;; unknown type
(define-extern *clm-index-attr* clm) ;; unknown type
(define-extern *clm-intro-attr* clm) ;; unknown type
(define-extern *clm-spline-attr* clm) ;; unknown type
(define-extern *clm-vol-attr* clm) ;; unknown type
(define-extern *volume-descriptor-current* int) ;; unknown type
(define-extern *volume-point-current* int) ;; unknown type
(define-extern *volume-normal-current* int) ;; unknown type
(define-extern *volume-descriptor* vol-control) ;; unknown type
(define-extern *volume-point* vector-array) ;; unknown type
(define-extern *volume-normal* vector-array) ;; unknown type
(define-extern *clm-cam-attr* clm) ;; unknown type
(define-extern *clm-cam-lookthrough* clm) ;; unknown type
(define-extern *clm-save-all* clm) ;; unknown type
(define-extern *clm-save-one* clm) ;; unknown type
(define-extern *camera-layout-blink* symbol)
(define-extern *last-cur-entity* int)
(define-extern *clm-select* clm)
(define-extern *clm* clm)
(define-extern *camera-layout-message-ypos* int)
(define-extern *CAM_LAYOUT-bank* cam-layout-bank)
(define-extern *clm-edit* clm)
(define-extern *clm-focalpull-attr* clm)
(define-extern *clm-index-attr* clm)
(define-extern *clm-intro-attr* clm)
(define-extern *clm-spline-attr* clm)
(define-extern *clm-vol-attr* clm)
(define-extern *volume-descriptor-current* int)
(define-extern *volume-point-current* int)
(define-extern *volume-normal-current* int)
(define-extern *volume-descriptor* vol-control)
(define-extern *volume-point* vector-array)
(define-extern *volume-normal* vector-array)
(define-extern *clm-cam-attr* clm)
(define-extern *clm-cam-lookthrough* clm)
(define-extern *clm-save-all* clm)
(define-extern *clm-save-one* clm)
;; ----------------------
@@ -20230,21 +20237,21 @@
;; - Unknowns
(define-extern *camera-old-level* string) ;; unknown type
(define-extern *camera-old-cpu* int) ;; unknown type
(define-extern *camera-old-vu* int) ;; unknown type
(define-extern *camera-old-tfrag-bytes* int) ;; unknown type
(define-extern *camera-old-stat-string-tfrag-near* string) ;; unknown type
(define-extern *camera-old-stat-string-tfrag* string) ;; unknown type
(define-extern *camera-old-stat-string-total* string) ;; unknown type
(define-extern *cam-collision-record-show* int) ;; unknown type
(define-extern *cam-collision-record* cam-collision-record-array) ;; unknown type
(define-extern *cam-collision-record-last* int) ;; unknown type
(define-extern *cam-collision-record-first* int) ;; unknown type
(define-extern *cam-debug-los-tri* (inline-array cam-debug-tri)) ;; unknown type
(define-extern *cam-debug-los-tri-current* int) ;; unknown type
(define-extern *cam-debug-coll-tri* (inline-array cam-debug-tri)) ;; unknown type
(define-extern *cam-debug-coll-tri-current* int) ;; unknown type
(define-extern *camera-old-level* string)
(define-extern *camera-old-cpu* int)
(define-extern *camera-old-vu* int)
(define-extern *camera-old-tfrag-bytes* int)
(define-extern *camera-old-stat-string-tfrag-near* string)
(define-extern *camera-old-stat-string-tfrag* string)
(define-extern *camera-old-stat-string-total* string)
(define-extern *cam-collision-record-show* int)
(define-extern *cam-collision-record* cam-collision-record-array)
(define-extern *cam-collision-record-last* int)
(define-extern *cam-collision-record-first* int)
(define-extern *cam-debug-los-tri* (inline-array cam-debug-tri))
(define-extern *cam-debug-los-tri-current* int)
(define-extern *cam-debug-coll-tri* (inline-array cam-debug-tri))
(define-extern *cam-debug-coll-tri-current* int)
;; ----------------------
@@ -20723,7 +20730,7 @@
;; - Unknowns
(define-extern *sidekick-sg* skeleton-group)
(define-extern *sidekick-remap* pair) ;; unknown type
(define-extern *sidekick-remap* pair)
;; ----------------------
@@ -20863,8 +20870,8 @@
;; - Unknowns
(define-extern *yellow-jump-mods* surface) ;; unknown type
(define-extern *fp-hud-stack* pointer) ;; first-person-hud maybe?
(define-extern *yellow-jump-mods* surface)
(define-extern *fp-hud-stack* pointer)
;; ----------------------
@@ -20890,11 +20897,11 @@
;; - Unknowns
(define-extern *death-spool-array* (array spool-anim)) ;; unknown type
(define-extern *death-spool-array* (array spool-anim))
(define-extern *deathcam-sg* skeleton-group)
(define-extern *smack-mods* surface) ;; unknown type
(define-extern *smack-up-mods* surface) ;; unknown type
(define-extern *auto-continue* symbol) ;; unknown type
(define-extern *smack-mods* surface)
(define-extern *smack-up-mods* surface)
(define-extern *auto-continue* symbol)
;; ----------------------
@@ -21452,7 +21459,7 @@
;; - Unknowns
(define-extern *footstep-surface* int) ;; unknown type
(define-extern *footstep-surface* int)
;; ----------------------
@@ -22269,8 +22276,8 @@
;; - Unknowns
(define-extern *ocean-vu0-work* ocean-vu0-work) ;; unknown type
(define-extern ocean-vu0-block vu-function) ;; unknown type
(define-extern *ocean-vu0-work* ocean-vu0-work)
(define-extern ocean-vu0-block vu-function)
;; ----------------------
@@ -22293,7 +22300,7 @@
;; - Unknowns
(define-extern ocean-texture-vu1-block vu-function)
(define-extern *ocean-texture-work* ocean-texture-work) ;; unknown type
(define-extern *ocean-texture-work* ocean-texture-work)
;; ----------------------
@@ -22326,7 +22333,7 @@
;; - Unknowns
(define-extern ocean-mid-block vu-function) ;; unknown type
(define-extern ocean-mid-block vu-function)
;; ----------------------
@@ -22367,7 +22374,7 @@
;; - Unknowns
(define-extern ocean-near-block vu-function) ;; unknown type
(define-extern ocean-near-block vu-function)
;; ----------------------
@@ -24031,7 +24038,7 @@
;; - Unknowns
(define-extern *ropebridge-tunings* (inline-array ropebridge-tuning)) ;; unknown type
(define-extern *ropebridge-tunings* (inline-array ropebridge-tuning))
(define-extern *ropebridge-70-rest-state* (inline-array vector)) ;; can't find ropebridges with these ids in the game??
(define-extern *ropebridge-52-rest-state* (inline-array vector))
(define-extern *ropebridge-32-rest-state* (inline-array vector))
@@ -26828,7 +26835,7 @@
;; - Unknowns
(define-extern *plant-boss-sg* skeleton-group)
(define-extern *plant-boss-shadow-control* shadow-control) ;; unknown type
(define-extern *plant-boss-shadow-control* shadow-control)
(define-extern *plant-boss-leaf-sg* skeleton-group)
(define-extern *plant-boss-root-sg* skeleton-group)
(define-extern *plant-boss-vine-sg* skeleton-group)
@@ -27193,7 +27200,7 @@
;; - Unknowns
(define-extern ripple-for-jungle-water ripple-wave-set) ;; unknown type
(define-extern ripple-for-jungle-water ripple-wave-set)
(define-extern *jngpusher-sg* skeleton-group)
(define-extern *sidedoor-sg* skeleton-group)
(define-extern *maindoor-sg* skeleton-group)
@@ -27448,8 +27455,8 @@
(define-extern *fish-net-sg* skeleton-group)
(define-extern *fisher-sg* skeleton-group)
(define-extern *FISHER-bank* fisher-bank) ;; unknown type
(define-extern *fisher-params* (array (inline-array fisher-params))) ;; unknown type
(define-extern *FISHER-bank* fisher-bank)
(define-extern *fisher-params* (array (inline-array fisher-params)))
(define-extern *catch-fishc-sg* skeleton-group)
(define-extern *catch-fishb-sg* skeleton-group)
(define-extern *catch-fisha-sg* skeleton-group)
@@ -27632,7 +27639,7 @@
;; - Unknowns
(define-extern *RACER-bank* racer-bank) ;; unknown type
(define-extern *RACER-bank* racer-bank)
(define-extern *balloon-sg* skeleton-group)
@@ -27745,8 +27752,8 @@
;; - Unknowns
(define-extern *racer-mods* surface) ;; unknown type
(define-extern *racer-air-mods* surface) ;; unknown type
(define-extern *racer-mods* surface)
(define-extern *racer-air-mods* surface)
;; ----------------------
@@ -27878,12 +27885,12 @@
;; - Unknowns
(define-extern *flut-air-attack-mods* surface) ;; unknown type
(define-extern *FLUT-bank* flut-bank) ;; unknown type
(define-extern *flut-run-attack-mods* surface) ;; unknown type
(define-extern *flut-jump-mods* surface) ;; unknown type
(define-extern *flut-walk-mods* surface) ;; unknown type
(define-extern *flut-double-jump-mods* surface) ;; unknown type
(define-extern *flut-air-attack-mods* surface)
(define-extern *FLUT-bank* flut-bank)
(define-extern *flut-run-attack-mods* surface)
(define-extern *flut-jump-mods* surface)
(define-extern *flut-walk-mods* surface)
(define-extern *flut-double-jump-mods* surface)
;; ----------------------
@@ -28261,6 +28268,17 @@
:flag-assert #x1e007000dc
)
(deftype evilplant (process-drawable)
()
:method-count-assert 21
:size-assert #xb0
:heap-base #x40
:flag-assert #x15004000b0
(:methods
(idle () _type_ :state 20)
)
)
;; - Functions
(define-extern set-period (function cyclegen int float))
@@ -28271,7 +28289,7 @@
;; - Unknowns
(define-extern ripple-for-villagea-water ripple-wave-set) ;; unknown type
(define-extern ripple-for-villagea-water ripple-wave-set)
(define-extern *revcycle-sg* skeleton-group)
(define-extern *revcycleprop-sg* skeleton-group)
(define-extern *hutlamp-sg* skeleton-group)
@@ -28294,6 +28312,7 @@
(define-extern *med-res-village12-sg* skeleton-group)
(define-extern *med-res-village13-sg* skeleton-group)
(define-extern *med-res-training-sg* skeleton-group)
(define-extern *evilplant-sg* skeleton-group)
;; ----------------------
@@ -28427,9 +28446,9 @@
(define-extern *fb-evilbro-sg* skeleton-group)
(define-extern *fb-evilsis-sg* skeleton-group)
(define-extern *fishermans-boat-sg* skeleton-group)
(define-extern *boat-turning-radius-table* (pointer float)) ;; unknown type
(define-extern *boat-throttle-control-table* (pointer float)) ;; unknown type
(define-extern *fishermans-boat-constants* rigid-body-platform-constants) ;; unknown type
(define-extern *boat-turning-radius-table* (pointer float))
(define-extern *boat-throttle-control-table* (pointer float))
(define-extern *fishermans-boat-constants* rigid-body-platform-constants)
;; ----------------------
@@ -28581,9 +28600,9 @@
(define-extern *scarecrow-a-break-sg* skeleton-group)
(define-extern *tra-iris-door-sg* skeleton-group)
(define-extern *tra-pontoon-sg* skeleton-group)
(define-extern *tra-pontoon-constants* rigid-body-platform-constants) ;; unknown type
(define-extern *tra-pontoon-constants* rigid-body-platform-constants)
(define-extern *training-cam-sg* skeleton-group)
(define-extern ripple-for-training-water ripple-wave-set) ;; unknown type
(define-extern ripple-for-training-water ripple-wave-set)
;; ----------------------
@@ -28745,7 +28764,7 @@
(define-extern *mistycam-sg* skeleton-group)
(define-extern *mis-bone-platform-sg* skeleton-group)
(define-extern *bone-platform-constants* rigid-body-platform-constants) ;; unknown type
(define-extern *bone-platform-constants* rigid-body-platform-constants)
(define-extern *breakaway-left-sg* skeleton-group)
(define-extern *breakaway-mid-sg* skeleton-group)
(define-extern *breakaway-right-sg* skeleton-group)
@@ -28863,7 +28882,7 @@
(define-extern *keg-conveyor-sg* skeleton-group)
(define-extern *keg-conveyor-paddle-sg* skeleton-group)
(define-extern *keg-conveyor-keg-spawn-table* (array int8)) ;; unknown type
(define-extern *keg-conveyor-keg-spawn-table* (array int8))
(define-extern *keg-sg* skeleton-group)
@@ -28885,8 +28904,8 @@
;; - Unknowns
(define-extern ripple-for-mud ripple-wave-set) ;; unknown type
(define-extern ripple-for-small-mud ripple-wave-set) ;; unknown type
(define-extern ripple-for-mud ripple-wave-set)
(define-extern ripple-for-small-mud ripple-wave-set)
;; ----------------------
@@ -29175,10 +29194,10 @@
;; - Unknowns
(define-extern *balloonlurker-sg* skeleton-group)
(define-extern *balloonlurker-constants* rigid-body-platform-constants) ;; unknown type
(define-extern *balloonlurker-constants* rigid-body-platform-constants)
(define-extern *balloonlurker-pilot-sg* skeleton-group)
(define-extern *BALLOONLURKER-bank* balloonlurker-bank) ;; unknown type
(define-extern *balloonlurker-rudder-joint-home* vector) ;; unknown type
(define-extern *BALLOONLURKER-bank* balloonlurker-bank)
(define-extern *balloonlurker-rudder-joint-home* vector)
;; ----------------------
@@ -29259,7 +29278,7 @@
(define-extern *darkecocan-sg* skeleton-group)
(define-extern *darkecocan-glow-sg* skeleton-group)
(define-extern *lurker-army* (array army-info)) ;; unknown type
(define-extern *lurker-army* (array army-info))
(define-extern *evilbro-sg* skeleton-group)
(define-extern *evilsis-sg* skeleton-group)
@@ -29467,16 +29486,16 @@
;; - Unknowns
(define-extern ripple-for-villageb-water ripple-wave-set) ;; unknown type
(define-extern ripple-for-villageb-water ripple-wave-set)
(define-extern *ogreboss-village2-sg* skeleton-group)
(define-extern *fireboulder-sg* skeleton-group)
(define-extern *exit-chamber-dummy-sg* skeleton-group)
(define-extern *ceilingflag-sg* skeleton-group)
(define-extern *allpontoons-sg* skeleton-group)
(define-extern *pontoonten-sg* skeleton-group)
(define-extern *pontoonten-constants* rigid-body-platform-constants) ;; unknown type
(define-extern *pontoonten-constants* rigid-body-platform-constants)
(define-extern *pontoonfive-sg* skeleton-group)
(define-extern *pontoonfive-constants* rigid-body-platform-constants) ;; unknown type
(define-extern *pontoonfive-constants* rigid-body-platform-constants)
(define-extern *village2cam-sg* skeleton-group)
(define-extern *med-res-rolling-sg* skeleton-group)
(define-extern *med-res-rolling1-sg* skeleton-group)
@@ -29762,7 +29781,7 @@
;; - Unknowns
(define-extern *swamp-blimp-sg* skeleton-group)
(define-extern *SWAMP_BLIMP-bank* swamp-blimp-bank) ;; unknown type
(define-extern *SWAMP_BLIMP-bank* swamp-blimp-bank)
(define-extern *swamp-rope-sg* skeleton-group)
(define-extern *precursor-arm-sg* skeleton-group)
(define-extern *swamp-tetherrock-sg* skeleton-group)
@@ -29989,7 +30008,7 @@
(define-extern *swampcam-sg* skeleton-group)
(define-extern *tar-plat-sg* skeleton-group)
(define-extern *tar-plat-constants* rigid-body-platform-constants) ;; unknown type
(define-extern *tar-plat-constants* rigid-body-platform-constants)
(define-extern *swamp-rock-sg* skeleton-group)
(define-extern *balance-plat-sg* skeleton-group)
(define-extern *swamp-spike-sg* skeleton-group)
@@ -30473,7 +30492,7 @@
;; - Unknowns
(define-extern *cavecrystal-engine* engine) ;; unknown type
(define-extern *cavecrystal-engine* engine)
;; ----------------------
@@ -30608,7 +30627,7 @@
(define-extern *cavespatula-sg* skeleton-group)
(define-extern *cavetrapdoor-sg* skeleton-group)
(define-extern *cavecrusher-sg* skeleton-group)
(define-extern ripple-for-cave-water ripple-wave-set) ;; unknown type
(define-extern ripple-for-cave-water ripple-wave-set)
(define-extern *maincavecam-sg* skeleton-group)
@@ -30709,8 +30728,8 @@
(define-extern *dark-crystal-sg* skeleton-group)
(define-extern *dark-crystal-explode-sg* skeleton-group)
(define-extern *dark-crystal-exploder-params* joint-exploder-static-params) ;; unknown type
(define-extern *dark-crystal-flash-delays* (array int32)) ;; unknown type
(define-extern *dark-crystal-exploder-params* joint-exploder-static-params)
(define-extern *dark-crystal-flash-delays* (array int32))
;; ----------------------
@@ -31006,8 +31025,8 @@
;; - Unknowns
(define-extern *mother-spider-sg* skeleton-group)
(define-extern *mother-spider-threads* (inline-array mother-spider-thread)) ;; unknown type
(define-extern *mother-spider-leg-infos* (inline-array mother-spider-leg-info)) ;; unknown type
(define-extern *mother-spider-threads* (inline-array mother-spider-thread))
(define-extern *mother-spider-leg-infos* (inline-array mother-spider-leg-info))
(define-extern *mother-spider-leg-sg* skeleton-group)
@@ -31127,7 +31146,7 @@
;; - Unknowns
(define-extern *gnawer-sg* skeleton-group)
(define-extern *gnawer-segment-infos* (inline-array gnawer-segment-info)) ;; unknown type
(define-extern *gnawer-segment-infos* (inline-array gnawer-segment-info))
(define-extern *gnawer-segment-sg* skeleton-group)
@@ -31198,7 +31217,7 @@
;; - Unknowns
(define-extern *driller-lurker-sg* skeleton-group)
(define-extern *driller-lurker-shadow-control* shadow-control) ;; unknown type
(define-extern *driller-lurker-shadow-control* shadow-control)
;; ----------------------
@@ -31284,11 +31303,11 @@
;; - Unknowns
(define-extern *tube-jump-mods* surface) ;; unknown type
(define-extern *tube-mods* surface) ;; unknown type
(define-extern *tube-surface* surface) ;; unknown type
(define-extern *tube-hit-mods* surface) ;; unknown type
(define-extern *TUBE-bank* tube-bank) ;; unknown type
(define-extern *tube-jump-mods* surface)
(define-extern *tube-mods* surface)
(define-extern *tube-surface* surface)
(define-extern *tube-hit-mods* surface)
(define-extern *TUBE-bank* tube-bank)
;; ----------------------
@@ -31339,7 +31358,7 @@
;; - Unknowns
(define-extern *seaweed-sg* skeleton-group)
(define-extern *seaweed* seaweed) ;; unknown type
(define-extern *seaweed* seaweed)
(define-extern *side-to-side-plat-sg* skeleton-group)
(define-extern *sunkencam-sg* skeleton-group)
@@ -31367,7 +31386,7 @@
;; - Unknowns
(define-extern *shover-sg* skeleton-group)
(define-extern *shover* shover) ;; unknown type
(define-extern *shover* shover)
;; ----------------------
@@ -31700,7 +31719,7 @@
;; - Unknowns
(define-extern *qbert-plat-sg* skeleton-group)
(define-extern *qbert-plat-constants* rigid-body-platform-constants) ;; unknown type
(define-extern *qbert-plat-constants* rigid-body-platform-constants)
(define-extern *qbert-plat-on-sg* skeleton-group)
@@ -31924,7 +31943,7 @@
;; - Unknowns
(define-extern ripple-for-sunken-water ripple-wave-set) ;; unknown type
(define-extern ripple-for-sunken-water ripple-wave-set)
;; ----------------------
@@ -32224,11 +32243,11 @@
;; - Unknowns
(define-extern *helix-water* helix-water) ;; unknown type
(define-extern *helix-water* helix-water)
(define-extern *helix-button-sg* skeleton-group)
(define-extern *helix-button* helix-button) ;; unknown type
(define-extern *helix-button* helix-button)
(define-extern *helix-slide-door-sg* skeleton-group)
(define-extern *helix-slide-door* helix-slide-door) ;; unknown type
(define-extern *helix-slide-door* helix-slide-door)
;; ----------------------
@@ -32550,14 +32569,18 @@
(define-extern gorge-trans (function none))
(define-extern gorge-start-draw-time (function symbol symbol none :behavior gorge-start))
(define-extern gorge-behind (function gorge symbol))
(define-extern seconds->race-time (function race-time time-frame int))
(define-extern race-time-read (function race-time int task-control time-frame symbol))
(define-extern seconds->race-time (function race-time time-frame none))
;; PAL version is better
;;(define-extern race-time-read (function race-time int task-control time-frame none))
(define-extern race-time-read (function race-time task-control time-frame none))
(define-extern rolling-start-init-by-other (function vector float none :behavior rolling-start))
(define-extern gorge-finish-init-by-other (function vector vector float none :behavior gorge-finish))
(define-extern gorge-abort-init-by-other (function vector vector float none :behavior gorge-abort))
(define-extern race-time->string (function race-time string))
(define-extern race-time-less-than (function race-time race-time symbol))
(define-extern race-time-save (function race-time int task-control symbol))
;; PAL version is better
;;(define-extern race-time-save (function race-time int task-control symbol))
(define-extern race-time-save (function race-time task-control symbol))
(define-extern dark-plants-all-done (function dark-plant symbol))
(define-extern dark-plant-randomize (function dark-plant vector))
(define-extern dark-plant-check-target (function dark-plant symbol))
@@ -32569,7 +32592,7 @@
;; - Unknowns
(define-extern ripple-for-rolling-water object) ;; unknown type
(define-extern ripple-for-rolling-water object)
(define-extern *rolling-start-whole-sg* skeleton-group)
(define-extern *rolling-start-broken-sg* skeleton-group)
(define-extern *happy-plant-sg* skeleton-group)
@@ -32678,7 +32701,7 @@
(define-extern *lightning-mole-sg* skeleton-group)
(define-extern *lightning-mole-nav-enemy-info* nav-enemy-info)
(define-extern *lightning-mole-hole* vector) ;; unknown type
(define-extern *lightning-mole-hole* vector)
;; ----------------------
@@ -33002,7 +33025,7 @@
(define-extern ogreboss-bounce-boulder-init-by-other (function int entity-actor none :behavior ogreboss-bounce-boulder))
(define-extern ogreboss-set-stage1-camera (function none))
(define-extern ogreboss-move-near (function time-frame float none :behavior ogreboss))
(define-extern ogreboss-shoot-boulder (function int none :behavior ogreboss))
(define-extern ogreboss-shoot-boulder (function pickup-type none :behavior ogreboss))
(define-extern ogreboss-inc-try-count (function none :behavior ogreboss))
(define-extern ogreboss-emerge (function float none :behavior ogreboss))
(define-extern ogreboss-pick-target (function int :behavior ogreboss))
@@ -33020,15 +33043,15 @@
;; - Unknowns
(define-extern *ogreboss-sg* skeleton-group)
(define-extern *ogreboss* ogreboss) ;; unknown type
(define-extern *ogreboss* ogreboss)
(define-extern *ogreboss-cam-sg* skeleton-group)
(define-extern *ogreboss-column-sg* skeleton-group)
(define-extern *ogreboss-bounce-boulder-sg* skeleton-group)
(define-extern *ogreboss-super-boulder-sg* skeleton-group)
(define-extern *ogreboss-shoot-boulder-sg* skeleton-group)
(define-extern *ogreboss-missile-shadow-control* shadow-control) ;; unknown type
(define-extern *ogreboss-missile-shadow-control* shadow-control)
(define-extern *ogreboss-shoot-boulder-break-sg* skeleton-group)
(define-extern *ogreboss-shadow-control* shadow-control) ;; unknown type
(define-extern *ogreboss-shadow-control* shadow-control)
;; ----------------------
@@ -33194,17 +33217,17 @@
(define-extern *shortcut-boulder-whole-sg* skeleton-group)
(define-extern *shortcut-boulder-broken-sg* skeleton-group)
(define-extern ripple-for-ogre-lava ripple-wave-set) ;; unknown type
(define-extern ripple-for-ogre-lava ripple-wave-set)
(define-extern *ogre-bridgeend-sg* skeleton-group)
(define-extern *ogre-bridge-sg* skeleton-group)
(define-extern *ogre-bridge-joint-array* (array uint8)) ;; unknown type
(define-extern *ogre-bridge-joint-array* (array uint8))
(define-extern *ogre-isle-d-sg* skeleton-group)
(define-extern *ogre-isle-b-sg* skeleton-group)
(define-extern *ogre-isle-constants* rigid-body-platform-constants) ;; unknown type
(define-extern *ogre-isle-constants* rigid-body-platform-constants)
(define-extern *ogre-step-b-sg* skeleton-group)
(define-extern *ogre-step-c-sg* skeleton-group)
(define-extern *ogre-step-a-sg* skeleton-group)
(define-extern *ogre-step-constants* rigid-body-platform-constants) ;; unknown type
(define-extern *ogre-step-constants* rigid-body-platform-constants)
(define-extern *tntbarrel-sg* skeleton-group)
(define-extern *med-res-snow-sg* skeleton-group)
(define-extern *ogre-isle-a-sg* skeleton-group)
@@ -33367,7 +33390,7 @@
(define-extern *gondolacables-sg* skeleton-group)
(define-extern *pistons-sg* skeleton-group)
(define-extern *gondola-sg* skeleton-group)
(define-extern ripple-for-villagec-lava ripple-wave-set) ;; unknown type
(define-extern ripple-for-villagec-lava ripple-wave-set)
(define-extern *med-res-ogre-sg* skeleton-group)
(define-extern *med-res-ogre2-sg* skeleton-group)
(define-extern *med-res-ogre3-sg* skeleton-group)
@@ -33796,7 +33819,7 @@
(define-extern *snow-ball-sg* skeleton-group)
(define-extern *snow-ball-shadow-sg* skeleton-group)
(define-extern *snow-ball-shadow-control* shadow-control) ;; unknown type
(define-extern *snow-ball-shadow-control* shadow-control)
;; ----------------------
@@ -33993,6 +34016,7 @@
(deftype snow-button (process-drawable)
((root-override collide-shape-moving :score 100 :offset 112)
(wiggled? symbol :offset-assert 176)
(trying-for-fuel-cell? symbol :offset-assert 180) ;; PAL patch here
(timeout time-frame :offset-assert 184)
(delay-til-wiggle time-frame :offset-assert 192)
(prev-button entity-actor :offset-assert 200)
@@ -34185,7 +34209,7 @@
;; - Unknowns
(define-extern *ram-boss-nav-enemy-info-no-shield* nav-enemy-info) ;; unknown type
(define-extern *ram-boss-nav-enemy-info-no-shield* nav-enemy-info)
(define-extern *ram-boss-sg* skeleton-group)
(define-extern *ram-boss-nav-enemy-info* nav-enemy-info)
+116
View File
@@ -0,0 +1,116 @@
{
"game_version": 1,
"text_version": 11,
"game_name": "jak1_jp",
"expected_elf_name": "SCPS_150.21",
// if you want to filter to only some object names.
// it will make the decompiler much faster.
"allowed_objects": [],
"banned_objects": [],
////////////////////////////
// CODE ANALYSIS OPTIONS
////////////////////////////
// set to true to generate plain .asm files with MIPS disassembly, with no fancy decompilation.
// this is fast and should succeed 100% of the time.
"disassemble_code": false,
// Run the decompiler
"decompile_code": false,
// run the first pass of the decompiler
"find_functions": true,
////////////////////////////
// DATA ANALYSIS OPTIONS
////////////////////////////
// set to true to generate plain .asm files for data files.
// this will display most data as hex, but will add labels/references/type pointers/strings
// this generates a huge amount of output if you run it on the entire game.
"disassemble_data": false,
// unpack textures to assets folder
"process_tpages": true,
// unpack game text to assets folder
"process_game_text": true,
// unpack game count to assets folder
"process_game_count": true,
// write goal imports for art groups
"process_art_groups": true,
///////////////////////////
// WEIRD OPTIONS
///////////////////////////
// these options are used rarely and should usually be left at false
// generate the symbol_map.json file.
// this is a guess at where each symbol is first defined/used.
"generate_symbol_definition_map": false,
// debug option for instruction decoder
"write_hex_near_instructions": false,
// experimental tool to extract linked lists used for region scripting in Jak 2 and Jak 3.
"write_scripts": false,
// hex dump of code/data files.
"hexdump_code": false,
"hexdump_data": false,
// dump raw obj files
"dump_objs": true,
// print control flow graph
"print_cfgs": false,
// set to true for PAL versions. this will forcefully skip files that have some data missing at the end.
"is_pal": false,
////////////////////////////
// CONFIG FILES
////////////////////////////
"type_casts_file": "decompiler/config/jak1_pal/type_casts.jsonc",
"anonymous_function_types_file": "decompiler/config/jak1_ntsc_black_label/anonymous_function_types.jsonc",
"var_names_file": "decompiler/config/jak1_ntsc_black_label/var_names.jsonc",
"label_types_file": "decompiler/config/jak1_jp/label_types.jsonc",
"stack_structures_file": "decompiler/config/jak1_ntsc_black_label/stack_structures.jsonc",
"hacks_file": "decompiler/config/jak1_pal/hacks.jsonc",
"inputs_file": "decompiler/config/jak1_ntsc_black_label/inputs.jsonc",
"art_info_file": "decompiler/config/jak1_ntsc_black_label/art_info.jsonc",
"import_deps_file": "decompiler/config/jak1_ntsc_black_label/import_deps.jsonc",
"all_types_file": "decompiler/config/all-types.gc",
// optional: a predetermined object file name map from a file.
// this will make decompilation naming consistent even if you only run on some objects.
"obj_file_name_map_file": "goal_src/build/all_objs_jak1_jp.json",
////////////////////////////
// LEVEL EXTRACTION
////////////////////////////
// turn this on to extract level background graphics data
"levels_extract": true,
// turn this on if you want extracted levels to be saved out as .obj files
"levels_convert_to_obj": false,
// should we extract collision meshes?
// these can be displayed in game, but makes the .fr3 files slightly larger
"extract_collision": true,
////////////////////////////
// PATCHING OPTIONS
////////////////////////////
// these are options related to xdelta3 patches on specific objects
// this allows us to get a more consistent input
// set to true to write new patch files
"write_patches": false,
// set to true to apply patch files
"apply_patches": true,
// what to patch an object to and the patch file is
"object_patches": {
}
}
File diff suppressed because it is too large Load Diff
+52 -1
View File
@@ -97,5 +97,56 @@
"levels_convert_to_obj": false,
// should we extract collision meshes?
// these can be displayed in game, but makes the .fr3 files slightly larger
"extract_collision": true
"extract_collision": true,
////////////////////////////
// PATCHING OPTIONS
////////////////////////////
// these are options related to xdelta3 patches on specific objects
// this allows us to get a more consistent input
// set to true to write new patch files
"write_patches": false,
// set to true to apply patch files
"apply_patches": true,
// what to patch an object to and the patch file is
"object_patches": {
"0COMMON": {
"crc32": "DD2CD7E2",
"in": "decompiler_out/jak1_pal/raw_obj/0COMMON.go",
"out": "game/assets/jak1/patches/0common.xd3"
},
"1COMMON": {
"crc32": "2B9C79F9",
"in": "decompiler_out/jak1_pal/raw_obj/1COMMON.go",
"out": "game/assets/jak1/patches/1common.xd3"
},
"2COMMON": {
"crc32": "DA35C5F3",
"in": "decompiler_out/jak1_pal/raw_obj/2COMMON.go",
"out": "game/assets/jak1/patches/2common.xd3"
},
"3COMMON": {
"crc32": "50C4A6A0",
"in": "decompiler_out/jak1_pal/raw_obj/3COMMON.go",
"out": "game/assets/jak1/patches/3common.xd3"
},
"4COMMON": {
"crc32": "C475F525",
"in": "decompiler_out/jak1_pal/raw_obj/4COMMON.go",
"out": "game/assets/jak1/patches/4common.xd3"
},
"5COMMON": {
"crc32": "92D44110",
"in": "decompiler_out/jak1_pal/raw_obj/5COMMON.go",
"out": "game/assets/jak1/patches/5common.xd3"
},
"6COMMON": {
"crc32": "85B23FEE",
"in": "decompiler_out/jak1_pal/raw_obj/6COMMON.go",
"out": "game/assets/jak1/patches/6common.xd3"
}
}
}
@@ -875,7 +875,7 @@
],
"target2": [
[11, "(function vector time-frame float symbol :behavior target)"],
[11, "(function vector time-frame float symbol :behavior process)"],
[99, "(function symbol)"]
],
@@ -890,5 +890,7 @@
"seagull": [[30, "(function process symbol)"]],
"yakow": [[29, "(function none :behavior process)"]],
"placeholder-do-not-add-below": []
}
@@ -1645,7 +1645,6 @@
["L370", "attack-info"],
["L371", "attack-info"],
["L384", "float", true],
["L384", "float", true],
["L385", "float", true],
["L386", "float", true],
["L387", "float", true],
@@ -2245,7 +2245,11 @@
"(code nav-enemy-give-up babak)": [[16, "vector"]],
"(method 10 gui-query)": [[16, "font-context"]],
"(method 10 gui-query)": [
[16, "font-context"],
[112, "font-context"],
[208, "font-context"]
],
"(method 46 process-taskable)": [
[16, "vector"],
@@ -5492,5 +5496,7 @@
[128, "vector"]
],
"(trans fisher-done)": [[16, "font-context"]],
"placeholder-do-not-add-below!": []
}
@@ -4054,5 +4054,11 @@
}
},
"(code ogreboss-stage1)": {
"vars": {
"s5-0": ["boulder-pickup", "pickup-type"]
}
},
"aaaaaaaaaaaaaaaaaaaaaaa": {}
}
+48 -13
View File
@@ -1,5 +1,8 @@
{
"game_version": 1,
"text_version": 11,
"game_name": "jak1_pal",
"expected_elf_name": "SCES_503.61",
// if you want to filter to only some object names.
// it will make the decompiler much faster.
@@ -15,7 +18,10 @@
"disassemble_code": false,
// Run the decompiler
"decompile_code": true,
"decompile_code": false,
// run the first pass of the decompiler
"find_functions": true,
////////////////////////////
// DATA ANALYSIS OPTIONS
@@ -27,11 +33,13 @@
"disassemble_data": false,
// unpack textures to assets folder
"process_tpages": false,
"process_tpages": true,
// unpack game text to assets folder
"process_game_text": false,
"process_game_text": true,
// unpack game count to assets folder
"process_game_count": false,
"process_game_count": true,
// write goal imports for art groups
"process_art_groups": true,
///////////////////////////
// WEIRD OPTIONS
@@ -39,9 +47,6 @@
// these options are used rarely and should usually be left at false
// output a file type_defs.gc which is used for the types part of all-types.gc
"regenerate_all_types": false,
// generate the symbol_map.json file.
// this is a guess at where each symbol is first defined/used.
"generate_symbol_definition_map": false,
@@ -56,7 +61,7 @@
"hexdump_code": false,
"hexdump_data": false,
// dump raw obj files
"dump_objs": false,
"dump_objs": true,
// print control flow graph
"print_cfgs": false,
@@ -68,14 +73,44 @@
////////////////////////////
"type_casts_file": "decompiler/config/jak1_pal/type_casts.jsonc",
"anonymous_function_types_file": "decompiler/config/jak1_pal/anonymous_function_types.jsonc",
"var_names_file": "decompiler/config/jak1_pal/var_names.jsonc",
"anonymous_function_types_file": "decompiler/config/jak1_ntsc_black_label/anonymous_function_types.jsonc",
"var_names_file": "decompiler/config/jak1_ntsc_black_label/var_names.jsonc",
"label_types_file": "decompiler/config/jak1_pal/label_types.jsonc",
"stack_structures_file": "decompiler/config/jak1_pal/stack_structures.jsonc",
"stack_structures_file": "decompiler/config/jak1_ntsc_black_label/stack_structures.jsonc",
"hacks_file": "decompiler/config/jak1_pal/hacks.jsonc",
"inputs_file": "decompiler/config/jak1_pal/inputs.jsonc",
"inputs_file": "decompiler/config/jak1_ntsc_black_label/inputs.jsonc",
"art_info_file": "decompiler/config/jak1_ntsc_black_label/art_info.jsonc",
"import_deps_file": "decompiler/config/jak1_ntsc_black_label/import_deps.jsonc",
"all_types_file": "decompiler/config/all-types.gc",
// optional: a predetermined object file name map from a file.
// this will make decompilation naming consistent even if you only run on some objects.
"obj_file_name_map_file": ""
"obj_file_name_map_file": "goal_src/build/all_objs_jak1_pal.json",
////////////////////////////
// LEVEL EXTRACTION
////////////////////////////
// turn this on to extract level background graphics data
"levels_extract": true,
// turn this on if you want extracted levels to be saved out as .obj files
"levels_convert_to_obj": false,
// should we extract collision meshes?
// these can be displayed in game, but makes the .fr3 files slightly larger
"extract_collision": true,
////////////////////////////
// PATCHING OPTIONS
////////////////////////////
// these are options related to xdelta3 patches on specific objects
// this allows us to get a more consistent input
// set to true to write new patch files
"write_patches": false,
// set to true to apply patch files
"apply_patches": true,
// what to patch an object to and the patch file is
"object_patches": {
}
}
@@ -1,776 +0,0 @@
{
"gkernel": [
[16, "(function process symbol)"],
[22, "(function process symbol)"],
[25, "(function process symbol)"],
[28, "(function process symbol)"],
[30, "(function process symbol)"],
[32, "(function process symbol)"]
],
"hud": [
[10, "(function none :behavior hud)"]
],
"main": [[4, "(function none :behavior process)"]],
"process-drawable": [[29, "(function string symbol)"]],
"task-control": [
[9, "(function task-control symbol)"],
[10, "(function task-control symbol)"],
[11, "(function task-control symbol)"],
[12, "(function task-control symbol)"],
[13, "(function task-control symbol)"],
[14, "(function task-control symbol)"],
[15, "(function task-control symbol)"],
[16, "(function task-control symbol)"],
[17, "(function task-control symbol)"],
[18, "(function task-control symbol)"],
[19, "(function task-control symbol)"],
[20, "(function task-control symbol)"],
[21, "(function task-control symbol)"],
[22, "(function task-control symbol)"],
[23, "(function task-control symbol)"],
[24, "(function task-control symbol)"],
[25, "(function task-control symbol)"],
[26, "(function task-control symbol)"],
[27, "(function task-control symbol)"],
[28, "(function task-control symbol)"],
[29, "(function task-control symbol)"],
[30, "(function task-control symbol)"],
[31, "(function task-control symbol)"],
[32, "(function task-control symbol)"],
[33, "(function task-control symbol)"],
[34, "(function task-control symbol)"],
[35, "(function task-control symbol)"],
[36, "(function task-control symbol)"],
[37, "(function task-control symbol)"],
[38, "(function task-control symbol)"],
[39, "(function task-control symbol)"],
[40, "(function task-control symbol)"],
[41, "(function task-control symbol)"],
[42, "(function task-control symbol)"],
[43, "(function task-control symbol)"],
[44, "(function task-control symbol)"],
[45, "(function task-control symbol)"],
[46, "(function task-control symbol)"],
[47, "(function task-control symbol)"],
[48, "(function task-control symbol)"],
[49, "(function task-control symbol)"],
[50, "(function task-control symbol)"],
[51, "(function task-control symbol)"],
[52, "(function task-control symbol)"],
[53, "(function task-control symbol)"],
[54, "(function task-control symbol)"],
[55, "(function task-control symbol)"],
[56, "(function task-control symbol)"],
[57, "(function task-control symbol)"],
[58, "(function task-control symbol)"],
[59, "(function task-control symbol)"],
[60, "(function task-control symbol)"],
[61, "(function task-control symbol)"],
[62, "(function task-control symbol)"],
[63, "(function task-control symbol)"],
[64, "(function task-control symbol)"],
[65, "(function task-control symbol)"],
[66, "(function task-control symbol)"],
[67, "(function task-control symbol)"],
[68, "(function task-control symbol)"],
[69, "(function task-control symbol)"],
[70, "(function task-control symbol)"],
[71, "(function task-control symbol)"],
[72, "(function task-control symbol)"],
[73, "(function task-control symbol)"],
[74, "(function task-control symbol)"],
[75, "(function task-control symbol)"],
[76, "(function task-control symbol)"],
[77, "(function task-control symbol)"],
[78, "(function task-control symbol)"],
[79, "(function task-control symbol)"],
[80, "(function task-control symbol)"],
[81, "(function task-control symbol)"],
[82, "(function task-control symbol)"],
[83, "(function task-control symbol)"],
[84, "(function task-control symbol)"],
[85, "(function task-control symbol)"],
[86, "(function task-control symbol)"],
[87, "(function task-control symbol)"],
[88, "(function task-control symbol)"],
[89, "(function task-control symbol)"],
[90, "(function task-control symbol)"],
[91, "(function task-control symbol)"],
[92, "(function task-control symbol)"],
[93, "(function task-control symbol)"],
[94, "(function task-control symbol)"],
[95, "(function task-control symbol)"],
[96, "(function task-control symbol)"],
[97, "(function task-control symbol)"],
[98, "(function task-control symbol)"],
[99, "(function task-control symbol)"],
[100, "(function task-control symbol)"],
[101, "(function task-control symbol)"],
[102, "(function task-control symbol)"],
[103, "(function task-control symbol)"],
[104, "(function task-control symbol)"],
[105, "(function task-control symbol)"],
[106, "(function task-control symbol)"],
[107, "(function task-control symbol)"],
[108, "(function task-control symbol)"],
[109, "(function task-control symbol)"],
[110, "(function task-control symbol)"],
[111, "(function task-control symbol)"],
[112, "(function task-control symbol)"],
[113, "(function task-control symbol)"],
[114, "(function task-control symbol)"],
[115, "(function task-control symbol)"],
[116, "(function task-control symbol)"],
[117, "(function task-control symbol)"],
[118, "(function task-control symbol)"],
[119, "(function task-control symbol)"],
[120, "(function task-control symbol)"],
[121, "(function task-control symbol)"],
[122, "(function task-control symbol)"],
[123, "(function task-control symbol)"],
[124, "(function task-control symbol)"],
[125, "(function task-control symbol)"],
[126, "(function task-control symbol)"],
[127, "(function task-control symbol)"],
[128, "(function task-control symbol)"],
[129, "(function task-control symbol)"],
[130, "(function task-control symbol)"],
[131, "(function task-control symbol)"],
[132, "(function task-control symbol)"],
[133, "(function task-control symbol)"],
[134, "(function task-control symbol)"],
[135, "(function task-control symbol)"],
[136, "(function task-control symbol)"],
[137, "(function task-control symbol)"],
[138, "(function task-control symbol)"],
[139, "(function task-control symbol)"],
[140, "(function task-control symbol)"],
[141, "(function task-control symbol)"],
[142, "(function task-control symbol)"],
[143, "(function task-control symbol)"],
[144, "(function task-control symbol)"],
[145, "(function task-control symbol)"],
[146, "(function task-control symbol)"],
[147, "(function task-control symbol)"],
[148, "(function task-control symbol)"],
[149, "(function task-control symbol)"],
[150, "(function task-control symbol)"],
[151, "(function task-control symbol)"],
[152, "(function task-control symbol)"],
[153, "(function task-control symbol)"],
[154, "(function task-control symbol)"],
[155, "(function task-control symbol)"],
[156, "(function task-control symbol)"],
[157, "(function task-control symbol)"],
[158, "(function task-control symbol)"],
[159, "(function task-control symbol)"],
[160, "(function task-control symbol)"],
[161, "(function task-control symbol)"],
[162, "(function task-control symbol)"],
[163, "(function task-control symbol)"],
[164, "(function task-control symbol)"],
[165, "(function task-control symbol)"],
[166, "(function task-control symbol)"],
[167, "(function task-control symbol)"],
[168, "(function task-control symbol)"],
[169, "(function task-control symbol)"],
[170, "(function task-control symbol)"],
[171, "(function task-control symbol)"],
[172, "(function task-control symbol)"],
[173, "(function task-control symbol)"],
[174, "(function task-control symbol)"],
[175, "(function task-control symbol)"],
[176, "(function task-control symbol)"],
[177, "(function task-control symbol)"],
[178, "(function task-control symbol)"],
[179, "(function task-control symbol)"],
[180, "(function task-control symbol)"],
[181, "(function task-control symbol)"],
[182, "(function task-control symbol)"],
[183, "(function task-control symbol)"],
[184, "(function task-control symbol)"],
[185, "(function task-control symbol)"],
[186, "(function task-control symbol)"],
[187, "(function task-control symbol)"],
[188, "(function task-control symbol)"],
[189, "(function task-control symbol)"],
[190, "(function task-control symbol)"],
[191, "(function task-control symbol)"],
[192, "(function task-control symbol)"],
[193, "(function task-control symbol)"],
[194, "(function task-control symbol)"],
[195, "(function task-control symbol)"],
[196, "(function task-control symbol)"],
[197, "(function task-control symbol)"],
[198, "(function task-control symbol)"],
[199, "(function task-control symbol)"],
[200, "(function task-control symbol)"],
[201, "(function task-control symbol)"],
[202, "(function task-control symbol)"],
[203, "(function task-control symbol)"],
[204, "(function task-control symbol)"],
[205, "(function task-control symbol)"],
[206, "(function task-control symbol)"],
[207, "(function task-control symbol)"],
[208, "(function task-control symbol)"],
[209, "(function task-control symbol)"],
[210, "(function task-control symbol)"],
[211, "(function task-control symbol)"],
[212, "(function task-control symbol)"],
[213, "(function task-control symbol)"],
[214, "(function task-control symbol)"],
[215, "(function task-control symbol)"],
[216, "(function task-control symbol)"],
[217, "(function task-control symbol)"],
[218, "(function task-control symbol)"],
[219, "(function task-control symbol)"],
[220, "(function task-control symbol)"],
[221, "(function task-control symbol)"],
[222, "(function task-control symbol)"],
[223, "(function task-control symbol)"],
[224, "(function task-control symbol)"],
[225, "(function task-control symbol)"],
[226, "(function task-control symbol)"],
[227, "(function task-control symbol)"],
[228, "(function task-control symbol)"],
[229, "(function task-control symbol)"],
[230, "(function task-control symbol)"],
[231, "(function task-control symbol)"],
[232, "(function task-control symbol)"],
[233, "(function task-control symbol)"],
[234, "(function task-control symbol)"],
[235, "(function task-control symbol)"],
[236, "(function task-control symbol)"],
[237, "(function task-control symbol)"],
[238, "(function task-control symbol)"],
[239, "(function task-control symbol)"],
[240, "(function task-control symbol)"],
[241, "(function task-control symbol)"],
[242, "(function task-control symbol)"],
[243, "(function task-control symbol)"],
[244, "(function task-control symbol)"],
[245, "(function task-control symbol)"],
[246, "(function task-control symbol)"],
[247, "(function task-control symbol)"],
[248, "(function task-control symbol)"],
[249, "(function task-control symbol)"],
[250, "(function task-control symbol)"],
[251, "(function task-control symbol)"],
[252, "(function task-control symbol)"],
[253, "(function task-control symbol)"],
[254, "(function task-control symbol)"],
[255, "(function task-control symbol)"],
[256, "(function task-control symbol)"],
[257, "(function task-control symbol)"],
[258, "(function task-control symbol)"],
[259, "(function task-control symbol)"],
[260, "(function task-control symbol)"],
[261, "(function task-control symbol)"],
[262, "(function task-control symbol)"],
[263, "(function task-control symbol)"],
[264, "(function task-control symbol)"],
[265, "(function task-control symbol)"],
[266, "(function task-control symbol)"],
[267, "(function task-control symbol)"],
[268, "(function task-control symbol)"],
[269, "(function task-control symbol)"],
[270, "(function task-control symbol)"],
[271, "(function task-control symbol)"],
[272, "(function task-control symbol)"],
[273, "(function task-control symbol)"],
[274, "(function task-control symbol)"],
[275, "(function task-control symbol)"],
[276, "(function task-control symbol)"],
[277, "(function task-control symbol)"],
[278, "(function task-control symbol)"],
[279, "(function task-control symbol)"],
[280, "(function task-control symbol)"],
[281, "(function task-control symbol)"],
[282, "(function task-control symbol)"],
[283, "(function task-control symbol)"],
[284, "(function task-control symbol)"],
[285, "(function task-control symbol)"],
[286, "(function task-control symbol)"],
[287, "(function task-control symbol)"],
[288, "(function task-control symbol)"],
[289, "(function task-control symbol)"],
[290, "(function task-control symbol)"],
[291, "(function task-control symbol)"],
[292, "(function task-control symbol)"],
[293, "(function task-control symbol)"],
[294, "(function task-control symbol)"],
[295, "(function task-control symbol)"],
[296, "(function task-control symbol)"],
[297, "(function task-control symbol)"],
[298, "(function task-control symbol)"],
[299, "(function task-control symbol)"],
[300, "(function task-control symbol)"],
[301, "(function task-control symbol)"],
[302, "(function task-control symbol)"],
[303, "(function task-control symbol)"],
[304, "(function task-control symbol)"],
[305, "(function task-control symbol)"],
[306, "(function task-control symbol)"],
[307, "(function task-control symbol)"],
[308, "(function task-control symbol)"],
[309, "(function task-control symbol)"],
[310, "(function task-control symbol)"],
[311, "(function task-control symbol)"],
[312, "(function task-control symbol)"],
[313, "(function task-control symbol)"],
[314, "(function task-control symbol)"],
[315, "(function task-control symbol)"],
[316, "(function task-control symbol)"],
[317, "(function task-control symbol)"],
[318, "(function task-control symbol)"],
[319, "(function task-control symbol)"],
[320, "(function task-control symbol)"],
[321, "(function task-control symbol)"],
[322, "(function task-control symbol)"],
[323, "(function task-control symbol)"],
[324, "(function task-control symbol)"],
[325, "(function task-control symbol)"],
[326, "(function task-control symbol)"],
[327, "(function task-control symbol)"],
[328, "(function task-control symbol)"],
[329, "(function task-control symbol)"],
[330, "(function task-control symbol)"],
[331, "(function task-control symbol)"],
[332, "(function task-control symbol)"],
[333, "(function task-control symbol)"],
[334, "(function task-control symbol)"],
[335, "(function task-control symbol)"],
[336, "(function task-control task-control symbol)"],
[337, "(function task-control task-control symbol)"],
[338, "(function task-control symbol)"],
[339, "(function task-control symbol)"],
[340, "(function task-control symbol)"],
[341, "(function task-control symbol)"],
[342, "(function task-control symbol)"],
[343, "(function task-control symbol)"],
[344, "(function task-control symbol)"],
[345, "(function task-control symbol)"],
[346, "(function task-control symbol)"],
[347, "(function task-control symbol)"],
[348, "(function task-control symbol)"],
[349, "(function task-control symbol)"],
[350, "(function task-control symbol)"],
[351, "(function task-control symbol)"],
[352, "(function task-control symbol)"],
[353, "(function task-control symbol)"],
[354, "(function task-control symbol)"],
[355, "(function task-control symbol)"],
[356, "(function task-control symbol)"],
[357, "(function task-control symbol)"],
[358, "(function task-control symbol)"],
[359, "(function task-control symbol)"],
[360, "(function task-control symbol)"],
[361, "(function task-control symbol)"],
[362, "(function task-control task-control symbol)"],
[363, "(function task-control task-control symbol)"],
[364, "(function task-control task-control symbol)"],
[365, "(function task-control task-control symbol)"],
[366, "(function task-control symbol)"],
[367, "(function task-control symbol)"],
[368, "(function task-control symbol)"],
[369, "(function task-control symbol)"],
[370, "(function task-control symbol)"],
[371, "(function task-control symbol)"],
[372, "(function task-control symbol)"],
[373, "(function task-control symbol)"],
[374, "(function task-control symbol)"],
[375, "(function task-control symbol)"],
[376, "(function task-control symbol)"],
[377, "(function task-control symbol)"],
[378, "(function task-control symbol)"],
[379, "(function task-control symbol)"],
[380, "(function task-control symbol)"],
[381, "(function task-control symbol)"],
[382, "(function task-control symbol)"],
[383, "(function task-control symbol)"],
[384, "(function task-control symbol)"],
[385, "(function task-control symbol)"],
[386, "(function task-control symbol)"],
[387, "(function task-control symbol)"],
[388, "(function task-control symbol)"],
[389, "(function task-control symbol)"],
[390, "(function task-control symbol)"],
[391, "(function task-control symbol)"],
[392, "(function task-control symbol)"],
[393, "(function task-control symbol)"],
[394, "(function task-control symbol)"],
[395, "(function task-control symbol)"],
[396, "(function task-control symbol)"],
[397, "(function task-control symbol)"],
[398, "(function task-control symbol)"],
[399, "(function task-control symbol)"],
[400, "(function task-control symbol)"],
[401, "(function task-control symbol)"],
[402, "(function task-control symbol)"],
[403, "(function task-control symbol)"],
[404, "(function task-control symbol)"],
[405, "(function task-control symbol)"],
[406, "(function task-control symbol)"],
[407, "(function task-control symbol)"],
[408, "(function task-control symbol)"],
[409, "(function task-control symbol)"],
[410, "(function task-control symbol)"],
[411, "(function task-control symbol)"],
[412, "(function task-control symbol)"],
[413, "(function task-control symbol)"],
[414, "(function task-control task-control symbol)"],
[415, "(function task-control task-control symbol)"],
[416, "(function task-control symbol)"],
[417, "(function task-control symbol)"],
[418, "(function task-control symbol)"],
[419, "(function task-control symbol)"],
[420, "(function task-control symbol)"],
[421, "(function task-control symbol)"],
[422, "(function task-control symbol)"],
[423, "(function task-control symbol)"],
[424, "(function task-control symbol)"],
[425, "(function task-control task-control symbol)"],
[426, "(function task-control task-control symbol)"],
[427, "(function task-control symbol)"],
[428, "(function task-control symbol)"],
[429, "(function task-control symbol)"],
[430, "(function task-control symbol)"],
[431, "(function task-control symbol)"],
[432, "(function task-control task-control symbol)"],
[433, "(function task-control task-control symbol)"],
[434, "(function task-control task-control symbol)"],
[435, "(function task-control symbol)"],
[436, "(function task-control task-control symbol)"],
[437, "(function task-control task-control symbol)"],
[438, "(function task-control task-control symbol)"],
[439, "(function task-control symbol)"],
[440, "(function task-control symbol)"],
[441, "(function task-control symbol)"],
[442, "(function task-control symbol)"],
[443, "(function task-control task-control symbol)"],
[444, "(function task-control task-control symbol)"],
[445, "(function task-control symbol)"],
[446, "(function task-control task-control symbol)"],
[447, "(function task-control task-control symbol)"],
[448, "(function task-control task-control symbol)"],
[449, "(function task-control symbol)"],
[450, "(function task-control symbol)"],
[451, "(function task-control symbol)"],
[452, "(function task-control symbol)"],
[453, "(function task-control task-control symbol)"],
[454, "(function task-control task-control symbol)"],
[455, "(function task-control symbol)"],
[456, "(function task-control task-control symbol)"],
[457, "(function task-control task-control symbol)"],
[458, "(function task-control task-control symbol)"],
[459, "(function task-control symbol)"],
[460, "(function task-control symbol)"],
[461, "(function task-control symbol)"],
[462, "(function task-control symbol)"],
[463, "(function task-control symbol)"],
[464, "(function task-control symbol)"],
[465, "(function task-control symbol)"],
[466, "(function task-control symbol)"],
[467, "(function task-control symbol)"],
[468, "(function task-control symbol)"],
[469, "(function task-control symbol)"],
[470, "(function task-control symbol)"],
[471, "(function task-control symbol)"],
[472, "(function task-control symbol)"],
[473, "(function task-control symbol)"],
[474, "(function task-control task-control symbol)"],
[475, "(function task-control task-control symbol)"],
[476, "(function task-control task-control symbol)"],
[477, "(function task-control task-control symbol)"],
[478, "(function task-control symbol)"],
[479, "(function task-control symbol)"],
[480, "(function task-control symbol)"],
[481, "(function task-control symbol)"],
[482, "(function task-control symbol)"],
[483, "(function task-control symbol)"],
[484, "(function task-control symbol)"],
[485, "(function task-control symbol)"],
[486, "(function task-control symbol)"],
[487, "(function task-control symbol)"],
[488, "(function task-control symbol)"],
[489, "(function task-control symbol)"],
[490, "(function task-control symbol)"],
[491, "(function task-control symbol)"],
[492, "(function task-control symbol)"],
[493, "(function task-control symbol)"],
[494, "(function task-control symbol)"],
[495, "(function task-control symbol)"],
[496, "(function task-control symbol)"]
],
"game-info": [
[17, "(function symbol symbol continue-point symbol none)"],
[6, "(function process-drawable none)"],
[7, "(function none :behavior process-drawable)"],
[8, "(function object)"]
],
"default-menu": [
[3, "(function none)"],
[4, "(function int int symbol)"], // TODO - first arg is ignored - i think there's a decomp bug here
[5, "(function int int symbol)"], // TODO - first arg is ignored
[6, "(function int int target)"], // TODO - first arg is ignored
[8, "(function int)"],
[9, "(function continue-point)"],
[10, "(function none)"],
[11, "(function object)"],
[12, "(function object)"],
[13, "(function object)"],
[14, "(function quaternion)"],
[15, "(function quaternion)"],
[16, "(function int int basic)"], // TODO - first arg is ignored
[17, "(function int)"],
[18, "(function int)"],
[19, "(function int)"],
[20, "(function none)"],
[21, "(function int int basic)"], // TODO - first arg is ignored
[22, "(function int int basic)"], // TODO - first arg is ignored
[23, "(function int int basic)"], // TODO - first arg is ignored
[24, "(function int int float float)"], // TODO - first arg is ignored
[25, "(function int int float float)"], // TODO - first arg is ignored
[26, "(function int int float float)"], // TODO - first arg is ignored
[27, "(function int int target)"], // TODO - first arg is ignored
[28, "(function none)"],
[29, "(function none)"],
[30, "(function none)"],
[31, "(function none)"],
[32, "(function none)"],
[33, "(function none)"],
[34, "(function int)"],
[35, "(function int)"],
[60, "(function debug-menu int float float object)"], // TODO - instance type blocking this one, not 100% sure about the debug-menu, but it has a string at offset 0
[61, "(function debug-menu int float float object)"], // TODO - instance type blocking this one, not 100% sure about the debug-menu, but it has a string at offset 0
[63, "(function symbol int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
[64, "(function symbol int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
[65, "(function symbol int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
[66, "(function symbol int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
[67, "(function symbol int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
[68, "(function symbol int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
[69, "(function symbol int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
[70, "(function symbol int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
[71, "(function symbol int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
[72, "(function symbol int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
[73, "(function symbol int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
[74, "(function symbol int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
[75, "(function symbol int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
[76, "(function symbol int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
[77, "(function symbol int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
[78, "(function symbol int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
[79, "(function symbol int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
[80, "(function object)"],
[81, "(function object)"],
[82, "(function symbol int float float none)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0)
[84, "(function symbol int none)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0)
[88, "(function debug-menu debug-menu symbol)"], // not 100% sure about the debug-menu, but it has a string at offset 0
[89, "(function debug-menu debug-menu symbol)"], // not 100% sure about the debug-menu, but it has a string at offset 0
[90, "(function debug-menu debug-menu symbol)"] // not 100% sure about the debug-menu, but it has a string at offset 0
],
"memory-usage": [
[3, "(function basic symbol)"],
[2, "(function process symbol)"]
],
"anim-tester": [
[11, "(function none :behavior anim-tester)"],
[12, "(function none :behavior anim-tester)"],
[13, "(function none :behavior anim-tester)"]
],
"cam-combiner": [
[1, "(function none :behavior camera-combiner)"],
[2, "(function basic int basic event-message-block object :behavior camera-combiner)"]
],
"title-obs": [
[0, "(function none)"]
],
"misty-warehouse": [
[3, "(function symbol none :behavior silostep)"],
[4, "(function none :behavior silostep)"],
[6, "(function none :behavior camera-tracker)"],
[7, "(function none :behavior silostep)"],
[8, "(function process int symbol event-message-block none :behavior silostep)"]
],
"rigid-body": [
[5, "(function none :behavior rigid-body-platform)"],
[6, "(function none :behavior rigid-body-platform)"],
[7, "(function none :behavior rigid-body-platform)"],
[8, "(function none :behavior rigid-body-platform)"]
],
"sunken-elevator": [
[3, "(function object :behavior sunken-elevator)"],
[4, "(function int :behavior sunken-elevator)"],
[5, "(function symbol :behavior sunken-elevator)"],
[6, "(function int :behavior sunken-elevator)"]
],
"nav-enemy": [
[8, "(function none :behavior nav-enemy)"],
[9, "(function none)"], // stubbed
[10, "(function uint :behavior nav-enemy)"],
[11, "(function object :behavior nav-enemy)"],
[12, "(function none :behavior nav-enemy)"],
[13, "(function object :behavior nav-enemy)"],
[14, "(function uint :behavior nav-enemy)"],
[15, "(function object :behavior nav-enemy)"],
[16, "(function object :behavior nav-enemy)"],
[17, "(function vector :behavior nav-enemy)"],
[19, "(function object :behavior nav-enemy)"],
[20, "(function uint :behavior nav-enemy)"],
[21, "(function none :behavior nav-enemy)"],
[28, "(function symbol :behavior nav-enemy)"],
[29, "(function symbol :behavior nav-enemy)"],
[30, "(function object :behavior nav-enemy)"],
[31, "(function object :behavior nav-enemy)"],
[32, "(function vector :behavior nav-enemy)"],
[33, "(function object :behavior nav-enemy)"],
[34, "(function object :behavior nav-enemy)"],
[35, "(function object :behavior nav-enemy)"],
[36, "(function uint :behavior nav-enemy)"],
[37, "(function object :behavior nav-enemy)"],
[38, "(function object :behavior nav-enemy)"],
[39, "(function uint :behavior nav-enemy)"],
[40, "(function vector :behavior nav-enemy)"],
[41, "(function none :behavior nav-enemy)"],
[42, "(function object :behavior nav-enemy)"],
[43, "(function uint :behavior nav-enemy)"],
[44, "(function none :behavior nav-enemy)"],
[45, "(function object :behavior nav-enemy)"],
[46, "(function none :behavior nav-enemy)"],
[50, "(function none :behavior nav-enemy)"],
[51, "(function object :behavior nav-enemy)"],
[52, "(function uint :behavior nav-enemy)"],
[54, "(function object :behavior nav-enemy)"],
[55, "(function uint :behavior nav-enemy)"],
[56, "(function none :behavior nav-enemy)"],
[57, "(function object :behavior nav-enemy)"],
[58, "(function uint :behavior nav-enemy)"],
[59, "(function uint :behavior nav-enemy)"],
[60, "(function none :behavior nav-enemy)"],
[61, "(function object :behavior nav-enemy)"],
[62, "(function int :behavior nav-enemy)"]
],
"oracle": [
[1, "(function sparticle-launch-group :behavior oracle)"],
[2, "(function sparticle-launch-group :behavior oracle)"],
[3, "(function none :behavior oracle)"]
],
"time-of-day": [
[10, "(function none :behavior time-of-day-proc)"],
[12, "(function sparticle-system sparticle-cpuinfo none)"]
],
"basebutton": [
[1, "(function symbol :behavior target)"]
],
"entity": [
[10, "(function process-drawable none)"]
],
"beach-rocks": [
[2, "(function none :behavior beach-rock)"],
[3, "(function none :behavior beach-rock)"],
[4, "(function none :behavior beach-rock)"],
[5, "(function none :behavior beach-rock)"],
[6, "(function none :behavior beach-rock)"],
[7, "(function process int symbol event-message-block none :behavior beach-rock)"]
],
"projectiles": [
[27, "(function projectile int)"]
],
"sidekick-human": [
[7, "(function sparticle-launch-control :behavior sequenceC)"],
[15, "(function sparticle-launch-control :behavior sequenceB)"],
[16, "(function sparticle-launch-control :behavior sequenceB)"]
],
"demo-obs": [
[1, "(function target)"]
],
"final-door": [
[11, "(function final-door symbol)"],
[12, "(function final-door symbol)"]
],
"plat-eco": [
[4, "(function none :behavior plat-eco)"], // trans
[5, "(function int float :behavior plat-eco)"], // enter
[6, "(function none :behavior plat-eco)"], // post
[7, "(function handle none :behavior plat-eco)"], // code
[8, "(function none :behavior plat-eco)"], // trans
[9, "(function process int symbol event-message-block object :behavior plat-eco)"], // event
[10, "(function symbol :behavior plat-eco)"], // code
[11, "(function none :behavior plat-eco)"], // trans
[12, "(function int :behavior plat-eco)"], // enter
[13, "(function process int symbol event-message-block object :behavior plat-eco)"] // event
],
"plat-flip": [
[1, "(function none :behavior plat-flip)"], // code
[2, "(function process int symbol event-message-block object :behavior plat-flip)"] // event
],
"flying-lurker": [
[37, "(function uint :behavior manipy)"],
[12, "(function uint :behavior manipy)"],
[11, "(function none :behavior process)"]
],
"ambient": [
[29, "(function process int symbol event-message-block object :behavior level-hint)"]
],
"process-taskable": [
[46, "(function process-taskable symbol)"]
],
"fishermans-boat": [
[5, "(function none :behavior fishermans-boat)"],
[21, "(function none :behavior fishermans-boat)"],
[29, "(function none :behavior fishermans-boat)"]
],
"muse": [
[3, "(function none :behavior muse)"]
],
"relocate": [
[6, "(function sparticle-system sparticle-cpuinfo none)"]
],
"yakow": [
[29, "(function none)"]
],
"fisher": [
[27, "(function none :behavior process)"],
[28, "(function none :behavior fisher)"],
[20, "(function none :behavior fisher-fish)"],
[1, "(function none :behavior target)"]
],
"robotboss-misc": [
[5, "(function sparticle-launch-control :behavior finalbosscam)"]
],
"placeholder-do-not-add-below": []
}
+307 -191
View File
@@ -18,7 +18,8 @@
"cond_with_else_max_lengths": [
["(method 20 res-lump)", "b0", 2],
["(method 11 res-lump)", "b0", 1],
["(method 12 res-lump)", "b0", 1]
["(method 12 res-lump)", "b0", 1],
["(method 31 progress)", "b35", 1]
],
// if a cond with an else case is being used a value in a place where it looks wrong
@@ -94,6 +95,9 @@
"vif1-handler", // F: weird asm for interrupt handler
"vif1-handler-debug",
// texture
"adgif-shader<-texture!",
// vector
"vector=", // asm branching
@@ -127,13 +131,7 @@
"ripple-execute-init",
// bones
"draw-bones-hud",
"draw-bones",
"draw-bones-check-longest-edge-asm",
"draw-bones-merc",
"bones-mtx-calc-execute",
"bones-mtx-calc",
"texscroll-execute",
// generic-effect
"generic-debug-light-proc",
@@ -143,11 +141,8 @@
"generic-envmap-only-proc",
"generic-no-light",
"generic-no-light+envmap",
"generic-no-light-dproc",
"generic-no-light-dproc-only",
"generic-no-light-proc",
"generic-interp-dproc",
"generic-envmap-dproc",
"generic-prepare-dma-single",
"generic-prepare-dma-double",
"generic-envmap-proc",
@@ -156,8 +151,7 @@
"upload-vu0-program",
// generic-merc
"generic-merc-execute-all",
"generic-merc-execute-asm",
"generic-merc-execute-asm", // CFG
"high-speed-reject",
"mercneric-convert",
"mercneric-bittable-asm",
@@ -166,14 +160,11 @@
"generic-merc-init-asm",
// generic-tie
"generic-tie-convert",
"generic-tie-convert-proc",
"generic-tie-upload-next",
"generic-tie-decompress",
"generic-tie-dma-to-spad-sync",
// shadow-cpu
"shadow-execute",
"shadow-add-double-edges",
"shadow-add-double-tris",
"shadow-add-single-edges",
@@ -194,8 +185,7 @@
"draw-node-cull",
// shrubbery
"test-func",
"draw-inline-array-instance-shrub",
"draw-inline-array-instance-shrub", // CFG
// tfrag
"stats-tfrag-asm",
@@ -205,8 +195,6 @@
// tie-methods
"draw-inline-array-prototype-tie-near-asm",
"draw-inline-array-prototype-tie-asm",
"draw-inline-array-prototype-tie-generic-asm",
"draw-inline-array-instance-tie",
// sparticle-launcher
"sp-init-fields!",
@@ -234,139 +222,35 @@
"draw-boundary-polygon",
// collide-probe
"collide-probe-instance-tie",
"collide-probe-node",
// collide-mesh
"(method 10 collide-mesh)",
"(method 13 collide-mesh)",
"(method 9 collide-mesh-cache)",
"(method 15 collide-mesh)",
"(method 14 collide-mesh)",
"(method 11 collide-mesh)",
"(method 12 collide-mesh)",
"collide-probe-instance-tie", // CFG
"collide-probe-node", // CFG
// collide-edge-grab
"(method 13 collide-edge-work)",
"(method 17 collide-edge-work)",
"(method 15 collide-edge-work)",
"(method 16 collide-edge-work)",
"(method 9 edge-grab-info)", // maybe bug
"(method 18 collide-edge-work)",
"(method 10 collide-edge-hold-list)",
"(method 15 collide-edge-work)", // CFG
// collide-shape
"(method 15 collide-shape-prim-mesh)", // BUG:
"(method 15 collide-shape-prim-sphere)", // BUG:
"(method 16 collide-shape-prim)",
"(method 15 collide-shape-prim-group)",
"(method 45 collide-shape)",
"(method 28 collide-shape-prim-mesh)", // BUG:
"(method 29 collide-shape-prim-group)",
"(method 20 collide-shape-prim-group)",
"(method 19 collide-shape-prim-sphere)",
"(method 18 collide-shape-prim-sphere)",
"(method 23 collide-shape-prim-sphere)",
"(method 23 collide-shape-prim-mesh)", // BUG: maybe
"(method 24 collide-shape-prim)",
"(method 23 collide-shape-prim-group)",
"(method 42 collide-shape)",
// collide-shape-rider
"(method 35 collide-shape)",
// cam-master BUG
"master-is-hopeful-better?",
// cam-layout BUG
"cam-layout-save-cam-trans",
"(method 12 collide-mesh)",
// process-drawable BUG
"cspace-inspect-tree", // BUG:
"process-drawable-birth-fuel-cell", // BUG:
"(method 19 process-drawable)",
"cspace-inspect-tree",
//"(method 19 process-drawable)",
// ambient
"ambient-inspect",
// generic-obs BUG
"camera-change-to",
// target BUG
"target-falling-anim-trans",
// target2 BUG
"(anon-function 33 target2)", // BUG:
"(anon-function 67 target2)", // BUG:
"look-for-points-of-interest",
// drawable-tree
"(method 16 drawable-tree)",
"look-for-points-of-interest", // Failed to split nested sc - looks like dead code to me
// collide-cache
"(method 10 collide-puss-work)",
"(method 9 collide-puss-work)",
"(method 19 collide-cache)",
"(method 10 collide-cache-prim)",
"(method 9 collide-cache-prim)",
"(method 30 collide-cache)",
"(method 13 collide-shape-prim-group)",
"(method 13 collide-shape-prim-sphere)",
"(method 13 collide-shape-prim-mesh)",
"(method 14 collide-shape-prim-group)",
"(method 14 collide-shape-prim-sphere)",
"(method 14 collide-shape-prim-mesh)",
"(method 12 collide-shape-prim-group)", // BUG: maybe
"(method 12 collide-shape-prim-sphere)",
"(method 12 collide-shape-prim-mesh)",
"(method 29 collide-cache)",
"(method 27 collide-cache)",
"(method 14 collide-cache)",
"(method 28 collide-cache)",
"(method 26 collide-cache)",
"(method 21 collide-cache)",
"(method 32 collide-cache)",
// memory-usage BUG
//"(method 14 level)",
// navigate BUG
"(method 32 nav-control)",
// collectables BUG
"add-blue-motion",
"(method 10 collide-puss-work)", // CFG
"(method 9 collide-puss-work)", // decompiler crash
"(method 32 collide-cache)", // CFG
// ocean
"draw-large-polygon-ocean",
"draw-large-polygon-ocean", // CFG
// ocean-vu0
"ocean-generate-verts",
"ocean-interp-wave",
// nav-enemy BUG
// "(anon-function 28 nav-enemy)",
// orb-cache BUG
"(method 27 orb-cache-top)",
// ropebridge BUG
"(method 27 ropebridge)",
// all unchecked and in level DGO code
"(anon-function 21 plant-boss)",
"(anon-function 10 ice-cube)",
"(anon-function 15 ice-cube)",
"(anon-function 45 lavatube-energy)",
"mistycannon-find-best-solution",
"target-flut-falling-anim-trans",
"kermit-check-to-hit-player?",
"(anon-function 6 title-obs)",
"(anon-function 36 mistycannon)",
"(anon-function 43 maincave-obs)",
"(anon-function 2 target-tube)",
"(anon-function 5 orbit-plat)",
"(anon-function 2 ogreboss)"
"ocean-generate-verts", // crash
"ocean-interp-wave"
],
// these functions use pairs and the decompiler
@@ -412,7 +296,17 @@
"(method 21 swamp-rat-nest-dummy-a)",
"(method 21 swamp-rat-nest-dummy-b)",
"(method 21 swamp-rat-nest-dummy-c)",
"(method 27 battlecontroller)"
"(method 27 battlecontroller)",
"load-boundary-from-template",
"command-get-time",
"command-get-param",
"command-get-quoted-param",
"command-get-trans",
"command-get-camera",
"(method 14 camera-tracker)",
"(enter billy-playing)",
"(code target-continue)",
"next-level"
],
// If format is used with the wrong number of arguments,
@@ -437,11 +331,13 @@
" pris-geo ~192H~5DK ~280Hpris-fragment~456H~5DK~%": 2,
" pris-anim ~192H~5DK ~280Hpris-generic~456H~5DK~%": 2,
" textures ~192H~5DK ~280Htextures~456H~5DK~%": 2,
" entity ~192H~5DK~%": 2,
" entity ~192H~5DK~%": 1,
" misc ~192H~5DK ~280Hsprite~456H~5DK~%": 2,
"ERROR: <asg> ~A in spool anim loop for ~A ~D, but not loaded.~": 3,
"~0k~5d/~d ~6d/~d ~6d/~d ": 6,
"~0k~s~%": 1
"~0k~s~%": 1,
"money ~A was killed in pickup~%": 0,
" id address name aid tsk lev status x y z address name state heap flags~%": 3
},
"blocks_ending_in_asm_branch": {
@@ -449,25 +345,12 @@
// this one is all asm branches
"circle-circle-xz-intersect": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
],
"find-knot-span": [0, 1, 2, 3, 5, 6, 7, 8, 9],
"curve-evaluate!": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
"curve-evaluate!": [0, 2, 5, 6, 7, 8, 9],
"(method 9 texture-page-dir)": [4, 5],
@@ -475,7 +358,7 @@
"display-loop": [44, 49, 66, 99],
"load-game-text-info": [12, 13, 14, 18],
"load-game-text-info": [12, 13, 14, 16, 17, 18],
"real-main-draw-hook": [75, 77],
@@ -489,19 +372,116 @@
"start-perf-stat-collection": [26],
"end-perf-stat-collection": [0],
"sprite-draw-distorters": [4, 5],
"draw-string":[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189],
"get-string-length":[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50],
"unpack-comp-rle":[1, 3, 5, 6],
"(method 16 level)":[ 1, 5, 13, 14, 15, 19, 26, 53],
"unpack-comp-huf":[2, 4, 5, 6, 7, 8, 9],
"blerc-execute":[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33],
"(method 11 fact-info-target)":[42],
"(anon-function 9 game-save)":[3, 4, 5, 6, 7, 8],
"draw-string": [
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
185, 186, 187, 188, 189
],
"get-string-length": [
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50
],
"unpack-comp-rle": [1, 3, 5, 6],
"(method 16 level)": [1, 5, 13, 14, 15, 19, 26, 53],
"unpack-comp-huf": [2, 4, 5, 6, 7, 8, 9],
"blerc-execute": [
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33
],
"(method 11 fact-info-target)": [42],
"(anon-function 9 game-save)": [3, 4, 5, 6, 7, 8, 10],
//"(anon-function 9 game-save)":[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14],
"particle-adgif":[0, 1, 2, 3, 4, 5, 7],
"sp-launch-particles-var":[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66],
"(method 11 sparticle-launch-control)": [ 27, 28, 35, 46, 48, 49, 77],
"upload-vis-bits":[0,1,2,3,4,5, 6]
"particle-adgif": [0, 1, 2, 3, 4, 5, 7],
"sp-launch-particles-var": [
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
57, 58, 59, 60, 61, 62, 63, 64, 65, 66
],
"(method 11 sparticle-launch-control)": [27, 28, 38, 49, 51, 52, 80],
"upload-vis-bits": [0, 1, 2, 3, 4, 5, 6],
"draw-drawable-tree-tfrag": [6, 8, 13, 15],
"draw-drawable-tree-trans-tfrag": [6, 8, 13, 15],
"draw-drawable-tree-dirt-tfrag": [6, 8, 13, 15],
"draw-drawable-tree-ice-tfrag": [6, 8, 13, 15],
"draw-drawable-tree-instance-tie": [10, 12, 18, 20, 26, 28, 37, 39],
"draw-drawable-tree-instance-shrub": [5, 7, 9, 11],
"birth-pickup-at-point": [0],
"draw-bones": [0, 1, 2, 8, 81],
"draw-bones-hud": [7, 8],
"(method 16 drawable-tree)": [7, 9, 10],
"(method 21 collide-cache)": [3, 5, 19, 20, 24, 25, 28, 29],
"(method 14 collide-cache)": [0, 1, 2, 3, 4, 5],
"(method 9 collide-mesh-cache)": [0, 1, 2, 5],
"(method 42 collide-shape)": [0, 1, 2, 3, 4, 7],
"(method 23 collide-shape-prim-group)": [1, 2, 3, 4, 5],
"(method 23 collide-shape-prim-mesh)": [
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
],
"(method 23 collide-shape-prim-sphere)": [
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
],
"(method 18 collide-shape-prim-sphere)": [1, 3, 4, 5, 7],
"(method 45 collide-shape)": [0, 16, 42, 67, 92],
"(method 24 collide-shape-prim)": [2, 3, 4, 5, 1],
"(method 20 collide-shape-prim-group)": [11],
"(method 28 collide-shape-prim-mesh)": [10],
"(method 40 collide-shape)": [0, 2, 5, 6, 7, 11, 12, 28, 43, 58, 63],
"(method 15 collide-shape-prim-group)": [1, 2, 3, 4, 5, 6],
"(method 16 collide-shape-prim)": [1, 2, 3, 4, 5, 6],
"(method 15 collide-shape-prim-sphere)": [
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19
],
"(method 15 collide-shape-prim-mesh)": [
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 29
],
"(method 35 collide-shape)": [1],
"(method 22 collide-cache)": [2, 3, 4, 13, 14, 15, 23, 24, 25, 33, 34, 35],
"(method 12 collide-shape-prim-sphere)": [0, 1],
"(method 12 collide-shape-prim-group)": [1, 2, 3, 4],
"(method 24 collide-cache)": [2, 3, 4, 13, 14, 15, 23, 24, 25, 33, 34, 35],
"(method 14 collide-shape-prim-sphere)": [0, 1, 2, 3],
"(method 14 collide-shape-prim-group)": [0, 1, 2, 3, 4],
"(method 23 collide-cache)": [2, 3, 4, 13, 14, 15, 23, 24, 25, 33, 34, 35],
"(method 13 collide-shape-prim-sphere)": [0, 1, 2],
"(method 13 collide-shape-prim-group)": [0, 1, 2, 3, 4],
"(method 19 collide-cache)": [0, 1, 3, 4, 5, 18, 19],
"(method 10 collide-mesh)": [1, 2, 4, 5],
"(method 19 process-drawable)": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13],
"(anon-function 9 racer)": [75],
"(method 13 collide-edge-work)": [0, 2],
"(method 17 collide-edge-work)": [0, 1, 2, 3, 4],
"(method 9 edge-grab-info)": [15, 16, 18, 19, 21, 22, 24],
// "(method 18 collide-edge-work)" : [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24],
"target-falling-anim-trans": [5, 6],
"(method 27 nav-mesh)": [8],
"(method 32 nav-control)": [12, 21, 32],
"start-collect-nav": [0],
"end-collect-nav": [0],
"robotboss-always-trans": [9, 10, 11, 12, 13, 14, 15, 18, 29, 36, 45, 48],
"target-flut-falling-anim-trans": [5, 6],
"(method 27 ropebridge)": [5, 7],
"(anon-function 5 orbit-plat)": [4, 5, 11],
"(anon-function 21 plant-boss)": [0, 1, 3, 4],
"(method 55 ram-boss)": [5],
"(method 60 ice-cube)": [8],
"(anon-function 2 snow-ball)": [22],
"draw-bones-merc": [1, 3, 5, 7, 8, 10, 11, 12, 13],
"(anon-function 48 lavatube-energy)": [13],
"generic-tie-execute": [4, 9],
"generic-merc-execute-all": [3, 7, 12]
},
// Sometimes the game might use format strings that are fetched dynamically,
@@ -510,37 +490,26 @@
// e.g. "function-name":[[op, argc], [op, argc], ...]
// where "op" is the op number for the call to format.
"dynamic_format_arg_counts": {
"(method 35 progress)":[
"(method 35 progress)": [
[44, 1],
[92, 1]
],
"(method 49 progress)":[
[35, 1]
],
"(method 37 progress)":[
[41, 1]
],
"(method 38 progress)":[
[106, 1]
],
"(method 39 progress)":[
"(method 49 progress)": [[35, 1]],
"(method 37 progress)": [[41, 1]],
"(method 38 progress)": [[106, 1]],
"(method 39 progress)": [
[56, 1],
[83, 1]
],
"(method 41 progress)":[
[73, 1]
],
"(method 42 progress)":[
[41, 1]
],
"(method 43 progress)":[
"(method 41 progress)": [[73, 1]],
"(method 42 progress)": [[41, 1]],
"(method 43 progress)": [
[51, 1],
[94, 1]
],
"":[]
]
},
"mips2c_functions_by_name":[
"mips2c_functions_by_name": [
"sp-init-fields!",
"particle-adgif",
"sp-launch-particles-var",
@@ -553,8 +522,155 @@
"render-sky-tri",
"init-sky-regs",
"set-tex-offset",
"adgif-shader<-texture-with-update!"
"adgif-shader<-texture-with-update!",
"init-boundary-regs",
"draw-boundary-polygon",
"render-boundary-quad",
"render-boundary-tri",
"draw-inline-array-tfrag",
"stats-tfrag-asm",
"time-of-day-interp-colors-scratch",
"normalize-frame-quaternions",
"collide-do-primitives",
"moving-sphere-triangle-intersect",
"(method 12 collide-mesh)",
"(method 11 collide-mesh)",
"collide-probe-node",
"collide-probe-instance-tie",
"(method 32 collide-cache)",
"(method 28 collide-cache)",
"(method 26 collide-cache)",
"(method 27 collide-cache)",
"(method 29 collide-cache)",
"(method 12 collide-shape-prim-mesh)",
"(method 14 collide-shape-prim-mesh)",
"(method 13 collide-shape-prim-mesh)",
"(method 30 collide-cache)",
"(method 9 collide-cache-prim)",
"(method 10 collide-cache-prim)",
"(method 9 collide-puss-work)",
"(method 10 collide-puss-work)",
// these could easily be goal, but probably faster/easier this way.
"(method 14 collide-mesh)",
"(method 15 collide-mesh)",
"(method 16 collide-edge-work)",
"(method 10 collide-edge-hold-list)",
"(method 15 collide-edge-work)",
"(method 18 collide-edge-work)",
"normalize-frame-quaternions",
"calc-animation-from-spr",
"clear-frame-accumulator",
"bones-mtx-calc",
"cspace<-parented-transformq-joint!",
"draw-bones-merc",
"draw-bones-check-longest-edge-asm",
"setup-blerc-chains-for-one-fragment",
"blerc-execute",
"generic-merc-execute-asm",
"high-speed-reject",
"mercneric-convert",
"mercneric-bittable-asm",
"mercneric-shader-asm",
"mercneric-matrix-asm",
"generic-merc-init-asm",
"generic-prepare-dma-double",
"generic-light-proc",
"generic-envmap-proc",
"draw-bones-generic-merc",
"generic-prepare-dma-single",
"ripple-matrix-scale",
"ripple-apply-wave-table",
"ripple-create-wave-table",
"ripple-execute-init",
// ocean
"init-ocean-far-regs",
"draw-large-polygon-ocean",
"render-ocean-quad",
"ocean-generate-verts",
"ocean-interp-wave",
// shadow
"shadow-execute",
"shadow-add-double-edges",
"shadow-add-double-tris",
"shadow-add-single-edges",
"shadow-add-facing-single-tris",
"shadow-add-verts",
"shadow-find-double-edges",
"shadow-find-facing-double-tris",
"shadow-find-single-edges",
"shadow-find-facing-single-tris",
"shadow-init-vars",
"shadow-scissor-top",
"shadow-scissor-edges",
"shadow-calc-dual-verts",
"shadow-xform-verts",
// generic tie
"draw-inline-array-instance-tie",
"generic-tie-dma-to-spad-sync",
"draw-inline-array-prototype-tie-generic-asm",
"generic-interp-dproc",
"generic-no-light-dproc",
"generic-envmap-dproc",
"generic-tie-convert"
],
"mips2c_jump_table_functions": {
"decompress-fixed-data-to-accumulator": [
108, 199, 233, 286, 301, 366, 387, 100, 155, 199, 261, 286, 335, 366, 402,
100
],
"decompress-frame-data-to-accumulator": [
84, 92, 119, 140, 205, 220, 273, 307, 84, 107, 119, 174, 205, 248, 273,
354
],
"decompress-frame-data-pair-to-accumulator": [
117, 125, 169, 197, 293, 318, 408, 459, 117, 150, 169, 248, 293, 366, 408,
533
]
},
// there are some missing textures. I don't know what the game actually does here.
// the format for entries is [level, tpage, index]
"missing_textures": [["finalboss", 1419, 3]],
// 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.
// this just suppresses a message.
"expected_merged_objs": [
"orb-cache-top-ag",
"ecovalve-ag",
"barrel-ag",
"sack-ag",
"sharkey-ag",
"warp-gate-switch-ag",
"baby-spider-ag",
"cavetrapdoor-ag",
"spider-egg-ag",
"darkvine-ag",
"jng-iris-door-ag",
"eichar-fish+0-ag",
"launcherdoor-ag",
"plat-eco-ag",
"eichar-tube+0-ag",
"eichar-pole+0-ag",
"crate-darkeco-cluster-ag",
"ef-plane-ag",
"racer-ag",
"flut-saddle-ag",
"shover-ag",
"steam-cap-ag",
"sunkencam-ag",
"swampcam-ag",
"pontoonfive-ag",
"oracle-ag",
"village-cam-ag",
"plat-ag"
]
}
-269
View File
@@ -1,269 +0,0 @@
{
//////////////////////
// INPUT FILES
//////////////////////
// input is GOAL object files, possibly in containers.
// 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
// you want to run on the entire game.
"dgo_names": [
"CGO/KERNEL.CGO",
"CGO/ENGINE.CGO",
"CGO/GAME.CGO",
"CGO/ART.CGO",
"DGO/BEA.DGO",
"DGO/CIT.DGO",
"CGO/COMMON.CGO",
"DGO/DAR.DGO",
"DGO/DEM.DGO",
"DGO/FIN.DGO",
"DGO/INT.DGO",
"DGO/JUB.DGO",
"DGO/JUN.DGO",
"CGO/JUNGLE.CGO",
"CGO/L1.CGO",
"DGO/FIC.DGO",
"DGO/LAV.DGO",
"DGO/MAI.DGO",
"CGO/MAINCAVE.CGO",
"DGO/MIS.DGO",
"DGO/OGR.DGO",
"CGO/RACERP.CGO",
"DGO/ROB.DGO",
"DGO/ROL.DGO",
"DGO/SNO.DGO",
"DGO/SUB.DGO",
"DGO/SUN.DGO",
"CGO/SUNKEN.CGO",
"DGO/SWA.DGO",
"DGO/TIT.DGO",
"DGO/TRA.DGO",
"DGO/VI1.DGO",
"DGO/VI2.DGO",
"DGO/VI3.DGO",
"CGO/VILLAGEP.CGO",
"CGO/WATER-AN.CGO"
],
// some objects are part of STR files (streaming data). In Jak 1 this is just animations
"str_file_names": [
"STR/BAFCELL.STR",
"STR/SWTE4.STR",
"STR/SWTE3.STR",
"STR/SWTE2.STR",
"STR/SWTE1.STR",
"STR/SNRBSBFC.STR",
"STR/SNRBIPFC.STR",
"STR/SNRBICFC.STR",
"STR/ORR3.STR",
"STR/ORR2.STR",
"STR/MICANNON.STR",
"STR/BECANNON.STR",
"STR/SWTS4.STR",
"STR/SWTS3.STR",
"STR/SWTS2.STR",
"STR/SW4.STR",
"STR/SW3.STR",
"STR/SW2.STR",
"STR/SWTS1.STR",
"STR/ORREYE.STR",
"STR/ORLEYE.STR",
"STR/SW1.STR",
"STR/MAGFCELL.STR",
"STR/GNFCELL.STR",
"STR/ORRE3.STR",
"STR/ORRE2.STR",
"STR/ORRE1.STR",
"STR/ORR1.STR",
"STR/ORLE3.STR",
"STR/ORLE2.STR",
"STR/ORI3.STR",
"STR/ORI2.STR",
"STR/DE0202.STR",
"STR/RARSANIM.STR",
"STR/RARANIM.STR",
"STR/EIFISH.STR",
"STR/ORLE1.STR",
"STR/SWTEF4.STR",
"STR/SWTEF3.STR",
"STR/SWTEF2.STR",
"STR/SWTEF1.STR",
"STR/ORI1.STR",
"STR/EIICE.STR",
"STR/EIA3.STR",
"STR/DE0191.STR",
"STR/DE0186.STR",
"STR/DE0187.STR",
"STR/EIA4.STR",
"STR/EIPOLE.STR",
"STR/RARASECO.STR",
"STR/RARA2.STR",
"STR/DE0184.STR",
"STR/DE0181.STR",
"STR/PESEXT.STR",
"STR/DE0195.STR",
"STR/EIA2.STR",
"STR/FIR1.STR",
"STR/DE0182.STR",
"STR/BIR1.STR",
"STR/HAPOPEN.STR",
"STR/EITUBE.STR",
"STR/SCR1.STR",
"STR/DE0197.STR",
"STR/DE0193.STR",
"STR/EIA1.STR",
"STR/FAR2.STR",
"STR/FAR1.STR",
"STR/DE0199.STR",
"STR/GERMONEY.STR",
"STR/BIRESOLU.STR",
"STR/GARMONEY.STR",
"STR/BIADVENT.STR",
"STR/FUCRV1.STR",
"STR/BIREJECT.STR",
"STR/WAR1.STR",
"STR/BIACCEPT.STR",
"STR/SA3R1DEC.STR",
"STR/ASR1GENE.STR",
"STR/FIREJECT.STR",
"STR/GARRACE.STR",
"STR/GEZMONEY.STR",
"STR/LRFALLIN.STR",
"STR/EXR2.STR",
"STR/GERMOLES.STR",
"STR/FUCVICTO.STR",
"STR/MIR1ORBS.STR",
"STR/SA3R1RAM.STR",
"STR/AS2R1FLU.STR",
"STR/FUCV2.STR",
"STR/MIR1GNAW.STR",
"STR/GAZMONEY.STR",
"STR/AS3REMIN.STR",
"STR/SIHISA.STR",
"STR/FIACCEPT.STR",
"STR/FIWECO.STR",
"STR/FARESOLU.STR",
"STR/ASR1RBIK.STR",
"STR/MARDONAT.STR",
"STR/GAZRACE.STR",
"STR/FUCFV1.STR",
"STR/FUCV5.STR",
"STR/SABR1CDU.STR",
"STR/FLLINTRO.STR",
"STR/SAR1ECOR.STR",
"STR/AS2R1ROB.STR",
"STR/MIR2ORBS.STR",
"STR/MARBEAMS.STR",
"STR/LOI2.STR",
"STR/SAR1GENE.STR",
"STR/BILR1.STR",
"STR/AS2R1ROO.STR",
"STR/ASR1BESW.STR",
"STR/LOLOOP.STR",
"STR/FAINTROD.STR",
"STR/GEZMOLES.STR",
"STR/V1IN.STR",
"STR/FUCV4.STR",
"STR/SAIECORO.STR",
"STR/MIR1SWIT.STR",
"STR/LOINTRO.STR",
"STR/SAR2GENE.STR",
"STR/MUVICTOR.STR",
"STR/SAR1MCAN.STR",
"STR/FUCV7.STR",
"STR/MIZ1ORBS.STR",
"STR/FUCV8.STR",
"STR/BILR2.STR",
"STR/FUCV6.STR",
"STR/FUCV3.STR",
"STR/PLLBLOWU.STR",
"STR/PLBMAIN.STR",
"STR/WARESOLU.STR",
"STR/EIRACER.STR",
"STR/MAZDONAT.STR",
"STR/MAZBEAMS.STR",
"STR/MIISWITC.STR",
"STR/FIBRTVIL.STR",
"STR/FIBRTMIS.STR",
"STR/SABR1PAR.STR",
"STR/NDINTRO.STR",
"STR/GORDOWN.STR",
"STR/GORUP.STR",
"STR/SA3IRAMS.STR",
"STR/YERESOLU.STR",
"STR/EIFLUT.STR",
"STR/GRSDSACR.STR",
"STR/EXR1.STR",
"STR/SCRESOLU.STR",
"STR/FIRESOLU.STR",
"STR/SIHITEST.STR",
"STR/GAI1.STR",
"STR/EXRESOLU.STR",
"STR/MIZ2ORBS.STR",
"STR/ASIRBIKE.STR",
"STR/GRSOBBEC.STR",
"STR/BIINTROD.STR",
"STR/GRSOBBNC.STR",
"STR/AS2IROBB.STR",
"STR/GRSOBFIN.STR",
"STR/RERESOLU.STR",
"STR/BLRESOLU.STR",
"STR/SABIPARM.STR",
"STR/EVMEND.STR",
"STR/AS2RESOL.STR",
"STR/SAIMCANN.STR",
"STR/MIIGNAWE.STR",
"STR/GRSOBBA.STR",
"STR/GRSINTRO.STR",
"STR/SAISE.STR",
"STR/SA3IDECO.STR",
"STR/ASFRESOL.STR",
"STR/EXINTROD.STR",
"STR/BILINTRO.STR",
"STR/FIINTROD.STR",
"STR/MAINTROD.STR",
"STR/SCINTROD.STR",
"STR/AS2IFLUT.STR",
"STR/ASLERESO.STR",
"STR/ASLSRESO.STR",
"STR/AS2IROOM.STR",
"STR/GRSRESOL.STR",
"STR/SABICDUS.STR",
"STR/SIHISB.STR",
"STR/ASIBESWI.STR",
"STR/BILBRESO.STR",
"STR/FIBRT1AL.STR",
"STR/AS2INTRO.STR",
"STR/GEINTROD.STR",
"STR/SAISD1.STR",
"STR/SAISA.STR",
"STR/SIHISC.STR",
"STR/MIIORBS.STR",
"STR/WAINTROD.STR",
"STR/SAISD2.STR",
"STR/GRSOPREB.STR",
"STR/GRSOBBB.STR",
"STR/SA3INTRO.STR"
],
// some objects are directly stored as files on the DVD. This is just text files.
"object_file_names": [
"TEXT/0COMMON.TXT",
"TEXT/1COMMON.TXT",
"TEXT/2COMMON.TXT",
"TEXT/3COMMON.TXT",
"TEXT/4COMMON.TXT",
"TEXT/5COMMON.TXT",
"TEXT/6COMMON.TXT"
],
// uncomment the next line to extract audio to wave files.
//"audio_dir_file_name": "jak1/VAG",
"audio_dir_file_name": "",
"streamed_audio_file_names": [
"VAGWAD.ENG",
"VAGWAD.JAP"
]
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+70 -3
View File
@@ -24,6 +24,10 @@ DecompilerLabel get_label(ObjectFileData& data, const LinkedWord& word) {
return data.linked_data.labels.at(word.label_id());
}
static const std::unordered_map<GameTextVersion, std::pair<int, int>> sTextCreditsIDs = {
{GameTextVersion::JAK1_V1, {0xb00, 0xf00}},
{GameTextVersion::JAK1_V2, {0xb00, 0xf00}}};
} // namespace
/*
@@ -133,7 +137,7 @@ GameTextResult process_game_text(ObjectFileData& data, GameTextVersion version)
}
std::string write_game_text(
const Config& /*cfg*/,
GameTextVersion version,
const std::unordered_map<int, std::unordered_map<int, std::string>>& data) {
// first sort languages:
std::vector<int> languages;
@@ -144,9 +148,30 @@ std::string write_game_text(
// build map
std::map<int, std::vector<std::string>> text_by_id;
std::map<int, std::vector<std::string>> text_by_id_credits;
std::map<int, std::vector<std::string>> text_by_id_post_credits;
int last_credits_id = 0;
int credits_begin = 0;
int credits_end = 0;
if (auto it = sTextCreditsIDs.find(version); it != sTextCreditsIDs.end()) {
credits_begin = it->second.first;
credits_end = it->second.second;
}
for (auto lang : languages) {
for (auto& text : data.at(lang)) {
text_by_id[text.first].push_back(text.second);
for (auto& [id, text] : data.at(lang)) {
if (id < credits_begin) {
// comes before credits
text_by_id[id].push_back(text);
} else if (id < credits_end) {
// comes before credits
text_by_id_credits[id].push_back(text);
if (id > last_credits_id) {
last_credits_id = id;
}
} else {
// comes after credits
text_by_id_post_credits[id].push_back(text);
}
}
}
@@ -165,6 +190,48 @@ std::string write_game_text(
}
result += ")\n\n";
}
if (text_by_id_credits.size() > 0) {
result += fmt::format("(credits :begin #x{:04x}\n ", sTextCreditsIDs.at(version).first);
for (int id = sTextCreditsIDs.at(version).first; id <= last_credits_id; ++id) {
// check if the line exists first
if (text_by_id_credits.count(id) == 0) {
result += fmt::format("\"\"\n ");
continue;
}
// check if all lines are identical first
bool diff_langs = false;
bool is_first = true;
std::string last_lang;
for (auto& y : text_by_id_credits.at(id)) {
if (is_first) {
is_first = false;
} else if (last_lang != y) {
diff_langs = true;
break;
}
last_lang = y;
}
// now write them
if (!diff_langs) {
result += fmt::format("\"{}\"\n ", last_lang);
} else {
result += fmt::format("(");
for (auto& y : text_by_id_credits.at(id)) {
result += fmt::format("\"{}\"\n ", y);
}
result += ")\n ";
}
}
result += ")\n\n";
}
for (auto& x : text_by_id_post_credits) {
result += fmt::format("(#x{:04x}\n ", x.first);
for (auto& y : x.second) {
result += fmt::format("\"{}\"\n ", y);
}
result += ")\n\n";
}
return result;
}
+1 -2
View File
@@ -5,7 +5,6 @@
namespace decompiler {
struct ObjectFileData;
struct Config;
struct GameTextResult {
int total_text = 0;
@@ -16,6 +15,6 @@ struct GameTextResult {
GameTextResult process_game_text(ObjectFileData& data, GameTextVersion version);
std::string write_game_text(
const Config& cfg,
GameTextVersion version,
const std::unordered_map<int, std::unordered_map<int, std::string>>& data);
} // namespace decompiler
+40 -16
View File
@@ -16,7 +16,8 @@ enum class ExtractorErrorCode {
VALIDATION_ELF_MISSING_FROM_DB = 4002,
VALIDATION_BAD_ISO_CONTENTS = 4010,
VALIDATION_INCORRECT_EXTRACTION_COUNT = 4011,
VALIDATION_BAD_EXTRACTION = 4020
VALIDATION_BAD_EXTRACTION = 4020,
DECOMPILATION_GENERIC_ERROR = 4030
};
struct ISOMetadata {
@@ -31,11 +32,19 @@ struct ISOMetadata {
// this will let the installer reject (or gracefully handle) jak2 isos on the jak1 page, etc.
// { SERIAL : { ELF_HASH : ISOMetadataDatabase } }
static std::map<std::string, std::map<xxh::hash64_t, ISOMetadata>> isoDatabase{
static const std::map<std::string, std::map<xxh::hash64_t, ISOMetadata>> isoDatabase{
{"SCUS-97124",
{{7280758013604870207U,
{"Jak and Daxter: The Precursor Legacy - Black Label", "NTSC-U", 337, 11363853835861842434U,
"jak1_ntsc_black_label"}}}}};
{"Jak & Daxter: The Precursor Legacy (Black Label)", "NTSC-U", 337, 11363853835861842434U,
"jak1_ntsc_black_label"}}}},
{"SCES-50361",
{{12150718117852276522U,
{"Jak & Daxter™: The Precursor Legacy (PAL)", "PAL", 338, 16850370297611763875U,
"jak1_pal"}}}},
{"SCPS-15021",
{{16909372048085114219U,
{"ジャックXダクスター  旧世界の遺産", "NTSC-J", 338, 1262350561338887717,
"jak1_jp"}}}}};
void setup_global_decompiler_stuff(std::optional<std::filesystem::path> project_path_override) {
decompiler::init_opcode_info();
@@ -50,7 +59,7 @@ IsoFile extract_files(std::filesystem::path data_dir_path,
auto fp = fopen(data_dir_path.string().c_str(), "rb");
ASSERT_MSG(fp, "failed to open input ISO file\n");
IsoFile iso = unpack_iso_files(fp, extracted_iso_path, true);
IsoFile iso = unpack_iso_files(fp, extracted_iso_path, true, true);
fclose(fp);
return iso;
}
@@ -108,8 +117,7 @@ ExtractorErrorCode validate(const IsoFile& iso_file,
}
// Find the game in our tracking database
auto dbEntry = isoDatabase.find(serial.value());
if (dbEntry == isoDatabase.end()) {
if (auto dbEntry = isoDatabase.find(serial.value()); dbEntry == isoDatabase.end()) {
fmt::print(stderr, "ERROR: Serial '{}' not found in the validation database\n", serial.value());
if (!error_code.has_value()) {
error_code = std::make_optional(ExtractorErrorCode::VALIDATION_SERIAL_MISSING_FROM_DB);
@@ -176,7 +184,7 @@ ExtractorErrorCode validate(const IsoFile& iso_file,
} else {
fmt::print(stderr,
"Validation has failed to match with expected values, see the above errors for "
"specific. This may be an error in the validation database!\n");
"specifics. This may be an error in the validation database!\n");
}
return error_code.value();
}
@@ -242,7 +250,7 @@ void decompile(std::filesystem::path jak1_input_files) {
// grab all the object files we need (just text)
for (const auto& obj_name : config.object_file_names) {
if (obj_name.length() > 3 && obj_name.substr(obj_name.length() - 3) == "TXT") {
// ends in DGO, it's a level
// ends in TXT
objs.push_back((jak1_input_files / obj_name).string());
}
}
@@ -349,6 +357,12 @@ int main(int argc, char** argv) {
fmt::print("Running all steps, no flags provided!\n");
flag_runall = true;
}
if (flag_runall) {
flag_extract = true;
flag_decompile = true;
flag_compile = true;
flag_play = true;
}
// todo: print revision here.
if (!project_path_override.empty()) {
@@ -357,8 +371,7 @@ int main(int argc, char** argv) {
setup_global_decompiler_stuff(std::nullopt);
}
std::filesystem::path path_to_iso_files = file_util::get_jak_project_dir() / "iso_data" / "jak1";
std::filesystem::create_directories(path_to_iso_files);
std::filesystem::path path_to_iso_files = file_util::get_jak_project_dir() / "iso_data" / "_temp";
// make sure the input looks right
if (!std::filesystem::exists(data_dir_path)) {
@@ -366,7 +379,13 @@ int main(int argc, char** argv) {
return 1;
}
if (flag_runall || flag_extract) {
if (flag_extract) {
if (data_dir_path != path_to_iso_files) {
// in case input is also output, don't just wipe everything (weird)
std::filesystem::remove_all(path_to_iso_files);
}
std::filesystem::create_directories(path_to_iso_files);
if (std::filesystem::is_regular_file(data_dir_path)) {
// it's a file, treat it as an ISO
auto iso_file = extract_files(data_dir_path, path_to_iso_files);
@@ -387,15 +406,20 @@ int main(int argc, char** argv) {
}
}
if (flag_runall || flag_decompile) {
decompile(path_to_iso_files);
if (flag_decompile) {
try {
decompile(path_to_iso_files);
} catch (std::exception& e) {
lg::error("Error during decompile: {}", e.what());
return static_cast<int>(ExtractorErrorCode::DECOMPILATION_GENERIC_ERROR);
}
}
if (flag_runall || flag_compile) {
if (flag_compile) {
compile(path_to_iso_files);
}
if (flag_runall || flag_play) {
if (flag_play) {
launch_game();
}
+6 -3
View File
@@ -4,10 +4,13 @@
;; you can find the game-text-version parsing in .cpp and an enum in goal-lib.gc
(text
(jak1-v1 "assets/game_text.txt") ;; this is the decompiler-generated file!
;; NOTE : we compile using the fixed v2 encoding because it's what we use.
(jak1-v2 "assets/game_text.txt") ;; this is the decompiler-generated file!
;; "patch" files so we can fix some errors and perhaps maintain consistency
(jak1-v2 "game/assets/jak1/text/text_patch_ja.gs")
;; add custom files down here
(jak1-v1 "game/assets/jak1/text/game_text_en.gs")
(jak1-v1 "game/assets/jak1/text/game_text_ja.gs")
(jak1-v2 "game/assets/jak1/text/game_text_en.gs")
(jak1-v2 "game/assets/jak1/text/game_text_ja.gs")
)
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
-7
View File
@@ -1,13 +1,6 @@
(group-name "common")
(language-id 5)
;; -----------------
;; fixes
; 闇の眷者 ゴルとマイアの城
(#x122 "闇の賢者 ゴルとマイアの城")
(#x801 "闇の賢者 ゴルとマイアの城")
;; -----------------
;; progress menu (insanity)
+9
View File
@@ -0,0 +1,9 @@
(group-name "common")
(language-id 5)
;; -----------------
;; fixes
; 闇の眷者 ゴルとマイアの城
(#x122 "闇の賢者 ゴルとマイアの城")
(#x801 "闇の賢者 ゴルとマイアの城")
+1 -1
View File
@@ -81,7 +81,7 @@ int main(int argc, char** argv) {
#ifndef __AVX2__
if (get_cpu_info().has_avx2) {
printf("Note: your CPU supports AVX2, but this build was not compiled with AVX2 support\n");
// printf("Note: your CPU supports AVX2, but this build was not compiled with AVX2 support\n");
get_cpu_info().has_avx2 = false;
}
#endif
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+48 -4
View File
@@ -514,8 +514,30 @@
(add-setting! 'music-volume 'rel (-> *setting-control* current music-volume-movie) 0)
(add-setting! 'sfx-volume 'rel (-> *setting-control* current sfx-volume-movie) 0)
(add-setting! 'dialog-volume 'rel (-> *setting-control* current dialog-volume-hint) 0)
(while (= (current-str-id) s5-2)
(suspend)
;; PAL patch here
(let ((s5-1 -1)
(s3-1 (-> *display* base-frame-counter))
(s4-4 (-> *display* base-frame-counter))
)
(label cfg-27)
(let ((v1-36 (current-str-pos s5-2)))
(when (< s5-1 v1-36)
(if (> v1-36 0)
(set! s5-1 v1-36)
)
(set! s3-1 (-> *display* base-frame-counter))
)
(when (not (and (or (< v1-36 0)
(>= (- (-> *display* base-frame-counter) s3-1) (seconds 3))
(>= (- (-> *display* base-frame-counter) s4-4) (seconds 60))
)
*sound-player-enable*
)
)
(suspend)
(goto cfg-27)
)
)
)
)
(else
@@ -578,8 +600,30 @@
(add-setting! 'music-volume 'rel (-> *setting-control* current music-volume-movie) 0)
(add-setting! 'sfx-volume 'rel (-> *setting-control* current sfx-volume-movie) 0)
)
(while (= (current-str-id) (-> self sound-id))
(suspend)
;; PAL patch here
(let ((gp-1 -1)
(s4-4 (-> *display* base-frame-counter))
(s5-4 (-> *display* base-frame-counter))
)
(label cfg-19)
(let ((v1-24 (current-str-pos (-> self sound-id))))
(when (< gp-1 v1-24)
(if (> v1-24 0)
(set! gp-1 v1-24)
)
(set! s4-4 (-> *display* base-frame-counter))
)
(when (not (and (or (< v1-24 0)
(>= (- (-> *display* base-frame-counter) s4-4) (seconds 3))
(>= (- (-> *display* base-frame-counter) s5-4) (seconds 60))
)
*sound-player-enable*
)
)
(suspend)
(goto cfg-19)
)
)
)
)
(else
-25
View File
@@ -1591,31 +1591,6 @@
arg0
)
;; definition for function external-cam-reset!
;; INFO: Return type mismatch int vs none.
;; Used lq/sq
(defun external-cam-reset! ()
(vector-reset! (-> *math-camera* trans))
(matrix-identity! (-> *math-camera* inv-camera-rot))
(when *camera-combiner*
(let* ((v1-6 (-> *math-camera* inv-camera-rot))
(a3-0 (-> *camera-combiner* inv-camera-rot))
(a0-2 (-> a3-0 vector 0 quad))
(a1-0 (-> a3-0 vector 1 quad))
(a2-0 (-> a3-0 vector 2 quad))
(a3-1 (-> a3-0 vector 3 quad))
)
(set! (-> v1-6 vector 0 quad) a0-2)
(set! (-> v1-6 vector 1 quad) a1-0)
(set! (-> v1-6 vector 2 quad) a2-0)
(set! (-> v1-6 vector 3 quad) a3-1)
)
(set! (-> *math-camera* trans quad) (-> *camera-combiner* trans quad))
)
0
(none)
)
)
+23
View File
@@ -276,6 +276,29 @@
arg0
)
;; PAL patch here (moved from cam-debug)
(defun external-cam-reset! ()
(vector-reset! (-> *math-camera* trans))
(matrix-identity! (-> *math-camera* inv-camera-rot))
(when *camera-combiner*
(let* ((v1-6 (-> *math-camera* inv-camera-rot))
(a3-0 (-> *camera-combiner* inv-camera-rot))
(a0-2 (-> a3-0 vector 0 quad))
(a1-0 (-> a3-0 vector 1 quad))
(a2-0 (-> a3-0 vector 2 quad))
(a3-1 (-> a3-0 vector 3 quad))
)
(set! (-> v1-6 vector 0 quad) a0-2)
(set! (-> v1-6 vector 1 quad) a1-0)
(set! (-> v1-6 vector 2 quad) a2-0)
(set! (-> v1-6 vector 3 quad) a3-1)
)
(set! (-> *math-camera* trans quad) (-> *camera-combiner* trans quad))
)
0
(none)
)
(define *start-timer* (the-as int #f))
(define *timer-value* 0)
+162 -160
View File
@@ -30,168 +30,170 @@
;; This is the collide shape for target (Jak).
;; It is complicated.
(deftype control-info (collide-shape-moving)
(
(unknown-vector00 vector :inline :offset 448) ;; from - logic-target::build-conversions
(unknown-vector01 vector :inline :offset 464) ;; from - logic-target::turn-to-vector
(unknown-vector02 vector :inline :offset 480) ;; from - logic-target::do-rotations2
(unknown-quaternion00 quaternion :inline :offset 496) ;; from - target-util::(method 27 control-info)
(unknown-quaternion01 quaternion :inline :offset 512) ;; from - logic-target::do-rotations2
(unknown-float00 float :offset 528) ;; from - logic-target::do-rotations2
(unknown-float01 float :offset 532)
(unknown-float02 float :offset 536) ;; from - logic-target::add-thrust
(unknown-vector10 vector :inline :offset 544) ;; from - logic-target::flat-setup
(unknown-vector11 vector :inline :offset 560) ;; from - logic-target::target-no-move-post
(unknown-vector12 vector :inline :offset 576)
(unknown-vector13 vector :inline :offset 592) ;; from - collide-shape::method-37 | target::mod-var-jump
(unknown-vector14 vector :inline :offset 608) ;; from - logic-target::target-no-move-post
(unknown-vector15 vector :inline :offset 624) ;; from - collide-shape::method-37 | target-handler::target-exit
(unknown-vector16 vector :inline :offset 640) ;; from - collide-shape::method-37
(unknown-dynamics00 dynamics :offset 656) ;; from - logic-target::bend-gravity
(unknown-surface00 surface :offset 660)
(unknown-surface01 surface :offset 664) ;; not a symbol - target-util::target-align-vel-z-adjust
(unknown-cpad-info00 cpad-info :offset 668) ;; not a symbol - target-util::move-legs?
(unknown-float10 float :offset 672) ;; from - logic-target::turn-to-vector
(unknown-float11 float :offset 676) ;; from - logic-target::turn-to-vector
(unknown-float12 float :offset 680) ;; from - logic-target::turn-to-vector
(unknown-float13 float :offset 684) ;; from - logic-target::turn-to-vector
(unknown-vector20 vector :inline :offset 688) ;; from - logic-target::turn-to-vector
(unknown-vector21 vector :inline :offset 704) ;; from - logic-target::turn-to-vector
(unknown-vector22 vector :inline :offset 720) ;; from - logic-target::turn-to-vector
(unknown-vector23 vector :inline :offset 736) ;; from - logic-target::turn-to-vector
; (unknown-dword-temp-01 uint64 :offset 776) ;; from - logic-target::read-pad
(unknown-vector-array00 vector 7 :inline :offset 752) ;; from - logic-target::turn-to-vector
(unknown-vector30 vector :inline :offset 880) ;; from - logic-target::read-pad
(unknown-vector31 vector :inline :offset 896) ;; from - logic-target::read-pad
(unknown-float20 float :offset 912) ;; from - logic-target::read-pad
(unknown-float21 float :offset 916) ;; from - logic-target::read-pad
(unknown-dword00 uint64 :offset 920) ;; from - logic-target::read-pad
(unknown-matrix00 matrix :inline :offset 928) ;; from - target-util::(method 16 target)
(unknown-matrix01 matrix :inline :offset 992) ;; from - target-util::(method 16 target)
(unknown-matrix02 matrix :inline :offset 1056) ;; from - logic-target::joint-points
(unknown-qword00 uint128 :offset 1136)
(unknown-float30 float :offset 1140) ;; from - logic-target::target-calc-camera-pos
(unknown-vector40 vector :inline :offset 1152) ;; from - logic-target::target-real-post
(unknown-float40 float :offset 1172) ;; from - target-death::lambda-1
(unknown-float41 float :offset 1176) ;; from - logic-target::do-rotations2
(unknown-int00 int32 :offset 1180) ;; from - logic-target::joint-points
(unknown-float50 float :offset 1168) ;; from - logic-target::target-real-post
(unknown-vector50 vector :inline :offset 1184) ;; from - logic-target::build-conversions
(unknown-vector51 vector :inline :offset 1200) ;; from - logic-target::build-conversions
(unknown-vector52 vector :inline :offset 1216)
(unknown-vector53 vector :inline :offset 1232)
(last-known-safe-ground vector :inline :offset 1248)
(unknown-vector55 vector :inline :offset 1264)
(unknown-dword10 time-frame :offset 1280) ;; from - collide-reaction-target::target-collision-reaction
(unknown-dword11 time-frame :offset 1288) ;; from - target-util::can-jump?
(unknown-float60 float :offset 1300) ;; from - target-util::can-duck?
(unknown-float61 float :offset 1304) ;; from - target-util::target-align-vel-z-adjust
(unknown-float62 float :offset 1308) ;; from - target-util::target-print-stats
(unknown-float63 float :offset 1312) ;; from - logic-target::target-compute-slopes
(unknown-float64 float :offset 1316) ;; from - logic-target::target-compute-slopes
(unknown-dword20 time-frame :offset 1320) ;; from target-util::turn-around? - TODO
(unknown-dword21 time-frame :offset 1328) ;; from target-util::turn-around? - TODO
(unknown-dword-coverage int64 :offset 1336)
(unknown-float-coverage-0 float :offset 1344)
(unknown-float-coverage-1 float :offset 1348)
(unknown-float-coverage-2 float :offset 1352)
(unknown-u32-coverage-0 uint32 :offset 1356)
(unknown-vector-coverage-0 vector :inline :offset 1376)
(unknown-vector-coverage-1 vector :inline :offset 1392)
(unknown-vector-coverage-2 vector :inline :offset 1440)
(unknown-vector-coverage-3 vector :inline :offset 1472)
(unknown-vector60 vector :inline :offset 1456) ;; from - logic-target::add-thrust
(unknown-vector61 vector :inline :offset 1504) ;; from - logic-target::add-thrust
(unknown-float70 float :offset 1520) ;; from - logic-target::add-thrust
(unknown-float71 float :offset 1524) ;; from - collide-shape::method-37
(unknown-vector70 vector :inline :offset 1536) ;; from - logic-target::add-thrust
(unknown-vector71 vector :inline :offset 1552) ;; from - target-tube::tube-thrust
(unknown-vector72 vector :inline :offset 1568) ;; from - collide-reaction-racer::racer-collision-reaction
(unknown-vector73 vector :inline :offset 1584) ;; from - collide-reaction-racer::racer-collision-reaction
(unknown-handle00 handle :offset 1600) ;; from logic-target::reset-target-state
(unknown-sphere-array00 collide-shape-prim-sphere 3 :offset 1608) ;; from target-util::target-collide-set! and from target-util::target-danger-set!
(unknown-sphere00 collide-shape-prim-sphere :offset 1632) ;; from target-util::target-danger-set!
(unknown-sphere01 collide-shape-prim-sphere :offset 1636) ;; from target-util::target-danger-set!
(unknown-sphere02 collide-shape-prim-sphere :offset 1640) ;; from target-util::target-danger-set!
(unknown-int50 int32 :offset 1656) ;; from target::(enter target-wheel)
(unknown-dword30 time-frame :offset 1664) ;; from target::(trans target-walk)
(unknown-dword31 time-frame :offset 1672) ;; from target-util::can-hands?
(unknown-dword32 time-frame :offset 1680) ;; from target-util::can-hands?
(unknown-dword33 time-frame :offset 1688) ;; from target-util::can-feet?
(unknown-dword34 time-frame :offset 1696) ;; from target-util::can-feet?
(unknown-dword35 time-frame :offset 1704) ;; from target::(exit target-slide-down)
(unknown-dword36 time-frame :offset 1712) ;; from target::(trans target-jump)
(unknown-float80 float :offset 1724) ;; from logic-target::bend-gravity
(unknown-float81 float :offset 1728) ;; from logic-target::bend-gravity
(unknown-float82 float :offset 1732) ;; from logic-target::bend-gravity
(unknown-vector80 vector :inline :offset 1744) ;; from logic-target::joint-points
(unknown-cspace00 cspace :inline :offset 1760) ;; from logic-target::joint-points
(unknown-vector90 vector :score 100 :inline :offset 1776) ;; from logic-target::target-compute-edge
(unknown-vector91 vector :inline :offset 1792) ;; from logic-target::target-compute-edge
(unknown-vector92 vector :inline :offset 1824) ;; from logic-target::joint-points
(unknown-cspace10 cspace :inline :offset 1808) ;; from logic-target::joint-points
(unknown-symbol00 symbol :offset 1840) ;; from target-util::target-danger-set!
(unknown-float90 float :offset 1844) ;; from target-util::target-danger-set!
(unknown-float91 float :offset 1848) ;; from target-util::target-collide-set!
(unknown-vector-array10 vector 16 :inline :offset 1856) ;; from target-util::turn-around?
(unknown-float100 float :offset 2112) ;; from target-util::turn-around?
(unknown-int10 int32 :offset 2116) ;; from target-util::turn-around?
(unknown-float110 float :offset 2120) ;; from logic-target::target-compute-edge
(unknown-vector100 vector :inline :offset 2128) ;; from logic-target::target-compute-edge
(unknown-vector101 vector :inline :offset 2144) ;; from logic-target::target-compute-edge
(unknown-dword40 time-frame :offset 2160) ;; from logic-target::target-compute-edge
(unknown-dword41 time-frame :offset 2168) ;; from logic-target::target-compute-edge
(unknown-handle10 handle :offset 2176) ;; from logic-target::target-compute-pole - probably a swingpole
(unknown-uint20 uint32 :offset 2184) ;; from target::(trans target-running-attack)
(unknown-spoolanim00 spool-anim :offset 2184) ;; from target2::(trans target-stance-ambient)
(unknown-int20 int32 :offset 2184) ;; from (anon-function 1 basebutton)
(unknown-symbol20 symbol :offset 2184) ;; from (anon-function 1 basebutton)
(unknown-float120 float :offset 2184) ;; from target::mod-var-jump
(unknown-int21 int32 :offset 2188) ;; from logic-target::target-compute-pole
(unknown-uint30 uint32 :offset 2188) ;; from target::(code target-running-attack)
(unknown-float121 float :offset 2188) ;; from target::mod-var-jump
(unknown-uint31 uint32 :offset 2192) ;; from target::(trans target-running-attack)
(unknown-float122 float :offset 2196) ;; from target::(trans target-jump)
(unknown-float123 float :offset 2200) ;; from target::mod-var-jump
(unknown-float124 float :offset 2204) ;; from target::init-var-jump
(unknown-vector102 vector :inline :offset 2224) ;; from (anon-function 3 basebutton)
(unknown-vector103 vector :inline :offset 2240) ;; from (anon-function 3 basebutton)
(unknown-quaternion02 quaternion :inline :offset 2256) ;; from racer-states::(code target-racing-get-on)
(unknown-quaternion03 quaternion :inline :offset 2272) ;; from racer-states::(code target-racing-get-on)
(unknown-smush00 smush-control :inline :offset 2288) ;; from (event target-fishing)
(unknown-vector110 vector :inline :offset 2320) ;; from logic-target::flag-setup
(unknown-vector111 vector :inline :offset 2336) ;; from logic-target::flag-setup
(unknown-symbol30 symbol :offset 2384) ;; from target-util::target-danger-set!
(unknown-int31 uint32 :offset 2384) ;; from target:: (event target-running-attack)
(unknown-dword50 int64 :offset 2392) ;; from target-util::target-start-attack
(unknown-dword51 int64 :offset 2400) ;; from target-util::target-start-attack
(unknown-pointer00 pointer :offset 2416) ;; from target-handler::target-standard-event-handler
(unknown-symbol40 symbol :offset 2428) ;; from logic-target::post-flag-setup
(unknown-dword60 int64 :offset 2432) ;; from target::(enter target-jump)
(unknown-dword61 int64 :offset 2440) ;; from target::(enter target-jump)
(unknown-dword62 int64 :offset 2448) ;; from target::(enter target-jump) - probably some sort of object64 that's used as a vector?
(unknown-dword63 int64 :offset 2456) ;; from target::(enter target-jump)
(unknown-halfword00 int16 :offset 2488) ;; from logic-target::target-move-dist
;; these were determined from racer-collision-reaction.
(history-length int16 :offset 2490)
(history-data collide-history 128 :inline :offset-assert 2496)
(unknown-float140 float :offset 18944)
(unknown-dword70 time-frame :offset 18952) ;; from logic-target::add-thrust
(unknown-int40 int32 :offset 18880) ;; from logic-target::flag-setup
(unknown-dword80 time-frame :offset 18888) ;; from logic-target::post-flag-setup
(unknown-dword81 time-frame :offset 18896) ;; from logic-target::post-flag-setup
(unknown-float130 float :offset 18904) ;; from target2::target-swim-tilt
(unknown-float131 float :offset 18908) ;; from target2::target-swim-tilt
(unknown-dword82 time-frame :offset 18912) ;; from logic-target::reset-target-state
(unknown-vector120 vector :inline :offset 18928) ;; from target::(code target-running-attack)
(unknown-float150 float :offset 18944) ;; from target::(code target-wheel-flip)
(unknown-vector121 vector :inline :offset 18960) ;; from target collide response
(wall-pat pat-surface :offset 18976) ;; pat information for wall-check collision
(unknown-soundid00 sound-id :offset 18980) ;; from powerups::target-powerup-process
(unknown-float141 float :offset 18984) ;; from powerups::target-powerup-process
((unknown-vector00 vector :inline :offset 448)
(unknown-vector01 vector :inline :offset 464)
(unknown-vector02 vector :inline :offset 480)
(unknown-quaternion00 quaternion :inline :offset 496)
(unknown-quaternion01 quaternion :inline :offset 512)
(unknown-float00 float :offset 528)
(unknown-float01 float :offset 532)
(unknown-float02 float :offset 536)
(unknown-vector10 vector :inline :offset 544)
(unknown-vector11 vector :inline :offset 560)
(unknown-vector12 vector :inline :offset 576)
(unknown-vector13 vector :inline :offset 592)
(unknown-vector14 vector :inline :offset 608)
(unknown-vector15 vector :inline :offset 624)
(unknown-vector16 vector :inline :offset 640)
(unknown-dynamics00 dynamics :offset 656)
(unknown-surface00 surface :offset 660)
(unknown-surface01 surface :offset 664)
(unknown-cpad-info00 cpad-info :offset 668)
(unknown-float10 float :offset 672)
(unknown-float11 float :offset 676)
(unknown-float12 float :offset 680)
(unknown-float13 float :offset 684)
(unknown-vector20 vector :inline :offset 688)
(unknown-vector21 vector :inline :offset 704)
(unknown-vector22 vector :inline :offset 720)
(unknown-vector23 vector :inline :offset 736)
(unknown-vector-array00 vector 7 :inline :offset 752)
(unknown-vector30 vector :inline :offset 880)
(unknown-vector31 vector :inline :offset 896)
(unknown-float20 float :offset 912)
(unknown-float21 float :offset 916)
(unknown-dword00 uint64 :offset 920)
(unknown-matrix00 matrix :inline :offset 928)
(unknown-matrix01 matrix :inline :offset 992)
(unknown-matrix02 matrix :inline :offset 1056)
(unknown-qword00 uint128 :offset 1136)
(unknown-float30 float :offset 1140)
(unknown-vector40 vector :inline :offset 1152)
(unknown-float40 float :offset 1172)
(unknown-float41 float :offset 1176)
(unknown-int00 int32 :offset 1180)
(unknown-float50 float :offset 1168)
(unknown-vector50 vector :inline :offset 1184)
(unknown-vector51 vector :inline :offset 1200)
(unknown-vector52 vector :inline :offset 1216)
(unknown-vector53 vector :inline :offset 1232)
(last-known-safe-ground vector :inline :offset 1248)
(unknown-vector55 vector :inline :offset 1264)
(unknown-dword10 time-frame :offset 1280)
(unknown-dword11 time-frame :offset 1288)
(unknown-float60 float :offset 1300)
(unknown-float61 float :offset 1304)
(unknown-float62 float :offset 1308)
(unknown-float63 float :offset 1312)
(unknown-float64 float :offset 1316)
(unknown-dword20 time-frame :offset 1320)
(unknown-dword21 time-frame :offset 1328)
(unknown-dword-coverage int64 :offset 1336)
(unknown-float-coverage-0 float :offset 1344)
(unknown-float-coverage-1 float :offset 1348)
(unknown-float-coverage-2 float :offset 1352)
(unknown-u32-coverage-0 uint32 :offset 1356)
(unknown-vector-coverage-0 vector :inline :offset 1376)
(unknown-vector-coverage-1 vector :inline :offset 1392)
(unknown-vector-coverage-2 vector :inline :offset 1440)
(unknown-vector-coverage-3 vector :inline :offset 1472)
(unknown-vector60 vector :inline :offset 1456)
(unknown-vector61 vector :inline :offset 1504)
(unknown-float70 float :offset 1520)
(unknown-float71 float :offset 1524)
(unknown-vector70 vector :inline :offset 1536)
(unknown-vector71 vector :inline :offset 1552)
(unknown-vector72 vector :inline :offset 1568)
(unknown-vector73 vector :inline :offset 1584)
(unknown-handle00 handle :offset 1600)
(unknown-sphere-array00 collide-shape-prim-sphere 3 :offset 1608)
(unknown-sphere00 collide-shape-prim-sphere :offset 1632)
(unknown-sphere01 collide-shape-prim-sphere :offset 1636)
(unknown-sphere02 collide-shape-prim-sphere :offset 1640)
(unknown-int50 int32 :offset 1656)
(unknown-dword30 time-frame :offset 1664)
(unknown-dword31 time-frame :offset 1672)
(unknown-dword32 time-frame :offset 1680)
(unknown-dword33 time-frame :offset 1688)
(unknown-dword34 time-frame :offset 1696)
(unknown-dword35 time-frame :offset 1704)
(unknown-dword36 time-frame :offset 1712)
(unknown-float80 float :offset 1724)
(unknown-float81 float :offset 1728)
(unknown-float82 float :offset 1732)
(unknown-vector80 vector :inline :offset 1744)
(unknown-cspace00 cspace :inline :offset 1760)
(unknown-vector90 vector :inline :offset 1776)
(unknown-vector91 vector :inline :offset 1792)
(unknown-vector92 vector :inline :offset 1824)
(unknown-cspace10 cspace :inline :offset 1808)
(unknown-symbol00 symbol :offset 1840)
(unknown-float90 float :offset 1844)
(unknown-float91 float :offset 1848)
(unknown-vector-array10 vector 16 :inline :offset 1856)
(unknown-float100 float :offset 2112)
(unknown-int10 int32 :offset 2116)
(unknown-float110 float :offset 2120)
(unknown-vector100 vector :inline :offset 2128)
(unknown-vector101 vector :inline :offset 2144)
(unknown-dword40 time-frame :offset 2160)
(unknown-dword41 time-frame :offset 2168)
(unknown-handle10 handle :offset 2176)
(unknown-uint20 uint32 :offset 2184)
(unknown-spoolanim00 spool-anim :offset 2184)
(unknown-int20 int32 :offset 2184)
(unknown-symbol20 symbol :offset 2184)
(unknown-float120 float :offset 2184)
(unknown-int21 int32 :offset 2188)
(unknown-uint30 uint32 :offset 2188)
(unknown-float121 float :offset 2188)
(unknown-uint31 uint32 :offset 2192)
(unknown-int37 int32 :offset 2192)
(unknown-float122 float :offset 2196)
(unknown-float123 float :offset 2200)
(unknown-float124 float :offset 2204)
(unknown-vector102 vector :inline :offset 2224)
(unknown-vector103 vector :inline :offset 2240)
(unknown-quaternion02 quaternion :inline :offset 2256)
(unknown-quaternion03 quaternion :inline :offset 2272)
(unknown-smush00 smush-control :inline :offset 2288)
(unknown-vector110 vector :inline :offset 2320)
(unknown-vector111 vector :inline :offset 2336)
(unknown-symbol30 symbol :offset 2384)
(unknown-int31 uint32 :offset 2384)
(unknown-dword50 int64 :offset 2392)
(unknown-dword51 int64 :offset 2400)
(unknown-pointer00 pointer :offset 2416)
(unknown-symbol40 symbol :offset 2428)
(unknown-dword60 int64 :offset 2432)
(unknown-dword61 int64 :offset 2440)
(unknown-dword62 int64 :offset 2448)
(unknown-dword63 int64 :offset 2456)
(unknown-halfword00 int16 :offset 2488)
(history-length int16 :offset 2490)
(history-data collide-history 128 :inline :offset-assert 2496)
(unknown-float140 float :offset 18944)
(unknown-dword70 time-frame :offset 18952)
(unknown-int40 int32 :offset 18880)
(unknown-dword80 time-frame :offset 18888)
(unknown-dword81 time-frame :offset 18896)
(unknown-float130 float :offset 18904)
(unknown-float131 float :offset 18908)
(unknown-dword82 time-frame :offset 18912)
(unknown-vector120 vector :inline :offset 18928)
(unknown-float150 float :offset 18944)
(unknown-vector121 vector :inline :offset 18960)
(wall-pat pat-surface :offset 18976)
(unknown-soundid00 sound-id :offset 18980)
(unknown-float141 float :offset 18984)
(unknown-soundid01 sound-id :offset 18988)
(unknown-int34 int32 :offset 18992)
(unknown-int35 int32 :offset 18996)
(unknown-int36 int32 :offset 19000)
)
:size-assert #x4a2c
:method-count-assert 65
:flag-assert #x4100004a2c
:size-assert #x4a3c
:flag-assert #x4100004a3c
)
(defmethod update! collide-history ((obj collide-history) (cshape collide-shape-moving) (xs vector) (transv vector) (transv-out vector))
+48 -43
View File
@@ -104,52 +104,57 @@
(defun set-master-mode ((new-mode symbol))
"Update pause masks for the given mode, and set *master-mode*"
(set! *master-mode* new-mode)
(if *debug-segment*
(menu-respond-to-pause)
)
(case *master-mode*
(('pause)
;; PAL patch here
(let ((gp-0 *master-mode*))
(set! *master-mode* new-mode)
(if *debug-segment*
(menu-respond-to-pause)
)
(case *master-mode*
(('pause)
;; request the pause mask to be set in prevent-from-run.
;; this will block any process with pause from running, pausing most game objects.
(if (not *debug-pause*)
(logior! (-> *setting-control* default process-mask) (process-mask pause))
)
;; allow the menu to run.
(logclear! (-> *setting-control* default process-mask) (process-mask menu))
;; ??
(set! *pause-lock* #f)
(sound-group-pause (sound-group sfx music dialog sog3 ambient sog5 sog6 sog7))
(hide-progress-screen)
)
(('menu)
;; I believe these masks are just to make the progress go away work.
(logior! (-> *setting-control* default process-mask) (process-mask menu))
(logclear! (-> *setting-control* default process-mask) (process-mask pause progress))
(set! *pause-lock* #f)
(hide-progress-screen)
)
(('progress)
;; allow menu to run while in progress.
(logclear! (-> *setting-control* default process-mask) (process-mask menu))
;; activate the progress menu.
(when (not *progress-process*)
(activate-progress *dproc* (progress-screen fuel-cell))
(if (not *progress-process*) ;; if it doesn't want to activate, back to game.
(set-master-mode 'game)
;; request the pause mask to be set in prevent-from-run.
;; this will block any process with pause from running, pausing most game objects.
(if (not *debug-pause*)
(logior! (-> *setting-control* default process-mask) (process-mask pause))
)
;; allow the menu to run.
(logclear! (-> *setting-control* default process-mask) (process-mask menu))
;; ??
(set! *pause-lock* #f)
(sound-group-pause (sound-group sfx music dialog sog3 ambient sog5 sog6 sog7))
(hide-progress-screen)
)
)
(('game)
;; allow pausable/menu to run.
(logclear! (-> *setting-control* default process-mask) (process-mask pause menu))
(sound-group-continue (sound-group sfx music dialog sog3 ambient sog5 sog6 sog7))
(hide-progress-screen)
)
(('menu)
;; I believe these masks are just to make the progress go away work.
(logior! (-> *setting-control* default process-mask) (process-mask menu))
(logclear! (-> *setting-control* default process-mask) (process-mask pause progress))
(set! *pause-lock* #f)
(hide-progress-screen)
)
(('progress)
;; allow menu to run while in progress.
(logclear! (-> *setting-control* default process-mask) (process-mask menu))
;; activate the progress menu.
(when (not *progress-process*)
(activate-progress *dproc* (progress-screen fuel-cell))
(if (not *progress-process*)
(set-master-mode 'game)
)
)
)
(('game)
;; allow pausable/menu to run.
(logclear! (-> *setting-control* default process-mask) (process-mask pause menu))
(if (!= gp-0 *master-mode*)
(sound-group-continue (sound-group sfx music dialog sog3 ambient sog5 sog6 sog7))
)
(hide-progress-screen)
)
)
)
;; apply settings now.
(apply-settings *setting-control*)
+3 -2
View File
@@ -558,9 +558,10 @@
(launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 2391) gp-1)
)
)
(let ((f0-8 (lerp-scale 60.0 90.0 (-> self control unknown-float01) 0.0 81920.0)))
;; PAL patch here
(let ((f0-8 (lerp-scale 80.0 100.0 (-> self control unknown-float01) 0.0 81920.0)))
(if (not (ja-group? (-> self draw art-group data 104)))
(set! f0-8 (* 0.75 f0-8))
(set! f0-8 (* 0.8 f0-8))
)
(seek! (-> self control unknown-float141) f0-8 (* 100.0 (-> *display* seconds-per-frame)))
)
+37 -46
View File
@@ -75,65 +75,56 @@
(print-game-text (-> obj message) a1-2 #f 128 22)
)
)
;; PAL patch here
(cond
((-> obj only-allow-cancel)
(when (-> obj no-msg)
(clear *temp-string*)
(format *temp-string* "; = ~S" (-> obj no-msg))
(let* ((s4-0 (-> *display* frames (-> *display* on-screen) frame global-buf))
(s5-0 (-> s4-0 base))
)
(draw-string-xy
*temp-string*
s4-0
(-> obj x-position)
(+ (-> obj y-position) 5 (-> obj message-space))
(font-color default)
(font-flags shadow kerning large)
)
(let ((a3-4 (-> s4-0 base)))
(let ((v1-17 (the-as object (-> s4-0 base))))
(set! (-> (the-as dma-packet v1-17) dma) (new 'static 'dma-tag :id (dma-tag-id next)))
(set! (-> (the-as dma-packet v1-17) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet v1-17) vif1) (new 'static 'vif-tag))
(set! (-> s4-0 base) (&+ (the-as pointer v1-17) 16))
)
(dma-bucket-insert-tag
(-> *display* frames (-> *display* on-screen) frame bucket-group)
(bucket-id debug)
s5-0
(the-as (pointer dma-tag) a3-4)
(let ((a1-5 (new
'stack
'font-context
*font-default-matrix*
(-> obj x-position)
(+ (-> obj y-position) 5 (-> obj message-space))
0.0
(font-color default)
(font-flags shadow kerning)
)
)
)
(let ((v1-15 a1-5))
(set! (-> v1-15 width) (the float 400))
)
(let ((v1-16 a1-5))
(set! (-> v1-16 height) (the float 100))
)
(set! (-> a1-5 flags) (font-flags shadow kerning large))
(print-game-text *temp-string* a1-5 #f 128 22)
)
)
)
(else
(let* ((s4-1 (-> *display* frames (-> *display* on-screen) frame global-buf))
(s5-1 (-> s4-1 base))
)
(draw-string-xy
(lookup-text! *common-text* (game-text-id confirm) #f)
s4-1
(-> obj x-position)
(+ (-> obj y-position) 5 (-> obj message-space))
(font-color default)
(font-flags shadow kerning large)
)
(let ((a3-7 (-> s4-1 base)))
(let ((v1-29 (the-as object (-> s4-1 base))))
(set! (-> (the-as dma-packet v1-29) dma) (new 'static 'dma-tag :id (dma-tag-id next)))
(set! (-> (the-as dma-packet v1-29) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet v1-29) vif1) (new 'static 'vif-tag))
(set! (-> s4-1 base) (&+ (the-as pointer v1-29) 16))
)
(dma-bucket-insert-tag
(-> *display* frames (-> *display* on-screen) frame bucket-group)
(bucket-id debug)
s5-1
(the-as (pointer dma-tag) a3-7)
(let ((s5-0 (new
'stack
'font-context
*font-default-matrix*
(-> obj x-position)
(+ (-> obj y-position) 5 (-> obj message-space))
0.0
(font-color default)
(font-flags shadow kerning)
)
)
)
(let ((v1-22 s5-0))
(set! (-> v1-22 width) (the float 400))
)
(let ((v1-23 s5-0))
(set! (-> v1-23 height) (the float 100))
)
(set! (-> s5-0 flags) (font-flags shadow kerning large))
(print-game-text (lookup-text! *common-text* (game-text-id confirm) #f) s5-0 #f 128 22)
)
)
)
+4
View File
@@ -2135,6 +2135,10 @@
((= v1-4 'setting-unset)
(remove-setting! (the-as symbol (command-get-param (car gp-0) #f)))
)
;; PAL patch here
((= v1-4 'sfx-volume)
(set-setting! 'sfx-volume (command-get-param (car gp-0) #f) (command-get-float (car (cdr gp-0)) 0.0) 0)
)
((= v1-4 'blackout)
(set-blackout-frames
(the int (* 5.0000005 (the float (command-get-int (car gp-0) 0))))
+10 -3
View File
@@ -150,7 +150,14 @@
0
)
(sound-bank-load (static-sound-name "common"))
(case (scf-get-territory)
((2)
(sound-bank-load (static-sound-name "commonj"))
)
(else
(sound-bank-load (static-sound-name "common"))
)
)
(sound-bank-load (static-sound-name "empty1"))
(sound-bank-load (static-sound-name "empty2"))
@@ -494,11 +501,11 @@
0
)
(defun sound-set-fps ((arg0 uint))
(defun sound-set-fps ((arg0 int))
(let ((cmd (the-as sound-rpc-set-fps (get-sound-buffer-entry))))
(set! (-> cmd command) (sound-command set-fps))
(set! (-> cmd fps) arg0)
(set! (-> cmd fps) (the-as uint arg0))
)
0
)
@@ -1022,12 +1022,15 @@
(b! (!= (-> a1-4 type) a0-26) cfg-78 :delay (nop!))
)
;; PAL patch here
;; ??
(b! (zero? (logand (-> v1-29 flags) (sp-group-item-flag launch-asap)))
(b! (zero? (logand (-> v1-29 flags) (sp-group-item-flag launch-asap bit6)))
cfg-36 :delay (nop!)
)
(when (zero? (logand (-> a3-0 flags) (sp-launch-state-flags particles-active)))
(when (or (zero? (logand (-> a3-0 flags) (sp-launch-state-flags particles-active)))
(logtest? (-> v1-29 flags) (sp-group-item-flag bit6))
)
;; particles are not active, lets activate them.
(set! (-> a3-0 spawn-time) (the-as uint s4-0))
(logior! (-> a3-0 flags) (sp-launch-state-flags particles-active))
+2
View File
@@ -2026,6 +2026,8 @@
)
(activate-hud self)
(set! (-> self fp-hud) (the-as handle #f))
;; PAL patch here
(set! (-> self burn-proc) (the-as handle #f))
(set! (-> self water) (new 'process 'water-control self 9 0.0 8192.0 2048.0))
(set! (-> self water flags) (water-flags wt04 wt05 wt06 wt07 wt22))
(reset-target-state #t)
+83 -62
View File
@@ -891,78 +891,87 @@
)
)
)
(when (= arg0 'attack)
(logior! (-> self state-flags) (state-flags being-attacked))
(set! (-> self game hit-time) (-> *display* base-frame-counter))
(case (-> gp-0 mode)
(('endlessfall)
(cond
((= (-> self game mode) 'debug)
(let ((s4-1 (new-stack-vector0)))
(set! (-> s4-1 quad) (-> self control last-known-safe-ground quad))
(ja-channel-set! 0)
(let ((s3-1 (-> *display* base-frame-counter)))
(until (>= (- (-> *display* base-frame-counter) s3-1) (seconds 1))
(suspend)
)
)
(move-to-point! (-> self control) s4-1)
)
(set! (-> (&-> (-> self control) unknown-qword00) 0) (-> self control trans quad))
(send-event *camera* 'teleport)
(go target-stance)
)
(else
(pickup-collectable!
(-> self fact-info-target)
(pickup-type eco-green)
(the-as float -1000.0)
(the-as handle #f)
(cond
((= arg0 'attack)
(logior! (-> self state-flags) (state-flags being-attacked))
(set! (-> self game hit-time) (-> *display* base-frame-counter))
(case (-> gp-0 mode)
(('endlessfall)
(cond
((= (-> self game mode) 'debug)
(let ((s4-1 (new-stack-vector0)))
(set! (-> s4-1 quad) (-> self control last-known-safe-ground quad))
(ja-channel-set! 0)
(let ((s3-1 (-> *display* base-frame-counter)))
(until (>= (- (-> *display* base-frame-counter) s3-1) (seconds 1))
(suspend)
)
)
(move-to-point! (-> self control) s4-1)
)
(go target-death (-> gp-0 mode))
(set! (-> (&-> (-> self control) unknown-qword00) 0) (-> self control trans quad))
(send-event *camera* 'teleport)
(go target-stance)
)
)
)
(('drown-death 'sharkey 'lava 'dark-eco-pool 'ogreboss-super-boulder 'melt 'instant-death)
(pickup-collectable!
(-> self fact-info-target)
(pickup-type eco-green)
(the-as float -1000.0)
(the-as handle #f)
)
(if (= (-> self game mode) 'play)
(go target-death (-> gp-0 mode))
)
)
(('death)
(pickup-collectable!
(-> self fact-info-target)
(pickup-type eco-green)
(the-as float -1000.0)
(the-as handle #f)
)
)
(('plant-boss)
(pickup-collectable!
(-> self fact-info-target)
(pickup-type eco-green)
(- (-> *FACT-bank* health-single-inc))
(the-as handle #f)
)
(if (and (= (-> self game mode) 'play) (>= 0.0 (-> self fact-info-target health)))
(go target-death (-> gp-0 mode))
)
)
(else
(else
(pickup-collectable!
(-> self fact-info-target)
(pickup-type eco-green)
(the-as float -1000.0)
(the-as handle #f)
)
(go target-death (-> gp-0 mode))
)
)
)
(('drown-death 'sharkey 'lava 'dark-eco-pool 'ogreboss-super-boulder 'melt 'instant-death)
(pickup-collectable!
(-> self fact-info-target)
(pickup-type eco-green)
(the-as float -1000.0)
(the-as handle #f)
)
(if (= (-> self game mode) 'play)
(go target-death (-> gp-0 mode))
)
)
(('death)
(pickup-collectable!
(-> self fact-info-target)
(pickup-type eco-green)
(the-as float -1000.0)
(the-as handle #f)
)
)
(('plant-boss)
(pickup-collectable!
(-> self fact-info-target)
(pickup-type eco-green)
(- (-> *FACT-bank* health-single-inc))
(the-as handle #f)
)
(if (and (= (-> self game mode) 'play) (>= 0.0 (-> self fact-info-target health)))
(go target-death (-> gp-0 mode))
)
)
(else
(pickup-collectable!
(-> self fact-info-target)
(pickup-type eco-green)
(- (-> *FACT-bank* health-single-inc))
(the-as handle #f)
)
)
)
(target-hit-effect gp-0)
)
(else
(case (-> gp-0 mode)
(('burn 'burnup)
(sound-play "get-burned")
)
)
)
(target-hit-effect gp-0)
)
(set! (-> self control unknown-surface00) *smack-mods*)
(target-hit-setup-anim gp-0)
@@ -1099,6 +1108,18 @@
(('none 'instant-death)
)
(('ogreboss-super-boulder)
;; PAL patch here
(process-spawn
part-tracker
:init part-tracker-init
(-> *part-group-id-table* 32)
-1
#f
#f
#f
(-> self control trans)
:to *entity-pool*
)
(set! (-> self post-hook) target-no-ja-move-post)
(-> self attack-info attacker)
(ja-channel-set! 0)
+3 -2
View File
@@ -40,11 +40,12 @@
(fp-hud handle :offset-assert 560)
(no-load-wait time-frame :offset-assert 568)
(no-look-around-wait time-frame :offset-assert 576)
(burn-proc handle :offset-assert 584)
)
:heap-base #x1e0
:method-count-assert 21
:size-assert #x248
:flag-assert #x1501e00248
:size-assert #x250
:flag-assert #x1501e00250
(:methods
(find-edge-grabs! (_type_ collide-cache) object 20)
)
+45 -1
View File
@@ -1746,8 +1746,27 @@
)
(case arg2
(('launch)
;; PAL patch here
(set! (-> self control unknown-soundid01) (sound-play "launch-fire"))
(ja-no-eval :group! eichar-launch-jump-ja :num! (seek! (ja-aframe (the-as float 16.0) 0)) :frame-num 0.0)
(until (ja-done? 0)
(let ((s3-2 (the-as sound-rpc-set-param (get-sound-buffer-entry))))
(set! (-> s3-2 command) (sound-command set-param))
(set! (-> s3-2 id) (-> self control unknown-soundid01))
(let ((a1-5 (ear-trans)))
(let ((s2-1 self))
(when (= a1-5 #t)
(if (and s2-1 (type-type? (-> s2-1 type) process-drawable) (nonzero? (-> s2-1 control)))
(set! a1-5 (-> s2-1 control trans))
(set! a1-5 (the-as vector #f))
)
)
)
(sound-trans-convert (-> s3-2 parms trans) a1-5)
)
(set! (-> s3-2 parms mask) (sound-mask trans))
(-> s3-2 id)
)
(suspend)
(ja :num! (seek! (ja-aframe (the-as float 16.0) 0)))
)
@@ -1785,7 +1804,32 @@
(none)
)
:exit target-exit
:trans (-> target-high-jump trans)
;; PAL patch here
:trans (behavior ()
((-> target-high-jump trans))
(case (-> self control unknown-int37)
(('launch)
(let ((gp-0 (the-as sound-rpc-set-param (get-sound-buffer-entry))))
(set! (-> gp-0 command) (sound-command set-param))
(set! (-> gp-0 id) (-> self control unknown-soundid01))
(let ((a1-0 (ear-trans)))
(let ((s5-0 self))
(when (= a1-0 #t)
(if (and s5-0 (type-type? (-> s5-0 type) process-drawable) (nonzero? (-> s5-0 control)))
(set! a1-0 (-> s5-0 control trans))
(set! a1-0 (the-as vector #f))
)
)
)
(sound-trans-convert (-> gp-0 parms trans) a1-0)
)
(set! (-> gp-0 parms mask) (sound-mask trans))
(-> gp-0 id)
)
)
)
(none)
)
:code (behavior ((arg0 float) (arg1 float) (arg2 symbol))
(let ((f30-0 (the-as float (if (= arg2 'launch)
110.0
+11 -11
View File
@@ -2611,7 +2611,7 @@
(if (nonzero? arg3)
(process-spawn-function
process
(lambda :behavior target
(lambda :behavior process
((arg0 vector) (arg1 time-frame) (arg2 float))
(local-vars (sv-32 time-frame) (sv-40 vector) (sv-44 symbol))
(set! sv-32 (-> *display* base-frame-counter))
@@ -2627,13 +2627,12 @@
(< (- (-> (the-as target s4-0) control trans y) (-> (the-as target s4-0) control unknown-vector52 y)) arg2)
)
(vector-xz-normalize! (-> (the-as target s4-0) control transv) (the-as float 0.0))
(case (-> (the-as target s4-0) current-level name)
(('jungleb)
(let ((v1-16 (vector-! (new-stack-vector0) (-> (the-as target s4-0) control trans) sv-40)))
(set! (-> (the-as target s4-0) control trans x) (+ (-> sv-40 x) (fmax -4096.0 (fmin 4096.0 (-> v1-16 x)))))
(set! (-> (the-as target s4-0) control trans z) (+ (-> sv-40 z) (fmax -4096.0 (fmin 4096.0 (-> v1-16 z)))))
)
)
;; PAL patch here
(when (< (vector-vector-xz-distance (-> (the-as target s4-0) control trans) sv-40) 20480.0)
(let ((v1-16 (vector-! (new-stack-vector0) (-> (the-as target s4-0) control trans) sv-40)))
(set! (-> (the-as target s4-0) control trans x) (+ (-> sv-40 x) (fmax -2867.2 (fmin 2867.2 (-> v1-16 x)))))
(set! (-> (the-as target s4-0) control trans z) (+ (-> sv-40 z) (fmax -2867.2 (fmin 2867.2 (-> v1-16 z)))))
)
)
)
(else
@@ -2677,7 +2676,8 @@
:to self
)
)
(sound-play "launch-fire")
;; PAL patch (sound plays elsewhere)
;(sound-play "launch-fire")
(go target-high-jump arg0 arg0 'launch)
(none)
)
@@ -2704,8 +2704,8 @@
:exit (behavior ()
(target-exit)
(set! (-> self cam-user-mode) 'normal)
(logior! (-> self state-flags) (state-flags grabbed))
(logclear! (-> self state-flags) (state-flags invulnerable))
;; PAL patch here
(logclear! (-> self state-flags) (state-flags invulnerable grabbed))
(none)
)
:code (behavior ((arg0 handle))
+2 -2
View File
@@ -128,7 +128,7 @@
(set! (-> v1-4 scale) 1.0)
)
(set! (-> s5-0 flags) (font-flags shadow kerning middle large))
(while (or s2-0 (and (< s4-0 (- s3-0)) (< (the-as uint gp-0) (the-as uint 3249))))
(while (or s2-0 (and (< s4-0 (- s3-0)) (< (the-as uint gp-0) (the-as uint 3262))))
(+! s4-0 s3-0)
(+! gp-0 1)
(let ((a0-8 (lookup-text! *common-text* (the-as game-text-id gp-0) #t)))
@@ -140,7 +140,7 @@
(set! s2-0 #f)
)
(cond
((>= (the-as uint gp-0) (the-as uint 3249))
((>= (the-as uint gp-0) (the-as uint 3262))
#t
)
(else
+18 -7
View File
@@ -598,16 +598,27 @@
(let ((v1-5 arg0))
(set! (-> v1-5 height) (the float 110))
)
(let ((s4-0 print-game-text-scaled))
(format (clear *temp-string*) (lookup-text! *common-text* (game-text-id insert-memcard) #f) 1)
(s4-0 *temp-string* (-> obj transition-percentage-invert) arg0 128)
;; PAL patch here
(let ((v1-6 (-> obj card-info)))
(when (and (= (-> *setting-control* default language) (language-enum japanese)) v1-6 (zero? (-> v1-6 handle)))
(set! (-> arg0 origin y) -15.0)
(let ((s4-0 print-game-text-scaled))
(format (clear *temp-string*) (lookup-text! *common-text* (game-text-id memcard-not-inserted) #f) 1)
(s4-0 *temp-string* (-> obj transition-percentage-invert) arg0 128)
)
(set! (-> arg0 origin y) 53.0)
)
)
(let ((v1-7 arg0))
(set! (-> v1-7 scale) 0.65)
(let ((s4-1 print-game-text-scaled))
(format (clear *temp-string*) (lookup-text! *common-text* (game-text-id insert-memcard) #f) 1)
(s4-1 *temp-string* (-> obj transition-percentage-invert) arg0 128)
)
(let ((v1-12 arg0))
(set! (-> v1-12 scale) 0.65)
)
(set! (-> arg0 origin y) 130.0)
(let ((v1-8 arg0))
(set! (-> v1-8 height) (the float 60))
(let ((v1-13 arg0))
(set! (-> v1-13 height) (the float 60))
)
(print-game-text-scaled
(lookup-text! *common-text* (game-text-id back?) #f)
+11 -4
View File
@@ -49,6 +49,7 @@
(not (send-event (handle->process (-> *game-info* auto-save-proc)) 'progress-allowed?))
)
(not *target*)
(= *cheat-mode* 'camera)
)
)
)
@@ -1067,12 +1068,17 @@
(sound-play "start-options")
(set! (-> obj next-display-state) (progress-screen memcard-creating))
)
;; PAL & NTSC-J patch here
((= (-> obj display-state-stack 0) (progress-screen title))
(sound-play "cursor-options")
(sound-volume-off)
(set! (-> *game-info* mode) 'play)
(initialize! *game-info* 'game (the-as game-save #f) "intro-start")
(set-master-mode 'game)
)
(else
(sound-play "cursor-options")
(sound-volume-off)
(set! (-> *game-info* mode) 'play)
(initialize! *game-info* 'game (the-as game-save #f) "intro-start")
(set-master-mode 'game)
(set! (-> obj next-display-state) (progress-screen invalid))
)
)
)
@@ -1163,6 +1169,7 @@
(sound-play "start-options")
(set! (-> obj next-display-state) (progress-screen memcard-formatting))
)
;; NTSC-J patch here
((= (-> obj display-state-stack 0) (progress-screen title))
(sound-play "start-options")
(sound-volume-off)
+2 -1
View File
@@ -507,7 +507,8 @@
)
)
(else
(if (= sv-176 95)
;; PAL patch here
(if (= sv-176 3)
(set! sv-176 32)
)
(set! (-> *game-text-word* data sv-184) (the-as uint sv-176))
+2 -1
View File
@@ -1155,7 +1155,8 @@
(set! (-> self state-time) (-> *display* base-frame-counter))
(loop
(+! (-> self pos) (* (-> self vel) (-> *display* seconds-per-frame)))
(set! (-> self vel) (* 0.95 (-> self vel)))
;; PAL patch here
(set! (-> self vel) (* (-> self vel) (- 1.0 (* 0.05 (-> *display* time-adjust-ratio)))))
(move! (-> self wobbler))
(let ((a1-0 (new 'stack-no-clear 'vector)))
(vector-float*! a1-0 (-> self dir) (-> self pos))
+7 -1
View File
@@ -69,7 +69,13 @@
(close-specific-task! (game-task jungle-lurkerm) (task-status need-reward-speech))
(first-any (-> arg0 tasks) #t)
)
(new 'static 'spool-anim :name "mayor-resolution-beams" :index 7 :parts 6 :command-list '())
;; PAL patch here
(new 'static 'spool-anim
:name "mayor-resolution-beams"
:index 7
:parts 6
:command-list '((0 setting-unset ambient-volume))
)
)
(defmethod play-anim! mayor ((obj mayor) (arg0 symbol))
+4
View File
@@ -1326,6 +1326,10 @@
:to *entity-pool*
)
(sound-play "sagecage-open")
;; NTSC-J patch here
; (if (name= (-> self name) "citb-generator-1")
; (set-continue! *game-info* "citadel-elevator")
; )
(go citb-generator-broken)
(none)
)
+20 -24
View File
@@ -1349,32 +1349,28 @@
((< (-> self caught) 0)
)
(else
(when (< (mod (-> *display* base-frame-counter) 300) 150)
(let* ((s5-0 (-> *display* frames (-> *display* on-screen) frame global-buf))
(gp-0 (-> s5-0 base))
)
(draw-string-xy
(lookup-text! *common-text* (game-text-id lose!) #f)
s5-0
256
100
(font-color orange-red)
(font-flags shadow kerning middle large)
)
(let ((a3-1 (-> s5-0 base)))
(let ((v1-13 (the-as dma-packet (-> s5-0 base))))
(set! (-> v1-13 dma) (new 'static 'dma-tag :id (dma-tag-id next)))
(set! (-> v1-13 vif0) (new 'static 'vif-tag))
(set! (-> v1-13 vif1) (new 'static 'vif-tag))
(set! (-> s5-0 base) (&+ (the-as pointer v1-13) 16))
)
(dma-bucket-insert-tag
(-> *display* frames (-> *display* on-screen) frame bucket-group)
(bucket-id debug)
gp-0
(the-as (pointer dma-tag) a3-1)
(when (< (mod (-> *display* base-frame-counter) (seconds 1)) (seconds 0.5))
;; PAL patch here
(let ((gp-0 (new
'stack
'font-context
*font-default-matrix*
56
100
0.0
(font-color orange-red)
(font-flags shadow kerning)
)
)
)
(let ((v1-10 gp-0))
(set! (-> v1-10 width) (the float 400))
)
(let ((v1-11 gp-0))
(set! (-> v1-11 height) (the float 50))
)
(set! (-> gp-0 flags) (font-flags shadow kerning middle large))
(print-game-text (lookup-text! *common-text* (game-text-id lose!) #f) gp-0 #f 128 22)
)
)
(fisher-draw-display self)
+7 -1
View File
@@ -492,7 +492,13 @@
(set! (-> self speed) (+ (* (+ 0.5 f0-12) (- arg2 arg3)) arg3))
)
)
(set! (-> self y-offset-desired) (fmin 65536.0 (fmax 0.0 (* 1.6 (- 40960.0 (fmin (- f28-0) f30-0))))))
;; PAL patch here
(let ((f0-16 65536.0))
(if (and (< 0.6332 (-> self curve-position)) (< (-> self curve-position) 0.6928))
(set! f0-16 40960.0)
)
(set! (-> self y-offset-desired) (fmin f0-16 (fmax 0.0 (* 1.6 (- 40960.0 (fmin (- f28-0) f30-0))))))
)
)
)
)
+13 -9
View File
@@ -471,15 +471,17 @@
(defbehavior ogreboss-super-boulder-event-handler ogreboss-super-boulder ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(case arg2
(('touch)
;; PAL patch here
(('touch 'attack)
(when (and *target* ((method-of-type touching-shapes-entry prims-touching?)
(the-as touching-shapes-entry (-> arg3 param 0))
(-> self root-override)
(the-as uint 1)
)
)
(send-event arg0 'attack (-> arg3 param 0) (static-attack-info ((mode 'ogreboss-super-boulder))))
(go ogreboss-super-boulder-killed-player)
(if (send-event arg0 'attack-invinc (-> arg3 param 0) (static-attack-info ((mode 'ogreboss-super-boulder))))
#f
)
)
)
(('effect)
@@ -817,7 +819,8 @@
(set! (-> self root-override quat vec quad) (-> self parent-override 0 root quat vec quad))
(vector-identity! (-> self root-override scale))
(initialize-skeleton self *ogreboss-super-boulder-sg* '())
(logclear! (-> self mask) (process-mask actor-pause))
;; PAL patch here
(logclear! (-> self mask) (process-mask actor-pause enemy))
(set! (-> self lava) (entity-actor-lookup (-> self entity) 'water-actor 0))
(logior! (-> self skel effect flags) 1)
(set! (-> self draw origin-joint-index) (the-as uint 3))
@@ -1248,14 +1251,15 @@
gp-0
)
(defbehavior ogreboss-shoot-boulder ogreboss ((arg0 int))
(defbehavior ogreboss-shoot-boulder ogreboss ((arg0 pickup-type))
;; TODO non U1 v1 compatibility!!
(let ((gp-0 (new 'stack-no-clear 'ogreboss-missile-init-data)))
(let ((s5-0 (new 'stack-no-clear 'vector)))
(set! (-> gp-0 src) (-> self node-list data 52 bone transform vector 3))
(set! (-> gp-0 duration)
(the-as time-frame (the int (* 300.0 (+ 1.25 (* -0.25 (-> self level)) (/ 0.5 (-> self difficulty))))))
)
(set! (-> gp-0 pickup-type) (the-as pickup-type arg0))
(set! (-> gp-0 pickup-type) arg0)
(set! (-> gp-0 blast-radius) 32768.0)
(cond
(*target*
@@ -1506,7 +1510,7 @@
(ja :num! (seek! max f30-0))
)
(countdown (gp-1 (+ gp-0 -1))
(let ((s5-0 0))
(let ((s5-0 (pickup-type none)))
(let ((f28-0 0.0))
(cond
((>= 1.0 (-> *target* fact-info-target health))
@@ -1530,7 +1534,7 @@
)
)
(if (and *target* (< (rand-vu) f28-0))
(set! s5-0 4)
(set! s5-0 (pickup-type eco-green))
)
)
(ogreboss-shoot-boulder s5-0)
@@ -1542,7 +1546,7 @@
)
(ogreboss-inc-try-count)
)
(ogreboss-shoot-boulder 3)
(ogreboss-shoot-boulder (pickup-type eco-blue))
(ja-no-eval :group! ogreboss-attack2-last-ja :num! (seek! max f30-0) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
@@ -161,9 +161,10 @@
)
)
;; PAL patch here
(defskelgroup *balloon-sg* balloon balloon-lod0-jg balloon-idle-ja
((balloon-lod0-mg (meters 20)) (balloon-lod1-mg (meters 999999)))
:bounds (static-spherem 0 1.7 0 3)
:bounds (static-spherem 0 0.3 0 6.3)
)
+15 -17
View File
@@ -706,16 +706,14 @@
(set! (-> arg0 digit 2) (the int f0-3))
(let ((f0-4 (- f0-3 (the float (-> arg0 digit 2)))))
(set! (-> arg0 digit 3) (the int (* 10.0 f0-4)))
(let* ((f0-5 (- f0-4 (* 0.1 (the float (-> arg0 digit 3)))))
(v0-0 (the int (* 100.0 f0-5)))
)
(set! (-> arg0 digit 4) v0-0)
v0-0
(let ((f0-5 (- f0-4 (* 0.1 (the float (-> arg0 digit 3))))))
(set! (-> arg0 digit 4) (the int (* 100.0 f0-5)))
)
)
)
)
)
(none)
)
(defun race-time->seconds ((arg0 race-time))
@@ -745,24 +743,24 @@
#f
)
(defun race-time-save ((arg0 race-time) (arg1 int) (arg2 task-control))
(dotimes (s3-0 5)
(save-reminder arg2 (-> arg0 digit s3-0) (+ arg1 s3-0))
(defun race-time-save ((arg0 race-time) (arg1 task-control))
(dotimes (s4-0 5)
(save-reminder arg1 (-> arg0 digit s4-0) s4-0)
)
#f
)
(defun race-time-read ((arg0 race-time) (arg1 int) (arg2 task-control) (arg3 time-frame))
(dotimes (s2-0 5)
(set! (-> arg0 digit s2-0) (get-reminder arg2 (+ arg1 s2-0)))
(defun race-time-read ((arg0 race-time) (arg1 task-control) (arg2 time-frame))
(dotimes (s3-0 5)
(set! (-> arg0 digit s3-0) (get-reminder arg1 s3-0))
)
(let ((a1-3 (new 'stack 'race-time)))
(set! (-> a1-3 digit 4) 1)
(the-as symbol (if (race-time-less-than arg0 a1-3)
(seconds->race-time arg0 arg3)
)
)
(if (race-time-less-than arg0 a1-3)
(seconds->race-time arg0 arg2)
)
)
(none)
)
(defskelgroup *rolling-start-whole-sg* rolling-start rolling-start-whole-lod0-jg rolling-start-idle-ja
@@ -1124,7 +1122,7 @@
*entity-pool*
(game-task none)
)
(race-time-save (-> self this-time) 1 (-> self tasks))
(race-time-save (-> self this-time) (-> self tasks))
)
)
(else
@@ -1262,7 +1260,7 @@
(send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'hide)
(send-event (ppointer->process (-> *hud-parts* money)) 'disable)
(send-event (ppointer->process (-> *hud-parts* money)) 'hide)
(race-time-read (-> self record-time) 1 (-> self tasks) (seconds 45))
(race-time-read (-> self record-time) (-> self tasks) (seconds 45))
(set! (-> self end-banner)
(ppointer->handle
(process-spawn rolling-start (new 'static 'vector :x -86016.0 :y 112640.0 :z -6309888.0) 16384.0 :to self)
+20 -8
View File
@@ -44,12 +44,13 @@
(deftype snow-button (process-drawable)
((root-override collide-shape-moving :offset 112)
(wiggled? symbol :offset-assert 176)
(timeout time-frame :offset-assert 184)
(delay-til-wiggle time-frame :offset-assert 192)
(prev-button entity-actor :offset-assert 200)
(ticker ticky :inline :offset-assert 208)
((root-override collide-shape-moving :offset 112)
(wiggled? symbol :offset-assert 176)
(trying-for-fuel-cell? symbol :offset-assert 180)
(timeout time-frame :offset-assert 184)
(delay-til-wiggle time-frame :offset-assert 192)
(prev-button entity-actor :offset-assert 200)
(ticker ticky :inline :offset-assert 208)
)
:heap-base #x80
:method-count-assert 20
@@ -274,6 +275,8 @@
:enter (behavior ()
(set! (-> self state-time) (-> *display* base-frame-counter))
(set! (-> self wiggled?) #f)
;; PAL patch here
(set! (-> self trying-for-fuel-cell?) (not (task-complete? *game-info* (game-task snow-ball))))
(sleep (-> self ticker) (-> self timeout))
(when (-> self prev-button)
(let* ((v1-6 (-> self prev-button))
@@ -294,6 +297,11 @@
(if (completed? (-> self ticker))
(go snow-button-deactivate)
)
(when (and (-> self trying-for-fuel-cell?) (task-complete? *game-info* (game-task snow-ball)))
(set! (-> self trying-for-fuel-cell?) #f)
(go snow-button-deactivate)
)
;; PAL patch here
(when (reached-delay? (-> self ticker) (-> self delay-til-wiggle))
(when (not (-> self wiggled?))
(set! (-> self wiggled?) #t)
@@ -406,6 +414,8 @@
(set! (-> obj prev-button) (entity-actor-lookup arg0 'alt-actor 0))
(set! (-> obj prev-button) #f)
)
;; PAL patch here
(set! (-> obj trying-for-fuel-cell?) (not (task-complete? *game-info* (game-task snow-ball))))
(ja-channel-set! 1)
(let ((s5-1 (-> obj skel root-channel 0)))
(joint-control-channel-group-eval!
@@ -823,7 +833,8 @@
(dummy-22 self)
(go elevator-idle-at-fort)
)
(seek! (-> self path-pos) 1.0 (* 0.06666667 (-> *display* seconds-per-frame)))
;; PAL patch here
(seek! (-> self path-pos) 1.0 (* 0.16 (-> *display* seconds-per-frame)))
(eval-path-curve! (-> self path) (-> self basetrans) (-> self path-pos) 'interp)
(plat-trans)
(dummy-20 self)
@@ -880,7 +891,8 @@
(dummy-22 self)
(go elevator-idle-at-cave)
)
(seek! (-> self path-pos) 0.0 (* 0.06666667 (-> *display* seconds-per-frame)))
;; PAL patch here
(seek! (-> self path-pos) 0.0 (* 0.16 (-> *display* seconds-per-frame)))
(eval-path-curve! (-> self path) (-> self basetrans) (-> self path-pos) 'interp)
(plat-trans)
(dummy-20 self)
+2 -1
View File
@@ -472,8 +472,9 @@
)
(defmethod init-from-entity! balance-plat ((obj balance-plat) (arg0 entity-actor))
;; PAL patch here. usually-hit-by-player -> hit-by-others
(set! (-> obj mask) (logior (process-mask platform) (-> obj mask)))
(let ((s4-0 (new 'process 'collide-shape-moving obj (collide-list-enum usually-hit-by-player))))
(let ((s4-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-others))))
(set! (-> s4-0 dynam) (copy *standard-dynamics* 'process))
(set! (-> s4-0 reaction) default-collision-reaction)
(set! (-> s4-0 no-reaction)
+27 -9
View File
@@ -299,11 +299,14 @@
(send-event (ppointer->process (-> self parent)) 'wait)
(send-event self 'update)
(ja-channel-set! 1)
;; PAL patch here
(ja-no-eval :group! (-> self draw art-group data 6) :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(logior! (-> self skel status) (janim-status spool))
(suspend)
(ja :num! (seek!))
(if (not (paused?))
(ja :num! (seek!))
)
)
(set! (-> self anim) (-> self next-anim))
(set! (-> self next-anim)
@@ -398,11 +401,14 @@
)
(set! *spawn-actors* #f)
(ja-channel-set! 1)
;; PAL patch here
(ja-no-eval :group! (-> self draw art-group data 8) :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(logior! (-> self skel status) (janim-status spool))
(suspend)
(ja :num! (seek!))
(if (not (paused?))
(ja :num! (seek!))
)
)
(set! *spawn-actors* #t)
(ja-play-spooled-anim
@@ -671,13 +677,18 @@
:trans (behavior ()
(hide-hud-quick)
(spool-push *art-control* "ndi-intro" 0 self -1.0)
(sound-group-pause (sound-group music))
;; PAL patch here
(if *sound-player-enable*
(sound-group-pause (sound-group music))
)
(none)
)
:code (behavior ()
(let ((gp-0 (the-as handle #f)))
(case (scf-get-territory)
((2)
;; PAL patch here
(cond
((and (= (scf-get-territory) 2) *first-boot*)
(set! *first-boot* #f)
(set! gp-0 (ppointer->handle (static-screen-spawn
5
(new 'static 'texture-id :page #x649)
@@ -814,7 +825,7 @@
(remove-setting! 'ambient-volume)
(remove-setting! 'sfx-volume)
(remove-setting! 'music-volume)
(remove-setting! 'allow-progress)
;; PAL patch here (code removal)
(sound-group-continue (sound-group music))
(when *time-of-day-proc*
(set! (-> *time-of-day-proc* 0 time-ratio) 18000.0)
@@ -827,15 +838,22 @@
(set! (-> *time-of-day-proc* 0 time-ratio) 300.0)
(set! *time-of-day-fast* #f)
)
;; PAL patch here
(remove-setting! 'allow-pause)
(remove-setting! 'allow-progress)
((-> target-title exit))
(none)
)
:trans (behavior ()
(hide-hud-quick)
(if (cpad-pressed? 0 start)
(activate-progress *dproc* (progress-screen title))
)
;; PAL patch here
(when (cpad-pressed? 0 start)
(set-setting! 'allow-progress #t 0.0 0)
(apply-settings *setting-control*)
(activate-progress *dproc* (progress-screen title))
(set-setting! 'allow-progress #f 0.0 0)
(apply-settings *setting-control*)
)
(when (and (< (mod (-> *display* real-frame-counter) 300) 270) (not *progress-process*))
(let ((gp-0
(new 'stack 'font-context *font-default-matrix* 80 170 0.0 (font-color default) (font-flags shadow kerning))
@@ -74,6 +74,7 @@
)
)
;; PAL patch here
(defpartgroup group-sequenceAV-2d-intro-mist
:id 688
:flags (screen-space)
@@ -85,7 +86,7 @@
(sp-item 2857 :flags (start-dead))
(sp-item 2857 :flags (start-dead))
(sp-item 2859)
(sp-item 2860)
(sp-item 2860 :flags (bit6))
)
)
@@ -223,12 +224,14 @@
(send-event (handle->process (-> obj boat)) 'anim-mode 'clone-anim)
(send-event (handle->process (-> obj boat)) 'origin-joint-index 3)
)
;; PAL patch here
(the-as basic (new 'static 'spool-anim
:name "sage-intro-sequence-a"
:index 17
:parts 22
:command-list '((0 blackout 0)
(0 want-levels village1 misty)
(1120 send-event self pause)
(1210 display-level misty display)
(1210 want-vis mis)
(1210 want-force-vis misty #t)
@@ -276,6 +279,13 @@
)
)
)
;; PAL patch here
(('pause)
(let ((v0-2 (the-as object (logior (-> self mask) (process-mask pause)))))
(set! (-> self mask) (the-as process-mask v0-2))
v0-2
)
)
)
)
:exit (behavior ()
+48
View File
@@ -29,6 +29,7 @@
(import "goal_src/import/medres-beach-ag.gc")
(import "goal_src/import/reflector-middle-ag.gc")
(import "goal_src/import/medres-beach1-ag.gc")
(import "goal_src/import/evilplant-ag.gc")
(defskelgroup *med-res-jungle-sg* medres-jungle medres-jungle-lod0-jg medres-jungle-idle-ja
((medres-jungle-lod0-mg (meters 999999)))
@@ -520,6 +521,53 @@
(none)
)
;; PAL patch here
(deftype evilplant (process-drawable)
()
:heap-base #x40
:method-count-assert 21
:size-assert #xb0
:flag-assert #x15004000b0
(:methods
(idle () _type_ :state 20)
)
)
(defmethod inspect evilplant ((obj evilplant))
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
obj
)
(defskelgroup *evilplant-sg* evilplant evilplant-lod0-jg evilplant-idle-ja
((evilplant-lod0-mg (meters 999999)))
:bounds (static-spherem 0 1 0 3.8)
)
(defstate idle (evilplant)
:virtual #t
:code (behavior ()
(loop
(ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
)
)
(none)
)
:post (the-as (function none :behavior evilplant) ja-post)
)
(defmethod init-from-entity! evilplant ((obj evilplant) (arg0 entity-actor))
(set! (-> obj root) (new 'process 'trsqv))
(process-drawable-from-entity! obj arg0)
(initialize-skeleton obj *evilplant-sg* '())
(go (method-of-object obj idle))
(none)
)
(deftype reflector-middle (process-drawable)
((reflector-trans vector :inline :offset-assert 176)
(next-reflector-trans vector :inline :offset-assert 192)
+21 -6
View File
@@ -204,12 +204,27 @@ yakow-default-event-handler
(if gp-0
(yakow-cam)
)
(level-hint-spawn
(game-text-id yakow-owed-powercell)
"sksp018a"
(the-as entity #f)
*entity-pool*
(game-task none)
;; PAL patch here
(process-spawn-function
process
(lambda :behavior process
()
(while (or (-> *setting-control* current ambient)
(-> *setting-control* current movie)
(-> *setting-control* current hint)
)
(suspend)
)
(level-hint-spawn
(game-text-id yakow-owed-powercell)
"sksp018a"
(the-as entity #f)
*entity-pool*
(game-task none)
)
(none)
)
:to self
)
)
(else
+4
View File
@@ -0,0 +1,4 @@
@echo off
cd ..\..
out\build\Release\bin\decompiler decompiler\config\jak1_jp.jsonc iso_data decompiler_out\
pause
@@ -1,4 +1,4 @@
@echo off
cd ..\..
out\build\Release\bin\decompiler decompiler\config\jak1_pal.jsonc iso_data\jak1pal decompiler_out\jak1pal
out\build\Release\bin\decompiler decompiler\config\jak1_pal.jsonc iso_data decompiler_out\
pause
+1 -1
View File
@@ -1,2 +1,2 @@
cd ..\..
git update-index --assume-unchanged decompiler\config\jak1_ntsc_black_label.jsonc decompiler\config\jak1_ntsc_black_label\inputs.jsonc
git update-index --assume-unchanged decompiler\config\jak1_ntsc_black_label.jsonc
+1 -1
View File
@@ -1,2 +1,2 @@
cd ..\..
git update-index --no-assume-unchanged decompiler\config\jak1_ntsc_black_label.jsonc decompiler\config\jak1_ntsc_black_label\inputs.jsonc
git update-index --no-assume-unchanged decompiler\config\jak1_ntsc_black_label.jsonc
+7 -2
View File
@@ -158,6 +158,7 @@
(unknown-uint30 uint32 :offset 2188)
(unknown-float121 float :offset 2188)
(unknown-uint31 uint32 :offset 2192)
(unknown-int37 int32 :offset 2192)
(unknown-float122 float :offset 2196)
(unknown-float123 float :offset 2200)
(unknown-float124 float :offset 2204)
@@ -195,10 +196,14 @@
(wall-pat pat-surface :offset 18976)
(unknown-soundid00 sound-id :offset 18980)
(unknown-float141 float :offset 18984)
(unknown-soundid01 sound-id :offset 18988)
(unknown-int34 int32 :offset 18992)
(unknown-int35 int32 :offset 18996)
(unknown-int36 int32 :offset 19000)
)
:method-count-assert 65
:size-assert #x4a2c
:flag-assert #x4100004a2c
:size-assert #x4a3c
:flag-assert #x4100004a3c
)
;; definition for method 9 of type collide-history
+3 -2
View File
@@ -29,11 +29,12 @@
(fp-hud handle :offset-assert 560)
(no-load-wait time-frame :offset-assert 568)
(no-look-around-wait time-frame :offset-assert 576)
(burn-proc handle :offset-assert 584)
)
:heap-base #x1e0
:method-count-assert 21
:size-assert #x248
:flag-assert #x1501e00248
:size-assert #x250
:flag-assert #x1501e00250
(:methods
(find-edge-grabs! (_type_ collide-cache) object 20)
)
+1 -1
View File
@@ -2664,7 +2664,7 @@
(if (nonzero? arg3)
(process-spawn-function
process
(lambda :behavior target
(lambda :behavior process
((arg0 vector) (arg1 time-frame) (arg2 float))
(local-vars (sv-32 time-frame) (sv-40 vector) (sv-44 symbol))
(set! sv-32 (-> *display* base-frame-counter))
+6 -6
View File
@@ -1349,14 +1349,14 @@
;; definition for function ogreboss-shoot-boulder
;; INFO: Return type mismatch int vs none.
;; Used lq/sq
(defbehavior ogreboss-shoot-boulder ogreboss ((arg0 int))
(defbehavior ogreboss-shoot-boulder ogreboss ((arg0 pickup-type))
(let ((gp-0 (new 'stack-no-clear 'ogreboss-missile-init-data)))
(let ((s5-0 (new 'stack-no-clear 'vector)))
(set! (-> gp-0 src) (-> self node-list data 52 bone transform vector 3))
(set! (-> gp-0 duration)
(the-as time-frame (the int (* 300.0 (+ 1.25 (* -0.25 (-> self level)) (/ 0.5 (-> self difficulty))))))
)
(set! (-> gp-0 pickup-type) (the-as pickup-type arg0))
(set! (-> gp-0 pickup-type) arg0)
(set! (-> gp-0 blast-radius) 32768.0)
(cond
(*target*
@@ -1620,7 +1620,7 @@
(ja :num! (seek! max f30-0))
)
(countdown (gp-1 (+ gp-0 -1))
(let ((s5-0 0))
(let ((boulder-pickup (pickup-type none)))
(let ((f28-0 0.0))
(cond
((>= 1.0 (-> *target* fact-info-target health))
@@ -1644,10 +1644,10 @@
)
)
(if (and *target* (< (rand-vu) f28-0))
(set! s5-0 4)
(set! boulder-pickup (pickup-type eco-green))
)
)
(ogreboss-shoot-boulder s5-0)
(ogreboss-shoot-boulder (the-as pickup-type boulder-pickup))
)
(ja-no-eval :group! ogreboss-attack2-loop-ja :num! (seek! max f30-0) :frame-num 0.0)
(until (ja-done? 0)
@@ -1656,7 +1656,7 @@
)
(ogreboss-inc-try-count)
)
(ogreboss-shoot-boulder 3)
(ogreboss-shoot-boulder (pickup-type eco-blue))
(ja-no-eval :group! ogreboss-attack2-last-ja :num! (seek! max f30-0) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
+49 -24
View File
@@ -819,6 +819,7 @@
)
;; definition for function seconds->race-time
;; INFO: Return type mismatch int vs none.
(defun seconds->race-time ((arg0 race-time) (arg1 time-frame))
(let* ((v1-1 (max 0 (min #x2bf1d arg1)))
(f0-1 (* 0.0033333334 (the float v1-1)))
@@ -830,16 +831,14 @@
(set! (-> arg0 digit 2) (the int f0-3))
(let ((f0-4 (- f0-3 (the float (-> arg0 digit 2)))))
(set! (-> arg0 digit 3) (the int (* 10.0 f0-4)))
(let* ((f0-5 (- f0-4 (* 0.1 (the float (-> arg0 digit 3)))))
(v0-0 (the int (* 100.0 f0-5)))
)
(set! (-> arg0 digit 4) v0-0)
v0-0
(let ((f0-5 (- f0-4 (* 0.1 (the float (-> arg0 digit 3))))))
(set! (-> arg0 digit 4) (the int (* 100.0 f0-5)))
)
)
)
)
)
(none)
)
;; definition for function race-time->seconds
@@ -872,27 +871,40 @@
)
;; definition for function race-time-save
(defun race-time-save ((arg0 race-time) (arg1 int) (arg2 task-control))
(dotimes (s3-0 5)
(save-reminder arg2 (-> arg0 digit s3-0) (+ arg1 s3-0))
;; WARN: Type Propagation failed: Failed type prop at op 6 ((set! v1 (l.wu (+ a0 -4)))): Could not get type of load: (set! v1 (l.wu (+ a0 -4))).
;; WARN: Type Propagation failed: Type analysis failed
;; WARN: Function may read a register that is not set: a2
(defun race-time-save ((a0-0 race-time) (a1-0 task-control))
(local-vars
(v0-0 none)
(v0-1 symbol)
(v1-0 none)
(v1-1 none)
(a0-1 none)
(a1-1 none)
(a2-0 none)
(a2-1 none)
(s3-0 int)
(t9-0 none)
)
#f
(set! s3-0 0)
(while (<.si s3-0 5)
(set! a0-1 a2-0)
(set! v1-0 (the-as none (l.wu (+ a0-1 -4))))
(set! t9-0 (the-as none (l.wu (+ v1-0 84))))
(set! v1-1 (the-as none (+ s3-0 a0-0)))
(set! a1-1 (the-as none (l.b v1-1)))
(set! a2-1 (the-as none (+ a1-0 s3-0)))
(call!)
(set! v1-2 (the-as none v0-0))
(set! s3-0 (the-as int (+ s3-0 1)))
)
(set! v0-1 #f)
(ret-value v0-1)
)
;; definition for function race-time-read
;; INFO: Return type mismatch int vs symbol.
(defun race-time-read ((arg0 race-time) (arg1 int) (arg2 task-control) (arg3 time-frame))
(dotimes (s2-0 5)
(set! (-> arg0 digit s2-0) (get-reminder arg2 (+ arg1 s2-0)))
)
(let ((a1-3 (new 'stack 'race-time)))
(set! (-> a1-3 digit 4) 1)
(the-as symbol (if (race-time-less-than arg0 a1-3)
(seconds->race-time arg0 arg3)
)
)
)
)
;; ERROR: function was not converted to expressions. Cannot decompile.
;; failed to figure out what this is:
(defskelgroup *rolling-start-whole-sg* rolling-start rolling-start-whole-lod0-jg rolling-start-idle-ja
@@ -1331,7 +1343,13 @@
*entity-pool*
(game-task none)
)
(race-time-save (-> self this-time) 1 (-> self tasks))
(let ((t9-14 race-time-save)
(a0-20 (-> self this-time))
(a1-13 1)
)
(-> self tasks)
(t9-14 a0-20 (the-as task-control a1-13))
)
)
)
(else
@@ -1475,7 +1493,14 @@
(send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'hide)
(send-event (ppointer->process (-> *hud-parts* money)) 'disable)
(send-event (ppointer->process (-> *hud-parts* money)) 'hide)
(race-time-read (-> self record-time) 1 (-> self tasks) (seconds 45))
(let ((t9-5 race-time-read)
(a0-8 (-> self record-time))
(a1-5 1)
(a2-1 (-> self tasks))
)
#x34bc
(t9-5 a0-8 (the-as task-control a1-5) (the-as time-frame a2-1))
)
(set! (-> self end-banner)
(ppointer->handle
(process-spawn rolling-start (new 'static 'vector :x -86016.0 :y 112640.0 :z -6309888.0) 16384.0 :to self)
+7 -6
View File
@@ -58,12 +58,13 @@
;; definition of type snow-button
(deftype snow-button (process-drawable)
((root-override collide-shape-moving :offset 112)
(wiggled? symbol :offset-assert 176)
(timeout time-frame :offset-assert 184)
(delay-til-wiggle time-frame :offset-assert 192)
(prev-button entity-actor :offset-assert 200)
(ticker ticky :inline :offset-assert 208)
((root-override collide-shape-moving :offset 112)
(wiggled? symbol :offset-assert 176)
(trying-for-fuel-cell? symbol :offset-assert 180)
(timeout time-frame :offset-assert 184)
(delay-til-wiggle time-frame :offset-assert 192)
(prev-button entity-actor :offset-assert 200)
(ticker ticky :inline :offset-assert 208)
)
:heap-base #x80
:method-count-assert 20
+3 -1
View File
@@ -248,7 +248,9 @@
/// GLIST
// i dont even want to know
"glst-find-node-by-name",
"glst-length-of-longest-name"
"glst-length-of-longest-name",
"race-time-save"
],
"skip_compile_states": {
+2
View File
@@ -0,0 +1,2 @@
add_library(xdelta3 xdelta3.c)
+2
View File
@@ -0,0 +1,2 @@
#include "third-party/xdelta3/xdelta3.h"
#include "third-party/xdelta3/xdelta3/xdelta3.c"
+13
View File
@@ -0,0 +1,13 @@
#pragma once
#define SIZEOF_SIZE_T 8
#define SIZEOF_UNSIGNED_LONG_LONG 8
#ifdef __cplusplus
extern "C" {
#endif
#include <assert.h> // missing in xdelta3
#include "third-party/xdelta3/xdelta3/xdelta3.h"
#ifdef __cplusplus
}
#endif