mirror of
https://github.com/open-goal/jak-project.git
synced 2024-10-20 00:57:44 -04:00
[runtime] Fix progress menu aspect ratios (#1055)
* update progress code and fix our frame "scissoring" * aspect ratio hacks * expand progress tint for widescreen * give up and comment things properly * properly undo hacks
This commit is contained in:
parent
3ceeafbd46
commit
701108a1b6
|
@ -11,9 +11,6 @@ namespace v2 {
|
|||
// The previous issues we had with stack overflow only happened when there was a stack frame per
|
||||
// element in a list.
|
||||
|
||||
// TODO: there's a different style of splitting that we should do for forms like:
|
||||
// set!, and, or, <, >, +... where we try leaving operator + one other.
|
||||
|
||||
// The main node type.
|
||||
// unlike v1, this nests lists.
|
||||
// these have pointers to parents, so generally not safe to copy.
|
||||
|
@ -193,7 +190,7 @@ void break_list(Node* node) {
|
|||
node->top_line_count = 1;
|
||||
|
||||
const std::unordered_set<std::string> sameline_splitters = {
|
||||
"if", "<", ">", "<=", ">=", "set!", "=", "!=", "+", "-", "*", "/", "the", "->"};
|
||||
"if", "<", ">", "<=", ">=", "set!", "=", "!=", "+", "-", "*", "/", "the", "->", "and", "or"};
|
||||
|
||||
if (node->child_nodes.at(0).kind == Node::Kind::LIST) {
|
||||
// ((foo
|
||||
|
@ -253,9 +250,9 @@ void break_list(Node* node) {
|
|||
|
||||
void insert_required_breaks(const std::vector<Node*>& bfs_order) {
|
||||
const std::unordered_set<std::string> always_break = {
|
||||
"when", "defun-debug", "countdown", "case", "defun", "defmethod",
|
||||
"let", "until", "while", "if", "dotimes", "cond",
|
||||
"else", "defbehavior", "with-pp", "rlet", "defstate"};
|
||||
"when", "defun-debug", "countdown", "case", "defun", "defmethod",
|
||||
"let", "until", "while", "if", "dotimes", "cond",
|
||||
"else", "defbehavior", "with-pp", "rlet", "defstate", "behavior"};
|
||||
for (auto node : bfs_order) {
|
||||
if (!node->break_list && node->kind == Node::Kind::LIST &&
|
||||
node->child_nodes.at(0).kind == Node::Kind::ATOM) {
|
||||
|
|
|
@ -14903,7 +14903,7 @@
|
|||
(total-nb-of-buzzers int32 :offset-assert 288)
|
||||
(card-info mc-slot-info :offset-assert 292)
|
||||
(last-option-index-change int64 :offset-assert 296)
|
||||
(video-mode-timeout uint64 :offset-assert 304)
|
||||
(video-mode-timeout int64 :offset-assert 304)
|
||||
(display-state-stack progress-screen 5 :offset-assert 312)
|
||||
(option-index-stack int32 5 :offset-assert 352)
|
||||
(display-state-pos int32 :offset-assert 372)
|
||||
|
|
|
@ -394,7 +394,8 @@
|
|||
"ERROR: <asg> ~A in spool anim loop for ~A ~D, but not loaded.~": 3,
|
||||
"~0k~5d/~d ~6d/~d ~6d/~d ": 6,
|
||||
"~0k~s~%": 1,
|
||||
"money ~A was killed in pickup~%": 0
|
||||
"money ~A was killed in pickup~%": 0,
|
||||
" id address name aid tsk lev status x y z address name state heap flags~%": 3
|
||||
},
|
||||
|
||||
"blocks_ending_in_asm_branch": {
|
||||
|
|
|
@ -2314,6 +2314,8 @@
|
|||
|
||||
"(method 14 level-group)": [
|
||||
[[54, 164], "s1", "process-drawable"],
|
||||
[[107, 127], "s0", "(pointer int32)"],
|
||||
[[153, 162], "v0", "symbol"],
|
||||
[[319, 342], "s0", "process-drawable"],
|
||||
[368, "v1", "(pointer process-drawable)"],
|
||||
[[384, 494], "s5", "process-drawable"]
|
||||
|
|
|
@ -3355,7 +3355,7 @@
|
|||
|
||||
"(method 18 bsp-header)": {
|
||||
"vars": {
|
||||
"a2-0": "existing-actor-count",
|
||||
"a2-0": "actor-count",
|
||||
"s4-0": "birth-idx",
|
||||
"a0-4": "idx-to-birth",
|
||||
"v1-25": "actor-to-birth",
|
||||
|
@ -3530,7 +3530,9 @@
|
|||
|
||||
"(method 14 level-group)": {
|
||||
"vars": {
|
||||
"s1-1": ["s1-1", "process-drawable"]
|
||||
"s0-1": ["s0-1", "(pointer int32)"],
|
||||
"s1-1": ["s1-1", "process-drawable"],
|
||||
"v0-10": ["v0-10", "symbol"]
|
||||
}
|
||||
},
|
||||
|
||||
|
|
|
@ -8,7 +8,9 @@ out vec4 fragment_color;
|
|||
out vec3 tex_coord;
|
||||
|
||||
void main() {
|
||||
gl_Position = vec4((position_in.x - 0.5) * 16. , -(position_in.y - 0.5) * 32, position_in.z * 2 - 1., 1.0);
|
||||
fragment_color = vec4(rgba_in.x, rgba_in.y, rgba_in.z, rgba_in.a * 2);
|
||||
gl_Position = vec4((position_in.x - 0.5) * 16, -(position_in.y - 0.5) * 32, position_in.z * 2 - 1, 1.0);
|
||||
// scissoring area adjust
|
||||
gl_Position.y *= 512.0/448.0;
|
||||
fragment_color = vec4(rgba_in.rgb, rgba_in.a * 2);
|
||||
tex_coord = tex_coord_in;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,7 +8,9 @@ out vec4 fragment_color;
|
|||
out vec3 tex_coord;
|
||||
|
||||
void main() {
|
||||
gl_Position = vec4((position_in.x - 0.5) * 16., -(position_in.y - 0.5) * 32, position_in.z * 2 - 1., 1.0);
|
||||
fragment_color = vec4(rgba_in.x, rgba_in.y, rgba_in.z, rgba_in.w * 2.);
|
||||
gl_Position = vec4((position_in.x - 0.5) * 16, -(position_in.y - 0.5) * 32, position_in.z * 2 - 1, 1.0);
|
||||
// scissoring area adjust
|
||||
gl_Position.y *= 512.0/448.0;
|
||||
fragment_color = vec4(rgba_in.rgb, rgba_in.a * 2);
|
||||
tex_coord = tex_coord_in;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,6 +12,8 @@ out vec4 fragment_color;
|
|||
void main() {
|
||||
// Note: position.y is multiplied by 32 instead of 16 to undo the half-height for interlacing stuff.
|
||||
gl_Position = vec4((position_in.x - 0.5) * 16., -(position_in.y - 0.5) * 32, position_in.z * 2 - 1., 1.0);
|
||||
// scissoring area adjust
|
||||
gl_Position.y *= 512.0/448.0;
|
||||
fragment_color = vec4(rgba_in.x, rgba_in.y, rgba_in.z, rgba_in.w + 0.5);
|
||||
//fragment_color = vec4(1.0, 0, 0, 0.7);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,5 +8,7 @@ out vec4 fragment_color;
|
|||
|
||||
void main() {
|
||||
gl_Position = vec4((position_in.x - 0.5) * 16., -(position_in.y - 0.5) * 32, position_in.z * 2 - 1., 1.0);
|
||||
// scissoring area adjust
|
||||
gl_Position.y *= 512.0/448.0;
|
||||
fragment_color = vec4(1.0, 0, 0, 0.7);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,5 +10,7 @@ out vec4 fragment_color;
|
|||
void main() {
|
||||
// Note: position.y is multiplied by 32 instead of 16 to undo the half-height for interlacing stuff.
|
||||
gl_Position = vec4((position_in.x - 0.5) * 16., -(position_in.y - 0.5) * 32, position_in.z * 2 - 1., 1.0);
|
||||
// scissoring area adjust
|
||||
gl_Position.y *= 512.0/448.0;
|
||||
fragment_color = vec4(rgba_in.x, rgba_in.y, rgba_in.z, rgba_in.w + 0.5);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,6 +13,8 @@ out flat uvec2 tex_info;
|
|||
|
||||
void main() {
|
||||
gl_Position = vec4((position_in.x - 0.5) * 16., -(position_in.y - 0.5) * 32, position_in.z * 2 - 1., 1.0);
|
||||
// scissoring area adjust
|
||||
gl_Position.y *= 512.0/448.0;
|
||||
fragment_color = vec4(rgba_in.x, rgba_in.y, rgba_in.z, rgba_in.w * 2.);
|
||||
tex_coord = tex_coord_in;
|
||||
tex_info = tex_info_in;
|
||||
|
|
|
@ -9,6 +9,8 @@ noperspective out vec3 tex_coord;
|
|||
|
||||
void main() {
|
||||
gl_Position = vec4((position_in.x - 0.5) * 16. , -(position_in.y - 0.5) * 32, position_in.z * 2 - 1., 1.0);
|
||||
// scissoring area adjust
|
||||
gl_Position.y *= 512.0/448.0;
|
||||
fragment_color = vec4(rgba_in.x, rgba_in.y, rgba_in.z, rgba_in.a * 2);
|
||||
tex_coord = tex_coord_in;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,5 +6,7 @@ out vec3 tex_coord;
|
|||
|
||||
void main() {
|
||||
gl_Position = vec4(position_in.x*2 -1, position_in.y*2-1, 0.0, 1.0);
|
||||
// scissoring area adjust
|
||||
gl_Position.y *= 512.0/448.0;
|
||||
tex_coord = position_in;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,6 +13,8 @@ out flat uvec2 tex_info;
|
|||
|
||||
void main() {
|
||||
gl_Position = vec4((position_in.x - 0.5) * 16., -(position_in.y - 0.5) * 32, position_in.z * 2 - 1., 1.0);
|
||||
// scissoring area adjust
|
||||
gl_Position.y *= 512.0/448.0;
|
||||
fragment_color = vec4(rgba_in.x, rgba_in.y, rgba_in.z, rgba_in.w * 2.);
|
||||
tex_coord = tex_coord_in;
|
||||
tex_info = tex_info_in;
|
||||
|
|
|
@ -63,6 +63,8 @@ void main() {
|
|||
transformed.xyz *= transformed.w;
|
||||
|
||||
gl_Position = transformed;
|
||||
// scissoring area adjust
|
||||
gl_Position.y *= 512.0/448.0;
|
||||
|
||||
// time of day lookup
|
||||
fragment_color = texelFetch(tex_T1, time_of_day_index, 0);
|
||||
|
|
|
@ -44,7 +44,9 @@ void main() {
|
|||
transformed.xyz *= transformed.w;
|
||||
|
||||
gl_Position = transformed;
|
||||
// scissoring area adjust
|
||||
gl_Position.y *= 512.0/448.0;
|
||||
|
||||
// time of day lookup
|
||||
fragment_color = rgba_in;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,7 +34,6 @@
|
|||
|
||||
;; the x/y ratio are frustum slopes
|
||||
(set! (-> math-cam x-ratio) (tan (* 0.5 (-> math-cam fov))))
|
||||
;;(format #t "aspect is ~A~%" aspect)
|
||||
(if (= aspect 'aspect4x3)
|
||||
(set! (-> math-cam y-ratio) (* (1/ ASPECT_4X3) (-> math-cam x-ratio)))
|
||||
(set! (-> math-cam y-ratio) (* (1/ ASPECT_16X9) (-> math-cam x-ratio)))
|
||||
|
@ -139,17 +138,11 @@
|
|||
(let ((corrected-fog (/ fog-factor-2 (* (-> math-cam d) (- (-> math-cam f) (-> math-cam d)))))
|
||||
(cam-fov-mult (-> math-cam fov-correction-factor))
|
||||
)
|
||||
(set! (-> math-cam perspective vector 0 x)
|
||||
(* cam-fov-mult (- (/ (-> math-cam x-pix) (* (-> math-cam x-ratio) (-> math-cam d)))))
|
||||
)
|
||||
(set! (-> math-cam perspective vector 1 y)
|
||||
(* cam-fov-mult (- (/ (-> math-cam y-pix) (* (-> math-cam y-ratio) (-> math-cam d)))))
|
||||
)
|
||||
(set! (-> math-cam perspective vector 0 x) (* cam-fov-mult (- (/ (-> math-cam x-pix) (* (-> math-cam x-ratio) (-> math-cam d))))))
|
||||
(set! (-> math-cam perspective vector 1 y) (* cam-fov-mult (- (/ (-> math-cam y-pix) (* (-> math-cam y-ratio) (-> math-cam d))))))
|
||||
(set! (-> math-cam perspective vector 2 z) (* cam-fov-mult (+ (-> math-cam f) (-> math-cam d)) corrected-fog))
|
||||
(set! (-> math-cam perspective vector 2 w) (* (/ cam-fov-mult (-> math-cam d)) fog-at-near-plane))
|
||||
(set! (-> math-cam perspective vector 3 z)
|
||||
(* -2.0 corrected-fog (-> math-cam f) (-> math-cam d) cam-fov-mult)
|
||||
)
|
||||
(set! (-> math-cam perspective vector 3 z) (* -2.0 corrected-fog (-> math-cam f) (-> math-cam d) cam-fov-mult))
|
||||
)
|
||||
|
||||
;; hvdf/hmge, no idea what these are
|
||||
|
@ -191,7 +184,7 @@
|
|||
;; cheating this by 1 bit seems to fix it.
|
||||
(#when PC_PORT
|
||||
;; #x4b002032 -> #x4b002031
|
||||
(-! (-> math-cam isometric vector 3 z) 1.)
|
||||
(set! (-> math-cam isometric vector 3 z) (the-as float (- (the-as int (-> math-cam isometric vector 3 z)) 1)))
|
||||
)
|
||||
|
||||
)
|
||||
|
|
|
@ -3973,7 +3973,7 @@
|
|||
|
||||
(#when PC_PORT
|
||||
|
||||
(defmacro new-dm-function (text var func)
|
||||
(defmacro new-dm-func (text var func)
|
||||
`(new 'debug 'debug-menu-item-function ,text ,var (the-as (function int object) ,func))
|
||||
)
|
||||
(defmacro new-dm-flag (text var func)
|
||||
|
@ -4060,7 +4060,7 @@
|
|||
(let ((iter *level-load-list*))
|
||||
(while (not (or (null? iter) (null? (cdr iter)) (null? (cddr iter))))
|
||||
(debug-menu-append-item teleport-menu
|
||||
(new-dm-function (symbol->string (the-as symbol (car iter)))
|
||||
(new-dm-func (symbol->string (the-as symbol (car iter)))
|
||||
(-> (the-as symbol (car iter)) value)
|
||||
(lambda ((info level-load-info))
|
||||
(let ((tf (new 'stack 'transformq)))
|
||||
|
@ -4158,9 +4158,23 @@
|
|||
)
|
||||
)
|
||||
|
||||
(defun dm-display-entities-pick-func ((arg0 symbol))
|
||||
(debug-print-entities *level* arg0 (the-as type #f))
|
||||
)
|
||||
|
||||
(when (-> *debug-menu-context* root-menu)
|
||||
(debug-menu-append-item (-> *debug-menu-context* root-menu) (debug-menu-make-load-menu *debug-menu-context*))
|
||||
;; Entity menu TODO
|
||||
|
||||
(debug-menu-append-item (-> *debug-menu-context* root-menu)
|
||||
(debug-menu-make-from-template *debug-menu-context*
|
||||
'(menu "Entity"
|
||||
(function "Print entity info" #t dm-display-entities-pick-func)
|
||||
(function "Print entity info (art-group)" art-group dm-display-entities-pick-func)
|
||||
(function "Print entity info (entity-meters)" entity-meters dm-display-entities-pick-func)
|
||||
(function "Print entity info (entity-perm)" entity-perm dm-display-entities-pick-func)
|
||||
)
|
||||
)
|
||||
)
|
||||
;; Music menu TODO
|
||||
;; Secrets menu TODO
|
||||
;; Scene menu TODO
|
||||
|
@ -4217,6 +4231,8 @@
|
|||
(function "2560 x 1440" #f (lambda () (set-size! *pc-settings* 2560 1440)))
|
||||
(function "2880 x 2160" #f (lambda () (set-size! *pc-settings* 2880 2160)))
|
||||
(function "3840 x 2160" #f (lambda () (set-size! *pc-settings* 3840 2160)))
|
||||
(function "512 x 448" #f (lambda () (set-size! *pc-settings* 512 448)))
|
||||
(function "512 x 512" #f (lambda () (set-size! *pc-settings* 512 512)))
|
||||
)
|
||||
(flag "Letterbox" #f (dm-lambda-boolean-flag (-> *pc-settings* letterbox?)))
|
||||
(flag "Skip movies" #f (dm-lambda-boolean-flag (-> *pc-settings* skip-movies?)))
|
||||
|
@ -4255,16 +4271,67 @@
|
|||
)
|
||||
)
|
||||
)
|
||||
(debug-menu-append-item (-> *debug-menu-context* root-menu)
|
||||
(debug-menu-make-from-template *debug-menu-context*
|
||||
'(menu "Other"
|
||||
(flag "DECI Count" *display-deci-count* dm-boolean-toggle-pick-func)
|
||||
(flag "Actor graph" *display-actor-graph* dm-boolean-toggle-pick-func)
|
||||
(flag "Update vis outside bsp" *update-leaf-when-outside-bsp* dm-boolean-toggle-pick-func)
|
||||
(float-var "Actor birth dist" #f (dm-lambda-meters-var (-> *ACTOR-bank* birth-dist)) 20 1 #t 0 10000 1)
|
||||
(float-var "Actor pause dist" #f (dm-lambda-meters-var (-> *ACTOR-bank* pause-dist)) 20 1 #t 0 10000 1)
|
||||
(let* ((prog-menu (new 'debug 'debug-menu *debug-menu-context* "Progress menu"))
|
||||
(prog-menu-node (new-dm-submenu "Progress" prog-menu))
|
||||
(other-menu-node
|
||||
(debug-menu-make-from-template *debug-menu-context*
|
||||
'(menu "Other"
|
||||
(flag "DECI Count" *display-deci-count* dm-boolean-toggle-pick-func)
|
||||
(flag "Actor graph" *display-actor-graph* dm-boolean-toggle-pick-func)
|
||||
(flag "Update vis outside bsp" *update-leaf-when-outside-bsp* dm-boolean-toggle-pick-func)
|
||||
(float-var "Actor birth dist" #f (dm-lambda-meters-var (-> *ACTOR-bank* birth-dist)) 20 1 #t 0 10000 1)
|
||||
(float-var "Actor pause dist" #f (dm-lambda-meters-var (-> *ACTOR-bank* pause-dist)) 20 1 #t 0 10000 1)
|
||||
(flag "Force progress" #f (dm-lambda-boolean-flag (-> *pc-settings* progress-force?)))
|
||||
)
|
||||
))
|
||||
(other-menu (-> (the-as debug-menu-item-submenu other-menu-node) submenu))
|
||||
)
|
||||
(dotimes (i 35)
|
||||
(debug-menu-append-item prog-menu
|
||||
(new-dm-func (new 'debug 'string 0 (enum->string progress-screen i)) i
|
||||
(lambda ((val progress-screen))
|
||||
(cond
|
||||
((-> *pc-settings* progress-force?)
|
||||
(cond
|
||||
((not *progress-process*)
|
||||
(make-levels-with-tasks-available-to-progress)
|
||||
(disable-level-text-file-loading)
|
||||
(set! (-> *progress-state* starting-state) val)
|
||||
(set! *progress-process* (make-init-process progress progress-init-by-other
|
||||
:to *dproc*
|
||||
:stack *progress-stack-top*))
|
||||
(let ((s5-1 *progress-process*))
|
||||
(set! (-> s5-1 0 completion-percentage) (calculate-completion (-> s5-1 0)))
|
||||
(set! *master-mode* 'progress)
|
||||
(set! (-> s5-1 0 display-level-index) 0) ;; geyser rock
|
||||
(set! (-> s5-1 0 next-level-index) (-> s5-1 0 display-level-index))
|
||||
(set! (-> s5-1 0 display-state) (progress-screen invalid))
|
||||
(set-transition-progress! (-> s5-1 0) 512)
|
||||
(set! (-> s5-1 0 task-index) (get-next-task-up -1 (-> s5-1 0 display-level-index)))
|
||||
)
|
||||
(when *progress-process*
|
||||
(enter! (-> *progress-process* 0) val 0)
|
||||
(set! (-> *progress-process* 0 card-info) #f)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(push! (-> *progress-process* 0))
|
||||
(set! (-> *progress-process* 0 next-display-state) val)
|
||||
(set! (-> *progress-process* 0 card-info) #f)
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(activate-progress *dproc* val)
|
||||
)
|
||||
)
|
||||
(set-master-mode 'progress)
|
||||
)
|
||||
))
|
||||
)
|
||||
(debug-menu-append-item other-menu prog-menu-node)
|
||||
|
||||
(debug-menu-append-item (-> *debug-menu-context* root-menu) other-menu-node)
|
||||
)
|
||||
)
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -668,7 +668,7 @@
|
|||
(draw *pc-settings* debug-buf)
|
||||
)
|
||||
(when (-> *pc-settings* display-actor-bank)
|
||||
(draw-string-xy (string-format "Actor Bank: ~,,1m/~,,1m (~D)" (-> *ACTOR-bank* pause-dist) (-> *ACTOR-bank* birth-dist) (-> *ACTOR-bank* birth-max)) debug-buf 512 232 (font-color default) (font-flags shadow kerning right))
|
||||
(draw-string-xy (string-format "Actor Bank: ~,,1m/~,,1m (~D)" (-> *ACTOR-bank* pause-dist) (-> *ACTOR-bank* birth-dist) (-> *ACTOR-bank* birth-max)) debug-buf 512 (- 224 8) (font-color default) (font-flags shadow kerning right))
|
||||
)
|
||||
)
|
||||
(let (
|
||||
|
|
|
@ -17,18 +17,8 @@
|
|||
(set! (-> *video-parms* relative-y-scale) 1.0)
|
||||
(set! *ticks-per-frame* 9765) ;; 585900 total?
|
||||
(set! (-> *math-camera* isometric vector 1 y) 0.5)
|
||||
(#cond
|
||||
(PC_PORT
|
||||
;; discard scissoring area
|
||||
(set! (-> *math-camera* y-pix) 128.0)
|
||||
(set! (-> *math-camera* y-clip) 512.0)
|
||||
;(set! (-> *video-parms* relative-y-scale) (/ 448.0 512.0))
|
||||
)
|
||||
(#t
|
||||
(set! (-> *math-camera* y-pix) 112.0)
|
||||
(set! (-> *math-camera* y-clip) 448.0)
|
||||
)
|
||||
)
|
||||
(set! (-> *math-camera* y-pix) 112.0)
|
||||
(set! (-> *math-camera* y-clip) 448.0)
|
||||
(set! (-> *shadow-data* texoffset y) 112.5)
|
||||
)
|
||||
(('pal)
|
||||
|
|
|
@ -541,6 +541,15 @@
|
|||
(f2-0 (-> *math-camera* perspective vector 1 y))
|
||||
(f0-1 (* -1.9996 (-> *math-camera* perspective vector 0 x)))
|
||||
)
|
||||
(#when PC_PORT
|
||||
(when (and *pc-settings* (not (-> *pc-settings* use-vis?)))
|
||||
;; these are the values used when the game is in 4x3
|
||||
;; when the game is in widescreen, HUD sprites are generally enlarged, which looks terrible
|
||||
(set! f1-0 (the-as float #xbeccdcf4))
|
||||
(set! f2-0 (the-as float #xbe6f01c8))
|
||||
(set! f0-1 (the-as float #x3f4cd277))
|
||||
)
|
||||
)
|
||||
(set-vector! (-> mtx2 vector 0) f0-1 0.0 0.0 0.0)
|
||||
(set-vector! (-> mtx2 vector 1) 0.0 (- (* (/ f2-0 f1-0) f0-1)) 0.0 0.0)
|
||||
(set-vector! (-> mtx2 vector 2) 0.0 0.0 (- f0-1) 0.0)
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
|
||||
|
||||
(defglobalconstant PC_KERNEL_VERSION_BUILD #x0000)
|
||||
(defglobalconstant PC_KERNEL_VERSION_REVISION #x0000)
|
||||
(defglobalconstant PC_KERNEL_VERSION_REVISION #x0001)
|
||||
|
||||
(defglobalconstant PC_KERNEL_VERSION_MINOR #x0000)
|
||||
(defglobalconstant PC_KERNEL_VERSION_MAJOR #x0001)
|
||||
|
@ -48,6 +48,7 @@
|
|||
|
||||
(defconstant ASPECT_4X3 (/ 4.0 3.0))
|
||||
(defconstant ASPECT_16X9 (/ 16.0 9.0))
|
||||
(defconstant ASPECT_16X9_SCALE (/ ASPECT_16X9 ASPECT_4X3))
|
||||
(defconstant PC_BASE_WIDTH 640)
|
||||
(defconstant PC_BASE_HEIGHT 480)
|
||||
|
||||
|
@ -181,6 +182,8 @@
|
|||
(dpi-y float) ;; DPI height scale
|
||||
(aspect-ratio-auto? symbol) ;; if on, aspect ratio is calculated automatically.
|
||||
(aspect-ratio float) ;; the desired aspect ratio. set auto to off and then this to 4/3 to force 4x3 aspect.
|
||||
(aspect-ratio-scale float) ;; aspect ratio compared to 4x3
|
||||
(aspect-ratio-reciprocal float) ;; aspect ratio compared to 3x4
|
||||
(fullscreen? symbol) ;; fullscreen status. can be #f, #t or borderless
|
||||
(letterbox? symbol) ;; letterbox. #f = stretched
|
||||
(vsync? symbol) ;; vsync.
|
||||
|
@ -194,6 +197,7 @@
|
|||
(aspect-custom-x int)
|
||||
(aspect-custom-y int)
|
||||
(debug-pad-display symbol)
|
||||
(progress-force? symbol)
|
||||
|
||||
(device-audio pc-device-info :inline) ;; used audio device
|
||||
(device-screen pc-device-info :inline) ;; used display device
|
||||
|
@ -258,6 +262,7 @@
|
|||
(set-fullscreen! (_type_ symbol) int)
|
||||
(set-size! (_type_ int int) int)
|
||||
(set-aspect! (_type_ int int) int)
|
||||
(set-aspect-ratio! (_type_ float) int)
|
||||
(read-from-file (_type_ string) symbol)
|
||||
(write-to-file (_type_ string) symbol)
|
||||
)
|
||||
|
@ -296,6 +301,7 @@
|
|||
(set! (-> obj new-lb?) #f)
|
||||
(set! (-> obj display-actor-bank) #f)
|
||||
(set! (-> obj debug-pad-display) #f)
|
||||
(set! (-> obj progress-force?) #f)
|
||||
(set! (-> obj font-scale) 1.0)
|
||||
(set! (-> obj aspect-custom-x) 1)
|
||||
(set! (-> obj aspect-custom-y) 1)
|
||||
|
|
|
@ -56,13 +56,20 @@
|
|||
|
||||
(defmethod set-aspect! pc-settings ((obj pc-settings) (aw int) (ah int))
|
||||
(let ((aspect (/ (the float aw) (the float ah))))
|
||||
(set! (-> *pc-settings* aspect-ratio) aspect)
|
||||
(set! (-> *pc-settings* aspect-ratio-auto?) #f)
|
||||
(set! (-> *pc-settings* use-vis?) #f)
|
||||
(set-aspect-ratio! obj aspect)
|
||||
(set! (-> obj aspect-ratio-auto?) #f)
|
||||
(set! (-> obj use-vis?) #f)
|
||||
)
|
||||
0)
|
||||
|
||||
|
||||
(defmethod set-aspect-ratio! pc-settings ((obj pc-settings) (aspect float))
|
||||
(set! (-> obj aspect-ratio) aspect)
|
||||
(set! (-> obj aspect-ratio-scale) (/ aspect ASPECT_4X3))
|
||||
(set! (-> obj aspect-ratio-reciprocal) (/ ASPECT_4X3 aspect))
|
||||
0)
|
||||
|
||||
|
||||
|
||||
(defmethod update-from-os pc-settings ((obj pc-settings))
|
||||
"Update settings from the PC kernel to GOAL."
|
||||
|
@ -73,8 +80,8 @@
|
|||
|
||||
(when (-> obj use-vis?)
|
||||
(if (= (-> *setting-control* default aspect-ratio) 'aspect4x3)
|
||||
(set! (-> obj aspect-ratio) ASPECT_4X3)
|
||||
(set! (-> obj aspect-ratio) ASPECT_16X9)
|
||||
(set-aspect-ratio! obj ASPECT_4X3)
|
||||
(set-aspect-ratio! obj ASPECT_16X9)
|
||||
)
|
||||
)
|
||||
|
||||
|
@ -82,7 +89,7 @@
|
|||
(cond
|
||||
((and (not (-> obj use-vis?)) (-> obj aspect-ratio-auto?))
|
||||
;; the window determines the resolution
|
||||
(set! (-> obj aspect-ratio) win-aspect)
|
||||
(set-aspect-ratio! obj win-aspect)
|
||||
(set! (-> obj width) (-> obj win-width))
|
||||
(set! (-> obj height) (-> obj win-height))
|
||||
)
|
||||
|
@ -128,11 +135,26 @@
|
|||
(update-from-os obj)
|
||||
(update-to-os obj)
|
||||
|
||||
(when #t ;;(not (-> obj use-vis?))
|
||||
(set! (-> *video-parms* relative-x-scale) (/ ASPECT_4X3 (-> obj aspect-ratio)))
|
||||
(set! (-> *video-parms* relative-x-scale-reciprical) (/ (-> obj aspect-ratio) ASPECT_4X3))
|
||||
(when (not (-> obj use-vis?))
|
||||
(set! (-> *video-parms* relative-x-scale) (-> obj aspect-ratio-reciprocal))
|
||||
(set! (-> *video-parms* relative-x-scale-reciprical) (-> obj aspect-ratio-scale))
|
||||
(set! (-> *font-default-matrix* vector 0 x) (-> *video-parms* relative-x-scale))
|
||||
)
|
||||
(when (not (-> obj use-vis?))
|
||||
(when *progress-process*
|
||||
;; adjust sizes for progress.
|
||||
;; video.gc sets the sizes in the normal game.
|
||||
(let ((pr (-> *progress-process*))
|
||||
(wide-adjust (* 4.0 (- (/ (-> obj aspect-ratio-scale) ASPECT_16X9_SCALE) (1/ ASPECT_16X9_SCALE))))
|
||||
)
|
||||
(set! (-> pr sides-x-scale) 1.0)
|
||||
(set! (-> pr sides-y-scale) 13.0)
|
||||
;(set! (-> pr left-x-offset) (+ 59 (the int (* (-> obj aspect-ratio-scale) -59))))
|
||||
;(set! (-> pr right-x-offset) 26)
|
||||
;(set! (-> pr button-scale) (+ 1.0 (* wide-adjust 0.1)))
|
||||
)
|
||||
)
|
||||
)
|
||||
(if (and *debug-segment* (-> obj debug-pad-display))
|
||||
(debug-pad-display (-> *cpad-list* cpads 0))
|
||||
)
|
||||
|
@ -157,7 +179,7 @@
|
|||
(format *pc-temp-string* "target aspect: ~,,3f/~,,3f A: ~A/~A L: ~A~%" (-> obj aspect-ratio) (/ (the float (-> obj win-width)) (the float (-> obj win-height))) (-> obj aspect-ratio-auto?) (-> obj use-vis?) (-> obj letterbox?))
|
||||
(format *pc-temp-string* "fullscreen: ~A ~A~%" (-> obj fullscreen?) (-> obj vsync?))
|
||||
|
||||
(draw-string-xy *pc-temp-string* buf 0 (- 240 (* 8 4)) (font-color default) (font-flags shadow kerning))
|
||||
(draw-string-xy *pc-temp-string* buf 0 (- 224 (* 8 4)) (font-color default) (font-flags shadow kerning))
|
||||
|
||||
(none))
|
||||
|
||||
|
|
|
@ -145,7 +145,7 @@
|
|||
(total-nb-of-buzzers int32 :offset-assert 288)
|
||||
(card-info mc-slot-info :offset-assert 292)
|
||||
(last-option-index-change int64 :offset-assert 296)
|
||||
(video-mode-timeout uint64 :offset-assert 304)
|
||||
(video-mode-timeout int64 :offset-assert 304)
|
||||
(display-state-stack progress-screen 5 :offset-assert 312)
|
||||
(option-index-stack int32 5 :offset-assert 352)
|
||||
(display-state-pos int32 :offset-assert 372)
|
||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -333,9 +333,7 @@
|
|||
(when (> val max-val)
|
||||
(set! max-val val))
|
||||
)
|
||||
|
||||
max-val
|
||||
)
|
||||
max-val)
|
||||
)
|
||||
|
||||
|
||||
|
|
|
@ -35,7 +35,9 @@ files_with_modifications = [
|
|||
"plant-boss",
|
||||
"helix-water",
|
||||
"lavatube-energy",
|
||||
"sage-finalboss-FIN"
|
||||
"sage-finalboss-FIN",
|
||||
"progress",
|
||||
"entity"
|
||||
]
|
||||
|
||||
for file in files:
|
||||
|
|
Loading…
Reference in a new issue