g/j1: adjust menu sprite positioning with a combination of manual alignment and approximation

This commit is contained in:
Tyler Wilding
2024-07-20 15:21:14 -04:00
parent 2ec4a4922f
commit 9a66e64976
3 changed files with 835 additions and 0 deletions
+4
View File
@@ -1134,6 +1134,10 @@
`(> (fabs (- ,val 0.0))
0.000000000000000001))
(defmacro fequal-epsilon? (a b epsilon)
`(< (fabs (- ,a ,b))
,epsilon))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; user stuf
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+552
View File
@@ -1396,6 +1396,558 @@
;;---------------------------
;; function overrides
;; NOTE - the following is generated from ./scripts/gsrc/jak1-sprite-adjust.py
;; They are polynomials fit with manually adjusted values for all common aspect ratios
;; so they can make a decent approximation interpolating between
(defun pc-sprite-adjust-left ((aspect-ratio float))
(cond
((fequal-epsilon? aspect-ratio 1.0 0.01) 20.0)
((fequal-epsilon? aspect-ratio 1.25 0.01) 4.0)
((fequal-epsilon? aspect-ratio 1.33 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.5 0.01) -6.0)
((fequal-epsilon? aspect-ratio 1.6 0.01) -10.0)
((fequal-epsilon? aspect-ratio 1.78 0.01) -14.0)
((fequal-epsilon? aspect-ratio 1.85 0.01) -16.0)
((fequal-epsilon? aspect-ratio 2.33 0.01) -25.0)
((fequal-epsilon? aspect-ratio 2.35 0.01) -26.0)
((fequal-epsilon? aspect-ratio 3.56 0.01) -37.0)
(else
(+ 121.37227965381875
(* -145.13874571806738 aspect-ratio)
(* 48.695824268929236 aspect-ratio aspect-ratio)
(* -5.737940185600177 aspect-ratio aspect-ratio aspect-ratio)))))
(defun pc-sprite-adjust-right ((aspect-ratio float))
(cond
((fequal-epsilon? aspect-ratio 1.0 0.01) -33.0)
((fequal-epsilon? aspect-ratio 1.25 0.01) -6.0)
((fequal-epsilon? aspect-ratio 1.33 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.5 0.01) 12.0)
((fequal-epsilon? aspect-ratio 1.6 0.01) 18.0)
((fequal-epsilon? aspect-ratio 1.78 0.01) 26.0)
((fequal-epsilon? aspect-ratio 1.85 0.01) 29.0)
((fequal-epsilon? aspect-ratio 2.33 0.01) 45.0)
((fequal-epsilon? aspect-ratio 2.35 0.01) 46.0)
((fequal-epsilon? aspect-ratio 3.56 0.01) 65.0)
(else
(+ -205.4294994422315
(* 245.07283711809043 aspect-ratio)
(* -81.04347133064093 aspect-ratio aspect-ratio)
(* 9.423126530695802 aspect-ratio aspect-ratio aspect-ratio)))))
(defun pc-sprite-adjust-cross-x ((aspect-ratio float))
(cond
((fequal-epsilon? aspect-ratio 1.0 0.01) -20.0)
((fequal-epsilon? aspect-ratio 1.25 0.01) -5.0)
((fequal-epsilon? aspect-ratio 1.33 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.5 0.01) 5.0)
((fequal-epsilon? aspect-ratio 1.6 0.01) 8.0)
((fequal-epsilon? aspect-ratio 1.78 0.01) 15.0)
((fequal-epsilon? aspect-ratio 1.85 0.01) 17.0)
((fequal-epsilon? aspect-ratio 2.33 0.01) 30.0)
((fequal-epsilon? aspect-ratio 2.35 0.01) 30.0)
((fequal-epsilon? aspect-ratio 3.56 0.01) 45.0)
(else
(+ -98.75041386103345
(* 104.4004528706783 aspect-ratio)
(* -27.27525895954647 aspect-ratio aspect-ratio)
(* 2.6112419651912617 aspect-ratio aspect-ratio aspect-ratio)))))
(defun pc-sprite-adjust-cross-y ((aspect-ratio float))
(cond
((fequal-epsilon? aspect-ratio 1.0 0.01) -20.0)
((fequal-epsilon? aspect-ratio 1.25 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.33 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.5 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.6 0.01) 5.0)
((fequal-epsilon? aspect-ratio 1.78 0.01) 10.0)
((fequal-epsilon? aspect-ratio 1.85 0.01) 10.0)
((fequal-epsilon? aspect-ratio 2.33 0.01) 20.0)
((fequal-epsilon? aspect-ratio 2.35 0.01) 20.0)
((fequal-epsilon? aspect-ratio 3.56 0.01) 25.0)
(else
(+ -92.55990871923132
(* 104.71302956908977 aspect-ratio)
(* -32.46993312399963 aspect-ratio aspect-ratio)
(* 3.4672700107735115 aspect-ratio aspect-ratio aspect-ratio)))))
(defun pc-sprite-adjust-square-x ((aspect-ratio float))
(cond
((fequal-epsilon? aspect-ratio 1.0 0.01) -5.0)
((fequal-epsilon? aspect-ratio 1.25 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.33 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.5 0.01) 5.0)
((fequal-epsilon? aspect-ratio 1.6 0.01) 5.0)
((fequal-epsilon? aspect-ratio 1.78 0.01) 8.0)
((fequal-epsilon? aspect-ratio 1.85 0.01) 8.0)
((fequal-epsilon? aspect-ratio 2.33 0.01) 15.0)
((fequal-epsilon? aspect-ratio 2.35 0.01) 15.0)
((fequal-epsilon? aspect-ratio 3.56 0.01) 17.0)
(else
(+ -22.034620779370684
(* 15.66980500404166 aspect-ratio)
(* 2.6395010789749374 aspect-ratio aspect-ratio)
(* -1.1122480459486384 aspect-ratio aspect-ratio aspect-ratio)))))
(defun pc-sprite-adjust-square-y ((aspect-ratio float))
(cond
((fequal-epsilon? aspect-ratio 1.0 0.01) -10.0)
((fequal-epsilon? aspect-ratio 1.25 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.33 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.5 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.6 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.78 0.01) 10.0)
((fequal-epsilon? aspect-ratio 1.85 0.01) 10.0)
((fequal-epsilon? aspect-ratio 2.33 0.01) 15.0)
((fequal-epsilon? aspect-ratio 2.35 0.01) 15.0)
((fequal-epsilon? aspect-ratio 3.56 0.01) 15.0)
(else
(+ -35.887413062108386
(* 28.768844269882614 aspect-ratio)
(* -0.854904339304392 aspect-ratio aspect-ratio)
(* -0.9020647898186882 aspect-ratio aspect-ratio aspect-ratio)))))
(defun pc-sprite-adjust-triangle-x ((aspect-ratio float))
(cond
((fequal-epsilon? aspect-ratio 1.0 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.25 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.33 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.5 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.6 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.78 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.85 0.01) 0.0)
((fequal-epsilon? aspect-ratio 2.33 0.01) 2.0)
((fequal-epsilon? aspect-ratio 2.35 0.01) 2.0)
((fequal-epsilon? aspect-ratio 3.56 0.01) 3.0)
(else
(+ 9.074933988821043
(* -16.012653345486786 aspect-ratio)
(* 8.413647131791468 aspect-ratio aspect-ratio)
(* -1.2341491172835792 aspect-ratio aspect-ratio aspect-ratio)))))
(defun pc-sprite-adjust-triangle-y ((aspect-ratio float))
(cond
((fequal-epsilon? aspect-ratio 1.0 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.25 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.33 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.5 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.6 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.78 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.85 0.01) 0.0)
((fequal-epsilon? aspect-ratio 2.33 0.01) 5.0)
((fequal-epsilon? aspect-ratio 2.35 0.01) 5.0)
((fequal-epsilon? aspect-ratio 3.56 0.01) 5.0)
(else
(+ 24.319264777517994
(* -43.26989970602368 aspect-ratio)
(* 23.07604741978599 aspect-ratio aspect-ratio)
(* -3.494974989657488 aspect-ratio aspect-ratio aspect-ratio)))))
(defun pc-sprite-adjust-circle-x ((aspect-ratio float))
(cond
((fequal-epsilon? aspect-ratio 1.0 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.25 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.33 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.5 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.6 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.78 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.85 0.01) 0.0)
((fequal-epsilon? aspect-ratio 2.33 0.01) 2.0)
((fequal-epsilon? aspect-ratio 2.35 0.01) 2.0)
((fequal-epsilon? aspect-ratio 3.56 0.01) 5.0)
(else
(+ 7.769390144448719
(* -13.422040271641388 aspect-ratio)
(* 6.780103459545601 aspect-ratio aspect-ratio)
(* -0.9064673601247457 aspect-ratio aspect-ratio aspect-ratio)))))
(defun pc-sprite-adjust-circle-y ((aspect-ratio float))
(cond
((fequal-epsilon? aspect-ratio 1.0 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.25 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.33 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.5 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.6 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.78 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.85 0.01) 0.0)
((fequal-epsilon? aspect-ratio 2.33 0.01) -7.0)
((fequal-epsilon? aspect-ratio 2.35 0.01) -7.0)
((fequal-epsilon? aspect-ratio 3.56 0.01) -10.0)
(else
(+ -32.088654921966715
(* 56.69193997766507 aspect-ratio)
(* -29.856150879331594 aspect-ratio aspect-ratio)
(* 4.401442349782235 aspect-ratio aspect-ratio aspect-ratio)))))
(defun pc-sprite-adjust-percent-x ((aspect-ratio float))
(cond
((fequal-epsilon? aspect-ratio 1.0 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.25 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.33 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.5 0.01) 12.0)
((fequal-epsilon? aspect-ratio 1.6 0.01) 12.0)
((fequal-epsilon? aspect-ratio 1.78 0.01) 15.0)
((fequal-epsilon? aspect-ratio 1.85 0.01) 15.0)
((fequal-epsilon? aspect-ratio 2.33 0.01) 18.0)
((fequal-epsilon? aspect-ratio 2.35 0.01) 18.0)
((fequal-epsilon? aspect-ratio 3.56 0.01) 25.0)
(else
(+ -46.209527361482614
(* 59.19334582683605 aspect-ratio)
(* -17.978708435875035 aspect-ratio aspect-ratio)
(* 1.9546083242648873 aspect-ratio aspect-ratio aspect-ratio)))))
(defun pc-sprite-adjust-autosave-x ((aspect-ratio float))
(cond
((fequal-epsilon? aspect-ratio 1.0 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.25 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.33 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.5 0.01) 10.0)
((fequal-epsilon? aspect-ratio 1.6 0.01) 10.0)
((fequal-epsilon? aspect-ratio 1.78 0.01) 10.0)
((fequal-epsilon? aspect-ratio 1.85 0.01) 10.0)
((fequal-epsilon? aspect-ratio 2.33 0.01) 15.0)
((fequal-epsilon? aspect-ratio 2.35 0.01) 15.0)
((fequal-epsilon? aspect-ratio 3.56 0.01) 18.0)
(else
(+ -25.454818080453748
(* 28.58764000115764 aspect-ratio)
(* -5.122397663089315 aspect-ratio aspect-ratio)
(* 0.1450488213340339 aspect-ratio aspect-ratio aspect-ratio)))))
(defun pc-sprite-adjust-orb-x ((aspect-ratio float))
(cond
((fequal-epsilon? aspect-ratio 1.0 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.25 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.33 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.5 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.6 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.78 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.85 0.01) 0.0)
((fequal-epsilon? aspect-ratio 2.33 0.01) 0.0)
((fequal-epsilon? aspect-ratio 2.35 0.01) 0.0)
((fequal-epsilon? aspect-ratio 3.56 0.01) 5.0)
(else
(+ -3.26385961093079
(* 6.476532684613467 aspect-ratio)
(* -4.083859180614655 aspect-ratio aspect-ratio)
(* 0.819204392897082 aspect-ratio aspect-ratio aspect-ratio)))))
(defun pc-sprite-adjust-orb-glow-x ((aspect-ratio float))
(cond
((fequal-epsilon? aspect-ratio 1.0 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.25 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.33 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.5 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.6 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.78 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.85 0.01) 0.0)
((fequal-epsilon? aspect-ratio 2.33 0.01) 0.0)
((fequal-epsilon? aspect-ratio 2.35 0.01) 0.0)
((fequal-epsilon? aspect-ratio 3.56 0.01) 4.0)
(else
(+ -2.6110876887446324
(* 5.181226147690773 aspect-ratio)
(* -3.267087344491723 aspect-ratio aspect-ratio)
(* 0.6553635143176653 aspect-ratio aspect-ratio aspect-ratio)))))
(defun pc-sprite-adjust-orb-text-x ((aspect-ratio float))
(cond
((fequal-epsilon? aspect-ratio 1.0 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.25 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.33 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.5 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.6 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.78 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.85 0.01) 0.0)
((fequal-epsilon? aspect-ratio 2.33 0.01) 0.0)
((fequal-epsilon? aspect-ratio 2.35 0.01) 0.0)
((fequal-epsilon? aspect-ratio 3.56 0.01) 10.0)
(else
(+ -6.52771922186158
(* 12.953065369226934 aspect-ratio)
(* -8.16771836122931 aspect-ratio aspect-ratio)
(* 1.638408785794164 aspect-ratio aspect-ratio aspect-ratio)))))
(defun pc-sprite-adjust-cell-x ((aspect-ratio float))
(cond
((fequal-epsilon? aspect-ratio 1.0 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.25 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.33 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.5 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.6 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.78 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.85 0.01) 0.0)
((fequal-epsilon? aspect-ratio 2.33 0.01) 0.0)
((fequal-epsilon? aspect-ratio 2.35 0.01) 0.0)
((fequal-epsilon? aspect-ratio 3.56 0.01) -10.0)
(else
(+ 6.52771922186158
(* -12.953065369226934 aspect-ratio)
(* 8.16771836122931 aspect-ratio aspect-ratio)
(* -1.638408785794164 aspect-ratio aspect-ratio aspect-ratio)))))
(defun pc-sprite-adjust-cell-text-x ((aspect-ratio float))
(cond
((fequal-epsilon? aspect-ratio 1.0 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.25 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.33 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.5 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.6 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.78 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.85 0.01) 0.0)
((fequal-epsilon? aspect-ratio 2.33 0.01) 0.0)
((fequal-epsilon? aspect-ratio 2.35 0.01) 0.0)
((fequal-epsilon? aspect-ratio 3.56 0.01) 2.0)
(else
(+ -1.3055438443723162
(* 2.5906130738453865 aspect-ratio)
(* -1.6335436722458616 aspect-ratio aspect-ratio)
(* 0.32768175715883263 aspect-ratio aspect-ratio aspect-ratio)))))
(defun pc-sprite-adjust-buzzer-text-x ((aspect-ratio float))
(cond
((fequal-epsilon? aspect-ratio 1.0 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.25 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.33 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.5 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.6 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.78 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.85 0.01) 0.0)
((fequal-epsilon? aspect-ratio 2.33 0.01) 0.0)
((fequal-epsilon? aspect-ratio 2.35 0.01) 0.0)
((fequal-epsilon? aspect-ratio 3.56 0.01) -5.0)
(else
(+ 3.26385961093079
(* -6.476532684613467 aspect-ratio)
(* 4.083859180614655 aspect-ratio aspect-ratio)
(* -0.819204392897082 aspect-ratio aspect-ratio aspect-ratio)))))
(defun pc-sprite-adjust-options-text-x ((aspect-ratio float))
(cond
((fequal-epsilon? aspect-ratio 1.0 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.25 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.33 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.5 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.6 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.78 0.01) 0.0)
((fequal-epsilon? aspect-ratio 1.85 0.01) 0.0)
((fequal-epsilon? aspect-ratio 2.33 0.01) 0.0)
((fequal-epsilon? aspect-ratio 2.35 0.01) 0.0)
((fequal-epsilon? aspect-ratio 3.56 0.01) 3.0)
(else
(+ -1.9583157665584714
(* 3.885919610768078 aspect-ratio)
(* -2.450315508368792 aspect-ratio aspect-ratio)
(* 0.491522635738249 aspect-ratio aspect-ratio aspect-ratio)))))
(define *PC-CROSS-X-ADJUST* 0.0)
(define *PC-CROSS-Y-ADJUST* 0.0)
(define *PC-SQUARE-X-ADJUST* 0.0)
(define *PC-SQUARE-Y-ADJUST* 0.0)
(define *PC-TRIANGLE-X-ADJUST* 0.0)
(define *PC-TRIANGLE-Y-ADJUST* 0.0)
(define *PC-CIRCLE-X-ADJUST* 0.0)
(define *PC-CIRCLE-Y-ADJUST* 0.0)
(define *PC-PERCENT-X-ADJUST* 0.0)
(define *PC-AUTOSAVE-X-ADJUST* 0.0)
(define *PC-ORB-X-ADJUST* 0.0)
(define *PC-ORB-GLOW-X-ADJUST* 0.0)
(define *PC-ORB-TEXT-X-ADJUST* 0.0)
(define *PC-CELL-X-ADJUST* 0.0)
(define *PC-CELL-TEXT-X-ADJUST* 0.0)
(define *PC-BUZZER-TEXT-X-ADJUST* 0.0)
(define *PC-OPTIONS-TEXT-X-ADJUST* 0.0)
(defmethod adjust-ratios ((this progress) (aspect symbol) (video-mode symbol))
(case aspect
(('aspect4x3)
(set! (-> this sides-x-scale) 1.0)
(set! (-> this sides-y-scale) 13.0)
(set! (-> this left-x-offset) 0)
(set! (-> this right-x-offset) 0)
(set! (-> this button-scale) 1.0)
(set! (-> this slot-scale) 8192.0)
(set! (-> this small-orb-y-offset) 58)
(set! (-> this icons 5 scale-x) 0.008)
(set! (-> this icons 5 scale-y) -0.009)
(set! (-> this big-orb-y-offset) 243)
(set! (-> this icons 4 scale-x) 0.013)
(set! (-> this icons 4 scale-y) -0.015))
(('aspect16x9)
(set! (-> this sides-x-scale) 1.2)
(set! (-> this sides-y-scale) 9.8)
(set! (-> this left-x-offset) -10)
(set! (-> this right-x-offset) 17)
(set! (-> this button-scale) 1.05)
(set! (-> this slot-scale) 6144.0)
(set! (-> this small-orb-y-offset) 59)
(set! (-> this icons 5 scale-x) 0.008)
(set! (-> this icons 5 scale-y) -0.0098)
(set! (-> this big-orb-y-offset) 255)
(set! (-> this icons 4 scale-x) 0.017)
(set! (-> this icons 4 scale-y) -0.0205)))
(when (not (-> *pc-settings* use-vis?))
(format 0 "[PC] Adjusting sprite positioning, aspect-ratio: ~f~%" (-> *pc-settings* aspect-ratio))
(set! (-> this left-x-offset) (the int (pc-sprite-adjust-left (-> *pc-settings* aspect-ratio))))
(set! (-> this right-x-offset) (the int (pc-sprite-adjust-right (-> *pc-settings* aspect-ratio))))
(set! *PC-CROSS-X-ADJUST* (pc-sprite-adjust-cross-x (-> *pc-settings* aspect-ratio)))
(set! *PC-CROSS-Y-ADJUST* (pc-sprite-adjust-cross-y (-> *pc-settings* aspect-ratio)))
(set! *PC-SQUARE-X-ADJUST* (pc-sprite-adjust-square-x (-> *pc-settings* aspect-ratio)))
(set! *PC-SQUARE-Y-ADJUST* (pc-sprite-adjust-square-y (-> *pc-settings* aspect-ratio)))
(set! *PC-TRIANGLE-X-ADJUST* (pc-sprite-adjust-triangle-x (-> *pc-settings* aspect-ratio)))
(set! *PC-TRIANGLE-Y-ADJUST* (pc-sprite-adjust-triangle-y (-> *pc-settings* aspect-ratio)))
(set! *PC-CIRCLE-X-ADJUST* (pc-sprite-adjust-circle-x (-> *pc-settings* aspect-ratio)))
(set! *PC-CIRCLE-Y-ADJUST* (pc-sprite-adjust-circle-y (-> *pc-settings* aspect-ratio)))
(set! *PC-PERCENT-X-ADJUST* (pc-sprite-adjust-percent-x (-> *pc-settings* aspect-ratio)))
(set! *PC-AUTOSAVE-X-ADJUST* (pc-sprite-adjust-autosave-x (-> *pc-settings* aspect-ratio)))
(set! *PC-ORB-X-ADJUST* (pc-sprite-adjust-orb-x (-> *pc-settings* aspect-ratio)))
(set! *PC-ORB-GLOW-X-ADJUST* (pc-sprite-adjust-orb-glow-x (-> *pc-settings* aspect-ratio)))
(set! *PC-ORB-TEXT-X-ADJUST* (pc-sprite-adjust-orb-text-x (-> *pc-settings* aspect-ratio)))
(set! *PC-CELL-X-ADJUST* (pc-sprite-adjust-cell-x (-> *pc-settings* aspect-ratio)))
(set! *PC-CELL-TEXT-X-ADJUST* (pc-sprite-adjust-cell-text-x (-> *pc-settings* aspect-ratio)))
(set! *PC-BUZZER-TEXT-X-ADJUST* (pc-sprite-adjust-buzzer-text-x (-> *pc-settings* aspect-ratio)))
(set! *PC-OPTIONS-TEXT-X-ADJUST* (pc-sprite-adjust-options-text-x (-> *pc-settings* aspect-ratio))))
(when (= video-mode 'pal)
(set! (-> this icons 5 scale-y) (* 1.15 (-> this icons 5 scale-y)))
(set! (-> this icons 4 scale-x) (* 1.05 (-> this icons 4 scale-x)))
(set! (-> this icons 4 scale-y) (* (-> this icons 4 scale-y) (the-as float (if (= aspect 'aspect16x9) 1.18 1.15))))
(+! (-> this big-orb-y-offset) (if (= aspect 'aspect16x9) 3 2)))
0
(none))
(defmethod draw-progress ((this progress))
(let ((f30-0 (+ -409.0 (-> this particles 2 init-pos x) (* 0.8 (the float (-> this left-x-offset)))))
(s5-0 (if (or (-> this stat-transition) (nonzero? (-> this level-transition))) 0 (-> this transition-offset))))
(let ((f28-0 (if (or (-> this stat-transition) (nonzero? (-> this level-transition))) 1.0 (-> this transition-percentage-invert))))
(let* ((s3-0 (-> *display* frames (-> *display* on-screen) frame global-buf))
(s4-0 (-> s3-0 base)))
(let ((s2-0 draw-string-xy))
(format (clear *temp-string*) "~D" (the int (+ 0.5 (-> *target* game money))))
(s2-0 *temp-string*
s3-0
(the int (+ *PC-ORB-TEXT-X-ADJUST* 428.0 (the float s5-0) f30-0))
(- 12 (the int (* 0.16666667 f30-0)))
(font-color default)
(font-flags shadow kerning large)))
(let ((s2-1 draw-string-xy))
(format (clear *temp-string*) "~D" (the int (+ 0.5 (-> *target* game fuel))))
(s2-1 *temp-string*
s3-0
(the int (+ *PC-CELL-TEXT-X-ADJUST* 456.0 (the float (adjust-pos s5-0 50)) f30-0))
(- 48 (the int (* 0.125 f30-0)))
(font-color default)
(font-flags shadow kerning large)))
(let ((s2-2 draw-string-xy))
(format (clear *temp-string*) "~D" (the int (+ 0.5 (-> *target* fact buzzer))))
(s2-2 *temp-string*
s3-0
(the int (+ *PC-BUZZER-TEXT-X-ADJUST* 469.0 (the float (adjust-pos s5-0 100)) f30-0))
89
(font-color default)
(font-flags shadow kerning large)))
(let ((a3-4 (-> s3-0 base)))
(let ((v1-20 (the-as object (-> s3-0 base))))
(set! (-> (the-as dma-packet v1-20) dma) (new 'static 'dma-tag :id (dma-tag-id next)))
(set! (-> (the-as dma-packet v1-20) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet v1-20) vif1) (new 'static 'vif-tag))
(set! (-> s3-0 base) (&+ (the-as pointer v1-20) 16)))
(dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group)
(bucket-id debug)
s4-0
(the-as (pointer dma-tag) a3-4))))
(let ((s4-2 (new 'stack
'font-context
*font-default-matrix*
(the int (+ *PC-OPTIONS-TEXT-X-ADJUST* (- 423.0 (the float (/ (-> this left-x-offset) 2))) f30-0 (the float (adjust-pos s5-0 150))))
131
0.0
(font-color default)
(font-flags shadow kerning))))
(let ((v1-29 s4-2)) (set! (-> v1-29 width) (the float 100)))
(let ((v1-30 s4-2)) (set! (-> v1-30 height) (the float 15)))
(let ((v1-31 s4-2)) (set! (-> v1-31 scale) 0.5))
(set! (-> s4-2 flags) (font-flags shadow kerning large))
(print-game-text (lookup-text! *common-text* (text-id options) #f) s4-2 #f 128 22)
(let ((v1-34 s4-2)) (set! (-> v1-34 width) (the float 160)))
(let ((v1-35 s4-2)) (set! (-> v1-35 height) (the float 22)))
(let ((v1-36 s4-2)) (set! (-> v1-36 scale) 1.3))
(let ((a0-31 s4-2)) (set! (-> a0-31 color) (font-color progress-percent)))
(set! (-> s4-2 origin x)
(+ *PC-PERCENT-X-ADJUST* (- 435.0 (the float (if (< (-> *progress-process* 0 completion-percentage) 10.0) 93 80))) f30-0))
(set! (-> s4-2 origin y) 180.0)
(set! (-> s4-2 flags) (font-flags shadow kerning middle middle-vert large))
(let ((s3-3 print-game-text))
(format (clear *temp-string*) "~2D%" (the int (-> *progress-process* 0 completion-percentage)))
(s3-3 *temp-string* s4-2 #f (the int (* 128.0 f28-0)) 22))))
0.0
(let ((f28-1 (+ -94.0 (-> this particles 2 init-pos x)))
(s3-4 90)
(s4-3 224)
(s2-5 (/ s5-0 5))
(f26-3 (-> this button-scale)))
;; CROSS
(let ((f24-0 (* 182.04445 (- (/ -36.0 f26-3) (the float s2-5)))))
(set! (-> this particles 27 init-pos x) (+ *PC-CROSS-X-ADJUST* (the float (+ s3-4 (the int (* f28-1 (cos f24-0)))))))
(set! (-> this particles 27 init-pos y) (+ *PC-CROSS-Y-ADJUST* (the float (+ s4-3 (the int (* f28-1 (sin f24-0))))))))
;; SQUARE
(let ((f24-2 (* 182.04445 (- (/ -21.0 f26-3) (the float (adjust-pos s2-5 10))))))
(set! (-> this particles 28 init-pos x) (+ *PC-SQUARE-X-ADJUST* (the float (+ s3-4 (the int (* f28-1 (cos f24-2)))))))
(set! (-> this particles 28 init-pos y) (+ *PC-SQUARE-Y-ADJUST* (the float (+ s4-3 (the int (* f28-1 (sin f24-2))))))))
;; TRIANGLE
(let ((f24-4 (* 182.04445 (- (/ -6.0 f26-3) (the float (adjust-pos s2-5 15))))))
(set! (-> this particles 29 init-pos x) (+ *PC-TRIANGLE-X-ADJUST* (the float (+ s3-4 (the int (* f28-1 (cos f24-4)))))))
(set! (-> this particles 29 init-pos y) (+ *PC-TRIANGLE-Y-ADJUST* (the float (+ s4-3 (the int (* f28-1 (sin f24-4))))))))
;; CIRCLE
(let ((f26-5 (* 182.04445 (- (/ 9.0 f26-3) (the float (adjust-pos s2-5 20))))))
(set! (-> this particles 30 init-pos x) (+ *PC-CIRCLE-X-ADJUST* (the float (+ s3-4 (the int (* f28-1 (cos f26-5)))))))
(set! (-> this particles 30 init-pos y) (+ *PC-CIRCLE-Y-ADJUST* (the float (+ s4-3 (the int (* f28-1 (sin f26-5)))))))))
(when *cheat-mode*
(let ((a0-46 "AUTO SAVE OFF"))
(if (-> *setting-control* current auto-save) (set! a0-46 "AUTO SAVE ON"))
(let* ((s3-5 (-> *display* frames (-> *display* on-screen) frame global-buf))
(s4-4 (-> s3-5 base)))
(draw-string-xy a0-46
s3-5
(the int (+ *PC-AUTOSAVE-X-ADJUST* 430.0 f30-0))
200
(font-color progress-memcard)
(font-flags shadow kerning middle))
(let ((a3-9 (-> s3-5 base)))
(let ((v1-81 (the-as object (-> s3-5 base))))
(set! (-> (the-as dma-packet v1-81) dma) (new 'static 'dma-tag :id (dma-tag-id next)))
(set! (-> (the-as dma-packet v1-81) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet v1-81) vif1) (new 'static 'vif-tag))
(set! (-> s3-5 base) (&+ (the-as pointer v1-81) 16)))
(dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group)
(bucket-id debug)
s4-4
(the-as (pointer dma-tag) a3-9))))))
(let ((a0-52 (-> this icons 5 icon 0 root)))
(set-yaw-angle-clear-roll-pitch! a0-52 (- (y-angle a0-52) (* 182.04445 (* 4.0 (-> *display* time-adjust-ratio))))))
(let* ((f28-2 (* 0.00024414062 (the float (-> *progress-process* 0 in-out-position))))
(f30-1 (* 300.0 f28-2)))
(set! (-> this particles 18 init-pos x)
(+ *PC-ORB-GLOW-X-ADJUST* (the float (+ (the int (the float (adjust-pos s5-0 50))) 394 (the int f30-1) (-> this right-x-offset)))))
(set! (-> this particles 18 init-pos y) (the float (- 40 (the int (* 80.0 f28-2)))))
(set! (-> this icons 5 icon-x)
(+ (the int *PC-ORB-X-ADJUST*) (the int (the float (adjust-pos s5-0 50))) 393 (the int f30-1) (-> this right-x-offset)))
(set! (-> this icons 5 icon-y) (- (-> this small-orb-y-offset) (the int (* 80.0 f28-2))))
(set! (-> this particles 16 init-pos x)
(+ *PC-CELL-X-ADJUST* (the float (+ (the int (the float (adjust-pos s5-0 100))) 425 (the int f30-1) (-> this right-x-offset)))))
(set! (-> this particles 16 init-pos y) (the float (- 112 (the int (* 60.0 f28-2)))))
(set! (-> this particles 17 init-pos x)
(the float
(+ (the int (the float (adjust-pos s5-0 150)))
442
(the int f30-1)
(the int (* 0.7 (the float (-> this right-x-offset)))))))))
(set! (-> this particles 17 init-pos y) 193.0)
0
(none))
(defun init-game-options ((obj progress))
"Set the options for all of the menus."
;; start off by making them all invalid
+279
View File
@@ -0,0 +1,279 @@
import numpy as np
import matplotlib.pyplot as plt
from numpy.polynomial.polynomial import Polynomial
# 1:1 - 1.00 - 500x500
# 5:4 - 1.25 - 640x512
# 4:3 - 1.33 - 640x480
# 3:2 - 1.50 - 480x320
# 16:10 - 1.60 - 640x400
# 16:9 - 1.78 - 640x360
# 1.85:1 - 1.85 - 640x346
# 21:9 - 2.33 - 640x274
# 2.35:1 - 2.35 - 640x272
# 2.39:1 - 2.39 - 640x267
# 32:9 - 3.56 - 1280x360
# (ml "progress-pc")
# (pc-set-window-size 500 500)
# (set! (-> *progress-process* 0 left-x-offset) 20)
# (set! (-> *progress-process* 0 right-x-offset) 20)
# (set! *PC-CROSS-X-ADJUST* -20.0)
# (set! *PC-CROSS-Y-ADJUST* -20.0)
# (set! *PC-SQUARE-X-ADJUST* -20.0)
# (set! *PC-SQUARE-Y-ADJUST* -20.0)
values = [
{
'aspect': 1.00,
'left': 20,
'right': -33,
'cross-x': -20.0,
'cross-y': -20.0,
'square-x': -5.0,
'square-y': -10.0,
'triangle-x': 0.0,
'triangle-y': 0.0,
'circle-x': 0.0,
'circle-y': 0.0,
'percent-x': 0.0,
'autosave-x': 0.0,
'orb-x': 0.0,
'orb-glow-x': 0.0,
'orb-text-x': 0.0,
'cell-x': 0.0,
'cell-text-x': 0.0,
'buzzer-text-x': 0.0,
'options-text-x': 0.0
},
{
'aspect': 1.25,
'left': 4,
'right': -6,
'cross-x': -5.0,
'cross-y': 0.0,
'square-x': 0.0,
'square-y': 0.0,
'triangle-x': 0.0,
'triangle-y': 0.0,
'circle-x': 0.0,
'circle-y': 0.0,
'percent-x': 0.0,
'autosave-x': 0.0,
'orb-x': 0.0,
'orb-glow-x': 0.0,
'orb-text-x': 0.0,
'cell-x': 0.0,
'cell-text-x': 0.0,
'buzzer-text-x': 0.0,
'options-text-x': 0.0
},
{
'aspect': 1.33,
'left': 0,
'right': 0,
'cross-x': 0.0,
'cross-y': 0.0,
'square-x': 0.0,
'square-y': 0.0,
'triangle-x': 0.0,
'triangle-y': 0.0,
'circle-x': 0.0,
'circle-y': 0.0,
'percent-x': 0.0,
'autosave-x': 0.0,
'orb-x': 0.0,
'orb-glow-x': 0.0,
'orb-text-x': 0.0,
'cell-x': 0.0,
'cell-text-x': 0.0,
'buzzer-text-x': 0.0,
'options-text-x': 0.0
},
{
'aspect': 1.5,
'left': -6,
'right': 12,
'cross-x': 5.0,
'cross-y': 0.0,
'square-x': 5.0,
'square-y': 0.0,
'triangle-x': 0.0,
'triangle-y': 0.0,
'circle-x': 0.0,
'circle-y': 0.0,
'percent-x': 12.0,
'autosave-x': 10.0,
'orb-x': 0.0,
'orb-glow-x': 0.0,
'orb-text-x': 0.0,
'cell-x': 0.0,
'cell-text-x': 0.0,
'buzzer-text-x': 0.0,
'options-text-x': 0.0
},
{
'aspect': 1.60,
'left': -10,
'right': 18,
'cross-x': 8.0,
'cross-y': 5.0,
'square-x': 5.0,
'square-y': 0.0,
'triangle-x': 0.0,
'triangle-y': 0.0,
'circle-x': 0.0,
'circle-y': 0.0,
'percent-x': 12.0,
'autosave-x': 10.0,
'orb-x': 0.0,
'orb-glow-x': 0.0,
'orb-text-x': 0.0,
'cell-x': 0.0,
'cell-text-x': 0.0,
'buzzer-text-x': 0.0,
'options-text-x': 0.0
},
{
'aspect': 1.78,
'left': -14,
'right': 26,
'cross-x': 15.0,
'cross-y': 10.0,
'square-x': 8.0,
'square-y': 10.0,
'triangle-x': 0.0,
'triangle-y': 0.0,
'circle-x': 0.0,
'circle-y': 0.0,
'percent-x': 15.0,
'autosave-x': 10.0,
'orb-x': 0.0,
'orb-glow-x': 0.0,
'orb-text-x': 0.0,
'cell-x': 0.0,
'cell-text-x': 0.0,
'buzzer-text-x': 0.0,
'options-text-x': 0.0
},
{
'aspect': 1.85,
'left': -16,
'right': 29,
'cross-x': 17.0,
'cross-y': 10.0,
'square-x': 8.0,
'square-y': 10.0,
'triangle-x': 0.0,
'triangle-y': 0.0,
'circle-x': 0.0,
'circle-y': 0.0,
'percent-x': 15.0,
'autosave-x': 10.0,
'orb-x': 0.0,
'orb-glow-x': 0.0,
'orb-text-x': 0.0,
'cell-x': 0.0,
'cell-text-x': 0.0,
'buzzer-text-x': 0.0,
'options-text-x': 0.0
},
{
'aspect': 2.33,
'left': -25,
'right': 45,
'cross-x': 30.0,
'cross-y': 20.0,
'square-x': 15.0,
'square-y': 15.0,
'triangle-x': 2.0,
'triangle-y': 5.0,
'circle-x': 2.0,
'circle-y': -7.0,
'percent-x': 18.0,
'autosave-x': 15.0,
'orb-x': 0.0,
'orb-glow-x': 0.0,
'orb-text-x': 0.0,
'cell-x': 0.0,
'cell-text-x': 0.0,
'buzzer-text-x': 0.0,
'options-text-x': 0.0
},
{
'aspect': 2.35,
'left': -26,
'right': 46,
'cross-x': 30.0,
'cross-y': 20.0,
'square-x': 15.0,
'square-y': 15.0,
'triangle-x': 2.0,
'triangle-y': 5.0,
'circle-x': 2.0,
'circle-y': -7.0,
'percent-x': 18.0,
'autosave-x': 15.0,
'orb-x': 0.0,
'orb-glow-x': 0.0,
'orb-text-x': 0.0,
'cell-x': 0.0,
'cell-text-x': 0.0,
'buzzer-text-x': 0.0,
'options-text-x': 0.0
},
{
'aspect': 3.56,
'left': -37,
'right': 65,
'cross-x': 45.0,
'cross-y': 25.0,
'square-x': 17.0,
'square-y': 15.0,
'triangle-x': 3.0,
'triangle-y': 5.0,
'circle-x': 5.0,
'circle-y': -10.0,
'percent-x': 25.0,
'autosave-x': 18.0,
'orb-x': 5.0,
'orb-glow-x': 4.0,
'orb-text-x': 10.0,
'cell-x': -10.0,
'cell-text-x': 2.0,
'buzzer-text-x': -5.0,
'options-text-x': 3.0
},
]
adjustments = [
'left', 'right', 'cross-x', 'cross-y', 'square-x', 'square-y', 'triangle-x', 'triangle-y', 'circle-x', 'circle-y', 'percent-x', 'autosave-x', 'orb-x', 'orb-glow-x', 'orb-text-x', 'cell-x', 'cell-text-x', 'buzzer-text-x', 'options-text-x'
]
aspect_ratio_values = []
for dataset in values:
aspect_ratio_values.append(dataset['aspect'])
aspect_ratios = np.array(aspect_ratio_values)
def check_return_value(aspect_ratio, coefs):
return coefs[0] + coefs[1] * aspect_ratio + coefs[2] * aspect_ratio**2
for adjust in adjustments:
# collect the values
data_values = []
for dataset in values:
data_values.append(dataset[adjust])
np_values = np.array(data_values)
# polynomial regression to interpolate between values
poly = Polynomial.fit(aspect_ratios, np_values, 3)
coefficients = poly.convert().coef
# produce a goal function to represent this polynomial
# if the aspect-ratio is close within a threshold we use that
function_string = ""
function_string += f"(defun pc-sprite-adjust-{adjust} ((aspect-ratio float))\n"
function_string += f" (cond\n"
for aspect_ratio, value in zip(aspect_ratios, data_values):
function_string += f" ((fequal-epsilon? aspect-ratio {aspect_ratio} 0.01) {value:.1f})\n"
function_string += f" (else\n (+ {coefficients[0]}\n (* {coefficients[1]} aspect-ratio)\n (* {coefficients[2]} aspect-ratio aspect-ratio)\n (* {coefficients[3]} aspect-ratio aspect-ratio aspect-ratio)))))\n"
print(function_string)