diff --git a/decompiler/config/jak2/all-types.gc b/decompiler/config/jak2/all-types.gc index dd617b8ebe..d2ffd2f2b8 100644 --- a/decompiler/config/jak2/all-types.gc +++ b/decompiler/config/jak2/all-types.gc @@ -21327,7 +21327,7 @@ :flag-assert #xb00000034 (:methods (draw (_type_ dma-buffer level) none 9) - (hud-sprite-method-10 (_type_) none 10) + (hud-sprite-method-10 (_type_ dma-buffer level int int int int) object 10) ) ) diff --git a/decompiler/config/jak2/jak2_config.jsonc b/decompiler/config/jak2/jak2_config.jsonc index 59e17d5e06..7164c1c7eb 100644 --- a/decompiler/config/jak2/jak2_config.jsonc +++ b/decompiler/config/jak2/jak2_config.jsonc @@ -134,11 +134,28 @@ "game_name": "jak2_pal", "expected_elf_name": "SCES_516.08", "is_pal": true, - "type_casts_merge_file": "decompiler/config/jak2/pal/type_casts.jsonc", - "label_types_merge_file": "decompiler/config/jak2/pal/label_types.jsonc", - "hacks_merge_file": "decompiler/config/jak2/pal/hacks.jsonc", "obj_file_name_map_file": "goal_src/jak2/build/all_objs.json", "object_patches": {} + }, + "ntsc_v2": { + "game_name": "jak2_us2", + "label_types_merge_file": "decompiler/config/jak2/ntsc_v2/label_types.jsonc", + "anonymous_function_types_merge_file": "decompiler/config/jak2/ntsc_v2/anonymous_function_types.jsonc", + "obj_file_name_map_file": "goal_src/jak2/build/all_objs.json", + "object_patches": {} + }, + "jp": { + "game_name": "jak2_jp", + "expected_elf_name": "SCPS_150.57", + "label_types_merge_file": "decompiler/config/jak2/jp/label_types.jsonc", + "anonymous_function_types_merge_file": "decompiler/config/jak2/ntsc_v2/anonymous_function_types.jsonc", + "object_patches": {} + }, + "ko": { + "game_name": "jak2_ko", + "expected_elf_name": "SCKA_200.10", + "anonymous_function_types_merge_file": "decompiler/config/jak2/ko/anonymous_function_types.jsonc", + "object_patches": {} } } } diff --git a/decompiler/config/jak2/jp/label_types.jsonc b/decompiler/config/jak2/jp/label_types.jsonc new file mode 100644 index 0000000000..2643975361 --- /dev/null +++ b/decompiler/config/jak2/jp/label_types.jsonc @@ -0,0 +1,39 @@ +{ + "progress": [ + ["L880", "uint64", true], + ["L881", "uint64", true], + ["L882", "uint64", true], + ["L883", "uint64", true], + ["L884", "uint64", true], + ["L885", "uint64", true], + ["L886", "uint64", true], + ["L887", "uint64", true], + ["L888", "uint64", true], + ["L889", "uint64", true], + ["L890", "uint64", true], + ["L891", "uint64", true], + ["L892", "uint64", true], + ["L893", "uint64", true], + ["L894", "uint64", true], + ["L954", "uint64", true], + ["L955", "uint64", true] + ], + "stadium-obs": [ + ["L679", "uint64", true], + ["L680", "uint64", true], + ["L681", "uint64", true], + ["L682", "uint64", true], + ["L683", "uint64", true], + ["L684", "uint64", true], + ["L685", "uint64", true], + ["L686", "uint64", true], + ["L578", "uint64", true], + ["L577", "uint64", true], + ["L576", "uint64", true], + ["L575", "uint64", true], + ["L574", "uint64", true], + ["L573", "uint64", true], + ["L461", "attack-info"], + ["L459", "attack-info"] + ] +} diff --git a/decompiler/config/jak2/ko/anonymous_function_types.jsonc b/decompiler/config/jak2/ko/anonymous_function_types.jsonc new file mode 100644 index 0000000000..1532ced8af --- /dev/null +++ b/decompiler/config/jak2/ko/anonymous_function_types.jsonc @@ -0,0 +1,5 @@ +{ + "hud": [ + [14, "(function object :behavior hud)"] + ] +} \ No newline at end of file diff --git a/decompiler/config/jak2/ntsc_v2/anonymous_function_types.jsonc b/decompiler/config/jak2/ntsc_v2/anonymous_function_types.jsonc new file mode 100644 index 0000000000..decef2f8ed --- /dev/null +++ b/decompiler/config/jak2/ntsc_v2/anonymous_function_types.jsonc @@ -0,0 +1,17 @@ +{ + "stadium-obs": [ + [3, "(function none :behavior task-manager)"], + [4, "(function none :behavior task-manager)"], + [5, "(function none :behavior task-manager)"], + [6, "(function none :behavior task-manager)"], + [7, "(function none :behavior task-manager)"], + [8, "(function none :behavior task-manager)"], + [25, "(function none)"], + [62, "(function object nav-control none)"], + [63, "(function object nav-control none)"], + [64, "(function object nav-control none)"], + [65, "(function object nav-control none)"], + [66, "(function object nav-control none)"], + [94, "(function rift-rider vector vector vector float)"] + ] +} diff --git a/decompiler/config/jak2/ntsc_v2/label_types.jsonc b/decompiler/config/jak2/ntsc_v2/label_types.jsonc new file mode 100644 index 0000000000..e8e3274ca1 --- /dev/null +++ b/decompiler/config/jak2/ntsc_v2/label_types.jsonc @@ -0,0 +1,20 @@ +{ + "stadium-obs": [ + ["L679", "uint64", true], + ["L680", "uint64", true], + ["L681", "uint64", true], + ["L682", "uint64", true], + ["L683", "uint64", true], + ["L684", "uint64", true], + ["L685", "uint64", true], + ["L686", "uint64", true], + ["L578", "uint64", true], + ["L577", "uint64", true], + ["L576", "uint64", true], + ["L575", "uint64", true], + ["L574", "uint64", true], + ["L573", "uint64", true], + ["L461", "attack-info"], + ["L459", "attack-info"] + ] +} diff --git a/decompiler/config/jak2/pal/hacks.jsonc b/decompiler/config/jak2/pal/hacks.jsonc deleted file mode 100644 index 0967ef424b..0000000000 --- a/decompiler/config/jak2/pal/hacks.jsonc +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/decompiler/config/jak2/pal/label_types.jsonc b/decompiler/config/jak2/pal/label_types.jsonc index 0967ef424b..531397cec8 100644 --- a/decompiler/config/jak2/pal/label_types.jsonc +++ b/decompiler/config/jak2/pal/label_types.jsonc @@ -1 +1,21 @@ -{} +{ + "progress": [ + ["L880", "uint64", true], + ["L881", "uint64", true], + ["L882", "uint64", true], + ["L883", "uint64", true], + ["L884", "uint64", true], + ["L885", "uint64", true], + ["L886", "uint64", true], + ["L887", "uint64", true], + ["L888", "uint64", true], + ["L889", "uint64", true], + ["L890", "uint64", true], + ["L891", "uint64", true], + ["L892", "uint64", true], + ["L893", "uint64", true], + ["L894", "uint64", true], + ["L954", "uint64", true], + ["L955", "uint64", true] + ] +} diff --git a/decompiler/config/jak2/pal/type_casts.jsonc b/decompiler/config/jak2/pal/type_casts.jsonc deleted file mode 100644 index 0967ef424b..0000000000 --- a/decompiler/config/jak2/pal/type_casts.jsonc +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/game/graphics/opengl_renderer/OpenGLRenderer.cpp b/game/graphics/opengl_renderer/OpenGLRenderer.cpp index ce28997648..969d6f2e0a 100644 --- a/game/graphics/opengl_renderer/OpenGLRenderer.cpp +++ b/game/graphics/opengl_renderer/OpenGLRenderer.cpp @@ -122,6 +122,9 @@ void OpenGLRenderer::init_bucket_renderers_jak2() { init_bucket_renderer( fmt::format("merc-l{}-tfrag", i), BucketCategory::MERC, GET_BUCKET_ID_FOR_LIST(BucketId::MERC_L0_TFRAG, BucketId::MERC_L1_TFRAG, i)); + init_bucket_renderer( + fmt::format("gmerc-l{}-tfrag", i), BucketCategory::MERC, + GET_BUCKET_ID_FOR_LIST(BucketId::GMERC_L0_TFRAG, BucketId::GMERC_L1_TFRAG, i)); init_bucket_renderer( fmt::format("tex-l{}-shrub", i), BucketCategory::TEX, @@ -132,6 +135,9 @@ void OpenGLRenderer::init_bucket_renderers_jak2() { init_bucket_renderer( fmt::format("merc-l{}-shrub", i), BucketCategory::MERC, GET_BUCKET_ID_FOR_LIST(BucketId::MERC_L0_SHRUB, BucketId::MERC_L1_SHRUB, i)); + init_bucket_renderer( + fmt::format("gmerc-l{}-shrub", i), BucketCategory::MERC, + GET_BUCKET_ID_FOR_LIST(BucketId::GMERC_L0_SHRUB, BucketId::GMERC_L1_SHRUB, i)); init_bucket_renderer( fmt::format("tex-l{}-alpha", i), BucketCategory::TEX, @@ -151,6 +157,9 @@ void OpenGLRenderer::init_bucket_renderers_jak2() { init_bucket_renderer( fmt::format("merc-l{}-alpha", i), BucketCategory::MERC, GET_BUCKET_ID_FOR_LIST(BucketId::MERC_L0_ALPHA, BucketId::MERC_L1_ALPHA, i)); + init_bucket_renderer( + fmt::format("gmerc-l{}-alpha", i), BucketCategory::GENERIC, + GET_BUCKET_ID_FOR_LIST(BucketId::GMERC_L0_ALPHA, BucketId::GMERC_L1_ALPHA, i)); init_bucket_renderer( fmt::format("tex-l{}-pris", i), BucketCategory::TEX, @@ -168,6 +177,9 @@ void OpenGLRenderer::init_bucket_renderers_jak2() { init_bucket_renderer( fmt::format("merc-l{}-pris2", i), BucketCategory::MERC, GET_BUCKET_ID_FOR_LIST(BucketId::MERC_L0_PRIS2, BucketId::MERC_L1_PRIS2, i)); + init_bucket_renderer( + fmt::format("gmerc-l{}-pris2", i), BucketCategory::GENERIC, + GET_BUCKET_ID_FOR_LIST(BucketId::GMERC_L0_PRIS2, BucketId::GMERC_L1_PRIS2, i)); init_bucket_renderer( fmt::format("tex-l{}-water", i), BucketCategory::TEX, diff --git a/goal_src/jak2/engine/ui/hud-h.gc b/goal_src/jak2/engine/ui/hud-h.gc index 3608000613..ead24a275a 100644 --- a/goal_src/jak2/engine/ui/hud-h.gc +++ b/goal_src/jak2/engine/ui/hud-h.gc @@ -56,7 +56,7 @@ :flag-assert #xb00000034 (:methods (draw (_type_ dma-buffer level) none 9) - (hud-sprite-method-10 (_type_) none 10) + (hud-sprite-method-10 (_type_ dma-buffer level int int int int) object 10) ) ) diff --git a/goal_src/jak2/engine/ui/hud.gc b/goal_src/jak2/engine/ui/hud.gc index a8b76ba655..751554e777 100644 --- a/goal_src/jak2/engine/ui/hud.gc +++ b/goal_src/jak2/engine/ui/hud.gc @@ -910,8 +910,9 @@ ) (defmethod alloc-string-if-needed hud ((obj hud) (arg0 int)) + ;; jp patch here (32 -> 64) (if (not (-> obj strings arg0 text)) - (set! (-> obj strings arg0 text) (new 'process 'string 32 (the-as string #f))) + (set! (-> obj strings arg0 text) (new 'process 'string 64 (the-as string #f))) ) 0 (none) diff --git a/goal_src/jak2/engine/ui/progress/progress.gc b/goal_src/jak2/engine/ui/progress/progress.gc index 0796e76231..3f41d3afac 100644 --- a/goal_src/jak2/engine/ui/progress/progress.gc +++ b/goal_src/jak2/engine/ui/progress/progress.gc @@ -1628,11 +1628,11 @@ (case (-> self next) ;; patched to next instead of current because we save synchronously (('formatting 'format-card) (set-next-state self 'error-formatting 0) - ) - (('creating) + ) ;; jp patch + (('creating 'create-game) (set-next-state self 'error-creating 0) - ) - (('saving 'select-save 'select-save-title 'select-save-title-hero) + ) ;; jp patch + (('saving 'select-save 'select-save-title 'select-save-title-hero 'already-exists) (set-next-state self 'error-saving 0) ) (('loading 'select-load) diff --git a/goal_src/jak2/levels/stadium/stadium-obs.gc b/goal_src/jak2/levels/stadium/stadium-obs.gc index 93fc9388ed..03bcb1032d 100644 --- a/goal_src/jak2/levels/stadium/stadium-obs.gc +++ b/goal_src/jak2/levels/stadium/stadium-obs.gc @@ -3284,6 +3284,17 @@ This commonly includes things such as: ) ) +;; jp patch +(set-subtask-hook! + *game-info* + 236 + 0 + (the-as + (function object) + (lambda :behavior task-manager () (task-close! "stadium-burning-bush-race-board-introduction") (none)) + ) + ) + (set-subtask-hook! *game-info* 236 diff --git a/scripts/batch/decomp-jak2_jp.bat b/scripts/batch/decomp-jak2_jp.bat new file mode 100644 index 0000000000..d5a66148a1 --- /dev/null +++ b/scripts/batch/decomp-jak2_jp.bat @@ -0,0 +1,4 @@ +@echo off +cd ..\.. +out\build\Release\bin\decompiler decompiler\config\jak2\jak2_config.jsonc iso_data\ decompiler_out\ --version jp +pause diff --git a/scripts/batch/decomp-jak2_ko.bat b/scripts/batch/decomp-jak2_ko.bat new file mode 100644 index 0000000000..f67ef12961 --- /dev/null +++ b/scripts/batch/decomp-jak2_ko.bat @@ -0,0 +1,4 @@ +@echo off +cd ..\.. +out\build\Release\bin\decompiler decompiler\config\jak2\jak2_config.jsonc iso_data\ decompiler_out\ --version ko +pause diff --git a/scripts/batch/decomp-jak2_pal.bat b/scripts/batch/decomp-jak2_pal.bat new file mode 100644 index 0000000000..82cbf303d6 --- /dev/null +++ b/scripts/batch/decomp-jak2_pal.bat @@ -0,0 +1,4 @@ +@echo off +cd ..\.. +out\build\Release\bin\decompiler decompiler\config\jak2\jak2_config.jsonc iso_data\ decompiler_out\ --version pal +pause diff --git a/scripts/batch/decomp-jak2_us2.bat b/scripts/batch/decomp-jak2_us2.bat new file mode 100644 index 0000000000..65926fac79 --- /dev/null +++ b/scripts/batch/decomp-jak2_us2.bat @@ -0,0 +1,4 @@ +@echo off +cd ..\.. +out\build\Release\bin\decompiler decompiler\config\jak2\jak2_config.jsonc iso_data\ decompiler_out\ --version ntsc_v2 +pause diff --git a/test/decompiler/reference/jak2/engine/ui/hud-h_REF.gc b/test/decompiler/reference/jak2/engine/ui/hud-h_REF.gc index fc0dc25212..70c9867dd5 100644 --- a/test/decompiler/reference/jak2/engine/ui/hud-h_REF.gc +++ b/test/decompiler/reference/jak2/engine/ui/hud-h_REF.gc @@ -47,7 +47,7 @@ :flag-assert #xb00000034 (:methods (draw (_type_ dma-buffer level) none 9) - (hud-sprite-method-10 (_type_) none 10) + (hud-sprite-method-10 (_type_ dma-buffer level int int int int) object 10) ) )