[game] pc port progress menu (#1281)

* fix typo

* more typo

* shorten discord rpc text

* allow expanding enums after the fact (untested)

* make `game_text` work similar to subtitles

* update progress decomp

* update some types + `do-not-decompile` in bitfield

* fixes and fall back to original progress code

* update `progress` decomp with new enums

* update config files

* fix enums and debug menu

* always allocate (but not use) a lot of particles

* small rework to display mode options

* revert resolution/aspect-ratio symbol mess

* begin the override stuff

* make `progress-draw` more readable

* more fixes

* codacy good boy points

* first step overriding code

* finish progress overrides, game options menu fully functional!

* minor fixes

* Update game.gp

* Update sparticle-launcher.gc

* clang

* change camera controls text

* oops

* some cleanup

* derp

* nice job

* implement menu scrolling lol

* make scrollable menus less cramped, fix arrows

* make some carousell things i guess

* add msaa carousell to test

* oops

* Update progress-pc.gc

* make `pc-get-screen-size` (untested)

* resolution menu

* input fixes

* return when selecting resolution

* scroll fixes

* Update progress-pc.gc

* add "fit to screen" button

* bug

* complete resolutions menu

* aspect ratio menu

* subtitles language

* subtitle speaker

* final adjustments

* ref test

* fix tests

* fix ref!

* reduce redundancy a bit

* fix mem leaks?

* save settings on progress exit

* fix init reorder

* remove unused code

* rename goal project-like files to the project extension

* sha display toggle

* aspect ratio settings fixes

* dont store text db's in compiler

* properly save+load native aspect stuff
This commit is contained in:
ManDude
2022-04-11 23:38:54 +01:00
committed by GitHub
parent b408c78698
commit a7eee4fdc9
185 changed files with 6172 additions and 11465 deletions
+142 -366
View File
@@ -1510,432 +1510,207 @@
)
(defmethod draw-options progress ((obj progress) (arg0 int) (arg1 int) (arg2 float))
(local-vars
(sv-112 font-context)
(sv-128 int)
(sv-144 int)
(sv-160 (function _varargs_ object))
(sv-176 string)
(sv-192 string)
(sv-208 string)
(sv-224 (function _varargs_ object))
(sv-240 string)
(sv-256 string)
(sv-272 string)
(sv-288 (function string font-context symbol int int float))
(sv-304 (function _varargs_ object))
(sv-320 (function _varargs_ object))
(sv-336 string)
(sv-352 string)
(sv-368 string)
(sv-384 (function _varargs_ object))
(sv-400 string)
(sv-416 string)
(sv-432 string)
(sv-448 uint)
(sv-464 int)
(sv-480 int)
(sv-496 int)
(sv-512 uint)
(sv-528 (function _varargs_ object))
(sv-544 string)
(sv-560 string)
(sv-576 string)
(sv-592 (function _varargs_ object))
(sv-608 string)
(sv-624 string)
(sv-640 string)
(sv-656 (function _varargs_ object))
(sv-672 string)
(sv-688 string)
(sv-704 string)
(sv-720 (function _varargs_ object))
(sv-736 string)
(sv-752 string)
(sv-768 string)
(sv-784 (function _varargs_ object))
(sv-800 string)
(sv-816 string)
(sv-832 string)
(sv-848 (function _varargs_ object))
(sv-864 string)
(sv-880 string)
(sv-896 string)
(sv-912 string)
)
(let ((s3-0 (-> *options-remap* (-> obj display-state))))
(when s3-0
(let ((s2-1 (- arg0 (/ (* arg1 (length s3-0)) 2)))
(s1-0 0)
(unkx 27)
(unk2 0)
(font (new 'stack 'font-context *font-default-matrix* 0 0 0.0 (font-color default) (font-flags shadow kerning)))
)
27
0
(set! sv-112
(new 'stack 'font-context *font-default-matrix* 0 0 0.0 (font-color default) (font-flags shadow kerning))
)
(let ((v1-11 sv-112))
(set! (-> v1-11 width) (the float 350))
)
(let ((v1-12 sv-112))
(set! (-> v1-12 height) (the float 25))
)
(set! (-> sv-112 flags) (font-flags shadow kerning middle left large))
(set-width! font 350)
(set-height! font 25)
(set! (-> font flags) (font-flags shadow kerning middle left large))
(dotimes (s0-0 (length s3-0))
(set! sv-912 (the-as string #f))
(set! sv-128 27)
(set! sv-144 s2-1)
(let ((option-str (the string #f))
(x-off 27)
(y-off s2-1)
)
(let ((v1-18 (-> s3-0 s0-0 option-type)))
(cond
((= v1-18 7)
(cond
((-> (the-as (pointer uint32) (-> s3-0 s0-0 value-to-modify)))
(set! sv-160 format)
(set! sv-176 (clear *temp-string*))
(set! sv-192 "~30L~S~0L ~S")
(set! sv-208 (lookup-text! *common-text* (game-text-id yes) #f))
(let ((a3-2 (lookup-text! *common-text* (game-text-id no) #f)))
(sv-160 sv-176 sv-192 sv-208 a3-2)
)
(set! sv-912 *temp-string*)
sv-912
)
(else
(set! sv-224 format)
(set! sv-240 (clear *temp-string*))
(set! sv-256 "~0L~S ~30L~S~1L")
(set! sv-272 (lookup-text! *common-text* (game-text-id yes) #f))
(let ((a3-3 (lookup-text! *common-text* (game-text-id no) #f)))
(sv-224 sv-240 sv-256 sv-272 a3-3)
)
(set! sv-912 *temp-string*)
sv-912
((= v1-18 (game-option-type yes-no))
(if (-> (the-as (pointer uint32) (-> s3-0 s0-0 value-to-modify)))
(set! option-str (string-format "~30L~S~0L ~S" (lookup-text! *common-text* (game-text-id yes) #f) (lookup-text! *common-text* (game-text-id no) #f)))
(set! option-str (string-format "~0L~S ~30L~S~1L" (lookup-text! *common-text* (game-text-id yes) #f) (lookup-text! *common-text* (game-text-id no) #f)))
)
)
)
((or (= v1-18 6) (= v1-18 8))
((or (= v1-18 (game-option-type menu)) (= v1-18 (game-option-type button)))
(cond
((nonzero? (-> s3-0 s0-0 name))
(set! sv-912 (lookup-text! *common-text* (-> s3-0 s0-0 name) #f))
sv-912
(set! option-str (lookup-text! *common-text* (-> s3-0 s0-0 name) #f))
)
(else
(set! sv-912 (the-as string #f))
(the-as symbol sv-912)
(set! option-str (the-as string #f))
)
)
)
((and (-> obj selected-option) (= (-> obj option-index) s0-0))
(let ((a0-19 sv-112))
(set! (-> a0-19 color) (font-color default))
)
(set! (-> sv-112 origin x) (the float (- sv-128 (-> obj left-x-offset))))
(set-color! font (font-color default))
(set! (-> font origin x) (the float (- x-off (-> obj left-x-offset))))
(case (-> s3-0 s0-0 option-type)
((3)
(set! (-> sv-112 origin y) (the float (+ s2-1 -20)))
(((game-option-type center-screen))
(set! (-> font origin y) (the float (+ s2-1 -20)))
)
(else
(set! (-> sv-112 origin y) (the float (+ s2-1 -8)))
(set! (-> font origin y) (the float (+ s2-1 -8)))
)
)
(let ((v1-64 sv-112))
(set! (-> v1-64 scale) 0.6)
)
(set! sv-288 print-game-text)
(let ((a0-23 (lookup-text! *common-text* (-> s3-0 s0-0 name) #f))
(a1-11 sv-112)
(a2-10 #f)
(a3-4 128)
(t0-1 22)
)
(sv-288 a0-23 a1-11 a2-10 a3-4 t0-1)
)
(set-scale! font 0.6)
(print-game-text (lookup-text! *common-text* (-> s3-0 s0-0 name) #f) font #f 128 22)
(case (-> s3-0 s0-0 option-type)
((3)
(set! sv-144 (+ s2-1 3))
sv-144
(((game-option-type center-screen))
(set! y-off (+ s2-1 3))
)
(else
(set! sv-144 (+ s2-1 7))
sv-144
(set! y-off (+ s2-1 7))
)
)
(let ((v1-81 (-> s3-0 s0-0 option-type)))
(cond
((zero? v1-81)
(let* ((v1-82 (the-as uint #x8000ffff))
(f0-12 (* 0.01 (-> (the-as (pointer float) (-> s3-0 s0-0 value-to-modify)))))
(a0-34 (logior (logand v1-82 -256) (shr (shl (the int (+ 64.0 (* 191.0 f0-12))) 56) 56)))
(a3-5 (logior (logand a0-34 -65281) (shr (shl (shr (shl a0-34 56) 56) 56) 48)))
)
(draw-percent-bar (- 75 (-> obj left-x-offset)) (+ s2-1 8) f0-12 (the-as int a3-5))
)
(set! sv-304 format)
(let ((a0-42 (clear *temp-string*))
(a1-13 "~D")
(a2-12 (the int (-> (the-as (pointer float) (-> s3-0 s0-0 value-to-modify)))))
)
(sv-304 a0-42 a1-13 a2-12)
)
(set! sv-912 *temp-string*)
(set! sv-128 (+ (the int (* 2.5 (-> (the-as (pointer float) (-> s3-0 s0-0 value-to-modify))))) -100))
sv-128
)
((= v1-81 2)
(cond
((-> (the-as (pointer uint32) (-> s3-0 s0-0 value-to-modify)))
(set! sv-320 format)
(set! sv-336 (clear *temp-string*))
(set! sv-352 "~30L~S~0L ~S")
(set! sv-368 (lookup-text! *common-text* (game-text-id on) #f))
(let ((a3-6 (lookup-text! *common-text* (game-text-id off) #f)))
(sv-320 sv-336 sv-352 sv-368 a3-6)
(case (-> s3-0 s0-0 option-type)
(((game-option-type slider))
(let* ((v1-82 (the-as uint #x8000ffff))
(f0-12 (* 0.01 (-> (the-as (pointer float) (-> s3-0 s0-0 value-to-modify)))))
(a0-34 (logior (logand v1-82 -256) (shr (shl (the int (+ 64.0 (* 191.0 f0-12))) 56) 56)))
(a3-5 (logior (logand a0-34 -65281) (shr (shl (shr (shl a0-34 56) 56) 56) 48)))
)
(set! sv-912 *temp-string*)
sv-912
)
(else
(set! sv-384 format)
(set! sv-400 (clear *temp-string*))
(set! sv-416 "~0L~S ~30L~S~1L")
(set! sv-432 (lookup-text! *common-text* (game-text-id on) #f))
(let ((a3-7 (lookup-text! *common-text* (game-text-id off) #f)))
(sv-384 sv-400 sv-416 sv-432 a3-7)
)
(set! sv-912 *temp-string*)
sv-912
)
)
(draw-percent-bar (- 75 (-> obj left-x-offset)) (+ s2-1 8) f0-12 (the-as int a3-5))
)
((= v1-81 1)
(set! sv-512 (-> obj language-selection))
(set! sv-448 (-> (the-as (pointer uint64) (-> s3-0 s0-0 value-to-modify))))
(if (and (zero? (scf-get-territory))
(not (and (= *progress-cheat* 'language) (cpad-hold? 0 l2) (cpad-hold? 0 r2)))
)
(set! sv-464 5)
(set! sv-464 6)
)
(if (-> obj language-transition)
(set! (-> obj language-x-offset)
(seekl (-> obj language-x-offset) 200 (the int (* 10.0 (-> *display* time-adjust-ratio))))
)
)
(when (>= (-> obj language-x-offset) 100)
(set! (-> obj language-selection) sv-448)
(set! sv-512 sv-448)
(set! (-> obj language-transition) #f)
(set! (-> obj language-x-offset) 0)
0
(set! option-str (string-format "~D" (the int (-> (the-as (pointer float) (-> s3-0 s0-0 value-to-modify))))))
(set! x-off (+ (the int (* 2.5 (-> (the-as (pointer float) (-> s3-0 s0-0 value-to-modify))))) -100))
x-off
)
(((game-option-type on-off))
(if (-> (the-as (pointer uint32) (-> s3-0 s0-0 value-to-modify)))
(set! option-str (string-format "~30L~S~0L ~S" (lookup-text! *common-text* (game-text-id on) #f) (lookup-text! *common-text* (game-text-id off) #f)))
(set! option-str (string-format "~0L~S ~30L~S~1L" (lookup-text! *common-text* (game-text-id on) #f) (lookup-text! *common-text* (game-text-id off) #f)))
)
(set! (-> sv-112 origin y) (the float (+ s2-1 3)))
(let ((a0-62 sv-112))
(set! (-> a0-62 color) (font-color lighter-lighter-blue))
)
0
(set! sv-480 (mod (the-as int (+ sv-512 1)) sv-464))
(let ((a0-66 (mod (+ sv-464 -1 sv-512) sv-464))
(v1-153 (mod (the-as int (+ sv-512 2)) sv-464))
)
(set! sv-496 (mod (+ sv-464 -2 sv-512) sv-464))
(cond
((-> obj language-direction)
(let ((a2-22 (- 200 (+ (-> obj language-x-offset) 100))))
(print-language-name a0-66 sv-112 a2-22 #f)
)
(let ((a2-23 (+ (-> obj language-x-offset) 100)))
(cond
((< a2-23 150)
(let ((t9-27 print-language-name)
(a1-30 sv-112)
(a3-9 #t)
)
(t9-27 sv-480 a1-30 a2-23 a3-9)
)
)
(else
(let ((a2-24 (- 200 (-> obj language-x-offset)))
(t9-28 print-language-name)
(a1-31 sv-112)
(a3-10 #f)
)
(t9-28 sv-496 a1-31 a2-24 a3-10)
)
)
(((game-option-type language))
(let ((old-lang (-> obj language-selection))
(new-lang (-> (the-as (pointer language-enum) (-> s3-0 s0-0 value-to-modify))))
(max-lang (if (and (= (scf-get-territory) GAME_TERRITORY_SCEA)
(not (and (= *progress-cheat* 'language) (cpad-hold? 0 l2) (cpad-hold? 0 r2))))
5
6
))
)
(if (-> obj language-transition)
(set! (-> obj language-x-offset)
(seekl (-> obj language-x-offset) 200 (the int (* 10.0 (-> *display* time-adjust-ratio))))))
(when (>= (-> obj language-x-offset) 100)
(set! (-> obj language-selection) new-lang)
(set! old-lang new-lang)
(set! (-> obj language-transition) #f)
(set! (-> obj language-x-offset) 0)
)
(set! (-> font origin y) (the float (+ s2-1 3)))
(set-color! font (font-color lighter-lighter-blue))
0
(let ((next-lang (mod (+ old-lang 1) max-lang))
(a0-66 (mod (+ max-lang -1 old-lang) max-lang))
(v1-153 (mod (+ old-lang 2) max-lang))
(prev-lang (mod (+ max-lang -2 old-lang) max-lang))
)
(cond
((-> obj language-direction)
(let ((a2-22 (- 200 (+ (-> obj language-x-offset) 100))))
(print-language-name a0-66 font a2-22 #f)
)
(let ((a2-23 (+ (-> obj language-x-offset) 100)))
(cond
((< a2-23 150)
(print-language-name (the int next-lang) font a2-23 #t)
)
(else
(let ((a2-24 (- 200 (-> obj language-x-offset))))
(print-language-name prev-lang font a2-24 #f)
)
)
)
)
(else
(let ((a2-25 (+ (-> obj language-x-offset) 100)))
(cond
((< a2-25 150)
(print-language-name a0-66 sv-112 a2-25 #f)
)
(else
(let ((a2-26 (- 200 (-> obj language-x-offset))))
(print-language-name v1-153 sv-112 a2-26 #t)
)
)
(else
(let ((a2-25 (+ (-> obj language-x-offset) 100)))
(cond
((< a2-25 150)
(print-language-name a0-66 font a2-25 #f)
)
(else
(let ((a2-26 (- 200 (-> obj language-x-offset))))
(print-language-name (the int v1-153) font a2-26 #t)
)
)
)
(let ((a2-27 (- 200 (+ (-> obj language-x-offset) 100))))
(print-language-name sv-480 sv-112 a2-27 #t)
)
)
(let ((a2-27 (- 200 (+ (-> obj language-x-offset) 100))))
(print-language-name (the int next-lang) font a2-27 #t)
)
)
)
(when (not (-> obj language-transition))
(let ((a0-75 sv-112))
(set! (-> a0-75 color) (font-color yellow-green-2))
)
)
(let ((t9-32 print-language-name)
(a1-37 sv-112)
(a2-28 (-> obj language-x-offset))
(a3-14 (-> obj language-direction))
)
(t9-32 (the-as int sv-512) a1-37 a2-28 (the-as symbol a3-14))
)
)
((= v1-81 3)
(set! sv-912 (lookup-text! *common-text* (game-text-id move-dpad) #f))
sv-912
)
((= v1-81 4)
(cond
((= (-> (the-as (pointer uint32) (-> s3-0 s0-0 value-to-modify))) 'aspect4x3)
(set! sv-528 format)
(set! sv-544 (clear *temp-string*))
(set! sv-560 "~30L~S~0L ~S")
(set! sv-576 (lookup-text! *common-text* (game-text-id 4x3) #f))
(let ((a3-15 (lookup-text! *common-text* (game-text-id 16x9) #f)))
(sv-528 sv-544 sv-560 sv-576 a3-15)
)
(set! sv-912 *temp-string*)
sv-912
)
(else
(set! sv-592 format)
(set! sv-608 (clear *temp-string*))
(set! sv-624 "~0L~S ~30L~S~1L")
(set! sv-640 (lookup-text! *common-text* (game-text-id 4x3) #f))
(let ((a3-16 (lookup-text! *common-text* (game-text-id 16x9) #f)))
(sv-592 sv-608 sv-624 sv-640 a3-16)
)
(set! sv-912 *temp-string*)
sv-912
)
(if (not (-> obj language-transition))
(set-color! font (font-color yellow-green-2)))
(print-language-name (the-as int old-lang) font (-> obj language-x-offset) (-> obj language-direction))
))
(((game-option-type center-screen))
(set! option-str (lookup-text! *common-text* (game-text-id move-dpad) #f))
)
(((game-option-type aspect-ratio))
(if (= (-> (the-as (pointer uint32) (-> s3-0 s0-0 value-to-modify))) 'aspect4x3)
(set! option-str (string-format "~30L~S~0L ~S" (lookup-text! *common-text* (game-text-id 4x3) #f) (lookup-text! *common-text* (game-text-id 16x9) #f)))
(set! option-str (string-format "~0L~S ~30L~S~1L" (lookup-text! *common-text* (game-text-id 4x3) #f) (lookup-text! *common-text* (game-text-id 16x9) #f)))
)
)
((= v1-81 5)
(cond
((= (-> (the-as (pointer uint32) (-> s3-0 s0-0 value-to-modify))) 'ntsc)
(set! sv-656 format)
(set! sv-672 (clear *temp-string*))
(set! sv-688 "~0L~S ~30L~S~1L")
(set! sv-704 (lookup-text! *common-text* (game-text-id 50hz) #f))
(let ((a3-17 (lookup-text! *common-text* (game-text-id 60hz) #f)))
(sv-656 sv-672 sv-688 sv-704 a3-17)
)
(set! sv-912 *temp-string*)
sv-912
)
(else
(set! sv-720 format)
(set! sv-736 (clear *temp-string*))
(set! sv-752 "~30L~S~0L ~S")
(set! sv-768 (lookup-text! *common-text* (game-text-id 50hz) #f))
(let ((a3-18 (lookup-text! *common-text* (game-text-id 60hz) #f)))
(sv-720 sv-736 sv-752 sv-768 a3-18)
)
(set! sv-912 *temp-string*)
sv-912
)
)
(((game-option-type video-mode))
(if (= (-> (the-as (pointer uint32) (-> s3-0 s0-0 value-to-modify))) 'ntsc)
(set! option-str (string-format "~0L~S ~30L~S~1L" (lookup-text! *common-text* (game-text-id 50hz) #f) (lookup-text! *common-text* (game-text-id 60hz) #f)))
(set! option-str (string-format "~30L~S~0L ~S" (lookup-text! *common-text* (game-text-id 50hz) #f) (lookup-text! *common-text* (game-text-id 60hz) #f)))
)
)
)
)
)
)
(else
(let ((v1-195 (-> s3-0 s0-0 option-type)))
(cond
((or (zero? v1-195) (= v1-195 3) (= v1-195 4) (= v1-195 5))
(set! sv-912 (lookup-text! *common-text* (-> s3-0 s0-0 name) #f))
sv-912
)
((= v1-195 2)
(set! sv-784 format)
(set! sv-800 (clear *temp-string*))
(set! sv-816 "~S: ~S")
(set! sv-832 (lookup-text! *common-text* (-> s3-0 s0-0 name) #f))
(let ((a3-19 (if (-> (the-as (pointer uint32) (-> s3-0 s0-0 value-to-modify)))
(lookup-text! *common-text* (game-text-id on) #f)
(lookup-text! *common-text* (game-text-id off) #f)
)
)
)
(sv-784 sv-800 sv-816 sv-832 a3-19)
)
(set! sv-912 *temp-string*)
sv-912
)
((= v1-195 1)
(set! sv-848 format)
(set! sv-864 (clear *temp-string*))
(set! sv-880 "~S: ~S")
(set! sv-896 (lookup-text! *common-text* (-> s3-0 s0-0 name) #f))
(let ((a3-20 (lookup-text!
*common-text*
(-> *language-name-remap* (-> (the-as (pointer uint64) (-> s3-0 s0-0 value-to-modify))))
#f
)
)
)
(sv-848 sv-864 sv-880 sv-896 a3-20)
)
(set! sv-912 *temp-string*)
sv-912
)
(case (-> s3-0 s0-0 option-type)
(((game-option-type slider)
(game-option-type center-screen)
(game-option-type aspect-ratio)
(game-option-type video-mode)
)
(set! option-str (lookup-text! *common-text* (-> s3-0 s0-0 name) #f))
)
(((game-option-type on-off))
(set! option-str (string-format "~S: ~S" (lookup-text! *common-text* (-> s3-0 s0-0 name) #f)
(if (-> (the-as (pointer uint32) (-> s3-0 s0-0 value-to-modify)))
(lookup-text! *common-text* (game-text-id on) #f)
(lookup-text! *common-text* (game-text-id off) #f)
)))
)
(((game-option-type language))
(set! option-str (string-format "~S: ~S" (lookup-text! *common-text* (-> s3-0 s0-0 name) #f)
(lookup-text! *common-text* (-> *language-name-remap* (-> (the-as (pointer uint64) (-> s3-0 s0-0 value-to-modify)))) #f)))
)
)
)
)
)
(when sv-912
(when option-str
(let ((f0-23 (-> obj transition-percentage-invert)))
(let ((v1-235 sv-112))
(set! (-> v1-235 color)
(the-as font-color (if (and (= s0-0 (-> obj option-index)) (not (-> obj in-transition)))
30
0
)
)
(set-color! font (if (and (= s0-0 (-> obj option-index)) (not (-> obj in-transition)))
(font-color yellow-green-2)
(font-color default)
)
)
)
(set! (-> sv-112 origin x) (the float (- sv-128 (-> obj left-x-offset))))
(set! (-> sv-112 origin y) (the float (the int (* (the float sv-144) (if (-> s3-0 s0-0 scale)
(set! (-> font origin x) (the float (- x-off (-> obj left-x-offset))))
(set! (-> font origin y) (the float (the int (* (the float y-off) (if (-> s3-0 s0-0 scale)
f0-23
1.0
)
)
)
)
)
(let ((v1-246 sv-112))
(set! (-> v1-246 scale) (* arg2 f0-23))
)
(let ((t9-60 print-game-text)
(a1-64 sv-112)
(a2-50 #f)
(a3-21 (the int (* 128.0 f0-23)))
(t0-2 22)
)
(t9-60 sv-912 a1-64 a2-50 a3-21 t0-2)
)
)))))
(set-scale! font (* arg2 f0-23))
(print-game-text option-str font #f (the int (* 128.0 f0-23)) 22)
)
)
(+! s2-1 arg1)
(+! s1-0 1)
)
))
)
)
)
@@ -2156,3 +1931,4 @@
+6 -2
View File
@@ -993,8 +993,8 @@
(progress-new-particle :part 90 :x 256.0 :y 224.0 :z 16.0) ;; tint
(progress-new-particle :part 88 :x -42.0 :y (#if PC_PORT 256.0 254.0) :z 5.0) ;; left
(progress-new-particle :part 89 :x 610.0 :y (#if PC_PORT 256.0 254.0) :z 5.0) ;; right
(progress-new-particle :part 85 :x -320.0 :y 40.0 :z 14.0)
(progress-new-particle :part 86 :x -320.0 :y 400.0 :z 14.0)
(progress-new-particle :part 85 :x -320.0 :y 40.0 :z 14.0) ;; prev
(progress-new-particle :part 86 :x -320.0 :y 400.0 :z 14.0) ;; next
(progress-new-particle :part 87 :x -320.0 :y 194.0 :z 15.0)
(progress-new-particle :part 97 :x -320.0 :y 194.0 :z 14.0)
(progress-new-particle :part 97 :x -320.0 :y 194.0 :z 14.0)
@@ -1022,6 +1022,10 @@
(progress-new-particle :part 572 :x -320.0 :y 338.0 :z 4.0)
(progress-new-particle :part 573 :x -320.0 :y 338.0 :z 4.0)
(progress-new-particle :part 615 :x -320.0 :y 180.0 :z 4.0)
(#when PC_PORT
(progress-new-particle :part 85 :x -320.0 :y 32.0 :z 14.0) ;; prev
(progress-new-particle :part 86 :x -320.0 :y 412.0 :z 14.0) ;; next
)
0
(none)
)
+100 -102
View File
@@ -9,154 +9,152 @@
;; options in the start menu options
(define *main-options*
(new 'static 'boxed-array :type game-option :length 7 :allocated-length 7
(new 'static 'game-option :option-type #x6 :name (game-text-id game-options) :scale #t :param3 4)
(new 'static 'game-option :option-type #x6 :name (game-text-id graphic-options) :scale #t :param3 5)
(new 'static 'game-option :option-type #x6 :name (game-text-id sound-options) :scale #t :param3 6)
(new 'static 'game-option :option-type #x6 :name (game-text-id load-game) :scale #t :param3 16)
(new 'static 'game-option :option-type #x6 :name (game-text-id save-game) :scale #t :param3 17)
(new 'static 'game-option :option-type #x6 :name (game-text-id quit-game) :scale #t :param3 34)
(new 'static 'game-option :option-type #x8 :name (game-text-id back) :scale #t)
)
(new 'static 'boxed-array :type game-option :length 7 :allocated-length 7
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id game-options) :scale #t :param3 (game-option-menu game-settings))
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id graphic-options) :scale #t :param3 (game-option-menu graphic-settings))
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id sound-options) :scale #t :param3 (game-option-menu sound-settings))
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id load-game) :scale #t :param3 (game-option-menu load-game))
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id save-game) :scale #t :param3 (game-option-menu save-game))
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id quit-game) :scale #t :param3 (game-option-menu quit))
(new 'static 'game-option :option-type (game-option-type button) :name (game-text-id back) :scale #t)
)
)
(define *title*
(new 'static 'boxed-array :type game-option :length 4 :allocated-length 4
(new 'static 'game-option :option-type #x6 :name (game-text-id new-game) :scale #t :param3 18)
(new 'static 'game-option :option-type #x6 :name (game-text-id load-game) :scale #t :param3 16)
(new 'static 'game-option :option-type #x6 :name (game-text-id options) :scale #t :param3 28)
(new 'static 'game-option :option-type #x8 :name (game-text-id back) :scale #t)
)
(new 'static 'boxed-array :type game-option :length 4 :allocated-length 4
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id new-game) :scale #t :param3 (game-option-menu save-game-title))
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id load-game) :scale #t :param3 (game-option-menu load-game))
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id options) :scale #t :param3 (game-option-menu settings-title))
(new 'static 'game-option :option-type (game-option-type button) :name (game-text-id back) :scale #t)
)
)
(define *options*
(new 'static 'boxed-array :type game-option :length 4 :allocated-length 4
(new 'static 'game-option :option-type #x6 :name (game-text-id game-options) :scale #t :param3 4)
(new 'static 'game-option :option-type #x6 :name (game-text-id graphic-options) :scale #t :param3 5)
(new 'static 'game-option :option-type #x6 :name (game-text-id sound-options) :scale #t :param3 6)
(new 'static 'game-option :option-type #x8 :name (game-text-id back) :scale #t)
)
(new 'static 'boxed-array :type game-option :length 4 :allocated-length 4
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id game-options) :scale #t :param3 (game-option-menu game-settings))
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id graphic-options) :scale #t :param3 (game-option-menu graphic-settings))
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id sound-options) :scale #t :param3 (game-option-menu sound-settings))
(new 'static 'game-option :option-type (game-option-type button) :name (game-text-id back) :scale #t)
)
)
(define *main-options-demo*
(new 'static 'boxed-array :type game-option :length 4 :allocated-length 4
(new 'static 'game-option :option-type #x6 :name (game-text-id game-options) :scale #t :param3 4)
(new 'static 'game-option :option-type #x6 :name (game-text-id graphic-options) :scale #t :param3 5)
(new 'static 'game-option :option-type #x6 :name (game-text-id sound-options) :scale #t :param3 6)
(new 'static 'game-option :option-type #x8 :name (game-text-id back) :scale #t)
)
(new 'static 'boxed-array :type game-option :length 4 :allocated-length 4
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id game-options) :scale #t :param3 (game-option-menu game-settings))
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id graphic-options) :scale #t :param3 (game-option-menu graphic-settings))
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id sound-options) :scale #t :param3 (game-option-menu sound-settings))
(new 'static 'game-option :option-type (game-option-type button) :name (game-text-id back) :scale #t)
)
)
(define *main-options-demo-shared*
(new 'static 'boxed-array :type game-option :length 5 :allocated-length 5
(new 'static 'game-option :option-type #x6 :name (game-text-id game-options) :scale #t :param3 4)
(new 'static 'game-option :option-type #x6 :name (game-text-id graphic-options) :scale #t :param3 5)
(new 'static 'game-option :option-type #x6 :name (game-text-id sound-options) :scale #t :param3 6)
(new 'static 'game-option :option-type #x8 :name (game-text-id exit-demo) :scale #t)
(new 'static 'game-option :option-type #x8 :name (game-text-id back) :scale #t)
)
(new 'static 'boxed-array :type game-option :length 5 :allocated-length 5
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id game-options) :scale #t :param3 (game-option-menu game-settings))
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id graphic-options) :scale #t :param3 (game-option-menu graphic-settings))
(new 'static 'game-option :option-type (game-option-type menu) :name (game-text-id sound-options) :scale #t :param3 (game-option-menu sound-settings))
(new 'static 'game-option :option-type (game-option-type button) :name (game-text-id exit-demo) :scale #t)
(new 'static 'game-option :option-type (game-option-type button) :name (game-text-id back) :scale #t)
)
)
(define *game-options*
(new 'static 'boxed-array :type game-option :length 4 :allocated-length 4
(new 'static 'game-option :option-type #x2 :name (game-text-id vibrations) :scale #t)
(new 'static 'game-option :option-type #x2 :name (game-text-id play-hints) :scale #t)
(new 'static 'game-option :option-type #x1 :name (game-text-id language) :scale #t)
(new 'static 'game-option :option-type #x8 :name (game-text-id back) :scale #t)
)
(new 'static 'boxed-array :type game-option :length 4 :allocated-length 4
(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 language) :name (game-text-id language) :scale #t)
(new 'static 'game-option :option-type (game-option-type button) :name (game-text-id back) :scale #t)
)
)
(define *game-options-japan*
(new 'static 'boxed-array :type game-option :length 3 :allocated-length 3
(new 'static 'game-option :option-type #x2 :name (game-text-id vibrations) :scale #t)
(new 'static 'game-option :option-type #x2 :name (game-text-id play-hints) :scale #t)
(new 'static 'game-option :option-type #x8 :name (game-text-id back) :scale #t)
)
(new 'static 'boxed-array :type game-option :length 3 :allocated-length 3
(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 button) :name (game-text-id back) :scale #t)
)
)
(define *game-options-demo*
(new 'static 'boxed-array :type game-option :length 3 :allocated-length 3
(new 'static 'game-option :option-type #x2 :name (game-text-id vibrations) :scale #t)
(new 'static 'game-option :option-type #x2 :name (game-text-id play-hints) :scale #t)
(new 'static 'game-option :option-type #x8 :name (game-text-id back) :scale #t)
)
(new 'static 'boxed-array :type game-option :length 3 :allocated-length 3
(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 button) :name (game-text-id back) :scale #t)
)
)
(define *graphic-options*
(new 'static 'boxed-array :type game-option :length 3 :allocated-length 3
(new 'static 'game-option :option-type #x3 :name (game-text-id center-screen) :scale #t)
(new 'static 'game-option :option-type #x4 :name (game-text-id aspect-ratio) :scale #t)
(new 'static 'game-option :option-type #x8 :name (game-text-id back) :scale #t)
)
(new 'static 'boxed-array :type game-option :length 3 :allocated-length 3
(new 'static 'game-option :option-type (game-option-type center-screen) :name (game-text-id center-screen) :scale #t)
(new 'static 'game-option :option-type (game-option-type aspect-ratio) :name (game-text-id aspect-ratio) :scale #t)
(new 'static 'game-option :option-type (game-option-type button) :name (game-text-id back) :scale #t)
)
)
(define *graphic-title-options-pal*
(new 'static 'boxed-array :type game-option :length 4 :allocated-length 4
(new 'static 'game-option :option-type #x3 :name (game-text-id center-screen) :scale #t)
(new 'static 'game-option :option-type #x5 :name (game-text-id video-mode) :scale #t)
(new 'static 'game-option :option-type #x4 :name (game-text-id aspect-ratio) :scale #t)
(new 'static 'game-option :option-type #x8 :name (game-text-id back) :scale #t)
)
(new 'static 'boxed-array :type game-option :length 4 :allocated-length 4
(new 'static 'game-option :option-type (game-option-type center-screen) :name (game-text-id center-screen) :scale #t)
(new 'static 'game-option :option-type (game-option-type video-mode) :name (game-text-id video-mode) :scale #t)
(new 'static 'game-option :option-type (game-option-type aspect-ratio) :name (game-text-id aspect-ratio) :scale #t)
(new 'static 'game-option :option-type (game-option-type button) :name (game-text-id back) :scale #t)
)
)
(define *sound-options*
(new 'static 'boxed-array :type game-option :length 4 :allocated-length 4
(new 'static 'game-option :name (game-text-id sfx-volume) :scale #t :param2 100.0)
(new 'static 'game-option :name (game-text-id music-volume) :scale #t :param2 100.0)
(new 'static 'game-option :name (game-text-id speech-volume) :scale #t :param2 100.0)
(new 'static 'game-option :option-type #x8 :name (game-text-id back) :scale #t)
)
(new 'static 'boxed-array :type game-option :length 4 :allocated-length 4
(new 'static 'game-option :name (game-text-id sfx-volume) :scale #t :param2 100.0)
(new 'static 'game-option :name (game-text-id music-volume) :scale #t :param2 100.0)
(new 'static 'game-option :name (game-text-id speech-volume) :scale #t :param2 100.0)
(new 'static 'game-option :option-type (game-option-type button) :name (game-text-id back) :scale #t)
)
)
(define *yes-no-options*
(new 'static 'boxed-array :type game-option :length 1 :allocated-length 1
(new 'static 'game-option :option-type #x7 :scale #f)
)
)
(define *yes-no-options* (new 'static 'boxed-array :type game-option :length 1 :allocated-length 1
(new 'static 'game-option :option-type (game-option-type yes-no) :scale #f)
)
)
(define *ok-options*
(new 'static 'boxed-array :type game-option :length 1 :allocated-length 1
(new 'static 'game-option :option-type #x8 :name (game-text-id ok) :scale #f)
)
(new 'static 'boxed-array :type game-option :length 1 :allocated-length 1
(new 'static 'game-option :option-type (game-option-type button) :name (game-text-id ok) :scale #f)
)
)
(define *load-options*
(new 'static 'boxed-array
:type game-option :length 5 :allocated-length 5
(new 'static 'game-option :option-type #x8 :scale #f)
(new 'static 'game-option :option-type #x8 :scale #f)
(new 'static 'game-option :option-type #x8 :scale #f)
(new 'static 'game-option :option-type #x8 :scale #f)
(new 'static 'game-option :option-type #x8 :name (game-text-id back) :scale #f)
)
(new 'static 'boxed-array :type game-option :length 5 :allocated-length 5
(new 'static 'game-option :option-type (game-option-type button) :scale #f)
(new 'static 'game-option :option-type (game-option-type button) :scale #f)
(new 'static 'game-option :option-type (game-option-type button) :scale #f)
(new 'static 'game-option :option-type (game-option-type button) :scale #f)
(new 'static 'game-option :option-type (game-option-type button) :name (game-text-id back) :scale #f)
)
)
(define *save-options*
(new 'static 'boxed-array :type game-option :length 5 :allocated-length 5
(new 'static 'game-option :option-type #x8 :scale #f)
(new 'static 'game-option :option-type #x8 :scale #f)
(new 'static 'game-option :option-type #x8 :scale #f)
(new 'static 'game-option :option-type #x8 :scale #f)
(new 'static 'game-option :option-type #x8 :name (game-text-id back) :scale #f)
)
(new 'static 'boxed-array :type game-option :length 5 :allocated-length 5
(new 'static 'game-option :option-type (game-option-type button) :scale #f)
(new 'static 'game-option :option-type (game-option-type button) :scale #f)
(new 'static 'game-option :option-type (game-option-type button) :scale #f)
(new 'static 'game-option :option-type (game-option-type button) :scale #f)
(new 'static 'game-option :option-type (game-option-type button) :name (game-text-id back) :scale #f)
)
)
(define *save-options-title*
(new 'static 'boxed-array
:type game-option :length 6 :allocated-length 6
(new 'static 'game-option :option-type #x8 :scale #f)
(new 'static 'game-option :option-type #x8 :scale #f)
(new 'static 'game-option :option-type #x8 :scale #f)
(new 'static 'game-option :option-type #x8 :scale #f)
(new 'static 'game-option :option-type #x8 :name (game-text-id continue-without-saving) :scale #f)
(new 'static 'game-option :option-type #x8 :name (game-text-id back) :scale #f)
)
(new 'static 'boxed-array :type game-option :length 6 :allocated-length 6
(new 'static 'game-option :option-type (game-option-type button) :scale #f)
(new 'static 'game-option :option-type (game-option-type button) :scale #f)
(new 'static 'game-option :option-type (game-option-type button) :scale #f)
(new 'static 'game-option :option-type (game-option-type button) :scale #f)
(new 'static 'game-option :option-type (game-option-type button) :name (game-text-id continue-without-saving) :scale #f)
(new 'static 'game-option :option-type (game-option-type button) :name (game-text-id back) :scale #f)
)
)
;; maps options to a progress screen
(define *options-remap*
(new 'static 'boxed-array :type (array game-option) :length 0 :allocated-length 35)
)
(#if (not PC_PORT)
(define *options-remap* (new 'static 'boxed-array :type (array game-option) :length 0 :allocated-length 35))
(define *options-remap* (new 'static 'boxed-array :type (array game-option) :length 0 :allocated-length 50))
)
;; TODO probably an enum.
;; maps "levels" to the appropriate offset in *level-task-data*
File diff suppressed because it is too large Load Diff