d/jx: update configuration

This commit is contained in:
Tyler Wilding
2026-04-22 22:42:00 -04:00
parent 0b693f70b4
commit 94ad6e23c2
11 changed files with 1242 additions and 480 deletions
+3
View File
@@ -129,6 +129,9 @@ tasks:
disasm:
cmds:
- '{{.DECOMP_BIN_RELEASE_DIR}}/decompiler "./decompiler/config/{{.DECOMP_CONFIG}}" "./iso_data" "./decompiler_out" --version "{{.DECOMP_CONFIG_VERSION}}" --config-override ''{"disassemble_code": true, "dump_function_metadata": true, "levels_extract": false}'''
decomp-no-override:
cmds:
- '{{.DECOMP_BIN_RELEASE_DIR}}/decompiler "./decompiler/config/{{.DECOMP_CONFIG}}" "./iso_data" "./decompiler_out" --version "{{.DECOMP_CONFIG_VERSION}}"'
decomp:
cmds:
- '{{.DECOMP_BIN_RELEASE_DIR}}/decompiler "./decompiler/config/{{.DECOMP_CONFIG}}" "./iso_data" "./decompiler_out" --version "{{.DECOMP_CONFIG_VERSION}}" --config-override ''{"decompile_code": true, "levels_extract": false}'''
+6 -3
View File
@@ -633,13 +633,14 @@ void ObjectFileDB::write_disassembly(const fs::path& output_dir,
bool disassemble_data,
bool disassemble_code,
bool print_hex,
bool dump_function_metadata) {
bool dump_function_metadata) {
lg::info("- Writing functions...");
Timer timer;
uint32_t total_bytes = 0, total_files = 0;
std::string asm_functions;
std::unordered_map<std::string, std::unordered_map<std::string, std::string>> file_func_metadata_map = {};
std::unordered_map<std::string, std::unordered_map<std::string, std::string>>
file_func_metadata_map = {};
for_each_obj([&](ObjectFileData& obj) {
if (((obj.obj_version == 3 || (obj.obj_version == 5 && obj.linked_data.has_any_functions())) &&
@@ -648,7 +649,8 @@ void ObjectFileDB::write_disassembly(const fs::path& output_dir,
auto file_text = obj.linked_data.print_disassembly(print_hex);
if (dump_function_metadata) {
if (!file_func_metadata_map.contains(obj.to_unique_name())) {
file_func_metadata_map[obj.to_unique_name()] = std::unordered_map<std::string, std::string>{};
file_func_metadata_map[obj.to_unique_name()] =
std::unordered_map<std::string, std::string>{};
}
obj.linked_data.dump_asm_function_metadata(file_func_metadata_map[obj.to_unique_name()]);
}
@@ -766,6 +768,7 @@ std::string ObjectFileDB::process_tpages(TextureDB& tex_db,
animated_slots = jak3_animated_texture_slots();
break;
case GameVersion::JakX:
// TODO jakx - Implement animation
break;
default:
ASSERT_NOT_REACHED();
+106 -109
View File
@@ -2301,7 +2301,7 @@
:method-count-assert 22
:size-assert #x20
:flag-assert #x1600000020
;; field extra uses ~A with a signed load.
;; field extra uses ~A with a signed load.
(:methods
(new (symbol type) _type_) ;; 0 ;; (new (symbol type int int) _type_)
(res-lump-method-9 () none) ;; 9 ;; (get-property-data (_type_ symbol symbol float pointer (pointer res-tag) pointer) pointer)
@@ -5374,7 +5374,7 @@
:method-count-assert 14
:size-assert #x20
:flag-assert #xe00000020
;; field param1 uses ~A with a signed load. field param2 uses ~A with a signed load. field param3 uses ~A with a signed load.
;; field param1 uses ~A with a signed load. field param2 uses ~A with a signed load. field param3 uses ~A with a signed load.
(:methods
(connection-method-9 () none) ;; 9 ;; (get-engine (connection) engine)
(connection-method-10 () none) ;; 10 ;; (get-process (connection) process)
@@ -5442,7 +5442,7 @@
:method-count-assert 9
:size-assert #x20
:flag-assert #x900000020
;; field key uses ~A with a signed load.
;; field key uses ~A with a signed load.
)
|#
@@ -6173,7 +6173,7 @@
:method-count-assert 9
:size-assert #x40
:flag-assert #x900000040
;; field key uses ~A with a signed load.
;; field key uses ~A with a signed load.
)
|#
@@ -6665,7 +6665,7 @@
:method-count-assert 10
:size-assert #x2c
:flag-assert #xa0000002c
;; field kiosk-play-continue uses ~A with a signed load. field kiosk-online-play-continue uses ~A with a signed load.
;; field kiosk-play-continue uses ~A with a signed load. field kiosk-online-play-continue uses ~A with a signed load.
(:methods
(game-task-info-method-9 () none) ;; 9 ;; (get-play-list-idx (_type_) int)
)
@@ -8254,7 +8254,7 @@
:method-count-assert 11
:size-assert #x190
:flag-assert #xb00000190
;; field cam-slave-options is likely a value type. field cam-master-options is likely a value type.
;; field cam-slave-options is likely a value type. field cam-master-options is likely a value type.
(:methods
(cam-setting-data-method-9 () none) ;; 9 ;; (cam-setting-data-method-9 (_type_ engine engine-pers engine) _type_)
(cam-setting-data-method-10 () none) ;; 10 ;; (cam-setting-data-method-10 (_type_ object (pointer process) float int) _type_)
@@ -9348,7 +9348,7 @@
:method-count-assert 10
:size-assert #x20
:flag-assert #xa00000020
;; field param1 uses ~A with a signed load. field param2 uses ~A with a signed load.
;; field param1 uses ~A with a signed load. field param2 uses ~A with a signed load.
(:methods
(new (symbol type) _type_) ;; 0 ;; (new (symbol type drawable) _type_)
(cspace-method-9 () none) ;; 9 ;; (reset-and-assign-geo! (_type_ drawable) _type_)
@@ -9456,7 +9456,7 @@
:method-count-assert 17
:size-assert #x20
:flag-assert #x1100000020
;; field distance is a float printed as hex?
;; field distance is a float printed as hex?
)
|#
@@ -9531,7 +9531,7 @@
:method-count-assert 10
:size-assert #x10
:flag-assert #xa00000010
;; field on-enter uses ~A with a signed load. field on-inside uses ~A with a signed load. field on-exit uses ~A with a signed load.
;; field on-enter uses ~A with a signed load. field on-inside uses ~A with a signed load. field on-exit uses ~A with a signed load.
(:methods
(region-method-9 () none) ;; 9 ;; (point-in-region-debug! (_type_ vector) symbol)
)
@@ -10233,7 +10233,7 @@
:method-count-assert 14
:size-assert #x3c
:flag-assert #xe0000003c
;; field blend-shape-anim uses ~A with a signed load.
;; field blend-shape-anim uses ~A with a signed load.
)
|#
@@ -10381,7 +10381,7 @@
:method-count-assert 16
:size-assert #x104
:flag-assert #x1000000104
;; field draw-control-global-effect is likely a value type.
;; field draw-control-global-effect is likely a value type.
(:methods
(new (symbol type) _type_) ;; 0 ;; (new (symbol type process symbol) _type_)
(draw-control-method-9 () none) ;; 9 ;; (get-skeleton-origin (_type_) vector)
@@ -10818,7 +10818,7 @@
:method-count-assert 9
:size-assert #x80
:flag-assert #x900000080
;; field xyz-scale is a float printed as hex?
;; field xyz-scale is a float printed as hex?
)
|#
@@ -12051,7 +12051,7 @@
:method-count-assert 12
:size-assert #x70
:flag-assert #xc00000070
;; field on-goto uses ~A with a signed load.
;; field on-goto uses ~A with a signed load.
(:methods
(continue-point-method-9 () none) ;; 9 ;; (debug-draw (_type_) int)
(continue-point-method-10 () none) ;; 10 ;; (continue-point-method-10 (_type_ load-state) continue-point)
@@ -12225,7 +12225,7 @@
:method-count-assert 14
:size-assert #x40
:flag-assert #xe00000040
;; field param1 uses ~A with a signed load. field param2 uses ~A with a signed load. field param3 uses ~A with a signed load.
;; field param1 uses ~A with a signed load. field param2 uses ~A with a signed load. field param3 uses ~A with a signed load.
)
|#
@@ -12256,7 +12256,7 @@
:method-count-assert 14
:size-assert #x20
:flag-assert #xe00000020
;; field on-close uses ~A with a signed load.
;; field on-close uses ~A with a signed load.
(:methods
(talker-speech-class-method-9 () none) ;; 9 ;; (should-play? (_type_) symbol)
(talker-speech-class-method-10 () none) ;; 10 ;; (mark-played! (_type_) none)
@@ -12365,7 +12365,7 @@
:method-count-assert 17
:size-assert #x94
:flag-assert #x1100000094
;; field speech-channel-flag is likely a value type.
;; field speech-channel-flag is likely a value type.
(:methods
(speech-channel-method-9 () none) ;; 9 ;; (speech-channel-method-9 (_type_ process-drawable speech-type) int)
(speech-channel-method-10 () none) ;; 10 ;; (speech-channel-method-10 (_type_ handle) none)
@@ -12783,7 +12783,7 @@
:method-count-assert 13
:size-assert #x40
:flag-assert #xd00000040
;; field joint-control-status is likely a value type.
;; field joint-control-status is likely a value type.
(:methods
(new (symbol type) _type_) ;; 0 ;; (new (symbol type int) _type_)
(joint-control-method-9 () none) ;; 9 ;; (current-cycle-distance (_type_) float)
@@ -13145,7 +13145,7 @@
:method-count-assert 14
:size-assert #xb0
:flag-assert #xe000000b0
;; field param1 uses ~A with a signed load. field param2 uses ~A with a signed load. field param3 uses ~A with a signed load.
;; field param1 uses ~A with a signed load. field param2 uses ~A with a signed load. field param3 uses ~A with a signed load.
)
|#
@@ -13425,7 +13425,7 @@
:method-count-assert 12
:size-assert #x28
:flag-assert #xc00000028
;; field actor-option is likely a value type.
;; field actor-option is likely a value type.
(:methods
(new (symbol type) _type_) ;; 0 ;; (new (symbol type process pickup-type float) _type_)
(fact-info-method-9 () none) ;; 9 ;; (drop-pickup (_type_ symbol process-tree fact-info int symbol) (pointer process))
@@ -13458,7 +13458,7 @@
:method-count-assert 13
:size-assert #x53
:flag-assert #xd00000053
;; field actor-option is likely a value type.
;; field actor-option is likely a value type.
(:methods
(new (symbol type) _type_) ;; 0 ;; (new (symbol type process (pointer float)) _type_)
(fact-info-enemy-method-12 () none) ;; 12 ;; (clear-mask-bits (_type_ int) none)
@@ -13478,7 +13478,7 @@
:method-count-assert 12
:size-assert #x2c
:flag-assert #xc0000002c
;; field actor-option is likely a value type.
;; field actor-option is likely a value type.
(:methods
(new (symbol type) _type_) ;; 0 ;; (new (symbol type process pickup-type float) _type_)
)
@@ -13572,7 +13572,7 @@
:method-count-assert 9
:size-assert #x1c
:flag-assert #x90000001c
;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load.
;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load.
)
|#
@@ -13584,7 +13584,7 @@
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
;; field connection-handle uses ~A with a signed load.
;; field connection-handle uses ~A with a signed load.
)
|#
@@ -13608,7 +13608,7 @@
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
;; field p-data uses ~A with a signed load.
;; field p-data uses ~A with a signed load.
)
|#
@@ -13633,7 +13633,7 @@
:method-count-assert 9
:size-assert #xc
:flag-assert #x90000000c
;; field connection-handle uses ~A with a signed load.
;; field connection-handle uses ~A with a signed load.
)
|#
@@ -13646,7 +13646,7 @@
:method-count-assert 9
:size-assert #xc
:flag-assert #x90000000c
;; field connection-handle uses ~A with a signed load.
;; field connection-handle uses ~A with a signed load.
)
|#
@@ -13774,7 +13774,7 @@
:method-count-assert 9
:size-assert #x14
:flag-assert #x900000014
;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load.
;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load.
)
|#
@@ -13790,7 +13790,7 @@
:method-count-assert 9
:size-assert #x18
:flag-assert #x900000018
;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load.
;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load.
)
|#
@@ -13803,7 +13803,7 @@
:method-count-assert 9
:size-assert #xc
:flag-assert #x90000000c
;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load.
;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load.
)
|#
@@ -13818,7 +13818,7 @@
:method-count-assert 9
:size-assert #x14
:flag-assert #x900000014
;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load.
;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load.
)
|#
@@ -13831,7 +13831,7 @@
:method-count-assert 9
:size-assert #xc
:flag-assert #x90000000c
;; field p-token-ownership-notify-callback-data uses ~A with a signed load.
;; field p-token-ownership-notify-callback-data uses ~A with a signed load.
)
|#
@@ -13845,7 +13845,7 @@
:method-count-assert 9
:size-assert #x10
:flag-assert #x900000010
;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load.
;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load.
)
|#
@@ -13861,7 +13861,7 @@
:method-count-assert 9
:size-assert #x18
:flag-assert #x900000018
;; field p-user-data uses ~A with a signed load.
;; field p-user-data uses ~A with a signed load.
)
|#
@@ -13877,7 +13877,7 @@
:method-count-assert 9
:size-assert #x18
:flag-assert #x900000018
;; field p-user-data uses ~A with a signed load.
;; field p-user-data uses ~A with a signed load.
)
|#
@@ -13921,7 +13921,7 @@
:method-count-assert 9
:size-assert #x14
:flag-assert #x900000014
;; field p-user-data uses ~A with a signed load.
;; field p-user-data uses ~A with a signed load.
)
|#
@@ -13949,7 +13949,7 @@
:method-count-assert 9
:size-assert #x10
:flag-assert #x900000010
;; field p-user-data uses ~A with a signed load.
;; field p-user-data uses ~A with a signed load.
)
|#
@@ -13975,7 +13975,7 @@
:method-count-assert 9
:size-assert #x14
:flag-assert #x900000014
;; field p-user-data uses ~A with a signed load.
;; field p-user-data uses ~A with a signed load.
)
|#
@@ -13990,7 +13990,7 @@
:method-count-assert 9
:size-assert #x14
:flag-assert #x900000014
;; field p-user-data uses ~A with a signed load.
;; field p-user-data uses ~A with a signed load.
)
|#
@@ -14022,7 +14022,7 @@
:method-count-assert 9
:size-assert #x70
:flag-assert #x900000070
;; field p-audio-record-callback-data uses ~A with a signed load. field p-audio-play-callback-data uses ~A with a signed load. field p-video-record-callback-data uses ~A with a signed load. field p-video-play-callback-data uses ~A with a signed load. field p-custom-video-record-callback-data uses ~A with a signed load. field p-custom-video-play-callback-data uses ~A with a signed load.
;; field p-audio-record-callback-data uses ~A with a signed load. field p-audio-play-callback-data uses ~A with a signed load. field p-video-record-callback-data uses ~A with a signed load. field p-video-play-callback-data uses ~A with a signed load. field p-custom-video-record-callback-data uses ~A with a signed load. field p-custom-video-play-callback-data uses ~A with a signed load.
)
|#
@@ -14091,7 +14091,7 @@
:method-count-assert 9
:size-assert #x164
:flag-assert #x900000164
;; field p-local-connect-callback-data uses ~A with a signed load. field p-local-disconnect-callback-data uses ~A with a signed load. field p-remote-client-connect-callback-data uses ~A with a signed load. field p-remote-client-disconnect-callback-data uses ~A with a signed load. field p-host-change-callback-data uses ~A with a signed load. field p-system-status-callback-data uses ~A with a signed load.
;; field p-local-connect-callback-data uses ~A with a signed load. field p-local-disconnect-callback-data uses ~A with a signed load. field p-remote-client-connect-callback-data uses ~A with a signed load. field p-remote-client-disconnect-callback-data uses ~A with a signed load. field p-host-change-callback-data uses ~A with a signed load. field p-system-status-callback-data uses ~A with a signed load.
)
|#
@@ -14130,7 +14130,7 @@
:method-count-assert 9
:size-assert #x40
:flag-assert #x900000040
;; field connection-handle uses ~A with a signed load.
;; field connection-handle uses ~A with a signed load.
)
|#
@@ -14155,7 +14155,7 @@
:method-count-assert 9
:size-assert #x10
:flag-assert #x900000010
;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load.
;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load.
)
|#
@@ -14182,7 +14182,7 @@
:method-count-assert 9
:size-assert #x1c
:flag-assert #x90000001c
;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load.
;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load.
)
|#
@@ -14201,7 +14201,7 @@
:method-count-assert 9
:size-assert #x38
:flag-assert #x900000038
;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load.
;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load.
)
|#
@@ -14217,7 +14217,7 @@
:method-count-assert 9
:size-assert #x18
:flag-assert #x900000018
;; field p-current-data uses ~A with a signed load. field p-last-update-data uses ~A with a signed load.
;; field p-current-data uses ~A with a signed load. field p-last-update-data uses ~A with a signed load.
)
|#
@@ -14231,7 +14231,7 @@
:method-count-assert 9
:size-assert #x10
:flag-assert #x900000010
;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load.
;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load.
)
|#
@@ -14246,7 +14246,7 @@
:method-count-assert 9
:size-assert #x60
:flag-assert #x900000060
;; field p-user-data uses ~A with a signed load.
;; field p-user-data uses ~A with a signed load.
)
|#
@@ -14261,7 +14261,7 @@
:method-count-assert 9
:size-assert #x14
:flag-assert #x900000014
;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load.
;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load.
)
|#
@@ -14275,7 +14275,7 @@
:method-count-assert 9
:size-assert #x10
:flag-assert #x900000010
;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load.
;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load.
)
|#
@@ -14287,7 +14287,7 @@
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
;; field p-user-data uses ~A with a signed load.
;; field p-user-data uses ~A with a signed load.
)
|#
@@ -14300,7 +14300,7 @@
:method-count-assert 9
:size-assert #xc
:flag-assert #x90000000c
;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load.
;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load.
)
|#
@@ -14326,7 +14326,7 @@
:method-count-assert 9
:size-assert #x48
:flag-assert #x900000048
;; field connection-handle uses ~A with a signed load. field p-join-callback-data uses ~A with a signed load. field p-remote-client-event-callback-data uses ~A with a signed load. field p-smchange-callback-data uses ~A with a signed load. field p-ownership-update-callback-data uses ~A with a signed load. field p-ownership-request-callback-data uses ~A with a signed load.
;; field connection-handle uses ~A with a signed load. field p-join-callback-data uses ~A with a signed load. field p-remote-client-event-callback-data uses ~A with a signed load. field p-smchange-callback-data uses ~A with a signed load. field p-ownership-update-callback-data uses ~A with a signed load. field p-ownership-request-callback-data uses ~A with a signed load.
)
|#
@@ -14485,7 +14485,7 @@
:method-count-assert 9
:size-assert #x44
:flag-assert #x900000044
;; field local-user-data uses ~A with a signed load.
;; field local-user-data uses ~A with a signed load.
)
|#
@@ -14497,7 +14497,7 @@
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
;; field p-user-data uses ~A with a signed load.
;; field p-user-data uses ~A with a signed load.
)
|#
@@ -14536,7 +14536,7 @@
:method-count-assert 9
:size-assert #x20
:flag-assert #x900000020
;; field p-user-data uses ~A with a signed load.
;; field p-user-data uses ~A with a signed load.
)
|#
@@ -14549,7 +14549,7 @@
:method-count-assert 9
:size-assert #xc
:flag-assert #x90000000c
;; field connection-handle uses ~A with a signed load.
;; field connection-handle uses ~A with a signed load.
)
|#
@@ -14563,7 +14563,7 @@
:method-count-assert 9
:size-assert #x10
:flag-assert #x900000010
;; field connection-handle uses ~A with a signed load.
;; field connection-handle uses ~A with a signed load.
)
|#
@@ -14587,7 +14587,7 @@
:method-count-assert 9
:size-assert #x10
:flag-assert #x900000010
;; field connection-handle uses ~A with a signed load.
;; field connection-handle uses ~A with a signed load.
)
|#
@@ -17869,7 +17869,7 @@
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
;; field connection-handle uses ~A with a signed load.
;; field connection-handle uses ~A with a signed load.
)
|#
@@ -17882,7 +17882,7 @@
:method-count-assert 9
:size-assert #xc
:flag-assert #x90000000c
;; field connection-handle uses ~A with a signed load.
;; field connection-handle uses ~A with a signed load.
)
|#
@@ -17908,7 +17908,7 @@
:method-count-assert 9
:size-assert #x40
:flag-assert #x900000040
;; field my-chat-fwd-message-callback-user-data uses ~A with a signed load. field my-binary-fwd-message-callback-user-data uses ~A with a signed load. field my-add-to-buddy-list-fwd-confirmation-request-callback-user-data uses ~A with a signed load. field my-error-message-callback-user-data uses ~A with a signed load. field my-reassign-game-medius-world-idcallback-user-data uses ~A with a signed load. field p-system-message-callback-data uses ~A with a signed load.
;; field my-chat-fwd-message-callback-user-data uses ~A with a signed load. field my-binary-fwd-message-callback-user-data uses ~A with a signed load. field my-add-to-buddy-list-fwd-confirmation-request-callback-user-data uses ~A with a signed load. field my-error-message-callback-user-data uses ~A with a signed load. field my-reassign-game-medius-world-idcallback-user-data uses ~A with a signed load. field p-system-message-callback-data uses ~A with a signed load.
)
|#
@@ -17939,7 +17939,7 @@
:method-count-assert 9
:size-assert #x2c
:flag-assert #x90000002c
;; field my-chat-fwd-message-callback-user-data uses ~A with a signed load. field my-binary-fwd-message-callback-user-data uses ~A with a signed load. field my-add-to-buddy-list-fwd-confirmation-request-callback-user-data uses ~A with a signed load. field my-error-message-callback-user-data uses ~A with a signed load. field my-reassign-game-medius-world-idcallback-user-data uses ~A with a signed load.
;; field my-chat-fwd-message-callback-user-data uses ~A with a signed load. field my-binary-fwd-message-callback-user-data uses ~A with a signed load. field my-add-to-buddy-list-fwd-confirmation-request-callback-user-data uses ~A with a signed load. field my-error-message-callback-user-data uses ~A with a signed load. field my-reassign-game-medius-world-idcallback-user-data uses ~A with a signed load.
)
|#
@@ -18768,7 +18768,7 @@
:method-count-assert 9
:size-assert #xc
:flag-assert #x90000000c
;; field connection-handle uses ~A with a signed load.
;; field connection-handle uses ~A with a signed load.
)
|#
@@ -18800,7 +18800,7 @@
:method-count-assert 9
:size-assert #x44
:flag-assert #x900000044
;; field my-server-create-game-callback-user-data uses ~A with a signed load. field my-server-create-game-with-attributes-user-data uses ~A with a signed load. field my-server-join-game-callback-user-data uses ~A with a signed load. field my-server-end-game-callback-user-data uses ~A with a signed load. field my-server-world-status-callback-user-data uses ~A with a signed load. field my-server-connect-games-user-data uses ~A with a signed load.
;; field my-server-create-game-callback-user-data uses ~A with a signed load. field my-server-create-game-with-attributes-user-data uses ~A with a signed load. field my-server-join-game-callback-user-data uses ~A with a signed load. field my-server-end-game-callback-user-data uses ~A with a signed load. field my-server-world-status-callback-user-data uses ~A with a signed load. field my-server-connect-games-user-data uses ~A with a signed load.
)
|#
@@ -18848,7 +18848,7 @@
:method-count-assert 9
:size-assert #x78
:flag-assert #x900000078
;; field p-system-message-callback-data uses ~A with a signed load.
;; field p-system-message-callback-data uses ~A with a signed load.
)
|#
@@ -18877,7 +18877,7 @@
:method-count-assert 9
:size-assert #xc0
:flag-assert #x9000000c0
;; field p-local-connect-callback-data uses ~A with a signed load. field p-local-disconnect-callback-data uses ~A with a signed load. field p-remote-client-connect-callback-data uses ~A with a signed load. field p-remote-client-disconnect-callback-data uses ~A with a signed load. field p-system-status-callback-data uses ~A with a signed load.
;; field p-local-connect-callback-data uses ~A with a signed load. field p-local-disconnect-callback-data uses ~A with a signed load. field p-remote-client-connect-callback-data uses ~A with a signed load. field p-remote-client-disconnect-callback-data uses ~A with a signed load. field p-system-status-callback-data uses ~A with a signed load.
)
|#
@@ -18969,7 +18969,7 @@
:method-count-assert 9
:size-assert #xb8
:flag-assert #x9000000b8
;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load.
;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load.
)
|#
@@ -18985,7 +18985,7 @@
:method-count-assert 9
:size-assert #xb8
:flag-assert #x9000000b8
;; field p-user-data uses ~A with a signed load.
;; field p-user-data uses ~A with a signed load.
)
|#
@@ -19109,7 +19109,7 @@
:method-count-assert 9
:size-assert #x28
:flag-assert #x900000028
;; field connect-handle uses ~A with a signed load.
;; field connect-handle uses ~A with a signed load.
)
|#
@@ -19140,7 +19140,7 @@
:method-count-assert 9
:size-assert #x5c
:flag-assert #x90000005c
;; field connect-handle uses ~A with a signed load. field connect-handle-mgcl uses ~A with a signed load. field connect-handle-muis uses ~A with a signed load. field callback-userdata uses ~A with a signed load.
;; field connect-handle uses ~A with a signed load. field connect-handle-mgcl uses ~A with a signed load. field connect-handle-muis uses ~A with a signed load. field callback-userdata uses ~A with a signed load.
)
|#
@@ -19706,7 +19706,7 @@
:method-count-assert 10
:size-assert #xa8
:flag-assert #xa000000a8
;; field handle is likely a value type.
;; field handle is likely a value type.
(:methods
(attack-info-method-9 () none) ;; 9 ;; (attack-info-method-9 (_type_ attack-info process-drawable process-drawable) none)
)
@@ -19751,7 +19751,7 @@
:method-count-assert 12
:size-assert #xa0
:flag-assert #xc000000a0
;; field key uses ~A with a signed load. field expr uses ~A with a signed load.
;; field key uses ~A with a signed load. field expr uses ~A with a signed load.
(:methods
(new (symbol type) _type_) ;; 0 ;; (new (symbol type object process vector) _type_)
(script-context-method-9 () none) ;; 9 ;; (eval! (_type_ pair) object)
@@ -19834,7 +19834,7 @@
:method-count-assert 18
:size-assert #x8c
:flag-assert #x120000008c
;; field on-running uses ~A with a signed load. field on-complete uses ~A with a signed load.
;; field on-running uses ~A with a signed load. field on-complete uses ~A with a signed load.
(:methods
(scene-method-16 () none) ;; 16 ;; (init-spool-by-scene! (_type_ spool-anim) spool-anim)
(scene-method-17 () none) ;; 17 ;; (load-scene (_type_) scene)
@@ -19877,7 +19877,7 @@
:method-count-assert 56
:size-assert #x1c8
:flag-assert #x38014001c8
;; field user-data uses ~A with a 64-bit load.
;; field user-data uses ~A with a 64-bit load.
(:methods
(scene-player-method-50 () none) ;; 50
(scene-player-method-51 () none) ;; 51
@@ -20008,7 +20008,7 @@
:method-count-assert 9
:size-assert #x2c
:flag-assert #x90000002c
;; field obj uses ~A with a signed load.
;; field obj uses ~A with a signed load.
)
|#
@@ -20088,7 +20088,7 @@
:method-count-assert 16
:size-assert #xac
:flag-assert #x10000000ac
;; field track-mode is likely a value type.
;; field track-mode is likely a value type.
(:methods
(new (symbol type) _type_) ;; 0 ;; (new (symbol type joint-mod-mode process-drawable int) _type_)
(joint-mod-method-9 () none) ;; 9 ;; (mode-set! (_type_ joint-mod-mode) none)
@@ -20679,7 +20679,7 @@
:method-count-assert 55
:size-assert #xc8
:flag-assert #x37000000c8
;; field penetrate is likely a value type. field penetrate is likely a value type.
;; field penetrate is likely a value type. field penetrate is likely a value type.
(:methods
(new (symbol type) _type_) ;; 0 ;; (new (symbol type process-drawable collide-list-enum) _type_)
(collide-shape-method-28 () none) ;; 28 ;; (move-by-vector! (_type_ vector) none)
@@ -20741,7 +20741,7 @@
:method-count-assert 67
:size-assert #x1d8
:flag-assert #x43000001d8
;; field penetrate is likely a value type. field penetrate is likely a value type.
;; field penetrate is likely a value type. field penetrate is likely a value type.
(:methods
(new (symbol type) _type_) ;; 0 ;; (new (symbol type process-drawable collide-list-enum) _type_)
(collide-shape-moving-method-55 () none) ;; 55 ;; (find-ground (_type_ collide-query collide-spec float float float process) symbol)
@@ -20800,7 +20800,7 @@
:method-count-assert 51
:size-assert #x1a4
:flag-assert #x33012001a4
;; field userdata uses ~A with a 64-bit load.
;; field userdata uses ~A with a 64-bit load.
(:methods
(manipy-method-50 () none) ;; 50
)
@@ -20860,7 +20860,7 @@
:method-count-assert 19
:size-assert #x17c
:flag-assert #x1300f0017c
;; field userdata uses ~A with a 64-bit load.
;; field userdata uses ~A with a 64-bit load.
(:methods
(part-tracker-method-9 () none) ;; 9
(part-tracker-method-10 () none) ;; 10
@@ -20892,7 +20892,7 @@
:method-count-assert 9
:size-assert #x38
:flag-assert #x900000038
;; field userdata uses ~A with a 64-bit load. field mat-joint uses ~A with a signed load.
;; field userdata uses ~A with a 64-bit load. field mat-joint uses ~A with a signed load.
)
|#
@@ -20928,7 +20928,7 @@
:method-count-assert 18
:size-assert #x140
:flag-assert #x1200b00140
;; field userdata uses ~A with a 64-bit load.
;; field userdata uses ~A with a 64-bit load.
(:methods
(lightning-tracker-method-9 () none) ;; 9
(lightning-tracker-method-10 () none) ;; 10
@@ -22046,7 +22046,7 @@
:method-count-assert 9
:size-assert #x68
:flag-assert #x900000068
;; field validator-params uses ~A with a signed load.
;; field validator-params uses ~A with a signed load.
)
|#
@@ -22106,7 +22106,7 @@
:method-count-assert 60
:size-assert #x350
:flag-assert #x3c02c00350
;; field mode-param2 uses ~A with a 64-bit load. field mode-param3 uses ~A with a 64-bit load.
;; field mode-param2 uses ~A with a 64-bit load. field mode-param3 uses ~A with a 64-bit load.
(:methods
(target-method-59 () none) ;; 59
)
@@ -24275,7 +24275,7 @@
:method-count-assert 9
:size-assert #x10
:flag-assert #x900000010
;; field object uses ~A with a signed load.
;; field object uses ~A with a signed load.
)
|#
@@ -24479,7 +24479,7 @@
:method-count-assert 9
:size-assert #x8c
:flag-assert #x90000008c
;; field user-object uses ~A with a signed load. field control uses ~A with a signed load.
;; field user-object uses ~A with a signed load. field control uses ~A with a signed load.
)
|#
@@ -24959,7 +24959,7 @@
:method-count-assert 9
:size-assert #x19
:flag-assert #x900000019
;; field nav-mesh-link-search-node-status is likely a value type.
;; field nav-mesh-link-search-node-status is likely a value type.
)
|#
@@ -25139,7 +25139,7 @@
:method-count-assert 47
:size-assert #x70
:flag-assert #x2f00000070
;; field nav-mesh-flag is likely a value type.
;; field nav-mesh-flag is likely a value type.
(:methods
(nav-mesh-method-9 () none) ;; 9 ;; (debug-draw (_type_) none)
(nav-mesh-method-10 () none) ;; 10 ;; (nav-mesh-method-10 (_type_ vector vector nav-poly) nav-poly)
@@ -26494,7 +26494,7 @@
:method-count-assert 12
:size-assert #x28
:flag-assert #xc00000028
;; field out uses ~A with a signed load.
;; field out uses ~A with a signed load.
(:methods
(new (symbol type) _type_) ;; 0 ;; (new (symbol type uint) _type_)
(history-iterator-method-9 () none) ;; 9 ;; (frame-counter-delta (_type_ history-elt) time-frame)
@@ -27438,7 +27438,7 @@
:method-count-assert 9
:size-assert #x140
:flag-assert #x900000140
;; field ra uses ~A with a signed load. field dummy0 uses ~A with a signed load. field dummy1 uses ~A with a signed load. field b-spfic uses ~A with a signed load. field l-spfic uses ~A with a signed load.
;; field ra uses ~A with a signed load. field dummy0 uses ~A with a signed load. field dummy1 uses ~A with a signed load. field b-spfic uses ~A with a signed load. field l-spfic uses ~A with a signed load.
)
|#
@@ -29014,7 +29014,7 @@
:method-count-assert 9
:size-assert #x1c
:flag-assert #x90000001c
;; field parm0 uses ~A with a signed load. field parm1 uses ~A with a signed load.
;; field parm0 uses ~A with a signed load. field parm1 uses ~A with a signed load.
)
|#
@@ -29042,7 +29042,7 @@
:method-count-assert 9
:size-assert #x1c
:flag-assert #x90000001c
;; field track-val uses ~A with a signed load. field val-parm0 uses ~A with a signed load. field val-parm1 uses ~A with a signed load.
;; field track-val uses ~A with a signed load. field val-parm0 uses ~A with a signed load. field val-parm1 uses ~A with a signed load.
)
|#
@@ -29589,7 +29589,7 @@
:method-count-assert 38
:size-assert #xac
:flag-assert #x26000000ac
;; field cloth-flag is likely a value type.
;; field cloth-flag is likely a value type.
(:methods
(cloth-system-method-16 () none) ;; 16 ;; (initialize-cloth-system! (_type_ cloth-params) none)
(cloth-system-method-17 () none) ;; 17 ;; (debug-draw-spheres (_type_) none)
@@ -29627,7 +29627,7 @@
:method-count-assert 38
:size-assert #x110
:flag-assert #x2600000110
;; field cloth-flag is likely a value type.
;; field cloth-flag is likely a value type.
)
|#
@@ -30763,7 +30763,7 @@
:method-count-assert 41
:size-assert #x130
:flag-assert #x2900000130
;; field rigid-body-flag is likely a value type.
;; field rigid-body-flag is likely a value type.
(:methods
(new (symbol type) _type_) ;; 0 ;; (new (symbol type process) _type_)
(rigid-body-control-method-9 () none) ;; 9 ;; (rigid-body-control-method-9 (_type_ collide-shape-moving float) none)
@@ -30864,7 +30864,7 @@
:method-count-assert 89
:size-assert #x120
:flag-assert #x5900900120
;; field rigid-body-object-flag is likely a value type.
;; field rigid-body-object-flag is likely a value type.
(:methods
(rigid-body-object-method-59 () none) ;; 59
(rigid-body-object-method-60 () none) ;; 60
@@ -33184,7 +33184,7 @@
:method-count-assert 9
:size-assert #x40
:flag-assert #x900000040
;; field rigid-body-surface-flag is likely a value type.
;; field rigid-body-surface-flag is likely a value type.
)
|#
@@ -33748,7 +33748,7 @@
:method-count-assert 204
:size-assert #x859
:flag-assert #xcc07d00859
;; field vehicle-flag is likely a value type.
;; field vehicle-flag is likely a value type.
(:methods
(vehicle-method-89 () none) ;; 89 ;; (init-reverse (_type_ vehicle-controls) none)
(vehicle-method-90 () none) ;; 90 ;; (control-hook-ai (_type_ vehicle-controls) none)
@@ -34313,7 +34313,7 @@
:method-count-assert 9
:size-assert #x1e
:flag-assert #x90000001e
;; field impact-callback-params uses ~A with a signed load.
;; field impact-callback-params uses ~A with a signed load.
)
|#
@@ -36356,7 +36356,7 @@
:method-count-assert 9
:size-assert #xc
:flag-assert #x90000000c
;; field extra uses ~A with a signed load. field extra-object uses ~A with a signed load.
;; field extra uses ~A with a signed load. field extra-object uses ~A with a signed load.
)
|#
@@ -36371,7 +36371,7 @@
:method-count-assert 9
:size-assert #x84
:flag-assert #x900000084
;; field extra uses ~A with a signed load. field extra-object uses ~A with a signed load.
;; field extra uses ~A with a signed load. field extra-object uses ~A with a signed load.
)
|#
@@ -37799,7 +37799,7 @@
:method-count-assert 22
:size-assert #xa0
:flag-assert #x16001000a0
;; field connect-handle uses ~A with a signed load.
;; field connect-handle uses ~A with a signed load.
(:methods
(aux-voice-mgr-method-9 () none) ;; 9
(aux-voice-mgr-method-10 () none) ;; 10
@@ -38266,7 +38266,7 @@
:method-count-assert 9
:size-assert #x144
:flag-assert #x900000144
;; field private uses ~A with a signed load.
;; field private uses ~A with a signed load.
)
|#
@@ -39078,7 +39078,7 @@
:method-count-assert 9
:size-assert #x14
:flag-assert #x900000014
;; field param2 uses ~A with a signed load.
;; field param2 uses ~A with a signed load.
)
|#
@@ -39469,7 +39469,7 @@
:method-count-assert 16
:size-assert #xac
:flag-assert #x10000000ac
;; field track-mode is likely a value type.
;; field track-mode is likely a value type.
)
|#
@@ -40779,7 +40779,7 @@
:method-count-assert 13
:size-assert #x30
:flag-assert #xd00000030
;; field on-enter uses ~A with a signed load. field on-inside uses ~A with a signed load. field on-exit uses ~A with a signed load.
;; field on-enter uses ~A with a signed load. field on-inside uses ~A with a signed load. field on-exit uses ~A with a signed load.
(:methods
(new (symbol type) _type_) ;; 0 ;; (new (symbol type) _type_)
(editable-region-method-9 () none) ;; 9 ;; (save-region! (_type_ editable-array int int) symbol)
@@ -52937,6 +52937,3 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; speech-ximon ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+7 -2
View File
@@ -10,6 +10,7 @@
"allowed_objects": [],
// TODO - these objects currently cause various errors in the decompiler that need to be fixed
// thankfully no header files so hopefully the impact on all-types is minimal
"banned_objects": [
"dma",
"race-line",
@@ -59,16 +60,20 @@
// unpack game count to assets folder
"process_game_count": false,
// write goal imports for art groups
"process_art_groups": true,
"process_art_groups": false,
// write goal imports for the part group table
"process_part_group_table": false,
// write out a json file containing the art info mapping, run this with all objects allowed
// TODO - rerun this once all objects can be allowed
"dump_art_group_info": false,
// write out a json file containing the joint node mapping, run this with all objects allowed
// TODO - rerun this once all objects can be allowed
"dump_joint_geo_info": false,
// write out a json file containing tpage and texture mappings, run with all objects allowed
// TODO - rerun this once all objects can be allowed
"dump_tex_info": false,
// write out a json file containing the part group table, run with all objects allowed
// TODO - re-run this once particle code has been decomped and once all objects can be allowed
"dump_part_group_table": false,
// set to false to skip adding .STR files to the decompiler database
@@ -89,7 +94,7 @@
"generate_symbol_definition_map": false,
// generate the all-types file
"generate_all_types": true,
"generate_all_types": false,
// debug option for instruction decoder
"write_hex_near_instructions": false,
File diff suppressed because one or more lines are too long
+366 -366
View File
@@ -14,372 +14,372 @@
// "CGO/ENGINE.CGO",
"CGO/KERNEL.CGO",
"CGO/GAME.CGO",
"DGO/ASHCRED.DGO",
"DGO/ASHLEV.DGO",
"DGO/ASHVL.DGO",
"DGO/ASHVL2.DGO",
"DGO/ASHVL3.DGO",
"DGO/ATL.DGO",
"DGO/ATOLLART.DGO",
"DGO/ATOLLCTF.DGO",
"DGO/ATOLLS.DGO",
"DGO/ATOPLOW.DGO",
"DGO/ATX.DGO",
"DGO/BEARL.DGO",
"DGO/BOBCL.DGO",
"DGO/BRDROOM.DGO",
"DGO/BRDROOMF.DGO",
"DGO/CANFOOT.DGO",
"DGO/CANSPARS.DGO",
"DGO/CANSPARW.DGO",
"DGO/CANTBOX.DGO",
"DGO/CANYONS.DGO",
"DGO/CANYONTT.DGO",
"DGO/CANYONW.DGO",
"DGO/CARS.DGO",
"DGO/CHEEL.DGO",
"DGO/CLF.DGO",
"DGO/CLFX.DGO",
"DGO/CLIFCTF.DGO",
"DGO/CLIFFART.DGO",
"DGO/CLIFFSS.DGO",
"DGO/CLIFHUNT.DGO",
"DGO/CLIFTRN.DGO",
"DGO/CNSPFOOT.DGO",
"DGO/CNSPTBOX.DGO",
"DGO/CNSPTT.DGO",
"DGO/COL.DGO",
"DGO/COLART.DGO",
"DGO/COLICLCT.DGO",
"DGO/COLICTF.DGO",
"DGO/COLIREV.DGO",
"DGO/COLISEUS.DGO",
"DGO/COLX.DGO",
"DGO/COUGL.DGO",
"DGO/CREDITS.DGO",
"DGO/CSX.DGO",
"DGO/CSY.DGO",
"DGO/CYA.DGO",
"DGO/CYB.DGO",
"DGO/CYC.DGO",
"DGO/CYD.DGO",
"DGO/CYE.DGO",
"DGO/CYX.DGO",
"DGO/CYY.DGO",
"DGO/DAXCRED.DGO",
"DGO/DAXLEV.DGO",
"DGO/DAXTL.DGO",
"DGO/DESACTF.DGO",
"DGO/DESARENS.DGO",
"DGO/DESART.DGO",
"DGO/DESCLCT.DGO",
"DGO/DESHUNT.DGO",
"DGO/DESHUNT2.DGO",
"DGO/DESISLES.DGO",
"DGO/DESRAPT.DGO",
"DGO/DESREV.DGO",
"DGO/DETHRACE.DGO",
"DGO/DISLEART.DGO",
"DGO/DISLECTF.DGO",
"DGO/DKA.DGO",
"DGO/DKB.DGO",
"DGO/DKC.DGO",
"DGO/DKD.DGO",
"DGO/DKE.DGO",
"DGO/DKKRFOOT.DGO",
"DGO/DKKRTBOX.DGO",
"DGO/DKKRTT.DGO",
"DGO/DKKX.DGO",
"DGO/DKKY.DGO",
"DGO/DKX.DGO",
"DGO/DOCKFOOT.DGO",
"DGO/DOCKKRAS.DGO",
"DGO/DOCKKRAW.DGO",
"DGO/DOCKSS.DGO",
"DGO/DOCKSTT.DGO",
"DGO/DOCKSW.DGO",
"DGO/DOCKTBOX.DGO",
"DGO/DRA.DGO",
"DGO/DRB.DGO",
"DGO/DRC.DGO",
"DGO/DRD.DGO",
"DGO/DRDKFOOT.DGO",
"DGO/DRDKTBOX.DGO",
"DGO/DRDKTT.DGO",
"DGO/DRDX.DGO",
"DGO/DRDY.DGO",
"DGO/DROMDOCS.DGO",
"DGO/DROMDOCW.DGO",
"DGO/DROMES.DGO",
"DGO/DROMETT.DGO",
"DGO/DROMEW.DGO",
"DGO/DROMEX.DGO",
"DGO/DROMFOOT.DGO",
"DGO/DROMTBOX.DGO",
"DGO/DRONE.DGO",
"DGO/DRX.DGO",
"DGO/DRY.DGO",
"DGO/DSI.DGO",
"DGO/DSR.DGO",
"DGO/DSRX.DGO",
"DGO/DSX.DGO",
"DGO/EIGHT.DGO",
"DGO/EIGHTB.DGO",
"DGO/FALCL.DGO",
"DGO/FMVLEV.DGO",
"DGO/FOXL.DGO",
"DGO/GARAGE.DGO",
"DGO/GARAGEB.DGO",
"DGO/GILAL.DGO",
"DGO/GTBCRED.DGO",
"DGO/GTBLEV.DGO",
"DGO/GTBVL.DGO",
"DGO/HAVENS.DGO",
"DGO/HAVENW.DGO",
"DGO/HAVJUNGS.DGO",
"DGO/HAVJUNGW.DGO",
"DGO/HAVNFOOT.DGO",
"DGO/HAVNTBOX.DGO",
"DGO/HAVSEWS.DGO",
"DGO/HAVSEWW.DGO",
"DGO/HAVTFOOT.DGO",
"DGO/HAVTOURS.DGO",
"DGO/HAVTOURW.DGO",
"DGO/HAVTT.DGO",
"DGO/HAVTTBOX.DGO",
"DGO/HJNGFOOT.DGO",
"DGO/HJX.DGO",
"DGO/HJY.DGO",
"DGO/HSX.DGO",
"DGO/HSY.DGO",
"DGO/HVA.DGO",
"DGO/HVB.DGO",
"DGO/HVC.DGO",
"DGO/HVD.DGO",
"DGO/HVE.DGO",
"DGO/HVJGTBOX.DGO",
"DGO/HVJGTT.DGO",
"DGO/HVSWFOOT.DGO",
"DGO/HVSWTBOX.DGO",
"DGO/HVSWTT.DGO",
"DGO/HVTRTT.DGO",
"DGO/HVX.DGO",
"DGO/HVY.DGO",
"DGO/IBX.DGO",
"DGO/IBY.DGO",
"DGO/ICA.DGO",
"DGO/ICB.DGO",
"DGO/ICBGTT.DGO",
"DGO/ICC.DGO",
"DGO/ICD.DGO",
"DGO/ICEBERGS.DGO",
"DGO/ICEBERGW.DGO",
"DGO/ICEBFOOT.DGO",
"DGO/ICEBTBOX.DGO",
"DGO/ICEFOOT.DGO",
"DGO/ICEPASSS.DGO",
"DGO/ICEPASSW.DGO",
"DGO/ICEPFOOT.DGO",
"DGO/ICEPTBOX.DGO",
"DGO/ICES.DGO",
"DGO/ICETBOX.DGO",
"DGO/ICETFOOT.DGO",
"DGO/ICETOURS.DGO",
"DGO/ICETOURW.DGO",
"DGO/ICETRN.DGO",
"DGO/ICETT.DGO",
"DGO/ICETTBOX.DGO",
"DGO/ICEW.DGO",
"DGO/ICPSTT.DGO",
"DGO/ICTRTT.DGO",
"DGO/ICX.DGO",
"DGO/ICY.DGO",
"DGO/IPX.DGO",
"DGO/IPY.DGO",
"DGO/JAKCRED.DGO",
"DGO/JAKLEV.DGO",
"DGO/JAKVL.DGO",
"DGO/JGA.DGO",
"DGO/JGB.DGO",
"DGO/JGC.DGO",
"DGO/JGD.DGO",
"DGO/JGE.DGO",
"DGO/JGF.DGO",
"DGO/JGG.DGO",
"DGO/JGX.DGO",
"DGO/JGY.DGO",
"DGO/JKALEV.DGO",
"DGO/JKBLEV.DGO",
"DGO/JKCLEV.DGO",
"DGO/JUNGFOOT.DGO",
"DGO/JUNGLES.DGO",
"DGO/JUNGLETT.DGO",
"DGO/JUNGLEW.DGO",
"DGO/JUNGTBOX.DGO",
"DGO/JUNGTRN.DGO",
"DGO/KAELEV.DGO",
"DGO/KCR.DGO",
"DGO/KCROSART.DGO",
"DGO/KCROSCTF.DGO",
"DGO/KCROSSS.DGO",
"DGO/KCRSCLCT.DGO",
"DGO/KCRSPLOW.DGO",
"DGO/KCRX.DGO",
"DGO/KEICRED.DGO",
"DGO/KIELEV.DGO",
"DGO/KIEVL.DGO",
"DGO/KLECRED.DGO",
"DGO/KLELEV.DGO",
"DGO/KLEVL.DGO",
"DGO/KLEVL2.DGO",
"DGO/KRA.DGO",
"DGO/KRASFOOT.DGO",
"DGO/KRASS.DGO",
"DGO/KRASTBOX.DGO",
"DGO/KRASTRN.DGO",
"DGO/KRASTT.DGO",
"DGO/KRASW.DGO",
"DGO/KRATFOOT.DGO",
"DGO/KRATOURS.DGO",
"DGO/KRATOURW.DGO",
"DGO/KRATTBOX.DGO",
"DGO/KRB.DGO",
"DGO/KRC.DGO",
"DGO/KRTRTT.DGO",
"DGO/KRX.DGO",
"DGO/KRY.DGO",
"DGO/LEOPL.DGO",
"DGO/MENU2.DGO",
"DGO/MENUMAP.DGO",
"DGO/MONGL.DGO",
"DGO/OSMLEV.DGO",
"DGO/PANTL.DGO",
"DGO/PEAKFOOT.DGO",
"DGO/PEAKS.DGO",
"DGO/PEAKTBOX.DGO",
"DGO/PEAKTT.DGO",
"DGO/PEAKW.DGO",
"DGO/PECCRED.DGO",
"DGO/PECLEV.DGO",
"DGO/PECVL.DGO",
"DGO/PKA.DGO",
"DGO/PKB.DGO",
"DGO/PKC.DGO",
"DGO/PKD.DGO",
"DGO/PKE.DGO",
"DGO/PKX.DGO",
"DGO/POSSL.DGO",
"DGO/RACEWEAP.DGO",
"DGO/RATLEV.DGO",
"DGO/RAYCRED.DGO",
"DGO/RAYLEV.DGO",
"DGO/RAYVL.DGO",
"DGO/RAYVL2.DGO",
"DGO/RAZCRED.DGO",
"DGO/RAZLEV.DGO",
"DGO/RAZVL.DGO",
"DGO/RTH.DGO",
"DGO/RUSTYH.DGO",
"DGO/S2A.DGO",
"DGO/S3A.DGO",
"DGO/SBWLCTF.DGO",
"DGO/SEWERS.DGO",
"DGO/SEWERTT.DGO",
"DGO/SEWERW.DGO",
"DGO/SEWFOOT.DGO",
"DGO/SEWTBOX.DGO",
"DGO/SIGCRED.DGO",
"DGO/SIGLEV.DGO",
"DGO/SIGVL.DGO",
"DGO/SIGVL2.DGO",
"DGO/SIGVL3.DGO",
"DGO/SNAKL.DGO",
"DGO/SNO.DGO",
"DGO/SNOBART.DGO",
"DGO/SNOBOWLS.DGO",
"DGO/SNOWFOOT.DGO",
"DGO/SNOWS.DGO",
"DGO/SNOWTBOX.DGO",
"DGO/SNOWTRN2.DGO",
"DGO/SNOWTT.DGO",
"DGO/SNOX.DGO",
"DGO/SNW.DGO",
"DGO/SNWX.DGO",
"DGO/SPA.DGO",
"DGO/SPARFOOT.DGO",
"DGO/SPARGUSS.DGO",
"DGO/SPARGUSW.DGO",
"DGO/SPARTEMS.DGO",
"DGO/SPARTEMW.DGO",
"DGO/SPARTT.DGO",
"DGO/SPATFOOT.DGO",
"DGO/SPATOURS.DGO",
"DGO/SPATOURW.DGO",
"DGO/SPATTBOX.DGO",
"DGO/SPB.DGO",
"DGO/SPC.DGO",
"DGO/SPD.DGO",
"DGO/SPE.DGO",
"DGO/SPRGSTBX.DGO",
"DGO/SPTMFOOT.DGO",
"DGO/SPTMTBOX.DGO",
"DGO/SPTMTT.DGO",
"DGO/SPTRTT.DGO",
"DGO/SPX.DGO",
"DGO/SPY.DGO",
"DGO/STX.DGO",
"DGO/STY.DGO",
"DGO/SWA.DGO",
"DGO/SWB.DGO",
"DGO/SWC.DGO",
"DGO/SWD.DGO",
"DGO/SWE.DGO",
"DGO/SWF.DGO",
"DGO/SWX.DGO",
"DGO/TARLEV.DGO",
"DGO/TEMPFOOT.DGO",
"DGO/TEMPLES.DGO",
"DGO/TEMPLETT.DGO",
"DGO/TEMPLEW.DGO",
"DGO/TEMPTBOX.DGO",
"DGO/THACRED.DGO",
"DGO/THALEV.DGO",
"DGO/THAVL.DGO",
"DGO/THAVL2.DGO",
"DGO/THAVL3.DGO",
"DGO/THBCRED.DGO",
"DGO/THBLEV.DGO",
"DGO/THBVL.DGO",
"DGO/THBVL2.DGO",
"DGO/THBVL3.DGO",
"DGO/THCCRED.DGO",
"DGO/THCLEV.DGO",
"DGO/THCVL.DGO",
"DGO/THCVL2.DGO",
"DGO/THCVL3.DGO",
"DGO/TIGEL.DGO",
"DGO/TOADL.DGO",
"DGO/TORCRED.DGO",
"DGO/TORLEV.DGO",
"DGO/TORVL.DGO",
"DGO/TORVL2.DGO",
"DGO/TORVL3.DGO",
"DGO/TPA.DGO",
"DGO/TPB.DGO",
"DGO/TPC.DGO",
"DGO/TPD.DGO",
"DGO/TPE.DGO",
"DGO/TPX.DGO",
"DGO/TPY.DGO",
"DGO/TURTL.DGO",
"DGO/UR8CRED.DGO",
"DGO/UR8LEV.DGO",
"DGO/UR8VL.DGO",
"DGO/UR8VL2.DGO",
"DGO/UR8VL3.DGO",
"DGO/WOLFL.DGO",
"DGO/WOMBL.DGO",
"DGO/XIMLEV.DGO"
// "DGO/ASHCRED.DGO",
// "DGO/ASHLEV.DGO",
// "DGO/ASHVL.DGO",
// "DGO/ASHVL2.DGO",
// "DGO/ASHVL3.DGO",
// "DGO/ATL.DGO",
// "DGO/ATOLLART.DGO",
// "DGO/ATOLLCTF.DGO",
// "DGO/ATOLLS.DGO",
// "DGO/ATOPLOW.DGO",
// "DGO/ATX.DGO",
// "DGO/BEARL.DGO",
// "DGO/BOBCL.DGO",
// "DGO/BRDROOM.DGO",
// "DGO/BRDROOMF.DGO",
// "DGO/CANFOOT.DGO",
// "DGO/CANSPARS.DGO",
// "DGO/CANSPARW.DGO",
// "DGO/CANTBOX.DGO",
// "DGO/CANYONS.DGO",
// "DGO/CANYONTT.DGO",
// "DGO/CANYONW.DGO",
// "DGO/CARS.DGO",
// "DGO/CHEEL.DGO",
// "DGO/CLF.DGO",
// "DGO/CLFX.DGO",
// "DGO/CLIFCTF.DGO",
// "DGO/CLIFFART.DGO",
// "DGO/CLIFFSS.DGO",
// "DGO/CLIFHUNT.DGO",
// "DGO/CLIFTRN.DGO",
// "DGO/CNSPFOOT.DGO",
// "DGO/CNSPTBOX.DGO",
// "DGO/CNSPTT.DGO",
// "DGO/COL.DGO",
// "DGO/COLART.DGO",
// "DGO/COLICLCT.DGO",
// "DGO/COLICTF.DGO",
// "DGO/COLIREV.DGO",
// "DGO/COLISEUS.DGO",
// "DGO/COLX.DGO",
// "DGO/COUGL.DGO",
// "DGO/CREDITS.DGO",
// "DGO/CSX.DGO",
// "DGO/CSY.DGO",
// "DGO/CYA.DGO",
// "DGO/CYB.DGO",
// "DGO/CYC.DGO",
// "DGO/CYD.DGO",
// "DGO/CYE.DGO",
// "DGO/CYX.DGO",
// "DGO/CYY.DGO",
// "DGO/DAXCRED.DGO",
// "DGO/DAXLEV.DGO",
// "DGO/DAXTL.DGO",
// "DGO/DESACTF.DGO",
// "DGO/DESARENS.DGO",
// "DGO/DESART.DGO",
// "DGO/DESCLCT.DGO",
// "DGO/DESHUNT.DGO",
// "DGO/DESHUNT2.DGO",
// "DGO/DESISLES.DGO",
// "DGO/DESRAPT.DGO",
// "DGO/DESREV.DGO",
// "DGO/DETHRACE.DGO",
// "DGO/DISLEART.DGO",
// "DGO/DISLECTF.DGO",
// "DGO/DKA.DGO",
// "DGO/DKB.DGO",
// "DGO/DKC.DGO",
// "DGO/DKD.DGO",
// "DGO/DKE.DGO",
// "DGO/DKKRFOOT.DGO",
// "DGO/DKKRTBOX.DGO",
// "DGO/DKKRTT.DGO",
// "DGO/DKKX.DGO",
// "DGO/DKKY.DGO",
// "DGO/DKX.DGO",
// "DGO/DOCKFOOT.DGO",
// "DGO/DOCKKRAS.DGO",
// "DGO/DOCKKRAW.DGO",
// "DGO/DOCKSS.DGO",
// "DGO/DOCKSTT.DGO",
// "DGO/DOCKSW.DGO",
// "DGO/DOCKTBOX.DGO",
// "DGO/DRA.DGO",
// "DGO/DRB.DGO",
// "DGO/DRC.DGO",
// "DGO/DRD.DGO",
// "DGO/DRDKFOOT.DGO",
// "DGO/DRDKTBOX.DGO",
// "DGO/DRDKTT.DGO",
// "DGO/DRDX.DGO",
// "DGO/DRDY.DGO",
// "DGO/DROMDOCS.DGO",
// "DGO/DROMDOCW.DGO",
// "DGO/DROMES.DGO",
// "DGO/DROMETT.DGO",
// "DGO/DROMEW.DGO",
// "DGO/DROMEX.DGO",
// "DGO/DROMFOOT.DGO",
// "DGO/DROMTBOX.DGO",
// "DGO/DRONE.DGO",
// "DGO/DRX.DGO",
// "DGO/DRY.DGO",
// "DGO/DSI.DGO",
// "DGO/DSR.DGO",
// "DGO/DSRX.DGO",
// "DGO/DSX.DGO",
// "DGO/EIGHT.DGO",
// "DGO/EIGHTB.DGO",
// "DGO/FALCL.DGO",
// "DGO/FMVLEV.DGO",
// "DGO/FOXL.DGO",
// "DGO/GARAGE.DGO",
// "DGO/GARAGEB.DGO",
// "DGO/GILAL.DGO",
// "DGO/GTBCRED.DGO",
// "DGO/GTBLEV.DGO",
// "DGO/GTBVL.DGO",
// "DGO/HAVENS.DGO",
// "DGO/HAVENW.DGO",
// "DGO/HAVJUNGS.DGO",
// "DGO/HAVJUNGW.DGO",
// "DGO/HAVNFOOT.DGO",
// "DGO/HAVNTBOX.DGO",
// "DGO/HAVSEWS.DGO",
// "DGO/HAVSEWW.DGO",
// "DGO/HAVTFOOT.DGO",
// "DGO/HAVTOURS.DGO",
// "DGO/HAVTOURW.DGO",
// "DGO/HAVTT.DGO",
// "DGO/HAVTTBOX.DGO",
// "DGO/HJNGFOOT.DGO",
// "DGO/HJX.DGO",
// "DGO/HJY.DGO",
// "DGO/HSX.DGO",
// "DGO/HSY.DGO",
// "DGO/HVA.DGO",
// "DGO/HVB.DGO",
// "DGO/HVC.DGO",
// "DGO/HVD.DGO",
// "DGO/HVE.DGO",
// "DGO/HVJGTBOX.DGO",
// "DGO/HVJGTT.DGO",
// "DGO/HVSWFOOT.DGO",
// "DGO/HVSWTBOX.DGO",
// "DGO/HVSWTT.DGO",
// "DGO/HVTRTT.DGO",
// "DGO/HVX.DGO",
// "DGO/HVY.DGO",
// "DGO/IBX.DGO",
// "DGO/IBY.DGO",
// "DGO/ICA.DGO",
// "DGO/ICB.DGO",
// "DGO/ICBGTT.DGO",
// "DGO/ICC.DGO",
// "DGO/ICD.DGO",
// "DGO/ICEBERGS.DGO",
// "DGO/ICEBERGW.DGO",
// "DGO/ICEBFOOT.DGO",
// "DGO/ICEBTBOX.DGO",
// "DGO/ICEFOOT.DGO",
// "DGO/ICEPASSS.DGO",
// "DGO/ICEPASSW.DGO",
// "DGO/ICEPFOOT.DGO",
// "DGO/ICEPTBOX.DGO",
// "DGO/ICES.DGO",
// "DGO/ICETBOX.DGO",
// "DGO/ICETFOOT.DGO",
// "DGO/ICETOURS.DGO",
// "DGO/ICETOURW.DGO",
// "DGO/ICETRN.DGO",
// "DGO/ICETT.DGO",
// "DGO/ICETTBOX.DGO",
// "DGO/ICEW.DGO",
// "DGO/ICPSTT.DGO",
// "DGO/ICTRTT.DGO",
// "DGO/ICX.DGO",
// "DGO/ICY.DGO",
// "DGO/IPX.DGO",
// "DGO/IPY.DGO",
// "DGO/JAKCRED.DGO",
// "DGO/JAKLEV.DGO",
// "DGO/JAKVL.DGO",
// "DGO/JGA.DGO",
// "DGO/JGB.DGO",
// "DGO/JGC.DGO",
// "DGO/JGD.DGO",
// "DGO/JGE.DGO",
// "DGO/JGF.DGO",
// "DGO/JGG.DGO",
// "DGO/JGX.DGO",
// "DGO/JGY.DGO",
// "DGO/JKALEV.DGO",
// "DGO/JKBLEV.DGO",
// "DGO/JKCLEV.DGO",
// "DGO/JUNGFOOT.DGO",
// "DGO/JUNGLES.DGO",
// "DGO/JUNGLETT.DGO",
// "DGO/JUNGLEW.DGO",
// "DGO/JUNGTBOX.DGO",
// "DGO/JUNGTRN.DGO",
// "DGO/KAELEV.DGO",
// "DGO/KCR.DGO",
// "DGO/KCROSART.DGO",
// "DGO/KCROSCTF.DGO",
// "DGO/KCROSSS.DGO",
// "DGO/KCRSCLCT.DGO",
// "DGO/KCRSPLOW.DGO",
// "DGO/KCRX.DGO",
// "DGO/KEICRED.DGO",
// "DGO/KIELEV.DGO",
// "DGO/KIEVL.DGO",
// "DGO/KLECRED.DGO",
// "DGO/KLELEV.DGO",
// "DGO/KLEVL.DGO",
// "DGO/KLEVL2.DGO",
// "DGO/KRA.DGO",
// "DGO/KRASFOOT.DGO",
// "DGO/KRASS.DGO",
// "DGO/KRASTBOX.DGO",
// "DGO/KRASTRN.DGO",
// "DGO/KRASTT.DGO",
// "DGO/KRASW.DGO",
// "DGO/KRATFOOT.DGO",
// "DGO/KRATOURS.DGO",
// "DGO/KRATOURW.DGO",
// "DGO/KRATTBOX.DGO",
// "DGO/KRB.DGO",
// "DGO/KRC.DGO",
// "DGO/KRTRTT.DGO",
// "DGO/KRX.DGO",
// "DGO/KRY.DGO",
// "DGO/LEOPL.DGO",
// "DGO/MENU2.DGO",
// "DGO/MENUMAP.DGO",
// "DGO/MONGL.DGO",
// "DGO/OSMLEV.DGO",
// "DGO/PANTL.DGO",
// "DGO/PEAKFOOT.DGO",
// "DGO/PEAKS.DGO",
// "DGO/PEAKTBOX.DGO",
// "DGO/PEAKTT.DGO",
// "DGO/PEAKW.DGO",
// "DGO/PECCRED.DGO",
// "DGO/PECLEV.DGO",
// "DGO/PECVL.DGO",
// "DGO/PKA.DGO",
// "DGO/PKB.DGO",
// "DGO/PKC.DGO",
// "DGO/PKD.DGO",
// "DGO/PKE.DGO",
// "DGO/PKX.DGO",
// "DGO/POSSL.DGO",
// "DGO/RACEWEAP.DGO",
// "DGO/RATLEV.DGO",
// "DGO/RAYCRED.DGO",
// "DGO/RAYLEV.DGO",
// "DGO/RAYVL.DGO",
// "DGO/RAYVL2.DGO",
// "DGO/RAZCRED.DGO",
// "DGO/RAZLEV.DGO",
// "DGO/RAZVL.DGO",
// "DGO/RTH.DGO",
// "DGO/RUSTYH.DGO",
// "DGO/S2A.DGO",
// "DGO/S3A.DGO",
// "DGO/SBWLCTF.DGO",
// "DGO/SEWERS.DGO",
// "DGO/SEWERTT.DGO",
// "DGO/SEWERW.DGO",
// "DGO/SEWFOOT.DGO",
// "DGO/SEWTBOX.DGO",
// "DGO/SIGCRED.DGO",
// "DGO/SIGLEV.DGO",
// "DGO/SIGVL.DGO",
// "DGO/SIGVL2.DGO",
// "DGO/SIGVL3.DGO",
// "DGO/SNAKL.DGO",
// "DGO/SNO.DGO",
// "DGO/SNOBART.DGO",
// "DGO/SNOBOWLS.DGO",
// "DGO/SNOWFOOT.DGO",
// "DGO/SNOWS.DGO",
// "DGO/SNOWTBOX.DGO",
// "DGO/SNOWTRN2.DGO",
// "DGO/SNOWTT.DGO",
// "DGO/SNOX.DGO",
// "DGO/SNW.DGO",
// "DGO/SNWX.DGO",
// "DGO/SPA.DGO",
// "DGO/SPARFOOT.DGO",
// "DGO/SPARGUSS.DGO",
// "DGO/SPARGUSW.DGO",
// "DGO/SPARTEMS.DGO",
// "DGO/SPARTEMW.DGO",
// "DGO/SPARTT.DGO",
// "DGO/SPATFOOT.DGO",
// "DGO/SPATOURS.DGO",
// "DGO/SPATOURW.DGO",
// "DGO/SPATTBOX.DGO",
// "DGO/SPB.DGO",
// "DGO/SPC.DGO",
// "DGO/SPD.DGO",
// "DGO/SPE.DGO",
// "DGO/SPRGSTBX.DGO",
// "DGO/SPTMFOOT.DGO",
// "DGO/SPTMTBOX.DGO",
// "DGO/SPTMTT.DGO",
// "DGO/SPTRTT.DGO",
// "DGO/SPX.DGO",
// "DGO/SPY.DGO",
// "DGO/STX.DGO",
// "DGO/STY.DGO",
// "DGO/SWA.DGO",
// "DGO/SWB.DGO",
// "DGO/SWC.DGO",
// "DGO/SWD.DGO",
// "DGO/SWE.DGO",
// "DGO/SWF.DGO",
// "DGO/SWX.DGO",
// "DGO/TARLEV.DGO",
// "DGO/TEMPFOOT.DGO",
// "DGO/TEMPLES.DGO",
// "DGO/TEMPLETT.DGO",
// "DGO/TEMPLEW.DGO",
// "DGO/TEMPTBOX.DGO",
// "DGO/THACRED.DGO",
// "DGO/THALEV.DGO",
// "DGO/THAVL.DGO",
// "DGO/THAVL2.DGO",
// "DGO/THAVL3.DGO",
// "DGO/THBCRED.DGO",
// "DGO/THBLEV.DGO",
// "DGO/THBVL.DGO",
// "DGO/THBVL2.DGO",
// "DGO/THBVL3.DGO",
// "DGO/THCCRED.DGO",
// "DGO/THCLEV.DGO",
// "DGO/THCVL.DGO",
// "DGO/THCVL2.DGO",
// "DGO/THCVL3.DGO",
// "DGO/TIGEL.DGO",
// "DGO/TOADL.DGO",
// "DGO/TORCRED.DGO",
// "DGO/TORLEV.DGO",
// "DGO/TORVL.DGO",
// "DGO/TORVL2.DGO",
// "DGO/TORVL3.DGO",
// "DGO/TPA.DGO",
// "DGO/TPB.DGO",
// "DGO/TPC.DGO",
// "DGO/TPD.DGO",
// "DGO/TPE.DGO",
// "DGO/TPX.DGO",
// "DGO/TPY.DGO",
// "DGO/TURTL.DGO",
// "DGO/UR8CRED.DGO",
// "DGO/UR8LEV.DGO",
// "DGO/UR8VL.DGO",
// "DGO/UR8VL2.DGO",
// "DGO/UR8VL3.DGO",
// "DGO/WOLFL.DGO",
// "DGO/WOMBL.DGO",
// "DGO/XIMLEV.DGO"
],
"levels_to_extract": [],
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+15
View File
@@ -195,6 +195,12 @@ int run_decompilation_process(decompiler::Config config,
}
if (config.dump_part_group_table) {
if (!config.process_part_group_table || !config.decompile_code) {
lg::error(
"[DUMP] 'dump_part_group_table' set without setting 'process_part_group_table' or "
"'decompile_code'");
}
lg::info("[DUMP] Dumping part group table");
db.dump_part_group_table(out_folder, config.part_group_table);
}
@@ -243,6 +249,11 @@ int run_decompilation_process(decompiler::Config config,
lg::info("[Mem] After spool handling: {} MB", get_peak_rss() / (1024 * 1024));
TextureDB tex_db;
if (config.dump_tex_info && (!config.process_tpages && config.levels_extract)) {
lg::error(
"[DUMP] 'dump_tex_info' set without also setting 'process_tpages' or 'levels_extract'");
return 1;
}
if (config.process_tpages || config.levels_extract) {
auto textures_out = out_folder / "textures";
auto dump_out = out_folder / "import";
@@ -254,6 +265,10 @@ int run_decompilation_process(decompiler::Config config,
tex_db.generate_texture_dest_adjustment_table());
}
if (config.dump_tex_info) {
if (!config.write_tpage_imports) {
lg::error("[DUMP] 'dump_tex_info' set without setting 'write_tpage_imports'");
return 1;
}
auto texture_file_name = out_folder / "dump" / "tex-info.min.json";
nlohmann::json texture_json = db.dts.textures;
file_util::create_dir_if_needed_for_file(texture_file_name);
@@ -0,0 +1,693 @@
# Reduces work and tries to maintain consistency by placing objects in the same folder
# as they were in the previous game.
jak2_files = None
jak3_files = None
import json
with open('../../../goal_src/jak2/build/all_objs.json', 'r') as f:
jak2_files = json.load(f)
with open('../../../goal_src/jak3/build/all_objs.json', 'r') as f:
jak3_files = json.load(f)
num_replicated = 0
num_left = 0
engine_files = {
"profile": "util",
"texture-anim": "gfx/texture",
"capture": "util",
"text-id": "ui",
"camera-defs": "camera",
"minimap": "ui",
"bigmap": "ui",
"blit-displays": "gfx",
"region": "level",
"traffic": "ai",
"gui": "ui",
"ambient": "ambient",
"speech": "sound",
"lightning": "gfx/generic/lightning",
"penetrate": "game",
"script": "util",
"scene": "scene",
"process-focusable": "process-drawable",
"focus": "process-drawable",
"collide-hash": "spatial-hash",
"chain-physics": "physics",
"projectile": "game",
"find-nearest": "collide",
"simple-sprite": "gfx/sprite",
"nav-mesh": "nav",
"nav-control": "nav",
"spatial-hash": "spatial-hash",
"actor-hash": "spatial-hash",
"joint-mod": "anim",
"wind-work": "gfx",
"sprite-glow": "gfx/sprite",
"history": "debug",
"emerc-vu1": "gfx/foreground/merc",
"emerc": "gfx/foreground/merc",
"warp": "gfx",
"texture-anim-funcs": "gfx/texture",
"texture-anim-tables": "gfx/texture",
"font-data": "data",
"etie-vu1": "gfx/tie",
"etie-near-vu1": "gfx/tie",
"game-task": "game/task",
"mood-tables": "gfx/mood",
"mood-tables2": "gfx/mood",
"mood-funcs": "gfx/mood",
"mood-funcs2": "gfx/mood",
"mood": "gfx/mood",
"sky-data": "gfx/sky",
"load-state": "load",
"fma-sphere": "anim",
"carry": "game",
"pilot": "game",
"board": "target/board",
"darkjak": "target",
"collide-reaction-target": "target",
"gun-part": "target/gun",
"debug-part": "debug",
"task-arrow": "game/task",
"target-anim": "target",
"target-swim": "target",
"target-carry": "target",
"target-darkjak": "target",
"target-gun": "target",
"target-pilot": "target",
"pilot-states": "target",
"gun-util": "target/gun",
"gun-blue-shot": "target/gun",
"gun-yellow-shot": "target/gun",
"gun-red-shot": "target/gun",
"gun-dark-shot": "target/gun",
"gun-states": "target/gun",
"board-util": "target/board",
"target-board": "target/board",
"board-part": "target/board",
"board-states": "target/board",
"mech": "game",
"simple-nav-sphere": "process-drawable",
"process-taskable": "process-drawable",
"gun": "target/gun",
"collide-debug": "collide",
"bigmap-data": "ui",
"editable": "debug",
"editable-player": "debug",
"mysql-nav-graph": "debug/nav",
"nav-graph-editor": "debug/nav",
"sampler": "debug",
"weather-part": "gfx/mood",
"time-of-day": "gfx/mood",
"path": "geometry",
"progress": "ui/progress",
"sparticle": "gfx/sprite/particles",
"sparticle-launcher": "gfx/sprite/particles",
"video": "gfx/hw",
"target-tube": "target",
"texture-upload": "gfx/texture",
"texture-finish": "gfx/texture",
"vu1-user-h": "gfx",
"math-camera": "gfx",
"decomp": "load",
"texture": "gfx/texture",
"shadow-cpu": "gfx/foreground",
"shadow-vu1": "gfx/foreground",
"bones": "gfx/foreground",
"eye": "gfx/foreground",
"foreground": "gfx/foreground",
"debug-foreground": "gfx/foreground",
"ripple": "gfx/foreground",
"res": "entity",
"pat": "collide",
"wind": "gfx/background",
"wind-work": "gfx/background",
"prototype": "gfx/background",
"process-drawable": "process-drawable",
"simple-focus": "process-drawable",
"bsp": "level",
"idle-control": "game",
"joint-exploder": "anim",
"background": "gfx/background",
"subdivide": "gfx/background",
"water": "common-obs",
"enemy": "ai",
"water-flow": "common-obs",
"generic-obs": "common-obs",
"voicebox": "common-obs",
"projectile": "common-obs",
"water-anim": "common-obs",
"blocking-plane": "common-obs",
"dark-eco-pool": "common-obs",
"collectables-part": "common-obs",
"crates": "common-obs",
"collectables": "common-obs",
"powerups": "common-obs",
"los-control": "collide",
"carry": "target/mech",
"mech": "target/mech",
"nav-enemy": "nav",
"base-plat": "common-obs",
"plat": "common-obs",
"basebutton": "common-obs",
"bouncer": "common-obs",
"conveyor": "common-obs",
"elevator": "common-obs",
"rigid-body-plat": "common-obs",
"rigid-body": "physics",
"rigid-body-queue": "physics",
"lightjak": "target",
"lightjak-wings": "target",
"target-lightjak": "target",
"target-ladder": "target",
"target-launch": "target",
"target-invisible": "target",
"target-flut": "target/flut",
"indax-h": "target/indax",
"target-indax": "target/indax",
"target-indax-hang": "target/indax",
"ragdoll": "physics",
"cloth": "physics",
"nav-engine": "nav",
"light-trails": "gfx/sprite/particles",
"lightning-new": "gfx/generic/lightning",
"hfrag": "gfx/background/hfrag",
"hfrag-h": "gfx/background/hfrag",
"hfrag-vu1": "gfx/background/hfrag",
"hfrag-vu1-h": "gfx/background/hfrag",
"hfrag-common": "gfx/background/hfrag",
"hfrag-work": "gfx/background/hfrag",
"hfrag-texture-anim": "gfx/background/hfrag",
"bug-report": "debug",
"visvol-edit": "debug",
"collision-editor": "debug",
"nav-mesh-editor-h": "debug",
"nav-mesh-editor": "debug",
"matrix-compose": "common-obs",
"cloth-art-h": "common-obs",
"prim-h": "common-obs",
"water-info-h": "common-obs",
"prim": "common-obs",
"curves": "common-obs",
"prim-beam-h": "common-obs",
"particle-curves": "common-obs",
"water-part": "common-obs",
"gem-pool": "common-obs",
"vent": "common-obs",
"secrets-menu": "common-obs",
"speech-manager": "common-obs",
"dir-tpages": "common-obs",
"airlock": "common-obs",
"proc-focusable-spawner": "common-obs",
"enemy-states": "common-obs",
"scene-actor": "common-obs",
"warp-gate": "common-obs",
"guard-projectile": "common-obs",
"metalhead-projectile": "common-obs",
"enemy-part": "common-obs",
"ragdoll-test": "common-obs",
"debris": "common-obs",
"shield-sphere": "common-obs"
}
path_overrides = {
"trail": "levels/city/common",
"tomb-baby-spider": "levels/temple",
"tomb-baby-spider-ag": "levels/temple",
"mhcity-obs": "levels/mhcity",
"mhcity-obs2": "levels/mhcity",
"mhcity-part": "levels/mhcity",
"race-control": "levels/common/race",
"rhino-ag": "levels/desert/wvehicle",
"mantis": "levels/common/enemy",
"mantis-ag": "levels/common/enemy",
"roboguard": "levels/common/enemy",
"roboguard-ag": "levels/common/enemy",
"ladder": "levels/common-obs",
"ladder-ag": "levels/common-obs",
"desert-dust-storm": "levels/desert",
"des-bush": "levels/desert",
"des-bush-part": "levels/desert",
"des-burning-bush": "levels/desert",
"jump-pad": "levels/sewer",
"robo-hover": "levels/common/enemy/hover",
"kg-grunt": "levels/common/enemy",
"spydroid-orig": "levels/common/enemy",
"cty-borrow-manager-h": "levels/city/common",
"cty-faction-h": "levels/city/common",
"tentacle": "levels/desert",
"tentacle-ag": "levels/desert",
"external-player-control": "levels/common",
"forestb-vis": "levels/forest",
"transport-ag": "levels/forest",
"cty-homing-missile-ag": "levels/city/hijack",
"predator": "levels/city/destroy-grid",
"predator-ag": "levels/city/destroy-grid",
"neo-wasp": "levels/common/enemy/darkprec",
"neo-wasp-part": "levels/common/enemy/darkprec",
"neo-wasp-ag": "levels/common/enemy/darkprec",
"neo-wasp-b-ag": "levels/common/enemy/darkprec",
"pecker-ingame": "levels/comb/pecker",
"pecker-ingame-ag": "levels/comb/pecker",
"battle-amulet-ag": "levels/wascity",
"prebot-eco-creature": "levels/common/enemy",
"bombbot-bomb-ag": "levels/city/bombbot",
"jakc-highres-ag": "levels/borrow/jak",
"king-highres-ag": "levels/borrow/damas",
"daxter-highres-ag": "levels/borrow/daxter",
"vin-effect-ag": "levels/borrow/jak-daxter-vin",
"spotlight-ag": "levels/comb",
"sew-fan-ag": "levels/sewer",
"sew-jump-pad-ag": "levels/sewer",
"sew-floor-switch-ag": "levels/sewer",
"monk-ag": "levels/wascity/leaper",
"errol-lowres-ag": "levels/factory",
"eco-crystal-light-ag": "levels/common",
"lfac-hanger-door-ag": "levels/factory",
"errol-effect-ag": "levels/desert/hover",
"jak-pilot-wcar+0-ag": "engine/target",
"monster-frog": "levels/mine",
"monster-frog-ag": "levels/mine",
"stadiumb-vis": "levels/stadium",
"conveyor": "levels/factory",
"flut": "engine/target/flut",
"flut-part": "engine/target/flut",
"flut-racer": "engine/target/flut",
"jak-flut+0-ag": "engine/target/flut",
"jak-tube+0-ag": "engine/target",
"jak-pole+0-ag": "engine/target",
"jak-turret+0-ag": "engine/target",
"warp-gate-ag": "levels/temple",
"ctymark-obs": "levels/wascity",
"brutter-highres-ag": "levels/museum",
"crocadog-highres-ag": "levels/museum",
"baron-highres-ag": "levels/museum",
"errol-highres-ag": "levels/museum",
"kid-highres-ag": "levels/museum",
"kor-highres-ag": "levels/museum",
"youngsamos-highres-ag": "levels/museum",
"pecker-highres-ag": "levels/museum",
"tess-highres-ag": "levels/museum",
"torn-highres-ag": "levels/museum",
"ashelin-highres-ag": "levels/museum",
"jak-highres-ag": "levels/museum",
"keira-highres-ag": "levels/museum",
"onin-highres-ag": "levels/museum",
"sig-highres-ag": "levels/museum",
"kid-ag": "levels/stadium",
"crimson-guard-ag": "levels/city",
"samos-highres-ag": "levels/museum",
"crimson-guard-highres-ag": "levels/intro",
"lerrol": "levels/borrow/errol",
"darkjak-highres-ag": "levels/mhcity",
"wascity-burning-bush-ag": "levels/wascity",
"fort-entry-gate-ag": "levels/gungame",
"palmpilot-b-ag": "levels/city",
"0credits-tx": "levels/title",
"1credits-tx": "levels/title",
"2credits-tx": "levels/title",
"3credits-tx": "levels/title",
"4credits-tx": "levels/title",
"5credits-tx": "levels/title",
"6credits-tx": "levels/title",
"7credits-tx": "levels/title",
"8credits-tx": "levels/title",
"9credits-tx": "levels/title",
"10credits-tx": "levels/title",
"credits-h": "levels/title",
"rub-rhino-door-ag": "levels/stadium",
"rub-tower-ag": "levels/stadium",
"ottsel-dummy-ag": "levels/museum",
"babak-ag": "levels/museum",
"precur-warp-effect-ag": "levels/precursor",
"pre-artifact-a-ag": "levels/desert/artifact-race",
"gauntlets-ag": "levels/desert/artifact-race",
"jak-ladder+0-ag": "engine/target",
"ctycrate-ag": "levels/city/common",
"neo-satellite-break-ag": "levels/wascity",
"jinx-highres-ag": "levels/city/hiphog",
"blue-gun-mod-three-ag": "levels/city/destroy-grid",
"jakc-scarf-ag": "levels/desert",
"krimson-wall-ag": "levels/city/industrial",
"precursor-ship-ag": "levels/outro",
"kg-grunt-ag": "levels/common/enemy",
"krimson-wall-break-ag": "levels/city/port/attack",
"des-burning-bush-ag": "levels/desert/bbush",
"precur-door-a-ag": "levels/precursor",
"precur-swingpole-pop-ag": "levels/precursor",
"jakc-wings-ag": "levels/temple",
"dark-maker-idol-ag": "levels/temple",
"urn-a-ag": "levels/temple",
"urn-b-ag": "levels/temple",
"urn-c-ag": "levels/temple",
"flamer-lava-ag": "levels/volcano",
"light-eco-vent-ag": "levels/common",
"grunt-ag": "levels/common/enemy",
"gekko-ag": "levels/mine",
"manta-ag": "levels/mine",
"kg-debris-ag": "levels/city",
"eco-crystal-dark-ag": "levels/desert/rescue",
"wlander-male-ag": "levels/desert/rescue",
"robo-hover-ag": "levels/sewer",
"cty-door-ag": "levels/city/slums",
"egg-spider-ag": "levels/nest",
"tpl-elevator-ag": "levels/temple",
"spydroid-orig-ag": "levels/factory",
"kg-flying-turret-ag": "levels/city/blow-tower",
"jak-pilot-gun+0-ag": "engine/target",
"jak-indax+0-ag": "engine/target/indax",
"kg-hopper-ag": "levels/sewer",
"mhcity-de-tower-egg-ag": "levels/mhcity",
"kleever-highres-ag": "levels/borrow/kleiver",
"veger-highres-ag": "levels/borrow/veger",
"cav-eco-lg-ag": "levels/mine",
"errol-ag": "levels/borrow/errol",
"kg-pickup-ag": "levels/city/hijack",
"snake-wheel-fma-ag": "levels/borrow/snake_wheels",
"comb-rail-rider-ag": "levels/comb",
"rhino-wheel-fma-ag": "levels/stadium",
"seem-highres-ag": "levels/borrow/seem",
"city-flitter-ag": "levels/common/enemy",
"terraformer-head-ag": "levels/desert/boss",
"jak-pilot-hcar+0-ag": "engine/target",
"rapid-gunner": "levels/stadium",
"spydroid": "levels/common/enemy",
"credits": "levels/title",
"ragdoll-edit": "engine/physics",
"manipulator": "engine/debug"
}
# i can be smarter than this...i swear....refactor eventually!
def level_name(file_meta):
dgos = file_meta[3]
# Handle files unique to one level
if dgos == ["DESA"] or dgos == ["DESB"] or dgos == ["DESC"] or dgos == ["DESD"] or dgos == ["DESE"] or dgos == ["DESF"] or dgos == ["DESG"] or dgos == ["DESH"] or dgos == ["DST"] or dgos == ["DESD", "WIN"] or dgos == ["LWASBBV"] or dgos == ["HGA", "WIN", "DST"] or dgos == ["LDESGCST"] or dgos == ["LWLANDM"] or dgos == ["WARPCAST"]:
return "levels/desert"
elif dgos == ["DESRACE2", "DESJUMP", "DESOASIS", "DESRESCG", "DESRACE1", "DESRALLY", "DESTRACK", "DESINTER", "DESCHASE"] or dgos == ["DESRACE2", "DESOASIS", "DESRESCG", "DESRACE1", "DESRALLY", "DESTRACK", "DESINTER", "DESCHASE"] or dgos == ["DESINTER"]:
return "levels/desert"
elif dgos == ["LBBRING1"] or dgos == ["LBBRING2"] or dgos == ["LBBRING3"] or dgos == ["LBBRING4"] or dgos == ["LBBRING5"] or dgos == ["LBBRING6"] or dgos == ["LBBSPID"] or dgos == ["LBBSPIRT"] or dgos == ["LBBSPRT2"] or dgos == ["LBBSPRT3"]:
return "levels/desert/bbush"
elif dgos == ["DESRALLY"] or dgos == ["DESTRACK"] or dgos == ["DESRALLY", "DESTRACK"]:
return "levels/desert/race"
elif dgos == ["DESLIZ"]:
return "levels/desert/lizard"
elif dgos == ["DESBOSS1"] or dgos == ["DESBOSS2"] or dgos == ["DESW"] or dgos == ["DESERROL"] or dgos == ["DESBCST"] or dgos == ["DESW", "DESBOSS1", "DESBOSS2"] or dgos == ["DESBOSS1", "PRECD"] or dgos == ["DESW", "DESBOSS1"]:
return "levels/desert/boss"
elif dgos == ["DESHOVER"] or dgos == ["DESBATTL"] or dgos == ["DESBATTL", "DESHOVER"] or dgos == ["DESHUNT"]:
return "levels/desert/hover"
elif dgos == ["DESRACE1"] or dgos == ["DESRACE2"] or dgos == ["DESRACE2", "DESRACE1"]:
return "levels/desert/artifact-race"
elif dgos == ["DESRESC"] or dgos == ["DESRESCG"] or dgos == ["DESRESCC"] or dgos == ["DESRESC", "RUBA"]:
return "levels/desert/rescue"
elif dgos == ["DESJUMP"] or dgos == ["DESCHASE"] or dgos == ["DESJUMP", "DESCHASE"] or dgos == ["DESOASIS", "WASSTADC", "DESCHASE"]:
return "levels/desert/chase"
elif dgos == ["DESOASIS"] or dgos == ["OASISCST"] or dgos == ["OASISCST", "WSD"] or dgos == ["OASISCST", "TEMA", "RBCT", "COMBA"]:
return "levels/desert/oasis"
elif dgos == ["LPATK", "LFACCAR", "WASALL"]:
return "levels/desert/wvehicle"
elif dgos == ["NSA"] or dgos == ["NSB"] or dgos == ["LNSTOA"] or dgos == ["LNSTOBB"] or dgos == ["LNSTCST"] or dgos == ["NSA", "LFORP", "LBBSPID"] or dgos == ["LNSTOBC"]:
return "levels/nest"
elif dgos == ["LBBTCHA1"] or dgos == ["LBBTCHA2"] or dgos == ["LBBTCHA3"] or dgos == ["LBBTCHA3", "LBBTCHA2", "LBBTCHA1"] or dgos == ["LBBSDRP1"] or dgos == ["LBBSDRP2"] or dgos == ["LBBSDRP3"]:
return "levels/wascity/bbush"
elif dgos == ["WASALL"] or dgos == ["WWD"] or dgos == ["WCA"] or dgos == ["WCASEEM"] or dgos == ["WCB"] or dgos == ["DESRESC", "WWD", "CWI"] or dgos == ["WCB", "WCA", "WASCHASE"] or dgos == ["WSD", "WCA"] or dgos == ["WSD", "DESB"] or dgos == ["WCB", "WCA"] or dgos == ["WASSEEM"] or dgos == ["WASCAST"]:
return "levels/wascity"
elif dgos == ["WASPALA"]:
return "levels/wascity/palace"
elif dgos == ["WIN"]:
return "levels/wascity/intro"
elif dgos == ["WASSTADA"] or dgos == ["WASSTADB"] or dgos == ["WASSTADC"] or dgos == ["WASSTADC", "DESRACE1"] or dgos == ["LWASSIG"] or dgos == ["ARENACST"] or dgos == ["LWSTDPCK"] or dgos == ["WASSTADA", "WASSTADC", "WASSTADB"]:
return "levels/wascity/wasstadium"
elif dgos == ["WASLEAPR"] or dgos == ['WWD', 'DESLIZ', 'VOCA']:
return "levels/wascity/leaper"
elif dgos == ["WASCHASE"]:
return "levels/wascity/chase"
elif dgos == ["WSD"]:
return "levels/wascity/doors"
elif dgos == ["WASPGAME"] or dgos == ["WASDEFEN"]:
return "levels/wascity/defend"
elif dgos == ["TEMA"] or dgos == ["TEMB"] or dgos == ["TEMC"] or dgos == ["TEMD"] or dgos == ["TEMX"] or dgos == ["TEMA", "TEMB"] or dgos == ["TEMPLEE"]:
return "levels/temple"
elif dgos == ["TEMA", "DESW", "TEMD", "HALFPIPE", "LPTRL", "TEMB"]:
return "levels/temple"
elif dgos == ["HGA"] or dgos == ["HGB"] or dgos == ["HGA", "VOCX"]:
return "levels/glider"
elif dgos == ["VOCA"] or dgos == ["VOCX"] or dgos == ["VOCX", "TEMX"]:
return "levels/volcano"
elif dgos == ["FACTORYA"] or dgos == ["FACB"] or dgos == ["FACC"] or dgos == ["FACD"] or dgos == ["LFACCITY"] or dgos == ["LFACB"] or dgos == ["LFACTORY"] or dgos == ["LFACRM1"] or dgos == ["LFACRM2"] or dgos == ["LFACB", "LFACCITY"] or dgos == ["FACC", "FACTORYA"] or dgos == ["LFACO"]:
return "levels/factory"
elif dgos == ["HGA", "CWI", "LFACTORY"] or dgos == ["LFACCAR"]:
return "levels/factory/car"
elif dgos == ["PRECA"] or dgos == ["PRECB"] or dgos == ["PRECC"] or dgos == ["PRECD"] or dgos == ["PRECB", "PRECA"] or dgos == ["PRECA", "PRECD"] or dgos == ["LPRECC"] or dgos == ["PRECD", "FRSTA"] or dgos == ["LPRENME"] or dgos == ["LPRENME", "PRECD"] or dgos == ["LPRENME", "TOWB", "LFORM", "FACD", "LPATK", "TOWERA"]:
return "levels/precursor"
elif dgos == ["COMBA"] or dgos == ["COMBB"] or dgos == ["COMBC"] or dgos == ["COMBD"] or dgos == ["COMBE"] or dgos == ["COMBN"] or dgos == ["COMBX"]:
return "levels/comb"
elif dgos == ["RAILA"] or dgos == ["RAILB"] or dgos == ["RAILC"] or dgos == ["RAILD"] or dgos == ["RAILE"] or dgos == ["RAILF"] or dgos == ["RAILX"] or dgos == ["RAILA", "COMBA"] or dgos == ["RAILB2"] or dgos == ["RAILCST"]:
return "levels/comb"
elif dgos == ["SEA"] or dgos == ["SEB"] or dgos == ["SEC"] or dgos == ["SED"] or dgos == ["SEE"] or dgos == ["SEF"] or dgos == ["SEG"] or dgos == ["SEH"] or dgos == ["SEI"] or dgos == ["SEJ"] or dgos == ["SEK"] or dgos == ["SEL"] or dgos == ["SEM"] or dgos == ["SEN"] or dgos == ["SEO"] or dgos == ["SEO", "SEL"] or dgos == ["SEK", "SEF"] or dgos == ["SEH", "SEG"]:
return "levels/sewer"
elif dgos == ["MIA"] or dgos == ["MIB"] or dgos == ["MIC"] or dgos == ["MINED"] or dgos == ["MINEE"] or dgos == ["MIA", "COMBN"] or dgos == ["MIA", "MIB", "MINED"]:
return "levels/mine"
elif dgos == ["LMECH"]:
return "engine/target/mech"
elif dgos == ["CITYCAST"] or dgos == ["LCITYSML"]:
return "levels/city"
elif dgos == ["LCTYHIJK"]:
return "levels/city/hijack"
elif dgos == ["LCTYPROT"] or dgos == ["LCTYPALT"] or dgos == ["CTYPESA"] or dgos == ["CTYPESB"] or dgos == ["CTYPESC"] or dgos == ["CTYPEPA"] or dgos == ["CTYPEPB"]or dgos == ["CTYPEPC"]:
return "levels/city/protect"
elif dgos == ["LCTYBLOW"] or dgos == ["LBLOWCST"] or dgos == ["LBLOWTMH"] or dgos == ["LBLOWTKG"]:
return "levels/city/blow-tower"
elif dgos == ["LJINX"] or dgos == ["GRIDCST"]:
return "levels/city/destroy-grid"
elif dgos == ["FREEHQ"] or dgos == ["FREECAST"] or dgos == ["LFREEOUT"]:
return "levels/city/freehq"
elif dgos == ["LCTYSNPR"]:
return "levels/city/sniper"
elif dgos == ["VIN"] or dgos == ["POWERGD"] or dgos == ["LVINCST"] or dgos == ["LVINCST", "POWERGD"]:
return "levels/city/vinroom"
elif dgos == ["LCTYPATK"] or dgos == ["LPATKCS"]:
return "levels/city/port/attack"
elif dgos == ["LCTYASS"]:
return "levels/city/assault"
elif dgos == ["CWI"] or dgos == ["PAC", "CWI"] or dgos == ["LWIDEA"] or dgos == ["LWIDEB"] or dgos == ["LWIDEB", "LWIDEA"] or dgos == ["LWIDEC"] or dgos == ["LWIDEC", "LWIDEA"] or dgos == ["LWIDEB", "LWIDEC", "LWIDEA"]:
return "levels/city/common"
elif dgos == ["CTYCARA"] or dgos == ["CTYCARB"] or dgos == ["CTYCARC"] or dgos == ["CTYCARKG"]:
return "levels/city/vehicle"
elif dgos == ["CTA"] or dgos == ["CTB"] or dgos == ["CTC"] or dgos == ["SLUMBSET"]:
return "levels/city/slums"
elif dgos == ["CPA"]:
return "levels/city/palace"
elif dgos == ["CIA"] or dgos == ["CIB"]:
return "levels/city/industrial"
elif dgos == ["CPO"] or dgos == ["PORTWALL"]:
return "levels/city/port"
elif dgos == ["CFB"] or dgos == ["CFA"] or dgos == ["CFB", "CFA"]:
return "levels/city/farm"
elif dgos == ["CGB"] or dgos == ["CGA"] or dgos == ["CGC"]:
return "levels/city/generic"
elif dgos == ["LTOWCITY"]:
return "levels/city/palace"
elif dgos == ["HHG"] or dgos == ["LTNJXHIP"] or dgos == ["LTNFXHIP"]:
return "levels/hiphog"
elif dgos == ["ONINTENT"] or dgos == ["LTENTOB"] or dgos == ["LTENTOUT"]:
return "levels/city/onintent"
elif dgos == ["LBOMBBOT"]:
return "levels/city/bombbot"
elif dgos == ["MHCA"] or dgos == ["MHCB"] or dgos == ["MHCB", "MHCA"] or dgos == ["MHCB", "LCTYDEST", "MHCA"] or dgos == ["LCTYDEST"] or dgos == ["LMHCA"] or dgos == ["LMHCB"] or dgos == ["MHCTYCST"]:
return "levels/mhcity"
elif dgos == ["TOWERA"] or dgos == ["TOWB"] or dgos == ["TOWERC"] or dgos == ["LTOWA"] or dgos == ["LTOWB"] or dgos == ["TOWERCST"] or dgos == ["LTOWA", "TOWB"] or dgos == ["LTOWA", "TOWB", "TOWERCST"]:
return "levels/tower"
elif dgos == ["FRSTA"] or dgos == ["FRSTB"] or dgos == ["FRSTX"] or dgos == ["LFORM"] or dgos == ["LFORP"] or dgos == ["LFORRING"]:
return "levels/forest"
elif dgos == ["STA"] or dgos == ["STAA"] or dgos == ["STB"] or dgos == ["RUBA"] or dgos == ["RUBA2"] or dgos == ["RUBB"] or dgos == ["RUBC"] or dgos == ["RBCT"] or dgos == ["LPATK"] or dgos == ["LPTRL"] or dgos == ["RUBB", "RUBA2"]:
return "levels/stadium"
elif dgos == ["GGA"] or dgos == ["GUNGAME1"] or dgos == ["GUNGAME2"] or dgos == ["LGUNRNC"] or dgos == ["LGUNNORM"]:
return "levels/gungame"
elif dgos == ["TITLE"] or dgos == ["INTTITLE"]:
return "levels/title"
elif dgos == ["IPF"] or dgos == ["INTROCST"] or dgos == ["INTPALRF"]:
return "levels/intro"
elif dgos == ["OUTROCST"] or dgos == ["LOUTRO"] or dgos == ["LOUTRO2"] or dgos == ["LOUTRO3"] or dgos == ["OUTCAST3"] or dgos == ["LOUTRO3", "LONINSIM"] or dgos == ["TEMP"]:
return "levels/outro"
elif dgos == ["MUSEUM"] or dgos == ["MUSEUM2"] or dgos == ["MUSEUM2", "LOUTRO2"] or dgos == ["MUSEUM2", "LOUTRO", "RAILCST"] or dgos == ["MUSEUM3"] or dgos == ["MUSEUM3B"] or dgos == ["MUSEUM4"] or dgos == ["MUSEUM4B"]:
return "levels/museum"
elif dgos == ["HALFPIPE"]:
return "levels/test/halfpipe"
elif dgos == ["ART", "GAME"] or dgos == ["ART"] or dgos == ["GAME"]:
return "levels/common"
elif dgos == ["HGA", "LPATK", "RAILA", "LFACCAR", "CWI", "WASALL", "LFACTORY", "COMBA"]:
return "levels/common/hvehicle"
elif dgos == ["TEMA", "LFORM", "FACD", "LBIPED", "LPATK", "TOWERA", "PRECA"] or dgos == ["TEMA", "CTYPESA", "PRECB", "LFORM", "FACD", "LBIPED", "LPATK", "TOWERA", "PRECA"]:
return "levels/common/enemy/darkprec"
elif dgos == ["LBIPED"]:
return "levels/common/enemy/darkprec"
elif dgos == ["LONINSIM"]:
return "levels/borrow/onin-simple"
elif dgos == ["LKEIRA"]:
return "levels/borrow/keira"
elif dgos == ["LSAMOS"]:
return "levels/borrow/samos"
elif dgos == ["LTORN"]:
return "levels/borrow/torn"
elif dgos == ["LTORNSAM"]:
return "levels/borrow/torn-samos"
elif dgos == ["LSEEMWCA"]:
return "levels/borrow/seem"
elif dgos == ["LKLEEVER"]:
return "levels/borrow/kleiver"
elif dgos == ["LTORNJNX"]:
return "levels/borrow/torn-jinx"
elif dgos == ["LJAK"] or dgos == ["LJAKC"] or dgos == ["LJKFEET"]:
return "levels/borrow/jak"
elif dgos == ["LJAKNDAX"]:
return "levels/borrow/jak-daxter"
elif dgos == ["LJAKCKLV"] or dgos == ["LJAKKLEV"]:
return "levels/borrow/jak-kleiver"
elif dgos == ["LJKDMPK"]:
return "levels/borrow/jak-damas-pecker"
elif dgos == ["LJKCDMKL"]:
return "levels/borrow/jak-damas-kleiver"
elif dgos == ["LJKDXVIN"]:
return "levels/borrow/jak-daxter-vin"
elif dgos == ["LJNDKLEV"]:
return "levels/borrow/jak-daxter-kleiver"
elif dgos == ["LDAX"]:
return "levels/borrow/daxter"
elif dgos == ["LASHELIN"]:
return "levels/borrow/ashelin"
elif dgos == ["LDAMKLEV"]:
return "levels/borrow/damas-kleiver"
elif dgos == ["LDAMPECK"] or dgos == ["LDMPCKGN"]:
return "levels/borrow/damas-pecker"
elif dgos == ["LDAMPKSM"]:
return "levels/borrow/damas-pecker-samos"
elif dgos == ["LDAMSIG"]:
return "levels/borrow/damas-sig"
elif dgos == ["LSIG"]:
return "levels/borrow/sig"
elif dgos == ["LSIGKLV"]:
return "levels/borrow/sig-kleiver"
elif dgos == ["LJAKSIG"] or dgos == ["LSIGJAKC"]:
return "levels/borrow/jak-sig"
elif dgos == ["LJKDMPK"]:
return "levels/borrow/jak-damas-pecker"
elif dgos == ["LTRNJNX"]:
return "levels/borrow/torn-jinx"
elif dgos == ["LTRTWHLS"]:
return "levels/borrow/turtle-wheels"
elif dgos == ["LSNKWHLS"]:
return "levels/borrow/snake-wheels"
elif dgos == ["GAME", "COMMON"]:
return "levels/common"
remaining_dgos = {}
folders = {}
for jak3_file in jak3_files:
if jak3_file[3] == ["NO-XGO"]:
num_replicated = num_replicated + 1
continue
# manual overrides
if jak3_file[0] in path_overrides or jak3_file[0].removesuffix("-h") in path_overrides:
num_replicated = num_replicated + 1
if jak3_file[0] in path_overrides:
jak3_file[4] = path_overrides[jak3_file[0]]
else:
jak3_file[4] = path_overrides[jak3_file[0].removesuffix("-h")]
if jak3_file[4] not in folders:
folders[jak3_file[4]] = 1
else:
folders[jak3_file[4]] = folders[jak3_file[4]] + 1
continue
# port over manually specified engine files
if jak3_file[0] in engine_files or jak3_file[0].removesuffix("-h") in engine_files:
num_replicated = num_replicated + 1
if jak3_file[0] in engine_files:
jak3_file[4] = str.format("engine/{}", engine_files[jak3_file[0]])
else:
jak3_file[4] = str.format("engine/{}", engine_files[jak3_file[0].removesuffix("-h")])
if jak3_file[4] not in folders:
folders[jak3_file[4]] = 1
else:
folders[jak3_file[4]] = folders[jak3_file[4]] + 1
continue
# attempt to find the object with the same name in jak 2
jak2_path = None
if not jak3_file[0].startswith("tpage"):
for jak2_file in jak2_files:
if jak2_file[0] == jak3_file[0]:
jak2_path = jak2_file[4]
if (jak2_path.startswith("levels")):
print("{} - {}".format(jak2_path, jak3_file[0]))
break
if jak2_path is not None:
jak3_file[4] = jak2_path
num_replicated = num_replicated + 1
elif level_name(jak3_file):
jak3_file[4] = level_name(jak3_file)
num_replicated = num_replicated + 1
else:
num_left = num_left + 1
if ",".join(jak3_file[3]) in remaining_dgos:
remaining_dgos[",".join(jak3_file[3])] = remaining_dgos[",".join(jak3_file[3])] + 1
else:
remaining_dgos[",".join(jak3_file[3])] = 1
if jak3_file[4] not in folders:
folders[jak3_file[4]] = 1
else:
folders[jak3_file[4]] = folders[jak3_file[4]] + 1
with open('../../../goal_src/jak3/build/all_objs_TMP.json', 'w') as json_file:
# Calculate these to make the file as compact as possible
longest_name = 0
longest_name_in_dgo = 0
for jak3_file in jak3_files:
if len(jak3_file[0]) > longest_name:
longest_name = len(jak3_file[0])
if len(jak3_file[1]) > longest_name_in_dgo:
longest_name_in_dgo = len(jak3_file[1])
# Actually write things out
json_file.write("[\n")
i = 0
for jak3_file in jak3_files:
name = '{: <{}}'.format("\"{}\",".format(jak3_file[0]), longest_name + 2)
name_in_dgo = '{: <{}}'.format("\"{}\",".format(jak3_file[1]), longest_name_in_dgo + 2)
dgo_set = "["
for dgo in jak3_file[3]:
dgo_set += "\"{}\", ".format(dgo)
dgo_set = dgo_set.removesuffix(", ")
dgo_set += "]"
if i == (len(jak3_files) - 1):
json_file.write("[{}{}{}, {}, \"{}\"]\n".format(name, name_in_dgo, jak3_file[2], dgo_set, jak3_file[4]))
else:
json_file.write("[{}{}{}, {}, \"{}\"],\n".format(name, name_in_dgo, jak3_file[2], dgo_set, jak3_file[4]))
i = i + 1
json_file.write("]\n")
print("Mapped: {} and Left: {}".format(num_replicated, num_left))
limit = 0
for dgo_set in dict(sorted(remaining_dgos.items(), reverse=True, key=lambda item: item[1])):
dgo_set_nice = ""
for dgo in dgo_set.split(","):
dgo_set_nice += "\"{}\", ".format(dgo)
dgo_set_nice = dgo_set_nice.removesuffix(", ")
print("or dgos == [{}]: {}".format(dgo_set_nice, remaining_dgos[dgo_set]))
if limit > 100:
break
limit = limit + 1
print(len(remaining_dgos))
print("Folder | Number of Files")
for folder in dict(sorted(folders.items(), reverse=True, key=lambda item: item[1])):
print("{}: {}".format(folder, folders[folder]))
if limit > 100:
break
limit = limit + 1
@@ -0,0 +1,43 @@
#!/usr/bin/env python3
import argparse
import os
from pathlib import Path
import json
file_list = None
with open('../../../goal_src/jak3/build/all_objs.json', 'r') as f:
file_list = json.load(f)
def dgo_names_string(names):
result = ""
for x in names:
result += x + ", "
result = result[:-2]
return result
def is_code_file(name, dgos):
return not name.endswith("-ag") and not name.endswith("-vis") and not name.startswith("tpage-") and not name.endswith("COMMON") and not dgos[0].lower() == name and not name.endswith("-tx")
def make_file(root, path, name, name_in_dgo, dgos, version):
if is_code_file(name, dgos):
filename = name + ".gc"
text = """;;-*-Lisp-*-
(in-package goal)
;; name: {}
;; name in dgo: {}
;; dgos: {}
;; DECOMP BEGINS
""".format(filename, name_in_dgo, dgo_names_string(dgos))
Path(os.path.join(root, path)).mkdir(parents=True, exist_ok=True)
with open(os.path.join(root, path, filename), "w") as f:
f.write(text)
# print("make_file {}/{}/{} {} {}".format(root, path, filename, name_in_dgo, dgos))
for x in file_list:
make_file("../../../goal_src/jak3", x[4], x[0], x[1], x[3], x[2])