mirror of
https://github.com/open-goal/jak-project
synced 2026-07-11 15:28:58 -04:00
game: add secrets menu, music player and some more pc settings to the debug menu (#1664)
* add secrets menu, music player and some more pc settings * remove todos * rename string funcs * replace cases * add `game-text-id->string` function, refactor player menu generation * remove process check, `cons` -> `dcons`, `strncpy`
This commit is contained in:
@@ -4480,12 +4480,55 @@
|
||||
)
|
||||
)
|
||||
|
||||
(defun dm-music-player-func ((lst object))
|
||||
(kill-by-name 'dm-player *active-pool*)
|
||||
(set! *progress-flava* -1)
|
||||
(process-spawn-function process :name 'dm-player
|
||||
(lambda :behavior process ((lst pair))
|
||||
(loop
|
||||
(suspend)
|
||||
(set-setting! 'music (the-as symbol (car lst)) 0.0 0)
|
||||
(set! *progress-flava* (the-as int (cdr lst)))
|
||||
)
|
||||
)
|
||||
lst
|
||||
)
|
||||
)
|
||||
|
||||
(defun debug-menu-make-music-player-menu ((ctx debug-menu-context))
|
||||
(let ((music-menu (new 'debug 'debug-menu ctx "Music player menu")))
|
||||
(dotimes (i (-> *music-flava-name-list* length))
|
||||
(let* ((flava-list (-> *music-flava-name-list* i))
|
||||
(level-name (new 'debug 'string 30 (game-text-id->string (-> flava-list 0))))
|
||||
(lvl-menu (new 'debug 'debug-menu ctx (the-as string #f)))
|
||||
)
|
||||
(dotimes (j (-> flava-list length))
|
||||
(let ((flava-name (new 'debug 'string 30 (game-text-id->string (-> flava-list j)))))
|
||||
(when (and (string= (substring! *temp-string* level-name (- (length level-name) 11) (length level-name)) "-level-name") (string= (substring! *temp-string* flava-name (- (length flava-name) 11) (length flava-name)) "-level-name"))
|
||||
(copy-string<-string flava-name (symbol->string (ref *music-list* i)))
|
||||
)
|
||||
(case-str flava-name (("lavatube-level-name") (copy-string<-string flava-name "lavatube")))
|
||||
(unless (string= flava-name "zero")
|
||||
(let ((lst (dcons (ref *music-list* i) j)))
|
||||
(debug-menu-append-item lvl-menu (new 'debug 'debug-menu-item-function flava-name lst (the-as (function object object) dm-music-player-func)))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((menu-name (new 'debug 'string 30 (symbol->string (ref *music-list* i)))))
|
||||
(debug-menu-append-item music-menu (new-dm-submenu menu-name lvl-menu))
|
||||
)
|
||||
)
|
||||
)
|
||||
(debug-menu-append-item music-menu (new-dm-func "Reset" #f (lambda () (kill-by-name 'dm-player *active-pool*) (set! *progress-flava* -1))))
|
||||
(new-dm-submenu "Music player" music-menu)
|
||||
)
|
||||
)
|
||||
|
||||
(when (-> *debug-menu-context* root-menu)
|
||||
(debug-menu-append-item (-> *debug-menu-context* root-menu) (debug-menu-make-load-menu *debug-menu-context*))
|
||||
(debug-menu-append-item (-> *debug-menu-context* root-menu) (debug-menu-make-part-menu *debug-menu-context*))
|
||||
(debug-menu-append-item (-> *debug-menu-context* root-menu) (debug-menu-make-entity-menu *debug-menu-context*))
|
||||
;; Music menu TODO
|
||||
;; Secrets menu TODO
|
||||
;; Scene menu TODO
|
||||
|
||||
(debug-menu-append-item (-> *debug-menu-context* root-menu)
|
||||
@@ -4545,6 +4588,54 @@
|
||||
(function "512 x 448" #f (lambda () (set-size! *pc-settings* 512 448)))
|
||||
(function "512 x 512" #f (lambda () (set-size! *pc-settings* 512 512)))
|
||||
)
|
||||
(menu "Secrets"
|
||||
(menu "PC cheats"
|
||||
(flag "Blue eco" #f (lambda (arg (msg debug-menu-msg))
|
||||
(when (= msg (debug-menu-msg press))
|
||||
(logclear! (-> *pc-settings* cheats) (pc-cheats eco-red eco-yellow eco-green))
|
||||
(pc-cheat-toggle-and-tune *pc-settings* eco-blue)
|
||||
)
|
||||
(pc-cheats? *pc-settings* eco-blue)))
|
||||
(flag "Red eco" #f (lambda (arg (msg debug-menu-msg))
|
||||
(when (= msg (debug-menu-msg press))
|
||||
(logclear! (-> *pc-settings* cheats) (pc-cheats eco-blue eco-yellow eco-green))
|
||||
(pc-cheat-toggle-and-tune *pc-settings* eco-red)
|
||||
)
|
||||
(pc-cheats? *pc-settings* eco-red)))
|
||||
(flag "Green eco" #f (lambda (arg (msg debug-menu-msg))
|
||||
(when (= msg (debug-menu-msg press))
|
||||
(logclear! (-> *pc-settings* cheats) (pc-cheats eco-red eco-yellow eco-blue))
|
||||
(pc-cheat-toggle-and-tune *pc-settings* eco-green)
|
||||
)
|
||||
(pc-cheats? *pc-settings* eco-green)))
|
||||
(flag "Yellow eco" #f (lambda (arg (msg debug-menu-msg))
|
||||
(when (= msg (debug-menu-msg press))
|
||||
(logclear! (-> *pc-settings* cheats) (pc-cheats eco-red eco-blue eco-green))
|
||||
(pc-cheat-toggle-and-tune *pc-settings* eco-yellow)
|
||||
)
|
||||
(pc-cheats? *pc-settings* eco-yellow)))
|
||||
(flag "Invincibility" #f (lambda (arg (msg debug-menu-msg))
|
||||
(when (= msg (debug-menu-msg press))
|
||||
(pc-cheat-toggle-and-tune *pc-settings* invinc)
|
||||
)
|
||||
(pc-cheats? *pc-settings* invinc)))
|
||||
(flag "Blue sidekick" #f (lambda (arg (msg debug-menu-msg))
|
||||
(when (= msg (debug-menu-msg press))
|
||||
(pc-cheat-toggle-and-tune *pc-settings* sidekick-blue)
|
||||
)
|
||||
(pc-cheats? *pc-settings* sidekick-blue)))
|
||||
(flag "All flavas" #f (lambda (arg (msg debug-menu-msg))
|
||||
(when (= msg (debug-menu-msg press))
|
||||
(pc-cheat-toggle-and-tune *pc-settings* tunes)
|
||||
)
|
||||
(pc-cheats? *pc-settings* tunes)))
|
||||
(flag "Real time tod" #f (lambda (arg (msg debug-menu-msg))
|
||||
(when (= msg (debug-menu-msg press))
|
||||
(pc-cheat-toggle-and-tune *pc-settings* sky)
|
||||
)
|
||||
(pc-cheats? *pc-settings* sky)))
|
||||
)
|
||||
)
|
||||
(flag "Letterbox" #f ,(dm-lambda-boolean-flag (-> *pc-settings* letterbox?)))
|
||||
;(flag "Skip movies" #f ,(dm-lambda-boolean-flag (-> *pc-settings* skip-movies?)))
|
||||
(flag "Money starburst" #f ,(dm-lambda-boolean-flag (-> *pc-settings* money-starburst?)))
|
||||
@@ -4585,6 +4676,27 @@
|
||||
(set! (-> *pc-settings* lod-force-actor) 3)
|
||||
))
|
||||
)
|
||||
(menu "Framerate"
|
||||
(flag "60" #f (lambda (arg (msg debug-menu-msg)) (when (= msg (debug-menu-msg press)) (set-frame-rate! *pc-settings* 60))
|
||||
(case (-> *setting-control* default video-mode) (('ntsc 'pal)))))
|
||||
(flag "100" #f (lambda (arg (msg debug-menu-msg)) (when (= msg (debug-menu-msg press)) (set-frame-rate! *pc-settings* 100))
|
||||
(case (-> *setting-control* default video-mode) (('100fps)))))
|
||||
(flag "150" #f (lambda (arg (msg debug-menu-msg)) (when (= msg (debug-menu-msg press)) (set-frame-rate! *pc-settings* 150))
|
||||
(case (-> *setting-control* default video-mode) (('150fps)))))
|
||||
)
|
||||
(menu "MSAA"
|
||||
(flag "Off" #f (lambda (arg (msg debug-menu-msg)) (when (= msg (debug-menu-msg press)) (set! (-> *pc-settings* gfx-msaa) 1))
|
||||
(= (-> *pc-settings* gfx-msaa) 1)))
|
||||
(flag "x2" #f (lambda (arg (msg debug-menu-msg)) (when (= msg (debug-menu-msg press)) (set! (-> *pc-settings* gfx-msaa) 2))
|
||||
(= (-> *pc-settings* gfx-msaa) 2)))
|
||||
(flag "x4" #f (lambda (arg (msg debug-menu-msg)) (when (= msg (debug-menu-msg press)) (set! (-> *pc-settings* gfx-msaa) 4))
|
||||
(= (-> *pc-settings* gfx-msaa) 4)))
|
||||
(flag "x8" #f (lambda (arg (msg debug-menu-msg)) (when (= msg (debug-menu-msg press)) (set! (-> *pc-settings* gfx-msaa) 8))
|
||||
(= (-> *pc-settings* gfx-msaa) 8)))
|
||||
(flag "x16" #f (lambda (arg (msg debug-menu-msg)) (when (= msg (debug-menu-msg press)) (set! (-> *pc-settings* gfx-msaa) 16))
|
||||
(= (-> *pc-settings* gfx-msaa) 16)))
|
||||
)
|
||||
(flag "V-sync" #f ,(dm-lambda-boolean-flag (-> *pc-settings* vsync?)))
|
||||
;(flag "Alt load boundaries" #f ,(dm-lambda-boolean-flag (-> *pc-settings* new-lb?)))
|
||||
(flag "All actors" #f ,(dm-lambda-boolean-flag (-> *pc-settings* force-actors?)))
|
||||
(flag "Display actor counts" #f ,(dm-lambda-boolean-flag (-> *pc-settings* display-actor-counts)))
|
||||
@@ -4660,6 +4772,9 @@
|
||||
(debug-menu-append-item (-> (the debug-menu-item-submenu (car (-> *debug-menu-context* root-menu items))) submenu)
|
||||
(debug-menu-make-anim-tester-x-menu *debug-menu-context*))
|
||||
|
||||
(debug-menu-append-item (-> (the debug-menu-item-submenu (ref (-> (the debug-menu-item-submenu (ref (-> *debug-menu-context* root-menu items) 19)) submenu items) 7)) submenu)
|
||||
(debug-menu-make-music-player-menu *debug-menu-context*))
|
||||
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
@@ -583,3 +583,7 @@
|
||||
(set! *level-text-file-load-flag* #t)
|
||||
(none)
|
||||
)
|
||||
|
||||
(defun-debug game-text-id->string ((text game-text-id))
|
||||
(enum->string game-text-id text)
|
||||
)
|
||||
@@ -47,6 +47,42 @@
|
||||
dst
|
||||
)
|
||||
|
||||
(defun copyn-string<-string ((dst string) (src string) (len int))
|
||||
"Copy len bytes of data from one string to another, like strncpy"
|
||||
(let ((dst-ptr (-> dst data))
|
||||
(src-ptr (-> src data))
|
||||
)
|
||||
(if (<= len (length src))
|
||||
(dotimes (i len)
|
||||
(set! (-> dst-ptr) (-> src-ptr))
|
||||
(&+! dst-ptr 1)
|
||||
(&+! src-ptr 1)
|
||||
)
|
||||
)
|
||||
(set! (-> dst-ptr 0) 0)
|
||||
)
|
||||
dst
|
||||
)
|
||||
|
||||
(defun substring! ((dst string) (src string) (start int) (end int))
|
||||
"Copy the specified substring to dst. Returns an empty string if invalid indices are given."
|
||||
(let ((strlen (length src)))
|
||||
(if (and (< start strlen) (<= end strlen))
|
||||
(let ((start-ptr (-> src data))
|
||||
(dst-ptr (-> dst data))
|
||||
)
|
||||
(dotimes (i (- end start))
|
||||
(set! (-> dst-ptr) (-> start-ptr (+ start i)))
|
||||
(&+! dst-ptr 1)
|
||||
)
|
||||
(set! (-> dst-ptr 0) 0)
|
||||
dst
|
||||
)
|
||||
""
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod new string ((allocation symbol) (type-to-make type) (size int) (other string))
|
||||
"Create a new string of the given size. If other is not #f, copy data from it."
|
||||
(cond
|
||||
|
||||
Reference in New Issue
Block a user