From 213f3bad20cb42336cbb6e41bde254b7f769c64c Mon Sep 17 00:00:00 2001 From: ManDude <7569514+ManDude@users.noreply.github.com> Date: Tue, 24 Jan 2023 20:22:47 +0000 Subject: [PATCH] Add extended environment mapping option to progress and enable it by default + other bug fixes (#2161) ![image](https://user-images.githubusercontent.com/7569514/214192592-d584e955-9d54-4092-94ee-1cbe12b071e8.png) Note: if you had the option disabled, it will be enabled when you first start the game again. You will have to turn it off again if you want it disabled. Also fixes #2150 and fixes #1738 and fixes #2145 --- .../opengl_renderer/OpenGLRenderer.cpp | 12 ++++++------ game/graphics/opengl_renderer/debug_gui.h | 10 ++++++---- game/graphics/pipelines/opengl.cpp | 4 +++- .../jak1/engine/common-obs/process-taskable.gc | 4 ++-- goal_src/jak1/engine/debug/default-menu.gc | 10 ++-------- goal_src/jak1/engine/debug/menu.gc | 4 ++-- goal_src/jak1/engine/ui/text.gc | 9 ++++++--- goal_src/jak1/levels/misty/sidekick-human.gc | 4 ++++ goal_src/jak1/levels/village1/sage.gc | 2 ++ .../levels/village1/sequence-a-village1.gc | 2 ++ goal_src/jak1/pc/features/speedruns.gc | 2 +- goal_src/jak1/pc/pckernel-h.gc | 18 +++++++++++------- goal_src/jak1/pc/pckernel.gc | 14 +++++++++++--- goal_src/jak1/pc/progress-pc.gc | 8 ++++---- goal_src/jak1/pc/subtitle.gc | 2 +- 15 files changed, 63 insertions(+), 42 deletions(-) diff --git a/game/graphics/opengl_renderer/OpenGLRenderer.cpp b/game/graphics/opengl_renderer/OpenGLRenderer.cpp index 70881c1a46..a7ea0a71be 100644 --- a/game/graphics/opengl_renderer/OpenGLRenderer.cpp +++ b/game/graphics/opengl_renderer/OpenGLRenderer.cpp @@ -585,6 +585,8 @@ void OpenGLRenderer::render(DmaFollower dma, const RenderOptions& settings) { } } + m_last_pmode_alp = settings.pmode_alp_register; + if (settings.draw_render_debug_window) { auto prof = m_profiler.root()->make_scoped_child("render-window"); draw_renderer_selection_window(); @@ -595,18 +597,16 @@ void OpenGLRenderer::render(DmaFollower dma, const RenderOptions& settings) { } } - m_last_pmode_alp = settings.pmode_alp_register; - m_profiler.finish(); - if (settings.draw_profiler_window) { - m_profiler.draw(); - } - // if (m_profiler.root_time() > 0.018) { // fmt::print("Slow frame: {:.2f} ms\n", m_profiler.root_time() * 1000); // fmt::print("{}\n", m_profiler.to_string()); // } + if (settings.draw_profiler_window) { + m_profiler.draw(); + } + if (settings.draw_small_profiler_window) { SmallProfilerStats stats; stats.draw_calls = m_profiler.root()->stats().draw_calls; diff --git a/game/graphics/opengl_renderer/debug_gui.h b/game/graphics/opengl_renderer/debug_gui.h index 967814be18..70761d8693 100644 --- a/game/graphics/opengl_renderer/debug_gui.h +++ b/game/graphics/opengl_renderer/debug_gui.h @@ -42,10 +42,10 @@ class OpenGlDebugGui { void start_frame(); void finish_frame(); void draw(const DmaStats& dma_stats); - bool should_draw_render_debug() const { return m_draw_debug; } - bool should_draw_profiler() const { return m_draw_profiler; } - bool should_draw_subtitle_editor() const { return m_subtitle_editor; } - bool should_draw_filters_menu() const { return m_filters_menu; } + bool should_draw_render_debug() const { return master_enable && m_draw_debug; } + bool should_draw_profiler() const { return master_enable && m_draw_profiler; } + bool should_draw_subtitle_editor() const { return master_enable && m_subtitle_editor; } + bool should_draw_filters_menu() const { return master_enable && m_filters_menu; } const char* screenshot_name() const { return m_screenshot_save_name; } bool should_advance_frame() { return m_frame_timer.should_advance_frame(); } @@ -69,6 +69,8 @@ class OpenGlDebugGui { int screenshot_samples = 16; bool screenshot_hotkey_enabled = true; + bool master_enable = false; + private: FrameTimeRecorder m_frame_timer; bool m_draw_frame_time = false; diff --git a/game/graphics/pipelines/opengl.cpp b/game/graphics/pipelines/opengl.cpp index 5bd2aa192f..6a7cb5e2e5 100644 --- a/game/graphics/pipelines/opengl.cpp +++ b/game/graphics/pipelines/opengl.cpp @@ -501,7 +501,8 @@ void render_game_frame(int game_width, } want_hotkey_screenshot = false; - options.draw_small_profiler_window = g_gfx_data->debug_gui.small_profiler; + options.draw_small_profiler_window = + g_gfx_data->debug_gui.master_enable && g_gfx_data->debug_gui.small_profiler; options.pmode_alp_register = g_gfx_data->pmode_alp; GLint msaa_max; @@ -845,6 +846,7 @@ void GLDisplay::render() { #endif // render game! + g_gfx_data->debug_gui.master_enable = is_imgui_visible(); if (g_gfx_data->debug_gui.should_advance_frame()) { auto p = scoped_prof("game-render"); int game_res_w = Gfx::g_global_settings.game_res_w; diff --git a/goal_src/jak1/engine/common-obs/process-taskable.gc b/goal_src/jak1/engine/common-obs/process-taskable.gc index df879f0833..06dd7f074c 100644 --- a/goal_src/jak1/engine/common-obs/process-taskable.gc +++ b/goal_src/jak1/engine/common-obs/process-taskable.gc @@ -433,11 +433,11 @@ (set! (-> self blend-on-exit) arg0) ) ;; allow cutscene skipping on pc port - ;; save a sort of timestamp just so we know whether it took at least 1 frame + ;; save a sort of timestamp just so we know if it took at least 1 frame (#when PC_PORT (define *play-anim-time* (current-time))) (if (#if PC_PORT - (= (-> *pc-settings* cutscene-skips?) #t) + (= (-> *pc-settings* skip-movies?) #t) (and *debug-segment* *cheat-mode*)) (ja-play-spooled-anim (the-as spool-anim arg1) diff --git a/goal_src/jak1/engine/debug/default-menu.gc b/goal_src/jak1/engine/debug/default-menu.gc index c51df5c6f5..97c1231a50 100644 --- a/goal_src/jak1/engine/debug/default-menu.gc +++ b/goal_src/jak1/engine/debug/default-menu.gc @@ -4675,11 +4675,6 @@ (pc-cheat-toggle-and-tune (-> *pc-settings* cheats) no-tex) ) (pc-cheats? (-> *pc-settings* cheats) no-tex))) - (flag "Boods" #f ,(lambda (arg (msg debug-menu-msg)) - (when (= msg (debug-menu-msg press)) - (pc-cheat-toggle-and-tune (-> *pc-settings* cheats) oh-my-goodness) - ) - (pc-cheats? (-> *pc-settings* cheats) oh-my-goodness))) ;; (flag "Hard rats" #f ,(lambda (arg (msg debug-menu-msg)) ;; (when (= msg (debug-menu-msg press)) ;; (pc-cheat-toggle-and-tune (-> *pc-settings* cheats) hard-rats) @@ -4693,10 +4688,10 @@ ) ) (flag "Letterbox" #f ,(dm-lambda-boolean-flag (-> *pc-settings* letterbox?))) - ;(flag "Skip movies" #f ,(dm-lambda-boolean-flag (-> *pc-settings* skip-movies?))) + (flag "Skip movies" #f ,(dm-lambda-boolean-flag (-> *pc-settings* skip-movies?))) (flag "Money starburst" #f ,(dm-lambda-boolean-flag (-> *pc-settings* money-starburst?))) (flag "Subtitles" #f ,(dm-lambda-boolean-flag (-> *pc-settings* subtitles?))) - ;(flag "Hinttitles" #f ,(dm-lambda-boolean-flag (-> *pc-settings* hinttitles?))) + (flag "Hinttitles" #f ,(dm-lambda-boolean-flag (-> *pc-settings* hinttitles?))) (menu "Subtitle speaker" (flag "Off" #f dm-subtitle-setting) (flag "On" #t dm-subtitle-setting) @@ -4721,7 +4716,6 @@ (flag "br-portuguese" 13 dm-text-language) ) (flag "Discord RPC" #t ,(dm-lambda-boolean-flag (-> *pc-settings* discord-rpc?))) - (flag "Cutscene Skips" #t ,(dm-lambda-boolean-flag (-> *pc-settings* cutscene-skips?))) (flag "Speedrunner Mode" #t ,(dm-lambda-boolean-flag (-> *pc-settings* speedrunner-mode?))) (menu "PS2 settings" ;(flag "PS2 Load speed" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-read-speed?))) diff --git a/goal_src/jak1/engine/debug/menu.gc b/goal_src/jak1/engine/debug/menu.gc index 12b6baa00c..271957f92d 100644 --- a/goal_src/jak1/engine/debug/menu.gc +++ b/goal_src/jak1/engine/debug/menu.gc @@ -203,7 +203,7 @@ (let ((v0-0 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) (set! (-> v0-0 name) name) (set! (-> v0-0 parent) #f) - (set! (-> v0-0 refresh-delay) 23) + (set! (-> v0-0 refresh-delay) (#if PC_PORT 1 23)) (set! (-> v0-0 refresh-ctr) (-> v0-0 refresh-delay)) (set! (-> v0-0 id) (the-as int id)) (set! (-> v0-0 activate-func) func) @@ -373,7 +373,7 @@ (let ((max-chars (/ max-width 8))) (set! (-> gp-0 name) name) (set! (-> gp-0 parent) #f) - (set! (-> gp-0 refresh-delay) 31) + (set! (-> gp-0 refresh-delay) (#if PC_PORT 1 31)) (set! (-> gp-0 refresh-ctr) (-> gp-0 refresh-delay)) (set! (-> gp-0 id) id) (set! max-chars diff --git a/goal_src/jak1/engine/ui/text.gc b/goal_src/jak1/engine/ui/text.gc index b28e0668fa..6f6b803b91 100644 --- a/goal_src/jak1/engine/ui/text.gc +++ b/goal_src/jak1/engine/ui/text.gc @@ -150,9 +150,12 @@ (set! load-status 0) (set! heap-free (&- (-> heap top) (the-as uint (-> heap base)))) ;; english -> UK english in PAL - (if (and (= (scf-get-territory) GAME_TERRITORY_SCEE) (= lang (language-enum english))) - (set! lang (language-enum uk-english)) - ) + ;; PC port note : no longer necessary. + (#unless PC_PORT + (if (and (= (scf-get-territory) GAME_TERRITORY_SCEE) (= lang (language-enum english))) + (set! lang (language-enum uk-english)) + ) + ) ;; only load if we actually need to (when (or (= heap-sym-heap #f) ;; nothing loaded diff --git a/goal_src/jak1/levels/misty/sidekick-human.gc b/goal_src/jak1/levels/misty/sidekick-human.gc index 97bf827da5..4a6b227049 100644 --- a/goal_src/jak1/levels/misty/sidekick-human.gc +++ b/goal_src/jak1/levels/misty/sidekick-human.gc @@ -1491,6 +1491,8 @@ (close-specific-task! (game-task intro) (task-status need-resolution)) (start 'play (get-continue-by-name *game-info* "game-start")) (set-blackout-frames (seconds 0.1)) + (set! (-> *time-of-day-proc* 0 time-ratio) 300.0) + (set! (-> *time-of-day-proc* 0 hour) 7) (return #f) ) ) @@ -1681,6 +1683,8 @@ (close-specific-task! (game-task intro) (task-status need-resolution)) (start 'play (get-continue-by-name *game-info* "game-start")) (set-blackout-frames (seconds 0.1)) + (set! (-> *time-of-day-proc* 0 time-ratio) 300.0) + (set! (-> *time-of-day-proc* 0 hour) 7) (return #f) ) ) diff --git a/goal_src/jak1/levels/village1/sage.gc b/goal_src/jak1/levels/village1/sage.gc index bb371eb984..82a489f90c 100644 --- a/goal_src/jak1/levels/village1/sage.gc +++ b/goal_src/jak1/levels/village1/sage.gc @@ -513,6 +513,8 @@ (close-specific-task! (game-task intro) (task-status need-resolution)) (start 'play (get-continue-by-name *game-info* "game-start")) (set-blackout-frames (seconds 0.1)) + (set! (-> *time-of-day-proc* 0 time-ratio) 300.0) + (set! (-> *time-of-day-proc* 0 hour) 7) (return #f) ) ) diff --git a/goal_src/jak1/levels/village1/sequence-a-village1.gc b/goal_src/jak1/levels/village1/sequence-a-village1.gc index d099f6a5bd..49566d8c47 100644 --- a/goal_src/jak1/levels/village1/sequence-a-village1.gc +++ b/goal_src/jak1/levels/village1/sequence-a-village1.gc @@ -307,6 +307,8 @@ (close-specific-task! (game-task intro) (task-status need-resolution)) (start 'play (get-continue-by-name *game-info* "game-start")) (set-blackout-frames (seconds 0.1)) + (set! (-> *time-of-day-proc* 0 time-ratio) 300.0) + (set! (-> *time-of-day-proc* 0 hour) 7) (if (nonzero? (-> self part)) (kill-and-free-particles (-> self part)) ) diff --git a/goal_src/jak1/pc/features/speedruns.gc b/goal_src/jak1/pc/features/speedruns.gc index 902aad3dd1..a871177baa 100644 --- a/goal_src/jak1/pc/features/speedruns.gc +++ b/goal_src/jak1/pc/features/speedruns.gc @@ -36,6 +36,6 @@ (draw-string-xy (string-format "OpenGOAL Version: ~S ~%Speedrun mode: ~A ~%Cutscene Skips ~A" *pc-settings-built-sha* (-> *pc-settings* speedrunner-mode?) - (-> *pc-settings* cutscene-skips?)) + (-> *pc-settings* skip-movies?)) buf 0 (- 224 (* 8 4)) (font-color flat-yellow) (font-flags shadow kerning)))) (none)) diff --git a/goal_src/jak1/pc/pckernel-h.gc b/goal_src/jak1/pc/pckernel-h.gc index 1a1f6e7a6e..0fb5cd3a55 100644 --- a/goal_src/jak1/pc/pckernel-h.gc +++ b/goal_src/jak1/pc/pckernel-h.gc @@ -38,10 +38,12 @@ (defmacro static-pckernel-version (major minor rev build) `(new 'static 'pckernel-version :major ,major :minor ,minor :revision ,rev :build ,build)) - ;; version: 1.10.2.1 -(defglobalconstant PC_KERNEL_VERSION (static-pckernel-version 1 10 2 1)) + ;; version: 1.10.3.1 +(defglobalconstant PC_KERNEL_VERSION (static-pckernel-version 1 10 3 1)) (defconstant PC_KERNEL_VER_MAJOR (-> PC_KERNEL_VERSION major)) (defconstant PC_KERNEL_VER_MINOR (-> PC_KERNEL_VERSION minor)) +(defconstant PC_KERNEL_VER_REVISION (-> PC_KERNEL_VERSION revision)) +(defconstant PC_KERNEL_VER_BUILD (-> PC_KERNEL_VERSION build)) (defconstant PS2_VOICE_AMOUNT 48) @@ -318,7 +320,6 @@ (discord-rpc? symbol) ;; enable discord rich presence integration (speedrunner-mode? symbol) ;; enable speedrunner mode - (cutscene-skips? symbol) ;; enable cutscene skips (cheats pc-cheats) (cheats-known pc-cheats) @@ -422,7 +423,6 @@ (set! (-> obj aspect-custom-y) 3) (set! (-> obj discord-rpc?) #t) (set! (-> obj speedrunner-mode?) #f) - (set! (-> obj cutscene-skips?) #t) (set! (-> obj window-lock?) #t) (reset-gfx obj) @@ -483,7 +483,7 @@ (set! (-> obj ps2-hints?) #t) (set! (-> obj ps2-lod-dist?) #f) - (set! (-> obj force-envmap?) #f) + (set! (-> obj force-envmap?) #t) (set! (-> obj shrub-dist-mod) 1.0) (set! (-> obj lod-dist-mod) 1.0) (set! (-> obj lod-force-tfrag) 0) @@ -498,11 +498,15 @@ (set! (-> obj force-actors?) #f) (set! (-> obj music-fade?) #f) (set! (-> obj skip-movies?) #t) + (set! (-> obj text-language) (case *jak1-territory* + ((GAME_TERRITORY_SCEE) (pc-subtitle-lang uk-english)) + (else (pc-subtitle-lang english)))) (set! (-> obj subtitles?) *debug-segment*) (set! (-> obj hinttitles?) #t) (set! (-> obj subtitle-speaker?) 'auto) - (set! (-> obj subtitle-language) (pc-subtitle-lang english)) - (set! (-> obj text-language) (pc-subtitle-lang english)) + (set! (-> obj subtitle-language) (case *jak1-territory* + ((GAME_TERRITORY_SCEE) (pc-subtitle-lang uk-english)) + (else (pc-subtitle-lang english)))) (reset-original-camera obj) (set! (-> obj money-starburst?) #f) (set! (-> obj extra-hud?) #f) diff --git a/goal_src/jak1/pc/pckernel.gc b/goal_src/jak1/pc/pckernel.gc index d8e881a153..89c7b9485e 100644 --- a/goal_src/jak1/pc/pckernel.gc +++ b/goal_src/jak1/pc/pckernel.gc @@ -805,7 +805,7 @@ (cond ((and (= (-> version major) PC_KERNEL_VER_MAJOR) (= (-> version minor) PC_KERNEL_VER_MINOR)) - ;; minor difference + ;; minor or no difference ) (else ;; major difference @@ -877,7 +877,7 @@ (("hinttitles?") (set! (-> obj hinttitles?) (file-stream-read-symbol file))) (("discord-rpc?") (set! (-> obj discord-rpc?) (file-stream-read-symbol file))) (("speedrunner-mode?") (set! (-> obj speedrunner-mode?) (file-stream-read-symbol file))) - (("cutscene-skips?") (set! (-> obj cutscene-skips?) (file-stream-read-symbol file))) + (("cutscene-skips?") (file-stream-read-symbol file)) (("first-camera-h-inverted?") (set! (-> obj first-camera-h-inverted?) (file-stream-read-symbol file))) (("first-camera-v-inverted?") (set! (-> obj first-camera-v-inverted?) (file-stream-read-symbol file))) (("third-camera-h-inverted?") (set! (-> obj third-camera-h-inverted?) (file-stream-read-symbol file))) @@ -932,6 +932,15 @@ ) ) ) + ;; upgrade settings if minor changes + ;; remember to delete this when major changes to the version number are made + (when (and (= PC_KERNEL_VER_MAJOR 1) + (= PC_KERNEL_VER_MINOR 10) + (or (!= PC_KERNEL_VER_BUILD (-> version build)) + (!= PC_KERNEL_VER_REVISION (-> version revision)))) + ;; 1.10 upgrade: turn envmap on + (set! (-> obj force-envmap?) #t) + ) ) ) ) @@ -1004,7 +1013,6 @@ (format file " (skip-movies? ~A)~%" (-> obj skip-movies?)) (format file " (discord-rpc? ~A)~%" (-> obj discord-rpc?)) (format file " (speedrunner-mode? ~A)~%" (-> obj speedrunner-mode?)) - (format file " (cutscene-skips? ~A)~%" (-> obj cutscene-skips?)) (format file " (first-camera-h-inverted? ~A)~%" (-> obj first-camera-h-inverted?)) (format file " (first-camera-v-inverted? ~A)~%" (-> obj first-camera-v-inverted?)) (format file " (third-camera-h-inverted? ~A)~%" (-> obj third-camera-h-inverted?)) diff --git a/goal_src/jak1/pc/progress-pc.gc b/goal_src/jak1/pc/progress-pc.gc index 07c7aee93c..ced647a1cc 100644 --- a/goal_src/jak1/pc/progress-pc.gc +++ b/goal_src/jak1/pc/progress-pc.gc @@ -192,7 +192,7 @@ (new 'static 'game-option :option-type (game-option-type lod-bg) :name (game-text-id lod-bg) :scale #t) (new 'static 'game-option :option-type (game-option-type lod-fg) :name (game-text-id lod-fg) :scale #t) (new 'static 'game-option :option-type (game-option-type on-off) :name (game-text-id ps2-parts) :scale #t) - ;(new 'static 'game-option :option-type (game-option-type on-off) :name (game-text-id force-envmap) :scale #t) + (new 'static 'game-option :option-type (game-option-type on-off) :name (game-text-id force-envmap) :scale #t) ;(new 'static 'game-option :option-type (game-option-type on-off) :name (game-text-id force-actors) :scale #t) (new 'static 'game-option :option-type (game-option-type button) :name (game-text-id back) :scale #t) ) @@ -761,7 +761,7 @@ (set! (-> *misc-options* 0 value-to-modify) (&-> *pc-settings* money-starburst?)) (set! (-> *misc-options* 1 value-to-modify) (&-> *pc-settings* discord-rpc?)) - (set! (-> *misc-options* 2 value-to-modify) (&-> *pc-settings* cutscene-skips?)) + (set! (-> *misc-options* 2 value-to-modify) (&-> *pc-settings* skip-movies?)) (set! (-> *misc-options* 3 value-to-modify) (&-> *pc-settings* speedrunner-mode?)) (set! (-> *camera-options* 0 value-to-modify) (&-> *pc-settings* first-camera-h-inverted?)) @@ -774,7 +774,7 @@ (set! (-> *gfx-ps2-options* 0 value-to-modify) (&-> *progress-carousell* int-backup)) (set! (-> *gfx-ps2-options* 1 value-to-modify) (&-> *progress-carousell* int-backup)) (set! (-> *gfx-ps2-options* 2 value-to-modify) (&-> *pc-settings* ps2-parts?)) - ;(set! (-> *gfx-ps2-options* 3 value-to-modify) (&-> *pc-settings* force-envmap?)) + (set! (-> *gfx-ps2-options* 3 value-to-modify) (&-> *pc-settings* force-envmap?)) ;(set! (-> *gfx-ps2-options* 3 value-to-modify) (&-> *pc-settings* force-actors?)) (set! (-> *sound-options-pc* 0 value-to-modify) (&-> *setting-control* default sfx-volume)) @@ -2279,7 +2279,7 @@ ) (((progress-screen gfx-ps2-options)) (hide-progress-icons) - (draw-options self 115 25 0.72) + (draw-options self 115 25 0.67) ) (((progress-screen game-settings)) (hide-progress-icons) diff --git a/goal_src/jak1/pc/subtitle.gc b/goal_src/jak1/pc/subtitle.gc index 6376f60514..a60a22a738 100644 --- a/goal_src/jak1/pc/subtitle.gc +++ b/goal_src/jak1/pc/subtitle.gc @@ -566,7 +566,7 @@ ;; set font settings. (set! (-> self font origin x) (* (- 1.0 (-> *SUBTITLE-bank* width)) 256)) - (set! (-> self font origin y) (* (if (not (movie?)) + (set! (-> self font origin y) (* (if (or (>= (-> *pc-settings* aspect-ratio) ASPECT_16X9) (not (movie?))) (-> *SUBTITLE-bank* hint-height) (-> *SUBTITLE-bank* height) ) 224))