Files
jak-project/test/decompiler/reference/jak3/engine/sound/speech-h_REF.gc
T
Hat Kid 2969833b2d decomp3: more engine stuff, detect non-virtual state inheritance (#3377)
- `speech`
- `ambient`
- `water-h`
- `vol-h`
- `generic-obs`
- `carry-h`
- `pilot-h`
- `board-h`
- `gun-h`
- `flut-h`
- `indax-h`
- `lightjak-h`
- `darkjak-h`
- `target-util`
- `history`
- `collide-reaction-target`
- `logic-target`
- `sidekick`
- `projectile`
- `voicebox`
- `ragdoll-edit`
- most of `ragdoll` (not added to gsrc yet)
- `curves`
- `find-nearest`
- `lightjak-wings`
- `target-handler`
- `target-anim`
- `target`
- `target2`
- `target-swim`
- `target-lightjak`
- `target-invisible`
- `target-death`
- `target-gun`
- `gun-util`
- `board-util`
- `target-board`
- `board-states`
- `mech-h`
- `vol`
- `vent`
- `viewer`
- `gem-pool`
- `collectables`
- `crates`
- `secrets-menu`

Additionally:

- Detection of non-virtual state inheritance
- Added a config file that allows overriding the process stack size set
by `stack-size-set!` calls
- Fix for integer multiplication with `r0`
- Fixed detection for the following macros:
	- `static-attack-info`
- `defpart` and `defpartgroup` (probably still needs adjustments, uses
Jak 2 implementation at the moment)
- `sound-play` (Jak 3 seems to always call `sound-play-by-name` with a
`sound-group` of 0, so the macro has been temporarily defaulted to use
that)

One somewhat significant change made here that should be noted is that
the return type of `process::init-from-entity!` was changed to `object`.
I've been thinking about this for a while, since it looks a bit nicer
without the `(none)` at the end and I have recently encountered init
methods that early return `0`.
2024-03-03 15:15:27 -05:00

167 lines
5.4 KiB
Common Lisp
Vendored
Generated

;;-*-Lisp-*-
(in-package goal)
;; definition of type speech-type-info
(deftype speech-type-info (structure)
((channel uint8)
(flags speech-type-flag)
(priority int8)
(delay-pre-time uint16)
(request-timeout uint16)
(min-delay uint16)
(max-delay uint16)
(delay uint16)
(play-index int16)
(list (array string))
(time uint64)
)
)
;; definition for method 3 of type speech-type-info
(defmethod inspect ((this speech-type-info))
(when (not this)
(set! this this)
(goto cfg-12)
)
(format #t "[~8x] ~A~%" this 'speech-type-info)
(format #t "~1Tchannel: ~D~%" (-> this channel))
(format #t "~1Tflags: #x~X : (speech-type-flag " (-> this flags))
(let ((s5-0 (-> this flags)))
(if (= (logand s5-0 (speech-type-flag linked-next)) (speech-type-flag linked-next))
(format #t "linked-next ")
)
(if (= (logand s5-0 (speech-type-flag first-time)) (speech-type-flag first-time))
(format #t "first-time ")
)
(if (= (logand s5-0 (speech-type-flag random-order)) (speech-type-flag random-order))
(format #t "random-order ")
)
(if (= (logand s5-0 (speech-type-flag skip-first-time)) (speech-type-flag skip-first-time))
(format #t "skip-first-time ")
)
)
(format #t ")~%")
(format #t "~1Tpriority: ~D~%" (-> this priority))
(format #t "~1Tdelay-pre-time: ~D~%" (-> this delay-pre-time))
(format #t "~1Trequest-timeout: ~D~%" (-> this request-timeout))
(format #t "~1Tmin-delay: ~D~%" (-> this min-delay))
(format #t "~1Tmax-delay: ~D~%" (-> this max-delay))
(format #t "~1Tdelay: ~D~%" (-> this delay))
(format #t "~1Tplay-index: ~D~%" (-> this play-index))
(format #t "~1Tlist: ~A~%" (-> this list))
(format #t "~1Ttime: ~D~%" (-> this time))
(label cfg-12)
this
)
;; definition of type speech-request
(deftype speech-request (structure)
((handle handle)
(time time-frame)
(priority float)
(speech-type speech-type)
)
:pack-me
)
;; definition for method 3 of type speech-request
(defmethod inspect ((this speech-request))
(when (not this)
(set! this this)
(goto cfg-4)
)
(format #t "[~8x] ~A~%" this 'speech-request)
(format #t "~1Thandle: ~D~%" (-> this handle))
(format #t "~1Ttime: ~D~%" (-> this time))
(format #t "~1Tpriority: ~f~%" (-> this priority))
(format #t "~1Tspeech-type: ~D~%" (-> this speech-type))
(label cfg-4)
this
)
;; definition of type speech-channel
(deftype speech-channel (structure)
((flags speech-channel-flag)
(gui-channel gui-channel)
(delay uint16)
(id sound-id)
(update-time time-frame)
(start-time time-frame)
(end-time time-frame)
(request speech-request :inline)
(last-request speech-request :inline)
(target-pos vector :inline)
(speech-table (pointer speech-type-info))
)
(:methods
(speech-channel-method-9 (_type_ process-drawable speech-type) int)
(speech-channel-method-10 (_type_ handle) none)
(speech-channel-method-11 (_type_) none)
(reset-channel! (_type_) none)
(init! (_type_) none)
(speech-channel-method-14 (_type_ speech-type float) none)
)
)
;; definition for method 3 of type speech-channel
(defmethod inspect ((this speech-channel))
(when (not this)
(set! this this)
(goto cfg-6)
)
(format #t "[~8x] ~A~%" this 'speech-channel)
(format #t "~1Tflags: #x~X : (speech-channel-flag " (-> this flags))
(let ((a0-3 (-> this flags)))
(if (= (logand a0-3 (speech-channel-flag disable)) (speech-channel-flag disable))
(format #t "disable ")
)
)
(format #t ")~%")
(format #t "~1Tgui-channel: ~D~%" (-> this gui-channel))
(format #t "~1Tdelay: ~D~%" (-> this delay))
(format #t "~1Tid: ~D~%" (-> this id))
(format #t "~1Tupdate-time: ~D~%" (-> this update-time))
(format #t "~1Tstart-time: ~D~%" (-> this start-time))
(format #t "~1Tend-time: ~D~%" (-> this end-time))
(format #t "~1Trequest: #<speech-request @ #x~X>~%" (-> this request))
(format #t "~1Tlast-request: #<speech-request @ #x~X>~%" (-> this last-request))
(format #t "~1Ttarget-pos: #<vector @ #x~X>~%" (-> this target-pos))
(format #t "~1Tspeech-table: #x~X~%" (-> this speech-table))
(label cfg-6)
this
)
;; definition of type speech-control
(deftype speech-control (structure)
((channel-array speech-channel 2 :inline)
(speech-table speech-type-info 61)
)
(:methods
(speech-table-reset! (_type_) none)
(speech-table-set! (_type_ speech-type speech-type-info) none)
(speech-control-method-11 (_type_) none)
(speech-control-method-12 (_type_ process-drawable speech-type) none)
(speech-control-method-13 (_type_ process-drawable speech-type int) none)
(speech-control-method-14 (_type_ handle) none)
(speech-control-method-15 (_type_) none)
(speech-control-method-16 (_type_) none)
(speech-control-method-17 (_type_ speech-type float) none)
)
)
;; definition for method 3 of type speech-control
(defmethod inspect ((this speech-control))
(when (not this)
(set! this this)
(goto cfg-4)
)
(format #t "[~8x] ~A~%" this 'speech-control)
(format #t "~1Tchannel-array[2] @ #x~X~%" (-> this channel-array))
(format #t "~1Tspeech-table[61] @ #x~X~%" (-> this speech-table))
(label cfg-4)
this
)
;; failed to figure out what this is:
0