mirror of
https://github.com/open-goal/jak-project
synced 2026-05-24 23:22:14 -04:00
0cdeed9be7
* [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 commit5b1ce6c718. * Revert "clang" This reverts commit5e67d9ccd1. * Revert "im bored." This reverts commit070e957ce8. * Revert "Update expression_build.cpp" This reverts commitb94d092fc5. * Revert "fixes" This reverts commitf3d871f60a. * Revert "fix unnecessary copy-constructors (no speed increase)" This reverts commit9100725802. * Keep the random inoffensive changes * Revert "Update type_analysis.cpp" This reverts commitd2456a5c75. * Update type_analysis.cpp
1451 lines
48 KiB
Common Lisp
Vendored
Generated
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
|
|
)
|