make 60FPS always the default and add frame rate option to settings (#1533)

* fix ogre joints

* "frame rate" menu in options

* dont start game at non-60fps

* clang

* make hint subtitles option do stuff
This commit is contained in:
ManDude 2022-06-24 05:43:57 +01:00 committed by GitHub
parent d76ba83747
commit 6b6c937277
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 53 additions and 15 deletions

View File

@ -1343,6 +1343,9 @@
(8-times #x1054)
(16-times #x1055)
(frame-rate #x1060)
(60fps #x1061)
(100fps #x1062)
(150fps #x1063)
(lod-bg #x1070)
(lod-fg #x1071)
(lod-highest #x1072)

View File

@ -80,8 +80,11 @@
(#x1055 "16X"
"16X")
(#x1060 "FRAME RATE"
"FRAME RATE")
(#x1060 "FRAME RATE (EXPERIMENTAL)"
"FRAME RATE (EXPERIMENTAL)")
(#x1061 "60" "60")
(#x1062 "100" "100")
(#x1063 "150" "150")
(#x1070 "LEVEL OF DETAIL (BACKGROUND)"
"LEVEL OF DETAIL (BACKGROUND)")

View File

@ -2006,7 +2006,7 @@ s32 InitHeapAndSymbol() {
method_set_symbol->value = 0;
// set *boot-video-mode*
intern_from_c("*boot-video-mode*")->value = (u32)BootVideoMode;
intern_from_c("*boot-video-mode*")->value = 0; // (u32)BootVideoMode;
lg::info("Initialized GOAL heap in {:.2} ms", heap_init_timer.getMs());
// load the kernel!

View File

@ -493,6 +493,9 @@
(8-times #x1054)
(16-times #x1055)
(frame-rate #x1060)
(60fps #x1061)
(100fps #x1062)
(150fps #x1063)
(lod-bg #x1070)
(lod-fg #x1071)
(lod-highest #x1072)

View File

@ -133,7 +133,7 @@
(define *game-directory* (get-environment-variable "OPENGOAL_DECOMP_DIR" :default "jak1/"))
(when (user? dass)
(set! *game-directory* "jak1_pal/"))
(set! *game-directory* "jak1_us2/"))
(defmacro copy-texture (tpage-id)
"Copy a texture from the game, using the given tpage ID"

View File

@ -1255,7 +1255,7 @@
;; TODO non U1 v1 compatibility!!
(let ((gp-0 (new 'stack-no-clear 'ogreboss-missile-init-data)))
(let ((s5-0 (new 'stack-no-clear 'vector)))
(set! (-> gp-0 src) (-> self node-list data 52 bone transform vector 3))
(set! (-> gp-0 src) (-> self node-list data (#if *jak1-full-game* 50 52) bone transform vector 3))
(set! (-> gp-0 duration)
(the-as time-frame (the int (* 300.0 (+ 1.25 (* -0.25 (-> self level)) (/ 0.5 (-> self difficulty))))))
)

View File

@ -29,7 +29,7 @@
(defglobalconstant PC_KERNEL_VERSION_BUILD #x0001)
(defglobalconstant PC_KERNEL_VERSION_REVISION #x0005)
(defglobalconstant PC_KERNEL_VERSION_REVISION #x0006)
(defglobalconstant PC_KERNEL_VERSION_MINOR #x0005)
(defglobalconstant PC_KERNEL_VERSION_MAJOR #x0001)

View File

@ -708,6 +708,7 @@
)
(("aspect-auto") (set! (-> obj aspect-ratio-auto?) (file-stream-read-symbol file)))
(("aspect-game") (set! (-> *setting-control* default aspect-ratio) (file-stream-read-symbol file)))
(("video-mode") (set! (-> *setting-control* default video-mode) (file-stream-read-symbol file)))
(("display-mode") (set-display-mode! obj (file-stream-read-symbol file)))
(("letterbox") (set! (-> obj letterbox?) (file-stream-read-symbol file)))
(("vsync") (set! (-> obj vsync?) (file-stream-read-symbol file)))
@ -824,6 +825,7 @@
(format file " (aspect-test ~D ~D)~%" (-> obj aspect-custom-x) (-> obj aspect-custom-y))
(format file " (aspect-auto ~A)~%" (-> obj aspect-ratio-auto?))
(format file " (aspect-game ~A)~%" (-> *setting-control* default aspect-ratio))
(format file " (video-mode ~A)~%" (-> *setting-control* default video-mode))
(format file " (display-mode ~A)~%" (-> obj display-mode))
(format file " (letterbox ~A)~%" (-> obj letterbox?))
(format file " (vsync ~A)~%" (-> obj vsync?))

View File

@ -85,6 +85,7 @@
(def-progress-carousell *carousell-lod-fg* (lod-high lod-low lod-ps2))
(def-progress-carousell *carousell-subtitle-language* (english french german spanish italian japanese))
(def-progress-carousell *carousell-speaker* (speaker-always speaker-never speaker-auto))
(def-progress-carousell *carousell-frame-rate* (60fps 100fps 150fps))
@ -94,7 +95,7 @@
(define *game-options-pc* (new 'static 'boxed-array :type game-option
(new 'static 'game-option :option-type (game-option-type on-off) :name (game-text-id vibrations) :scale #t)
;(new 'static 'game-option :option-type (game-option-type on-off) :name (game-text-id vibrations) :scale #t)
(new 'static 'game-option :option-type (game-option-type on-off) :name (game-text-id play-hints) :scale #t)
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id camera-options) :scale #t :param3 (game-option-menu camera-options))
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id accessibility-options) :scale #t :param3 (game-option-menu accessibility-options))
@ -109,8 +110,8 @@
(new 'static 'game-option :option-type (game-option-type aspect-native) :name (game-text-id ps2-aspect-ratio) :scale #t)
(new 'static 'game-option :option-type (game-option-type aspect-ratio) :name (game-text-id aspect-ratio-ps2) :scale #t)
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id aspect-ratio) :scale #t :param3 (game-option-menu aspect-ratio))
(new 'static 'game-option :option-type (game-option-type msaa) :name (game-text-id msaa) :scale #t)
;(new 'static 'game-option :option-type (game-option-type frame-rate) :name (game-text-id frame-rate) :scale #t)
;(new 'static 'game-option :option-type (game-option-type msaa) :name (game-text-id msaa) :scale #t)
(new 'static 'game-option :option-type (game-option-type frame-rate) :name (game-text-id frame-rate) :scale #t)
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id ps2-options) :scale #t :param3 (game-option-menu gfx-ps2-options))
(new 'static 'game-option :option-type (game-option-type button) :name (game-text-id back) :scale #t)
)
@ -584,11 +585,12 @@
(set! (-> *sound-options* 2 value-to-modify) (&-> *setting-control* default dialog-volume))
(set! (-> *yes-no-options* 0 value-to-modify) (&-> *progress-state* yes-no-choice))
;; our options!
(set! (-> *game-options-pc* 0 value-to-modify) (&-> *setting-control* default vibration))
(set! (-> *game-options-pc* 1 value-to-modify) (&-> *setting-control* default play-hints))
;(set! (-> *game-options-pc* 0 value-to-modify) (&-> *setting-control* default vibration))
(set! (-> *game-options-pc* 0 value-to-modify) (&-> *setting-control* default play-hints))
(set! (-> *graphic-options-pc* 1 value-to-modify) (&-> *progress-carousell* int-backup))
(set! (-> *graphic-options-pc* 2 value-to-modify) (&-> *progress-carousell* aspect-native-choice))
(set! (-> *graphic-options-pc* 3 value-to-modify) (&-> *progress-state* aspect-ratio-choice))
;(set! (-> *graphic-options-pc* 5 value-to-modify) (&-> *progress-carousell* int-backup))
(set! (-> *graphic-options-pc* 5 value-to-modify) (&-> *progress-carousell* int-backup))
(set! (-> *misc-options* 0 value-to-modify) (&-> *pc-settings* discord-rpc?))
(set! (-> *camera-options* 0 value-to-modify) (&-> *pc-settings* first-camera-h-inverted?))
@ -731,6 +733,7 @@
(game-option-type lod-bg)
(game-option-type lod-fg)
(game-option-type speaker)
(game-option-type frame-rate)
)
;; a carousell like language
(if (> (-> (the-as (pointer int) (-> options (-> obj option-index) value-to-modify))) 0)
@ -842,6 +845,7 @@
(game-option-type lod-bg)
(game-option-type lod-fg)
(game-option-type speaker)
(game-option-type frame-rate)
)
;; same thing as before. if at last, go to first. otherwise, keep going forward.
(if (< (-> (the-as (pointer int) (-> options (-> obj option-index) value-to-modify))) (1- (length (-> *progress-carousell* current-carousell))))
@ -1104,6 +1108,13 @@
(('auto) (set! (-> *progress-carousell* int-backup) 2))
)
)
(((game-option-type frame-rate))
(case (-> *setting-control* default video-mode)
(('ntsc 'pal) (set! (-> *progress-carousell* int-backup) 0))
(('100fps) (set! (-> *progress-carousell* int-backup) 1))
(('150fps) (set! (-> *progress-carousell* int-backup) 2))
)
)
)
(sound-play "select-option")
(cpad-clear! 0 x)
@ -1127,6 +1138,7 @@
(((game-option-type lod-bg)) (set! (-> *progress-carousell* current-carousell) *carousell-lod-bg*))
(((game-option-type lod-fg)) (set! (-> *progress-carousell* current-carousell) *carousell-lod-bg*))
(((game-option-type speaker)) (set! (-> *progress-carousell* current-carousell) *carousell-speaker*))
(((game-option-type frame-rate)) (set! (-> *progress-carousell* current-carousell) *carousell-frame-rate*))
(((game-option-type language-subtitles))
(set! (-> *progress-carousell* current-carousell) *carousell-subtitle-language*)
(set! (-> *progress-carousell* selection) (the int (-> (the-as (pointer pc-subtitle-lang) (-> options (-> obj option-index) value-to-modify)))))
@ -1197,6 +1209,14 @@
((2) (set! (-> *pc-settings* subtitle-speaker?) 'auto))
)
)
(((game-option-type frame-rate))
(case (-> *progress-carousell* int-backup)
((0) (set! (-> *setting-control* default video-mode) 'ntsc))
((1) (set! (-> *setting-control* default video-mode) '100fps))
((2) (set! (-> *setting-control* default video-mode) '150fps))
)
(set-video-mode (-> *setting-control* default video-mode))
)
)
)
)
@ -1554,6 +1574,7 @@
(game-option-type lod-bg)
(game-option-type lod-fg)
(game-option-type speaker)
(game-option-type frame-rate)
)
;; crunched down to one generic function.
(progress-draw-carousell-from-string-list (-> *progress-carousell* current-carousell) font y-off (-> (the-as (pointer int) (-> options index value-to-modify))))
@ -1647,6 +1668,7 @@
(game-option-type lod-bg)
(game-option-type lod-fg)
(game-option-type speaker)
(game-option-type frame-rate)
(game-option-type normal-inverted)
)
;; slider and aspect ratio options just show their text

View File

@ -140,7 +140,8 @@
(text-id game-text-id)
(cur-channel pc-subtitle-channel)
(want-subtitle subtitle-keyframe) ;; the subtitle we want to display
(want-subtitle subtitle-keyframe) ;; the subtitle we want to display
(hint-subtitle? symbol)
)
(:methods
@ -522,9 +523,10 @@
)
(defun subtitle? ()
(defun subtitle? ((hinttitles? symbol))
"can a subtitle be displayed right now?"
(and (-> *pc-settings* subtitles?) ;; subtitles enabled
(and (or (and (not hinttitles?) (-> *pc-settings* subtitles?)) ;; subtitles enabled
(and hinttitles? (-> *pc-settings* hinttitles?)))
(or *debug-segment* (= *master-mode* 'game)) ;; current mode is game, OR we are just debugging
(not *progress-process*) ;; no progress open
)
@ -556,6 +558,7 @@
(load-level-subtitle-files 0)
;; reset params
(set! (-> self want-subtitle) (the subtitle-keyframe #f))
(set! (-> self hint-subtitle?) #f)
(set! (-> self spool-name) #f)
(set! (-> self cur-channel) (pc-subtitle-channel invalid))
@ -597,6 +600,7 @@
(case (-> self cur-channel)
(((pc-subtitle-channel movie))
;; cutscenes. get our cutscene.
(set! (-> self hint-subtitle?) #f)
(awhen (get-scene-by-name *subtitle-text* (-> self cur-channel) (-> self spool-name))
;; find out position in the scene.
@ -618,6 +622,7 @@
)
(((pc-subtitle-channel hint) (pc-subtitle-channel hint-named))
;; hint! find it. or else.
(set! (-> self hint-subtitle?) #t)
(awhen (if (= (-> self cur-channel) (pc-subtitle-channel hint-named))
(get-scene-by-name *subtitle-text* (-> self cur-channel) (-> self spool-name))
(get-scene-by-text-id *subtitle-text* (-> self cur-channel) (-> self text-id))
@ -663,7 +668,7 @@
(set-height! (-> self font) (the int (* (-> *SUBTITLE-bank* lines) 11)))
(set-scale! (-> self font) (-> *SUBTITLE-bank* scale))
(when (and (-> self want-subtitle) (subtitle?))
(when (and (-> self want-subtitle) (subtitle? (-> self hint-subtitle?)))
;; we got a valid subtitle! render it.
(hide-bottom-hud)
(print-game-subtitle (subtitle-format self (-> self want-subtitle)) (-> self font) #f 128 22)