d/jak2: finish progress menu code and initialize the camera (#1945)

This PR does a few main things:
- finish decompiling the progress related code
- implemented changes necessary to load the text files end-to-end
   - japanese/korean character encodings were not added
- finish more camera code, which is required to spawn the progress menu
/ init the default language settings needed for text
  - initialized the camera as well

Still havn't opened the menu as there are a lot of checks around
`*target*` which I havn't yet gone through and attempted to comment out.
This commit is contained in:
Tyler Wilding
2022-10-11 18:30:26 -04:00
committed by GitHub
parent 18fa543621
commit f6bdc07990
79 changed files with 32950 additions and 3881 deletions
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -114,7 +114,7 @@
(tracking-spline-method-19 (_type_ float vector tracking-spline-sampler) vector 19)
(tracking-spline-method-20 (_type_ vector int) none 20)
(tracking-spline-method-21 (_type_ vector float float float) vector 21)
(tracking-spline-method-22 (_type_ float) none 22)
(tracking-spline-method-22 (_type_ float) symbol 22)
(debug-draw-spline (_type_) none 23)
)
)
@@ -628,7 +628,7 @@
(:methods
(camera-master-method-14 (_type_ vector) vector 14)
(camera-master-method-15 (_type_ vector) vector 15)
(camera-master-method-16 (_type_ symbol) none 16)
(camera-master-method-16 (_type_ symbol) int 16)
)
)
+2 -3
View File
@@ -892,7 +892,7 @@
)
;; definition for method 22 of type tracking-spline
;; WARN: Return type mismatch int vs none.
;; WARN: Return type mismatch int vs symbol.
(defmethod tracking-spline-method-22 tracking-spline ((obj tracking-spline) (arg0 float))
(when (< arg0 (-> obj summed-len))
(let ((s5-0 (new 'stack-no-clear 'tracking-spline-sampler)))
@@ -904,8 +904,7 @@
(tracking-spline-method-14 obj s5-0)
)
)
0
(none)
(the-as symbol 0)
)
;; definition for method 9 of type tracking-spline
+1 -1
View File
@@ -611,7 +611,7 @@
(get-skeleton-origin (_type_) vector 9)
(draw-control-method-10 () none 10)
(draw-control-method-11 () none 11)
(draw-control-method-12 (_type_ int int) none 12)
(draw-control-method-12 (_type_ uint int) none 12)
(draw-control-method-13 () none 13)
(draw-control-method-14 (_type_ cspace-array joint-control) none 14)
)
+1 -1
View File
@@ -708,7 +708,7 @@
;; definition (debug) for function add-debug-line2d
;; INFO: Used lq/sq
(defun-debug add-debug-line2d ((enable symbol) (bucket bucket-id) (start vector) (end vector) (color vector))
(defun-debug add-debug-line2d ((enable symbol) (bucket bucket-id) (start vector4w) (end vector4w) (color vector4w))
(if (not enable)
(return #f)
)
+3 -3
View File
@@ -243,7 +243,7 @@
(debug-features game-feature :offset-assert 136)
(secrets game-secrets :offset-assert 144)
(unknown-pad1 uint32 :offset-assert 148)
(purchase-secrets uint32 :offset-assert 152)
(purchase-secrets game-secrets :offset-assert 152)
(unknown-pad2 uint32 :offset-assert 156)
(gun-type int32 :offset-assert 160)
(gun-ammo float 4 :offset-assert 164)
@@ -262,7 +262,7 @@
(last-continue continue-point :offset-assert 244)
(play-list (array game-task-info) :offset-assert 248)
(sub-task-list (array game-task-node-info) :offset-assert 252)
(unknown-pad5 (array game-task-node-info) :offset-assert 256)
(mission-list (array game-task-node-info) :offset-assert 256)
(task-counter uint32 :offset-assert 260)
(unknown-pad6 (array uint16) :offset-assert 264)
(level-opened uint8 32 :offset-assert 268)
@@ -285,7 +285,7 @@
(letterbox-time time-frame :offset-assert 400)
(hint-play-time time-frame :offset-assert 408)
(display-text-time time-frame :offset-assert 416)
(display-text-handle uint64 :offset-assert 424)
(display-text-handle handle :offset-assert 424)
(death-movie-tick int32 :offset-assert 432)
(want-auto-save symbol :offset-assert 436)
(auto-save-proc handle :offset-assert 440)
+1 -1
View File
@@ -1670,7 +1670,7 @@
0
)
(if (zero? (-> gp-0 display-text-handle))
(set! (-> gp-0 display-text-handle) (the-as uint #f))
(set! (-> gp-0 display-text-handle) (the-as handle #f))
)
(if (zero? (-> gp-0 game-score))
(set! (-> gp-0 game-score) (new 'global 'boxed-array float 152))
+1 -1
View File
@@ -12301,7 +12301,7 @@
)
)
)
(set! (-> gp-0 unknown-pad5) (new 'global 'boxed-array game-task-node-info 324))
(set! (-> gp-0 mission-list) (new 'global 'boxed-array game-task-node-info 324))
(dotimes (v1-3 (-> gp-0 sub-task-list length))
(if (-> gp-0 sub-task-list v1-3 info)
(set! (-> gp-0 sub-task-list v1-3 info manager) (the-as handle #f))
-2
View File
@@ -1001,10 +1001,8 @@
)
;; definition for function matrix-axis-angle!
;; WARN: Return type mismatch matrix vs none.
(defun matrix-axis-angle! ((arg0 matrix) (arg1 vector) (arg2 float))
(matrix-axis-sin-cos! arg0 arg1 (sin arg2) (cos arg2))
(none)
)
;; definition for function matrix-lerp!
+3 -3
View File
@@ -580,9 +580,9 @@
(goto cfg-4)
)
(format #t "[~8x] ~A~%" obj 'vector4w-4)
(format #t "~1Tdata[16] @ #x~X~%" (-> obj data))
(format #t "~1Tquad[4] @ #x~X~%" (-> obj data))
(format #t "~1Tvector[4] @ #x~X~%" (-> obj data))
(format #t "~1Tdata[16] @ #x~X~%" (-> obj vector))
(format #t "~1Tquad[4] @ #x~X~%" (-> obj vector))
(format #t "~1Tvector[4] @ #x~X~%" (-> obj vector))
(label cfg-4)
obj
)
@@ -11,11 +11,11 @@
:flag-assert #x1b005000cc
(:methods
(get-trans (_type_ int) vector 20)
(get-quat (_type_) quaternion 21)
(get-quat (_type_ int) quaternion 21)
(get-transv (_type_) vector 22)
(process-focusable-method-23 (_type_) none 23)
(process-focusable-method-24 (_type_) none 24)
(process-focusable-method-25 (_type_) int 25)
(process-focusable-method-24 (_type_) float 24)
(process-focusable-method-25 (_type_) time-frame 25)
(process-focusable-method-26 (_type_) none 26)
)
)
@@ -63,7 +63,7 @@
)
;; definition for method 21 of type process-focusable
(defmethod get-quat process-focusable ((obj process-focusable))
(defmethod get-quat process-focusable ((obj process-focusable) (arg0 int))
(-> obj root quat)
)
@@ -75,10 +75,8 @@
)
;; definition for method 24 of type process-focusable
;; WARN: Return type mismatch int vs none.
(defmethod process-focusable-method-24 process-focusable ((obj process-focusable))
0
(none)
0.0
)
;; definition for method 26 of type process-focusable
@@ -89,8 +87,9 @@
)
;; definition for method 25 of type process-focusable
;; WARN: Return type mismatch int vs time-frame.
(defmethod process-focusable-method-25 process-focusable ((obj process-focusable))
0
(the-as time-frame 0)
)
;; failed to figure out what this is:
+1 -7
View File
@@ -2817,13 +2817,7 @@
(when s4-1
(set! (-> self control unknown-vector38 quad) (-> (get-trans (the-as process-focusable s4-1) 0) quad))
(set! (-> self control unknown-vector38 y) (+ 4096.0 (-> self control unknown-vector38 y)))
(let* ((s3-2 (-> self control unknown-vector40))
(a0-15 (the-as process-focusable s4-1))
(t9-4 (method-of-object a0-15 get-quat))
)
0
(set! (-> s3-2 quad) (-> (t9-4 a0-15) vec quad))
)
(set! (-> self control unknown-vector40 quad) (-> (get-quat (the-as process-focusable s4-1) 0) vec quad))
)
(let ((f28-0 (sin (lerp-scale 0.0 16384.0 (ja-aframe-num 0) 0.0 30.0))))
(let ((f26-0 f28-0))
+2 -2
View File
@@ -1867,11 +1867,11 @@
(when (!= (-> self beard?) v1-248)
(cond
(v1-248
(draw-control-method-12 (-> self draw) 2 0)
(draw-control-method-12 (-> self draw) (the-as uint 2) 0)
(set! (-> self beard?) #t)
)
(else
(draw-control-method-12 (-> self draw) 0 2)
(draw-control-method-12 (-> self draw) (the-as uint 0) 2)
(set! (-> self beard?) #f)
)
)
+1 -1
View File
@@ -231,7 +231,7 @@
(new (symbol type) _type_ 0)
(initialize (_type_) none 9)
(update (_type_) none 10)
(bigmap-method-11 () none 11)
(bigmap-method-11 (_type_ int int int int) none 11)
(bigmap-method-12 () none 12)
(bigmap-method-13 () none 13)
(bigmap-method-14 (_type_) none 14)
+4 -4
View File
@@ -44,7 +44,7 @@
:size-assert #x34
:flag-assert #xb00000034
(:methods
(hud-sprite-method-9 () none 9)
(hud-sprite-method-9 (_type_ dma-buffer level) none 9)
(hud-sprite-method-10 () none 10)
)
)
@@ -77,13 +77,13 @@
:size-assert #x20
:flag-assert #x1000000020
(:methods
(hud-box-method-9 () none 9)
(hud-box-method-9 (_type_ dma-buffer) none 9)
(hud-box-method-10 () none 10)
(hud-box-method-11 () none 11)
(hud-box-method-12 () none 12)
(hud-box-method-13 (_type_ dma-buffer float) int 13)
(hud-box-method-14 () none 14)
(hud-box-method-15 () none 15)
(hud-box-method-14 (_type_) none 14)
(hud-box-method-15 (_type_) none 15)
)
)
File diff suppressed because it is too large Load Diff
+21 -19
View File
@@ -90,16 +90,18 @@
;; definition of type menu-option
(deftype menu-option (basic)
((name uint32 :offset-assert 4)
(scale basic :offset-assert 8)
(box bounding-box 1 :inline :offset-assert 16)
((name game-text-id :offset-assert 4)
(scale float :offset-assert 8)
(unknown function :offset-assert 12)
(box hud-box 1 :inline :offset-assert 16)
(options menu-option 8 :offset 16)
)
:method-count-assert 12
:size-assert #x30
:flag-assert #xc00000030
(:methods
(respond-progress (_type_ progress object symbol) int 9)
(menu-option-method-10 () none 10)
(respond-progress (_type_ progress object) int :behavior progress 9)
(menu-option-method-10 (_type_ progress font-context int symbol) none 10)
(menu-option-method-11 () none 11)
)
)
@@ -120,7 +122,7 @@
;; definition of type menu-on-off-option
(deftype menu-on-off-option (menu-option)
((value-to-modify pointer :offset-assert 48)
((value-to-modify (pointer symbol) :offset-assert 48)
)
:method-count-assert 12
:size-assert #x34
@@ -168,10 +170,10 @@
;; definition of type menu-language-option
(deftype menu-language-option (menu-option)
((language-selection uint64 :offset-assert 48)
(language-direction basic :offset-assert 56)
(language-transition basic :offset-assert 60)
(language-x-offset int32 :offset-assert 64)
((language-selection language-enum :offset-assert 48)
(language-direction symbol :offset-assert 56)
(language-transition basic :offset-assert 60)
(language-x-offset int32 :offset-assert 64)
)
:method-count-assert 12
:size-assert #x44
@@ -990,13 +992,13 @@
;; definition of type menu-secret-option
(deftype menu-secret-option (menu-option)
((item-index int32 :offset-assert 48)
(prev-item-index int32 :offset-assert 52)
(num-items int32 :offset-assert 56)
(num-hero-items int32 :offset-assert 60)
(secret-items basic :offset-assert 64)
(last-move uint64 :offset-assert 72)
(sprites hud-sprite 2 :inline :offset-assert 80)
((item-index int32 :offset-assert 48)
(prev-item-index int32 :offset-assert 52)
(num-items int32 :offset-assert 56)
(num-hero-items int32 :offset-assert 60)
(secret-items (array secret-item-option) :offset-assert 64)
(last-move uint64 :offset-assert 72)
(sprites hud-sprite 2 :inline :offset-assert 80)
)
:method-count-assert 12
:size-assert #xd0
@@ -1053,8 +1055,8 @@
;; definition of type menu-qr-option
(deftype menu-qr-option (menu-option)
((last-move uint64 :offset-assert 48)
(value-to-modify uint32 :offset 60)
((last-move uint64 :offset-assert 48)
(value-to-modify function :offset 60)
)
:method-count-assert 12
:size-assert #x40
@@ -0,0 +1,995 @@
;;-*-Lisp-*-
(in-package goal)
;; failed to figure out what this is:
(let ((a0-0 (new 'static 'skeleton-group
:name "skel-hud-ring"
:extra #f
:info #f
:art-group-name "hud-ring"
:bounds (new 'static 'vector :w 225280.0)
:version #x7
)
)
)
(set! (-> a0-0 jgeo) 0)
(set! (-> a0-0 janim) 2)
(set! (-> a0-0 mgeo 0) 1)
(set! (-> a0-0 lod-dist 0) 4095996000.0)
(add-to-loading-level a0-0)
)
;; failed to figure out what this is:
(let ((a0-1 (new 'static 'skeleton-group
:name "skel-hud-ring-part"
:extra #f
:info #f
:art-group-name "hud-ring"
:bounds (new 'static 'vector :w 225280.0)
:version #x7
)
)
)
(set! (-> a0-1 jgeo) 3)
(set! (-> a0-1 janim) 5)
(set! (-> a0-1 mgeo 0) 4)
(set! (-> a0-1 lod-dist 0) 4095996000.0)
(add-to-loading-level a0-1)
)
;; definition for symbol *main-options*, type menu-option-list
(define *main-options* (new 'static 'menu-option-list :y-center #xc6 :y-space 30 :scale 0.82))
;; definition for symbol *main-options-debug*, type menu-option-list
(define *main-options-debug* (new 'static 'menu-option-list :y-center #xc6 :y-space 30 :scale 0.82))
;; definition for symbol *main-kiosk-options*, type menu-option-list
(define *main-kiosk-options* (new 'static 'menu-option-list :y-center #xc6 :y-space 30 :scale 0.82))
;; definition for symbol *main-demo-options*, type menu-option-list
(define *main-demo-options* (new 'static 'menu-option-list :y-center #xc6 :y-space 30 :scale 0.82))
;; definition for symbol *title*, type menu-option-list
(define *title* (new 'static 'menu-option-list :y-center #xc6 :y-space 30 :scale 0.82))
;; definition for symbol *unlocked-secrets*, type menu-option-list
(define *unlocked-secrets* (new 'static 'menu-option-list :y-center #xc6 :y-space 30 :scale 0.82))
;; definition for symbol *options*, type menu-option-list
(define *options* (new 'static 'menu-option-list :y-center #xc6 :y-space 30 :scale 0.82))
;; definition for symbol *game-options*, type menu-option-list
(define *game-options* (new 'static 'menu-option-list :y-center #xc6 :y-space 30 :scale 0.82))
;; definition for symbol *game-options-japan*, type menu-option-list
(define *game-options-japan* (new 'static 'menu-option-list :y-center #xc6 :y-space 30 :scale 0.82))
;; definition for symbol *game-options-demo*, type menu-option-list
(define *game-options-demo* (new 'static 'menu-option-list :y-center #xc6 :y-space 30 :scale 0.82))
;; definition for symbol *graphic-options*, type menu-option-list
(define *graphic-options* (new 'static 'menu-option-list :y-center #xc6 :y-space 30 :scale 0.82))
;; definition for symbol *graphic-title-options-pal*, type menu-option-list
(define *graphic-title-options-pal* (new 'static 'menu-option-list :y-center #xc6 :y-space 30 :scale 0.82))
;; definition for symbol *sound-options*, type menu-option-list
(define *sound-options* (new 'static 'menu-option-list :y-center #xc6 :y-space 30 :scale 0.82))
;; definition for symbol *quit-restart-options*, type menu-option-list
(define *quit-restart-options* (new 'static 'menu-option-list :y-center #xc6 :y-space 30 :scale 0.82))
;; definition for symbol *load-save-options*, type menu-option-list
(define *load-save-options* (new 'static 'menu-option-list :y-center #xdc :y-space 30 :scale 0.82))
;; definition for symbol *save-options-title*, type menu-option-list
(define *save-options-title* (new 'static 'menu-option-list :y-center #xdc :y-space 30 :scale 0.82))
;; definition for symbol *loading-options*, type menu-option-list
(define *loading-options* (new 'static 'menu-option-list :y-center #xc6 :y-space 30 :scale 0.82))
;; definition for symbol *insufficient-space-options*, type menu-option-list
(define *insufficient-space-options* (new 'static 'menu-option-list :y-center #xc6 :y-space 30 :scale 0.82))
;; definition for symbol *secrets-insufficient-space-options*, type menu-option-list
(define *secrets-insufficient-space-options*
(new 'static 'menu-option-list :y-center #xc6 :y-space 30 :scale 0.82)
)
;; definition for symbol *insert-card-options*, type menu-option-list
(define *insert-card-options* (new 'static 'menu-option-list :y-center #xc6 :y-space 30 :scale 0.82))
;; definition for symbol *error-loading-options*, type menu-option-list
(define *error-loading-options* (new 'static 'menu-option-list :y-center #xc6 :y-space 30 :scale 0.82))
;; definition for symbol *error-auto-saving-options*, type menu-option-list
(define *error-auto-saving-options* (new 'static 'menu-option-list :y-center #xc6 :y-space 30 :scale 0.82))
;; definition for symbol *card-removed-options*, type menu-option-list
(define *card-removed-options* (new 'static 'menu-option-list :y-center #x104 :y-space 30 :scale 0.82))
;; definition for symbol *error-disc-removed-options*, type menu-option-list
(define *error-disc-removed-options* (new 'static 'menu-option-list :y-center #xc6 :y-space 30 :scale 0.82))
;; definition for symbol *error-reading-options*, type menu-option-list
(define *error-reading-options* (new 'static 'menu-option-list :y-center #xc6 :y-space 30 :scale 0.82))
;; definition for symbol *icon-info-options*, type menu-option-list
(define *icon-info-options* (new 'static 'menu-option-list :y-center #xc6 :y-space 30 :scale 0.82))
;; definition for symbol *format-card-options*, type menu-option-list
(define *format-card-options* (new 'static 'menu-option-list :y-center #xc6 :y-space 30 :scale 0.82))
;; definition for symbol *already-exists-options*, type menu-option-list
(define *already-exists-options* (new 'static 'menu-option-list :y-center #xc6 :y-space 30 :scale 0.82))
;; definition for symbol *create-game-options*, type menu-option-list
(define *create-game-options* (new 'static 'menu-option-list :y-center #xc6 :y-space 30 :scale 0.82))
;; definition for symbol *video-mode-warning-options*, type menu-option-list
(define *video-mode-warning-options* (new 'static 'menu-option-list :y-center #xc6 :y-space 30 :scale 0.82))
;; definition for symbol *video-mode-ok-options*, type menu-option-list
(define *video-mode-ok-options* (new 'static 'menu-option-list :y-center #xc6 :y-space 30 :scale 0.82))
;; definition for symbol *progressive-mode-warning-options*, type menu-option-list
(define *progressive-mode-warning-options*
(new 'static 'menu-option-list :y-center #xc6 :y-space 30 :scale 0.82)
)
;; definition for symbol *progressive-mode-ok-options*, type menu-option-list
(define *progressive-mode-ok-options* (new 'static 'menu-option-list :y-center #xc6 :y-space 30 :scale 0.82))
;; definition for symbol *quit-options*, type menu-option-list
(define *quit-options* (new 'static 'menu-option-list :y-center #xc6 :y-space 30 :scale 0.82))
;; definition for symbol *select-start-options*, type menu-option-list
(define *select-start-options*
"List of [[menu-select-start-option]]"
(new 'static 'menu-option-list :y-center #xc6 :y-space 30 :scale 0.82)
)
;; definition for symbol *select-scene-options*, type menu-option-list
(define *select-scene-options*
"List of [[menu-select-scene-option]]"
(new 'static 'menu-option-list :y-center #xc6 :y-space 30 :scale 0.82)
)
;; definition for symbol *bigmap-options*, type menu-option-list
(define *bigmap-options* (new 'static 'menu-option-list :y-center #xc6 :y-space 30 :scale 0.82))
;; definition for symbol *missions-options*, type menu-option-list
(define *missions-options*
"List of [[menu-missions-option]]"
(new 'static 'menu-option-list :y-center #xc6 :y-space 30 :scale 0.82)
)
;; definition for symbol *highscores-options*, type menu-option-list
(define *highscores-options*
"List of [[menu-highscores-option]]"
(new 'static 'menu-option-list :y-center #xc6 :y-space 30 :scale 0.82)
)
;; definition for symbol *secret-options*, type menu-option-list
(define *secret-options* (new 'static 'menu-option-list :y-center #xc6 :y-space 30 :scale 0.82))
;; definition for symbol *language-name-remap*, type (array game-text-id)
(define *language-name-remap*
(the-as (array game-text-id)
(new 'static 'boxed-array :type uint32 #x111 #x112 #x113 #x114 #x115 #x117 #x116 #x30b)
)
)
;; definition for symbol *stereo-mode-name-remap*, type (array game-text-id)
(define *stereo-mode-name-remap*
(the-as (array game-text-id) (new 'static 'boxed-array :type uint32 #x104 #x105 #x106))
)
;; definition for symbol *hud-ring-graphic-remap*, type (array uint64)
(define *hud-ring-graphic-remap*
(new 'static 'boxed-array :type uint64 #x80 #x40 #x10 #x4 #x8 #x400 #x20 #x100 #x200 #x2)
)
;; definition for symbol *hud-ring-kiosk-graphic-remap*, type (array uint64)
(define *hud-ring-kiosk-graphic-remap*
(new 'static 'boxed-array :type uint64 #x40 #x80 #x2 #x200 #x200 #x200 #x200 #x200 #x200 #x200)
)
;; definition for symbol *hud-ring-demo-graphic-remap*, type (array uint64)
(define *hud-ring-demo-graphic-remap*
(new 'static 'boxed-array :type uint64 #x80 #x2 #x200 #x200 #x200 #x200 #x200 #x200 #x200 #x200)
)
;; definition of type hud-scene-info
(deftype hud-scene-info (basic)
((name string :offset-assert 4)
(continue string :offset-assert 8)
(info object :offset-assert 12)
(info-str string :offset 12)
(info-list pair :offset 12)
(text uint32 :offset-assert 16)
)
:method-count-assert 9
:size-assert #x14
:flag-assert #x900000014
)
;; definition for method 3 of type hud-scene-info
(defmethod inspect hud-scene-info ((obj hud-scene-info))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(format #t "[~8x] ~A~%" obj (-> obj type))
(format #t "~1Tname: ~A~%" (-> obj name))
(format #t "~1Tcontinue: ~A~%" (-> obj continue))
(format #t "~1Tinfo: ~A~%" (-> obj info))
(format #t "~1Ttext: ~D~%" (-> obj text))
(label cfg-4)
obj
)
;; definition for symbol *hud-select-scene-act1*, type (array hud-scene-info)
(define *hud-select-scene-act1*
(new 'static 'boxed-array :type hud-scene-info
(new 'static 'hud-scene-info
:name "intro"
:continue "village1-start"
:info '("intro-samos-hut" "intro-vortex" "intro-city-square" "intro-prison")
:text #x307
)
(new 'static 'hud-scene-info
:name "city-help-kid-intro"
:continue "ctyslumb-fort"
:info "city-help-kid-intro"
:text #x28c
)
(new 'static 'hud-scene-info
:name "city-help-kid-resolution"
:continue "ctyslumb-fort"
:info "city-help-kid-resolution"
:text #x28d
)
(new 'static 'hud-scene-info
:name "ruins-tower-intro"
:continue "ctysluma-tower-intro"
:info "ruins-tower-intro"
:text #x281
)
(new 'static 'hud-scene-info
:name "ruins-tower-victory"
:continue "ruins-hut"
:info "ruins-tower-victory"
:text #x282
)
(new 'static 'hud-scene-info :name "atoll-1-int" :continue "hideout-start" :info "atoll-1-int" :text #x2c8)
(new 'static 'hud-scene-info :name "atoll-1-res" :continue "atoll-movie" :info "atoll-1-res" :text #x2c9)
(new 'static 'hud-scene-info
:name "fortress-2-intro"
:continue "hideout-start"
:info "fortress-2-intro"
:text #x2bc
)
(new 'static 'hud-scene-info
:name "fortress-blow-up-ammo-res-a"
:continue "fordumpc-start"
:info "fortress-blow-up-ammo-res-a"
:text #x2bd
)
(new 'static 'hud-scene-info
:name "fortress-blow-up-ammo-res-b"
:continue "fordumpc-explode-movie"
:info "fortress-blow-up-ammo-res-b"
:text #x2be
)
(new 'static 'hud-scene-info
:name "city-krew-delivery-intro"
:continue "hideout-start"
:info "city-krew-delivery-intro"
:text #x28f
)
(new 'static 'hud-scene-info
:name "krew-delivery-res"
:continue "hiphog-start"
:info "krew-delivery-res"
:text #x290
)
(new 'static 'hud-scene-info :name "atoll-2-intro" :continue "hiphog-start" :info "atoll-2-intro" :text #x2ca)
(new 'static 'hud-scene-info
:name "atoll-sig-intro"
:continue "atoll-movie"
:info "atoll-sig-intro"
:text #x2ce
)
(new 'static 'hud-scene-info
:name "atoll-sig-tank"
:continue "atoll-movie"
:info "atoll-sig-tank"
:text #x2cf
)
(new 'static 'hud-scene-info
:name "atoll-sniper-a"
:continue "atoll-movie"
:info "atoll-sniper-a"
:text #x2d0
)
(new 'static 'hud-scene-info
:name "atoll-sniper-b"
:continue "atoll-movie"
:info "atoll-sniper-b"
:text #x2d1
)
(new 'static 'hud-scene-info
:name "atoll-sniper-c"
:continue "atoll-movie"
:info "atoll-sniper-c"
:text #x2d2
)
(new 'static 'hud-scene-info
:name "atoll-sniper-d"
:continue "atoll-movie"
:info "atoll-sniper-d"
:text #x2d3
)
(new 'static 'hud-scene-info
:name "atoll-sniper-e"
:continue "atoll-movie"
:info "atoll-sniper-e"
:text #x2d4
)
(new 'static 'hud-scene-info
:name "city-oracle-intro"
:continue "oracle-start"
:info "city-oracle-intro"
:text #x29d
)
(new 'static 'hud-scene-info
:name "city-oracle-level-0"
:continue "oracle-start"
:info "city-oracle-level-0"
:text #x29e
)
(new 'static 'hud-scene-info
:name "city-oracle-level-1"
:continue "oracle-start"
:info "city-oracle-level-1"
:text #x29f
)
(new 'static 'hud-scene-info
:name "city-oracle-level-2"
:continue "oracle-start"
:info "city-oracle-level-2"
:text #x2a0
)
(new 'static 'hud-scene-info
:name "city-oracle-level-3"
:continue "oracle-start"
:info "city-oracle-level-3"
:text #x2a1
)
(new 'static 'hud-scene-info :name "sewer-1-intro" :continue "hiphog-start" :info "sewer-1-intro" :text #x2c1)
(new 'static 'hud-scene-info :name "sewer-1-res" :continue "hiphog-start" :info "sewer-1-res" :text #x2c2)
(new 'static 'hud-scene-info
:name "city-get-yellow-gun"
:continue "gungame-movie"
:info "city-get-yellow-gun"
:text #x2b2
)
(new 'static 'hud-scene-info
:name "vin-rescue-intro"
:continue "hideout-start"
:info "vin-rescue-intro"
:text #x286
)
(new 'static 'hud-scene-info :name "vin-rescue" :continue "strip-start" :info "vin-rescue" :text #x287)
(new 'static 'hud-scene-info
:name "city-keira-delivery-intro"
:continue "hiphog-start"
:info "city-keira-delivery-intro"
:text #x2a7
)
(new 'static 'hud-scene-info
:name "city-krew-collection-intro"
:continue "hiphog-start"
:info "city-krew-collection-intro"
:text #x2a2
)
(new 'static 'hud-scene-info
:name "city-krew-collection-res"
:continue "hiphog-start"
:info "city-krew-collection-res"
:text #x2a3
)
(new 'static 'hud-scene-info
:name "city-keira-hover-challenge-intro"
:continue "garage-start-skate"
:info "city-keira-hover-challenge-intro"
:text #x294
)
(new 'static 'hud-scene-info
:name "city-put-hoverboard"
:continue "skatea-start"
:info "city-put-hoverboard"
:text #x2b4
)
(new 'static 'hud-scene-info
:name "city-keira-hover-challenge-res"
:continue "garage-start-skate"
:info "city-keira-hover-challenge-res"
:text #x295
)
(new 'static 'hud-scene-info
:name "atoll-3-intro"
:continue "hideout-start"
:info "atoll-3-intro"
:text #x2cb
)
(new 'static 'hud-scene-info
:name "atoll-save-ashelin-res-a"
:continue "atoll-movie"
:info "atoll-save-ashelin-res-a"
:text #x2cc
)
(new 'static 'hud-scene-info
:name "atoll-save-ashelin-res-b"
:continue "atoll-movie"
:info "atoll-save-ashelin-res-b"
:text #x2cd
)
(new 'static 'hud-scene-info
:name "drill-kill-metal-heads-intro"
:continue "vinroom-start"
:info "drill-kill-metal-heads-intro"
:text #x2d5
)
(new 'static 'hud-scene-info
:name "mountain-finditems-intro"
:continue "onintent-start"
:info "mountain-finditems-intro"
:text #x2d9
)
(new 'static 'hud-scene-info
:name "mountain-gear-res"
:continue "mountain-start"
:info "mountain-gear-res"
:text #x2da
)
(new 'static 'hud-scene-info
:name "mountain-shard-res"
:continue "mountain-start"
:info "mountain-shard-res"
:text #x2db
)
(new 'static 'hud-scene-info
:name "mountain-lens-res"
:continue "mountain-start"
:info "mountain-lens-res"
:text #x2dc
)
(new 'static 'hud-scene-info
:name "city-switch-on-power-intro"
:continue "vinroom-start"
:info "city-switch-on-power-intro"
:text #x293
)
(new 'static 'hud-scene-info
:name "palace-outside-window-res"
:continue "palroof-throne"
:info "palace-outside-window-res"
:text #x2dd
)
(new 'static 'hud-scene-info
:name "palace-outside-window-res-b"
:continue "palroof-boss"
:info "palace-outside-window-res-b"
:text #x2de
)
(new 'static 'hud-scene-info
:name "palace-boss-res"
:continue "palroof-boss"
:info "palace-boss-res"
:text #x2df
)
(new 'static 'hud-scene-info
:name "city-shuttle-underground-intro"
:continue "hideout-start"
:info "city-shuttle-underground-intro"
:text #x2a8
)
(new 'static 'hud-scene-info
:name "ruins-sacred-intro"
:continue "hideout-start"
:info "ruins-sacred-intro"
:text #x283
)
(new 'static 'hud-scene-info
:name "ruins-sacred-victory"
:continue "ruins-hut"
:info "ruins-sacred-victory"
:text #x284
)
)
)
;; definition for symbol *hud-select-scene-act2*, type (array hud-scene-info)
(define *hud-select-scene-act2*
(new 'static 'boxed-array :type hud-scene-info
(new 'static 'hud-scene-info
:name "forest-catch-metal-heads-intro"
:continue "hideout-start"
:info "forest-catch-metal-heads-intro"
:text #x2f1
)
(new 'static 'hud-scene-info
:name "city-get-hoverboard"
:continue "ctyfarma-airlock-movie"
:info "city-get-hoverboard"
:text #x2b3
)
(new 'static 'hud-scene-info
:name "city-escort-kid-intro"
:continue "escort-kid-intro"
:info "city-escort-kid-intro"
:text #x2a4
)
(new 'static 'hud-scene-info
:name "dig-knock-down-scaffolding-intro"
:continue "vinroom-start"
:info "dig-knock-down-scaffolding-intro"
:text #x2f6
)
(new 'static 'hud-scene-info
:name "dig-digger-explode"
:continue "dig1-start"
:info "dig-digger-explode"
:text #x2fa
)
(new 'static 'hud-scene-info
:name "city-intercept-tanker-intro"
:continue "ctymarkb-tanker"
:info "city-intercept-tanker-intro"
:text #x291
)
(new 'static 'hud-scene-info
:name "city-intercept-tanker-res"
:continue "ctymarkb-tanker"
:info "city-intercept-tanker-res"
:text #x292
)
(new 'static 'hud-scene-info
:name "city-meet-brutter-intro"
:continue "hiphog-start"
:info "city-meet-brutter-intro"
:text #x2a5
)
(new 'static 'hud-scene-info
:name "city-meet-brutter-res"
:continue "kiosk-start"
:info "city-meet-brutter-res"
:text #x2a6
)
(new 'static 'hud-scene-info :name "sewer-2-intro" :continue "hiphog-start" :info "sewer-2-intro" :text #x2c3)
(new 'static 'hud-scene-info
:name "sewer-drain-res"
:continue "sewer-start"
:info "sewer-drain-res"
:text #x2c4
)
(new 'static 'hud-scene-info
:name "ecowells-intro"
:continue "vinroom-start"
:info "ecowells-intro"
:text #x28a
)
(new 'static 'hud-scene-info
:name "ecowells-victory"
:continue "strip-start"
:info "ecowells-victory"
:text #x28b
)
(new 'static 'hud-scene-info
:name "drill-destroy-ship-intro"
:continue "vinroom-start"
:info "drill-destroy-ship-intro"
:text #x2d6
)
(new 'static 'hud-scene-info
:name "forest-hunt-camo-metal-heads-intro"
:continue "hiphog-start"
:info "forest-hunt-camo-metal-heads-intro"
:text #x2f2
)
(new 'static 'hud-scene-info
:name "city-class-3-race-intro"
:continue "garage-class3-movie"
:info "city-class-3-race-intro"
:text #x296
)
(new 'static 'hud-scene-info
:name "city-class-3-race-res"
:continue "garage-class3-movie"
:info "city-class-3-race-res"
:text #x297
)
(new 'static 'hud-scene-info
:name "city-protect-slums-intro"
:continue "ctyslumc-seal-movie"
:info "city-protect-slums-intro"
:text #x2ba
)
(new 'static 'hud-scene-info
:name "dig-find-totem-intro"
:continue "onintent-start"
:info "dig-find-totem-intro"
:text #x2f8
)
(new 'static 'hud-scene-info
:name "city-air-train-in-caspad"
:continue "ctyport-air-train"
:info "city-air-train-in-caspad"
:text #x2b6
)
(new 'static 'hud-scene-info
:name "caspad-air-train-out"
:continue "caspad-warp"
:info "caspad-air-train-out"
:text #x2e5
)
(new 'static 'hud-scene-info
:name "dig-find-totem-res"
:continue "dig-totem"
:info "dig-find-totem-res"
:text #x2f9
)
(new 'static 'hud-scene-info
:name "caspad-air-train-in"
:continue "caspad-warp"
:info "caspad-air-train-in"
:text #x2e4
)
(new 'static 'hud-scene-info
:name "city-air-train-out"
:continue "ctyport-air-train"
:info "city-air-train-out"
:text #x2b8
)
(new 'static 'hud-scene-info
:name "city-destroy-guard-vehicles-intro"
:continue "hideout-start"
:info "city-destroy-guard-vehicles-intro"
:text #x28e
)
(new 'static 'hud-scene-info
:name "city-play-onin-game-intro"
:continue "onintent-start"
:info "city-play-onin-game-intro"
:text #x2a9
)
(new 'static 'hud-scene-info
:name "city-play-onin-game-res"
:continue "onintent-start"
:info "city-play-onin-game-res"
:text #x2aa
)
(new 'static 'hud-scene-info
:name "canyon-insert-items-intro"
:continue "mountain-movie"
:info "canyon-insert-items-intro"
:text #x2fc
)
(new 'static 'hud-scene-info
:name "canyon-insert-items-res"
:continue "mincan-city"
:info "canyon-insert-items-res"
:text #x2fb
)
(new 'static 'hud-scene-info
:name "tomb-face-tests-intro"
:continue "tombd-start"
:info "tomb-face-tests-intro"
:text #x2e6
)
(new 'static 'hud-scene-info
:name "tomb-boulder-start"
:continue "tomb-boulder"
:info "tomb-boulder-start"
:text #x2ef
)
(new 'static 'hud-scene-info
:name "tomb-spider-scare"
:continue "tomb-boulder-explode"
:info "tomb-spider-scare"
:text #x2f0
)
(new 'static 'hud-scene-info
:name "tomb-unlock-start"
:continue "tomb-water-switch"
:info "tomb-unlock-start"
:text #x2e9
)
(new 'static 'hud-scene-info
:name "tomb-unlock-water"
:continue "tomb-water-switch"
:info "tomb-unlock-water"
:text #x2ea
)
(new 'static 'hud-scene-info
:name "tomb-unlock-poles"
:continue "tomb-poles-switch"
:info "tomb-unlock-poles"
:text #x2eb
)
(new 'static 'hud-scene-info
:name "tomb-boss-open"
:continue "tombboss-start"
:info "tomb-boss-open"
:text #x2ec
)
(new 'static 'hud-scene-info
:name "tomb-boss-intro"
:continue "tombboss-start"
:info "tomb-boss-intro"
:text #x2ed
)
(new 'static 'hud-scene-info
:name "tomb-boss-res"
:continue "tombboss-start"
:info "tomb-boss-res"
:text #x2ee
)
)
)
;; definition for symbol *hud-select-scene-act3*, type (array hud-scene-info)
(define *hud-select-scene-act3*
(new 'static 'boxed-array :type hud-scene-info
(new 'static 'hud-scene-info
:name "fortress-save-friends-intro-a"
:continue "hideout-start"
:info "fortress-save-friends-intro-a"
:text #x2bf
)
(new 'static 'hud-scene-info
:name "fortress-save-friends-res"
:continue "prison-start"
:info "fortress-save-friends-res"
:text #x2c0
)
(new 'static 'hud-scene-info
:name "sewer-blow-up-statue-intro"
:continue "hiphog-start"
:info "sewer-blow-up-statue-intro"
:text #x2c5
)
(new 'static 'hud-scene-info
:name "sewer-hosehead"
:continue "sewesc-start"
:info "sewer-hosehead"
:text #x2c7
)
(new 'static 'hud-scene-info
:name "sewer-blow-up-statue-res"
:continue "sewesc-start"
:info "sewer-blow-up-statue-res"
:text #x2c6
)
(new 'static 'hud-scene-info
:name "city-class-2-race-intro"
:continue "garage-class3-movie"
:info "city-class-2-race-intro"
:text #x298
)
(new 'static 'hud-scene-info
:name "city-class-2-race-res"
:continue "garage-class3-movie"
:info "city-class-2-race-res"
:text #x299
)
(new 'static 'hud-scene-info
:name "city-stop-bomb-bots-intro"
:continue "hideout-start"
:info "city-stop-bomb-bots-intro"
:text #x2ac
)
(new 'static 'hud-scene-info
:name "city-get-dark-gun"
:continue "gungame-movie"
:info "city-get-dark-gun"
:text #x2b5
)
(new 'static 'hud-scene-info
:name "city-errol-challenge-intro"
:continue "hiphog-start"
:info "city-errol-challenge-intro"
:text #x2ad
)
(new 'static 'hud-scene-info
:name "city-errol-challenge-res"
:continue "garage-start-class3"
:info "city-errol-challenge-res"
:text #x2bb
)
(new 'static 'hud-scene-info
:name "ruins-get-to-hut-res"
:continue "ruins-hut"
:info "ruins-get-to-hut-res"
:text #x285
)
(new 'static 'hud-scene-info
:name "forest-protect-samos-intro-a"
:continue "onintent-start"
:info "forest-protect-samos-intro-a"
:text #x2f3
)
(new 'static 'hud-scene-info
:name "forest-protect-samos-intro-b"
:continue "forest-tree"
:info "forest-protect-samos-intro-b"
:text #x2f4
)
(new 'static 'hud-scene-info
:name "forest-protect-samos-res"
:continue "forest-tree"
:info "forest-protect-samos-res"
:text #x2f5
)
(new 'static 'hud-scene-info :name "crane-intro" :continue "vinroom-start" :info "crane-intro" :text #x288)
(new 'static 'hud-scene-info :name "crane-victory" :continue "strip-start" :info "crane-victory" :text #x289)
(new 'static 'hud-scene-info
:name "drill-destroy-control-tower-intro"
:continue "vinroom-start"
:info "drill-destroy-control-tower-intro"
:text #x2d7
)
(new 'static 'hud-scene-info
:name "drill-top-explode"
:continue "drillmid-checkpoint"
:info "drill-top-explode"
:text #x2d8
)
(new 'static 'hud-scene-info
:name "city-save-lurkers-intro"
:continue "kiosk-start"
:info "city-save-lurkers-intro"
:text #x2ab
)
(new 'static 'hud-scene-info
:name "city-class-1-race-intro-a"
:continue "garage-class3-movie"
:info "city-class-1-race-intro-a"
:text #x29a
)
(new 'static 'hud-scene-info
:name "city-class-1-race-intro-b"
:continue "stadiumd-start"
:info "city-class-1-race-intro-b"
:text #x29b
)
(new 'static 'hud-scene-info
:name "city-class-1-race-res"
:continue "stadiumd-start"
:info "city-class-1-race-res"
:text #x29c
)
(new 'static 'hud-scene-info
:name "palace-sneak-in-res"
:continue "palroof-throne"
:info "palace-sneak-in-res"
:text #x2e0
)
(new 'static 'hud-scene-info
:name "castle-krew-boss-fight-intro"
:continue "casboss-start"
:info "castle-krew-boss-fight-intro"
:text #x2e2
)
(new 'static 'hud-scene-info
:name "castle-krew-boss-fight-res"
:continue "casboss-start"
:info "castle-krew-boss-fight-res"
:text #x2e3
)
(new 'static 'hud-scene-info
:name "city-ashelin-drop-off"
:continue "ctyport-air-train-ashelin"
:info "city-ashelin-drop-off"
:text #x2b9
)
(new 'static 'hud-scene-info
:name "city-whack-a-metal-intro"
:continue "hiphog-start"
:info "city-whack-a-metal-intro"
:text #x2ae
)
(new 'static 'hud-scene-info
:name "city-whack-a-metal-res"
:continue "hiphog-start"
:info "city-whack-a-metal-res"
:text #x2af
)
(new 'static 'hud-scene-info
:name "city-defend-stadium-intro"
:continue "stadium-blimp"
:info "city-defend-stadium-intro"
:text #x2b0
)
(new 'static 'hud-scene-info
:name "city-defend-stadium-res"
:continue "stadium-blimp"
:info "city-defend-stadium-res"
:text #x2b1
)
(new 'static 'hud-scene-info
:name "under-find-sig-res"
:continue "under-start"
:info "under-find-sig-res"
:text #x2fd
)
(new 'static 'hud-scene-info
:name "under-centipede-one"
:continue "under-start"
:info "under-centipede-one"
:text #x2fe
)
(new 'static 'hud-scene-info
:name "under-centipede-two"
:continue "under-start"
:info "under-centipede-two"
:text #x2ff
)
(new 'static 'hud-scene-info
:name "under-centipede-three"
:continue "under-start"
:info "under-centipede-three"
:text #x300
)
(new 'static 'hud-scene-info
:name "under-get-sig-out-res"
:continue "under-start"
:info "under-get-sig-out-res"
:text #x301
)
(new 'static 'hud-scene-info
:name "consite-find-baron-res"
:continue "consite-start"
:info "consite-find-baron-res"
:text #x2e1
)
(new 'static 'hud-scene-info
:name "nest-break-barrier-res"
:continue "nest-gun"
:info "nest-break-barrier-res"
:text #x302
)
(new 'static 'hud-scene-info
:name "nest-air-train-out"
:continue "nest-warp"
:info "nest-air-train-out"
:text #x303
)
(new 'static 'hud-scene-info
:name "nest-air-train-in"
:continue "nest-warp"
:info "nest-air-train-in"
:text #x304
)
(new 'static 'hud-scene-info
:name "nest-boss-intro"
:continue "nestb-boss"
:info "nest-kor-boss-fight-intro-b"
:text #x306
)
(new 'static 'hud-scene-info
:name "nest-boss-mid"
:continue "nestb-boss"
:info "nest-kor-boss-fight-mid"
:text #x305
)
(new 'static 'hud-scene-info
:name "outro"
:continue "nestb-outro"
:info '("outro-nest" "outro-palace" "outro-hiphog" "outro-port")
:text #x308
)
)
)
File diff suppressed because it is too large Load Diff
+294 -59
View File
@@ -93,15 +93,15 @@
)
;; definition for function convert-korean-text
(defun convert-korean-text ((arg0 game-text))
"Converts the provided [[game-text]] into korean. Returns a [[string]]"
(defun convert-korean-text ((arg0 string))
"Converts the provided [[string]] of [[game-text]] into korean. Returns a [[string]]"
(local-vars (v1-21 int))
(let ((gp-0 (&-> arg0 text)))
(let ((gp-0 (-> arg0 data)))
*expanded-text-line0*
(let ((s4-0 0))
0
(let ((s1-0 0)
(s5-0 ((method-of-type string length) (the-as string arg0)))
(s5-0 (length arg0))
)
(set! *expand-buf-number* (logxor *expand-buf-number* 1))
(let ((s3-0 (if (zero? *expand-buf-number*)
@@ -114,33 +114,26 @@
(clear s3-0)
(while (< s4-0 s5-0)
(cond
((= (-> (the-as (pointer uint8) (&+ gp-0 s4-0))) 3)
((= (-> gp-0 s4-0) 3)
(+! s4-0 1)
(while (and (< s4-0 s5-0)
(!= (-> (the-as (pointer uint8) (&+ gp-0 s4-0))) 3)
(!= (-> (the-as (pointer uint8) (&+ gp-0 s4-0))) 4)
)
(set! (-> s3-0 data s1-0) (-> (the-as (pointer uint8) (&+ gp-0 s4-0))))
(while (and (< s4-0 s5-0) (!= (-> gp-0 s4-0) 3) (!= (-> gp-0 s4-0) 4))
(set! (-> s3-0 data s1-0) (-> gp-0 s4-0))
(+! s4-0 1)
(+! s1-0 1)
)
)
(else
(let ((v1-17 (+ s4-0 1)))
(-> (the-as (pointer uint8) (&+ gp-0 v1-17)))
(-> gp-0 v1-17)
(set! s4-0 (+ v1-17 1))
)
(set! (-> s3-0 data s1-0) (the-as uint 126))
(let ((v1-19 (+ s1-0 1)))
(set! (-> s3-0 data v1-19) (the-as uint 89))
(let ((v1-20 (+ v1-19 1)))
(while (and (< s4-0 s5-0)
(< v1-20 s2-0)
(!= (-> (the-as (pointer uint8) (&+ gp-0 s4-0))) 3)
(!= (-> (the-as (pointer uint8) (&+ gp-0 s4-0))) 4)
)
(while (and (< s4-0 s5-0) (< v1-20 s2-0) (!= (-> gp-0 s4-0) 3) (!= (-> gp-0 s4-0) 4))
(cond
((= (-> (the-as (pointer uint8) (&+ gp-0 s4-0))) 5)
((= (-> gp-0 s4-0) 5)
(set! (-> s3-0 data v1-20) (the-as uint 1))
(+! s4-0 1)
(set! v1-21 (+ v1-20 1))
@@ -150,7 +143,7 @@
(set! v1-21 (+ v1-20 1))
)
)
(set! (-> s3-0 data v1-21) (-> (the-as (pointer uint8) (&+ gp-0 s4-0))))
(set! (-> s3-0 data v1-21) (-> gp-0 s4-0))
(+! s4-0 1)
(let ((v1-22 (+ v1-21 1)))
(set! (-> s3-0 data v1-22) (the-as uint 126))
@@ -230,7 +223,7 @@
)
)
((= (-> obj language-id) 6)
(convert-korean-text (the-as game-text (-> obj data v1-2 text)))
(convert-korean-text (-> obj data v1-2 text))
)
(else
(-> obj data v1-2 text)
@@ -257,7 +250,261 @@
(define text-is-loading #f)
;; definition for function load-game-text-info
;; ERROR: function was not converted to expressions. Cannot decompile.
;; WARN: Found some very strange gotos. Check result carefully, this is not well tested.
;; ERROR: failed type prop at 3: Could not figure out load: (set! v1 (l.wu gp))
;; WARN: Return type mismatch none vs int.
(defun load-game-text-info ((a0-0 string) (a1-0 symbol) (a2-0 kheap))
"Load text, if needed. txt-name is the group name, curr-text is the _symbol_ for
the game-text-info, and heap is the heap to load to. The heap will be cleared."
(local-vars
(v0-0 none)
(v0-1 none)
(v0-2 none)
(v0-3 none)
(v0-4 none)
(v0-5 none)
(v0-6 none)
(v0-7 none)
(v0-8 none)
(v0-9 none)
(v0-10 none)
(v0-11 none)
(v0-12 none)
(v0-13 none)
(v1-0 game-text-info)
(v1-1 none)
(v1-2 none)
(v1-3 none)
(v1-4 none)
(v1-5 none)
(v1-6 none)
(v1-7 none)
(v1-9 none)
(v1-10 none)
(v1-11 none)
(v1-12 none)
(v1-13 none)
(v1-14 none)
(v1-16 none)
(v1-17 none)
(v1-18 none)
(v1-20 none)
(v1-21 none)
(v1-24 none)
(v1-25 none)
(v1-26 none)
(a0-1 none)
(a0-2 none)
(a0-3 none)
(a0-4 none)
(a0-5 none)
(a0-6 none)
(a0-7 none)
(a0-8 none)
(a0-10 none)
(a0-11 none)
(a0-12 none)
(a0-13 none)
(a0-14 none)
(a0-15 none)
(a0-17 none)
(a0-18 none)
(a0-19 none)
(a0-20 none)
(a0-21 none)
(a0-22 none)
(a1-2 none)
(a1-3 none)
(a1-4 none)
(a1-5 none)
(a1-6 none)
(a1-7 none)
(a1-8 none)
(a1-9 none)
(a2-1 none)
(a2-2 none)
(a2-3 none)
(a2-4 none)
(a2-5 none)
(a2-6 none)
(a3-1 none)
(a3-2 none)
(t0-0 none)
(s1-0 none)
(s2-0 none)
(s2-1 none)
(s3-0 none)
(s3-1 none)
(t9-0 none)
(t9-1 none)
(t9-2 none)
(t9-3 none)
(t9-4 none)
(t9-5 none)
(t9-6 none)
(t9-7 none)
(t9-8 none)
(t9-9 none)
(t9-10 none)
(t9-11 none)
(t9-12 none)
(sv-16 none)
(sv-24 none)
(sv-32 none)
(sv-40 none)
)
(when (begin
(when (begin
(and (begin
(set! v1-0 (the-as game-text-info (l.wu a1-0)))
(set! sv-16 v1-0)
(set! v1-1 (the-as none *setting-control*))
(set! v1-2 (the-as none (l.d (+ v1-1 28))))
(set! sv-24 v1-2)
(set! sv-32 0)
(set! v1-3 (the-as none (-> a2-0 top)))
(set! a0-1 (the-as none (-> a2-0 base)))
(set! v1-4 (the-as none (- v1-3 a0-1)))
(set! sv-40 v1-4)
(set! t9-0 (the-as none scf-get-territory))
(set! v0-0 (the-as none (call!)))
(set! v1-5 (the-as none (+ v0-0 -1)))
(set! a0-2 (the-as none (zero? v1-5)))
a0-2
)
(begin (set! v1-7 sv-24) (zero? v1-7))
(begin (set! t9-1 (the-as none demo?)) (set! v0-1 (the-as none (call!))) (set! v1-6 (the-as none (not v0-1))))
)
v1-6
)
(set! v1-9 (the-as none 7))
(set! sv-24 v1-9)
)
(or (begin (set! v1-10 sv-16) (set! a0-3 (the-as none (= v1-10 #f))) a0-3)
(begin
(set! v1-12 sv-16)
(set! v1-13 (the-as none (l.w (+ v1-12 4))))
(set! a0-4 sv-24)
(set! a0-5 (the-as none (!= v1-13 a0-4)))
a0-5
)
(begin
(set! t9-2 (the-as none string=))
(set! v1-14 sv-16)
(set! a0-6 (the-as none (l.wu (+ v1-14 8))))
(set! a1-1 (the-as none a0-0))
(set! v0-2 (the-as none (call!)))
(set! v1-11 (the-as none (not v0-2)))
)
)
v1-11
)
(cond
((begin
(set! v1-16 (the-as none a2-0))
(set! a0-7 (the-as none (l.wu v1-16)))
(s.w! (+ v1-16 8) a0-7)
((b! #t L50 (nop!)) (nop!))
(label cfg-16)
(set! v0-3 (the-as none 0))
((b! #t L56 (nop!)) (nop!))
(label cfg-17)
(set! s3-0 (the-as none str-load))
(set! s2-0 (the-as none format))
(set! t9-3 (the-as none clear))
(set! a0-8 (the-as none *temp-string*))
(call!)
(set! a0-9 (the-as none v0-4))
(set! a1-2 (the-as none L100))
(set! a2-1 sv-24)
(set! a3-0 (the-as none a0-0))
(set! t9-4 (the-as none s2-0))
(call!)
(set! a0-10 (the-as none *temp-string*))
(set! a1-3 (the-as none -1))
(set! v1-17 (the-as none -64))
(set! a2-2 (the-as none (l.wu (+ a2-0 8))))
(set! a2-3 (the-as none (+ a2-2 63)))
(set! a2-4 (the-as none (logand v1-17 a2-3)))
(set! v1-18 (the-as none (l.wu (+ a2-0 4))))
(set! a3-1 (the-as none (l.wu (+ a2-0 8))))
(set! a3-2 (the-as none (- v1-18 a3-1)))
(set! t9-5 (the-as none s3-0))
(set! v0-6 (the-as none (call!)))
((b! (not v0-6) L49 (nop!)) (nop!))
(label cfg-19)
(set! t9-6 (the-as none str-load-status))
(set! a0-11 (& sv-32))
(set! v0-7 (the-as none (call!)))
(set! v1-20 (the-as none v0-7))
(set! a0-12 (the-as none 'error))
((b! (!= v1-20 a0-12) L52 (set! a0-13 #f)) (empty-form))
(set! t9-7 (the-as none format))
(set! a0-14 (the-as none 0))
(set! a1-4 (the-as none L99))
(call!)
(set! v0-3 (the-as none 0))
((b! #t L56 (nop!)) (nop!))
(set! v1-21 (the-as none 0))
((b! #t L54 (nop!)) (nop!))
(label cfg-22)
(set! a0-15 sv-32)
(set! a1-5 sv-40)
(set! a1-6 (the-as none (+ a1-5 -300)))
(>=.si a0-15 a1-6)
)
(return (begin
(set! t9-8 (the-as none format))
(set! a0-17 (the-as none 0))
(set! a1-7 (the-as none L98))
(call!)
(set! v0-3 (the-as none 0))
)
)
)
((begin (set! a0-18 (the-as none 'busy)) (= v1-20 a0-18))
(begin (nop!) (nop!) (nop!) (nop!) (nop!) (nop!) (goto cfg-19))
)
)
(if (begin
(label cfg-27)
(set! v1-24 (the-as none -64))
(set! a0-19 (the-as none (l.wu (+ a2-0 8))))
(set! a0-20 (the-as none (+ a0-19 63)))
(set! s2-1 (the-as none (logand v1-24 a0-20)))
(set! t9-9 (the-as none flush-cache))
(set! a0-21 (the-as none 0))
(call!)
(set! s3-1 (the-as none link))
(set! s1-0 (the-as none format))
(set! t9-10 (the-as none clear))
(set! a0-22 (the-as none *temp-string*))
(call!)
(set! a0-23 (the-as none v0-11))
(set! a1-8 (the-as none L100))
(set! a2-5 sv-24)
(set! t9-11 (the-as none s1-0))
(set! a3-3 (the-as none a0-0))
(call!)
(set! v1-25 (the-as none *temp-string*))
(set! a1-9 (the-as none (+ v1-25 4)))
(set! a2-6 sv-32)
(set! t0-0 (the-as none 0))
(set! t9-12 (the-as none s3-1))
(set! a0-24 (the-as none s2-1))
(set! a3-4 (the-as none a2-0))
(set! v0-13 (the-as none (call!)))
(s.w! a1-0 v0-13)
(set! v1-26 (the-as none (l.wu a1-0)))
(<=0.si v1-26)
)
(s.w! a1-0 #f)
)
)
(set! v0-3 (the-as none 0))
(label cfg-30)
(ret-value v0-3)
)
;; definition for function load-level-text-files
;; WARN: Return type mismatch int vs none.
@@ -278,53 +525,41 @@
"Draws some lines"
(when *cheat-mode*
(let ((s5-0 (new 'static 'vector4w))
(gp-0 (new 'static 'matrix))
(gp-0 (new 'static 'vector4w-4))
)
(set-vector!
(-> gp-0 vector 0)
(the-as float (the int (+ -256.0 (-> arg0 origin x))))
(the-as float (the int (+ -208.0 (-> arg0 origin y))))
0.0
(the-as float #x1)
(the int (+ -256.0 (-> arg0 origin x)))
(the int (+ -208.0 (-> arg0 origin y)))
0
1
)
(set-vector!
(-> gp-0 vector 1)
(the-as float (the int (+ -256.0 (-> arg0 width) (-> arg0 origin x))))
(the-as float (the int (+ -208.0 (-> arg0 origin y))))
0.0
(the-as float #x1)
(the int (+ -256.0 (-> arg0 width) (-> arg0 origin x)))
(the int (+ -208.0 (-> arg0 origin y)))
0
1
)
(set-vector!
(-> gp-0 vector 2)
(the-as float (the int (+ -256.0 (-> arg0 width) (-> arg0 origin x))))
(the-as float (the int (+ -208.0 (-> arg0 height) (-> arg0 origin y))))
0.0
(the-as float #x1)
(the int (+ -256.0 (-> arg0 width) (-> arg0 origin x)))
(the int (+ -208.0 (-> arg0 height) (-> arg0 origin y)))
0
1
)
(set-vector!
(-> gp-0 trans)
(the-as float (the int (+ -256.0 (-> arg0 origin x))))
(the-as float (the int (+ -208.0 (-> arg0 height) (-> arg0 origin y))))
0.0
(the-as float #x1)
(-> gp-0 vector 3)
(the int (+ -256.0 (-> arg0 origin x)))
(the int (+ -208.0 (-> arg0 height) (-> arg0 origin y)))
0
1
)
(set-vector! s5-0 128 128 128 128)
(add-debug-line2d
#t
(bucket-id debug-no-zbuf1)
(the-as vector (-> gp-0 vector))
(-> gp-0 vector 1)
(the-as vector s5-0)
)
(add-debug-line2d #t (bucket-id debug-no-zbuf1) (-> gp-0 vector 1) (-> gp-0 vector 2) (the-as vector s5-0))
(add-debug-line2d #t (bucket-id debug-no-zbuf1) (-> gp-0 vector 2) (-> gp-0 trans) (the-as vector s5-0))
(add-debug-line2d
#t
(bucket-id debug-no-zbuf1)
(-> gp-0 trans)
(the-as vector (-> gp-0 vector))
(the-as vector s5-0)
)
(add-debug-line2d #t (bucket-id debug-no-zbuf1) (the-as vector4w (-> gp-0 vector)) (-> gp-0 vector 1) s5-0)
(add-debug-line2d #t (bucket-id debug-no-zbuf1) (-> gp-0 vector 1) (-> gp-0 vector 2) s5-0)
(add-debug-line2d #t (bucket-id debug-no-zbuf1) (-> gp-0 vector 2) (-> gp-0 vector 3) s5-0)
(add-debug-line2d #t (bucket-id debug-no-zbuf1) (-> gp-0 vector 3) (the-as vector4w (-> gp-0 vector)) s5-0)
)
)
0
@@ -573,11 +808,11 @@
(draw-string *game-text-line* s2-1 arg1)
(set! (-> arg1 color) (-> *font-work* last-color))
(let ((a3-2 (-> s2-1 base)))
(let ((v1-121 (-> s2-1 base)))
(set! (-> (the-as (pointer int64) v1-121)) #x20000000)
(s.w! (+ v1-121 8) 0)
(s.w! (+ v1-121 12) 0)
(set! (-> s2-1 base) (&+ v1-121 16))
(let ((v1-121 (the-as object (-> s2-1 base))))
(set! (-> (the-as dma-packet v1-121) dma) (new 'static 'dma-tag :id (dma-tag-id next)))
(set! (-> (the-as dma-packet v1-121) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet v1-121) vif1) (new 'static 'vif-tag))
(set! (-> s2-1 base) (&+ (the-as pointer v1-121) 16))
)
(dma-bucket-insert-tag
(-> *display* frames (-> *display* on-screen) bucket-group)
+6 -23
View File
@@ -27,6 +27,8 @@
"rand-vu-init",
"rand-vu",
"rand-vu-nostep",
// text - TODO - https://github.com/open-goal/jak-project/issues/1939
"load-game-text-info",
// MATRIX
"matrix-axis-sin-cos-vu!",
"matrix-axis-sin-cos!",
@@ -63,10 +65,6 @@
"(method 17 trsqv)",
// history - rgba issues
"history-draw",
// text - cfg failure
"load-game-text-info",
// - never fixed this one in jak 1, assumed there was an original bug?
"print-game-text",
// joint asm
"cspace<-parented-transformq-joint!",
"(method 11 art-joint-anim-manager)",
@@ -91,22 +89,12 @@
"v-slrp2!",
"v-slrp3!",
// cam-master
// - focus understanding / decomp crashes
"reset-target-tracking",
// - incomplete bitfield?
"(method 16 camera-master)",
"master-track-target",
// cam-states
// - mostly decompiler crashes/hangs
"cam-bike-code",
"cam-stick-code",
"cam-string-code",
"cam-string-line-of-sight",
"cam-string-joystick", // whats butt-handle!
"cam-circular-code",
"cam-circular-position",
"cam-los-collide", // vector-dot with stack
// cam-update
"update-visible", // assertion crash when filling out bsp-header
// - vector-dot issue
"cam-los-collide",
// sparticle-launcher
// - field loaded as signed and unsigned
"sp-relaunch-particle-3d",
@@ -173,10 +161,5 @@
],
"skip_compile_states": {
"cam-bike": [
"code" // hang
],
"cam-stick": ["code"],
"cam-circular": ["enter", "event"]
}
}