jak-project/goal_src/jak2/engine/level/region-h.gc
water111 f7bd0752f8
[decomp] Decompile first batch of files in engine (#1787)
* wip

* getting stuff set up so we can actually run test cases

* better handle block entry stuff

* types2 working on gstring

* comments

* math ref working

* up to first stack stuff

* stack fixes

* bounding box

* math stuff is working

* float fixes

* temp debug for (method 9 profile-array)

* stupid stupid bug

* debugging

* everything is broken

* some amount of type stuff works

* bitfield

* texture bitfields not working

* temp

* types

* more stuff

* type check

* temp

* float related fixes for light and res problems

* revisit broken files, fix bugs

* more types

* vector debug

* bug fixes for decompiler crashes in harder functions

* update goal_src
2022-08-24 00:29:51 -04:00

136 lines
3.6 KiB
Common Lisp

;;-*-Lisp-*-
(in-package goal)
;; name: region-h.gc
;; name in dgo: region-h
;; dgos: ENGINE, GAME
;; DECOMP BEGINS
(deftype region (structure)
((id uint32 :offset-assert 0)
(on-enter basic :offset-assert 4)
(on-inside basic :offset-assert 8)
(on-exit basic :offset-assert 12)
)
:method-count-assert 10
:size-assert #x10
:flag-assert #xa00000010
(:methods
(region-method-9 () none 9)
)
)
(deftype region-array (inline-array-class)
((data region :inline :dynamic :offset-assert 16)
)
:method-count-assert 9
:size-assert #x10
:flag-assert #x900000010
)
(set! (-> region-array heap-base) (the-as uint 16))
(deftype drawable-region-prim (drawable)
((region region :offset 8)
)
:method-count-assert 20
:size-assert #x20
:flag-assert #x1400000020
(:methods
(drawable-region-prim-method-17 () none 17)
(drawable-region-prim-method-18 () none 18)
(drawable-region-prim-method-19 () none 19)
)
)
(deftype drawable-tree-region-prim (drawable-tree)
((name basic :offset 8)
(data2 drawable-inline-array :dynamic :offset 32)
)
:method-count-assert 19
:size-assert #x20
:flag-assert #x1300000020
(:methods
(drawable-tree-region-prim-method-17 () none 17)
(debug-print (_type_ vector object) none 18)
)
)
(defmethod inspect drawable-tree-region-prim ((obj drawable-tree-region-prim))
(when (not obj)
(return obj)
)
(format #t "[~8x] ~A~%" obj (-> obj type))
(format #t "~1Tid: ~D~%" (-> obj id))
(format #t "~1Tbsphere: ~`vector`P~%" (-> obj bsphere))
(format #t "~1Tlength: ~D~%" (-> obj length))
(format #t "~1Tdata[0] @ #x~X~%" (-> obj data))
(dotimes (s5-0 (-> obj length))
(format #t "~T [~D]~1Tdata: ~A~%" s5-0 (-> obj data s5-0))
)
(format #t "~1Tname: ~A~%" (-> obj name))
obj
)
(deftype drawable-inline-array-region-prim (drawable-inline-array)
((data drawable-region-prim 1 :inline :offset-assert 32)
(pad uint8 4 :offset-assert 64)
)
:method-count-assert 17
:size-assert #x44
:flag-assert #x1100000044
)
(deftype drawable-region-sphere (drawable-region-prim)
()
:method-count-assert 20
:size-assert #x20
:flag-assert #x1400000020
)
(deftype region-face-data (structure)
((normal vector :inline :offset-assert 0)
(normal-offset float :offset 12)
(num-points uint32 :offset-assert 16)
(points vector :inline :dynamic :offset-assert 32)
)
:method-count-assert 9
:size-assert #x20
:flag-assert #x900000020
)
(deftype drawable-region-face (drawable-region-prim)
((data region-face-data :offset 12)
)
:method-count-assert 20
:size-assert #x20
:flag-assert #x1400000020
)
(deftype region-face-array (inline-array-class)
((data region-face-data :dynamic :offset 20)
)
:method-count-assert 9
:size-assert #x14
:flag-assert #x900000014
)
(set! (-> region-face-array heap-base) (the-as uint 32))
(deftype drawable-region-volume (drawable-region-prim)
((faces region-face-array :offset 12)
)
:method-count-assert 20
:size-assert #x20
:flag-assert #x1400000020
)
(deftype region-prim-list (structure)
((num-items int32 :offset-assert 0)
(items drawable-region-prim 320 :offset-assert 4)
)
:method-count-assert 9
:size-assert #x504
:flag-assert #x900000504
)