mirror of
https://github.com/open-goal/jak-project
synced 2026-06-17 15:17:27 -04:00
93afb02cf4
This includes all the collision stuff needed to spawn `target`, decompiles the sparticle code and adds some of the PC hacks needed for merc to run (it doesn't work quite right and looks bad, likely due to a combination of code copied from Jak 2 and the time of day hacks). There are a bunch of temporary hacks (see commits) in place to prevent the game from crashing quite as much, but it is still extremely prone to doing so due to lots of missing functions/potentially bad decomp. --------- Co-authored-by: water <awaterford111445@gmail.com>
103 lines
5.2 KiB
Common Lisp
Vendored
Generated
103 lines
5.2 KiB
Common Lisp
Vendored
Generated
;;-*-Lisp-*-
|
|
(in-package goal)
|
|
|
|
;; definition of type collide-query
|
|
(deftype collide-query (structure)
|
|
"Very general collision-query structure. The meaning is different depending on where it used.
|
|
This has both inputs from the user, and collision results."
|
|
((best-other-tri collide-tri-result :inline)
|
|
(best-my-tri collide-tri-result :inline :overlay-at best-other-tri)
|
|
(ignore-processes process-tree 2)
|
|
(ignore-process0 process-tree :overlay-at (-> ignore-processes 0))
|
|
(ignore-process1 process-tree :overlay-at (-> ignore-processes 1))
|
|
(ignore-pat pat-surface)
|
|
(ignore-pat-s32 int32 :overlay-at ignore-pat)
|
|
(collide-with collide-spec)
|
|
(collide-with-s32 int32 :overlay-at collide-with)
|
|
(overlay-params uint32 3 :offset 112)
|
|
(bbox bounding-box :inline)
|
|
(bbox4w bounding-box4w :inline)
|
|
(bsphere sphere :inline)
|
|
(start-pos vector :inline)
|
|
(move-dist vector :inline)
|
|
(rlength vector :inline)
|
|
(exit-planes plane 2 :inline)
|
|
(radius float :overlay-at (-> exit-planes 0 data 3))
|
|
(inv-mat matrix :inline :offset 288)
|
|
(spheres (inline-array sphere) :overlay-at (-> overlay-params 0))
|
|
(num-spheres uint32 :overlay-at (-> overlay-params 1))
|
|
(solid-only symbol :overlay-at (-> overlay-params 2))
|
|
(best-dist float :overlay-at spheres)
|
|
(best-other-prim collide-shape-prim :overlay-at num-spheres)
|
|
(best-my-prim collide-shape-prim :overlay-at solid-only)
|
|
(move-vec vector :inline :overlay-at move-dist)
|
|
(best-u float :overlay-at best-dist)
|
|
(action-mask collide-action :offset 352)
|
|
(local-box4w bounding-box4w :inline)
|
|
(search-box bounding-box4w :inline)
|
|
(search-vector vector4w :inline)
|
|
(instance-mat matrix :inline)
|
|
(instance-ptr basic)
|
|
(x-addr uint32)
|
|
(x-step uint32)
|
|
(y-addr uint32)
|
|
(y-step uint32)
|
|
(z-addr uint32)
|
|
(z-step uint32)
|
|
)
|
|
)
|
|
|
|
;; definition for method 3 of type collide-query
|
|
(defmethod inspect ((this collide-query))
|
|
(when (not this)
|
|
(set! this this)
|
|
(goto cfg-4)
|
|
)
|
|
(format #t "[~8x] ~A~%" this 'collide-query)
|
|
(format #t "~1Tbest-other-tri: #<collide-tri-result @ #x~X>~%" (-> this best-other-tri))
|
|
(format #t "~1Tbest-my-tri: #<collide-tri-result @ #x~X>~%" (-> this best-other-tri))
|
|
(format #t "~1Tignore-processes[2] @ #x~X~%" (-> this ignore-processes))
|
|
(format #t "~1Tignore-process0: ~A~%" (-> this ignore-process0))
|
|
(format #t "~1Tignore-process1: ~A~%" (-> this ignore-process1))
|
|
(format #t "~1Tignore-pat: ~D~%" (-> this ignore-pat))
|
|
(format #t "~1Tcollide-with: ~D~%" (-> this collide-with))
|
|
(format #t "~1Toverlay-params[3] @ #x~X~%" (&-> this best-dist))
|
|
(format #t "~1Tbbox: #<bounding-box @ #x~X>~%" (-> this bbox))
|
|
(format #t "~1Tbbox4w: #<bounding-box4w @ #x~X>~%" (-> this bbox4w))
|
|
(format #t "~1Tbsphere: #<sphere @ #x~X>~%" (-> this bsphere))
|
|
(format #t "~1Tstart-pos: #<vector @ #x~X>~%" (-> this start-pos))
|
|
(format #t "~1Tmove-dist: #<vector @ #x~X>~%" (-> this move-dist))
|
|
(format #t "~1Trlength: #<vector @ #x~X>~%" (-> this rlength))
|
|
(format #t "~1Texit-planes[2] @ #x~X~%" (-> this exit-planes))
|
|
(format #t "~1Tradius: ~f~%" (-> this radius))
|
|
(format #t "~1Tinv-mat: #<matrix @ #x~X>~%" (-> this inv-mat))
|
|
(format #t "~1Tspheres: #x~X~%" (-> this best-dist))
|
|
(format #t "~1Tnum-spheres: ~D~%" (-> this best-other-prim))
|
|
(format #t "~1Tsolid-only: ~A~%" (-> this best-my-prim))
|
|
(format #t "~1Tbest-dist: ~f~%" (the-as float (-> this best-dist)))
|
|
(format #t "~1Tbest-other-prim: ~A~%" (-> this best-other-prim))
|
|
(format #t "~1Tbest-my-prim: ~A~%" (-> this best-my-prim))
|
|
(format #t "~1Tmove-vec: #<vector @ #x~X>~%" (-> this move-dist))
|
|
(format #t "~1Tbest-u: ~f~%" (the-as float (-> this best-dist)))
|
|
(format #t "~1Taction-mask: ~D~%" (-> this action-mask))
|
|
(format #t "~1Tlocal-box4w: #<bounding-box4w @ #x~X>~%" (-> this local-box4w))
|
|
(format #t "~1Tsearch-box: #<bounding-box4w @ #x~X>~%" (-> this search-box))
|
|
(format #t "~1Tsearch-vector: #<vector4w @ #x~X>~%" (-> this search-vector))
|
|
(format #t "~1Tinstance-mat: #<matrix @ #x~X>~%" (-> this instance-mat))
|
|
(format #t "~1Tinstance-ptr: ~A~%" (-> this instance-ptr))
|
|
(format #t "~1Tx-addr: ~D~%" (-> this x-addr))
|
|
(format #t "~1Tx-step: ~D~%" (-> this x-step))
|
|
(format #t "~1Ty-addr: ~D~%" (-> this y-addr))
|
|
(format #t "~1Ty-step: ~D~%" (-> this y-step))
|
|
(format #t "~1Tz-addr: ~D~%" (-> this z-addr))
|
|
(format #t "~1Tz-step: ~D~%" (-> this z-step))
|
|
(label cfg-4)
|
|
this
|
|
)
|
|
|
|
;; definition for symbol *collide-test-flag*, type symbol
|
|
(define *collide-test-flag* #f)
|
|
|
|
;; failed to figure out what this is:
|
|
0
|