Skip to content

Commit

Permalink
decomp: credits but there are still issues
Browse files Browse the repository at this point in the history
  • Loading branch information
xTVaser committed May 28, 2021
1 parent fb93972 commit f6419d7
Show file tree
Hide file tree
Showing 5 changed files with 511 additions and 9 deletions.
19 changes: 10 additions & 9 deletions decompiler/config/all-types.gc
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,8 @@
(define-extern mc-run (function none))
(define-extern mc-check-result (function int))

(define-extern scf-get-territory (function int))

(defenum link-flag
:bitfield #t
:type int32
Expand Down Expand Up @@ -4711,13 +4713,13 @@
:size-assert #x10
:flag-assert #xa00000010
(:methods
(dummy-9 () none 9)
(dummy-9 (_type_ uint symbol) string 9)
)
)

(define-extern *text-group-names* (array string))
(define-extern *common-text-heap* kheap)
(define-extern *common-text* symbol)
(define-extern *common-text* game-text-info) ; TODO guess, but its definitely not just a symbol!
;;;;;;;;;;;;;;;;
;; settings-h
;;;;;;;;;;;;;;;;
Expand Down Expand Up @@ -34619,7 +34621,7 @@
;;(define-extern mc-create-file object) ;; unknown type
;;(define-extern get-heap object) ;; unknown type
;;(define-extern mc-save object) ;; unknown type
(define-extern print-game-text function)
(define-extern print-game-text (function string font-context symbol int int float)) ; TODO decomp error, this seems correct though
;;(define-extern scf-get-time object) ;; unknown type
(define-extern calculate-completion function)
;;(define-extern save-last object) ;; unknown type
Expand Down Expand Up @@ -35033,7 +35035,6 @@
(define-extern set-font-color-alpha function)
;;(define-extern *game-text-line* object) ;; unknown type
(define-extern draw-debug-text-box function)
;;(define-extern scf-get-territory object) ;; unknown type
(define-extern probe-traverse-inline-array-node function)
(define-extern collide-upload-vu0 function)
(define-extern collide-probe-instance-tie-collide-frags function)
Expand Down Expand Up @@ -36563,11 +36564,11 @@
(define-extern get-next-level-down function)
;;(define-extern progress-coming-in object) ;; unknown type
;;(define-extern demo-shared object) ;; unknown type
(define-extern draw-title-credits function)
;;(define-extern *title-credits-spacing* object) ;; unknown type
(define-extern set-credits-font-color function)
(define-extern draw-end-credits function)
;;(define-extern *title-credits-scale* object) ;; unknown type
(define-extern draw-title-credits (function float none))
(define-extern *title-credits-spacing* (array int32)) ;; unknown type
(define-extern set-credits-font-color (function float none))
(define-extern draw-end-credits (function int symbol))
(define-extern *title-credits-scale* (array float)) ;; unknown type
(define-extern find-nearest-attackable function)
(define-extern projectile-update-velocity-space-wars function)
(define-extern projectile-collision-reaction function)
Expand Down
6 changes: 6 additions & 0 deletions decompiler/config/jak1_ntsc_black_label/label_types.jsonc
Original file line number Diff line number Diff line change
Expand Up @@ -449,5 +449,11 @@
"ripple": [
["L73", "float", true],
["L74", "uint64", true]
],

"credits": [
["L32", "(array int32)", true],
["L33", "(array float)", true],
["L49", "float", true]
]
}
8 changes: 8 additions & 0 deletions decompiler/config/jak1_ntsc_black_label/stack_vars.jsonc
Original file line number Diff line number Diff line change
Expand Up @@ -250,5 +250,13 @@

"ripple-add-debug-sphere": [
[16, "vector"]
],

"draw-end-credits": [
[16, "symbol"]
],

"draw-title-credits": [
[16, "symbol"]
]
}
237 changes: 237 additions & 0 deletions goal_src/engine/ui/credits.gc
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,240 @@
;; name in dgo: credits
;; dgos: GAME, ENGINE

;; definition for function set-credits-font-color
;; INFO: Return type mismatch int vs none.
(defun set-credits-font-color ((arg0 float))
(let ((f0-0 255.0))
)
(dotimes (v1-0 4)
(let ((f0-2 (* 64.0 arg0)))
(if (< 128.0 f0-2)
(set! f0-2 128.0)
)
(let
((a1-6
(logior
(logand
(l.wu (+ (+ (* v1-0 4) (the-as int *font-work*)) 2496))
(the-as uint -256)
)
(the-as uint (shr (shl (the int f0-2) 56) 56))
)
)
(a2-6 (+ (* v1-0 4) (the-as int *font-work*)))
)
(s.w! (+ a2-6 2496) a1-6)
)
)
(let ((f0-5 (* 64.0 arg0)))
(if (< 128.0 f0-5)
(set! f0-5 128.0)
)
(let
((a1-13
(logior
(logand
(l.wu (+ (+ (* v1-0 4) (the-as int *font-work*)) 2496))
(the-as uint -65281)
)
(the-as uint (shr (shl (the int f0-5) 56) 48))
)
)
(a2-13 (+ (* v1-0 4) (the-as int *font-work*)))
)
(s.w! (+ a2-13 2496) a1-13)
)
)
(let ((f0-8 (* 64.0 arg0)))
(if (< 128.0 f0-8)
(set! f0-8 128.0)
)
(let
((a1-20
(logior
(logand
(l.wu (+ (+ (* v1-0 4) (the-as int *font-work*)) 2496))
(the-as uint -16711681)
)
(the-as uint (shr (shl (the int f0-8) 56) 40))
)
)
(a2-20 (+ (* v1-0 4) (the-as int *font-work*)))
)
(s.w! (+ a2-20 2496) a1-20)
)
)
)
)

;; definition for symbol *title-credits-scale*, type (array float)
(define
*title-credits-scale*
(the-as (array float)
(new 'static 'boxed-array float 8 0.9 0.9 0.6 0.6 1.0 0.9 1.1 0.9)
)
)

;; definition for symbol *title-credits-spacing*, type (array int32)
(define
*title-credits-spacing*
(the-as (array int32)
(new 'static 'boxed-array int32 8 15 20 15 15 20 15 20 15)
)
)

;; definition for function draw-title-credits
;; INFO: Return type mismatch int vs none.
(defun draw-title-credits ((arg0 float))
(when (>= 1.0 arg0)
(let* ((s4-0 11)
(f30-0 (* arg0 (the float (+ s4-0 -2))))
(s5-0 (the int f30-0))
(gp-0
((method-of-type font-context new)
(new 'stack-no-clear 'symbol)
font-context
*font-default-matrix*
0
0
0.0
0
(the-as uint 3)
)
)
)
(let ((f0-3 1.0))
)
(let ((v1-3 gp-0))
(set! (-> v1-3 width) (the float 600))
)
(let ((v1-4 gp-0))
(set! (-> v1-4 height) (the float 10))
)
(set! (-> gp-0 flags) (the-as uint 38))
(let* ((s5-1 (- s5-0 (mod s5-0 3)))
(f0-10 (- f30-0 (the float s5-1)))
)
(when (and (>= s5-1 0) (< s5-1 s4-0))
(let ((f30-1 (cond
((< f0-10 0.8)
0.0
)
((< f0-10 1.6)
(* 160.0 (+ -0.8 f0-10))
)
((< f0-10 2.2)
128.0
)
(else
(* 128.0 (- 1.0 (* 1.25 (+ -2.2 f0-10))))
)
)
)
)
(set! (-> gp-0 origin x) -44.0)
(set! (-> gp-0 origin y) 90.0)
(dotimes (s4-1 3)
(let* ((s2-0 (+ (+ s4-1 3840) s5-1))
(s3-0 (dummy-9 *common-text* (the-as uint s2-0) #t))
)
(when (= s2-0 3841)
(let ((v1-18 (scf-get-territory)))
(cond
((= v1-18 1)
(set! s3-0 (dummy-9 *common-text* (the-as uint 3857) #t))
)
((= v1-18 2)
(set! s3-0 (dummy-9 *common-text* (the-as uint 3856) #t))
)
)
)
)
(when s3-0
(let ((v1-25 gp-0))
(set! (-> v1-25 scale) (-> *title-credits-scale* (+ s5-1 s4-1)))
)
(print-game-text s3-0 gp-0 #f (the int f30-1) 22)
)
)
(set!
(-> gp-0 origin y)
(+
(-> gp-0 origin y)
(the float (-> *title-credits-spacing* (+ s5-1 s4-1)))
)
)
)
)
)
)
)
)
)

;; definition for function draw-end-credits
(defun draw-end-credits ((arg0 int))
(local-vars (v1-13 int))
(let
((s4-0
(+ (- arg0) (the int (* 1.5 (the float (-> *video-parms* screen-sy)))))
)
(gp-0 2815)
(s3-0 0)
(s2-0 #t)
(s5-0
((method-of-type font-context new)
(new 'stack-no-clear 'symbol)
font-context
*font-default-matrix*
31
0
0.0
0
(the-as uint 3)
)
)
)
(let ((v1-2 s5-0))
(set! (-> v1-2 width) (the float 450))
)
(let ((v1-3 s5-0))
(set! (-> v1-3 height) (the float 10))
)
(let ((v1-4 s5-0))
(set! (-> v1-4 scale) 1.0)
)
(set! (-> s5-0 flags) (the-as uint 39))
(while
(or s2-0 (and (< s4-0 (- s3-0)) (< (the-as uint gp-0) (the-as uint 3249))))
(+! s4-0 s3-0)
(+! gp-0 1)
(let ((a0-8 (dummy-9 *common-text* (the-as uint gp-0) #t)))
(if a0-8
(set! s3-0 (the int (+ 5.0 (print-game-text a0-8 s5-0 #t 128 20))))
(set! s3-0 25)
)
)
(set! s2-0 #f)
)
(cond
((>= (the-as uint gp-0) (the-as uint 3249))
#t
)
(else
(set! (-> s5-0 origin y) (the float s4-0))
(while (< (-> s5-0 origin y) (the float (-> *video-parms* screen-sy)))
(let ((a0-11 (dummy-9 *common-text* (the-as uint gp-0) #t)))
(if a0-11
(set! v1-13 (the int (+ 5.0 (print-game-text a0-11 s5-0 #f 128 20))))
(set! v1-13 25)
)
)
(set! (-> s5-0 origin y) (+ (-> s5-0 origin y) (the float v1-13)))
(+! gp-0 1)
)
#f
)
)
)
)
Loading

0 comments on commit f6419d7

Please sign in to comment.