Files
jak-project/test/decompiler/reference/jak3/engine/draw/drawable-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

63 lines
1.9 KiB
Common Lisp
Vendored
Generated

;;-*-Lisp-*-
(in-package goal)
;; definition of type drawable
(deftype drawable (basic)
"Base class for `drawable` scene graph system.
This base class is really abused in many ways, and the meaning of the various methods differ depending
on the exact type. Not even the ID and bsphere here are always populated.
This is used for very high level organization of different rendering data types, and also very low-level
culling/rendering optimizations. It supports both array-of-references and inline-array containers with precise
control over memory layout for use with DMA."
((id int16)
(bsphere vector :inline)
)
(:methods
(login (_type_) _type_)
(draw (_type_) none)
(drawable-method-11 () none)
(drawable-method-12 () none)
(collect-stats (_type_) none)
(debug-draw (_type_) none)
(unpack-vis (_type_ (pointer int8) (pointer int8)) (pointer int8))
(collect-regions (_type_ sphere int region-prim-list) none)
)
)
;; definition for method 3 of type drawable
(defmethod inspect ((this drawable))
(when (not this)
(set! this this)
(goto cfg-4)
)
(format #t "[~8x] ~A~%" this (-> this type))
(format #t "~1Tid: ~D~%" (-> this id))
(format #t "~1Tbsphere: ~`vector`P~%" (-> this bsphere))
(label cfg-4)
this
)
;; definition of type drawable-error
(deftype drawable-error (drawable)
"A drawable which just represents an error. When drawn, it simply displays a sphere with an error message."
((name string)
)
)
;; definition for method 3 of type drawable-error
(defmethod inspect ((this drawable-error))
(when (not this)
(set! this this)
(goto cfg-4)
)
(format #t "[~8x] ~A~%" this (-> this type))
(format #t "~1Tid: ~D~%" (-> this id))
(format #t "~1Tbsphere: ~`vector`P~%" (-> this bsphere))
(format #t "~1Tname: ~A~%" (-> this name))
(label cfg-4)
this
)
;; failed to figure out what this is:
0