mirror of
https://github.com/open-goal/jak-project
synced 2026-08-25 07:54:43 -04:00
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:
@@ -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
@@ -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\""]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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"
|
||||
@@ -84,6 +84,7 @@ target_link_libraries(decomp
|
||||
common
|
||||
fmt
|
||||
stb_image
|
||||
xdelta3
|
||||
)
|
||||
|
||||
add_executable(decompiler
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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
@@ -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)
|
||||
|
||||
|
||||
@@ -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
@@ -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": {}
|
||||
}
|
||||
|
||||
@@ -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": []
|
||||
}
|
||||
@@ -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"
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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
+4519
-1114
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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.
@@ -1,13 +1,6 @@
|
||||
(group-name "common")
|
||||
(language-id 5)
|
||||
|
||||
;; -----------------
|
||||
;; fixes
|
||||
|
||||
; 闇の眷者 ゴルとマイアの城
|
||||
(#x122 "闇の賢者 ゴルとマイアの城")
|
||||
(#x801 "闇の賢者 ゴルとマイアの城")
|
||||
|
||||
;; -----------------
|
||||
;; progress menu (insanity)
|
||||
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
(group-name "common")
|
||||
(language-id 5)
|
||||
|
||||
;; -----------------
|
||||
;; fixes
|
||||
|
||||
; 闇の眷者 ゴルとマイアの城
|
||||
(#x122 "闇の賢者 ゴルとマイアの城")
|
||||
(#x801 "闇の賢者 ゴルとマイアの城")
|
||||
+1
-1
@@ -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
@@ -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
|
||||
|
||||
@@ -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)
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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*)
|
||||
|
||||
@@ -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)))
|
||||
)
|
||||
|
||||
@@ -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)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -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))))
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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)
|
||||
)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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))))))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -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)
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 ()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,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,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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -0,0 +1,2 @@
|
||||
add_library(xdelta3 xdelta3.c)
|
||||
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
#include "third-party/xdelta3/xdelta3.h"
|
||||
#include "third-party/xdelta3/xdelta3/xdelta3.c"
|
||||
+13
@@ -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
|
||||
Reference in New Issue
Block a user