mirror of
https://github.com/open-goal/jak-project
synced 2026-07-07 06:05:15 -04:00
decomp3: add background data to pc renderers, get mood and time of day stuff running (#3450)
This commit is contained in:
@@ -7003,7 +7003,7 @@
|
||||
|
||||
(deftype mood-channel (structure)
|
||||
((data float 24 :offset-assert 0) ;; guessed by decompiler
|
||||
(vecs vector4 6 :offset 0) ;; guessed by decompiler
|
||||
(vecs vector4 6 :inline :offset 0) ;; guessed by decompiler
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x60
|
||||
@@ -7034,6 +7034,7 @@
|
||||
|
||||
(deftype mood-fog-table (structure)
|
||||
((data mood-fog 8 :inline :offset-assert 0) ;; guessed by decompiler
|
||||
(_data uint128 24 :offset 0 :score -1)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x180
|
||||
@@ -7059,6 +7060,7 @@
|
||||
|
||||
(deftype mood-color-table (structure)
|
||||
((data mood-color 8 :inline :offset-assert 0) ;; guessed by decompiler
|
||||
(_data uint128 16 :offset 0 :score -1)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x100
|
||||
@@ -7144,6 +7146,7 @@
|
||||
((time float :offset-assert 0)
|
||||
(fade float :offset-assert 4)
|
||||
)
|
||||
:pack-me
|
||||
:method-count-assert 9
|
||||
:size-assert #x8
|
||||
:flag-assert #x900000008
|
||||
@@ -7153,6 +7156,7 @@
|
||||
((flicker-off uint8 :offset-assert 0)
|
||||
(flicker-on uint8 :offset-assert 1)
|
||||
)
|
||||
:allow-misaligned
|
||||
:method-count-assert 9
|
||||
:size-assert #x2
|
||||
:flag-assert #x900000002
|
||||
@@ -7202,6 +7206,7 @@
|
||||
(length uint8 :offset-assert 5)
|
||||
(height uint8 :offset-assert 6)
|
||||
)
|
||||
:pack-me
|
||||
:method-count-assert 9
|
||||
:size-assert #x7
|
||||
:flag-assert #x900000007
|
||||
@@ -7238,6 +7243,7 @@
|
||||
(deftype mood-context (mood-context-core3)
|
||||
((itimes vector4w 4 :inline :offset-assert 1776) ;; guessed by decompiler
|
||||
(state uint32 32 :offset-assert 1840) ;; guessed by decompiler
|
||||
(data uint128 123 :offset 0 :score -1)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x7b0
|
||||
@@ -7299,10 +7305,10 @@
|
||||
:size-assert #x118
|
||||
:flag-assert #x1900000118
|
||||
(:methods
|
||||
(mood-control-method-9 () none) ;; 9 ;; (init-weather! (_type_) none)
|
||||
(mood-control-method-10 () none) ;; 10 ;; (update-mood-weather! (_type_ float float float float) none)
|
||||
(mood-control-method-11 () none) ;; 11 ;; (update-mood-range! (_type_ float float float float) none)
|
||||
(mood-control-method-12 () none) ;; 12 ;; (set-time-for-random-weather! (_type_ float float) none)
|
||||
(init-weather! (_type_) none) ;; 9
|
||||
(set-cloud-and-fog-interp! (_type_ float float float float) none) ;; 10 ;; (update-mood-weather! (_type_ float float float float) none)
|
||||
(update-mood-range! (_type_ float float float float) none) ;; 11
|
||||
(set-time-for-random-weather! (_type_ float float) none) ;; 12
|
||||
(set-special-interps!
|
||||
"Sets the `*-special-interp` values with the given values
|
||||
@param! this The [[mood-control]]
|
||||
@@ -7310,20 +7316,20 @@
|
||||
@param rate-interp Value to set [[this::rate-special-interp]]
|
||||
@param set-current-interp? Uses `target-interp` to set [[this::current-special-interp]
|
||||
@returns [[none]]"
|
||||
(_type_ float float symbol) none) ;; 13 ;; (apply-mood-clouds-and-fog (_type_ mood-control-work) none)
|
||||
(_type_ float float symbol) none) ;; 13
|
||||
(weather-event-concluded? ;; TODO - guess at name
|
||||
"@returns [[#t]] if [[this::override-weather-flag]] is set, we aren't in a cutscene and [[this::current-special-interp]] is equal to `0.0`"
|
||||
(_type_) symbol) ;; 14 ;; (apply-mood-color (_type_ mood-control-work) none)
|
||||
(mood-control-method-15 () none) ;; 15 ;; (apply-mood-channels (_type_ mood-control-work) none)
|
||||
(mood-control-method-16 () none) ;; 16 ;; (adjust-num-clouds! (_type_ mood-control-work) none)
|
||||
(mood-control-method-17 () none) ;; 17 ;; (gen-lightning-and-thunder! (_type_) number)
|
||||
(mood-control-method-18 () none) ;; 18 ;; (play-or-stop-lightning! (_type_ sound-spec vector) sound-id)
|
||||
(mood-control-method-19 () none) ;; 19
|
||||
(mood-control-method-20 () none) ;; 20
|
||||
(mood-control-method-21 () none) ;; 21
|
||||
(mood-control-method-22 () none) ;; 22
|
||||
(mood-control-method-23 () none) ;; 23
|
||||
(mood-control-method-24 () none) ;; 24
|
||||
(set-lightning-time! (_type_ int int float) none) ;; 15 ;; (apply-mood-channels (_type_ mood-control-work) none)
|
||||
(apply-mood-clouds-and-fog (_type_ mood-control-work) none) ;; 16 ;; (adjust-num-clouds! (_type_ mood-control-work) none)
|
||||
(apply-mood-fog (_type_ mood-control-work mood-color-table mood-color-table mood-color-table float) none) ;; 17
|
||||
(apply-fog-height (_type_ mood-control-work float float float float) none) ;; 18
|
||||
(apply-mood-colors (_type_ mood-control-work) none) ;; 19
|
||||
(mood-control-method-20 (_type_ mood-control-work mood-color-table mood-color-table mood-color-table float) none) ;; 20
|
||||
(apply-mood-channels (_type_ mood-control-work) none) ;; 21
|
||||
(adjust-num-clouds (_type_ mood-control-work) none) ;; 22
|
||||
(gen-lightning-and-thunder! (_type_ int) none) ;; 23
|
||||
(play-or-stop-lightning-sfx! (_type_ sound-spec vector) none) ;; 24
|
||||
)
|
||||
)
|
||||
|
||||
@@ -11257,9 +11263,9 @@
|
||||
:size-assert #x2814
|
||||
:flag-assert #x2700002814
|
||||
(:methods
|
||||
(sky-work-method-9 () none) ;; 9 ;; (init-sun-data! (_type_ int float float float) none)
|
||||
(sky-work-method-10 () none) ;; 10 ;; (init-orbit-settings! (_type_ int float float float float float float) none)
|
||||
(sky-work-method-11 () none) ;; 11 ;; (update-colors-for-time (_type_ float) none)
|
||||
(init-sun-data! (_type_ int float float float) none) ;; 9
|
||||
(init-orbit-settings! (_type_ int float float float float float float) none) ;; 10
|
||||
(update-colors-for-time (_type_ float) none) ;; 11
|
||||
(update-time-and-speed (_type_ float float) none) ;; 12
|
||||
(sky-work-method-13 () none) ;; 13
|
||||
(draw (_type_) none) ;; 14 ;; (update-matrix (_type_ matrix) none)
|
||||
@@ -23288,7 +23294,7 @@
|
||||
(cam-outside-bsp uint8 :offset 152)
|
||||
(cam-using-back uint8 :offset-assert 153)
|
||||
(cam-box-idx uint16 :offset-assert 154)
|
||||
; (ambients symbol :offset-assert 156) ;; now just #t?
|
||||
(ambients symbol :offset-assert 156) ;; now just #t?
|
||||
(subdivide-close float :offset 160)
|
||||
(subdivide-far float :offset-assert 164)
|
||||
(race-meshes (array entity-race-mesh) :offset-assert 168)
|
||||
@@ -31464,14 +31470,14 @@
|
||||
(define-extern palette-select-special (function mood-context-core3 symbol))
|
||||
(define-extern clear-mood-times (function mood-context symbol)) ;;
|
||||
(define-extern update-mood-itimes (function mood-context none))
|
||||
;; (define-extern update-mood-direction function) ;; (function mood-context-core3 mood-table float float)
|
||||
(define-extern update-mood-direction (function mood-context-core3 mood-table float float))
|
||||
(define-extern update-mood-exterior (function mood-context-core3 mood-table float int object))
|
||||
;; (define-extern copy-mood-exterior function) ;; (function mood-context symbol)
|
||||
;; (define-extern copy-mood-exterior-ambi function) ;; (function mood-context symbol none)
|
||||
(define-extern copy-mood-exterior (function mood-context symbol))
|
||||
(define-extern copy-mood-exterior-ambi (function mood-context symbol none))
|
||||
(define-extern clear-mood-context (function mood-context symbol))
|
||||
;; (define-extern update-mood-interior function) ;; (function mood-context float)
|
||||
;; (define-extern update-mood-interior-ambient function)
|
||||
;; (define-extern update-mood-flames function) ;; (function mood-context int int int float float float float :behavior time-of-day-proc)
|
||||
(define-extern update-mood-interior (function mood-context symbol float))
|
||||
(define-extern update-mood-interior-ambient (function mood-context symbol float vector))
|
||||
(define-extern update-mood-flames (function mood-context int int int float float float float :behavior time-of-day-proc))
|
||||
(define-extern *flash0* (array float))
|
||||
(define-extern *flash1* (array float))
|
||||
(define-extern *flash2* (array float))
|
||||
@@ -31480,22 +31486,21 @@
|
||||
(define-extern *flash5* (array float))
|
||||
(define-extern *flash6* (array float))
|
||||
(define-extern *flash7* (array float))
|
||||
;; (define-extern update-mood-light function) ;; (function mood-context int int float float float float float float)
|
||||
;; (define-extern update-mood-lava function) ;; (function mood-context int int float float float float float float)
|
||||
;; (define-extern update-mood-flicker function) ;; (function mood-context int int none)
|
||||
;; (define-extern update-mood-florescent function) ;; (function mood-context int int float)
|
||||
;; (define-extern update-mood-electricity function) ;; (function mood-context int int float float none)
|
||||
;; (define-extern update-mood-pulse function) ;; (function mood-context int int float float float float none)
|
||||
;; (define-extern update-mood-strobe function) ;; (function mood-context int int int float float)
|
||||
;; (define-extern update-mood-caustics function) ;; (function mood-context int float float float float float)
|
||||
;; (define-extern overide-mood-fog function)
|
||||
;; (define-extern overide-mood-color function)
|
||||
(define-extern update-mood-light (function mood-context int int float float float float float float))
|
||||
(define-extern update-mood-lava (function mood-context int int float float float float float float))
|
||||
(define-extern update-mood-flicker (function mood-context int int none))
|
||||
(define-extern update-mood-florescent (function mood-context int int float))
|
||||
(define-extern update-mood-electricity (function mood-context int int float float none))
|
||||
(define-extern update-mood-pulse (function mood-context int int float float float float none))
|
||||
(define-extern update-mood-strobe (function mood-context int int int float float))
|
||||
(define-extern update-mood-caustics (function mood-context int float float float float float))
|
||||
(define-extern overide-mood-fog (function mood-context float int float none))
|
||||
(define-extern overide-mood-color (function mood-context float int float none))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; mood-funcs ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
#|
|
||||
(deftype ctywide-states (structure)
|
||||
((light light-state :inline :offset-assert 0)
|
||||
(flame flames-state :inline :offset-assert 8)
|
||||
@@ -31504,9 +31509,7 @@
|
||||
:size-assert #xf
|
||||
:flag-assert #x90000000f
|
||||
)
|
||||
|#
|
||||
|
||||
#|
|
||||
(deftype ctysluma-states (structure)
|
||||
((light light-state :inline :offset-assert 0)
|
||||
(flame flames-state :inline :offset-assert 8)
|
||||
@@ -31518,9 +31521,7 @@
|
||||
:size-assert #x1c
|
||||
:flag-assert #x90000001c
|
||||
)
|
||||
|#
|
||||
|
||||
#|
|
||||
(deftype ctyslumb-states (structure)
|
||||
((light light-state :inline :offset-assert 0)
|
||||
(spec-0 sp-field-init-spec :offset-assert 8)
|
||||
@@ -31531,9 +31532,7 @@
|
||||
:size-assert #x14
|
||||
:flag-assert #x900000014
|
||||
)
|
||||
|#
|
||||
|
||||
#|
|
||||
(deftype ctyslumc-states (structure)
|
||||
((light light-state :inline :offset-assert 0)
|
||||
(spec-0 sp-field-init-spec :offset-assert 8)
|
||||
@@ -31544,9 +31543,7 @@
|
||||
:size-assert #x14
|
||||
:flag-assert #x900000014
|
||||
)
|
||||
|#
|
||||
|
||||
#|
|
||||
(deftype ctygenb-states (structure)
|
||||
((light light-state :inline :offset-assert 0)
|
||||
(flame flames-state :inline :offset-assert 8)
|
||||
@@ -31561,9 +31558,7 @@
|
||||
:size-assert #x28
|
||||
:flag-assert #x900000028
|
||||
)
|
||||
|#
|
||||
|
||||
#|
|
||||
(deftype mhcitya-states (structure)
|
||||
((pulse pulse-state :inline :offset-assert 0)
|
||||
)
|
||||
@@ -31571,9 +31566,7 @@
|
||||
:size-assert #x10
|
||||
:flag-assert #x900000010
|
||||
)
|
||||
|#
|
||||
|
||||
#|
|
||||
(deftype mhcityb-states (structure)
|
||||
((pulse pulse-state :inline :offset-assert 0)
|
||||
)
|
||||
@@ -31581,9 +31574,7 @@
|
||||
:size-assert #x10
|
||||
:flag-assert #x900000010
|
||||
)
|
||||
|#
|
||||
|
||||
#|
|
||||
(deftype ctyport-states (structure)
|
||||
((light light-state :inline :offset-assert 0)
|
||||
(spec-0 sp-field-init-spec :offset-assert 8)
|
||||
@@ -31593,9 +31584,7 @@
|
||||
:size-assert #x10
|
||||
:flag-assert #x900000010
|
||||
)
|
||||
|#
|
||||
|
||||
#|
|
||||
(deftype ctymarka-states (structure)
|
||||
((light light-state :inline :offset-assert 0)
|
||||
(blink float :offset-assert 8)
|
||||
@@ -31604,9 +31593,7 @@
|
||||
:size-assert #xc
|
||||
:flag-assert #x90000000c
|
||||
)
|
||||
|#
|
||||
|
||||
#|
|
||||
(deftype mountain-states (structure)
|
||||
((light0 light-state :inline :offset-assert 0)
|
||||
(light1 light-state :inline :offset-assert 8)
|
||||
@@ -31622,9 +31609,7 @@
|
||||
:size-assert #x2c
|
||||
:flag-assert #x90000002c
|
||||
)
|
||||
|#
|
||||
|
||||
#|
|
||||
(deftype ctyinda-states (structure)
|
||||
((light light-state :inline :offset-assert 0)
|
||||
)
|
||||
@@ -31632,9 +31617,7 @@
|
||||
:size-assert #x8
|
||||
:flag-assert #x900000008
|
||||
)
|
||||
|#
|
||||
|
||||
#|
|
||||
(deftype ctyindb-states (structure)
|
||||
((light light-state :inline :offset-assert 0)
|
||||
(flicker float :offset-assert 8)
|
||||
@@ -31643,9 +31626,7 @@
|
||||
:size-assert #xc
|
||||
:flag-assert #x90000000c
|
||||
)
|
||||
|#
|
||||
|
||||
#|
|
||||
(deftype atoll-states (structure)
|
||||
((light light-state :inline :offset-assert 0)
|
||||
(explosion float :offset-assert 8)
|
||||
@@ -31654,43 +31635,42 @@
|
||||
:size-assert #xc
|
||||
:flag-assert #x90000000c
|
||||
)
|
||||
|#
|
||||
|
||||
(define-extern update-mood-default (function mood-context float int none :behavior time-of-day-proc))
|
||||
;; (define-extern update-mood-copy-parent function)
|
||||
;; (define-extern get-sphere-interp function) ;; (function sphere vector float float float)
|
||||
;; (define-extern update-mood-ctywide function) ;; (function mood-context float int none :behavior time-of-day-proc)
|
||||
;; (define-extern update-mood-copy-ctywide function) ;; (function mood-context float int none :behavior time-of-day-proc)
|
||||
;; (define-extern init-mood-ctysluma function) ;; (function mood-context float)
|
||||
;; (define-extern update-mood-ctysluma function) ;; (function mood-context float int none :behavior time-of-day-proc)
|
||||
;; (define-extern init-mood-ctyslumb function) ;; (function mood-context uint)
|
||||
;; (define-extern update-mood-ctyslumb function) ;; (function mood-context float int none :behavior time-of-day-proc)
|
||||
;; (define-extern init-mood-ctyslumc function) ;; (function mood-context none)
|
||||
;; (define-extern update-mood-ctyslumc function) ;; (function mood-context float int none :behavior time-of-day-proc)
|
||||
;; (define-extern init-mood-ctygenb function)
|
||||
;; (define-extern update-mood-ctygenb function)
|
||||
;; (define-extern *mhcity-mood-fog-table* object)
|
||||
;; (define-extern overide-mhcity-fog function)
|
||||
;; (define-extern init-mood-mhcitya function)
|
||||
;; (define-extern update-mood-mhcitya function)
|
||||
;; (define-extern init-mood-mhcityb function)
|
||||
;; (define-extern update-mood-mhcityb function)
|
||||
;; (define-extern calc-lmhcity-palettes function)
|
||||
;; (define-extern update-mood-lmhcitya function)
|
||||
;; (define-extern update-mood-lmhcityb function)
|
||||
;; (define-extern *ctyport-level* object)
|
||||
;; (define-extern update-mood-ctyport function) ;; (function mood-context float int none :behavior time-of-day-proc)
|
||||
;; (define-extern reset-marquee-color! function)
|
||||
;; (define-extern add-marquee-color! function)
|
||||
;; (define-extern update-mood-ctymarka function) ;; (function mood-context float int none :behavior time-of-day-proc)
|
||||
;; (define-extern init-mood-mountain function) ;; (function mood-context uint)
|
||||
;; (define-extern update-mood-mountain function) ;; (function mood-context float int none :behavior time-of-day-proc)
|
||||
;; (define-extern update-mood-ctyinda function)
|
||||
;; (define-extern update-mood-ctyindb function)
|
||||
;; (define-extern init-mood-atoll function) ;; (function mood-context float)
|
||||
;; (define-extern update-mood-atoll function) ;; (function mood-context float int none :behavior time-of-day-proc)
|
||||
;; (define-extern set-atoll-explosion! function) ;; (function float float)
|
||||
;; (define-extern update-mood-atollext function) ;; (function mood-context float int none :behavior time-of-day-proc)
|
||||
(define-extern update-mood-copy-parent (function mood-context object int none))
|
||||
(define-extern get-sphere-interp (function sphere vector float float float))
|
||||
(define-extern update-mood-ctywide (function mood-context float int none :behavior time-of-day-proc))
|
||||
(define-extern update-mood-copy-ctywide (function mood-context float int none :behavior time-of-day-proc))
|
||||
(define-extern init-mood-ctysluma (function mood-context float))
|
||||
(define-extern update-mood-ctysluma (function mood-context float int none :behavior time-of-day-proc))
|
||||
(define-extern init-mood-ctyslumb (function mood-context uint))
|
||||
(define-extern update-mood-ctyslumb (function mood-context float int none :behavior time-of-day-proc))
|
||||
(define-extern init-mood-ctyslumc (function mood-context none))
|
||||
(define-extern update-mood-ctyslumc (function mood-context float int none :behavior time-of-day-proc))
|
||||
(define-extern init-mood-ctygenb (function mood-context object))
|
||||
(define-extern update-mood-ctygenb (function mood-context float int none :behavior time-of-day-proc))
|
||||
(define-extern *mhcity-mood-fog-table* mood-fog-table)
|
||||
(define-extern overide-mhcity-fog function)
|
||||
(define-extern init-mood-mhcitya (function mood-context object))
|
||||
(define-extern update-mood-mhcitya (function mood-context float int none :behavior time-of-day-proc))
|
||||
(define-extern init-mood-mhcityb (function mood-context object))
|
||||
(define-extern update-mood-mhcityb (function mood-context float int none :behavior time-of-day-proc))
|
||||
(define-extern calc-lmhcity-palettes function)
|
||||
(define-extern update-mood-lmhcitya (function mood-context float int none :behavior time-of-day-proc))
|
||||
(define-extern update-mood-lmhcityb (function mood-context float int none :behavior time-of-day-proc))
|
||||
(define-extern *ctyport-level* level-group)
|
||||
(define-extern update-mood-ctyport (function mood-context float int none :behavior time-of-day-proc))
|
||||
(define-extern reset-marquee-color! function)
|
||||
(define-extern add-marquee-color! function)
|
||||
(define-extern update-mood-ctymarka (function mood-context float int none :behavior time-of-day-proc))
|
||||
(define-extern init-mood-mountain (function mood-context uint))
|
||||
(define-extern update-mood-mountain (function mood-context float int none :behavior time-of-day-proc))
|
||||
(define-extern update-mood-ctyinda (function mood-context float int none :behavior time-of-day-proc))
|
||||
(define-extern update-mood-ctyindb (function mood-context float int none :behavior time-of-day-proc))
|
||||
(define-extern init-mood-atoll (function mood-context float))
|
||||
(define-extern update-mood-atoll (function mood-context float int none :behavior time-of-day-proc))
|
||||
(define-extern set-atoll-explosion! (function float float))
|
||||
(define-extern update-mood-atollext (function mood-context float int none :behavior time-of-day-proc))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; mood-funcs2 ;;
|
||||
@@ -31831,14 +31811,14 @@
|
||||
|
||||
(define-extern group-rain-screend-drop sparticle-launch-group)
|
||||
(define-extern update-snow (function float vector vector none))
|
||||
;; (define-extern birth-func-omega-normal-orient function) ;; (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d sparticle-launcher sparticle-launch-state none)
|
||||
;; (define-extern birth-func-rain function) ;; (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d sparticle-launcher sparticle-launch-state none)
|
||||
;; (define-extern check-drop-level-rain function) ;; (function sparticle-system sparticle-cpuinfo vector none)
|
||||
;; (define-extern check-drop-level-rain2 function) ;; (function sparticle-system sparticle-cpuinfo vector none)
|
||||
;; (define-extern check-drop-level-splash function) ;; (function sparticle-system sparticle-cpuinfo vector none)
|
||||
(define-extern birth-func-omega-normal-orient (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d sparticle-launcher sparticle-launch-state none))
|
||||
(define-extern birth-func-rain (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d sparticle-launcher sparticle-launch-state none))
|
||||
(define-extern check-drop-level-rain (function sparticle-system sparticle-cpuinfo vector none))
|
||||
(define-extern check-drop-level-rain2 (function sparticle-system sparticle-cpuinfo vector none))
|
||||
(define-extern check-drop-level-splash (function sparticle-system sparticle-cpuinfo vector none))
|
||||
(define-extern update-rain (function float vector vector none))
|
||||
(define-extern cam-master-effect (function none :behavior camera-master))
|
||||
;; (define-extern sparticle-track-sun function) ;; (function int sparticle-cpuinfo matrix none)
|
||||
(define-extern sparticle-track-sun (function int sparticle-cpuinfo matrix none))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; time-of-day ;;
|
||||
@@ -31865,16 +31845,16 @@
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(define-extern *sky-work* sky-work)
|
||||
;; (define-extern sky-base-polygons object) ;; (inline-array sky-vertex)
|
||||
;; (define-extern sky-roof-polygons object) ;; (inline-array sky-vertex)
|
||||
;; (define-extern *cloud-vert-array* object) ;; cloud-vert-array
|
||||
;; (define-extern *cloud-poly* object) ;; (inline-array sky-vertex)
|
||||
;; (define-extern init-cloud-vert-array function) ;; (function symbol)
|
||||
;; (define-extern *haze-vert-array* object) ;; haze-vert-array
|
||||
;; (define-extern *haze-poly* object) ;; (inline-array sky-vertex)
|
||||
;; (define-extern init-haze-vert-array function) ;; (function symbol)
|
||||
;; (define-extern sky-make-sun-data function) ;; (function sky-work int float none)
|
||||
;; (define-extern sky-make-moon-data function) ;; (function sky-work float none)
|
||||
(define-extern sky-base-polygons (inline-array sky-vertex))
|
||||
(define-extern sky-roof-polygons (inline-array sky-vertex))
|
||||
(define-extern *cloud-vert-array* cloud-vert-array)
|
||||
(define-extern *cloud-poly* (inline-array sky-vertex))
|
||||
(define-extern init-cloud-vert-array (function symbol))
|
||||
(define-extern *haze-vert-array* haze-vert-array)
|
||||
(define-extern *haze-poly* (inline-array sky-vertex))
|
||||
(define-extern init-haze-vert-array (function symbol))
|
||||
(define-extern sky-make-sun-data (function sky-work int float none))
|
||||
(define-extern sky-make-moon-data (function sky-work float none))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; sky-tng ;;
|
||||
|
||||
@@ -112,7 +112,6 @@
|
||||
"(method 33 rub-tower)",
|
||||
"(method 261 crimson-guard)",
|
||||
"(anon-function 25 volcanox-obs)",
|
||||
"foreground-draw-hud",
|
||||
"memcpy"
|
||||
],
|
||||
|
||||
@@ -385,7 +384,8 @@
|
||||
],
|
||||
"(method 16 sparticle-launch-control)": [25, 35, 36, 48, 62, 65, 100, 102],
|
||||
"(anon-function 17 target-ladder)": [0, 1],
|
||||
"command-get-process": [46]
|
||||
"command-get-process": [46],
|
||||
"foreground-draw-hud": [0, 7, 8, 9, 16, 22]
|
||||
},
|
||||
|
||||
// Sometimes the game might use format strings that are fetched dynamically,
|
||||
|
||||
@@ -560,5 +560,29 @@
|
||||
["L2329", "attack-info"],
|
||||
["L2328", "attack-info"],
|
||||
["L2578", "vector"]
|
||||
],
|
||||
"mood": [
|
||||
["L267", "vector"],
|
||||
["L265", "vector"],
|
||||
["L263", "vector"],
|
||||
["L261", "vector"],
|
||||
["L259", "vector"],
|
||||
["L257", "vector"]
|
||||
],
|
||||
"sky-data": [
|
||||
["L26", "(inline-array sky-vertex)", 12],
|
||||
["L25", "(inline-array sky-vertex)", 12],
|
||||
["L23", "(inline-array sky-vertex)", 648],
|
||||
["L21", "(inline-array sky-vertex)", 144]
|
||||
],
|
||||
"mood-funcs": [
|
||||
["L198", "uint64", true],
|
||||
["L197", "uint64", true],
|
||||
["L202", "uint64", true],
|
||||
["L199", "uint64", true],
|
||||
["L196", "uint64", true],
|
||||
["L200", "uint64", true],
|
||||
["L203", "uint64", true],
|
||||
["L201", "uint64", true]
|
||||
]
|
||||
}
|
||||
|
||||
@@ -716,5 +716,7 @@
|
||||
"(anon-function 49 script)": [
|
||||
[128, "part-tracker-subsampler-init-params"],
|
||||
[176, "part-tracker-init-params"]
|
||||
]
|
||||
],
|
||||
"(method 9 mood-control)": [[16, "mood-control-work"]],
|
||||
"check-drop-level-rain": [[16, "vector"]]
|
||||
}
|
||||
|
||||
@@ -3485,7 +3485,10 @@
|
||||
[44, "s5", "process-focusable"],
|
||||
[51, "s5", "process-focusable"]
|
||||
],
|
||||
"(event time-of-day-tick)": [[9, "v1", "float"]],
|
||||
"(event time-of-day-tick)": [
|
||||
[9, "v1", "float"],
|
||||
[203, "v1", "float"]
|
||||
],
|
||||
"load-game-text-info": [
|
||||
[34, "v1", "game-text-info"],
|
||||
[41, "v1", "game-text-info"]
|
||||
@@ -4629,5 +4632,61 @@
|
||||
[[47, 88], "v1", "connection"],
|
||||
[[120, 124], "a0", "basic"],
|
||||
[[127, 130], "a0", "basic"]
|
||||
],
|
||||
"(method 9 mood-control)": [[695, "v0", "sound-rpc-set-param"]],
|
||||
"update-mood-pulse": [[[5, 45], "gp", "pulse-state"]],
|
||||
"update-mood-electricity": [[[3, 19], "gp", "electricity-state"]],
|
||||
"update-mood-florescent": [[[1, 48], "gp", "florescent-state"]],
|
||||
"update-mood-flicker": [[[1, 58], "gp", "flicker-state"]],
|
||||
"update-mood-light": [[[7, 175], "gp", "light-state"]],
|
||||
"update-mood-flames": [[[5, 102], "gp", "flames-state"]],
|
||||
"(method 23 mood-control)": [
|
||||
[121, "a1", "vector"],
|
||||
[125, "a1", "vector"],
|
||||
[129, "a1", "vector"],
|
||||
[133, "a1", "vector"],
|
||||
[137, "v1", "vector"],
|
||||
[122, "a0", "vector"],
|
||||
[126, "a0", "vector"],
|
||||
[130, "a0", "vector"],
|
||||
[134, "a0", "vector"],
|
||||
[138, "a0", "vector"]
|
||||
],
|
||||
"copy-mood-exterior": [
|
||||
[[16, 20], "a1", "mood-context"],
|
||||
[30, "a0", "(inline-array vector)"],
|
||||
[33, "a0", "(inline-array vector)"],
|
||||
[31, "v1", "(inline-array vector)"],
|
||||
[32, "v1", "(inline-array vector)"],
|
||||
[[17, 19], "v1", "(inline-array vector)"]
|
||||
],
|
||||
"copy-mood-exterior-ambi": [
|
||||
[[12, 17], "a2", "mood-context"],
|
||||
[[13, 16], "v1", "mood-context"]
|
||||
],
|
||||
"overide-mood-color": [
|
||||
[40, "a2", "(inline-array vector)"],
|
||||
[44, "a0", "(inline-array vector)"],
|
||||
[107, "a0", "mood-context"],
|
||||
[[91, 107], "s3", "mood-context"]
|
||||
],
|
||||
"(method 11 sky-work)": [[[7, 63], "s3", "mood-context"]],
|
||||
"sky-make-sun-data": [[[7, 58], "s3", "sky-sun-data"]],
|
||||
"update-mood-ctysluma": [[[23, 72], "s5", "ctysluma-states"]],
|
||||
"sparticle-track-sun": [[148, "s4", "vector"]],
|
||||
"foreground-draw-hud": [
|
||||
[26, "t2", "foreground-work"],
|
||||
[36, "a1", "foreground-work"],
|
||||
[79, "t2", "foreground-work"],
|
||||
[[85, 102], "t2", "(pointer uint128)"],
|
||||
[166, "a1", "int"],
|
||||
[172, "a0", "foreground-work"],
|
||||
[12, "t0", "foreground-work"],
|
||||
[31, "t1", "foreground-work"],
|
||||
[103, "t1", "vu-lights"],
|
||||
[164, "a0", "(pointer uint128)"],
|
||||
[90, "t1", "vu-lights"],
|
||||
[[93, 99], "t1", "(pointer uint128)"],
|
||||
[101, "t1", "(pointer uint128)"]
|
||||
]
|
||||
}
|
||||
|
||||
@@ -135,6 +135,7 @@ void OpenGLRenderer::init_bucket_renderers_jak3() {
|
||||
|
||||
m_blit_displays =
|
||||
init_bucket_renderer<BlitDisplays>("blit", BucketCategory::OTHER, BucketId::BLIT_START);
|
||||
init_bucket_renderer<VisDataHandler>("vis", BucketCategory::OTHER, BucketId::BUCKET_2);
|
||||
|
||||
// 4
|
||||
init_bucket_renderer<TextureUploadHandler>("tex-lcom-sky-pre", BucketCategory::TEX,
|
||||
@@ -286,8 +287,12 @@ void OpenGLRenderer::init_bucket_renderers_jak3() {
|
||||
init_bucket_renderer<TextureUploadHandler>("tex-hud-hud-alpha", BucketCategory::TEX,
|
||||
BucketId::TEX_HUD_HUD_ALPHA, texture_animator);
|
||||
|
||||
// init_bucket_renderer<TextureUploadHandler>("tex-hud-hud-alpha", BucketCategory::TEX,
|
||||
// BucketId::TEX_HUD_HUD_ALPHA, texture_animator);
|
||||
init_bucket_renderer<TextureUploadHandler>("tex-hud-hud-alpha", BucketCategory::TEX,
|
||||
BucketId::TEX_HUD_HUD_ALPHA, texture_animator);
|
||||
init_bucket_renderer<TextureUploadHandler>("tex-hud-pris2", BucketCategory::TEX,
|
||||
BucketId::TEX_HUD_PRIS2, texture_animator);
|
||||
init_bucket_renderer<ProgressRenderer>("hud-draw-hud-alpha", BucketCategory::OTHER,
|
||||
BucketId::HUD_DRAW_HUD_ALPHA, 0x1000);
|
||||
|
||||
// 583
|
||||
init_bucket_renderer<DirectRenderer>("debug", BucketCategory::OTHER, BucketId::DEBUG, 0x8000);
|
||||
|
||||
@@ -45,7 +45,7 @@ void Shrub::render(DmaFollower& dma, SharedRenderState* render_state, ScopedProf
|
||||
memcpy(&m_pc_port_data, pc_port_data.data, sizeof(TfragPcPortData));
|
||||
m_pc_port_data.level_name[11] = '\0';
|
||||
|
||||
if (render_state->version == GameVersion::Jak2) {
|
||||
if (render_state->version >= GameVersion::Jak2) {
|
||||
// jak 2 proto visibility
|
||||
auto proto_mask_data = dma.read_and_advance();
|
||||
m_proto_vis_data = proto_mask_data.data;
|
||||
|
||||
@@ -1361,7 +1361,7 @@ block_146:
|
||||
// nop // sll r0, r0, 0
|
||||
// nop // sll r0, r0, 0
|
||||
// nop // sll r0, r0, 0
|
||||
c->vftoi4(DEST::xyzw, vf1, vf1); // vftoi4.xyzw vf1, vf1
|
||||
c->vftoi4_sat(DEST::xyzw, vf1, vf1); // vftoi4.xyzw vf1, vf1
|
||||
// nop // sll r0, r0, 0
|
||||
c->vmulq(DEST::xyz, vf2, vf2); // vmulq.xyz vf2, vf2, Q
|
||||
// nop // sll r0, r0, 0
|
||||
@@ -1383,7 +1383,7 @@ block_146:
|
||||
// nop // sll r0, r0, 0
|
||||
// nop // sll r0, r0, 0
|
||||
// nop // sll r0, r0, 0
|
||||
c->vftoi4(DEST::xyzw, vf2, vf2); // vftoi4.xyzw vf2, vf2
|
||||
c->vftoi4_sat(DEST::xyzw, vf2, vf2); // vftoi4.xyzw vf2, vf2
|
||||
// nop // sll r0, r0, 0
|
||||
c->vmulq(DEST::xyz, vf3, vf3); // vmulq.xyz vf3, vf3, Q
|
||||
// nop // sll r0, r0, 0
|
||||
@@ -1405,7 +1405,7 @@ block_146:
|
||||
// nop // sll r0, r0, 0
|
||||
// nop // sll r0, r0, 0
|
||||
// nop // sll r0, r0, 0
|
||||
c->vftoi4(DEST::xyzw, vf3, vf3); // vftoi4.xyzw vf3, vf3
|
||||
c->vftoi4_sat(DEST::xyzw, vf3, vf3); // vftoi4.xyzw vf3, vf3
|
||||
// nop // sll r0, r0, 0
|
||||
c->vmulq(DEST::xyz, vf4, vf4); // vmulq.xyz vf4, vf4, Q
|
||||
// nop // sll r0, r0, 0
|
||||
@@ -1435,7 +1435,7 @@ block_152:
|
||||
c->vadd_bc(DEST::x, BC::w, vf23, vf23, vf14); // vaddw.x vf23, vf23, vf14
|
||||
|
||||
block_153:
|
||||
c->vftoi4(DEST::xyzw, vf4, vf4); // vftoi4.xyzw vf4, vf4
|
||||
c->vftoi4_sat(DEST::xyzw, vf4, vf4); // vftoi4.xyzw vf4, vf4
|
||||
// nop // sll r0, r0, 0
|
||||
// nop // sll r0, r0, 0
|
||||
// nop // sll r0, r0, 0
|
||||
@@ -2187,7 +2187,7 @@ block_225:
|
||||
// nop // sll r0, r0, 0
|
||||
c->lqc2(vf11, 704, v1); // lqc2 vf11, 704(v1)
|
||||
// nop // sll r0, r0, 0
|
||||
c->vftoi4(DEST::xyzw, vf1, vf1); // vftoi4.xyzw vf1, vf1
|
||||
c->vftoi4_sat(DEST::xyzw, vf1, vf1); // vftoi4.xyzw vf1, vf1
|
||||
// nop // sll r0, r0, 0
|
||||
c->vmulq(DEST::xyz, vf2, vf2); // vmulq.xyz vf2, vf2, Q
|
||||
// nop // sll r0, r0, 0
|
||||
@@ -2209,7 +2209,7 @@ block_225:
|
||||
// nop // sll r0, r0, 0
|
||||
// nop // sll r0, r0, 0
|
||||
// nop // sll r0, r0, 0
|
||||
c->vftoi4(DEST::xyzw, vf2, vf2); // vftoi4.xyzw vf2, vf2
|
||||
c->vftoi4_sat(DEST::xyzw, vf2, vf2); // vftoi4.xyzw vf2, vf2
|
||||
// nop // sll r0, r0, 0
|
||||
c->vmulq(DEST::xyz, vf3, vf3); // vmulq.xyz vf3, vf3, Q
|
||||
// nop // sll r0, r0, 0
|
||||
@@ -2231,7 +2231,7 @@ block_225:
|
||||
// nop // sll r0, r0, 0
|
||||
// nop // sll r0, r0, 0
|
||||
// nop // sll r0, r0, 0
|
||||
c->vftoi4(DEST::xyzw, vf3, vf3); // vftoi4.xyzw vf3, vf3
|
||||
c->vftoi4_sat(DEST::xyzw, vf3, vf3); // vftoi4.xyzw vf3, vf3
|
||||
// nop // sll r0, r0, 0
|
||||
c->vmulq(DEST::xyz, vf4, vf4); // vmulq.xyz vf4, vf4, Q
|
||||
// nop // sll r0, r0, 0
|
||||
@@ -2261,7 +2261,7 @@ block_230:
|
||||
c->vadd_bc(DEST::x, BC::w, vf23, vf23, vf14); // vaddw.x vf23, vf23, vf14
|
||||
|
||||
block_231:
|
||||
c->vftoi4(DEST::xyzw, vf4, vf4); // vftoi4.xyzw vf4, vf4
|
||||
c->vftoi4_sat(DEST::xyzw, vf4, vf4); // vftoi4.xyzw vf4, vf4
|
||||
// nop // sll r0, r0, 0
|
||||
// nop // sll r0, r0, 0
|
||||
// nop // sll r0, r0, 0
|
||||
|
||||
@@ -1501,17 +1501,17 @@
|
||||
(reset! *prim-work*)
|
||||
|
||||
; ;; update wind/time of day prior to drawing.
|
||||
; (let ((gp-2 (-> pp clock)))
|
||||
; (if (= (-> *time-of-day-context* mode) (time-of-day-palette-id unk3))
|
||||
; (set! (-> pp clock) (-> *display* bg-clock))
|
||||
; (set! (-> pp clock) (-> *display* real-clock))
|
||||
; )
|
||||
; (if (not (paused?))
|
||||
; (update-wind *wind-work* *wind-scales*)
|
||||
; )
|
||||
; (update-time-of-day *time-of-day-context*)
|
||||
; (set! (-> pp clock) gp-2)
|
||||
; )
|
||||
(let ((gp-2 (-> pp clock)))
|
||||
(if (= (-> *time-of-day-context* mode) (time-of-day-palette-id unk3))
|
||||
(set! (-> pp clock) (-> *display* bg-clock))
|
||||
(set! (-> pp clock) (-> *display* real-clock))
|
||||
)
|
||||
; (if (not (paused?))
|
||||
; (update-wind *wind-work* *wind-scales*)
|
||||
; )
|
||||
(update-time-of-day *time-of-day-context*)
|
||||
(set! (-> pp clock) gp-2)
|
||||
)
|
||||
|
||||
; ;; draw sky
|
||||
; (with-profiler 'sky *profile-sky-color*
|
||||
|
||||
@@ -1434,7 +1434,7 @@
|
||||
)
|
||||
|
||||
; ;; cloth simulation update
|
||||
; (execute-cloth-engine)
|
||||
(execute-cloth-engine)
|
||||
|
||||
(with-profiler 'debug *profile-debug-color*
|
||||
;; run debug callbacks
|
||||
@@ -1633,7 +1633,7 @@
|
||||
;; initial setup
|
||||
(set! *teleport* #t)
|
||||
(update *setting-control*) ;; dies on camera stuff, which looks for entities.
|
||||
;; (init-time-of-day-context *time-of-day-context*)
|
||||
(init-time-of-day-context *time-of-day-context*)
|
||||
(display-sync gp-1)
|
||||
(display-frame-finish gp-1)
|
||||
(display-sync gp-1)
|
||||
|
||||
@@ -60,13 +60,6 @@
|
||||
(set! (-> data-ptr 5) (-> lev mood-context itimes 1 quad))
|
||||
(set! (-> data-ptr 6) (-> lev mood-context itimes 2 quad))
|
||||
(set! (-> data-ptr 7) (-> lev mood-context itimes 3 quad))
|
||||
;; HACK:
|
||||
(let ((vec (new 'static 'vector4w :x #x70707070 :y #x70707070 :z #x70707070 :w #x70707070)))
|
||||
(set! (-> data-ptr 4) (-> vec quad))
|
||||
(set! (-> data-ptr 5) (-> vec quad))
|
||||
(set! (-> data-ptr 6) (-> vec quad))
|
||||
(set! (-> data-ptr 7) (-> vec quad))
|
||||
)
|
||||
(set! (-> data-ptr 8) (-> *math-camera* camera-temp vector 0 quad))
|
||||
(set! (-> data-ptr 9) (-> *math-camera* camera-temp vector 1 quad))
|
||||
(set! (-> data-ptr 10) (-> *math-camera* camera-temp vector 2 quad))
|
||||
@@ -229,9 +222,132 @@
|
||||
(none)
|
||||
)
|
||||
|
||||
(defun add-pc-camera-data ((dma-buf dma-buffer))
|
||||
"Add PC-port specific camera data. used as fallback for collide mesh renderer.
|
||||
Same as add-pc-trag3-data but level-specific data is left undefined."
|
||||
(let ((packet (the-as dma-packet (-> dma-buf base))))
|
||||
(set! (-> packet dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc 24))
|
||||
(set! (-> packet vif0) (new 'static 'vif-tag))
|
||||
(set! (-> packet vif1) (new 'static 'vif-tag :cmd (vif-cmd pc-port)))
|
||||
(set! (-> dma-buf base) (the pointer (&+ packet 16)))
|
||||
)
|
||||
|
||||
;; first 4 quadwords are planes, then itimes
|
||||
(let ((data-ptr (the-as (pointer uint128) (-> dma-buf base))))
|
||||
;; the "use-camera-other" flag is set to "move" entire levels,
|
||||
;; like the rotating city below in the throne room.
|
||||
(set! (-> data-ptr 0) (-> *math-camera* plane 0 quad))
|
||||
(set! (-> data-ptr 1) (-> *math-camera* plane 1 quad))
|
||||
(set! (-> data-ptr 2) (-> *math-camera* plane 2 quad))
|
||||
(set! (-> data-ptr 3) (-> *math-camera* plane 3 quad))
|
||||
;; (set! (-> data-ptr 4) (-> lev mood-context itimes 0 quad))
|
||||
;; (set! (-> data-ptr 5) (-> lev mood-context itimes 1 quad))
|
||||
;; (set! (-> data-ptr 6) (-> lev mood-context itimes 2 quad))
|
||||
;; (set! (-> data-ptr 7) (-> lev mood-context itimes 3 quad))
|
||||
(set! (-> data-ptr 8) (-> *math-camera* camera-temp vector 0 quad))
|
||||
(set! (-> data-ptr 9) (-> *math-camera* camera-temp vector 1 quad))
|
||||
(set! (-> data-ptr 10) (-> *math-camera* camera-temp vector 2 quad))
|
||||
(set! (-> data-ptr 11) (-> *math-camera* camera-temp vector 3 quad))
|
||||
(set! (-> data-ptr 12) (-> *math-camera* hvdf-off quad))
|
||||
(let ((vec (-> (the (inline-array vector) data-ptr) 13)))
|
||||
(set! (-> vec x) (-> *math-camera* pfog0))
|
||||
(set! (-> vec y) (-> *math-camera* fog-min))
|
||||
(set! (-> vec z) (-> *math-camera* fog-max))
|
||||
)
|
||||
(set! (-> data-ptr 14) (-> *math-camera* trans quad))
|
||||
|
||||
(set! (-> data-ptr 15) (-> *math-camera* camera-rot vector 0 quad))
|
||||
(set! (-> data-ptr 16) (-> *math-camera* camera-rot vector 1 quad))
|
||||
(set! (-> data-ptr 17) (-> *math-camera* camera-rot vector 2 quad))
|
||||
(set! (-> data-ptr 18) (-> *math-camera* camera-rot vector 3 quad))
|
||||
|
||||
(set! (-> data-ptr 19) (-> *math-camera* perspective vector 0 quad))
|
||||
(set! (-> data-ptr 20) (-> *math-camera* perspective vector 1 quad))
|
||||
(set! (-> data-ptr 21) (-> *math-camera* perspective vector 2 quad))
|
||||
(set! (-> data-ptr 22) (-> *math-camera* perspective vector 3 quad))
|
||||
|
||||
(charp<-string (the (pointer uint8) (&-> data-ptr 23)) (symbol->string #f))
|
||||
)
|
||||
(&+! (-> dma-buf base) (* 16 24))
|
||||
)
|
||||
|
||||
(defun add-pc-port-background-data ((dma-buf dma-buffer))
|
||||
"PC Port added"
|
||||
;; loop over levels
|
||||
(dotimes (lev-idx (-> *level* length))
|
||||
(let ((lev (-> *level* draw-level lev-idx))
|
||||
(dma-start (-> dma-buf base)))
|
||||
(cond
|
||||
((and lev (= (-> lev status) 'active))
|
||||
;; the level is active.
|
||||
(let ((packet (the-as dma-packet (-> dma-buf base))))
|
||||
(set! (-> packet dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc 128))
|
||||
(set! (-> packet vif0) (the-as vif-tag *fog-color*))
|
||||
(set! (-> packet vif1) (new 'static 'vif-tag :cmd (vif-cmd pc-port)))
|
||||
(set! (-> dma-buf base) (the pointer (&+ packet 16)))
|
||||
)
|
||||
(quad-copy! (-> dma-buf base) (-> lev vis-bits) 128)
|
||||
(&+! (-> dma-buf base) (* 16 128))
|
||||
)
|
||||
(else
|
||||
(let ((packet (the-as dma-packet (-> dma-buf base))))
|
||||
(set! (-> packet dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc 1))
|
||||
(set! (-> packet vif0) (the-as vif-tag *fog-color*))
|
||||
(set! (-> packet vif1) (new 'static 'vif-tag :cmd (vif-cmd pc-port)))
|
||||
(set! (-> dma-buf base) (the pointer (&+ packet 16)))
|
||||
)
|
||||
(set! (-> (the (pointer uint128) (-> dma-buf base))) (the uint128 0))
|
||||
(&+! (-> dma-buf base) (* 16 1))
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(let ((a3-3 (-> dma-buf base)))
|
||||
(let ((v1-38 (the-as object (-> dma-buf base))))
|
||||
(set! (-> (the-as dma-packet v1-38) dma) (new 'static 'dma-tag :id (dma-tag-id next)))
|
||||
(set! (-> (the-as dma-packet v1-38) vif0) (new 'static 'vif-tag))
|
||||
(set! (-> (the-as dma-packet v1-38) vif1) (new 'static 'vif-tag))
|
||||
(set! (-> dma-buf base) (&+ (the-as pointer v1-38) 16))
|
||||
)
|
||||
(dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) bucket-group)
|
||||
(bucket-id bucket2)
|
||||
dma-start
|
||||
(the-as (pointer dma-tag) a3-3)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(let* ((dma-buff (-> *display* frames (-> *display* on-screen) global-buf))
|
||||
(dma-start (-> dma-buff base)))
|
||||
(add-pc-camera-data dma-buff)
|
||||
(let ((a3-22 (-> dma-buff base)))
|
||||
(let ((v1-57 (the-as object (-> dma-buff base))))
|
||||
(set! (-> (the-as dma-packet v1-57) dma) (new 'static 'dma-tag :id (dma-tag-id next)))
|
||||
(set! (-> (the-as dma-packet v1-57) vif0) (new 'static 'vif-tag))
|
||||
(set! (-> (the-as dma-packet v1-57) vif1) (new 'static 'vif-tag))
|
||||
(set! (-> dma-buff base) (&+ (the-as pointer v1-57) 16))
|
||||
)
|
||||
(dma-bucket-insert-tag
|
||||
(-> *display* frames (-> *display* on-screen) bucket-group)
|
||||
(bucket-id bucket2)
|
||||
dma-start
|
||||
(the-as (pointer dma-tag) a3-22)
|
||||
)
|
||||
)
|
||||
)
|
||||
(the-as pointer 0)
|
||||
)
|
||||
|
||||
;; WARN: Function finish-background has a return type of none, but the expression builder found a return statement.
|
||||
(defun finish-background ()
|
||||
"Run all renderers for background data added."
|
||||
|
||||
(#when PC_PORT
|
||||
(add-pc-port-background-data
|
||||
(-> *display* frames (-> *display* on-screen) global-buf)
|
||||
)
|
||||
)
|
||||
|
||||
(if (get-menu-mode *blit-displays-work*)
|
||||
(return #f)
|
||||
)
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(define foreground-vu0-block (new 'static 'vu-function :length 9 :qlength 5))
|
||||
(define foreground-vu0-block (new 'static 'vu-function #|:length 9 :qlength 5|#))
|
||||
|
||||
(define *bucket-map* (new 'static 'array bucket-id-16 462
|
||||
(bucket-id-16 merc-l0-tfrag)
|
||||
|
||||
@@ -7,3 +7,522 @@
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(defbehavior update-mood-default time-of-day-proc ((arg0 mood-context) (arg1 float) (arg2 int))
|
||||
(copy-mood-exterior arg0)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defun update-mood-copy-parent ((arg0 mood-context) (arg1 object) (arg2 int))
|
||||
(let* ((v1-3 (-> *level* level arg2))
|
||||
(a1-3 (-> v1-3 info memory-mode))
|
||||
)
|
||||
(when (or (or (= a1-3 (level-memory-mode borrow))
|
||||
(= a1-3 (level-memory-mode borrow0))
|
||||
(= a1-3 (level-memory-mode borrow1))
|
||||
(= a1-3 (level-memory-mode borrow2))
|
||||
(= a1-3 (level-memory-mode borrow3))
|
||||
(= a1-3 (level-memory-mode borrow4))
|
||||
(= a1-3 (level-memory-mode micro))
|
||||
(= a1-3 (level-memory-mode borrow-city-small))
|
||||
)
|
||||
(-> v1-3 borrow-from-level)
|
||||
)
|
||||
(let ((v1-4 (-> v1-3 borrow-from-level)))
|
||||
(if (and v1-4 (= (-> v1-4 status) 'active))
|
||||
(mem-copy! (the-as pointer arg0) (the-as pointer (-> v1-4 mood-context)) 1968)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defun get-sphere-interp ((arg0 sphere) (arg1 vector) (arg2 float) (arg3 float))
|
||||
(let ((v1-0 (new 'stack-no-clear 'vector)))
|
||||
0.0
|
||||
(set! (-> v1-0 quad) (-> arg0 quad))
|
||||
(vector-! v1-0 arg1 v1-0)
|
||||
(let ((f1-0 (vector-length v1-0)))
|
||||
(/ (fmax 0.0 (fmin (- f1-0 arg2) arg3)) arg3)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(deftype ctywide-states (structure)
|
||||
((light light-state :inline)
|
||||
(flame flames-state :inline)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(defbehavior update-mood-ctywide time-of-day-proc ((arg0 mood-context) (arg1 float) (arg2 int))
|
||||
(copy-mood-exterior arg0)
|
||||
(when (and (= (-> *level* level arg2 status) 'active)
|
||||
(< (the-as uint (-> *time-of-day-context* mode)) (the-as uint 9))
|
||||
)
|
||||
(-> arg0 state)
|
||||
(update-mood-light arg0 5 0 1.0 0.0 arg1 0.0 2.0)
|
||||
(update-mood-flames arg0 6 1 8 1.0 0.000390625 1.5)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defbehavior update-mood-copy-ctywide time-of-day-proc ((arg0 mood-context) (arg1 float) (arg2 int))
|
||||
(let ((v1-1 (level-get *level* 'ctywide)))
|
||||
(cond
|
||||
((and v1-1 (= (-> v1-1 status) 'active))
|
||||
(mem-copy! (the-as pointer arg0) (the-as pointer (-> v1-1 mood-context)) 1968)
|
||||
)
|
||||
(else
|
||||
(update-mood-ctywide arg0 arg1 arg2)
|
||||
(if (or (>= arg1 18.0) (>= 6.0 arg1))
|
||||
(set! (-> arg0 times 5 w) 1.0)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(deftype ctysluma-states (structure)
|
||||
((light light-state :inline)
|
||||
(flame flames-state :inline)
|
||||
(spec-0 sp-field-init-spec)
|
||||
(spec-1 sp-field-init-spec)
|
||||
(flicker float)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
;; WARN: Return type mismatch sp-field-init-spec vs float.
|
||||
(defun init-mood-ctysluma ((arg0 mood-context))
|
||||
(let ((gp-0 (-> arg0 state)))
|
||||
(let ((a0-1 (-> *part-id-table* 2)))
|
||||
(set! (-> gp-0 4) (the-as uint 0))
|
||||
(if (nonzero? a0-1)
|
||||
(set! (-> gp-0 4) (the-as uint (get-field-spec-by-id a0-1 (sp-field-id spt-a))))
|
||||
)
|
||||
)
|
||||
(let ((a0-2 (-> *part-id-table* 3)))
|
||||
(set! (-> gp-0 5) (the-as uint 0))
|
||||
(the-as float (when (nonzero? a0-2)
|
||||
(let ((v0-1 (get-field-spec-by-id a0-2 (sp-field-id spt-a))))
|
||||
(set! (-> gp-0 5) (the-as uint v0-1))
|
||||
v0-1
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defbehavior update-mood-ctysluma time-of-day-proc ((arg0 mood-context) (arg1 float) (arg2 int))
|
||||
(copy-mood-exterior arg0)
|
||||
(when (and (!= arg2 -1)
|
||||
(= (-> *level* level arg2 status) 'active)
|
||||
(< (the-as uint (-> *time-of-day-context* mode)) (the-as uint 9))
|
||||
)
|
||||
(let ((s5-1 (the-as ctysluma-states (-> arg0 state))))
|
||||
(update-mood-flames arg0 6 1 8 1.0 0.000390625 1.5)
|
||||
(update-mood-light arg0 5 0 1.0 0.0 arg1 0.0 2.0)
|
||||
(if (nonzero? (-> s5-1 spec-0))
|
||||
(set! (-> s5-1 spec-0 initial-valuef) (* 32.0 (-> s5-1 light fade)))
|
||||
)
|
||||
(if (nonzero? (-> s5-1 spec-1))
|
||||
(set! (-> s5-1 spec-1 initial-valuef) (* 8.0 (-> s5-1 light fade)))
|
||||
)
|
||||
(set! (-> arg0 times 7 w) (-> s5-1 flicker))
|
||||
(if (not (paused?))
|
||||
(set! (-> s5-1 flicker) (rand-vu-float-range 0.8 1.0))
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(deftype ctyslumb-states (structure)
|
||||
((light light-state :inline)
|
||||
(spec-0 sp-field-init-spec)
|
||||
(spec-1 sp-field-init-spec)
|
||||
(flicker float)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
;; WARN: Return type mismatch sp-field-init-spec vs uint.
|
||||
(defun init-mood-ctyslumb ((arg0 mood-context))
|
||||
(let ((gp-0 (-> arg0 state)))
|
||||
(let ((a0-1 (-> *part-id-table* 4)))
|
||||
(set! (-> gp-0 2) (the-as uint 0))
|
||||
(if (nonzero? a0-1)
|
||||
(set! (-> gp-0 2) (the-as uint (get-field-spec-by-id a0-1 (sp-field-id spt-a))))
|
||||
)
|
||||
)
|
||||
(let ((a0-2 (-> *part-id-table* 5)))
|
||||
(set! (-> gp-0 3) (the-as uint 0))
|
||||
(the-as uint (when (nonzero? a0-2)
|
||||
(let ((v0-1 (get-field-spec-by-id a0-2 (sp-field-id spt-a))))
|
||||
(set! (-> gp-0 3) (the-as uint v0-1))
|
||||
v0-1
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(deftype ctyslumc-states (structure)
|
||||
((light light-state :inline)
|
||||
(spec-0 sp-field-init-spec)
|
||||
(spec-1 sp-field-init-spec)
|
||||
(flicker float)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
;; WARN: Return type mismatch sp-field-init-spec vs none.
|
||||
(defun init-mood-ctyslumc ((arg0 mood-context))
|
||||
(let ((gp-0 (-> arg0 state)))
|
||||
(let ((a0-1 (-> *part-id-table* 6)))
|
||||
(set! (-> gp-0 2) (the-as uint 0))
|
||||
(if (nonzero? a0-1)
|
||||
(set! (-> gp-0 2) (the-as uint (get-field-spec-by-id a0-1 (sp-field-id spt-a))))
|
||||
)
|
||||
)
|
||||
(let ((a0-2 (-> *part-id-table* 7)))
|
||||
(set! (-> gp-0 3) (the-as uint 0))
|
||||
(if (nonzero? a0-2)
|
||||
(set! (-> gp-0 3) (the-as uint (get-field-spec-by-id a0-2 (sp-field-id spt-a))))
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
(deftype ctygenb-states (structure)
|
||||
((light light-state :inline)
|
||||
(flame flames-state :inline)
|
||||
(flicker flicker-state :inline)
|
||||
(spec-0 sp-field-init-spec)
|
||||
(spec-1 sp-field-init-spec)
|
||||
(spec-2 sp-field-init-spec)
|
||||
(spec-3 sp-field-init-spec)
|
||||
(next-flicker float)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
;; WARN: Return type mismatch sp-field-init-spec vs object.
|
||||
(defun init-mood-ctygenb ((arg0 mood-context))
|
||||
(let ((gp-0 (-> arg0 state)))
|
||||
(let ((a0-1 (-> *part-id-table* 8)))
|
||||
(set! (-> gp-0 5) (the-as uint 0))
|
||||
(if (nonzero? a0-1)
|
||||
(set! (-> gp-0 5) (the-as uint (get-field-spec-by-id a0-1 (sp-field-id spt-a))))
|
||||
)
|
||||
)
|
||||
(let ((a0-2 (-> *part-id-table* 9)))
|
||||
(set! (-> gp-0 6) (the-as uint 0))
|
||||
(if (nonzero? a0-2)
|
||||
(set! (-> gp-0 6) (the-as uint (get-field-spec-by-id a0-2 (sp-field-id spt-a))))
|
||||
)
|
||||
)
|
||||
(let ((a0-3 (-> *part-id-table* 10)))
|
||||
(set! (-> gp-0 7) (the-as uint 0))
|
||||
(if (nonzero? a0-3)
|
||||
(set! (-> gp-0 7) (the-as uint (get-field-spec-by-id a0-3 (sp-field-id spt-a))))
|
||||
)
|
||||
)
|
||||
(let ((a0-4 (-> *part-id-table* 11)))
|
||||
(set! (-> gp-0 8) (the-as uint 0))
|
||||
(when (nonzero? a0-4)
|
||||
(let ((v0-3 (get-field-spec-by-id a0-4 (sp-field-id spt-a))))
|
||||
(set! (-> gp-0 8) (the-as uint v0-3))
|
||||
v0-3
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(define *mhcity-mood-fog-table*
|
||||
(new 'static 'mood-fog-table :data (new 'static 'inline-array mood-fog 8
|
||||
(new 'static 'mood-fog
|
||||
:fog-color (new 'static 'vector :x 171.4687 :y 155.0 :z 58.125 :w 128.0)
|
||||
:fog-dists (new 'static 'vector :y 819200.0 :z 240.0 :w 130.0)
|
||||
:erase-color (new 'static 'vector :w 128.0)
|
||||
)
|
||||
(new 'static 'mood-fog
|
||||
:fog-color (new 'static 'vector :x 171.4687 :y 155.0 :z 58.125 :w 128.0)
|
||||
:fog-dists (new 'static 'vector :y 819200.0 :z 240.0 :w 130.0)
|
||||
:erase-color (new 'static 'vector :w 128.0)
|
||||
)
|
||||
(new 'static 'mood-fog
|
||||
:fog-color (new 'static 'vector :x 171.4687 :y 155.0 :z 58.125 :w 128.0)
|
||||
:fog-dists (new 'static 'vector :y 819200.0 :z 240.0 :w 130.0)
|
||||
:erase-color (new 'static 'vector :w 128.0)
|
||||
)
|
||||
(new 'static 'mood-fog
|
||||
:fog-color (new 'static 'vector :x 171.4687 :y 155.0 :z 58.125 :w 128.0)
|
||||
:fog-dists (new 'static 'vector :y 819200.0 :z 240.0 :w 130.0)
|
||||
:erase-color (new 'static 'vector :w 128.0)
|
||||
)
|
||||
(new 'static 'mood-fog
|
||||
:fog-color (new 'static 'vector :x 171.4687 :y 155.0 :z 58.125 :w 128.0)
|
||||
:fog-dists (new 'static 'vector :y 819200.0 :z 240.0 :w 130.0)
|
||||
:erase-color (new 'static 'vector :w 128.0)
|
||||
)
|
||||
(new 'static 'mood-fog
|
||||
:fog-color (new 'static 'vector :x 180.0 :y 179.0 :z 40.0 :w 128.0)
|
||||
:fog-dists (new 'static 'vector :x 40960.0 :y 819200.0 :z 240.0 :w 165.5)
|
||||
:erase-color (new 'static 'vector :w 128.0)
|
||||
)
|
||||
(new 'static 'mood-fog
|
||||
:fog-color (new 'static 'vector :x 180.0 :y 159.0 :z 50.0 :w 128.0)
|
||||
:fog-dists (new 'static 'vector :x 40960.0 :y 819200.0 :z 240.0 :w 175.5)
|
||||
:erase-color (new 'static 'vector :w 128.0)
|
||||
)
|
||||
(new 'static 'mood-fog
|
||||
:fog-color (new 'static 'vector :x 180.0 :y 179.0 :z 40.0 :w 128.0)
|
||||
:fog-dists (new 'static 'vector :x 40960.0 :y 819200.0 :z 230.0 :w 165.5)
|
||||
:erase-color (new 'static 'vector :w 128.0)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; ERROR: function has no type analysis. Cannot decompile.
|
||||
|
||||
(deftype mhcitya-states (structure)
|
||||
((pulse pulse-state :inline)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
;; WARN: Return type mismatch float vs object.
|
||||
(defun init-mood-mhcitya ((arg0 mood-context))
|
||||
(let ((v1-0 (-> arg0 state)))
|
||||
(set! (-> v1-0 2) (the-as uint 1.0))
|
||||
(let ((f0-1 1.0))
|
||||
(set! (-> v1-0 1) (the-as uint f0-1))
|
||||
f0-1
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(deftype mhcityb-states (structure)
|
||||
((pulse pulse-state :inline)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
;; WARN: Return type mismatch float vs object.
|
||||
(defun init-mood-mhcityb ((arg0 mood-context))
|
||||
(let ((v1-0 (-> arg0 state)))
|
||||
(set! (-> v1-0 2) (the-as uint 1.0))
|
||||
(let ((f0-1 1.0))
|
||||
(set! (-> v1-0 1) (the-as uint f0-1))
|
||||
f0-1
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(deftype ctyport-states (structure)
|
||||
((light light-state :inline)
|
||||
(spec-0 sp-field-init-spec)
|
||||
(neon-min-bright float)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(define *ctyport-level* (the-as level-group #f))
|
||||
|
||||
(deftype ctymarka-states (structure)
|
||||
((light light-state :inline)
|
||||
(blink float)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(defbehavior update-mood-ctymarka time-of-day-proc ((arg0 mood-context) (arg1 float) (arg2 int))
|
||||
(copy-mood-exterior arg0)
|
||||
(when (and (= (-> *level* level arg2 status) 'active)
|
||||
(< (the-as uint (-> *time-of-day-context* mode)) (the-as uint 9))
|
||||
)
|
||||
(let ((gp-1 (-> arg0 state)))
|
||||
(update-mood-light arg0 5 0 1.0 0.0 arg1 0.0 2.0)
|
||||
(set! (-> arg0 times 6 w) (the-as float (-> gp-1 2)))
|
||||
(set! (-> arg0 times 7 w) 0.75)
|
||||
(when (not (paused?))
|
||||
(let ((v1-11 (-> *display* part-clock frame-counter)))
|
||||
(if (< (* 0.2 (the float (mod v1-11 600))) 60.0)
|
||||
(set! (-> gp-1 2) (the-as uint 0.0))
|
||||
(set! (-> gp-1 2) (the-as uint 1.0))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(deftype mountain-states (structure)
|
||||
((light0 light-state :inline)
|
||||
(light1 light-state :inline)
|
||||
(spec-0 sp-field-init-spec)
|
||||
(spec-1 sp-field-init-spec)
|
||||
(spec-2 sp-field-init-spec)
|
||||
(spec-3 sp-field-init-spec)
|
||||
(spec-4 sp-field-init-spec)
|
||||
(spec-5 sp-field-init-spec)
|
||||
(spec-6 sp-field-init-spec)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
;; WARN: Return type mismatch sp-field-init-spec vs uint.
|
||||
(defun init-mood-mountain ((arg0 mood-context))
|
||||
(let ((gp-0 (-> arg0 state)))
|
||||
(let ((a0-1 (-> *part-id-table* 12)))
|
||||
(set! (-> gp-0 4) (the-as uint 0))
|
||||
(if (nonzero? a0-1)
|
||||
(set! (-> gp-0 4) (the-as uint (get-field-spec-by-id a0-1 (sp-field-id spt-a))))
|
||||
)
|
||||
)
|
||||
(let ((a0-2 (-> *part-id-table* 13)))
|
||||
(set! (-> gp-0 5) (the-as uint 0))
|
||||
(if (nonzero? a0-2)
|
||||
(set! (-> gp-0 5) (the-as uint (get-field-spec-by-id a0-2 (sp-field-id spt-a))))
|
||||
)
|
||||
)
|
||||
(let ((a0-3 (-> *part-id-table* 14)))
|
||||
(set! (-> gp-0 6) (the-as uint 0))
|
||||
(if (nonzero? a0-3)
|
||||
(set! (-> gp-0 6) (the-as uint (get-field-spec-by-id a0-3 (sp-field-id spt-a))))
|
||||
)
|
||||
)
|
||||
(let ((a0-4 (-> *part-id-table* 15)))
|
||||
(set! (-> gp-0 7) (the-as uint 0))
|
||||
(if (nonzero? a0-4)
|
||||
(set! (-> gp-0 7) (the-as uint (get-field-spec-by-id a0-4 (sp-field-id spt-a))))
|
||||
)
|
||||
)
|
||||
(let ((a0-5 (-> *part-id-table* 16)))
|
||||
(set! (-> gp-0 8) (the-as uint 0))
|
||||
(if (nonzero? a0-5)
|
||||
(set! (-> gp-0 8) (the-as uint (get-field-spec-by-id a0-5 (sp-field-id spt-a))))
|
||||
)
|
||||
)
|
||||
(let ((a0-6 (-> *part-id-table* 17)))
|
||||
(set! (-> gp-0 9) (the-as uint 0))
|
||||
(if (nonzero? a0-6)
|
||||
(set! (-> gp-0 9) (the-as uint (get-field-spec-by-id a0-6 (sp-field-id spt-a))))
|
||||
)
|
||||
)
|
||||
(let ((a0-7 (-> *part-id-table* 18)))
|
||||
(set! (-> gp-0 10) (the-as uint 0))
|
||||
(the-as uint (when (nonzero? a0-7)
|
||||
(let ((v0-6 (get-field-spec-by-id a0-7 (sp-field-id spt-a))))
|
||||
(set! (-> gp-0 10) (the-as uint v0-6))
|
||||
v0-6
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(deftype ctyinda-states (structure)
|
||||
((light light-state :inline)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(defbehavior update-mood-ctyinda time-of-day-proc ((arg0 mood-context) (arg1 float) (arg2 int))
|
||||
(copy-mood-exterior arg0)
|
||||
(when (and (= (-> *level* level arg2 status) 'active)
|
||||
(< (the-as uint (-> *time-of-day-context* mode)) (the-as uint 9))
|
||||
)
|
||||
(set! (-> arg0 times 6 w) 1.0)
|
||||
(let ((f0-1 0.5))
|
||||
(let ((f1-0 1.0))
|
||||
(cond
|
||||
((or (>= 6.0 arg1) (>= arg1 18.0))
|
||||
(set! f0-1 f1-0)
|
||||
)
|
||||
((and (< 6.0 arg1) (< arg1 7.0))
|
||||
(+! f0-1 (* (- f1-0 f0-1) (- 7.0 arg1)))
|
||||
)
|
||||
((and (< 17.0 arg1) (< arg1 18.0))
|
||||
(+! f0-1 (* (- f1-0 f0-1) (+ -17.0 arg1)))
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> arg0 times 7 w) f0-1)
|
||||
)
|
||||
(-> arg0 state)
|
||||
(update-mood-light arg0 5 0 1.0 0.0 arg1 0.0 2.0)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(deftype ctyindb-states (structure)
|
||||
((light light-state :inline)
|
||||
(flicker float)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(defbehavior update-mood-ctyindb time-of-day-proc ((arg0 mood-context) (arg1 float) (arg2 int))
|
||||
(copy-mood-exterior arg0)
|
||||
(when (and (= (-> *level* level arg2 status) 'active)
|
||||
(< (the-as uint (-> *time-of-day-context* mode)) (the-as uint 9))
|
||||
)
|
||||
(let ((s4-1 (-> arg0 state)))
|
||||
(set! (-> arg0 times 6 w) 1.0)
|
||||
(update-mood-light arg0 5 0 1.0 0.0 arg1 0.0 2.0)
|
||||
(set! (-> arg0 times 7 w) (the-as float (-> s4-1 2)))
|
||||
(if (not (paused?))
|
||||
(set! (-> s4-1 2) (the-as uint (rand-vu-float-range 0.8 1.0)))
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
(defun set-atoll-explosion! ((arg0 float))
|
||||
(let ((v1-1 (level-get *level* 'atoll)))
|
||||
(when v1-1
|
||||
(let ((v1-2 (-> v1-1 mood-context state))
|
||||
(f0-0 arg0)
|
||||
)
|
||||
(set! (-> v1-2 2) (the-as uint f0-0))
|
||||
f0-0
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defbehavior update-mood-atollext time-of-day-proc ((arg0 mood-context) (arg1 float) (arg2 int))
|
||||
(copy-mood-exterior-ambi arg0 #t)
|
||||
(when (and (= (-> *level* level arg2 status) 'active)
|
||||
(< (the-as uint (-> *time-of-day-context* mode)) (the-as uint 9))
|
||||
)
|
||||
(set-vector! (-> arg0 times 1) 1.0 1.0 1.0 1.0)
|
||||
(set! (-> arg0 times 2 w) 0.0)
|
||||
(set! (-> arg0 times 3 w) 0.0)
|
||||
(set! (-> arg0 times 4 w) 0.0)
|
||||
(set! (-> arg0 times 5 w) 0.0)
|
||||
(set! (-> arg0 times 6 w) 0.0)
|
||||
(set! (-> arg0 times 7 w) 0.0)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
@@ -15,184 +15,272 @@
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(deftype mood-channel (structure)
|
||||
((data float 24)
|
||||
(vecs vector4 6 :overlay-at (-> data 0))))
|
||||
((data float 24)
|
||||
(vecs vector4 6 :inline :overlay-at (-> data 0))
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(deftype mood-channel-group (structure)
|
||||
((data mood-channel 4 :inline)))
|
||||
((data mood-channel 4 :inline)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(deftype mood-fog (structure)
|
||||
((fog-color vector :inline)
|
||||
(fog-dists vector :inline)
|
||||
(fog-start meters :overlay-at (-> fog-dists data 0))
|
||||
(fog-end meters :overlay-at (-> fog-dists data 1))
|
||||
(fog-max float :overlay-at (-> fog-dists data 2))
|
||||
(fog-min float :overlay-at (-> fog-dists data 3))
|
||||
(erase-color vector :inline)))
|
||||
((fog-color vector :inline)
|
||||
(fog-dists vector :inline)
|
||||
(fog-start meters :overlay-at (-> fog-dists data 0))
|
||||
(fog-end meters :overlay-at (-> fog-dists data 1))
|
||||
(fog-max float :overlay-at (-> fog-dists data 2))
|
||||
(fog-min float :overlay-at (-> fog-dists data 3))
|
||||
(erase-color vector :inline)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(deftype mood-fog-table (structure)
|
||||
((data mood-fog 8 :inline)))
|
||||
((data mood-fog 8 :inline)
|
||||
(_data uint128 24 :overlay-at data)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(deftype mood-color (structure)
|
||||
((lgt-color vector :inline)
|
||||
(amb-color vector :inline)))
|
||||
((lgt-color vector :inline)
|
||||
(amb-color vector :inline)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(deftype mood-direction-table (structure)
|
||||
((data vector 4 :inline)))
|
||||
((data vector 4 :inline)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(deftype mood-color-table (structure)
|
||||
((data mood-color 8 :inline)))
|
||||
((data mood-color 8 :inline)
|
||||
(_data uint128 16 :overlay-at data)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(deftype mood-sky-table (structure)
|
||||
((data vector 8 :inline)))
|
||||
((data vector 8 :inline)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(deftype mood-clouds (structure)
|
||||
((cloud-min float)
|
||||
(cloud-max float)))
|
||||
((cloud-min float)
|
||||
(cloud-max float)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(deftype mood-weather (structure)
|
||||
((data float 2)
|
||||
(cloud float :overlay-at (-> data 0))
|
||||
(fog float :overlay-at (-> data 1)))
|
||||
((data float 2)
|
||||
(cloud float :overlay-at (-> data 0))
|
||||
(fog float :overlay-at (-> data 1))
|
||||
)
|
||||
:pack-me
|
||||
:allow-misaligned)
|
||||
:allow-misaligned
|
||||
)
|
||||
|
||||
|
||||
(deftype mood-iweather (structure)
|
||||
((data int32 2)
|
||||
(cloud int32 :overlay-at (-> data 0))
|
||||
(fog int32 :overlay-at (-> data 1)))
|
||||
:allow-misaligned)
|
||||
((data int32 2)
|
||||
(cloud int32 :overlay-at (-> data 0))
|
||||
(fog int32 :overlay-at (-> data 1))
|
||||
)
|
||||
:allow-misaligned
|
||||
)
|
||||
|
||||
|
||||
(deftype mood-range (structure)
|
||||
((data float 4)
|
||||
(min-cloud float :overlay-at (-> data 0))
|
||||
(max-cloud float :overlay-at (-> data 1))
|
||||
(min-fog float :overlay-at (-> data 2))
|
||||
(max-fog float :overlay-at (-> data 3))
|
||||
(quad uint128 :overlay-at (-> data 0))))
|
||||
((data float 4)
|
||||
(min-cloud float :overlay-at (-> data 0))
|
||||
(max-cloud float :overlay-at (-> data 1))
|
||||
(min-fog float :overlay-at (-> data 2))
|
||||
(max-fog float :overlay-at (-> data 3))
|
||||
(quad uint128 :overlay-at (-> data 0))
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(deftype mood-filters-table (structure)
|
||||
((data vector 8 :inline)))
|
||||
((data vector 8 :inline)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(deftype mood-table (basic)
|
||||
((mood-fog-table mood-fog-table)
|
||||
(mood-color-table mood-color-table)
|
||||
(mood-channel-group mood-channel-group)
|
||||
(mood-direction-table mood-direction-table)
|
||||
(mood-sky-table mood-sky-table)
|
||||
(mood-interp-table sky-color-day)))
|
||||
((mood-fog-table mood-fog-table)
|
||||
(mood-color-table mood-color-table)
|
||||
(mood-channel-group mood-channel-group)
|
||||
(mood-direction-table mood-direction-table)
|
||||
(mood-sky-table mood-sky-table)
|
||||
(mood-interp-table sky-color-day)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(deftype light-state (structure)
|
||||
((time float)
|
||||
(fade float)))
|
||||
((time float)
|
||||
(fade float)
|
||||
)
|
||||
:pack-me
|
||||
)
|
||||
|
||||
|
||||
(deftype flicker-state (structure)
|
||||
((flicker-off uint8)
|
||||
(flicker-on uint8)))
|
||||
((flicker-off uint8)
|
||||
(flicker-on uint8)
|
||||
)
|
||||
:allow-misaligned
|
||||
)
|
||||
|
||||
|
||||
(deftype florescent-state (structure)
|
||||
((value float)
|
||||
(delay int8)
|
||||
(delay2 int8)))
|
||||
((value float)
|
||||
(delay int8)
|
||||
(delay2 int8)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(deftype electricity-state (structure)
|
||||
((value float)
|
||||
(scale float)))
|
||||
((value float)
|
||||
(scale float)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(deftype pulse-state (structure)
|
||||
((pulse float)
|
||||
(brightness float)
|
||||
(target-brightness float)
|
||||
(speed float)))
|
||||
((pulse float)
|
||||
(brightness float)
|
||||
(target-brightness float)
|
||||
(speed float)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(deftype strobe-state (structure)
|
||||
((time float)))
|
||||
((time float)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(deftype flames-state (structure)
|
||||
((time float)
|
||||
(index uint8)
|
||||
(length uint8)
|
||||
(height uint8)))
|
||||
((time float)
|
||||
(index uint8)
|
||||
(length uint8)
|
||||
(height uint8)
|
||||
)
|
||||
:pack-me
|
||||
)
|
||||
|
||||
|
||||
(deftype mood-context-core (structure)
|
||||
((current-fog mood-fog :inline)
|
||||
(current-sky-color vector :inline)
|
||||
(current-env-color vector :inline)
|
||||
(current-prt-color vector :inline)
|
||||
(current-shadow-color vector :inline)))
|
||||
((current-fog mood-fog :inline)
|
||||
(current-sky-color vector :inline)
|
||||
(current-env-color vector :inline)
|
||||
(current-prt-color vector :inline)
|
||||
(current-shadow-color vector :inline)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(deftype mood-context-core2 (mood-context-core)
|
||||
((light-group light-group 8 :inline)))
|
||||
((light-group light-group 8 :inline)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(deftype mood-context-core3 (mood-context-core2)
|
||||
((times vector 8 :inline)))
|
||||
((times vector 8 :inline)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(deftype mood-context (mood-context-core3)
|
||||
((itimes vector4w 4 :inline)
|
||||
(state uint32 32)))
|
||||
((itimes vector4w 4 :inline)
|
||||
(state uint32 32)
|
||||
(data uint128 123 :overlay-at (-> current-fog fog-color data 0))
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(deftype mood-control-work (structure)
|
||||
((color vector4w :inline)
|
||||
(weather mood-weather :inline)
|
||||
(iweather mood-iweather :inline)
|
||||
(interp mood-weather :inline)
|
||||
(index int32 4)
|
||||
(color-interp float)
|
||||
(color-index int32 2)
|
||||
(channel-interp float)
|
||||
(channel-index int32 2)
|
||||
(cloud-interp float)
|
||||
(cloud-index int32 2)))
|
||||
((color vector4w :inline)
|
||||
(weather mood-weather :inline)
|
||||
(iweather mood-iweather :inline)
|
||||
(interp mood-weather :inline)
|
||||
(index int32 4)
|
||||
(color-interp float)
|
||||
(color-index int32 2)
|
||||
(channel-interp float)
|
||||
(channel-index int32 2)
|
||||
(cloud-interp float)
|
||||
(cloud-index int32 2)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(deftype mood-control (mood-table)
|
||||
((mood-clouds mood-clouds)
|
||||
(current-interp mood-weather :inline)
|
||||
(target-interp mood-weather :inline)
|
||||
(speed-interp mood-weather :inline)
|
||||
(range mood-range :inline)
|
||||
(time-until-random mood-weather :inline)
|
||||
(time-until-random-min mood-weather :inline)
|
||||
(time-until-random-max mood-weather :inline)
|
||||
(current-special-interp float)
|
||||
(target-special-interp float)
|
||||
(rate-special-interp float)
|
||||
(display-flag symbol)
|
||||
(overide-weather-flag symbol)
|
||||
(pad int32)
|
||||
(overide mood-weather :inline)
|
||||
(lightning-index int32)
|
||||
(lightning-val int32)
|
||||
(lightning-time int32)
|
||||
(lightning-time2 float)
|
||||
(lightning-time3 float)
|
||||
(lightning-flash float)
|
||||
(lightning-id sound-id)
|
||||
(lightning-count0 uint32)
|
||||
(lightning-count1 uint32)
|
||||
(lightning-count2 uint32)
|
||||
(rain-id sound-id)
|
||||
(sound-pitch float)
|
||||
(fogs mood-fog-table 9)
|
||||
(colors mood-color-table 3)
|
||||
(channels mood-channel-group 3)
|
||||
(clouds mood-clouds 9))
|
||||
((mood-clouds mood-clouds)
|
||||
(current-interp mood-weather :inline)
|
||||
(target-interp mood-weather :inline)
|
||||
(speed-interp mood-weather :inline)
|
||||
(range mood-range :inline)
|
||||
(time-until-random mood-weather :inline)
|
||||
(time-until-random-min mood-weather :inline)
|
||||
(time-until-random-max mood-weather :inline)
|
||||
(current-special-interp float)
|
||||
(target-special-interp float)
|
||||
(rate-special-interp float)
|
||||
(display-flag symbol)
|
||||
(overide-weather-flag symbol)
|
||||
(pad int32)
|
||||
(overide mood-weather :inline)
|
||||
(lightning-index int32)
|
||||
(lightning-val int32)
|
||||
(lightning-time int32)
|
||||
(lightning-time2 float)
|
||||
(lightning-time3 float)
|
||||
(lightning-flash float)
|
||||
(lightning-id sound-id)
|
||||
(lightning-count0 uint32)
|
||||
(lightning-count1 uint32)
|
||||
(lightning-count2 uint32)
|
||||
(rain-id sound-id)
|
||||
(sound-pitch float)
|
||||
(fogs mood-fog-table 9)
|
||||
(colors mood-color-table 3)
|
||||
(channels mood-channel-group 3)
|
||||
(clouds mood-clouds 9)
|
||||
)
|
||||
(:methods
|
||||
(mood-control-method-9 () none)
|
||||
(mood-control-method-10 () none)
|
||||
(mood-control-method-11 () none)
|
||||
(mood-control-method-12 () none)
|
||||
(set-special-interps! (_type_ float float symbol) none)
|
||||
(weather-event-concluded? (_type_) symbol)
|
||||
(mood-control-method-15 () none)
|
||||
(mood-control-method-16 () none)
|
||||
(mood-control-method-17 () none)
|
||||
(mood-control-method-18 () none)
|
||||
(mood-control-method-19 () none)
|
||||
(mood-control-method-20 () none)
|
||||
(mood-control-method-21 () none)
|
||||
(mood-control-method-22 () none)
|
||||
(mood-control-method-23 () none)
|
||||
(mood-control-method-24 () none)))
|
||||
(init-weather! (_type_) none)
|
||||
(set-cloud-and-fog-interp! (_type_ float float float float) none)
|
||||
(update-mood-range! (_type_ float float float float) none)
|
||||
(set-time-for-random-weather! (_type_ float float) none)
|
||||
(set-special-interps! (_type_ float float symbol) none)
|
||||
(weather-event-concluded? (_type_) symbol)
|
||||
(set-lightning-time! (_type_ int int float) none)
|
||||
(apply-mood-clouds-and-fog (_type_ mood-control-work) none)
|
||||
(apply-mood-fog (_type_ mood-control-work mood-color-table mood-color-table mood-color-table float) none)
|
||||
(apply-fog-height (_type_ mood-control-work float float float float) none)
|
||||
(apply-mood-colors (_type_ mood-control-work) none)
|
||||
(mood-control-method-20 (_type_ mood-control-work mood-color-table mood-color-table mood-color-table float) none)
|
||||
(apply-mood-channels (_type_ mood-control-work) none)
|
||||
(adjust-num-clouds (_type_ mood-control-work) none)
|
||||
(gen-lightning-and-thunder! (_type_ int) none)
|
||||
(play-or-stop-lightning-sfx! (_type_ sound-spec vector) none)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(defmethod set-special-interps! ((this mood-control) (target-interp float) (rate-interp float) (set-current-interp? symbol))
|
||||
"Sets the `*-special-interp` values with the given values
|
||||
@@ -204,10 +292,15 @@
|
||||
(let ((clamped-interp (fmax 0.0 (fmin 1.0 target-interp))))
|
||||
(set! (-> this target-special-interp) clamped-interp)
|
||||
(set! (-> this rate-special-interp) rate-interp)
|
||||
(if set-current-interp? (set! (-> this current-special-interp) clamped-interp)))
|
||||
(if set-current-interp?
|
||||
(set! (-> this current-special-interp) clamped-interp)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none))
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod weather-event-concluded? ((this mood-control))
|
||||
"@returns [[#t]] if [[this::override-weather-flag]] is set, we aren't in a cutscene and [[this::current-special-interp]] is equal to `0.0`"
|
||||
(and (-> this overide-weather-flag) (not (movie?)) (= (-> this current-special-interp) 0.0)))
|
||||
(and (-> this overide-weather-flag) (not (movie?)) (= (-> this current-special-interp) 0.0))
|
||||
)
|
||||
|
||||
@@ -7,3 +7,439 @@
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
;; this file is debug only
|
||||
(declare-file (debug))
|
||||
|
||||
(define *overide-mood-color-table*
|
||||
(new 'static 'mood-color-table :data (new 'static 'inline-array mood-color 8
|
||||
(new 'static 'mood-color
|
||||
:lgt-color (new 'static 'vector :x 1.375 :y 1.157)
|
||||
:amb-color (new 'static 'vector :x 0.625 :y 0.553 :z 0.725 :w 1.0)
|
||||
)
|
||||
(new 'static 'mood-color
|
||||
:lgt-color (new 'static 'vector :x 1.473 :y 1.337 :z 1.0)
|
||||
:amb-color (new 'static 'vector :x 0.527 :y 0.652 :z 0.75 :w 1.0)
|
||||
)
|
||||
(new 'static 'mood-color
|
||||
:lgt-color (new 'static 'vector :x 1.473 :y 1.348 :z 1.15)
|
||||
:amb-color (new 'static 'vector :x 0.527 :y 0.652 :z 0.75 :w 1.0)
|
||||
)
|
||||
(new 'static 'mood-color
|
||||
:lgt-color (new 'static 'vector :x 1.473 :y 1.337 :z 1.0)
|
||||
:amb-color (new 'static 'vector :x 0.527 :y 0.652 :z 0.75 :w 1.0)
|
||||
)
|
||||
(new 'static 'mood-color
|
||||
:lgt-color (new 'static 'vector :x 1.5 :y 1.148)
|
||||
:amb-color (new 'static 'vector :x 0.5 :y 0.562 :z 0.75 :w 1.0)
|
||||
)
|
||||
(new 'static 'mood-color
|
||||
:lgt-color (new 'static 'vector :x 0.05 :y 0.149 :z 0.375)
|
||||
:amb-color (new 'static 'vector :x 0.35 :y 0.451 :z 0.625 :w 1.0)
|
||||
)
|
||||
(new 'static 'mood-color
|
||||
:lgt-color (new 'static 'vector :x 0.1 :y 0.35 :z 0.5)
|
||||
:amb-color (new 'static 'vector :x 0.3 :y 0.35 :z 0.5 :w 1.0)
|
||||
)
|
||||
(new 'static 'mood-color
|
||||
:lgt-color (new 'static 'vector :x 0.1 :y 0.575 :z 0.4)
|
||||
:amb-color (new 'static 'vector :x 0.3 :y 0.425 :z 0.5 :w 1.0)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(define *overide-mood-fog-table*
|
||||
(new 'static 'mood-fog-table :data (new 'static 'inline-array mood-fog 8
|
||||
(new 'static 'mood-fog
|
||||
:fog-color (new 'static 'vector :x 160.0 :y 150.0 :z 200.0 :w 128.0)
|
||||
:fog-dists (new 'static 'vector :x 262144.0 :y 3690496.0 :z 255.0 :w 64.0)
|
||||
:erase-color (new 'static 'vector :w 128.0)
|
||||
)
|
||||
(new 'static 'mood-fog
|
||||
:fog-color (new 'static 'vector :x 150.0 :y 165.0 :z 220.0 :w 128.0)
|
||||
:fog-dists (new 'static 'vector :x 262144.0 :y 3690496.0 :z 255.0 :w 64.0)
|
||||
:erase-color (new 'static 'vector :w 128.0)
|
||||
)
|
||||
(new 'static 'mood-fog
|
||||
:fog-color (new 'static 'vector :x 128.0 :y 180.0 :z 243.0 :w 128.0)
|
||||
:fog-dists (new 'static 'vector :x 262144.0 :y 3690496.0 :z 255.0 :w 64.0)
|
||||
:erase-color (new 'static 'vector :w 128.0)
|
||||
)
|
||||
(new 'static 'mood-fog
|
||||
:fog-color (new 'static 'vector :x 150.0 :y 165.0 :z 220.0 :w 128.0)
|
||||
:fog-dists (new 'static 'vector :x 262144.0 :y 3690496.0 :z 255.0 :w 64.0)
|
||||
:erase-color (new 'static 'vector :w 128.0)
|
||||
)
|
||||
(new 'static 'mood-fog
|
||||
:fog-color (new 'static 'vector :x 160.0 :y 150.0 :z 200.0 :w 128.0)
|
||||
:fog-dists (new 'static 'vector :x 262144.0 :y 3690496.0 :z 255.0 :w 64.0)
|
||||
:erase-color (new 'static 'vector :w 128.0)
|
||||
)
|
||||
(new 'static 'mood-fog
|
||||
:fog-color (new 'static 'vector :x 16.0 :y 32.0 :z 100.0 :w 128.0)
|
||||
:fog-dists (new 'static 'vector :x 262144.0 :y 3690496.0 :z 255.0 :w 64.0)
|
||||
:erase-color (new 'static 'vector :w 128.0)
|
||||
)
|
||||
(new 'static 'mood-fog
|
||||
:fog-color (new 'static 'vector :y 24.0 :z 64.0 :w 128.0)
|
||||
:fog-dists (new 'static 'vector :x 262144.0 :y 3690496.0 :z 255.0 :w 64.0)
|
||||
:erase-color (new 'static 'vector :w 128.0)
|
||||
)
|
||||
(new 'static 'mood-fog
|
||||
:fog-color (new 'static 'vector :y 56.0 :z 72.0 :w 128.0)
|
||||
:fog-dists (new 'static 'vector :x 262144.0 :y 3690496.0 :z 255.0 :w 64.0)
|
||||
:erase-color (new 'static 'vector :w 128.0)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; WARN: Return type mismatch pointer vs none.
|
||||
(defun init-overide-table ((table mood-table))
|
||||
"Similar to the beginning of [[init-mood-control]], does the bare minimum to setup the given [[mood-table]]
|
||||
@param! table The table to initialize
|
||||
@returns [[none]]"
|
||||
(set! (-> table mood-fog-table) (new 'debug 'mood-fog-table))
|
||||
(set! (-> table mood-color-table) (new 'debug 'mood-color-table))
|
||||
(set! (-> table mood-channel-group) *no-cloud-mood-channel-group*)
|
||||
(set! (-> table mood-direction-table) *mood-direction-table*)
|
||||
(set! (-> table mood-sky-table) *mood-sky-table*)
|
||||
(set! (-> table mood-interp-table) *mood-interp-table*)
|
||||
(mem-copy! (the-as pointer (-> table mood-fog-table)) (the-as pointer *no-cloud-clear-mood-fog-table*) 384)
|
||||
(mem-copy! (the-as pointer (-> table mood-color-table)) (the-as pointer *no-cloud-mood-color-table*) 256)
|
||||
(none)
|
||||
)
|
||||
|
||||
(define *overide-table* (new 'static 'mood-table))
|
||||
|
||||
(init-overide-table *overide-table*)
|
||||
|
||||
;; WARN: Return type mismatch object vs none.
|
||||
(defun print-mood-tables ()
|
||||
"Generates the GOAL code for defining the current state of [[*overide-table*]]"
|
||||
(mem-copy! (the-as pointer (-> *overide-table* mood-fog-table)) (the-as pointer *overide-mood-fog-table*) 384)
|
||||
(mem-copy!
|
||||
(the-as pointer (-> *overide-table* mood-color-table))
|
||||
(the-as pointer *overide-mood-color-table*)
|
||||
256
|
||||
)
|
||||
(dotimes (data-idx 8)
|
||||
(vector-float*!
|
||||
(the-as vector (-> *overide-table* mood-fog-table data data-idx))
|
||||
(the-as vector (-> *overide-table* mood-fog-table data data-idx))
|
||||
(-> *overide-table* mood-fog-table data data-idx fog-color w)
|
||||
)
|
||||
(vector-float*!
|
||||
(the-as vector (-> *overide-table* mood-color-table data data-idx))
|
||||
(the-as vector (-> *overide-table* mood-color-table data data-idx))
|
||||
(-> *overide-table* mood-color-table data data-idx lgt-color w)
|
||||
)
|
||||
(vector-float*!
|
||||
(the-as vector (+ (the-as uint (-> *overide-table* mood-color-table data 0 amb-color)) (* data-idx 32)))
|
||||
(the-as vector (+ (the-as uint (-> *overide-table* mood-color-table data 0 amb-color)) (* data-idx 32)))
|
||||
(-> *overide-table* mood-color-table data data-idx amb-color w)
|
||||
)
|
||||
(set! (-> *overide-table* mood-fog-table data data-idx fog-color w) 128.0)
|
||||
(set! (-> *overide-table* mood-color-table data data-idx lgt-color w) 0.0)
|
||||
(set! (-> *overide-table* mood-color-table data data-idx amb-color w) 1.0)
|
||||
)
|
||||
(format 0 "(define *overide-mood-color-table*~%")
|
||||
(format 0 " (new 'static 'mood-color-table~%")
|
||||
(format 0 " :data (new 'static 'inline-array 'mood-color 0~%")
|
||||
(dotimes (_color-idx 8)
|
||||
(format 0 " (new 'static 'mood-color")
|
||||
(let ((color-idx _color-idx))
|
||||
(cond
|
||||
((zero? color-idx)
|
||||
(format 0 " ; sun rise~%")
|
||||
)
|
||||
((= color-idx 1)
|
||||
(format 0 " ; morning~%")
|
||||
)
|
||||
((= color-idx 2)
|
||||
(format 0 " ; noon~%")
|
||||
)
|
||||
((= color-idx 3)
|
||||
(format 0 " ; afternoon~%")
|
||||
)
|
||||
((= color-idx 4)
|
||||
(format 0 " ; sunset~%")
|
||||
)
|
||||
((= color-idx 5)
|
||||
(format 0 " ; twilight~%")
|
||||
)
|
||||
((= color-idx 6)
|
||||
(format 0 " ; evening~%")
|
||||
)
|
||||
((= color-idx 7)
|
||||
(format 0 " ; green sun~%")
|
||||
)
|
||||
)
|
||||
)
|
||||
(format
|
||||
0
|
||||
" :lgt-color (new 'static 'vector :x ~f :y ~f :z ~f :w ~f)~%"
|
||||
(-> *overide-table* mood-color-table data _color-idx lgt-color x)
|
||||
(-> *overide-table* mood-color-table data _color-idx lgt-color y)
|
||||
(-> *overide-table* mood-color-table data _color-idx lgt-color z)
|
||||
(-> *overide-table* mood-color-table data _color-idx lgt-color w)
|
||||
)
|
||||
(format
|
||||
0
|
||||
" :amb-color (new 'static 'vector :x ~f :y ~f :z ~f :w ~f)~%"
|
||||
(-> *overide-table* mood-color-table data _color-idx amb-color x)
|
||||
(-> *overide-table* mood-color-table data _color-idx amb-color y)
|
||||
(-> *overide-table* mood-color-table data _color-idx amb-color z)
|
||||
(-> *overide-table* mood-color-table data _color-idx amb-color w)
|
||||
)
|
||||
(format 0 " )~%")
|
||||
)
|
||||
(format 0 " )~%")
|
||||
(format 0 " )~%")
|
||||
(format 0 " )~%")
|
||||
(format 0 "(define *overide-mood-fog-table*~%")
|
||||
(format 0 " (new 'static 'mood-fog-table~%")
|
||||
(format 0 " :data (new 'static 'inline-array 'mood-fog 0~%")
|
||||
(dotimes (_fog-idx 8)
|
||||
(format 0 " (new 'static 'mood-fog")
|
||||
(let ((fog-idx _fog-idx))
|
||||
(cond
|
||||
((zero? fog-idx)
|
||||
(format 0 " ; sun rise~%")
|
||||
)
|
||||
((= fog-idx 1)
|
||||
(format 0 " ; morning~%")
|
||||
)
|
||||
((= fog-idx 2)
|
||||
(format 0 " ; noon~%")
|
||||
)
|
||||
((= fog-idx 3)
|
||||
(format 0 " ; afternoon~%")
|
||||
)
|
||||
((= fog-idx 4)
|
||||
(format 0 " ; sunset~%")
|
||||
)
|
||||
((= fog-idx 5)
|
||||
(format 0 " ; twilight~%")
|
||||
)
|
||||
((= fog-idx 6)
|
||||
(format 0 " ; evening~%")
|
||||
)
|
||||
((= fog-idx 7)
|
||||
(format 0 " ; green sun~%")
|
||||
)
|
||||
)
|
||||
)
|
||||
(format
|
||||
0
|
||||
" :fog-color (new 'static 'vector :x ~f :y ~f :z ~f :w ~f)~%"
|
||||
(-> *overide-table* mood-fog-table data _fog-idx fog-color x)
|
||||
(-> *overide-table* mood-fog-table data _fog-idx fog-color y)
|
||||
(-> *overide-table* mood-fog-table data _fog-idx fog-color z)
|
||||
(-> *overide-table* mood-fog-table data _fog-idx fog-color w)
|
||||
)
|
||||
(format
|
||||
0
|
||||
" :fog-start (meters ~f) :fog-end (meters ~f) :fog-min ~f :fog-max ~f ~%"
|
||||
(-> *overide-table* mood-fog-table data _fog-idx fog-dists x)
|
||||
(-> *overide-table* mood-fog-table data _fog-idx fog-dists y)
|
||||
(-> *overide-table* mood-fog-table data _fog-idx fog-dists w)
|
||||
(-> *overide-table* mood-fog-table data _fog-idx fog-dists z)
|
||||
)
|
||||
(format 0 " :erase-color (new 'static 'vector :x 0.0 :y 0.0 :z 0.0 :w 128.0)~%")
|
||||
(format 0 " )~%")
|
||||
)
|
||||
(format 0 " )~%")
|
||||
(format 0 " )~%")
|
||||
(format 0 " )~%")
|
||||
(format 0 "(define *overide-table* (new 'static 'mood-table))~%")
|
||||
(none)
|
||||
)
|
||||
|
||||
;; WARN: Return type mismatch object vs none.
|
||||
(defun desaturate-mood-colors ((arg0 float) (arg1 float) (arg2 float))
|
||||
"Unused - Generate GOAL code for a new [[*overide-mood-color-table*]] definition that desaturates the color
|
||||
Apply said overrides to the [[*overide-table*]]"
|
||||
(mem-copy!
|
||||
(the-as pointer (-> *overide-table* mood-color-table))
|
||||
(the-as pointer *no-cloud-mood-color-table*)
|
||||
256
|
||||
)
|
||||
(dotimes (data-idx 8)
|
||||
(let ((color-data (-> *overide-table* mood-color-table data data-idx))
|
||||
(mood-colors
|
||||
(the-as
|
||||
(inline-array mood-color)
|
||||
(-> (the-as (inline-array mood-color) (-> *overide-table* mood-color-table data 0 amb-color)) data-idx)
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((max-light-color
|
||||
(fmax (fmax (-> color-data lgt-color x) (-> color-data lgt-color y)) (-> color-data lgt-color z))
|
||||
)
|
||||
(max-0th-light-color
|
||||
(fmax (fmax (-> mood-colors 0 lgt-color x) (-> mood-colors 0 lgt-color y)) (-> mood-colors 0 lgt-color z))
|
||||
)
|
||||
)
|
||||
(set! (-> color-data lgt-color x)
|
||||
(* (+ (-> color-data lgt-color x) (* (- max-light-color (-> color-data lgt-color x)) arg0)) arg1)
|
||||
)
|
||||
(set! (-> color-data lgt-color y)
|
||||
(* (+ (-> color-data lgt-color y) (* (- max-light-color (-> color-data lgt-color y)) arg0)) arg1)
|
||||
)
|
||||
(set! (-> color-data lgt-color z)
|
||||
(* (+ (-> color-data lgt-color z) (* (- max-light-color (-> color-data lgt-color z)) arg0)) arg1)
|
||||
)
|
||||
(set! (-> color-data lgt-color w) 0.0)
|
||||
(set! (-> mood-colors 0 lgt-color x)
|
||||
(* (+ (-> mood-colors 0 lgt-color x) (* (- max-0th-light-color (-> mood-colors 0 lgt-color x)) arg0)) arg2)
|
||||
)
|
||||
(set! (-> mood-colors 0 lgt-color y)
|
||||
(* (+ (-> mood-colors 0 lgt-color y) (* (- max-0th-light-color (-> mood-colors 0 lgt-color x)) arg0)) arg2)
|
||||
)
|
||||
(set! (-> mood-colors 0 lgt-color z)
|
||||
(* (+ (-> mood-colors 0 lgt-color z) (* (- max-0th-light-color (-> mood-colors 0 lgt-color x)) arg0)) arg2)
|
||||
)
|
||||
)
|
||||
(set! (-> mood-colors 0 lgt-color w) 1.0)
|
||||
)
|
||||
)
|
||||
(format 0 "(define *overide-mood-color-table*~%")
|
||||
(format 0 " (new 'static 'mood-color-table~%")
|
||||
(format 0 " :data (new 'static 'inline-array 'mood-color 0~%")
|
||||
(dotimes (_color-idx 8)
|
||||
(format 0 " (new 'static 'mood-color")
|
||||
(let ((color-idx _color-idx))
|
||||
(cond
|
||||
((zero? color-idx)
|
||||
(format 0 " ; sun rise~%")
|
||||
)
|
||||
((= color-idx 1)
|
||||
(format 0 " ; morning~%")
|
||||
)
|
||||
((= color-idx 2)
|
||||
(format 0 " ; noon~%")
|
||||
)
|
||||
((= color-idx 3)
|
||||
(format 0 " ; afternoon~%")
|
||||
)
|
||||
((= color-idx 4)
|
||||
(format 0 " ; sunset~%")
|
||||
)
|
||||
((= color-idx 5)
|
||||
(format 0 " ; twilight~%")
|
||||
)
|
||||
((= color-idx 6)
|
||||
(format 0 " ; evening~%")
|
||||
)
|
||||
((= color-idx 7)
|
||||
(format 0 " ; green sun~%")
|
||||
)
|
||||
)
|
||||
)
|
||||
(format
|
||||
0
|
||||
" :lgt-color (new 'static 'vector :x ~f :y ~f :z ~f :w ~f)~%"
|
||||
(-> *overide-table* mood-color-table data _color-idx lgt-color x)
|
||||
(-> *overide-table* mood-color-table data _color-idx lgt-color y)
|
||||
(-> *overide-table* mood-color-table data _color-idx lgt-color z)
|
||||
(-> *overide-table* mood-color-table data _color-idx lgt-color w)
|
||||
)
|
||||
(format
|
||||
0
|
||||
" :amb-color (new 'static 'vector :x ~f :y ~f :z ~f :w ~f)~%"
|
||||
(-> *overide-table* mood-color-table data _color-idx amb-color x)
|
||||
(-> *overide-table* mood-color-table data _color-idx amb-color y)
|
||||
(-> *overide-table* mood-color-table data _color-idx amb-color z)
|
||||
(-> *overide-table* mood-color-table data _color-idx amb-color w)
|
||||
)
|
||||
(format 0 " )~%")
|
||||
)
|
||||
(format 0 " )~%")
|
||||
(format 0 " )~%")
|
||||
(format 0 " )~%")
|
||||
(none)
|
||||
)
|
||||
|
||||
;; WARN: Return type mismatch object vs none.
|
||||
(defun desaturate-mood-fog ((arg0 (pointer mood-fog-table)) (arg1 float) (arg2 float))
|
||||
"Unused - Generate GOAL code for a new [[*overide-mood-fog-table*]] definition that desaturates the fog color
|
||||
Apply said overrides to the [[*overide-table*]]"
|
||||
(mem-copy! (the-as pointer (-> *overide-table* mood-fog-table)) arg0 384)
|
||||
(dotimes (data-idx 8)
|
||||
(let ((fog-data (-> *overide-table* mood-fog-table data data-idx)))
|
||||
(let ((max-fog-val (fmax (fmax (-> fog-data fog-color x) (-> fog-data fog-color y)) (-> fog-data fog-color z))))
|
||||
(set! (-> fog-data fog-color x)
|
||||
(* (+ (-> fog-data fog-color x) (* (- max-fog-val (-> fog-data fog-color x)) arg1)) arg2)
|
||||
)
|
||||
(set! (-> fog-data fog-color y)
|
||||
(* (+ (-> fog-data fog-color y) (* (- max-fog-val (-> fog-data fog-color y)) arg1)) arg2)
|
||||
)
|
||||
(set! (-> fog-data fog-color z)
|
||||
(* (+ (-> fog-data fog-color z) (* (- max-fog-val (-> fog-data fog-color z)) arg1)) arg2)
|
||||
)
|
||||
)
|
||||
(set! (-> fog-data fog-color w) 1.0)
|
||||
)
|
||||
)
|
||||
(format 0 "(define *overide-mood-fog-table*~%")
|
||||
(format 0 " (new 'static 'mood-fog-table~%")
|
||||
(format 0 " :data (new 'static 'inline-array 'mood-fog 0~%")
|
||||
(dotimes (_fog-idx 8)
|
||||
(format 0 " (new 'static 'mood-fog")
|
||||
(let ((fog-idx _fog-idx))
|
||||
(cond
|
||||
((zero? fog-idx)
|
||||
(format 0 " ; sun rise~%")
|
||||
)
|
||||
((= fog-idx 1)
|
||||
(format 0 " ; morning~%")
|
||||
)
|
||||
((= fog-idx 2)
|
||||
(format 0 " ; noon~%")
|
||||
)
|
||||
((= fog-idx 3)
|
||||
(format 0 " ; afternoon~%")
|
||||
)
|
||||
((= fog-idx 4)
|
||||
(format 0 " ; sunset~%")
|
||||
)
|
||||
((= fog-idx 5)
|
||||
(format 0 " ; twilight~%")
|
||||
)
|
||||
((= fog-idx 6)
|
||||
(format 0 " ; evening~%")
|
||||
)
|
||||
((= fog-idx 7)
|
||||
(format 0 " ; green sun~%")
|
||||
)
|
||||
)
|
||||
)
|
||||
(format
|
||||
0
|
||||
" :fog-color (new 'static 'vector :x ~f :y ~f :z ~f :w ~f)~%"
|
||||
(-> *overide-table* mood-fog-table data _fog-idx fog-color x)
|
||||
(-> *overide-table* mood-fog-table data _fog-idx fog-color y)
|
||||
(-> *overide-table* mood-fog-table data _fog-idx fog-color z)
|
||||
(-> *overide-table* mood-fog-table data _fog-idx fog-color w)
|
||||
)
|
||||
(format
|
||||
0
|
||||
" :fog-start (meters ~f) :fog-end (meters ~f) :fog-min ~f :fog-max ~f ~%"
|
||||
(* 0.00024414062 (-> *overide-table* mood-fog-table data _fog-idx fog-dists x))
|
||||
(* 0.00024414062 (-> *overide-table* mood-fog-table data _fog-idx fog-dists y))
|
||||
(-> *overide-table* mood-fog-table data _fog-idx fog-dists w)
|
||||
(-> *overide-table* mood-fog-table data _fog-idx fog-dists z)
|
||||
)
|
||||
(format 0 " :erase-color (new 'static 'vector :x 0.0 :y 0.0 :z 0.0 :w 128.0)~%")
|
||||
(format 0 " )~%")
|
||||
)
|
||||
(format 0 " )~%")
|
||||
(format 0 " )~%")
|
||||
(format 0 " )~%")
|
||||
(none)
|
||||
)
|
||||
|
||||
(define *debug-mood-color-table* (-> *mood-control* mood-color-table))
|
||||
|
||||
(define *debug-mood-fog-table* (-> *mood-control* mood-fog-table))
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -11,6 +11,797 @@
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
;; WARN: Return type mismatch uint vs int.
|
||||
(defmethod asize-of ((this time-of-day-palette))
|
||||
(the-as int (+ (-> this type size) (* (* (-> this height) (-> this width)) 4)))
|
||||
)
|
||||
|
||||
(defmethod deactivate ((this time-of-day-proc))
|
||||
"Make a process dead, clean it up, remove it from the active pool, and return to dead pool."
|
||||
(if (nonzero? (-> this sun))
|
||||
(kill-particles (-> this sun))
|
||||
)
|
||||
(if (nonzero? (-> this green-sun))
|
||||
(kill-particles (-> this green-sun))
|
||||
)
|
||||
(if (nonzero? (-> this moon))
|
||||
(kill-particles (-> this moon))
|
||||
)
|
||||
(if (nonzero? (-> this day-star))
|
||||
(kill-particles (-> this day-star))
|
||||
)
|
||||
((method-of-type process deactivate) this)
|
||||
(none)
|
||||
)
|
||||
|
||||
(if (zero? time-of-day-effect)
|
||||
(set! time-of-day-effect nothing)
|
||||
)
|
||||
|
||||
(defbehavior time-of-day-update time-of-day-proc ()
|
||||
"Update particles, sky, and effect for time-of-day."
|
||||
(time-of-day-effect)
|
||||
(let ((v1-3 (if (-> *time-of-day-context* use-camera-other)
|
||||
(-> *math-camera* inv-camera-rot-other)
|
||||
(-> *math-camera* inv-camera-rot)
|
||||
)
|
||||
)
|
||||
(gp-0 (if (-> *time-of-day-context* use-camera-other)
|
||||
(-> *math-camera* trans-other)
|
||||
(-> *math-camera* trans)
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (-> *setting-control* user-current weather)
|
||||
(let ((s5-0 (new 'stack-no-clear 'vector))
|
||||
(s4-0 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
(let ((v1-5 (-> v1-3 fvec)))
|
||||
(set! (-> s5-0 quad) (-> *math-camera* trans quad))
|
||||
(vector-! s4-0 s5-0 (-> *math-camera* prev-trans))
|
||||
(let ((f0-1 (vector-dot s4-0 v1-5)))
|
||||
(vector+float*! s5-0 s5-0 v1-5 (* 25.0 f0-1))
|
||||
)
|
||||
)
|
||||
(set! (-> s5-0 y) (-> *math-camera* trans y))
|
||||
(if (< 0.0 (-> *setting-control* user-current rain))
|
||||
(update-rain (-> *setting-control* user-current rain) s5-0 s4-0)
|
||||
)
|
||||
(if (< 0.0 (-> *setting-control* user-current snow))
|
||||
(update-snow (-> *setting-control* user-current snow) s5-0 s4-0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(cond
|
||||
(*dproc*
|
||||
(cond
|
||||
((< (-> self start-timer) 4)
|
||||
(+! (-> self start-timer) 1)
|
||||
)
|
||||
(else
|
||||
(let ((s5-1 (-> *time-of-day-context* sky))
|
||||
(s4-1 (= (-> *setting-control* user-current sky-type) 'star-field))
|
||||
)
|
||||
(cond
|
||||
((or (and (>= (-> self time-of-day) 6.25) (and (< (-> self time-of-day) 18.75) s5-1)) s4-1)
|
||||
(if (zero? (-> self sun-count))
|
||||
(spawn (-> self sun) gp-0)
|
||||
)
|
||||
)
|
||||
((> (-> self sun-count) 0)
|
||||
(kill-particles (-> self sun))
|
||||
)
|
||||
)
|
||||
(cond
|
||||
((or (and (or (>= (-> self time-of-day) 21.75) (>= 10.25 (-> self time-of-day))) s5-1) s4-1)
|
||||
(if (zero? (-> self green-sun-count))
|
||||
(spawn (-> self green-sun) gp-0)
|
||||
)
|
||||
)
|
||||
((> (-> self green-sun-count) 0)
|
||||
(kill-particles (-> self green-sun))
|
||||
)
|
||||
)
|
||||
(cond
|
||||
((or (and (or (>= 7.0 (-> self time-of-day)) (>= (-> self time-of-day) 17.0)) s5-1) s4-1)
|
||||
(if (zero? (-> self moon-count))
|
||||
(spawn (-> self moon) gp-0)
|
||||
)
|
||||
)
|
||||
((> (-> self moon-count) 0)
|
||||
(kill-particles (-> self moon))
|
||||
)
|
||||
)
|
||||
(cond
|
||||
((and (-> self day-star-enable) s5-1 (not s4-1))
|
||||
(if (zero? (-> self day-star-count))
|
||||
(spawn (-> self day-star) gp-0)
|
||||
)
|
||||
)
|
||||
((> (-> self day-star-count) 0)
|
||||
(kill-particles (-> self day-star))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(set! (-> self start-timer) 0)
|
||||
0
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> self sun-count) 0)
|
||||
(set! (-> self green-sun-count) 0)
|
||||
(set! (-> self moon-count) 0)
|
||||
(set! (-> self day-star-count) 0)
|
||||
(update-time-and-speed *sky-work* (-> self time-of-day) (-> self time-ratio))
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defbehavior update-counters time-of-day-proc ()
|
||||
"Set hours, minutes, senonds based on current frame."
|
||||
(let ((v1-2 (-> *display* bg-clock frame-counter)))
|
||||
0
|
||||
(let ((v1-3 (* 60 v1-2)))
|
||||
(set! (-> self old-frame) (-> self current-frame))
|
||||
(set! (-> self current-frame) (the-as uint v1-3))
|
||||
(set! (-> self frames) (the-as uint v1-3))
|
||||
(set! (-> self hours) (/ v1-3 #x107ac0))
|
||||
(let ((v1-4 (- v1-3 (* #x107ac0 (-> self hours)))))
|
||||
(set! (-> self minutes) (/ v1-4 #x4650))
|
||||
(let ((v1-5 (- v1-4 (* #x4650 (-> self minutes)))))
|
||||
(set! (-> self seconds) (/ v1-5 300))
|
||||
(- v1-5 (* 300 (-> self seconds)))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((f0-1 (* 0.0000009259259 (the float (mod (the-as int (-> self frames)) #x18b8200)))))
|
||||
(set! (-> self time-of-day) f0-1)
|
||||
(set! (-> *time-of-day-context* time) f0-1)
|
||||
f0-1
|
||||
)
|
||||
)
|
||||
|
||||
(defstate time-of-day-tick (time-of-day-proc)
|
||||
:event (behavior ((proc process) (argc int) (message symbol) (block event-message-block))
|
||||
(case message
|
||||
(('change)
|
||||
(case (-> block param 0)
|
||||
(('ratio)
|
||||
(let ((a0-5 (-> *display* bg-clock))
|
||||
(f0-0 (the-as float (-> block param 1)))
|
||||
)
|
||||
(set! (-> self time-ratio) f0-0)
|
||||
(set! (-> self dest-time-ratio) f0-0)
|
||||
(update-rates! a0-5 f0-0)
|
||||
)
|
||||
)
|
||||
(('hour)
|
||||
(let ((f28-0 (the float (-> block param 1)))
|
||||
(f30-0 (if (>= argc 3)
|
||||
(the float (-> block param 2))
|
||||
0.0
|
||||
)
|
||||
)
|
||||
)
|
||||
(update-counters)
|
||||
(let ((v1-10 (-> *display* bg-clock frame-counter))
|
||||
(a0-7 #x69780)
|
||||
(a1-5 (/ (+ (the int (* 1080000.0 f28-0)) (the int (* 18000.0 f30-0))) 60))
|
||||
)
|
||||
(set! (-> *display* bg-clock frame-counter) (+ (- v1-10 (the-as time-frame (mod v1-10 a0-7))) a0-7 a1-5))
|
||||
)
|
||||
)
|
||||
(update-counters)
|
||||
(kill-particles (-> self sun))
|
||||
(kill-particles (-> self green-sun))
|
||||
(kill-particles (-> self moon))
|
||||
(kill-particles (-> self day-star))
|
||||
(set! (-> self sun-count) 0)
|
||||
(set! (-> self green-sun-count) 0)
|
||||
(set! (-> self moon-count) 0)
|
||||
(set! (-> self day-star-count) 0)
|
||||
(-> self hours)
|
||||
)
|
||||
)
|
||||
)
|
||||
(('save)
|
||||
(set! (-> self old-frame-save) (-> self old-frame))
|
||||
(set! (-> self current-frame-save) (-> self current-frame))
|
||||
(set! (-> self frames-save) (-> self frames))
|
||||
(set! (-> self time-of-day-save) (-> self time-of-day))
|
||||
)
|
||||
(('restore)
|
||||
(set! (-> self old-frame) (-> self old-frame-save))
|
||||
(set! (-> self current-frame) (-> self current-frame-save))
|
||||
(set! (-> self frames) (-> self frames-save))
|
||||
(set! (-> self time-of-day) (-> self time-of-day-save))
|
||||
(let ((v1-30 (-> *display* bg-clock frame-counter))
|
||||
(a0-18 #x69780)
|
||||
(a1-8 (/ (the int (* 1080000.0 (-> self time-of-day))) 60))
|
||||
)
|
||||
(set! (-> *display* bg-clock frame-counter) (+ (- v1-30 (the-as time-frame (mod v1-30 a0-18))) a0-18 a1-8))
|
||||
)
|
||||
(update-counters)
|
||||
(kill-particles (-> self sun))
|
||||
(kill-particles (-> self green-sun))
|
||||
(kill-particles (-> self moon))
|
||||
(kill-particles (-> self day-star))
|
||||
(set! (-> self sun-count) 0)
|
||||
(set! (-> self green-sun-count) 0)
|
||||
(set! (-> self moon-count) 0)
|
||||
(set! (-> self day-star-count) 0)
|
||||
(-> self hours)
|
||||
)
|
||||
(('ratio)
|
||||
(-> self time-ratio)
|
||||
)
|
||||
(('day-length)
|
||||
(if (= (-> self time-ratio) 0.0)
|
||||
0
|
||||
(/ 25920000.0 (-> self time-ratio))
|
||||
)
|
||||
)
|
||||
(('time-frame)
|
||||
(-> self frames)
|
||||
)
|
||||
(('time-of-day)
|
||||
(-> self time-of-day)
|
||||
)
|
||||
(('time-of-day-norm)
|
||||
(* 0.041666668 (-> self time-of-day))
|
||||
)
|
||||
(('hour)
|
||||
(-> self hours)
|
||||
)
|
||||
(('minute)
|
||||
(-> self minutes)
|
||||
)
|
||||
(('second)
|
||||
(-> self seconds)
|
||||
)
|
||||
(('dest-clock-ratio-set)
|
||||
(set! (-> self dest-time-ratio) (the-as float (-> block param 0)))
|
||||
(let ((f0-23 (-> self time-ratio))
|
||||
(f1-4 (-> self dest-time-ratio))
|
||||
(f2-1 (/ 300.0 (the float (-> block param 1))))
|
||||
)
|
||||
(set! (-> self dest-time-delta) (* (fabs (- f0-23 f1-4)) f2-1 (-> *display* real-clock seconds-per-frame)))
|
||||
)
|
||||
(-> self dest-time-ratio)
|
||||
)
|
||||
)
|
||||
)
|
||||
:code (behavior ()
|
||||
(until #f
|
||||
(if (!= (-> self time-ratio) 0.0)
|
||||
(set! (-> *time-of-day-context* mode) (time-of-day-palette-id unk3))
|
||||
)
|
||||
(when (!= (-> self time-ratio) (-> self dest-time-ratio))
|
||||
(seek! (-> self time-ratio) (-> self dest-time-ratio) (-> self dest-time-delta))
|
||||
(update-rates! (-> *display* bg-clock) (-> self time-ratio))
|
||||
)
|
||||
(update-counters)
|
||||
(suspend)
|
||||
)
|
||||
#f
|
||||
)
|
||||
:post time-of-day-update
|
||||
)
|
||||
|
||||
(defbehavior init-time-of-day time-of-day-proc ()
|
||||
"Initialize the time-of-day process"
|
||||
(stack-size-set! (-> self main-thread) 128)
|
||||
(set! (-> self hours) 0)
|
||||
(set! (-> self minutes) 0)
|
||||
(set! (-> self seconds) 0)
|
||||
(set! (-> self frames) (the-as uint 0))
|
||||
(set! (-> self time-of-day) 0.0)
|
||||
(cond
|
||||
(*time-of-day-fast*
|
||||
(set! (-> self time-ratio) 60.0)
|
||||
(set! (-> self dest-time-ratio) 60.0)
|
||||
)
|
||||
(else
|
||||
(set! (-> self time-ratio) 1.0)
|
||||
(set! (-> self dest-time-ratio) 1.0)
|
||||
)
|
||||
)
|
||||
(update-rates! (-> *display* bg-clock) (-> self time-ratio))
|
||||
(set! (-> self sun) (create-launch-control (-> *part-group-id-table* 3) self))
|
||||
(set! (-> self green-sun) (create-launch-control (-> *part-group-id-table* 4) self))
|
||||
(set! (-> self moon) (create-launch-control (-> *part-group-id-table* 5) self))
|
||||
(set! (-> self day-star) (create-launch-control (-> *part-group-id-table* 6) self))
|
||||
(set! (-> self event-hook) (-> time-of-day-tick event))
|
||||
(go time-of-day-tick)
|
||||
)
|
||||
|
||||
(defun start-time-of-day ()
|
||||
"Start a new time of day process, killing old one if needed."
|
||||
(kill-by-name "time-of-day-proc" *active-pool*)
|
||||
(set! *time-of-day*
|
||||
(process-spawn time-of-day-proc :init init-time-of-day :name "time-of-day-proc" :to *bg-pool*)
|
||||
)
|
||||
*time-of-day*
|
||||
)
|
||||
|
||||
(defun time-of-day-setup ((arg0 symbol))
|
||||
#f
|
||||
)
|
||||
"Check if the time of day ratio is set up or not. If arg0 = #t, then set it if needed."
|
||||
(when arg0
|
||||
(when (= (-> *time-of-day* 0 time-ratio) 0.0)
|
||||
(send-event (ppointer->process *time-of-day*) 'change 'ratio (if *time-of-day-fast*
|
||||
#x42700000
|
||||
#x3f800000
|
||||
)
|
||||
)
|
||||
(set! (-> *time-of-day-context* mode) (time-of-day-palette-id unk3))
|
||||
)
|
||||
)
|
||||
(!= (-> *time-of-day* 0 time-ratio) 0.0)
|
||||
)
|
||||
|
||||
;; ERROR: function was not converted to expressions. Cannot decompile.
|
||||
|
||||
;; ERROR: function was not converted to expressions. Cannot decompile.
|
||||
|
||||
(defun init-time-of-day-context ((arg0 time-of-day-context))
|
||||
"Set up lighting data to defaults"
|
||||
(set-vector! (-> arg0 title-light-group dir0 color) 0.82 0.82 0.82 1.0)
|
||||
(set-vector! (-> arg0 title-light-group dir1 color) 2.0 2.0 2.0 1.0)
|
||||
(set-vector! (-> arg0 title-light-group ambi color) 0.4 0.4 0.4 1.0)
|
||||
(set! (-> arg0 title-light-group dir0 extra x) 1.0)
|
||||
(set! (-> arg0 title-light-group dir1 extra x) 1.0)
|
||||
(set! (-> arg0 title-light-group ambi extra x) 1.0)
|
||||
(set-vector! (-> arg0 rim-light-group dir0 color) 0.0 1.9 2.0 1.0)
|
||||
(set-vector! (-> arg0 rim-light-group dir1 color) 0.0 1.9 2.0 1.0)
|
||||
(set-vector! (-> arg0 rim-light-group dir2 color) 0.0 1.9 2.0 1.0)
|
||||
(set-vector! (-> arg0 rim-light-group ambi color) 0.0 0.0 0.3 1.0)
|
||||
(set! (-> arg0 rim-light-group dir0 extra x) 1.0)
|
||||
(set! (-> arg0 rim-light-group dir1 extra x) 1.0)
|
||||
(set! (-> arg0 rim-light-group dir2 extra x) 1.0)
|
||||
(set! (-> arg0 rim-light-group ambi extra x) 1.0)
|
||||
(set-vector! (-> arg0 rim-light-group2 dir0 color) 3.0 3.0 3.0 1.0)
|
||||
(set-vector! (-> arg0 rim-light-group2 dir1 color) 3.0 3.0 3.0 1.0)
|
||||
(set-vector! (-> arg0 rim-light-group2 dir2 color) 3.0 3.0 3.0 1.0)
|
||||
(set-vector! (-> arg0 rim-light-group2 ambi color) 0.0 0.0 0.0 1.0)
|
||||
(set! (-> arg0 rim-light-group2 dir0 extra x) 1.0)
|
||||
(set! (-> arg0 rim-light-group2 dir1 extra x) 1.0)
|
||||
(set! (-> arg0 rim-light-group2 dir2 extra x) 1.0)
|
||||
(set! (-> arg0 rim-light-group2 ambi extra x) 1.0)
|
||||
(set-vector! (-> arg0 rim-light-group3 dir0 color) 1.0 0.0 0.0 1.0)
|
||||
(set-vector! (-> arg0 rim-light-group3 dir1 color) 1.0 0.0 0.0 1.0)
|
||||
(set-vector! (-> arg0 rim-light-group3 dir2 color) 1.0 0.0 0.0 1.0)
|
||||
(set-vector! (-> arg0 rim-light-group3 ambi color) 0.0 0.0 0.0 1.0)
|
||||
(set! (-> arg0 rim-light-group3 dir0 extra x) 1.0)
|
||||
(set! (-> arg0 rim-light-group3 dir1 extra x) 1.0)
|
||||
(set! (-> arg0 rim-light-group3 dir2 extra x) 1.0)
|
||||
(set! (-> arg0 rim-light-group3 ambi extra x) 1.0)
|
||||
(set-vector! (-> arg0 filter-color) 1.0 1.0 1.0 1.0)
|
||||
(set! (-> arg0 overide-enable) #f)
|
||||
(when *debug-segment*
|
||||
(mem-copy! (the-as pointer *overide-mood-color-table*) (the-as pointer *no-cloud-mood-color-table*) 256)
|
||||
(mem-copy! (the-as pointer *overide-mood-fog-table*) (the-as pointer *no-cloud-clear-mood-fog-table*) 384)
|
||||
(dotimes (v1-32 8)
|
||||
(set! (-> *overide-mood-color-table* data v1-32 lgt-color w) 1.0)
|
||||
(set! (-> *overide-mood-color-table* data v1-32 amb-color w) 1.0)
|
||||
(set! (-> *overide-mood-fog-table* data v1-32 fog-color w) 1.0)
|
||||
(set! (-> *overide-mood-fog-table* data v1-32 fog-dists x)
|
||||
(* 0.00024414062 (-> *overide-mood-fog-table* data v1-32 fog-dists x))
|
||||
)
|
||||
(set! (-> *overide-mood-fog-table* data v1-32 fog-dists y)
|
||||
(* 0.00024414062 (-> *overide-mood-fog-table* data v1-32 fog-dists y))
|
||||
)
|
||||
(set-vector! (-> *time-of-day-context* times v1-32) 1.0 1.0 1.0 1.0)
|
||||
)
|
||||
#f
|
||||
)
|
||||
)
|
||||
|
||||
(defun set-filter-color! ((arg0 float) (arg1 float) (arg2 float))
|
||||
"Set RGB of filter."
|
||||
(set-vector! (-> *time-of-day-context* filter-color) arg0 arg1 arg2 1.0)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defun tod-madd! ((arg0 vector) (arg1 vector) (arg2 vector))
|
||||
"Multiply-add"
|
||||
(local-vars (v0-0 float))
|
||||
(rlet ((acc :class vf)
|
||||
(vf0 :class vf)
|
||||
(vf4 :class vf)
|
||||
(vf5 :class vf)
|
||||
(vf6 :class vf)
|
||||
)
|
||||
(init-vf0-vector)
|
||||
(.mov vf6 arg2)
|
||||
(.lvf vf4 (&-> arg0 quad))
|
||||
(.lvf vf5 (&-> arg1 quad))
|
||||
(.mul.w.vf acc vf4 vf0)
|
||||
(.add.mul.x.vf vf4 vf5 vf6 acc)
|
||||
(.svf (&-> arg0 quad) vf4)
|
||||
(.mov v0-0 vf4)
|
||||
v0-0
|
||||
)
|
||||
)
|
||||
|
||||
(defun update-environment-colors ((arg0 time-of-day-context))
|
||||
(let* ((v1-0 (-> arg0 light-group))
|
||||
(s4-0 (-> v1-0 0 ambi color))
|
||||
(s5-0 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
(let ((s2-0 (-> arg0 current-prt-color))
|
||||
(s3-0 (-> arg0 current-env-color))
|
||||
)
|
||||
(vector4-lerp! s5-0 (-> v1-0 0 dir0 color) (-> v1-0 0 dir1 color) (-> v1-0 0 dir1 extra x))
|
||||
(when (and (= (-> s2-0 x) 0.0) (= (-> s2-0 y) 0.0) (= (-> s2-0 z) 0.0))
|
||||
(set! (-> s2-0 x) (* 0.5 (+ (-> s4-0 x) (* 0.5 (+ (-> s4-0 x) (-> s5-0 x))))))
|
||||
(set! (-> s2-0 y) (* 0.5 (+ (-> s4-0 y) (* 0.5 (+ (-> s4-0 y) (-> s5-0 y))))))
|
||||
(set! (-> s2-0 z) (* 0.5 (+ (-> s4-0 z) (* 0.5 (+ (-> s4-0 z) (-> s5-0 z))))))
|
||||
(set! (-> s2-0 w) 1.0)
|
||||
)
|
||||
(when (and (= (-> s3-0 x) 0.0) (= (-> s3-0 y) 0.0) (= (-> s3-0 z) 0.0))
|
||||
(set! (-> s3-0 x) (* 48.0 (+ (-> s5-0 x) (* 0.5 (+ (-> s4-0 x) (-> s5-0 x))))))
|
||||
(set! (-> s3-0 y) (* 48.0 (+ (-> s5-0 y) (* 0.5 (+ (-> s4-0 y) (-> s5-0 y))))))
|
||||
(set! (-> s3-0 z) (* 48.0 (+ (-> s5-0 z) (* 0.5 (+ (-> s4-0 z) (-> s5-0 z))))))
|
||||
(set! (-> s3-0 w) 128.0)
|
||||
)
|
||||
)
|
||||
(let* ((f0-23 (fmax (fmax (-> s4-0 x) (-> s4-0 y)) (-> s4-0 z)))
|
||||
(f2-14 (fmax (fmax (-> s5-0 x) (-> s5-0 y)) (-> s5-0 z)))
|
||||
(f0-27 (fmin 0.85 (- 1.0 (/ (* 0.5 f2-14) (+ f0-23 f2-14)))))
|
||||
(v0-1 (-> arg0 current-shadow-color))
|
||||
)
|
||||
(set! (-> v0-1 x) f0-27)
|
||||
(set! (-> v0-1 y) f0-27)
|
||||
(set! (-> v0-1 z) f0-27)
|
||||
(set! (-> v0-1 w) 1.0)
|
||||
v0-1
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defun update-time-of-day ((arg0 time-of-day-context))
|
||||
(with-pp
|
||||
(set! (-> arg0 exterior-level) #f)
|
||||
(init-weather! *mood-control*)
|
||||
(update-colors-for-time *sky-work* (-> arg0 time))
|
||||
(cond
|
||||
((-> arg0 overide-enable)
|
||||
(mem-copy! (the-as pointer (-> *overide-table* mood-fog-table)) (the-as pointer *overide-mood-fog-table*) 384)
|
||||
(mem-copy!
|
||||
(the-as pointer (-> *overide-table* mood-color-table))
|
||||
(the-as pointer *overide-mood-color-table*)
|
||||
256
|
||||
)
|
||||
(dotimes (v1-7 8)
|
||||
(vector-float*!
|
||||
(the-as vector (-> *overide-table* mood-fog-table data v1-7))
|
||||
(the-as vector (-> *overide-table* mood-fog-table data v1-7))
|
||||
(-> *overide-table* mood-fog-table data v1-7 fog-color w)
|
||||
)
|
||||
(vector-float*!
|
||||
(the-as vector (-> *overide-table* mood-color-table data v1-7))
|
||||
(the-as vector (-> *overide-table* mood-color-table data v1-7))
|
||||
(-> *overide-table* mood-color-table data v1-7 lgt-color w)
|
||||
)
|
||||
(vector-float*!
|
||||
(the-as vector (+ (the-as uint (-> *overide-table* mood-color-table data 0 amb-color)) (* v1-7 32)))
|
||||
(the-as vector (+ (the-as uint (-> *overide-table* mood-color-table data 0 amb-color)) (* v1-7 32)))
|
||||
(-> *overide-table* mood-color-table data v1-7 amb-color w)
|
||||
)
|
||||
(set! (-> *overide-table* mood-fog-table data v1-7 fog-color w) 128.0)
|
||||
(set! (-> *overide-table* mood-color-table data v1-7 lgt-color w) 0.0)
|
||||
(set! (-> *overide-table* mood-fog-table data v1-7 fog-dists x)
|
||||
(* 4096.0 (-> *overide-table* mood-fog-table data v1-7 fog-dists x))
|
||||
)
|
||||
(set! (-> *overide-table* mood-fog-table data v1-7 fog-dists y)
|
||||
(* 4096.0 (-> *overide-table* mood-fog-table data v1-7 fog-dists y))
|
||||
)
|
||||
)
|
||||
(let ((s5-0 (-> *level* level-default mood-context)))
|
||||
(clear-mood-times s5-0)
|
||||
(update-mood-exterior s5-0 *overide-table* (-> arg0 time) 10)
|
||||
(update-mood-itimes s5-0)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(let ((s5-1 *mood-control*))
|
||||
(set! (-> arg0 current-clouds cloud-min) (-> s5-1 mood-clouds cloud-min))
|
||||
(set! (-> arg0 current-clouds cloud-max) (-> s5-1 mood-clouds cloud-max))
|
||||
(let ((s4-0 (-> *level* level-default mood-context)))
|
||||
(clear-mood-times s4-0)
|
||||
(update-mood-exterior s4-0 s5-1 (-> arg0 time) 10)
|
||||
(update-mood-itimes s4-0)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(vector-float*! (-> arg0 filter) (-> arg0 filter-color) (-> arg0 filter-color w))
|
||||
(set! (-> arg0 sky) #f)
|
||||
(set! (-> arg0 special-mood) #f)
|
||||
(set! (-> arg0 use-camera-other) #f)
|
||||
(set! (-> arg0 target-interp) 0.0)
|
||||
(let ((f0-16 4096000.0))
|
||||
(dotimes (v1-19 (-> *level* length))
|
||||
(let ((a0-52 (-> *level* level v1-19)))
|
||||
(when (= (-> a0-52 status) 'active)
|
||||
(if (logtest? (-> a0-52 info level-flags) (level-flags lf9))
|
||||
(set! (-> arg0 sky) #t)
|
||||
)
|
||||
(if (and (= (-> a0-52 display?) 'display) (-> a0-52 info special-mood))
|
||||
(set! (-> arg0 special-mood) (the-as basic (-> a0-52 info special-mood)))
|
||||
)
|
||||
(if (logtest? (-> a0-52 info level-flags) (level-flags use-camera-other))
|
||||
(set! (-> arg0 use-camera-other) (the-as basic #t))
|
||||
)
|
||||
(set! f0-16 (fmin f0-16 (-> a0-52 info fog-height)))
|
||||
)
|
||||
)
|
||||
)
|
||||
(if (!= (-> *time-of-day-context* special-mood) 'desert)
|
||||
(set-fog-height! f0-16)
|
||||
)
|
||||
)
|
||||
(if (-> arg0 sky)
|
||||
(set! (-> (&-> *level* level-default texture-anim-array 9) 0) *sky-texture-anim-array*)
|
||||
(set! (-> (&-> *level* level-default texture-anim-array 9) 0) #f)
|
||||
)
|
||||
(let ((s5-2 (level-get-target-inside *level*)))
|
||||
(dotimes (s4-1 10)
|
||||
(let ((s3-0 (-> *level* level s4-1)))
|
||||
(case (-> s3-0 status)
|
||||
(('active 'loaded 'shutdown 'special)
|
||||
(when (not (paused?))
|
||||
(cond
|
||||
((not s5-2)
|
||||
(set! (-> arg0 interp s4-1) 1.0)
|
||||
)
|
||||
((= s3-0 s5-2)
|
||||
(if *teleport*
|
||||
(set! (-> arg0 interp s4-1) 1.0)
|
||||
(set! (-> arg0 interp s4-1) (fmin 1.0 (+ 0.0166 (-> arg0 interp s4-1))))
|
||||
)
|
||||
)
|
||||
(*teleport*
|
||||
(set! (-> arg0 interp s4-1) 0.0)
|
||||
)
|
||||
(else
|
||||
(set! (-> arg0 interp s4-1) (fmax 0.0 (+ -0.0166 (-> arg0 interp s4-1))))
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((s2-0 (-> pp clock)))
|
||||
(set! (-> pp clock) (-> *display* real-clock))
|
||||
(set! (-> s3-0 mood-func) (the-as (function mood-context float int none) (-> s3-0 info mood-func value)))
|
||||
(clear-mood-times (-> s3-0 mood-context))
|
||||
(if (nonzero? (-> s3-0 mood-func))
|
||||
((-> s3-0 mood-func) (-> s3-0 mood-context) (-> arg0 time) s4-1)
|
||||
(update-mood-default (-> s3-0 mood-context) (-> arg0 time) s4-1)
|
||||
)
|
||||
(when (-> arg0 overide-enable)
|
||||
(let ((s1-0 (new 'stack-no-clear 'structure)))
|
||||
(dotimes (s0-0 8)
|
||||
(let ((a1-59 (-> s3-0 mood-context times s0-0)))
|
||||
(vector-float*! (the-as vector s1-0) (-> arg0 times s0-0) (-> arg0 times s0-0 w))
|
||||
(vector4-mul! (the-as vector4 a1-59) (the-as vector4 a1-59) (the-as vector4 s1-0))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(update-mood-itimes (-> s3-0 mood-context))
|
||||
(set! (-> pp clock) s2-0)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(set! (-> arg0 interp s4-1) 0.0)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(if (and (-> arg0 exterior-level) (!= (-> *mood-control* lightning-flash) 0.0))
|
||||
(set! (-> *display* force-sync) (the-as uint 2))
|
||||
)
|
||||
(let ((f0-29 0.0))
|
||||
(dotimes (v1-91 10)
|
||||
(+! f0-29 (-> arg0 interp v1-91))
|
||||
)
|
||||
(when (!= f0-29 0.0)
|
||||
(dotimes (v1-95 10)
|
||||
(set! (-> arg0 interp v1-95) (/ (-> arg0 interp v1-95) f0-29))
|
||||
)
|
||||
(let ((v1-98 (-> arg0 current-fog)))
|
||||
(dotimes (a0-83 103)
|
||||
;; og:preserve-this
|
||||
(set! (-> (the-as (pointer int128) (+ (* a0-83 16) (the-as int v1-98)))) (the int128 0))
|
||||
)
|
||||
)
|
||||
(let* ((s5-3 (-> arg0 current-fog))
|
||||
(s4-2 (-> *mood-control* range))
|
||||
(v1-103 (level-get-target-inside *level*))
|
||||
(s3-1 (if v1-103
|
||||
(-> v1-103 index)
|
||||
0
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> s4-2 quad) (the-as uint128 0))
|
||||
(set! (-> arg0 max-rain) 0.0)
|
||||
(set! (-> arg0 fog-mult) 0.0)
|
||||
(set! (-> arg0 ocean-alpha) 0.0)
|
||||
(dotimes (s2-1 10)
|
||||
(let ((f30-0 (-> arg0 interp s2-1))
|
||||
(s1-1 (-> *level* level s2-1))
|
||||
)
|
||||
(when (!= f30-0 0.0)
|
||||
(let ((a2-23 (-> s1-1 mood-context)))
|
||||
(vector4-array-madd!
|
||||
(the-as (inline-array vector4) s5-3)
|
||||
(the-as (inline-array vector4) s5-3)
|
||||
(the-as (inline-array vector4) a2-23)
|
||||
f30-0
|
||||
7
|
||||
)
|
||||
)
|
||||
(dotimes (s0-1 8)
|
||||
(let ((a2-24 (-> s1-1 mood-context light-group s0-1))
|
||||
(a1-63 (-> arg0 light-group s0-1))
|
||||
)
|
||||
(light-group-madd! a1-63 (the-as (pointer light-group) a1-63) a2-24 f30-0)
|
||||
)
|
||||
)
|
||||
(let ((a2-25 (-> s1-1 info mood-range)))
|
||||
(vector4-madd! (the-as vector4 s4-2) (the-as vector4 s4-2) (the-as vector4 a2-25) f30-0)
|
||||
)
|
||||
(+! (-> arg0 max-rain) (* (-> s1-1 info max-rain) f30-0))
|
||||
(+! (-> arg0 fog-mult) (* (-> s1-1 info fog-mult) f30-0))
|
||||
(+! (-> arg0 ocean-alpha) (* (-> s1-1 info ocean-alpha) f30-0))
|
||||
(when (= s2-1 s3-1)
|
||||
(dotimes (v1-126 8)
|
||||
(let ((a0-92 (-> s1-1 mood-context light-group v1-126))
|
||||
(a1-68 (-> arg0 light-group v1-126))
|
||||
)
|
||||
(dotimes (a2-26 4)
|
||||
(set! (-> a1-68 lights a2-26 extra y) (-> a0-92 lights a2-26 extra y))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(dotimes (s5-4 8)
|
||||
(dotimes (s4-3 3)
|
||||
(let ((v1-135 (+ (+ (* 48 s4-3) 156 (* 192 s5-4)) (the-as int arg0))))
|
||||
(vector-normalize! (the-as vector (+ v1-135 0)) 1.0)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(if (and (-> arg0 overide-enable) (!= (-> *time-of-day-context* mode) 8))
|
||||
(mem-copy!
|
||||
(the-as pointer (-> arg0 current-fog))
|
||||
(the-as
|
||||
pointer
|
||||
(-> *overide-table*
|
||||
mood-fog-table
|
||||
data
|
||||
(the-as uint (logand (-> *time-of-day-context* mode) (time-of-day-palette-id unk0 unk1 unk2)))
|
||||
)
|
||||
)
|
||||
48
|
||||
)
|
||||
)
|
||||
(let ((f30-1 (-> *blit-displays-work* slow-time))
|
||||
(a1-76 (new 'stack-no-clear 'vector))
|
||||
(s5-5 (-> arg0 current-fog))
|
||||
)
|
||||
(let ((f28-0 f30-1))
|
||||
(dotimes (v1-151 4)
|
||||
(set! f28-0 (* f28-0 f30-1))
|
||||
)
|
||||
(set-vector! a1-76 0.0 48.0 128.0 128.0)
|
||||
(vector4-lerp! (-> s5-5 fog-color) a1-76 (-> s5-5 fog-color) f30-1)
|
||||
(set! (-> s5-5 fog-dists x) (lerp 131072.0 (-> s5-5 fog-dists x) f30-1))
|
||||
(set! (-> s5-5 fog-dists y) (lerp 819200.0 (-> s5-5 fog-dists y) f28-0))
|
||||
)
|
||||
(set! (-> s5-5 fog-dists z) (lerp 199.0 (-> s5-5 fog-dists z) f30-1))
|
||||
(set! (-> s5-5 fog-dists w) (lerp 64.0 (-> s5-5 fog-dists w) f30-1))
|
||||
)
|
||||
(update-environment-colors arg0)
|
||||
(let ((a0-109 (-> arg0 current-fog))
|
||||
(v1-156 *fog-texture-work*)
|
||||
)
|
||||
(let ((a1-81 (-> a0-109 fog-color)))
|
||||
(set! *fog-color*
|
||||
(new 'static 'rgba :r (the int (-> a1-81 x)) :g (the int (-> a1-81 y)) :b (the int (-> a1-81 z)))
|
||||
)
|
||||
(set! (-> v1-156 color) (new 'static 'rgba
|
||||
:r (the int (-> a1-81 x))
|
||||
:r (the int (-> a1-81 x))
|
||||
:g (the int (-> a1-81 y))
|
||||
:b (the int (-> a1-81 z))
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((a1-86 (-> a0-109 erase-color)))
|
||||
(set! (-> arg0 erase-color)
|
||||
(new 'static 'rgba :a #x80 :b (the int (-> a1-86 z)) :g (the int (-> a1-86 y)) :r (the int (-> a1-86 x)))
|
||||
)
|
||||
)
|
||||
(let ((f0-73 (-> a0-109 fog-dists x))
|
||||
(f1-18 (-> a0-109 fog-dists y))
|
||||
)
|
||||
(let ((f3-0 (-> a0-109 fog-dists z))
|
||||
(f2-2 (-> a0-109 fog-dists w))
|
||||
)
|
||||
(set! (-> *math-camera* fog-start) f0-73)
|
||||
(set! (-> *math-camera* fog-end) f1-18)
|
||||
(set! (-> *math-camera* fog-max) f3-0)
|
||||
(set! (-> *math-camera* fog-min) f2-2)
|
||||
(set! (-> v1-156 alpha-near) (* 0.003921569 (the float (- 255 (the int f3-0)))))
|
||||
(set! (-> v1-156 alpha-far) (* 0.003921569 (the float (- 255 (the int f2-2)))))
|
||||
)
|
||||
(set! (-> v1-156 alpha-delta) (- (-> v1-156 alpha-far) (-> v1-156 alpha-near)))
|
||||
(set! (-> v1-156 fog-near) f0-73)
|
||||
(set! (-> v1-156 fog-far) f1-18)
|
||||
(set! (-> v1-156 fog-delta) (- f1-18 f0-73))
|
||||
)
|
||||
)
|
||||
(set-cloud-minmax! (-> arg0 current-clouds cloud-min) (-> arg0 current-clouds cloud-max))
|
||||
(reset! *palette-fade-controls*)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
(defun calc-fade-from-fog ((arg0 vector))
|
||||
(let* ((f0-0 (vector-vector-distance (math-camera-pos) arg0))
|
||||
(v1-1 (-> *time-of-day-context* current-fog))
|
||||
(f1-0 (-> v1-1 fog-dists x))
|
||||
(f2-0 (-> v1-1 fog-dists y))
|
||||
(f3-1 (* 0.003921569 (-> v1-1 fog-dists w)))
|
||||
(f4-2 (* 0.003921569 (-> v1-1 fog-dists z)))
|
||||
)
|
||||
(+ f4-2 (* (fmax 0.0 (fmin 1.0 (/ (- f0-0 f1-0) (- f2-0 f1-0)))) (- f3-1 f4-2)))
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod set-fade! ((this palette-fade-controls) (arg0 int) (arg1 float) (arg2 float) (arg3 vector))
|
||||
(cond
|
||||
((and (>= arg0 0) (< arg0 8))
|
||||
(let ((v1-3 (-> this control arg0)))
|
||||
(when (< arg2 (-> v1-3 actor-dist))
|
||||
(if arg3
|
||||
(set! (-> v1-3 trans quad) (-> arg3 quad))
|
||||
)
|
||||
(set! (-> v1-3 fade) (fmax 0.0 (fmin 1.993 arg1)))
|
||||
(set! (-> v1-3 actor-dist) arg2)
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(format 0 "ERROR: Bogus palette-fade-control index!~%")
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod reset! ((this palette-fade-controls))
|
||||
(countdown (v1-0 8)
|
||||
(let ((a1-2 (-> this control v1-0)))
|
||||
(set! (-> a1-2 fade) 0.0)
|
||||
(set! (-> a1-2 actor-dist) 4096000000.0)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(start-time-of-day)
|
||||
|
||||
@@ -5,15 +5,916 @@
|
||||
;; name in dgo: weather-part
|
||||
;; dgos: GAME
|
||||
|
||||
;; stubs
|
||||
(defun update-rain ((a0 float) (a1 vector) (a2 vector))
|
||||
(none)
|
||||
)
|
||||
|
||||
(defun update-snow ((a0 float) (a1 vector) (a2 vector))
|
||||
(none)
|
||||
)
|
||||
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(defpartgroup group-rain-screend-drop-real
|
||||
:id 1
|
||||
:flags (sp2)
|
||||
:bounds (static-bspherem 0 0 0 16)
|
||||
:parts ((sp-item 23 :binding 19)
|
||||
(sp-item 19 :flags (sp2 sp3) :binding 20)
|
||||
(sp-item 19 :flags (sp2 sp3) :binding 20)
|
||||
(sp-item 19 :flags (sp2 sp3) :binding 20)
|
||||
(sp-item 19 :flags (sp2 sp3) :binding 20)
|
||||
(sp-item 19 :flags (sp2 sp3) :binding 20)
|
||||
(sp-item 19 :flags (sp2 sp3) :binding 20)
|
||||
(sp-item 19 :flags (sp2 sp3) :binding 20)
|
||||
(sp-item 19 :flags (sp2 sp3) :binding 20)
|
||||
(sp-item 19 :flags (sp2 sp3) :binding 20)
|
||||
(sp-item 19 :flags (sp2 sp3) :binding 20)
|
||||
(sp-item 19 :flags (sp2 sp3) :binding 20)
|
||||
(sp-item 19 :flags (sp2 sp3) :binding 20)
|
||||
(sp-item 19 :flags (sp2 sp3) :binding 20)
|
||||
(sp-item 19 :flags (sp2 sp3) :binding 20)
|
||||
(sp-item 19 :flags (sp2 sp3) :binding 20)
|
||||
(sp-item 19 :flags (sp2 sp3) :binding 20)
|
||||
(sp-item 20 :flags (sp2 sp3))
|
||||
(sp-item 20 :flags (sp2 sp3))
|
||||
(sp-item 20 :flags (sp2 sp3))
|
||||
(sp-item 20 :flags (sp2 sp3))
|
||||
(sp-item 20 :flags (sp2 sp3))
|
||||
(sp-item 20 :flags (sp2 sp3))
|
||||
(sp-item 20 :flags (sp2 sp3))
|
||||
(sp-item 20 :flags (sp2 sp3))
|
||||
(sp-item 20 :flags (sp2 sp3))
|
||||
(sp-item 20 :flags (sp2 sp3))
|
||||
(sp-item 20 :flags (sp2 sp3))
|
||||
(sp-item 20 :flags (sp2 sp3))
|
||||
(sp-item 20 :flags (sp2 sp3))
|
||||
(sp-item 20 :flags (sp2 sp3))
|
||||
(sp-item 20 :flags (sp2 sp3))
|
||||
(sp-item 20 :flags (sp2 sp3))
|
||||
(sp-item 24 :binding 21)
|
||||
(sp-item 21 :flags (sp2 sp3) :binding 22)
|
||||
(sp-item 21 :flags (sp2 sp3) :binding 22)
|
||||
(sp-item 21 :flags (sp2 sp3) :binding 22)
|
||||
(sp-item 21 :flags (sp2 sp3) :binding 22)
|
||||
(sp-item 21 :flags (sp2 sp3) :binding 22)
|
||||
(sp-item 21 :flags (sp2 sp3) :binding 22)
|
||||
(sp-item 21 :flags (sp2 sp3) :binding 22)
|
||||
(sp-item 21 :flags (sp2 sp3) :binding 22)
|
||||
(sp-item 21 :flags (sp2 sp3) :binding 22)
|
||||
(sp-item 21 :flags (sp2 sp3) :binding 22)
|
||||
(sp-item 21 :flags (sp2 sp3) :binding 22)
|
||||
(sp-item 21 :flags (sp2 sp3) :binding 22)
|
||||
(sp-item 21 :flags (sp2 sp3) :binding 22)
|
||||
(sp-item 21 :flags (sp2 sp3) :binding 22)
|
||||
(sp-item 21 :flags (sp2 sp3) :binding 22)
|
||||
(sp-item 21 :flags (sp2 sp3) :binding 22)
|
||||
(sp-item 22 :flags (sp2 sp3))
|
||||
(sp-item 22 :flags (sp2 sp3))
|
||||
(sp-item 22 :flags (sp2 sp3))
|
||||
(sp-item 22 :flags (sp2 sp3))
|
||||
(sp-item 22 :flags (sp2 sp3))
|
||||
(sp-item 22 :flags (sp2 sp3))
|
||||
(sp-item 22 :flags (sp2 sp3))
|
||||
(sp-item 22 :flags (sp2 sp3))
|
||||
(sp-item 22 :flags (sp2 sp3))
|
||||
(sp-item 22 :flags (sp2 sp3))
|
||||
(sp-item 22 :flags (sp2 sp3))
|
||||
(sp-item 22 :flags (sp2 sp3))
|
||||
(sp-item 22 :flags (sp2 sp3))
|
||||
(sp-item 22 :flags (sp2 sp3))
|
||||
(sp-item 22 :flags (sp2 sp3))
|
||||
(sp-item 22 :flags (sp2 sp3))
|
||||
)
|
||||
)
|
||||
|
||||
(define group-rain-screend-drop (-> *part-group-id-table* 1))
|
||||
|
||||
(defpart 24
|
||||
:init-specs ((:texture (starflash level-default-sprite))
|
||||
(:num 0.1)
|
||||
(:x (meters -4.5) (meters 9))
|
||||
(:y (meters -3) (meters 6))
|
||||
(:scale-x (meters 2.5))
|
||||
(:rot-z (degrees 0) (degrees 360))
|
||||
(:scale-y :copy scale-x)
|
||||
(:r 128.0)
|
||||
(:g 128.0)
|
||||
(:b 128.0)
|
||||
(:a 12.0)
|
||||
(:scalevel-x (meters 0.16666667))
|
||||
(:scalevel-y :copy scalevel-x)
|
||||
(:fade-a -0.8)
|
||||
(:timer (seconds 0.035))
|
||||
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14))
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 21
|
||||
:init-specs ((:texture (lakedrop level-default-sprite))
|
||||
(:num 1.0)
|
||||
(:scale-x (meters 1.5))
|
||||
(:scale-y :copy scale-x)
|
||||
(:r 128.0)
|
||||
(:g 128.0)
|
||||
(:b 255.0)
|
||||
(:a 20.0)
|
||||
(:scalevel-x (meters 0.033333335))
|
||||
(:scalevel-y :copy scalevel-x)
|
||||
(:fade-a -0.8)
|
||||
(:accel-y (meters -0.00066666666))
|
||||
(:timer (seconds 0.9))
|
||||
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14))
|
||||
(:next-time (seconds 0.05))
|
||||
(:next-launcher 25)
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 25
|
||||
:init-specs ((:scalevel-x (meters 0.004166667)) (:scalevel-y :copy scalevel-x) (:fade-a -0.06666667))
|
||||
)
|
||||
|
||||
(defpart 22
|
||||
:init-specs ((:num 1.0)
|
||||
(:rot-x 12)
|
||||
(:r 4096.0)
|
||||
(:g 3276.8)
|
||||
(:b 3276.8)
|
||||
(:fade-r 6.068148)
|
||||
(:fade-g 68.26667)
|
||||
(:fade-b 3.034074)
|
||||
(:accel-y (meters -0.00066666666))
|
||||
(:timer (seconds 0.9))
|
||||
(:flags (distort))
|
||||
(:next-time (seconds 0.1))
|
||||
(:next-launcher 26)
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 26
|
||||
:init-specs ((:fade-g -5.1200004))
|
||||
)
|
||||
|
||||
(defpart 23
|
||||
:init-specs ((:texture (starflash level-default-sprite))
|
||||
(:num 0.1)
|
||||
(:x (meters -4.5) (meters 9))
|
||||
(:y (meters -3) (meters 6))
|
||||
(:scale-x (meters 4))
|
||||
(:rot-z (degrees 0) (degrees 360))
|
||||
(:scale-y :copy scale-x)
|
||||
(:r 128.0)
|
||||
(:g 128.0)
|
||||
(:b 128.0)
|
||||
(:a 12.0)
|
||||
(:scalevel-x (meters 0.26666668))
|
||||
(:scalevel-y :copy scalevel-x)
|
||||
(:fade-a -0.8)
|
||||
(:timer (seconds 0.035))
|
||||
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14))
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 19
|
||||
:init-specs ((:texture (lakedrop level-default-sprite))
|
||||
(:num 1.0)
|
||||
(:scale-x (meters 2.6))
|
||||
(:scale-y :copy scale-x)
|
||||
(:r 128.0)
|
||||
(:g 128.0)
|
||||
(:b 255.0)
|
||||
(:a 20.0)
|
||||
(:scalevel-x (meters 0.06666667))
|
||||
(:scalevel-y :copy scalevel-x)
|
||||
(:fade-a -0.8)
|
||||
(:accel-y (meters -0.00066666666))
|
||||
(:timer (seconds 0.9))
|
||||
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14))
|
||||
(:next-time (seconds 0.05))
|
||||
(:next-launcher 27)
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 27
|
||||
:init-specs ((:scalevel-x (meters 0.008333334)) (:scalevel-y :copy scalevel-x) (:fade-a -0.06666667))
|
||||
)
|
||||
|
||||
(defpart 20
|
||||
:init-specs ((:num 1.0)
|
||||
(:rot-x 24)
|
||||
(:r 12288.0)
|
||||
(:g 6553.6)
|
||||
(:b 6553.6)
|
||||
(:fade-r 12.136296)
|
||||
(:fade-g 136.53334)
|
||||
(:fade-b 6.068148)
|
||||
(:accel-y (meters -0.00066666666))
|
||||
(:timer (seconds 0.9))
|
||||
(:flags (distort))
|
||||
(:next-time (seconds 0.1))
|
||||
(:next-launcher 28)
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 28
|
||||
:init-specs ((:fade-g -10.240001))
|
||||
)
|
||||
|
||||
(defpartgroup group-stars
|
||||
:id 2
|
||||
:flags (sp1)
|
||||
:bounds (static-bspherem 0 0 0 8)
|
||||
:parts ((sp-item 29 :flags (sp6)) (sp-item 30 :flags (sp6)) (sp-item 31 :flags (sp6)))
|
||||
)
|
||||
|
||||
(defpart 29
|
||||
:init-specs ((:texture (hotdot level-default-sprite))
|
||||
(:num 1.0)
|
||||
(:scale-x (meters 30) (meters 20))
|
||||
(:scale-y :copy scale-x)
|
||||
(:r 256.0)
|
||||
(:g 256.0)
|
||||
(:b 256.0)
|
||||
(:a 0.0)
|
||||
(:fade-a 0.42666668)
|
||||
(:timer (seconds -0.005))
|
||||
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14))
|
||||
(:next-time (seconds 0.2) (seconds 0.797))
|
||||
(:next-launcher 32)
|
||||
(:conerot-x (degrees -89) (degrees 178))
|
||||
(:conerot-y (degrees 0) (degrees 1440))
|
||||
(:rotate-y (degrees 0) (degrees 3600))
|
||||
(:conerot-radius (meters 5000))
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 32
|
||||
:init-specs ((:fade-a 0.0) (:next-time (seconds 99999)) (:next-launcher 33))
|
||||
)
|
||||
|
||||
(defpart 33
|
||||
:init-specs ((:fade-a -0.42666668))
|
||||
)
|
||||
|
||||
(defpart 30
|
||||
:init-specs ((:texture (hotdot level-default-sprite))
|
||||
(:num 1.0)
|
||||
(:scale-x (meters 30) (meters 20))
|
||||
(:scale-y :copy scale-x)
|
||||
(:r 256.0)
|
||||
(:g 256.0)
|
||||
(:b 256.0)
|
||||
(:a 0.0)
|
||||
(:fade-a 0.42666668)
|
||||
(:timer (seconds -0.005))
|
||||
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14))
|
||||
(:next-time (seconds 0.2) (seconds 0.797))
|
||||
(:next-launcher 32)
|
||||
(:conerot-x (degrees 30) (degrees 59))
|
||||
(:conerot-y (degrees 0) (degrees 2880))
|
||||
(:rotate-y (degrees 0) (degrees 3600))
|
||||
(:conerot-radius (meters 5000))
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 31
|
||||
:init-specs ((:texture (hotdot level-default-sprite))
|
||||
(:num 1.0)
|
||||
(:scale-x (meters 30) (meters 20))
|
||||
(:scale-y :copy scale-x)
|
||||
(:r 128.0)
|
||||
(:g 128.0)
|
||||
(:b 128.0)
|
||||
(:a 0.0)
|
||||
(:fade-a 0.42666668)
|
||||
(:timer (seconds -0.005))
|
||||
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14))
|
||||
(:next-time (seconds 0.2) (seconds 0.797))
|
||||
(:next-launcher 32)
|
||||
(:conerot-x (degrees 60) (degrees 29))
|
||||
(:conerot-y (degrees 0) (degrees 5760))
|
||||
(:rotate-y (degrees 0) (degrees 3600))
|
||||
(:conerot-radius (meters 5000))
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 34
|
||||
:init-specs ((:texture (hotdot level-default-sprite))
|
||||
(:num 4.0)
|
||||
(:x (meters 10) (meters 10))
|
||||
(:y (meters 2) (meters 14))
|
||||
(:scale-x (meters 0.2) (meters 0.1))
|
||||
(:rot-x 4)
|
||||
(:rot-z (degrees 0) (degrees 360))
|
||||
(:scale-y :copy scale-x)
|
||||
(:r 255.0)
|
||||
(:g 255.0)
|
||||
(:b 255.0)
|
||||
(:a 0.0)
|
||||
(:vel-y (meters -0.01) (meters -0.0033333334))
|
||||
(:rotvel-z (degrees -1.2) (degrees 2.4))
|
||||
(:fade-a 0.85333335)
|
||||
(:timer (seconds 5))
|
||||
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-13 sp-cpuinfo-flag-14))
|
||||
(:next-time (seconds 0.25) (seconds 0.247))
|
||||
(:next-launcher 35)
|
||||
(:rotate-y (degrees 0) (degrees 180))
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 36
|
||||
:init-specs ((:texture (hotdot level-default-sprite))
|
||||
(:num 0.0)
|
||||
(:x (meters 0) (meters 20))
|
||||
(:y (meters 16))
|
||||
(:scale-x (meters 0.2) (meters 0.1))
|
||||
(:rot-x 4)
|
||||
(:rot-z (degrees 0) (degrees 360))
|
||||
(:scale-y :copy scale-x)
|
||||
(:r 255.0)
|
||||
(:g 255.0)
|
||||
(:b 255.0)
|
||||
(:a 0.0)
|
||||
(:vel-y (meters -0.01) (meters -0.0033333334))
|
||||
(:rotvel-z (degrees -1.2) (degrees 2.4))
|
||||
(:fade-a 0.85333335)
|
||||
(:timer (seconds 5))
|
||||
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-13 sp-cpuinfo-flag-14))
|
||||
(:next-time (seconds 0.25) (seconds 0.247))
|
||||
(:next-launcher 35)
|
||||
(:rotate-y (degrees 0) (degrees 360))
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 35
|
||||
:init-specs ((:fade-a 0.0) (:next-time (seconds 4)) (:next-launcher 37))
|
||||
)
|
||||
|
||||
(defpart 37
|
||||
:init-specs ((:fade-a -0.85333335))
|
||||
)
|
||||
|
||||
(defun update-snow ((arg0 float) (arg1 vector) (arg2 vector))
|
||||
(let ((f0-0 (lerp-scale 0.0 1.0 (vector-length arg2) 2048.0 40960.0)))
|
||||
(set! (-> *part-id-table* 36 init-specs 1 initial-valuef) (- 1.0 f0-0))
|
||||
(set! (-> *part-id-table* 34 init-specs 1 initial-valuef) (* 4.0 f0-0))
|
||||
)
|
||||
(set! (-> *part-id-table* 34 init-specs 19 initial-valuef) (+ 32768.0 (vector-y-angle arg2)))
|
||||
(launch-particles (-> *part-id-table* 36) arg1)
|
||||
(launch-particles (-> *part-id-table* 34) arg1)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defpart 38
|
||||
:init-specs ((:texture (lakedrop level-default-sprite))
|
||||
(:birth-func 'birth-func-rain)
|
||||
(:num 1.0)
|
||||
(:x (meters -20) (meters 40))
|
||||
(:y (meters 30))
|
||||
(:scale-x (meters 0.03) (meters 0.03))
|
||||
(:scale-y (meters 0.5) (meters 0.5))
|
||||
(:r 32.0 32.0)
|
||||
(:g :copy r)
|
||||
(:b 64.0 32.0)
|
||||
(:a 32.0 64.0)
|
||||
(:vel-y (meters -0.1) (meters -0.2))
|
||||
(:timer (seconds 3))
|
||||
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14))
|
||||
(:userdata 0.0)
|
||||
(:func 'check-drop-level-rain)
|
||||
(:rotate-y (degrees 0) (degrees 3600))
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 39
|
||||
:init-specs ((:texture (lakedrop level-default-sprite))
|
||||
(:birth-func 'birth-func-rain)
|
||||
(:num 4.0)
|
||||
(:x (meters -20) (meters 40))
|
||||
(:y (meters 30))
|
||||
(:scale-x (meters 0.03) (meters 0.03))
|
||||
(:scale-y (meters 0.5) (meters 0.5))
|
||||
(:r 32.0 32.0)
|
||||
(:g :copy r)
|
||||
(:b 64.0 32.0)
|
||||
(:a 32.0 64.0)
|
||||
(:vel-y (meters -0.06666667) (meters -0.033333335))
|
||||
(:timer (seconds 3))
|
||||
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14))
|
||||
(:userdata 0.0)
|
||||
(:func 'check-drop-level-rain2)
|
||||
(:rotate-y (degrees 0) (degrees 3600))
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 40
|
||||
:init-specs ((:texture (lakedrop level-default-sprite))
|
||||
(:num 1.0 3.0)
|
||||
(:scale-x (meters 0.08) (meters 0.03))
|
||||
(:rot-x 4)
|
||||
(:scale-y :copy scale-x)
|
||||
(:r 32.0 32.0)
|
||||
(:g :copy r)
|
||||
(:b 64.0 32.0)
|
||||
(:a 64.0 64.0)
|
||||
(:omega (degrees 0.01575) (degrees 0.009))
|
||||
(:vel-y (meters 0.033333335) (meters 0.06666667))
|
||||
(:fade-a -0.21333334 -0.21333334)
|
||||
(:accel-y (meters -0.005) (meters -0.00066666666))
|
||||
(:friction 0.98)
|
||||
(:timer (seconds 1))
|
||||
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14 launch-along-z))
|
||||
(:userdata 0.0)
|
||||
(:func 'check-drop-level-splash)
|
||||
(:next-time (seconds 0) (seconds 0.33))
|
||||
(:next-launcher 41)
|
||||
(:conerot-x (degrees 0) (degrees 50.000004))
|
||||
(:conerot-y (degrees 0) (degrees 3600))
|
||||
(:rotate-x (degrees 0))
|
||||
(:rotate-y (degrees 0))
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 42
|
||||
:init-specs ((:texture (hotdot level-default-sprite))
|
||||
(:birth-func 'birth-func-omega-normal-orient)
|
||||
(:num 1.0)
|
||||
(:y (meters 0.2))
|
||||
(:scale-x (meters 0.5) (meters 0.25))
|
||||
(:scale-y :copy scale-x)
|
||||
(:r 32.0 32.0)
|
||||
(:g :copy r)
|
||||
(:b 64.0 32.0)
|
||||
(:a 64.0 32.0)
|
||||
(:omega (degrees 0))
|
||||
(:scalevel-x (meters 0.006666667) (meters 0.006666667))
|
||||
(:scalevel-y :copy scalevel-x)
|
||||
(:fade-a -1.2)
|
||||
(:timer (seconds 1))
|
||||
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14))
|
||||
(:userdata :data (new 'static 'boxed-array :type int32 10 0 0 #x401800 #x403d00 #x400700 #x408200))
|
||||
(:func 'sparticle-texture-animate)
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 43
|
||||
:init-specs ((:texture (motion-blur-part level-default-sprite))
|
||||
(:num 2.0 4.0)
|
||||
(:scale-x (meters 2.5))
|
||||
(:rot-x 4)
|
||||
(:scale-y (meters 0.06) (meters 0.03))
|
||||
(:r 255.0)
|
||||
(:g 128.0 128.0)
|
||||
(:b 0.0 128.0)
|
||||
(:a 128.0)
|
||||
(:omega (degrees 0.018) (degrees 0.01125))
|
||||
(:vel-y (meters 0.1) (meters 0.06666667))
|
||||
(:fade-g -2.55 -2.55)
|
||||
(:fade-b -8.0)
|
||||
(:fade-a -0.32 -0.64)
|
||||
(:friction 0.8 0.02)
|
||||
(:timer (seconds 0.335) (seconds 0.33))
|
||||
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
|
||||
(:func 'sparticle-motion-blur)
|
||||
(:conerot-x (degrees 0) (degrees 80))
|
||||
(:conerot-y (degrees 0) (degrees 3600))
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 44
|
||||
:init-specs ((:texture (glow level-default-sprite))
|
||||
(:num 1.0)
|
||||
(:scale-x (meters 0.25))
|
||||
(:rot-x (degrees 0.225))
|
||||
(:rot-z (degrees 0) (degrees 3600))
|
||||
(:scale-y :copy scale-x)
|
||||
(:r 255.0)
|
||||
(:g 196.0 128.0)
|
||||
(:b 128.0 64.0)
|
||||
(:a 96.0 16.0)
|
||||
(:omega (degrees 3608.9998))
|
||||
(:scalevel-x (meters 0.08))
|
||||
(:scalevel-y :copy scalevel-x)
|
||||
(:fade-g -6.375)
|
||||
(:fade-b -13.066667)
|
||||
(:fade-a -2.8)
|
||||
(:timer (seconds 0.05) (seconds 0.03))
|
||||
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow))
|
||||
(:userdata 2048.0)
|
||||
)
|
||||
)
|
||||
|
||||
(defun birth-func-omega-normal-orient ((arg0 sparticle-system)
|
||||
(arg1 sparticle-cpuinfo)
|
||||
(arg2 sprite-vec-data-3d)
|
||||
(arg3 sparticle-launcher)
|
||||
(arg4 sparticle-launch-state)
|
||||
)
|
||||
(local-vars (v1-6 float) (v1-7 float))
|
||||
(rlet ((vf0 :class vf)
|
||||
(vf1 :class vf)
|
||||
(vf2 :class vf)
|
||||
)
|
||||
(init-vf0-vector)
|
||||
(let ((s4-0 (new 'stack-no-clear 'vector))
|
||||
(gp-0 (new 'stack-no-clear 'quaternion))
|
||||
)
|
||||
(set! (-> s4-0 x) (* 0.007874016 (the float (-> arg1 datab 2))))
|
||||
(set! (-> s4-0 y) 0.0)
|
||||
(set! (-> s4-0 z) (* -0.007874016 (the float (-> arg1 datab 0))))
|
||||
(vector-normalize! s4-0 1.0)
|
||||
(quaternion-vector-angle! gp-0 s4-0 (acos (* 0.007874016 (the float (-> arg1 datab 1)))))
|
||||
(cond
|
||||
((< (-> gp-0 w) 0.0)
|
||||
(.lvf vf1 (&-> arg2 qx-qy-qz-sy quad))
|
||||
(.lvf vf2 (&-> gp-0 quad))
|
||||
(.sub.vf vf1 vf0 vf2 :mask #b111)
|
||||
(.svf (&-> arg2 qx-qy-qz-sy quad) vf1)
|
||||
(.mov v1-6 vf1)
|
||||
)
|
||||
(else
|
||||
(.lvf vf1 (&-> arg2 qx-qy-qz-sy quad))
|
||||
(.lvf vf2 (&-> gp-0 quad))
|
||||
(.add.vf vf1 vf0 vf2 :mask #b111)
|
||||
(.svf (&-> arg2 qx-qy-qz-sy quad) vf1)
|
||||
(.mov v1-7 vf1)
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
(defun birth-func-rain ((arg0 sparticle-system)
|
||||
(arg1 sparticle-cpuinfo)
|
||||
(arg2 sprite-vec-data-3d)
|
||||
(arg3 sparticle-launcher)
|
||||
(arg4 sparticle-launch-state)
|
||||
)
|
||||
(let ((s4-0 (new 'stack-no-clear 'collide-query)))
|
||||
(set! (-> s4-0 start-pos quad) (-> arg2 x-y-z-sx quad))
|
||||
(set-vector! (-> s4-0 move-dist) 0.0 -163840.0 0.0 1.0)
|
||||
(let ((v1-2 s4-0))
|
||||
(set! (-> v1-2 radius) 40.96)
|
||||
(set! (-> v1-2 collide-with) (collide-spec backgnd))
|
||||
(set! (-> v1-2 ignore-process0) #f)
|
||||
(set! (-> v1-2 ignore-process1) #f)
|
||||
(set! (-> v1-2 ignore-pat)
|
||||
(new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noendlessfall #x1 :board #x1)
|
||||
)
|
||||
(set! (-> v1-2 action-mask) (collide-action solid))
|
||||
)
|
||||
(fill-using-line-sphere *collide-cache* s4-0)
|
||||
(cond
|
||||
((>= (probe-using-line-sphere *collide-cache* s4-0) 0.0)
|
||||
(set! (-> arg1 user-float) (-> s4-0 best-other-tri intersect y))
|
||||
(let ((f0-8 (+ 65536.0 (-> *math-camera* trans y))))
|
||||
(if (< (-> arg1 user-float) f0-8)
|
||||
(set! (-> arg2 x-y-z-sx y) f0-8)
|
||||
)
|
||||
)
|
||||
(set! (-> arg1 datab 0) (the int (* 127.0 (-> s4-0 best-other-tri normal x))))
|
||||
(set! (-> arg1 datab 1) (the int (* 127.0 (-> s4-0 best-other-tri normal y))))
|
||||
(set! (-> arg1 datab 2) (the int (* 127.0 (-> s4-0 best-other-tri normal z))))
|
||||
(set! (-> arg1 datab 3) (the-as int (-> s4-0 best-other-tri pat event)))
|
||||
)
|
||||
(else
|
||||
(set! (-> arg1 omega) 65280.0)
|
||||
(set! (-> arg1 user-float) (+ -204800.0 (-> arg2 x-y-z-sx y)))
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((f0-21 (get-height *ocean* (-> arg2 x-y-z-sx) #f)))
|
||||
(when (!= f0-21 4095996000.0)
|
||||
(when (< (-> arg1 user-float) f0-21)
|
||||
(set! (-> arg1 user-float) f0-21)
|
||||
(set! (-> arg1 datab 0) 0)
|
||||
(set! (-> arg1 datab 1) 127)
|
||||
(set! (-> arg1 datab 2) 0)
|
||||
(set! (-> arg1 datab 3) 0)
|
||||
0
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defun check-drop-level-rain ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector))
|
||||
(when (< (-> arg2 y) (-> arg1 user-float))
|
||||
(let ((s4-0 (new 'stack-no-clear 'vector))
|
||||
(gp-0 (new 'stack-no-clear 'matrix))
|
||||
)
|
||||
(let ((f30-0 (-> arg1 user-float)))
|
||||
(sp-kill-particle arg0 arg1)
|
||||
(set-vector! s4-0 (-> arg2 x) (-> arg1 user-float) (-> arg2 z) 1.0)
|
||||
(-> arg1 omega)
|
||||
(set-vector!
|
||||
(-> gp-0 uvec)
|
||||
(* 0.007874016 (the float (-> arg1 datab 0)))
|
||||
(* 0.007874016 (the float (-> arg1 datab 1)))
|
||||
(* 0.007874016 (the float (-> arg1 datab 2)))
|
||||
0.0
|
||||
)
|
||||
(set-vector! (-> gp-0 fvec) 0.0 0.0 1.0 0.0)
|
||||
(vector-cross! (-> gp-0 rvec) (-> gp-0 uvec) (-> gp-0 fvec))
|
||||
(set! (-> gp-0 trans quad) (-> s4-0 quad))
|
||||
(set! (-> *part-id-table* 40 init-specs 23 initial-valuef) (vector-y-angle (-> gp-0 uvec)))
|
||||
(set! (-> *part-id-table* 40 init-specs 22 initial-valuef) (- 16384.0 (vector-x-angle (-> gp-0 uvec))))
|
||||
(set! (-> *part-id-table* 40 init-specs 16 initial-valuef) f30-0)
|
||||
)
|
||||
(launch-particles (-> *part-id-table* 40) gp-0 :origin-is-matrix #t)
|
||||
(case (-> arg1 datab 3)
|
||||
((11 10)
|
||||
(sound-play "sizzle-drips")
|
||||
(launch-particles (-> *part-id-table* 44) gp-0 :origin-is-matrix #t)
|
||||
(launch-particles (-> *part-id-table* 43) gp-0 :origin-is-matrix #t)
|
||||
)
|
||||
(else
|
||||
(sound-play "dry-drips")
|
||||
(set! (-> *part-id-table* 42 init-specs 10 initial-valuef) (-> arg1 omega))
|
||||
(launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 42) gp-0 :origin-is-matrix #t)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; WARN: Return type mismatch symbol vs none.
|
||||
(defun check-drop-level-rain2 ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector))
|
||||
(if (< (-> arg2 y) (-> arg1 user-float))
|
||||
(sp-kill-particle arg0 arg1)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; WARN: Return type mismatch symbol vs none.
|
||||
(defun check-drop-level-splash ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector))
|
||||
(sparticle-motion-blur arg0 arg1 arg2)
|
||||
(if (< (-> arg2 y) (-> arg1 user-float))
|
||||
(sp-kill-particle arg0 arg1)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
(defun update-rain ((arg0 float) (arg1 vector) (arg2 vector))
|
||||
(let ((v1-0 (new 'stack-no-clear 'vector)))
|
||||
(set! (-> v1-0 x) (-> arg2 x))
|
||||
(set! (-> v1-0 y) 0.0)
|
||||
(set! (-> v1-0 z) (-> arg2 z))
|
||||
(set! (-> v1-0 w) 1.0)
|
||||
(let ((gp-1 (vector+float*! (new 'stack-no-clear 'vector) arg1 v1-0 0.0)))
|
||||
(let* ((s4-0 (matrix-local->world #f #f))
|
||||
(f28-0 (lerp-scale 122.88 245.76 (fabs (-> s4-0 fvec y)) 0.0 0.7))
|
||||
(f30-0 (lerp-scale 2048.0 245.76 (fabs (-> s4-0 fvec y)) 0.0 0.7))
|
||||
)
|
||||
(let ((f26-0 (lerp-scale 0.0 0.1 (-> s4-0 fvec y) 0.3 0.7))
|
||||
(f0-11 (lerp-scale 1.0 0.1 (-> s4-0 fvec y) 0.3 0.7))
|
||||
)
|
||||
(if (< 0.0 f26-0)
|
||||
(send-event *camera* 'part-water-drip f26-0 f0-11)
|
||||
)
|
||||
)
|
||||
(set! (-> *part-id-table* 38 init-specs 5 initial-valuef) f28-0)
|
||||
(set! (-> *part-id-table* 38 init-specs 5 random-rangef) f28-0)
|
||||
(set! (-> *part-id-table* 39 init-specs 5 initial-valuef) f28-0)
|
||||
(set! (-> *part-id-table* 39 init-specs 5 random-rangef) f28-0)
|
||||
(set! (-> *part-id-table* 38 init-specs 6 initial-valuef) f30-0)
|
||||
(set! (-> *part-id-table* 38 init-specs 6 random-rangef) f30-0)
|
||||
(set! (-> *part-id-table* 39 init-specs 6 initial-valuef) f30-0)
|
||||
(set! (-> *part-id-table* 39 init-specs 6 random-rangef) f30-0)
|
||||
)
|
||||
(set! (-> *part-id-table* 38 init-specs 2 initial-valuef) arg0)
|
||||
(set! (-> *part-id-table* 39 init-specs 2 initial-valuef) (* 4.0 arg0))
|
||||
(launch-particles (-> *part-id-table* 38) gp-1)
|
||||
(launch-particles (-> *part-id-table* 39) gp-1)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defbehavior cam-master-effect camera-master ()
|
||||
(when (not (or (movie?) (>= (+ (current-time) (seconds -10)) (-> self water-drip-time))))
|
||||
(set! (-> *part-id-table* 24 init-specs 1 initial-valuef) (-> self water-drip-mult))
|
||||
(set! (-> *part-id-table* 23 init-specs 1 initial-valuef) (* 0.9 (-> self water-drip-mult)))
|
||||
(set! (-> *part-id-table* 21 init-specs 11 initial-valuef) (* -2.7306666 (-> self water-drip-speed)))
|
||||
(set! (-> *part-id-table* 22 init-specs 8 initial-valuef) (* -2.7306666 (-> self water-drip-speed)))
|
||||
(set! (-> *part-id-table* 19 init-specs 11 initial-valuef) (* -2.7306666 (-> self water-drip-speed)))
|
||||
(set! (-> *part-id-table* 20 init-specs 8 initial-valuef) (* -2.7306666 (-> self water-drip-speed)))
|
||||
(spawn (-> self water-drip) *zero-vector*)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defun sparticle-track-sun ((arg0 int) (arg1 sparticle-cpuinfo) (arg2 matrix))
|
||||
(-> arg1 key)
|
||||
(let* ((s2-0 (the int (-> arg1 user-float)))
|
||||
(s5-0 (math-camera-pos))
|
||||
(s4-0 (the-as object (+ (the-as uint (-> *sky-work* upload-data)) (* (/ s2-0 4) 64))))
|
||||
)
|
||||
(let ((s3-0 *time-of-day*)
|
||||
(v1-4 (-> *math-camera* inv-camera-rot))
|
||||
)
|
||||
(cond
|
||||
((= s2-0 1)
|
||||
(set! (-> arg2 uvec z) (+ 8192.0 (* 0.5 (vector-y-angle (-> v1-4 fvec)))))
|
||||
(set! (-> s3-0 0 sun-count) 1)
|
||||
)
|
||||
((= s2-0 4)
|
||||
(set! (-> arg2 uvec z) (+ -8192.0 (* 0.5 (vector-y-angle (-> v1-4 fvec)))))
|
||||
(+! (-> s3-0 0 green-sun-count) 1)
|
||||
)
|
||||
((= s2-0 8)
|
||||
(set! (-> arg2 uvec z) (+ -8192.0 (* 0.5 (vector-y-angle (-> v1-4 fvec)))))
|
||||
(+! (-> s3-0 0 moon-count) 1)
|
||||
)
|
||||
((= s2-0 12)
|
||||
(set! (-> arg2 uvec z) (+ -8192.0 (* 0.5 (vector-y-angle (-> v1-4 fvec)))))
|
||||
(+! (-> s3-0 0 day-star-count) 1)
|
||||
(let ((f0-15 (* 6144000.0 (fmax 0.3 (fmin 1.0 (* 0.01 (-> *game-info* percent-complete)))))))
|
||||
(set! (-> arg2 rvec w) f0-15)
|
||||
(set! (-> arg2 uvec w) f0-15)
|
||||
)
|
||||
)
|
||||
((= s2-0 13)
|
||||
(set! (-> arg2 uvec z) (+ -8192.0 (* 0.5 (vector-y-angle (-> v1-4 fvec)))))
|
||||
(+! (-> s3-0 0 day-star-count) 1)
|
||||
(let ((f0-20 (* 12288000.0 (fmax 0.3 (fmin 1.0 (* 0.01 (-> *game-info* percent-complete)))))))
|
||||
(set! (-> arg2 rvec w) f0-20)
|
||||
(set! (-> arg2 uvec w) f0-20)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((s3-1 (new 'stack-no-clear 'vector)))
|
||||
(set! (-> s3-1 quad) (-> (the-as vector s4-0) quad))
|
||||
(if (-> *time-of-day-context* use-camera-other)
|
||||
(vector-matrix*! s3-1 s3-1 (-> *math-camera* camera-rot-other-sky))
|
||||
)
|
||||
(vector+float*! s3-1 s5-0 s3-1 4096.0)
|
||||
(set! (-> arg2 rvec x) (-> s3-1 x))
|
||||
(set! (-> arg2 rvec y) (-> s3-1 y))
|
||||
(set! (-> arg2 rvec z) (-> s3-1 z))
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defpartgroup group-sun
|
||||
:id 3
|
||||
:flags (sp1)
|
||||
:bounds (static-bspherem 0 0 0 70)
|
||||
:parts ((sp-item 45 :flags (sp3 sp6)) (sp-item 46 :flags (sp3 sp6)))
|
||||
)
|
||||
|
||||
(defpart 45
|
||||
:init-specs ((:texture (glow level-default-sprite))
|
||||
(:num 1.0)
|
||||
(:scale-x (meters 2550))
|
||||
(:rot-x (degrees 1687.5))
|
||||
(:rot-z (degrees 30))
|
||||
(:scale-y (meters 2550))
|
||||
(:r 64.0)
|
||||
(:g 64.0)
|
||||
(:b 16.0)
|
||||
(:a 70.0)
|
||||
(:omega (degrees 0))
|
||||
(:timer (seconds -0.005))
|
||||
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14 glow))
|
||||
(:userdata 1.0)
|
||||
(:func 'sparticle-track-sun)
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 46
|
||||
:init-specs ((:texture (glow level-default-sprite))
|
||||
(:num 1.0)
|
||||
(:scale-x (meters 12000))
|
||||
(:rot-x (degrees 1687.5))
|
||||
(:rot-z (degrees 30))
|
||||
(:scale-y (meters 12000))
|
||||
(:r 64.0)
|
||||
(:g 32.0)
|
||||
(:b 0.0)
|
||||
(:a 80.0)
|
||||
(:omega (degrees 0))
|
||||
(:timer (seconds -0.005))
|
||||
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14 glow))
|
||||
(:userdata 1.0)
|
||||
(:func 'sparticle-track-sun)
|
||||
)
|
||||
)
|
||||
|
||||
(defpartgroup group-green-sun
|
||||
:id 4
|
||||
:flags (sp1)
|
||||
:bounds (static-bspherem 0 0 0 70)
|
||||
:parts ((sp-item 47 :flags (sp3 sp6)) (sp-item 48 :flags (sp3 sp6)))
|
||||
)
|
||||
|
||||
(defpart 47
|
||||
:init-specs ((:texture (glow level-default-sprite))
|
||||
(:num 1.0)
|
||||
(:scale-x (meters 1500))
|
||||
(:rot-x (degrees 1125))
|
||||
(:rot-z (degrees 30))
|
||||
(:scale-y (meters 1500))
|
||||
(:r 16.0)
|
||||
(:g 64.0)
|
||||
(:b 32.0)
|
||||
(:a 64.0)
|
||||
(:omega (degrees 0))
|
||||
(:timer (seconds -0.005))
|
||||
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14 glow))
|
||||
(:userdata 4.0)
|
||||
(:func 'sparticle-track-sun)
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 48
|
||||
:init-specs ((:texture (glow level-default-sprite))
|
||||
(:num 1.0)
|
||||
(:scale-x (meters 3000))
|
||||
(:rot-x (degrees 1125))
|
||||
(:rot-z (degrees 30))
|
||||
(:scale-y (meters 3000))
|
||||
(:r 0.0)
|
||||
(:g 43.0)
|
||||
(:b 8.0)
|
||||
(:a 64.0)
|
||||
(:omega (degrees 0))
|
||||
(:timer (seconds -0.005))
|
||||
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14 glow))
|
||||
(:userdata 4.0)
|
||||
(:func 'sparticle-track-sun)
|
||||
)
|
||||
)
|
||||
|
||||
(defpartgroup group-moon
|
||||
:id 5
|
||||
:flags (sp1)
|
||||
:bounds (static-bspherem 0 0 0 70)
|
||||
:parts ((sp-item 49 :flags (sp3 sp6)))
|
||||
)
|
||||
|
||||
(defpart 49
|
||||
:init-specs ((:texture (glow-soft level-default-sprite))
|
||||
(:num 1.0)
|
||||
(:scale-x (meters 6000))
|
||||
(:rot-x (degrees 2992.5))
|
||||
(:rot-z (degrees 30))
|
||||
(:scale-y (meters 6000))
|
||||
(:r 16.0)
|
||||
(:g 32.0)
|
||||
(:b 64.0)
|
||||
(:a 64.0)
|
||||
(:omega (degrees 0))
|
||||
(:timer (seconds -0.005))
|
||||
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14 glow))
|
||||
(:userdata 8.0)
|
||||
(:func 'sparticle-track-sun)
|
||||
)
|
||||
)
|
||||
|
||||
(defpartgroup group-day-star
|
||||
:id 6
|
||||
:flags (sp1)
|
||||
:bounds (static-bspherem 0 0 0 70)
|
||||
:parts ((sp-item 50 :flags (sp3 sp6)) (sp-item 51 :flags (sp3 sp6)))
|
||||
)
|
||||
|
||||
(defpart 50
|
||||
:init-specs ((:texture (glow level-default-sprite))
|
||||
(:num 1.0)
|
||||
(:scale-x (meters 2000))
|
||||
(:rot-x (degrees 1125))
|
||||
(:rot-z (degrees 30))
|
||||
(:scale-y (meters 2000))
|
||||
(:r 128.0)
|
||||
(:g 128.0)
|
||||
(:b 128.0)
|
||||
(:a 64.0)
|
||||
(:omega (degrees 0))
|
||||
(:timer (seconds -0.005))
|
||||
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14 glow))
|
||||
(:userdata 12.0)
|
||||
(:func 'sparticle-track-sun)
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 51
|
||||
:init-specs ((:texture (glow level-default-sprite))
|
||||
(:num 1.0)
|
||||
(:scale-x (meters 5000))
|
||||
(:rot-x (degrees 1125))
|
||||
(:rot-z (degrees 30))
|
||||
(:scale-y (meters 5000))
|
||||
(:r 32.0)
|
||||
(:g 0.0)
|
||||
(:b 128.0)
|
||||
(:a 64.0)
|
||||
(:omega (degrees 0))
|
||||
(:timer (seconds -0.005))
|
||||
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14 glow))
|
||||
(:userdata 13.0)
|
||||
(:func 'sparticle-track-sun)
|
||||
)
|
||||
)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -194,9 +194,9 @@
|
||||
(disable-day-star basic)
|
||||
)
|
||||
(:methods
|
||||
(sky-work-method-9 () none)
|
||||
(sky-work-method-10 () none)
|
||||
(sky-work-method-11 () none)
|
||||
(init-sun-data! (_type_ int float float float) none)
|
||||
(init-orbit-settings! (_type_ int float float float float float float) none)
|
||||
(update-colors-for-time (_type_ float) none)
|
||||
(update-time-and-speed (_type_ float float) none)
|
||||
(sky-work-method-13 () none)
|
||||
(draw (_type_) none)
|
||||
|
||||
@@ -7,3 +7,59 @@
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(defmethod update-time-and-speed ((this sky-work) (arg0 float) (arg1 float))
|
||||
(if (and (level-get-target-inside *level*) (= (-> (level-get-target-inside *level*) info taskname) 'nest))
|
||||
(set! arg1 (* 10.0 arg1))
|
||||
)
|
||||
(sky-make-sun-data this 0 arg0)
|
||||
(sky-make-sun-data this 1 arg0)
|
||||
(sky-make-moon-data this arg0)
|
||||
(+! (-> this off-s) (the int (* -8.0 arg1)))
|
||||
(+! (-> this off-t) (the int (* 2.0 arg1)))
|
||||
(set! (-> this time) arg0)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod update-colors-for-time ((this sky-work) (arg0 float))
|
||||
0
|
||||
0
|
||||
0.0
|
||||
(let ((s5-0 *no-cloud-mood-color-table*))
|
||||
(let ((s3-0 (-> *level* level-default mood-context))
|
||||
(s4-0 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
(let* ((v1-3 (the int arg0))
|
||||
(f0-4 (- arg0 (the float v1-3)))
|
||||
(f1-3 (- 1.0 f0-4))
|
||||
(a0-4 (/ v1-3 24))
|
||||
(a1-2 (-> *mood-interp-table* hour (- v1-3 (* 24 a0-4))))
|
||||
(a0-7 (-> a1-2 snapshot1))
|
||||
(v1-7 (-> a1-2 snapshot2))
|
||||
(f0-6 (+ (* f1-3 (-> a1-2 morph-start)) (* f0-4 (-> a1-2 morph-end))))
|
||||
)
|
||||
(cond
|
||||
((= a0-7 v1-7)
|
||||
(set! (-> this sun0-color quad) (-> s5-0 data a0-7 lgt-color quad))
|
||||
)
|
||||
(else
|
||||
(let ((a1-5 (-> s5-0 data a0-7))
|
||||
(v1-11 (-> s5-0 data v1-7))
|
||||
)
|
||||
(vector4-lerp! (-> this sun0-color) (-> a1-5 lgt-color) (-> v1-11 lgt-color) f0-6)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> this sun0-color-lower quad) (-> s3-0 times 1 quad))
|
||||
(set! (-> this ambi-color-lower quad) (-> s3-0 times 0 quad))
|
||||
(set-vector! s4-0 1.9921875 1.9921875 1.9921875 1.0)
|
||||
(vector4-lerp! (-> this ambi-color) (-> this ambi-color-lower) s4-0 (-> *mood-control* lightning-flash))
|
||||
)
|
||||
(set! (-> this sun0-color quad) (-> this sun0-color quad))
|
||||
(set! (-> this sun1-color quad) (-> s5-0 data 7 lgt-color quad))
|
||||
(set! (-> this moon-color quad) (-> s5-0 data 6 lgt-color quad))
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
@@ -16,5 +16,13 @@
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(defun set-darkjak-texture-morph! ((arg0 float))
|
||||
(none)
|
||||
)
|
||||
|
||||
(defun set-fog-height! ((arg0 float))
|
||||
(none)
|
||||
)
|
||||
|
||||
(defun set-cloud-minmax! ((arg0 float) (arg1 float))
|
||||
(none)
|
||||
)
|
||||
@@ -66,6 +66,7 @@ This probably started as a very simple structure, but now it is extremely compli
|
||||
(cam-outside-bsp uint8 :offset 152)
|
||||
(cam-using-back uint8)
|
||||
(cam-box-idx uint16)
|
||||
(ambients symbol)
|
||||
(subdivide-close float :offset 160)
|
||||
(subdivide-far float)
|
||||
(race-meshes (array entity-race-mesh))
|
||||
|
||||
@@ -7,3 +7,10 @@
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(defmethod cloth-base-method-10 ((this cloth-base) (a cloth-params) (b handle))
|
||||
(format 0 "unimplemented cloth-base-method-10~%")
|
||||
0)
|
||||
|
||||
(defmethod init! ((this cloth-base))
|
||||
;; this looks more like run! than init to me.
|
||||
0)
|
||||
@@ -107,7 +107,8 @@
|
||||
)
|
||||
|
||||
(defmethod projectile-method-40 ((this gun-red-3-grenade))
|
||||
256
|
||||
;; og:preserve-this increased stack size from 256
|
||||
512
|
||||
)
|
||||
|
||||
(defmethod init-proj-settings! ((this gun-red-3-grenade))
|
||||
|
||||
@@ -3231,7 +3231,7 @@
|
||||
(if (and *debug-segment* (!= (-> this tobot?) 'tobot))
|
||||
(add-connection *debug-engine* this target-print-stats this *stdcon0* #f)
|
||||
)
|
||||
;; (activate-hud this)
|
||||
(activate-hud this)
|
||||
(set! (-> this fp-hud) (the-as handle #f))
|
||||
(set! (-> this burn-proc) (the-as handle #f))
|
||||
(set! (-> this water) (new 'process 'water-control this 10 0.0 8192.0 2048.0))
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
|
||||
(defmethod update-values! ((this hud-map))
|
||||
(cond
|
||||
((update! *minimap*)
|
||||
((and (nonzero? *minimap*) (update! *minimap*))
|
||||
(logior! (-> this flags) (hud-flags show))
|
||||
(let ((t9-1 (method-of-type hud update-values!)))
|
||||
(t9-1 this)
|
||||
@@ -110,7 +110,7 @@
|
||||
(set! (-> this sprites 1 flags) (hud-sprite-flags hsf2))
|
||||
(set! (-> this sprites 1 pos z) #xffff00)
|
||||
(set! (-> this values 0 current) 0)
|
||||
(update! *minimap*)
|
||||
(if (nonzero? *minimap*) (update! *minimap*))
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
@@ -453,7 +453,9 @@
|
||||
(process-spawn hud-ring-cell 11 (* -1.0 f30-0) 9 :name "hud-ring-cell" :to self)
|
||||
)
|
||||
(clear *stdcon1*)
|
||||
(enable-drawing *bigmap*)
|
||||
(if (nonzero? *bigmap*)
|
||||
(enable-drawing *bigmap*)
|
||||
)
|
||||
(set-setting! 'scanlines 'abs 0.0 0)
|
||||
(go-virtual come-in)
|
||||
)
|
||||
|
||||
@@ -193,7 +193,10 @@
|
||||
)
|
||||
)
|
||||
(virtual
|
||||
`(define-virtual-state-hook ,state-name ,defstate-type ,new-state ,(eq? virtual 'override) :event ,event :enter ,enter :trans ,trans :exit ,exit :code ,code :post ,post)
|
||||
`(begin
|
||||
(set! (-> ,new-state parent) #f)
|
||||
(define-virtual-state-hook ,state-name ,defstate-type ,new-state ,(eq? virtual 'override) :event ,event :enter ,enter :trans ,trans :exit ,exit :code ,code :post ,post)
|
||||
)
|
||||
)
|
||||
(parent
|
||||
`(begin
|
||||
|
||||
+167
-1
@@ -1513,7 +1513,173 @@
|
||||
)
|
||||
|
||||
;; definition for function foreground-draw-hud
|
||||
;; ERROR: function was not converted to expressions. Cannot decompile.
|
||||
;; INFO: Used lq/sq
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
;; ERROR: Unsupported inline assembly instruction kind - [lui at, 28672]
|
||||
(defun foreground-draw-hud ((arg0 draw-control) (arg1 dma-buffer) (arg2 float))
|
||||
(local-vars (at-0 int) (a0-2 (pointer uint128)) (t2-8 object) (t3-3 uint) (t3-4 uint) (t3-5 uint) (t3-6 uint))
|
||||
(.lui at-0 28672)
|
||||
(let* ((a2-1 (-> arg1 base))
|
||||
(v1-0 (the-as object (&+ a2-1 64)))
|
||||
)
|
||||
(let ((a3-0 (logand (the-as int v1-0) 48)))
|
||||
(b! (zero? a3-0) cfg-2 :delay (nop!))
|
||||
(set! v1-0 (&- (&+ (the-as pointer v1-0) 64) (the-as uint a3-0)))
|
||||
)
|
||||
(label cfg-2)
|
||||
(let* ((t1-0 (+ (-> arg0 mgeo length) 3))
|
||||
(a3-3 (* t1-0 128))
|
||||
)
|
||||
(let ((t0-1 (-> (the-as foreground-work #x70000000) regs)))
|
||||
(set! (-> t0-1 joint-ptr) (the-as (inline-array joint) (-> arg0 jgeo data 0)))
|
||||
(set! (-> t0-1 bone-ptr) (-> arg0 skeleton bones))
|
||||
(set! (-> t0-1 num-bones) (the-as uint t1-0))
|
||||
(set! (-> t0-1 dist) 0.0)
|
||||
(set! (-> t0-1 dma-buf) arg1)
|
||||
(set! (-> t0-1 level-buckets)
|
||||
(-> (the-as foreground-work #x70000000)
|
||||
grid
|
||||
level-buckets
|
||||
(-> (the-as foreground-work #x70000000) draw-index-map (-> arg0 level-index))
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((t1-5 v1-0)
|
||||
(t2-5 2)
|
||||
(t5-0 (-> (the-as foreground-work #x70000000) regs))
|
||||
(a1-6 *bone-calculation-list*)
|
||||
(t0-2 a2-1)
|
||||
)
|
||||
(let ((t3-0 (-> t5-0 joint-ptr))
|
||||
(t4-0 (-> t5-0 bone-ptr))
|
||||
(t5-1 (-> t5-0 num-bones))
|
||||
(t6-0 t0-2)
|
||||
)
|
||||
(set! (-> (the-as (pointer int16) t6-0)) t2-5)
|
||||
(s.h! (+ t6-0 2) t5-1)
|
||||
(s.w! (+ t6-0 4) t1-5)
|
||||
(s.w! (+ t6-0 8) t3-0)
|
||||
(s.w! (+ t6-0 12) t4-0)
|
||||
(s.w! (+ t6-0 32) 0)
|
||||
)
|
||||
(if (nonzero? (-> a1-6 next))
|
||||
(set! (-> a1-6 next next) (the-as bone-calculation t0-2))
|
||||
)
|
||||
(if (zero? (-> a1-6 first))
|
||||
(set! (-> a1-6 first) (the-as bone-calculation t0-2))
|
||||
)
|
||||
(set! (-> a1-6 next) (the-as bone-calculation t0-2))
|
||||
)
|
||||
(&+ a2-1 48)
|
||||
(let ((a1-8 (the-as object (+ (the-as uint v1-0) a3-3))))
|
||||
(s.w! (+ at-0 36) v1-0)
|
||||
(let ((v1-3 (-> *foreground* merc-bucket-info)))
|
||||
(when (= (-> arg0 data-format) (draw-control-data-format merc))
|
||||
(let ((a2-4 (-> arg0 lod-set lod 0 geo))
|
||||
(a3-5 0)
|
||||
)
|
||||
(b! #t cfg-22 :delay (nop!))
|
||||
(label cfg-8)
|
||||
(b! (not (logtest? (-> a2-4 effect a3-5 effect-usage) 1)) cfg-17 :delay (nop!))
|
||||
(let* ((t1-13 (-> v1-3 light))
|
||||
(t2-7 (-> (the-as foreground-work #x70000000) lights))
|
||||
(t0-9 7)
|
||||
(t1-14 (the-as object t1-13))
|
||||
)
|
||||
(b! (< (+ t0-9 -4) 0) cfg-11 :delay (set! t2-8 t2-7))
|
||||
(nop!)
|
||||
(let ((t6-1 (-> (the-as (pointer uint128) t2-8) 0)))
|
||||
(nop!)
|
||||
(let ((t3-2 (-> (the-as (pointer uint128) t2-8) 1)))
|
||||
(+! t0-9 -4)
|
||||
(let ((t4-1 (-> (the-as (pointer uint128) t2-8) 2)))
|
||||
(set! t1-14 (-> (the-as vu-lights t1-14) color 1))
|
||||
(let ((t5-2 (-> (the-as (pointer uint128) t2-8) 3)))
|
||||
(set! t2-8 (&-> (the-as (pointer uint128) t2-8) 4))
|
||||
(set! (-> (the-as (pointer uint128) t1-14) -4) t6-1)
|
||||
(let ((t6-2 (+ t0-9 -4)))
|
||||
(set! (-> (the-as (pointer uint128) t1-14) -3) t3-2)
|
||||
(nop!)
|
||||
(set! (-> (the-as (pointer uint128) t1-14) -2) t4-1)
|
||||
(b! (>= t6-2 0) cfg-10 :delay (set! (-> (the-as (pointer uint128) t1-14) -1) t5-2))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(label cfg-11)
|
||||
(b! (zero? t0-9) cfg-16 :delay (set! t3-3 (the-as uint (-> (the-as (pointer uint128) t2-8) 0))))
|
||||
(let ((t2-9 (&-> (the-as (pointer uint128) t2-8) 1))
|
||||
(t1-15 (the-as object (&-> (the-as (pointer uint128) t1-14) 1)))
|
||||
(t0-10 (+ t0-9 -1))
|
||||
)
|
||||
(s.q! (+ (the-as vu-lights t1-15) -16) t3-3)
|
||||
(b! (zero? t0-10) cfg-16 :delay (set! t3-4 (the-as uint (-> t2-9 0))))
|
||||
(let ((t2-10 (&-> t2-9 1))
|
||||
(t1-16 (&-> (the-as (pointer uint128) t1-15) 1))
|
||||
(t0-11 (+ t0-10 -1))
|
||||
)
|
||||
(set! (-> t1-16 -1) (the-as uint128 t3-4))
|
||||
(b! (zero? t0-11) cfg-16 :delay (set! t3-5 (the-as uint (-> t2-10 0))))
|
||||
(let ((t2-11 (&-> t2-10 1))
|
||||
(t1-17 (&-> t1-16 1))
|
||||
(t0-12 (+ t0-11 -1))
|
||||
)
|
||||
(set! (-> t1-17 -1) (the-as uint128 t3-5))
|
||||
(b! (zero? t0-12) cfg-16 :delay (set! t3-6 (the-as uint (-> t2-11 0))))
|
||||
(&-> t2-11 1)
|
||||
(let ((t1-18 (&-> t1-17 1)))
|
||||
(+ t0-12 -1)
|
||||
(set! (-> t1-18 -1) (the-as uint128 t3-6))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(label cfg-16)
|
||||
0
|
||||
(set! (-> v1-3 effect a3-5 color-fade) (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80))
|
||||
(set! (-> v1-3 effect a3-5 merc-path) (the-as uint 2))
|
||||
(b! #t cfg-18 :delay (nop!))
|
||||
(label cfg-17)
|
||||
(set! (-> v1-3 effect a3-5 merc-path) (the-as uint 2))
|
||||
(label cfg-18)
|
||||
(set! (-> v1-3 effect a3-5 disable-draw) (the-as uint 0))
|
||||
(set! (-> v1-3 effect a3-5 ignore-alpha)
|
||||
(the-as uint (if (logtest? (-> a2-4 effect a3-5 effect-bits) (effect-bits ignore-alpha))
|
||||
1
|
||||
0
|
||||
)
|
||||
)
|
||||
)
|
||||
(+! a3-5 1)
|
||||
(label cfg-22)
|
||||
(b! (< a3-5 (the-as int (-> a2-4 header effect-count))) cfg-8)
|
||||
)
|
||||
(if (logtest? (-> *display* vu1-enable-user) (vu1-renderer-mask generic))
|
||||
(set! a1-8 (foreground-generic-merc arg0 (the-as pointer a1-8) 1))
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((v1-11 (logand (the-as int a1-8) 48)))
|
||||
0
|
||||
(b! (zero? v1-11) cfg-27 :delay (set! a0-2 (the-as (pointer uint128) #x20000000)))
|
||||
(s.q! a1-8 a0-2)
|
||||
(let ((a0-3 a1-8))
|
||||
(set! a1-8 (+ (- (the-as int a1-8) (the-as uint v1-11)) 64))
|
||||
(s.w! (+ a0-3 4) (the-as int a1-8))
|
||||
)
|
||||
)
|
||||
(label cfg-27)
|
||||
(set! (-> (the-as foreground-work #x70000000) regs dma-buf base)
|
||||
(the-as pointer (logand a1-8 (the-as uint #xfffffff)))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(kmemopen global "foreground-engine")
|
||||
|
||||
+23
-17
@@ -4,7 +4,7 @@
|
||||
;; definition of type mood-channel
|
||||
(deftype mood-channel (structure)
|
||||
((data float 24)
|
||||
(vecs vector4 6 :overlay-at (-> data 0))
|
||||
(vecs vector4 6 :inline :overlay-at (-> data 0))
|
||||
)
|
||||
)
|
||||
|
||||
@@ -71,7 +71,8 @@
|
||||
|
||||
;; definition of type mood-fog-table
|
||||
(deftype mood-fog-table (structure)
|
||||
((data mood-fog 8 :inline)
|
||||
((data mood-fog 8 :inline)
|
||||
(_data uint128 24 :overlay-at data)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -127,7 +128,8 @@
|
||||
|
||||
;; definition of type mood-color-table
|
||||
(deftype mood-color-table (structure)
|
||||
((data mood-color 8 :inline)
|
||||
((data mood-color 8 :inline)
|
||||
(_data uint128 16 :overlay-at data)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -308,6 +310,7 @@
|
||||
((time float)
|
||||
(fade float)
|
||||
)
|
||||
:pack-me
|
||||
)
|
||||
|
||||
;; definition for method 3 of type light-state
|
||||
@@ -328,6 +331,7 @@
|
||||
((flicker-off uint8)
|
||||
(flicker-on uint8)
|
||||
)
|
||||
:allow-misaligned
|
||||
)
|
||||
|
||||
;; definition for method 3 of type flicker-state
|
||||
@@ -434,6 +438,7 @@
|
||||
(length uint8)
|
||||
(height uint8)
|
||||
)
|
||||
:pack-me
|
||||
)
|
||||
|
||||
;; definition for method 3 of type flames-state
|
||||
@@ -528,6 +533,7 @@
|
||||
(deftype mood-context (mood-context-core3)
|
||||
((itimes vector4w 4 :inline)
|
||||
(state uint32 32)
|
||||
(data uint128 123 :overlay-at (-> current-fog fog-color data 0))
|
||||
)
|
||||
)
|
||||
|
||||
@@ -624,22 +630,22 @@
|
||||
(clouds mood-clouds 9)
|
||||
)
|
||||
(:methods
|
||||
(mood-control-method-9 () none)
|
||||
(mood-control-method-10 () none)
|
||||
(mood-control-method-11 () none)
|
||||
(mood-control-method-12 () none)
|
||||
(init-weather! (_type_) none)
|
||||
(set-cloud-and-fog-interp! (_type_ float float float float) none)
|
||||
(update-mood-range! (_type_ float float float float) none)
|
||||
(set-time-for-random-weather! (_type_ float float) none)
|
||||
(set-special-interps! (_type_ float float symbol) none)
|
||||
(weather-event-concluded? (_type_) symbol)
|
||||
(mood-control-method-15 () none)
|
||||
(mood-control-method-16 () none)
|
||||
(mood-control-method-17 () none)
|
||||
(mood-control-method-18 () none)
|
||||
(mood-control-method-19 () none)
|
||||
(mood-control-method-20 () none)
|
||||
(mood-control-method-21 () none)
|
||||
(mood-control-method-22 () none)
|
||||
(mood-control-method-23 () none)
|
||||
(mood-control-method-24 () none)
|
||||
(set-lightning-time! (_type_ int int float) none)
|
||||
(apply-mood-clouds-and-fog (_type_ mood-control-work) none)
|
||||
(apply-mood-fog (_type_ mood-control-work mood-color-table mood-color-table mood-color-table float) none)
|
||||
(apply-fog-height (_type_ mood-control-work float float float float) none)
|
||||
(apply-mood-colors (_type_ mood-control-work) none)
|
||||
(mood-control-method-20 (_type_ mood-control-work mood-color-table mood-color-table mood-color-table float) none)
|
||||
(apply-mood-channels (_type_ mood-control-work) none)
|
||||
(adjust-num-clouds (_type_ mood-control-work) none)
|
||||
(gen-lightning-and-thunder! (_type_ int) none)
|
||||
(play-or-stop-lightning-sfx! (_type_ sound-spec vector) none)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
+1941
File diff suppressed because it is too large
Load Diff
+3
-3
@@ -406,9 +406,9 @@
|
||||
(disable-day-star basic)
|
||||
)
|
||||
(:methods
|
||||
(sky-work-method-9 () none)
|
||||
(sky-work-method-10 () none)
|
||||
(sky-work-method-11 () none)
|
||||
(init-sun-data! (_type_ int float float float) none)
|
||||
(init-orbit-settings! (_type_ int float float float float float float) none)
|
||||
(update-colors-for-time (_type_ float) none)
|
||||
(update-time-and-speed (_type_ float float) none)
|
||||
(sky-work-method-13 () none)
|
||||
(draw (_type_) none)
|
||||
|
||||
+1
@@ -60,6 +60,7 @@ This probably started as a very simple structure, but now it is extremely compli
|
||||
(cam-outside-bsp uint8 :offset 152)
|
||||
(cam-using-back uint8)
|
||||
(cam-box-idx uint16)
|
||||
(ambients symbol)
|
||||
(subdivide-close float :offset 160)
|
||||
(subdivide-far float)
|
||||
(race-meshes (array entity-race-mesh))
|
||||
|
||||
@@ -172,7 +172,9 @@
|
||||
"sparticle-motion-blur", // clipping
|
||||
"birth-func-texture-group",
|
||||
// script
|
||||
"command-get-process"
|
||||
"command-get-process",
|
||||
// mood
|
||||
"update-mood-direction"
|
||||
],
|
||||
|
||||
"skip_compile_states": {}
|
||||
|
||||
Reference in New Issue
Block a user