Files
jak-project/test/decompiler/reference/engine/game/main_REF.gc
T
ManDude 0cdeed9be7 minor windows fixes (#1311)
* [pp2] put `define` dest on a single line

* update source!

* Update type_analysis.cpp

* update old credits & racer code

* change clang-cl args (REALLY force avx)

* Update credits_REF.gc

* comment small unused code

* add timer to decompiler

* fix unnecessary copy-constructors (no speed increase)

* fixes

* Update expression_build.cpp

* wtf is this thing anyway

* im bored.

* clang

* fix!

* Revert "fix!"

This reverts commit 5b1ce6c718.

* Revert "clang"

This reverts commit 5e67d9ccd1.

* Revert "im bored."

This reverts commit 070e957ce8.

* Revert "Update expression_build.cpp"

This reverts commit b94d092fc5.

* Revert "fixes"

This reverts commit f3d871f60a.

* Revert "fix unnecessary copy-constructors (no speed increase)"

This reverts commit 9100725802.

* Keep the random inoffensive changes

* Revert "Update type_analysis.cpp"

This reverts commit d2456a5c75.

* Update type_analysis.cpp
2022-04-17 21:11:09 -04:00

1451 lines
48 KiB
Common Lisp
Vendored
Generated

;;-*-Lisp-*-
(in-package goal)
;; definition for function set-letterbox-frames
;; INFO: Return type mismatch time-frame vs none.
(defun set-letterbox-frames ((arg0 time-frame))
(set! (-> *game-info* letterbox-time) (+ (-> *display* base-frame-counter) arg0))
(none)
)
;; definition for function letterbox
;; INFO: Return type mismatch pointer vs none.
(defun letterbox ()
(let* ((dma-buf (-> *display* frames (-> *display* on-screen) frame global-buf))
(gp-0 (-> dma-buf base))
)
(draw-sprite2d-xy dma-buf 0 0 512 25 (new 'static 'rgba :a #x80))
(draw-sprite2d-xy dma-buf 0 199 512 26 (new 'static 'rgba :a #x80))
(let ((a3-2 (-> dma-buf base)))
(let ((pkt (the-as dma-packet (-> dma-buf base))))
(set! (-> pkt dma) (new 'static 'dma-tag :id (dma-tag-id next)))
(set! (-> pkt vif0) (new 'static 'vif-tag))
(set! (-> pkt vif1) (new 'static 'vif-tag))
(set! (-> dma-buf base) (the-as pointer (&+ pkt 16)))
)
(dma-bucket-insert-tag
(-> *display* frames (-> *display* on-screen) frame bucket-group)
(bucket-id debug-draw1)
gp-0
(the-as (pointer dma-tag) a3-2)
)
)
)
(none)
)
;; definition for function set-blackout-frames
;; INFO: Return type mismatch time-frame vs none.
(defun set-blackout-frames ((arg0 time-frame))
(if (zero? arg0)
(set! (-> *game-info* blackout-time) (-> *display* base-frame-counter))
(set! (-> *game-info* blackout-time)
(max (-> *game-info* blackout-time) (+ (-> *display* base-frame-counter) arg0))
)
)
(none)
)
;; definition for function blackout
;; INFO: Return type mismatch pointer vs none.
(defun blackout ()
(let* ((dma-buf (-> *display* frames (-> *display* on-screen) frame global-buf))
(sprite-dma-data (-> dma-buf base))
)
(draw-sprite2d-xy dma-buf 0 0 512 224 (new 'static 'rgba :a #x80))
(let ((a3-1 (-> dma-buf base)))
(let ((pkt (the-as dma-packet (-> dma-buf base))))
(set! (-> pkt dma) (new 'static 'dma-tag :id (dma-tag-id next)))
(set! (-> pkt vif0) (new 'static 'vif-tag))
(set! (-> pkt vif1) (new 'static 'vif-tag))
(set! (-> dma-buf base) (the-as pointer (&+ pkt 16)))
)
(dma-bucket-insert-tag
(-> *display* frames (-> *display* on-screen) frame bucket-group)
(bucket-id debug-draw1)
sprite-dma-data
(the-as (pointer dma-tag) a3-1)
)
)
)
(none)
)
;; definition for function paused?
;; INFO: Return type mismatch object vs symbol.
(defun paused? ()
(the-as
symbol
(or (= *master-mode* 'pause)
(or (and *progress-process* (not (hidden? (-> *progress-process* 0)))) (= *master-mode* 'menu))
)
)
)
;; definition for function movie?
(defun movie? ()
(logtest? (-> *kernel-context* prevent-from-run) (process-mask movie))
)
;; definition for function set-master-mode
;; INFO: Return type mismatch int vs none.
(defun set-master-mode ((new-mode symbol))
(set! *master-mode* new-mode)
(if *debug-segment*
(menu-respond-to-pause)
)
(case *master-mode*
(('pause)
(if (not *debug-pause*)
(logior! (-> *setting-control* default process-mask) (process-mask pause))
)
(logclear! (-> *setting-control* default process-mask) (process-mask menu))
(set! *pause-lock* #f)
(sound-group-pause (the-as uint 255))
(hide-progress-screen)
)
(('menu)
(logior! (-> *setting-control* default process-mask) (process-mask menu))
(logclear! (-> *setting-control* default process-mask) (process-mask pause progress))
(set! *pause-lock* #f)
(hide-progress-screen)
)
(('progress)
(logclear! (-> *setting-control* default process-mask) (process-mask menu))
(when (not *progress-process*)
(activate-progress *dproc* (progress-screen fuel-cell))
(if (not *progress-process*)
(set-master-mode 'game)
)
)
)
(('game)
(logclear! (-> *setting-control* default process-mask) (process-mask pause menu))
(sound-group-continue (the-as uint 255))
(hide-progress-screen)
)
)
(copy-settings-from-target! *setting-control*)
0
(none)
)
;; definition for symbol *last-master-mode*, type symbol
(define *last-master-mode* 'game)
;; definition for function toggle-pause
(defun toggle-pause ()
(case *master-mode*
(('game)
(set! *last-master-mode* *master-mode*)
(set-master-mode
(cond
((and (logtest? (-> *cpad-list* cpads 0 valid) 128) *target*)
(if (or *progress-process* (not (-> *setting-control* current allow-pause)))
*master-mode*
'pause
)
)
((cpad-hold? 0 r3)
(if *debug-segment*
'menu
*master-mode*
)
)
((and (or (cpad-hold? 0 select) (cpad-hold? 0 r2)) *debug-segment*)
'pause
)
((and (not *debug-segment*) (zero? (logand (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons start))))
*master-mode*
)
((not (progress-allowed?))
(if (pause-allowed?)
'pause
*master-mode*
)
)
((cpad-hold? 0 start)
(if *progress-process*
'game
'progress
)
)
(else
*master-mode*
)
)
)
)
(('menu)
(set-master-mode (cond
((cpad-hold? 0 r3)
*last-master-mode*
)
((cpad-hold? 0 select r2)
(if *debug-segment*
'pause
*master-mode*
)
)
((and (not (movie?)) (not *progress-process*))
(if (not *target*)
'pause
'progress
)
)
(else
'game
)
)
)
(set! *pause-lock* (and *cheat-mode* (cpad-hold? 0 r2)))
)
(('pause)
(set! *last-master-mode* *master-mode*)
(set-master-mode (cond
((cpad-hold? 0 r3)
(if *debug-segment*
'menu
*master-mode*
)
)
((and *cheat-mode* (cpad-hold? 0 select r2))
'game
)
((cpad-hold? 0 start)
'game
)
(else
*master-mode*
)
)
)
(set! *pause-lock* (and *cheat-mode* (cpad-hold? 0 r2)))
)
(('progress)
(set-master-mode (cond
((cpad-hold? 0 r3)
(if *debug-segment*
'menu
*master-mode*
)
)
((cpad-hold? 0 start)
*last-master-mode*
)
(else
*master-mode*
)
)
)
(set! *pause-lock* (and *cheat-mode* (cpad-hold? 0 r2)))
)
)
0
)
;; definition for symbol *screen-filter*, type screen-filter
(define *screen-filter*
(new 'static 'screen-filter :draw? #f :color (new 'static 'rgba :g #x20 :b #x40 :a #x50))
)
;; definition for method 9 of type screen-filter
;; INFO: Return type mismatch pointer vs none.
(defmethod draw screen-filter ((obj screen-filter))
(let* ((buf (-> *display* frames (-> *display* on-screen) frame global-buf))
(gp-0 (-> buf base))
)
(draw-sprite2d-xy buf -256 (- (-> *video-parms* screen-hy)) 512 (-> *video-parms* screen-sy) (-> obj color))
(let ((a3-1 (-> buf base)))
(let ((v1-4 (the-as dma-packet (-> buf base))))
(set! (-> v1-4 dma) (new 'static 'dma-tag :id (dma-tag-id next)))
(set! (-> v1-4 vif0) (new 'static 'vif-tag))
(set! (-> v1-4 vif1) (new 'static 'vif-tag))
(set! (-> buf base) (&+ (the-as pointer v1-4) 16))
)
(dma-bucket-insert-tag
(-> *display* frames (-> *display* on-screen) frame bucket-group)
(bucket-id debug-draw1)
gp-0
(the-as (pointer dma-tag) a3-1)
)
)
)
(none)
)
;; definition for symbol *cheat-temp*, type (pointer int32)
(define *cheat-temp* (the-as (pointer int32) (malloc 'global 16)))
;; definition for symbol *master-exit*, type symbol
(define *master-exit* #f)
;; definition for symbol *progress-cheat*, type symbol
(define *progress-cheat* #f)
;; definition for function main-cheats
(defun main-cheats ()
(when (and (cpad-hold? 0 l3) (or *cheat-mode* (= *kernel-boot-message* 'play)))
(when (nonzero? (-> *cpad-list* cpads 0 button0-rel 0))
(let ((cheatmode-state (-> *cheat-temp* 0)))
(cond
((zero? cheatmode-state)
(cond
((cpad-pressed? 0 up)
(+! (-> *cheat-temp* 0) 1)
)
(else
(set! (-> *cheat-temp* 0) 0)
0
)
)
)
((= cheatmode-state 1)
(cond
((cpad-pressed? 0 up)
(+! (-> *cheat-temp* 0) 1)
)
(else
(set! (-> *cheat-temp* 0) 0)
0
)
)
)
((= cheatmode-state 2)
(cond
((cpad-pressed? 0 down)
(+! (-> *cheat-temp* 0) 1)
)
(else
(set! (-> *cheat-temp* 0) 0)
0
)
)
)
((= cheatmode-state 3)
(cond
((cpad-pressed? 0 down)
(+! (-> *cheat-temp* 0) 1)
)
(else
(set! (-> *cheat-temp* 0) 0)
0
)
)
)
((= cheatmode-state 4)
(cond
((cpad-pressed? 0 left)
(+! (-> *cheat-temp* 0) 1)
)
(else
(set! (-> *cheat-temp* 0) 0)
0
)
)
)
((= cheatmode-state 5)
(cond
((cpad-pressed? 0 right)
(+! (-> *cheat-temp* 0) 1)
)
(else
(set! (-> *cheat-temp* 0) 0)
0
)
)
)
((= cheatmode-state 6)
(cond
((cpad-pressed? 0 left)
(+! (-> *cheat-temp* 0) 1)
)
(else
(set! (-> *cheat-temp* 0) 0)
0
)
)
)
((= cheatmode-state 7)
(cond
((cpad-pressed? 0 right)
(+! (-> *cheat-temp* 0) 1)
)
(else
(set! (-> *cheat-temp* 0) 0)
0
)
)
)
((= cheatmode-state 8)
(cond
((cpad-pressed? 0 x)
(+! (-> *cheat-temp* 0) 1)
)
(else
(set! (-> *cheat-temp* 0) 0)
0
)
)
)
((= cheatmode-state 9)
(cond
((cpad-pressed? 0 x)
(+! (-> *cheat-temp* 0) 1)
)
(else
(set! (-> *cheat-temp* 0) 0)
0
)
)
)
((= cheatmode-state 10)
(cond
((cpad-pressed? 0 square)
(+! (-> *cheat-temp* 0) 1)
)
(else
(set! (-> *cheat-temp* 0) 0)
0
)
)
)
((= cheatmode-state 11)
(cond
((cpad-pressed? 0 circle)
(+! (-> *cheat-temp* 0) 1)
)
(else
(set! (-> *cheat-temp* 0) 0)
0
)
)
)
((= cheatmode-state 12)
(cond
((cpad-pressed? 0 square)
(+! (-> *cheat-temp* 0) 1)
)
(else
(set! (-> *cheat-temp* 0) 0)
0
)
)
)
((= cheatmode-state 13)
(cond
((cpad-pressed? 0 circle)
(logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons r1))
(logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons r1))
(set! *cheat-mode* (not *cheat-mode*))
(if *cheat-mode*
(sound-play-by-name (static-sound-name "select-menu") (new-sound-id) 1024 0 0 1 #t)
(sound-play-by-name (static-sound-name "cursor-options") (new-sound-id) 1024 0 0 1 #t)
)
(set! (-> *cheat-temp* 0) 0)
0
)
(else
(set! (-> *cheat-temp* 0) 0)
0
)
)
)
)
)
)
(when *cheat-mode*
(when (nonzero? (-> *cpad-list* cpads 0 button0-rel 0))
(let ((cheatmode-debug-state (-> *cheat-temp* 1)))
(cond
((zero? cheatmode-debug-state)
(cond
((cpad-pressed? 0 circle)
(+! (-> *cheat-temp* 1) 1)
)
(else
(set! (-> *cheat-temp* 1) 0)
0
)
)
)
((= cheatmode-debug-state 1)
(cond
((cpad-pressed? 0 square)
(+! (-> *cheat-temp* 1) 1)
)
(else
(set! (-> *cheat-temp* 1) 0)
0
)
)
)
((= cheatmode-debug-state 2)
(cond
((cpad-pressed? 0 circle)
(+! (-> *cheat-temp* 1) 1)
)
(else
(set! (-> *cheat-temp* 1) 0)
0
)
)
)
((= cheatmode-debug-state 3)
(cond
((cpad-pressed? 0 square)
(+! (-> *cheat-temp* 1) 1)
)
(else
(set! (-> *cheat-temp* 1) 0)
0
)
)
)
((= cheatmode-debug-state 4)
(cond
((cpad-pressed? 0 x)
(+! (-> *cheat-temp* 1) 1)
)
(else
(set! (-> *cheat-temp* 1) 0)
0
)
)
)
((= cheatmode-debug-state 5)
(cond
((cpad-pressed? 0 x)
(+! (-> *cheat-temp* 1) 1)
)
(else
(set! (-> *cheat-temp* 1) 0)
0
)
)
)
((= cheatmode-debug-state 6)
(cond
((cpad-pressed? 0 right)
(+! (-> *cheat-temp* 1) 1)
)
(else
(set! (-> *cheat-temp* 1) 0)
0
)
)
)
((= cheatmode-debug-state 7)
(cond
((cpad-pressed? 0 left)
(+! (-> *cheat-temp* 1) 1)
)
(else
(set! (-> *cheat-temp* 1) 0)
0
)
)
)
((= cheatmode-debug-state 8)
(cond
((cpad-pressed? 0 right)
(+! (-> *cheat-temp* 1) 1)
)
(else
(set! (-> *cheat-temp* 1) 0)
0
)
)
)
((= cheatmode-debug-state 9)
(cond
((cpad-pressed? 0 left)
(+! (-> *cheat-temp* 1) 1)
)
(else
(set! (-> *cheat-temp* 1) 0)
0
)
)
)
((= cheatmode-debug-state 10)
(cond
((cpad-pressed? 0 down)
(+! (-> *cheat-temp* 1) 1)
)
(else
(set! (-> *cheat-temp* 1) 0)
0
)
)
)
((= cheatmode-debug-state 11)
(cond
((cpad-pressed? 0 down)
(+! (-> *cheat-temp* 1) 1)
)
(else
(set! (-> *cheat-temp* 1) 0)
0
)
)
)
((= cheatmode-debug-state 12)
(cond
((cpad-pressed? 0 up)
(+! (-> *cheat-temp* 1) 1)
)
(else
(set! (-> *cheat-temp* 1) 0)
0
)
)
)
((= cheatmode-debug-state 13)
(cond
((cpad-pressed? 0 up)
(logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons r1))
(logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons r1))
(set! *cheat-mode* (if (= *cheat-mode* 'debug)
#t
'debug
)
)
(if *cheat-mode*
(sound-play-by-name (static-sound-name "select-menu") (new-sound-id) 1024 0 0 1 #t)
(sound-play-by-name (static-sound-name "cursor-options") (new-sound-id) 1024 0 0 1 #t)
)
(set! (-> *cheat-temp* 1) 0)
0
)
(else
(set! (-> *cheat-temp* 1) 0)
0
)
)
)
)
)
)
)
(case (scf-get-territory)
((2)
(when (nonzero? (-> *cpad-list* cpads 0 button0-rel 0))
(let ((cheat-language-state (-> *cheat-temp* 2)))
(cond
((zero? cheat-language-state)
(cond
((cpad-pressed? 0 l1)
(+! (-> *cheat-temp* 2) 1)
)
(else
(set! (-> *cheat-temp* 2) 0)
0
)
)
)
((= cheat-language-state 1)
(cond
((cpad-pressed? 0 r1)
(+! (-> *cheat-temp* 2) 1)
)
(else
(set! (-> *cheat-temp* 2) 0)
0
)
)
)
((= cheat-language-state 2)
(cond
((cpad-pressed? 0 l1)
(+! (-> *cheat-temp* 2) 1)
)
(else
(set! (-> *cheat-temp* 2) 0)
0
)
)
)
((= cheat-language-state 3)
(cond
((cpad-pressed? 0 r1)
(+! (-> *cheat-temp* 2) 1)
)
(else
(set! (-> *cheat-temp* 2) 0)
0
)
)
)
((= cheat-language-state 4)
(cond
((cpad-pressed? 0 triangle)
(+! (-> *cheat-temp* 2) 1)
)
(else
(set! (-> *cheat-temp* 2) 0)
0
)
)
)
((= cheat-language-state 5)
(cond
((cpad-pressed? 0 circle)
(+! (-> *cheat-temp* 2) 1)
)
(else
(set! (-> *cheat-temp* 2) 0)
0
)
)
)
((= cheat-language-state 6)
(cond
((cpad-pressed? 0 x)
(+! (-> *cheat-temp* 2) 1)
)
(else
(set! (-> *cheat-temp* 2) 0)
0
)
)
)
((= cheat-language-state 7)
(cond
((cpad-pressed? 0 square)
(logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons r1))
(logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons r1))
(set! *progress-cheat* (if *progress-cheat*
#f
'language
)
)
(if *progress-cheat*
(sound-play-by-name (static-sound-name "select-menu") (new-sound-id) 1024 0 0 1 #t)
(sound-play-by-name (static-sound-name "cursor-options") (new-sound-id) 1024 0 0 1 #t)
)
(set! (-> *cheat-temp* 2) 0)
0
)
(else
(set! (-> *cheat-temp* 2) 0)
0
)
)
)
)
)
)
)
)
(when *debug-segment*
(when (nonzero? (-> *cpad-list* cpads 0 button0-rel 0))
(let ((cheat-pal-state (-> *cheat-temp* 3)))
(cond
((zero? cheat-pal-state)
(cond
((cpad-pressed? 0 x)
(+! (-> *cheat-temp* 3) 1)
)
(else
(set! (-> *cheat-temp* 3) 0)
0
)
)
)
((= cheat-pal-state 1)
(cond
((cpad-pressed? 0 square)
(+! (-> *cheat-temp* 3) 1)
)
(else
(set! (-> *cheat-temp* 3) 0)
0
)
)
)
((= cheat-pal-state 2)
(cond
((cpad-pressed? 0 triangle)
(+! (-> *cheat-temp* 3) 1)
)
(else
(set! (-> *cheat-temp* 3) 0)
0
)
)
)
((= cheat-pal-state 3)
(cond
((cpad-pressed? 0 circle)
(+! (-> *cheat-temp* 3) 1)
)
(else
(set! (-> *cheat-temp* 3) 0)
0
)
)
)
((= cheat-pal-state 4)
(cond
((cpad-pressed? 0 x)
(+! (-> *cheat-temp* 3) 1)
)
(else
(set! (-> *cheat-temp* 3) 0)
0
)
)
)
((= cheat-pal-state 5)
(cond
((cpad-pressed? 0 square)
(+! (-> *cheat-temp* 3) 1)
)
(else
(set! (-> *cheat-temp* 3) 0)
0
)
)
)
((= cheat-pal-state 6)
(cond
((cpad-pressed? 0 triangle)
(+! (-> *cheat-temp* 3) 1)
)
(else
(set! (-> *cheat-temp* 3) 0)
0
)
)
)
((= cheat-pal-state 7)
(cond
((cpad-pressed? 0 circle)
(logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons r1))
(logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons r1))
(set! *progress-cheat* (if *progress-cheat*
#f
'pal
)
)
(if *progress-cheat*
(sound-play-by-name (static-sound-name "select-menu") (new-sound-id) 1024 0 0 1 #t)
(sound-play-by-name (static-sound-name "cursor-options") (new-sound-id) 1024 0 0 1 #t)
)
(set! (-> *cheat-temp* 3) 0)
0
)
(else
(set! (-> *cheat-temp* 3) 0)
0
)
)
)
)
)
)
)
)
(when (and (= *cheat-mode* 'debug) (not *debug-segment*))
(when (and (cpad-hold? 0 l1) (cpad-hold? 0 l2) (cpad-hold? 0 r1) (cpad-pressed? 0 r2))
(if *target*
(stop 'debug)
(start 'play (get-or-create-continue! *game-info*))
)
)
(if (and (cpad-hold? 0 left) (cpad-hold? 0 up) (cpad-pressed? 0 select))
(initialize! *game-info* 'game (the-as game-save #f) "title-start")
)
(if (cpad-pressed? 1 r3)
(inspect global)
)
(when (cpad-hold? 1 r3)
(let* ((dma-buff (if *debug-segment*
(-> *display* frames (-> *display* on-screen) frame debug-buf)
(-> *display* frames (-> *display* on-screen) frame global-buf)
)
)
(dma-start (-> dma-buff base))
)
(show-iop-memory dma-buff)
(let ((a3-9 (-> dma-buff base)))
(let ((dma-pkt (the-as dma-packet (-> dma-buff base))))
(set! (-> dma-pkt dma) (new 'static 'dma-tag :id (dma-tag-id next)))
(set! (-> dma-pkt vif0) (new 'static 'vif-tag))
(set! (-> dma-pkt vif1) (new 'static 'vif-tag))
(set! (-> dma-buff base) (&+ (the-as pointer dma-pkt) 16))
)
(dma-bucket-insert-tag
(-> *display* frames (-> *display* on-screen) frame bucket-group)
(bucket-id debug-draw0)
dma-start
(the-as (pointer dma-tag) a3-9)
)
)
)
)
(if (cpad-pressed? 1 triangle)
(set! *display-level-border* (not *display-level-border*))
)
)
(when (!= *kernel-boot-message* 'play)
(let ((timeout (scf-get-timeout))
(inactive-timeout (scf-get-inactive-timeout))
)
(when (and (or (and (nonzero? timeout)
(>= (+ -300000 (-> *display* real-frame-counter)) (the int (* 300.0 (the float timeout))))
)
(and (nonzero? inactive-timeout)
(>= (- (-> *display* base-frame-counter) (-> *cpad-list* cpads 0 change-time))
(the int (* 300.0 (the float inactive-timeout)))
)
)
(= *master-exit* 'force)
)
(progress-allowed?)
(!= *master-exit* #t)
)
(let ((game-end-proc (get-process *default-dead-pool* process #x4000)))
(if (when game-end-proc
(let ((t9-28 (method-of-type process activate)))
(t9-28 game-end-proc *default-pool* 'process (the-as pointer #x70004000))
)
(run-next-time-in-process
game-end-proc
(lambda :behavior process
()
(set-blackout-frames (seconds 100))
(set! (-> *setting-control* default allow-pause) #f)
(set! (-> *setting-control* default allow-progress) #f)
(copy-settings-from-target! *setting-control*)
(set! (-> *setting-control* default sfx-volume) 0.0)
(set! (-> *setting-control* default music-volume) 0.0)
(set! (-> *setting-control* default dialog-volume) 0.0)
(set! (-> *setting-control* default ambient-volume) 0.0)
(let ((gp-0 (-> *display* base-frame-counter)))
(until (>= (- (-> *display* base-frame-counter) gp-0) (seconds 0.1))
(suspend)
)
)
(kernel-shutdown)
(none)
)
)
(-> game-end-proc ppointer)
)
(set! *master-exit* #t)
)
)
)
)
)
0
)
;; definition for function display-loop
;; WARN: Unsupported inline assembly instruction kind - [mtc0 Perf, r0]
;; WARN: Unsupported inline assembly instruction kind - [sync.l]
;; WARN: Unsupported inline assembly instruction kind - [sync.p]
;; WARN: Unsupported inline assembly instruction kind - [mfpc a0, pcr0]
;; WARN: Unsupported inline assembly instruction kind - [mfpc a0, pcr1]
;; WARN: Unsupported inline assembly instruction kind - [mtc0 Perf, r0]
;; WARN: Unsupported inline assembly instruction kind - [sync.l]
;; WARN: Unsupported inline assembly instruction kind - [sync.p]
;; WARN: Unsupported inline assembly instruction kind - [mtpc pcr0, r0]
;; WARN: Unsupported inline assembly instruction kind - [mtpc pcr1, r0]
;; WARN: Unsupported inline assembly instruction kind - [sync.l]
;; WARN: Unsupported inline assembly instruction kind - [sync.p]
;; WARN: Unsupported inline assembly instruction kind - [mtc0 Perf, a0]
;; WARN: Unsupported inline assembly instruction kind - [sync.l]
;; WARN: Unsupported inline assembly instruction kind - [sync.p]
;; WARN: Unsupported inline assembly instruction kind - [mtc0 Perf, r0]
;; WARN: Unsupported inline assembly instruction kind - [sync.l]
;; WARN: Unsupported inline assembly instruction kind - [sync.p]
;; WARN: Unsupported inline assembly instruction kind - [mfpc a0, pcr0]
;; WARN: Unsupported inline assembly instruction kind - [mfpc a0, pcr1]
;; WARN: Unsupported inline assembly instruction kind - [mtc0 Perf, r0]
;; WARN: Unsupported inline assembly instruction kind - [sync.l]
;; WARN: Unsupported inline assembly instruction kind - [sync.p]
;; WARN: Unsupported inline assembly instruction kind - [mtpc pcr0, r0]
;; WARN: Unsupported inline assembly instruction kind - [mtpc pcr1, r0]
;; WARN: Unsupported inline assembly instruction kind - [sync.l]
;; WARN: Unsupported inline assembly instruction kind - [sync.p]
;; WARN: Unsupported inline assembly instruction kind - [mtc0 Perf, a0]
;; WARN: Unsupported inline assembly instruction kind - [sync.l]
;; WARN: Unsupported inline assembly instruction kind - [sync.p]
(defbehavior display-loop process ()
(local-vars (a0-54 int) (a0-56 int) (a0-73 int) (a0-75 int))
(stack-size-set! (-> self main-thread) 512)
(let ((disp *display*))
(dma-send-to-spr (the-as uint #x70000000) (the-as uint *terrain-context*) (the-as uint 0) #t)
(set! *teleport* #t)
(update-per-frame-settings! *setting-control*)
(init-time-of-day-context *time-of-day-context*)
(display-sync disp)
(swap-display disp)
(free-all-prim-nodes *touching-list*)
(blerc-init)
(dma-send
(the-as dma-bank #x10008000)
(the-as uint (-> *collide-vif0-init* data))
(the-as uint (/ (-> *collide-vif0-init* length) 4))
)
(suspend)
(while *run*
(blerc-execute)
(blerc-init)
(texscroll-execute)
(ripple-execute)
(set! *weather-off* #f)
(let ((v1-13 (-> *game-info* current-continue level)))
(dotimes (a0-8 (-> *level* length))
(let ((a1-6 (-> *level* level a0-8)))
(when (= (-> a1-6 status) 'active)
(if (and (= (-> a1-6 name) v1-13) (-> *level* play?))
(set! (-> *setting-control* default music) (-> a1-6 info music-bank))
)
)
)
)
)
(set! (-> *setting-control* default sound-flava) (the-as uint 49))
(set! (-> *setting-control* default sound-flava-priority) 0.0)
(when (and *execute-ambients* (not (paused?)))
(if *target*
(set! (-> *target* draw secondary-interp) 0.0)
)
(let ((s5-1 (sphere<-vector+r! (new 'stack 'sphere) (ear-trans) 0.0)))
(let ((v1-28 #x70000000))
(s.w! (+ v1-28 16) 0)
)
(dotimes (s4-1 (-> *level* length))
(let ((v1-32 (-> *level* level s4-1)))
(if (= (-> v1-32 status) 'active)
(collect-ambients (-> v1-32 bsp) s5-1 0 (the-as ambient-list (+ 16 #x70000000)))
)
)
)
)
(countdown (s4-2 (-> (the-as (pointer int32) #x70000000) 4))
(cleanup-for-death (-> (+ (* s4-2 4) (the-as int (the-as (pointer process-drawable) #x70000000))) 5))
)
)
(if *debug-segment*
(add-frame
(-> *display* frames (-> *display* on-screen) frame profile-bar 0)
'draw
(new 'static 'rgba :r #x40 :b #x40 :a #x80)
)
)
(execute-math-engine)
(if *debug-segment*
(add-frame
(-> *display* frames (-> *display* on-screen) frame profile-bar 0)
'draw
(new 'static 'rgba :r #x80 :a #x80)
)
)
(if *debug-segment*
(add-frame
(-> *display* frames (-> *display* on-screen) frame profile-bar 0)
'draw
(new 'static 'rgba :r #x40 :b #x40 :a #x80)
)
)
(*debug-hook*)
(main-cheats)
(if *debug-segment*
(add-frame
(-> *display* frames (-> *display* on-screen) frame profile-bar 0)
'draw
(new 'static 'rgba :r #x20 :g #x20 :a #x80)
)
)
(update-camera)
(if *debug-segment*
(add-frame
(-> *display* frames (-> *display* on-screen) frame profile-bar 0)
'draw
(new 'static 'rgba :r #x40 :b #x40 :a #x80)
)
)
(*draw-hook*)
(if *debug-segment*
(add-frame
(-> *display* frames (-> *display* on-screen) frame profile-bar 0)
'draw
(new 'static 'rgba :g #x80 :a #x80)
)
)
(if *debug-segment*
(add-frame
(-> *display* frames (-> *display* on-screen) frame profile-bar 0)
'draw
(new 'static 'rgba :r #x40 :b #x40 :a #x80)
)
)
(*menu-hook*)
(if *debug-segment*
(add-frame
(-> *display* frames (-> *display* on-screen) frame profile-bar 0)
'draw
(new 'static 'rgba :g #x40 :a #x80)
)
)
(make-current-level-available-to-progress)
(update-task-hints)
(load-level-text-files -1)
(if *debug-segment*
(add-frame
(-> disp frames (-> disp on-screen) frame profile-bar 0)
'unknown-cpu-time
(new 'static 'rgba :a #x80)
)
)
(let ((v1-112 (-> *perf-stats* data)))
(b! (zero? (-> v1-112 0 ctrl)) cfg-46 :delay (nop!))
(.mtc0 Perf r0)
(.sync.l)
(.sync.p)
(.mfpc a0-54 pcr0)
(+! (-> v1-112 0 accum0) a0-54)
(.mfpc a0-56 pcr1)
(+! (-> v1-112 0 accum1) a0-56)
)
(label cfg-46)
0
(when (nonzero? (sync-path 0 0))
(*dma-timeout-hook*)
(reset-vif1-path)
(if *debug-segment*
(format
0
"profile bar at ~D.~%"
(-> *display* frames (-> *display* on-screen) frame profile-bar 1 profile-frame-count)
)
)
)
(let* ((v1-123 (-> *perf-stats* data))
(a0-60 (-> v1-123 0 ctrl))
)
(+! (-> v1-123 0 count) 1)
(b! (zero? a0-60) cfg-51 :delay (nop!))
(.mtc0 Perf r0)
(.sync.l)
(.sync.p)
(.mtpc pcr0 r0)
(.mtpc pcr1 r0)
(.sync.l)
(.sync.p)
(.mtc0 Perf a0-60)
)
(.sync.l)
(.sync.p)
(label cfg-51)
0
(if (not *progress-process*)
(depth-cue disp)
)
(if (-> *screen-filter* draw?)
(draw *screen-filter*)
)
(when (or (movie?) (< (-> *display* base-frame-counter) (-> *game-info* letterbox-time)))
(if (< (-> *game-info* letterbox-time) (-> *display* base-frame-counter))
(set! (-> *game-info* letterbox-time) (-> *display* base-frame-counter))
)
(if (= (-> *setting-control* current aspect-ratio) 'aspect4x3)
(letterbox)
)
)
(if (< (-> *display* base-frame-counter) (-> *game-info* blackout-time))
(set! (-> *setting-control* default bg-a-force) 1.0)
(set! (-> *setting-control* default bg-a-force) 0.0)
)
(let ((v1-152 (-> *perf-stats* data)))
(b! (zero? (-> v1-152 0 ctrl)) cfg-68 :delay (nop!))
(.mtc0 Perf r0)
(.sync.l)
(.sync.p)
(.mfpc a0-73 pcr0)
(+! (-> v1-152 0 accum0) a0-73)
(.mfpc a0-75 pcr1)
(+! (-> v1-152 0 accum1) a0-75)
)
(label cfg-68)
0
(let ((debug-txt-buf (-> (if *debug-segment*
(-> disp frames (-> disp on-screen) frame debug-buf)
(-> disp frames (-> disp on-screen) frame global-buf)
)
base
)
)
)
(when *debug-segment*
(debug-draw-buffers)
(let* ((debug-buf (-> disp frames (-> disp on-screen) frame debug-buf))
(s4-3 (-> debug-buf base))
)
(when *display-profile*
(let* ((v1-172 debug-buf)
(a0-77 (the-as object (-> v1-172 base)))
)
(set! (-> (the-as dma-packet a0-77) dma) (new 'static 'dma-tag :qwc #xa :id (dma-tag-id cnt)))
(set! (-> (the-as dma-packet a0-77) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet a0-77) vif1) (new 'static 'vif-tag :imm #xa :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-172 base) (&+ (the-as pointer a0-77) 16))
)
(let* ((v1-173 debug-buf)
(a0-79 (the-as object (-> v1-173 base)))
)
(set! (-> (the-as gs-gif-tag a0-79) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x9))
(set! (-> (the-as gs-gif-tag a0-79) regs)
(new 'static 'gif-tag-regs
:regs0 (gif-reg-id a+d)
:regs1 (gif-reg-id a+d)
:regs2 (gif-reg-id a+d)
:regs3 (gif-reg-id a+d)
:regs4 (gif-reg-id a+d)
:regs5 (gif-reg-id a+d)
:regs6 (gif-reg-id a+d)
:regs7 (gif-reg-id a+d)
:regs8 (gif-reg-id a+d)
:regs9 (gif-reg-id a+d)
:regs10 (gif-reg-id a+d)
:regs11 (gif-reg-id a+d)
:regs12 (gif-reg-id a+d)
:regs13 (gif-reg-id a+d)
:regs14 (gif-reg-id a+d)
:regs15 (gif-reg-id a+d)
)
)
(set! (-> v1-173 base) (&+ (the-as pointer a0-79) 16))
)
(let* ((v1-174 debug-buf)
(a0-81 (-> v1-174 base))
)
(set! (-> (the-as (pointer gs-alpha) a0-81) 0) (new 'static 'gs-alpha :b #x1 :d #x1))
(set! (-> (the-as (pointer gs-reg64) a0-81) 1) (gs-reg64 alpha-1))
(set! (-> (the-as (pointer gs-zbuf) a0-81) 2) (new 'static 'gs-zbuf :zbp #x1c0 :psm (gs-psm ct24) :zmsk #x1))
(set! (-> (the-as (pointer gs-reg64) a0-81) 3) (gs-reg64 zbuf-1))
(set! (-> (the-as (pointer gs-test) a0-81) 4) (new 'static 'gs-test :zte #x1 :ztst (gs-ztest always)))
(set! (-> (the-as (pointer gs-reg64) a0-81) 5) (gs-reg64 test-1))
(set! (-> (the-as (pointer uint64) a0-81) 6) (the-as uint 0))
(set! (-> (the-as (pointer gs-reg64) a0-81) 7) (gs-reg64 pabe))
(set! (-> (the-as (pointer gs-clamp) a0-81) 8)
(new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))
)
(set! (-> (the-as (pointer gs-reg64) a0-81) 9) (gs-reg64 clamp-1))
(set! (-> (the-as (pointer gs-tex1) a0-81) 10) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1))
(set! (-> (the-as (pointer gs-reg64) a0-81) 11) (gs-reg64 tex1-1))
(set! (-> (the-as (pointer gs-texa) a0-81) 12) (new 'static 'gs-texa :ta1 #x80))
(set! (-> (the-as (pointer gs-reg64) a0-81) 13) (gs-reg64 texa))
(set! (-> (the-as (pointer gs-texclut) a0-81) 14) (new 'static 'gs-texclut :cbw #x4))
(set! (-> (the-as (pointer gs-reg64) a0-81) 15) (gs-reg64 texclut))
(set! (-> (the-as (pointer gs-fogcol) a0-81) 16) (the-as gs-fogcol *fog-color*))
(set! (-> (the-as (pointer gs-reg64) a0-81) 17) (gs-reg64 fogcol))
(set! (-> v1-174 base) (&+ a0-81 144))
)
(dotimes (s2-0 2)
(let ((s1-0 (-> disp frames (-> disp on-screen) frame profile-bar s2-0)))
(add-end-frame s1-0 'end-draw (new 'static 'rgba :r #x40 :g #x40 :b #x40 :a #x40))
(draw s1-0 debug-buf (* 10 s2-0))
)
0
)
)
(when *display-deci-count*
(let ((s2-1 draw-string-xy))
(format (clear *temp-string*) "~D" *deci-count*)
(s2-1 *temp-string* debug-buf 448 210 (font-color default) (font-flags shadow kerning))
)
)
(display-file-info)
(let ((a3-6 (-> debug-buf base)))
(let ((v1-188 (the-as object (-> debug-buf base))))
(set! (-> (the-as dma-packet v1-188) dma) (new 'static 'dma-tag :id (dma-tag-id next)))
(set! (-> (the-as dma-packet v1-188) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet v1-188) vif1) (new 'static 'vif-tag))
(set! (-> debug-buf base) (&+ (the-as pointer v1-188) 16))
)
(dma-bucket-insert-tag
(-> *display* frames (-> *display* on-screen) frame bucket-group)
(bucket-id debug-draw1)
s4-3
(the-as (pointer dma-tag) a3-6)
)
)
)
)
(let* ((s3-1 (if *debug-segment*
(-> disp frames (-> disp on-screen) frame debug-buf)
(-> disp frames (-> disp on-screen) frame global-buf)
)
)
(s4-4 (-> s3-1 base))
)
(if (= *master-mode* 'pause)
(draw-string-xy
(lookup-text! *common-text* (game-text-id pause) #f)
s3-1
256
160
(font-color orange-red)
(font-flags shadow kerning middle large)
)
)
(let ((a3-8 (the int (draw-string *stdcon0* s3-1 *font-context*))))
(draw-string-xy
*stdcon1*
s3-1
(the int (-> *font-context* origin x))
a3-8
(font-color default)
(font-flags shadow kerning)
)
)
(if *display-iop-info*
(show-iop-info s3-1)
)
(if *display-memcard-info*
(show-mc-info s3-1)
)
(let ((a3-9 (-> s3-1 base)))
(let ((v1-215 (the-as object (-> s3-1 base))))
(set! (-> (the-as dma-packet v1-215) dma) (new 'static 'dma-tag :id (dma-tag-id next)))
(set! (-> (the-as dma-packet v1-215) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet v1-215) vif1) (new 'static 'vif-tag))
(set! (-> s3-1 base) (&+ (the-as pointer v1-215) 16))
)
(dma-bucket-insert-tag
(-> *display* frames (-> *display* on-screen) frame bucket-group)
(bucket-id debug-draw0)
s4-4
(the-as (pointer dma-tag) a3-9)
)
)
)
(let ((v1-220 *dma-mem-usage*))
(when (nonzero? v1-220)
(set! (-> v1-220 length) (max 85 (-> v1-220 length)))
(set! (-> v1-220 data 84 name) "debug")
(+! (-> v1-220 data 84 count) 1)
(+! (-> v1-220 data 84 used) (&-
(-> (if *debug-segment*
(-> disp frames (-> disp on-screen) frame debug-buf)
(-> disp frames (-> disp on-screen) frame global-buf)
)
base
)
(the-as uint debug-txt-buf)
)
)
(set! (-> v1-220 data 84 total) (-> v1-220 data 84 used))
)
)
)
(set! *stdcon* (clear *stdcon0*))
(swap-display disp)
(set! (-> *time-of-day-context* title-updated) #f)
(set! *teleport* #f)
(when (nonzero? *teleport-count*)
(set! *teleport* #t)
(set! *teleport-count* (+ *teleport-count* -1))
)
(let* ((v1-228 (-> *perf-stats* data))
(a0-112 (-> v1-228 0 ctrl))
)
(+! (-> v1-228 0 count) 1)
(b! (zero? a0-112) cfg-98 :delay (nop!))
(.mtc0 Perf r0)
(.sync.l)
(.sync.p)
(.mtpc pcr0 r0)
(.mtpc pcr1 r0)
(.sync.l)
(.sync.p)
(.mtc0 Perf a0-112)
)
(.sync.l)
(.sync.p)
(label cfg-98)
0
(process-particles)
(dma-send
(the-as dma-bank #x10008000)
(the-as uint (-> *collide-vif0-init* data))
(the-as uint (/ (-> *collide-vif0-init* length) 4))
)
(swap-sound-buffers (ear-trans) (camera-pos) (camera-angle))
(str-play-kick)
(level-update *level*)
(mc-run)
(auto-save-check)
(suspend)
)
)
(set! *dproc* #f)
(format 0 "display is off #<#x~X>.~%" self)
0
)
;; definition for function on
(defun on ((arg0 symbol))
(when (not *dproc*)
(when (not arg0)
(if (= (-> *level* level0 status) 'inactive)
(bg 'halfpipe)
)
)
(set! *run* #t)
(let ((s5-0 (get-process *4k-dead-pool* process #x4000)))
(set! *dproc*
(ppointer->process
(when s5-0
(let ((t9-2 (method-of-type process activate)))
(t9-2 s5-0 *display-pool* 'display (&-> *dram-stack* 14336))
)
((the-as (function cpu-thread function none) set-to-run) (-> s5-0 main-thread) display-loop)
(-> s5-0 ppointer)
)
)
)
)
(cond
((or (level-get-with-status *level* 'loaded)
(level-get-with-status *level* 'alive)
(level-get-with-status *level* 'active)
)
(activate-levels! *level*)
(when (not arg0)
(let ((gp-1 (entity-by-type camera-start)))
(if (and gp-1 (type-type? (-> gp-1 type) entity-actor))
(camera-teleport-to-entity gp-1)
)
)
)
)
(else
(kill-by-name 'display *active-pool*)
(set! *dproc* #f)
)
)
*dproc*
)
)
;; definition for function off
(defun off ()
(stop 'debug)
(dotimes (gp-0 (-> *level* length))
(let ((a0-2 (-> *level* level gp-0)))
(if (= (-> a0-2 status) 'active)
(deactivate a0-2)
)
)
)
(set! *run* #f)
0
)