Files
Hat Kid 93afb02cf4 decomp3: spawn target, add merc and particle buckets and some temporary hacks (#3445)
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>
2024-04-05 00:07:39 -04:00

103 lines
3.0 KiB
Common Lisp
Vendored
Generated

;;-*-Lisp-*-
(in-package goal)
;; definition of type script-form
(deftype script-form (structure)
((name symbol)
(spec pair)
(func (function script-context object))
)
:pack-me
(:methods
(script-form-method-9 () none)
)
)
;; definition for method 3 of type script-form
(defmethod inspect ((this script-form))
(when (not this)
(set! this this)
(goto cfg-4)
)
(format #t "[~8x] ~A~%" this 'script-form)
(format #t "~1Tname: ~A~%" (-> this name))
(format #t "~1Tspec: ~A~%" (-> this spec))
(format #t "~1Tfunc: ~A~%" (-> this func))
(label cfg-4)
this
)
;; definition of type script-context
(deftype script-context (structure)
((load-state load-state)
(key object)
(process process)
(trans vector)
(side-effect? symbol)
(got-error? symbol)
(expr pair)
(param-count int32)
(param object 16)
(param-type object 16)
)
(:methods
(new (symbol type object process vector) _type_)
(eval! (_type_ pair) object)
(script-context-method-10 (_type_ object pair) object)
(script-context-method-11 (_type_ pair pair symbol) symbol)
)
)
;; definition for method 3 of type script-context
(defmethod inspect ((this script-context))
(when (not this)
(set! this this)
(goto cfg-10)
)
(format #t "[~8x] ~A~%" this 'script-context)
(format #t "~1Tload-state: ~A~%" (-> this load-state))
(format #t "~1Tkey: ~A~%" (-> this key))
(format #t "~1Tprocess: ~A~%" (-> this process))
(format #t "~1Ttrans: #<vector @ #x~X>~%" (-> this trans))
(format #t "~1Tside-effect?: ~A~%" (-> this side-effect?))
(format #t "~1Tgot-error?: ~A~%" (-> this got-error?))
(format #t "~1Texpr: ~A~%" (-> this expr))
(format #t "~1Tparam-count: ~D~%" (-> this param-count))
(format #t "~1Tparam[16] @ #x~X~%" (-> this param))
(dotimes (s5-0 (-> this param-count))
(format #t "~T [~D]~1Tparam: ~`object`P~%" s5-0 (-> this param s5-0))
)
(format #t "~1Tparam-type[16] @ #x~X~%" (-> this param-type))
(dotimes (s5-1 (-> this param-count))
(format #t "~T [~D]~1Tparam-type: ~`object`P~%" s5-1 (-> this param-type s5-1))
)
(label cfg-10)
this
)
;; definition for method 0 of type script-context
;; WARN: Return type mismatch structure vs script-context.
(defmethod new script-context ((allocation symbol) (type-to-make type) (arg0 object) (arg1 process) (arg2 vector))
(let ((t9-0 (method-of-type structure new))
(v1-1 type-to-make)
)
(-> type-to-make size)
(let ((v0-0 (t9-0 allocation v1-1)))
(set! (-> (the-as script-context v0-0) key) arg0)
(set! (-> (the-as script-context v0-0) process) arg1)
(set! (-> (the-as script-context v0-0) load-state) *load-state*)
(set! (-> (the-as script-context v0-0) side-effect?) #t)
(set! (-> (the-as script-context v0-0) got-error?) #f)
(set! (-> (the-as script-context v0-0) trans) arg2)
(the-as script-context v0-0)
)
)
)
;; failed to figure out what this is:
0