mirror of
https://github.com/open-goal/jak-project.git
synced 2024-11-28 08:51:11 +00:00
finish up some functions in mood (#875)
This commit is contained in:
parent
f40b95ae1c
commit
184720b7ca
@ -682,6 +682,17 @@ std::unique_ptr<AtomicOp> convert_sw_1(const Instruction& i0, int idx) {
|
||||
}
|
||||
}
|
||||
|
||||
std::unique_ptr<AtomicOp> convert_swc1_1(const Instruction& i0, int idx) {
|
||||
if (i0.get_src(1).is_sym() && i0.get_src(2).is_reg(rs7())) {
|
||||
// storing a float in the symbol table. It's very rare, but possible
|
||||
return std::make_unique<StoreOp>(4, StoreOp::Kind::FLOAT,
|
||||
SimpleAtom::make_sym_val(i0.get_src(1).get_sym()).as_expr(),
|
||||
make_src_atom(i0.get_src(0).get_reg(), idx), idx);
|
||||
} else {
|
||||
return make_standard_store(i0, idx, 4, StoreOp::Kind::FLOAT);
|
||||
}
|
||||
}
|
||||
|
||||
std::unique_ptr<AtomicOp> convert_sd_1(const Instruction& i0, int idx) {
|
||||
if (i0.get_src(0).is_reg(rr0()) && i0.get_src(1).is_imm(2) && i0.get_src(2).is_reg(rr0())) {
|
||||
return std::make_unique<SpecialOp>(SpecialOp::Kind::CRASH, idx);
|
||||
@ -901,7 +912,7 @@ std::unique_ptr<AtomicOp> convert_1(const Instruction& i0,
|
||||
case InstructionKind::SQC2:
|
||||
return make_standard_store(i0, idx, 16, StoreOp::Kind::VECTOR_FLOAT);
|
||||
case InstructionKind::SWC1:
|
||||
return make_standard_store(i0, idx, 4, StoreOp::Kind::FLOAT);
|
||||
return convert_swc1_1(i0, idx);
|
||||
case InstructionKind::CVTWS: // float to int
|
||||
return make_2reg_op(i0, SimpleExpression::Kind::FLOAT_TO_INT, idx);
|
||||
case InstructionKind::CVTSW: // int to float
|
||||
|
@ -17445,7 +17445,7 @@
|
||||
(define-extern update-mood-palette (function mood-context float int float))
|
||||
(define-extern update-mood-interp (function mood-context mood-context mood-context float none))
|
||||
(define-extern update-mood-lightning (function mood-context int int int int float symbol none)) ;; TODO - asm - ret not verified
|
||||
(define-extern update-mood-lava (function mood-context float int symbol none))
|
||||
(define-extern update-mood-lava (function mood-context int int symbol none))
|
||||
(define-extern update-light-kit (function light-group light float float))
|
||||
(define-extern set-target-light-index (function int int))
|
||||
(define-extern update-mood-caustics (function mood-context int int float)) ;; TODO - double check
|
||||
@ -17475,7 +17475,7 @@
|
||||
;; - Symbols
|
||||
|
||||
(define-extern *time-of-day-proc* (pointer time-of-day-proc))
|
||||
(define-extern *lightning-time2* float) ;; TODO - guess
|
||||
(define-extern *lightning-time2* int)
|
||||
(define-extern *rolling-spheres-on* (inline-array vector)) ;; 11 vectors
|
||||
(define-extern *rolling-spheres-light0* vector) ;; TODO - what is going on here...
|
||||
(define-extern *rolling-spheres-light1* (inline-array vector)) ; TODO - what is going on here...
|
||||
@ -17491,7 +17491,7 @@
|
||||
(define-extern *flash6* (array float))
|
||||
(define-extern *flash7* (array float))
|
||||
(define-extern *lightning-index* int)
|
||||
(define-extern *lightning-time* float) ;; a guess, might be uint (useconds)
|
||||
(define-extern *lightning-time* int)
|
||||
(define-extern *lightning-frame-done* symbol)
|
||||
(define-extern *lightning-realtime-done* symbol)
|
||||
(define-extern *thunder-id0* sound-id)
|
||||
@ -17499,7 +17499,7 @@
|
||||
(define-extern *thunder-id2* sound-id)
|
||||
(define-extern *thunder-id* sound-id)
|
||||
(define-extern *thunder-count* int)
|
||||
(define-extern *lava-time* int) ;; TODO - guess
|
||||
(define-extern *lava-time* float) ;; TODO - guess
|
||||
|
||||
|
||||
;; ----------------------
|
||||
|
@ -219,11 +219,6 @@
|
||||
"particle-adgif",
|
||||
"sp-init-fields!",
|
||||
|
||||
|
||||
// mood BUG
|
||||
"update-mood-lava", // BUG:
|
||||
"update-mood-lightning",
|
||||
|
||||
// time-of-day
|
||||
"time-of-day-interp-colors-scratch",
|
||||
"time-of-day-interp-colors",
|
||||
|
@ -3871,5 +3871,14 @@
|
||||
[59, "v1", "dma-packet"]
|
||||
],
|
||||
|
||||
"update-mood-lightning": [
|
||||
[[255, 259], "s5", "process-drawable"],
|
||||
[[293, 297], "s5", "process-drawable"],
|
||||
[[331, 336], "s5", "process-drawable"],
|
||||
[235, "v0", "sound-rpc-set-param"],
|
||||
[273, "v0", "sound-rpc-set-param"],
|
||||
[311, "v0", "sound-rpc-set-param"]
|
||||
],
|
||||
|
||||
"placeholder-do-not-add-below": []
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -5,10 +5,6 @@
|
||||
;; name in dgo: mood
|
||||
;; dgos: GAME, ENGINE
|
||||
|
||||
;; TODO
|
||||
(define-extern update-mood-lightning (function mood-context int int int int float symbol none))
|
||||
(define-extern update-mood-lava (function mood-context float int symbol none))
|
||||
|
||||
;; definition for function clear-mood-times
|
||||
(defun clear-mood-times ((arg0 mood-context))
|
||||
(dotimes (v1-0 8)
|
||||
@ -138,13 +134,13 @@
|
||||
(.ppach v1-2 a1-1 v1-1)
|
||||
(.mov r0-2 f31-0)
|
||||
(.ppach a1-2 a3-1 a2-1)
|
||||
(set! (-> arg0 itimes 0 quad) (the-as uint128 v1-2))
|
||||
(set! (-> arg0 itimes 0 quad) v1-2)
|
||||
(.ppach v1-3 t1-1 t0-1)
|
||||
(set! (-> arg0 itimes 1 quad) (the-as uint128 a1-2))
|
||||
(set! (-> arg0 itimes 1 quad) a1-2)
|
||||
(.ppach a1-3 t3-1 t2-1)
|
||||
(set! (-> arg0 itimes 2 quad) (the-as uint128 v1-3))
|
||||
(set! (-> arg0 itimes 2 quad) v1-3)
|
||||
(nop!)
|
||||
(set! (-> arg0 itimes 3 quad) (the-as uint128 a1-3))
|
||||
(set! (-> arg0 itimes 3 quad) a1-3)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
@ -966,11 +962,11 @@
|
||||
;; definition for symbol *lightning-index*, type int
|
||||
(define *lightning-index* 0)
|
||||
|
||||
;; definition for symbol *lightning-time*, type float
|
||||
(define *lightning-time* (the-as float 0))
|
||||
;; definition for symbol *lightning-time*, type int
|
||||
(define *lightning-time* 0)
|
||||
|
||||
;; definition for symbol *lightning-time2*, type float
|
||||
(define *lightning-time2* (the-as float 0))
|
||||
;; definition for symbol *lightning-time2*, type int
|
||||
(define *lightning-time2* 0)
|
||||
|
||||
;; definition for symbol *lightning-frame-done*, type symbol
|
||||
(define *lightning-frame-done* #f)
|
||||
@ -1011,7 +1007,219 @@
|
||||
)
|
||||
|
||||
;; definition for function update-mood-lightning
|
||||
;; ERROR: function was not converted to expressions. Cannot decompile.
|
||||
;; INFO: Return type mismatch symbol vs none.
|
||||
;; Used lq/sq
|
||||
(defun
|
||||
update-mood-lightning
|
||||
((arg0 mood-context)
|
||||
(arg1 int)
|
||||
(arg2 int)
|
||||
(arg3 int)
|
||||
(arg4 int)
|
||||
(arg5 float)
|
||||
(arg6 symbol)
|
||||
)
|
||||
(local-vars (a3-2 (array float)))
|
||||
(with-pp
|
||||
(set! (-> arg0 light-group 0 dir2 levels x) 0.0)
|
||||
(let* ((s4-0 (&-> arg0 state arg3))
|
||||
(a1-1 (+ *lightning-index* arg1))
|
||||
(v1-3 (+ *lightning-index* arg4))
|
||||
(a3-1 (-> s4-0 0))
|
||||
(a2-2 (/ *lightning-time* 2))
|
||||
)
|
||||
(cond
|
||||
((zero? *lightning-time2*)
|
||||
(cond
|
||||
((zero? a3-1)
|
||||
(set! a3-2 *flash0*)
|
||||
)
|
||||
((= a3-1 1)
|
||||
(set! a3-2 *flash1*)
|
||||
)
|
||||
((= a3-1 2)
|
||||
(set! a3-2 *flash2*)
|
||||
)
|
||||
((= a3-1 3)
|
||||
(set! a3-2 *flash3*)
|
||||
)
|
||||
((= a3-1 4)
|
||||
(set! a3-2 *flash4*)
|
||||
)
|
||||
((= a3-1 5)
|
||||
(set! a3-2 *flash5*)
|
||||
)
|
||||
((= a3-1 6)
|
||||
(set! a3-2 *flash6*)
|
||||
)
|
||||
(else
|
||||
(set! a3-2 *flash7*)
|
||||
)
|
||||
)
|
||||
(cond
|
||||
((< a2-2 (-> a3-2 length))
|
||||
(let ((f0-1 (-> a3-2 a2-2)))
|
||||
(set! (-> arg0 sky-times a1-1) f0-1)
|
||||
(when (not arg6)
|
||||
(set! (-> arg0 times v1-3 w) f0-1)
|
||||
(when (not *lightning-realtime-done*)
|
||||
(let* ((a1-11 (-> arg0 mood-lights-table data v1-3))
|
||||
(v1-6 (-> arg0 light-group 0 dir2))
|
||||
(f1-4
|
||||
(*
|
||||
(+
|
||||
(* 2.0 (-> a1-11 lgt-color x))
|
||||
(* 4.0 (-> a1-11 lgt-color y))
|
||||
(-> a1-11 lgt-color z)
|
||||
)
|
||||
f0-1
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> v1-6 direction quad) (-> a1-11 direction quad))
|
||||
(set! (-> v1-6 color quad) (-> a1-11 lgt-color quad))
|
||||
(set! (-> v1-6 levels x) f0-1)
|
||||
(set! (-> v1-6 levels y) f1-4)
|
||||
)
|
||||
(set! *lightning-realtime-done* #t)
|
||||
)
|
||||
)
|
||||
)
|
||||
(if (not (or (paused?) *lightning-frame-done*))
|
||||
(set! *lightning-time* (+ *lightning-time* 1))
|
||||
)
|
||||
)
|
||||
(arg6
|
||||
(set! *lightning-time2* (the int (rand-vu-float-range 360.0 960.0)))
|
||||
)
|
||||
(else
|
||||
(set! *lightning-time2* (the int (rand-vu-float-range 180.0 480.0)))
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(when (not (or (paused?) *lightning-frame-done*))
|
||||
(set! *lightning-time2* (+ *lightning-time2* -1))
|
||||
(when (zero? *lightning-time2*)
|
||||
(set! *lightning-index* (mod (+ *lightning-index* 1) arg2))
|
||||
(set! (-> s4-0 0) (logand (rand-uint31-gen *random-generator*) 7))
|
||||
(set! *lightning-time* 0)
|
||||
(let ((v1-24 *thunder-count*))
|
||||
(cond
|
||||
((zero? v1-24)
|
||||
(set! *thunder-id* *thunder-id0*)
|
||||
(set! *thunder-count* 1)
|
||||
)
|
||||
((= v1-24 1)
|
||||
(set! *thunder-id* *thunder-id1*)
|
||||
(set! *thunder-count* 2)
|
||||
)
|
||||
(else
|
||||
(set! *thunder-id* *thunder-id2*)
|
||||
(set! *thunder-count* 0)
|
||||
0
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (>= (-> *math-camera* trans y) -81920.0)
|
||||
(if arg6
|
||||
(sound-play-by-name
|
||||
(static-sound-name "thunder")
|
||||
*thunder-id*
|
||||
(the int (* 10.24 (rand-vu-float-range 25.0 75.0)))
|
||||
(the int (* 1524.0 (rand-vu-float-range -1.0 1.0)))
|
||||
0
|
||||
(the-as uint 1)
|
||||
(the-as vector #t)
|
||||
)
|
||||
(sound-play-by-name
|
||||
(static-sound-name "thunder")
|
||||
*thunder-id*
|
||||
(the int (* 10.24 (rand-vu-float-range 200.0 400.0)))
|
||||
(the int (* 1524.0 (rand-vu-float-range -1.0 1.0)))
|
||||
0
|
||||
(the-as uint 1)
|
||||
(the-as vector #t)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (not *lightning-frame-done*)
|
||||
(let ((gp-3 (the-as sound-rpc-set-param (get-sound-buffer-entry))))
|
||||
(set! (-> gp-3 command) (sound-command set-param))
|
||||
(set! (-> gp-3 id) *thunder-id0*)
|
||||
(let ((a1-23 (camera-pos)))
|
||||
(let ((s5-3 pp))
|
||||
(when (= a1-23 #t)
|
||||
(if
|
||||
(and
|
||||
s5-3
|
||||
(type-type? (-> s5-3 type) process-drawable)
|
||||
(nonzero? (-> (the-as process-drawable s5-3) root))
|
||||
)
|
||||
(set! a1-23 (-> (the-as process-drawable s5-3) root trans))
|
||||
(set! a1-23 (the-as vector #f))
|
||||
)
|
||||
)
|
||||
)
|
||||
(sound-trans-convert (-> gp-3 parms trans) a1-23)
|
||||
)
|
||||
(set! (-> gp-3 parms mask) (the-as uint 32))
|
||||
(-> gp-3 id)
|
||||
)
|
||||
(let ((gp-4 (the-as sound-rpc-set-param (get-sound-buffer-entry))))
|
||||
(set! (-> gp-4 command) (sound-command set-param))
|
||||
(set! (-> gp-4 id) *thunder-id1*)
|
||||
(let ((a1-25 (camera-pos)))
|
||||
(let ((s5-4 pp))
|
||||
(when (= a1-25 #t)
|
||||
(if
|
||||
(and
|
||||
s5-4
|
||||
(type-type? (-> s5-4 type) process-drawable)
|
||||
(nonzero? (-> (the-as process-drawable s5-4) root))
|
||||
)
|
||||
(set! a1-25 (-> (the-as process-drawable s5-4) root trans))
|
||||
(set! a1-25 (the-as vector #f))
|
||||
)
|
||||
)
|
||||
)
|
||||
(sound-trans-convert (-> gp-4 parms trans) a1-25)
|
||||
)
|
||||
(set! (-> gp-4 parms mask) (the-as uint 32))
|
||||
(-> gp-4 id)
|
||||
)
|
||||
(let ((gp-5 (the-as sound-rpc-set-param (get-sound-buffer-entry))))
|
||||
(set! (-> gp-5 command) (sound-command set-param))
|
||||
(set! (-> gp-5 id) *thunder-id2*)
|
||||
(let ((a1-27 (camera-pos)))
|
||||
(let ((s5-5 pp))
|
||||
(when (= a1-27 #t)
|
||||
(if
|
||||
(and
|
||||
s5-5
|
||||
(type-type? (-> s5-5 type) process-drawable)
|
||||
(nonzero? (-> (the-as process-drawable s5-5) root))
|
||||
)
|
||||
(set! a1-27 (-> (the-as process-drawable s5-5) root trans))
|
||||
(set! a1-27 (the-as vector #f))
|
||||
)
|
||||
)
|
||||
)
|
||||
(sound-trans-convert (-> gp-5 parms trans) a1-27)
|
||||
)
|
||||
(set! (-> gp-5 parms mask) (the-as uint 32))
|
||||
(-> gp-5 id)
|
||||
)
|
||||
)
|
||||
(set! *lightning-frame-done* #t)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition of type light-time-state
|
||||
(deftype light-time-state (structure)
|
||||
@ -1127,11 +1335,60 @@
|
||||
obj
|
||||
)
|
||||
|
||||
;; definition for symbol *lava-time*, type int
|
||||
(define *lava-time* 0)
|
||||
;; definition for symbol *lava-time*, type float
|
||||
(define *lava-time* (the-as float 0))
|
||||
|
||||
;; definition for function update-mood-lava
|
||||
;; ERROR: function was not converted to expressions. Cannot decompile.
|
||||
;; INFO: Return type mismatch float vs none.
|
||||
(defun update-mood-lava ((arg0 mood-context) (arg1 int) (arg2 int) (arg3 symbol))
|
||||
(let* ((s4-0 (&-> arg0 state arg2))
|
||||
(s1-0 (-> s4-0 16))
|
||||
(s2-0 (-> s4-0 17))
|
||||
)
|
||||
(when (not (paused?))
|
||||
(set! (-> s4-0 16) (+ s1-0 4))
|
||||
(set! *lava-time* (+ *lava-time* (rand-vu-float-range 64.0 2048.0)))
|
||||
)
|
||||
(let ((s0-0 (-> arg0 light-group 0 dir2))
|
||||
(f0-4 (+ 0.875 (* 0.125 (sin *lava-time*))))
|
||||
)
|
||||
(set-vector! (-> s0-0 direction) 0.0 -1.0 0.0 0.0)
|
||||
(set-vector! (-> s0-0 color) 1.0 0.364 0.0 1.0)
|
||||
(set! (-> s0-0 levels x) f0-4)
|
||||
)
|
||||
(let ((s0-1 (shr s1-0 6))
|
||||
(f30-2 (* 0.015625 (the float (logand s1-0 63))))
|
||||
)
|
||||
(when (!= s0-1 s2-0)
|
||||
(set!
|
||||
(-> (the-as (pointer float) (+ (* s0-1 4) (the-as uint s4-0))))
|
||||
(the float (the int (rand-vu-float-range 128.0 255.0)))
|
||||
)
|
||||
(set! (-> s4-0 17) s0-1)
|
||||
)
|
||||
(when arg3
|
||||
(let* ((v1-14 (logand (+ s0-1 -1) 3))
|
||||
(f1-11
|
||||
(*
|
||||
0.0078125
|
||||
(-> (the-as (pointer float) (+ (* s0-1 4) (the-as uint s4-0))))
|
||||
)
|
||||
)
|
||||
(f0-11
|
||||
(*
|
||||
0.0078125
|
||||
(-> (the-as (pointer float) (+ (* v1-14 4) (the-as uint s4-0))))
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> arg0 times (+ arg1 s0-1) w) (* f30-2 f1-11))
|
||||
(set! (-> arg0 times (+ arg1 v1-14) w) (* (- 1.0 f30-2) f0-11))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for function update-mood-caustics
|
||||
(defun update-mood-caustics ((arg0 mood-context) (arg1 int) (arg2 int))
|
||||
@ -2305,7 +2562,7 @@
|
||||
(clear-mood-times arg0)
|
||||
(update-mood-palette arg0 arg1 arg2)
|
||||
(if *time-of-day-effects*
|
||||
(update-mood-lava arg0 (the-as float 4) 0 #t)
|
||||
(update-mood-lava arg0 4 0 #t)
|
||||
)
|
||||
(update-mood-itimes arg0)
|
||||
0
|
||||
@ -2909,7 +3166,7 @@
|
||||
(if (not (paused?))
|
||||
(+! (-> arg0 some-byte) 1)
|
||||
)
|
||||
(update-mood-lava arg0 (the-as float 4) 0 #t)
|
||||
(update-mood-lava arg0 4 0 #t)
|
||||
)
|
||||
(update-mood-quick arg0 0 0 0 arg2)
|
||||
(update-mood-itimes arg0)
|
||||
@ -3760,4 +4017,8 @@
|
||||
)
|
||||
(update-mood-itimes arg0)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -4332,3 +4332,7 @@
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *citadel-mood* num-stars) 0.0)
|
||||
|
||||
|
||||
|
||||
|
||||
|
285
test/decompiler/reference/engine/ambient/mood_REF.gc
vendored
285
test/decompiler/reference/engine/ambient/mood_REF.gc
vendored
@ -958,11 +958,11 @@
|
||||
;; definition for symbol *lightning-index*, type int
|
||||
(define *lightning-index* 0)
|
||||
|
||||
;; definition for symbol *lightning-time*, type float
|
||||
(define *lightning-time* (the-as float 0))
|
||||
;; definition for symbol *lightning-time*, type int
|
||||
(define *lightning-time* 0)
|
||||
|
||||
;; definition for symbol *lightning-time2*, type float
|
||||
(define *lightning-time2* (the-as float 0))
|
||||
;; definition for symbol *lightning-time2*, type int
|
||||
(define *lightning-time2* 0)
|
||||
|
||||
;; definition for symbol *lightning-frame-done*, type symbol
|
||||
(define *lightning-frame-done* #f)
|
||||
@ -1003,7 +1003,219 @@
|
||||
)
|
||||
|
||||
;; definition for function update-mood-lightning
|
||||
;; ERROR: function was not converted to expressions. Cannot decompile.
|
||||
;; INFO: Return type mismatch symbol vs none.
|
||||
;; Used lq/sq
|
||||
(defun
|
||||
update-mood-lightning
|
||||
((arg0 mood-context)
|
||||
(arg1 int)
|
||||
(arg2 int)
|
||||
(arg3 int)
|
||||
(arg4 int)
|
||||
(arg5 float)
|
||||
(arg6 symbol)
|
||||
)
|
||||
(local-vars (a3-2 (array float)))
|
||||
(with-pp
|
||||
(set! (-> arg0 light-group 0 dir2 levels x) 0.0)
|
||||
(let* ((s4-0 (&-> arg0 state arg3))
|
||||
(a1-1 (+ *lightning-index* arg1))
|
||||
(v1-3 (+ *lightning-index* arg4))
|
||||
(a3-1 (-> s4-0 0))
|
||||
(a2-2 (/ *lightning-time* 2))
|
||||
)
|
||||
(cond
|
||||
((zero? *lightning-time2*)
|
||||
(cond
|
||||
((zero? a3-1)
|
||||
(set! a3-2 *flash0*)
|
||||
)
|
||||
((= a3-1 1)
|
||||
(set! a3-2 *flash1*)
|
||||
)
|
||||
((= a3-1 2)
|
||||
(set! a3-2 *flash2*)
|
||||
)
|
||||
((= a3-1 3)
|
||||
(set! a3-2 *flash3*)
|
||||
)
|
||||
((= a3-1 4)
|
||||
(set! a3-2 *flash4*)
|
||||
)
|
||||
((= a3-1 5)
|
||||
(set! a3-2 *flash5*)
|
||||
)
|
||||
((= a3-1 6)
|
||||
(set! a3-2 *flash6*)
|
||||
)
|
||||
(else
|
||||
(set! a3-2 *flash7*)
|
||||
)
|
||||
)
|
||||
(cond
|
||||
((< a2-2 (-> a3-2 length))
|
||||
(let ((f0-1 (-> a3-2 a2-2)))
|
||||
(set! (-> arg0 sky-times a1-1) f0-1)
|
||||
(when (not arg6)
|
||||
(set! (-> arg0 times v1-3 w) f0-1)
|
||||
(when (not *lightning-realtime-done*)
|
||||
(let* ((a1-11 (-> arg0 mood-lights-table data v1-3))
|
||||
(v1-6 (-> arg0 light-group 0 dir2))
|
||||
(f1-4
|
||||
(*
|
||||
(+
|
||||
(* 2.0 (-> a1-11 lgt-color x))
|
||||
(* 4.0 (-> a1-11 lgt-color y))
|
||||
(-> a1-11 lgt-color z)
|
||||
)
|
||||
f0-1
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> v1-6 direction quad) (-> a1-11 direction quad))
|
||||
(set! (-> v1-6 color quad) (-> a1-11 lgt-color quad))
|
||||
(set! (-> v1-6 levels x) f0-1)
|
||||
(set! (-> v1-6 levels y) f1-4)
|
||||
)
|
||||
(set! *lightning-realtime-done* #t)
|
||||
)
|
||||
)
|
||||
)
|
||||
(if (not (or (paused?) *lightning-frame-done*))
|
||||
(set! *lightning-time* (+ *lightning-time* 1))
|
||||
)
|
||||
)
|
||||
(arg6
|
||||
(set! *lightning-time2* (the int (rand-vu-float-range 360.0 960.0)))
|
||||
)
|
||||
(else
|
||||
(set! *lightning-time2* (the int (rand-vu-float-range 180.0 480.0)))
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(when (not (or (paused?) *lightning-frame-done*))
|
||||
(set! *lightning-time2* (+ *lightning-time2* -1))
|
||||
(when (zero? *lightning-time2*)
|
||||
(set! *lightning-index* (mod (+ *lightning-index* 1) arg2))
|
||||
(set! (-> s4-0 0) (logand (rand-uint31-gen *random-generator*) 7))
|
||||
(set! *lightning-time* 0)
|
||||
(let ((v1-24 *thunder-count*))
|
||||
(cond
|
||||
((zero? v1-24)
|
||||
(set! *thunder-id* *thunder-id0*)
|
||||
(set! *thunder-count* 1)
|
||||
)
|
||||
((= v1-24 1)
|
||||
(set! *thunder-id* *thunder-id1*)
|
||||
(set! *thunder-count* 2)
|
||||
)
|
||||
(else
|
||||
(set! *thunder-id* *thunder-id2*)
|
||||
(set! *thunder-count* 0)
|
||||
0
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (>= (-> *math-camera* trans y) -81920.0)
|
||||
(if arg6
|
||||
(sound-play-by-name
|
||||
(static-sound-name "thunder")
|
||||
*thunder-id*
|
||||
(the int (* 10.24 (rand-vu-float-range 25.0 75.0)))
|
||||
(the int (* 1524.0 (rand-vu-float-range -1.0 1.0)))
|
||||
0
|
||||
(the-as uint 1)
|
||||
(the-as vector #t)
|
||||
)
|
||||
(sound-play-by-name
|
||||
(static-sound-name "thunder")
|
||||
*thunder-id*
|
||||
(the int (* 10.24 (rand-vu-float-range 200.0 400.0)))
|
||||
(the int (* 1524.0 (rand-vu-float-range -1.0 1.0)))
|
||||
0
|
||||
(the-as uint 1)
|
||||
(the-as vector #t)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (not *lightning-frame-done*)
|
||||
(let ((gp-3 (the-as sound-rpc-set-param (get-sound-buffer-entry))))
|
||||
(set! (-> gp-3 command) (sound-command set-param))
|
||||
(set! (-> gp-3 id) *thunder-id0*)
|
||||
(let ((a1-23 (camera-pos)))
|
||||
(let ((s5-3 pp))
|
||||
(when (= a1-23 #t)
|
||||
(if
|
||||
(and
|
||||
s5-3
|
||||
(type-type? (-> s5-3 type) process-drawable)
|
||||
(nonzero? (-> (the-as process-drawable s5-3) root))
|
||||
)
|
||||
(set! a1-23 (-> (the-as process-drawable s5-3) root trans))
|
||||
(set! a1-23 (the-as vector #f))
|
||||
)
|
||||
)
|
||||
)
|
||||
(sound-trans-convert (-> gp-3 parms trans) a1-23)
|
||||
)
|
||||
(set! (-> gp-3 parms mask) (the-as uint 32))
|
||||
(-> gp-3 id)
|
||||
)
|
||||
(let ((gp-4 (the-as sound-rpc-set-param (get-sound-buffer-entry))))
|
||||
(set! (-> gp-4 command) (sound-command set-param))
|
||||
(set! (-> gp-4 id) *thunder-id1*)
|
||||
(let ((a1-25 (camera-pos)))
|
||||
(let ((s5-4 pp))
|
||||
(when (= a1-25 #t)
|
||||
(if
|
||||
(and
|
||||
s5-4
|
||||
(type-type? (-> s5-4 type) process-drawable)
|
||||
(nonzero? (-> (the-as process-drawable s5-4) root))
|
||||
)
|
||||
(set! a1-25 (-> (the-as process-drawable s5-4) root trans))
|
||||
(set! a1-25 (the-as vector #f))
|
||||
)
|
||||
)
|
||||
)
|
||||
(sound-trans-convert (-> gp-4 parms trans) a1-25)
|
||||
)
|
||||
(set! (-> gp-4 parms mask) (the-as uint 32))
|
||||
(-> gp-4 id)
|
||||
)
|
||||
(let ((gp-5 (the-as sound-rpc-set-param (get-sound-buffer-entry))))
|
||||
(set! (-> gp-5 command) (sound-command set-param))
|
||||
(set! (-> gp-5 id) *thunder-id2*)
|
||||
(let ((a1-27 (camera-pos)))
|
||||
(let ((s5-5 pp))
|
||||
(when (= a1-27 #t)
|
||||
(if
|
||||
(and
|
||||
s5-5
|
||||
(type-type? (-> s5-5 type) process-drawable)
|
||||
(nonzero? (-> (the-as process-drawable s5-5) root))
|
||||
)
|
||||
(set! a1-27 (-> (the-as process-drawable s5-5) root trans))
|
||||
(set! a1-27 (the-as vector #f))
|
||||
)
|
||||
)
|
||||
)
|
||||
(sound-trans-convert (-> gp-5 parms trans) a1-27)
|
||||
)
|
||||
(set! (-> gp-5 parms mask) (the-as uint 32))
|
||||
(-> gp-5 id)
|
||||
)
|
||||
)
|
||||
(set! *lightning-frame-done* #t)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition of type light-time-state
|
||||
(deftype light-time-state (structure)
|
||||
@ -1119,11 +1331,60 @@
|
||||
obj
|
||||
)
|
||||
|
||||
;; definition for symbol *lava-time*, type int
|
||||
(define *lava-time* 0)
|
||||
;; definition for symbol *lava-time*, type float
|
||||
(define *lava-time* (the-as float 0))
|
||||
|
||||
;; definition for function update-mood-lava
|
||||
;; ERROR: function was not converted to expressions. Cannot decompile.
|
||||
;; INFO: Return type mismatch float vs none.
|
||||
(defun update-mood-lava ((arg0 mood-context) (arg1 int) (arg2 int) (arg3 symbol))
|
||||
(let* ((s4-0 (&-> arg0 state arg2))
|
||||
(s1-0 (-> s4-0 16))
|
||||
(s2-0 (-> s4-0 17))
|
||||
)
|
||||
(when (not (paused?))
|
||||
(set! (-> s4-0 16) (+ s1-0 4))
|
||||
(set! *lava-time* (+ *lava-time* (rand-vu-float-range 64.0 2048.0)))
|
||||
)
|
||||
(let ((s0-0 (-> arg0 light-group 0 dir2))
|
||||
(f0-4 (+ 0.875 (* 0.125 (sin *lava-time*))))
|
||||
)
|
||||
(set-vector! (-> s0-0 direction) 0.0 -1.0 0.0 0.0)
|
||||
(set-vector! (-> s0-0 color) 1.0 0.364 0.0 1.0)
|
||||
(set! (-> s0-0 levels x) f0-4)
|
||||
)
|
||||
(let ((s0-1 (shr s1-0 6))
|
||||
(f30-2 (* 0.015625 (the float (logand s1-0 63))))
|
||||
)
|
||||
(when (!= s0-1 s2-0)
|
||||
(set!
|
||||
(-> (the-as (pointer float) (+ (* s0-1 4) (the-as uint s4-0))))
|
||||
(the float (the int (rand-vu-float-range 128.0 255.0)))
|
||||
)
|
||||
(set! (-> s4-0 17) s0-1)
|
||||
)
|
||||
(when arg3
|
||||
(let* ((v1-14 (logand (+ s0-1 -1) 3))
|
||||
(f1-11
|
||||
(*
|
||||
0.0078125
|
||||
(-> (the-as (pointer float) (+ (* s0-1 4) (the-as uint s4-0))))
|
||||
)
|
||||
)
|
||||
(f0-11
|
||||
(*
|
||||
0.0078125
|
||||
(-> (the-as (pointer float) (+ (* v1-14 4) (the-as uint s4-0))))
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> arg0 times (+ arg1 s0-1) w) (* f30-2 f1-11))
|
||||
(set! (-> arg0 times (+ arg1 v1-14) w) (* (- 1.0 f30-2) f0-11))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for function update-mood-caustics
|
||||
(defun update-mood-caustics ((arg0 mood-context) (arg1 int) (arg2 int))
|
||||
@ -2297,7 +2558,7 @@
|
||||
(clear-mood-times arg0)
|
||||
(update-mood-palette arg0 arg1 arg2)
|
||||
(if *time-of-day-effects*
|
||||
(update-mood-lava arg0 (the-as float 4) 0 #t)
|
||||
(update-mood-lava arg0 4 0 #t)
|
||||
)
|
||||
(update-mood-itimes arg0)
|
||||
0
|
||||
@ -2901,7 +3162,7 @@
|
||||
(if (not (paused?))
|
||||
(+! (-> arg0 some-byte) 1)
|
||||
)
|
||||
(update-mood-lava arg0 (the-as float 4) 0 #t)
|
||||
(update-mood-lava arg0 4 0 #t)
|
||||
)
|
||||
(update-mood-quick arg0 0 0 0 arg2)
|
||||
(update-mood-itimes arg0)
|
||||
@ -3753,3 +4014,7 @@
|
||||
(update-mood-itimes arg0)
|
||||
(none)
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user