deftype and defmethod syntax major changes (#3094)

Major change to how `deftype` shows up in our code:
- the decompiler will no longer emit the `offset-assert`,
`method-count-assert`, `size-assert` and `flag-assert` parameters. There
are extremely few cases where having this in the decompiled code is
helpful, as the types there come from `all-types` which already has
those parameters. This also doesn't break type consistency because:
  - the asserts aren't compared.
- the first step of the test uses `all-types`, which has the asserts,
which will throw an error if they're bad.
- the decompiler won't emit the `heap-base` parameter unless necessary
now.
- the decompiler will try its hardest to turn a fixed-offset field into
an `overlay-at` field. It falls back to the old offset if all else
fails.
- `overlay-at` now supports field "dereferencing" to specify the offset
that's within a field that's a structure, e.g.:
```lisp
(deftype foobar (structure)
  ((vec    vector  :inline)
   (flags  int32   :overlay-at (-> vec w))
   )
  )
```
in this structure, the offset of `flags` will be 12 because that is the
final offset of `vec`'s `w` field within this structure.
- **removed ID from all method declarations.** IDs are only ever
automatically assigned now. Fixes #3068.
- added an `:overlay` parameter to method declarations, in order to
declare a new method that goes on top of a previously-defined method.
Syntax is `:overlay <method-name>`. Please do not ever use this.
- added `state-methods` list parameter. This lets you quickly specify a
list of states to be put in the method table. Same syntax as the
`states` list parameter. The decompiler will try to put as many states
in this as it can without messing with the method ID order.

Also changes `defmethod` to make the first type definition (before the
arguments) optional. The type can now be inferred from the first
argument. Fixes #3093.

---------

Co-authored-by: Hat Kid <6624576+Hat-Kid@users.noreply.github.com>
This commit is contained in:
ManDude
2023-10-30 03:20:02 +00:00
committed by GitHub
parent 09536c68ac
commit cd68cb671e
2079 changed files with 94384 additions and 117066 deletions
+88 -103
View File
@@ -3,21 +3,18 @@
;; definition of type bsp-node
(deftype bsp-node (structure)
((front int16 :offset-assert 0)
(back int16 :offset-assert 2)
(front-box-min vector4b :inline :offset-assert 4)
(front-box-max vector4b :inline :offset-assert 8)
(back-box-min vector4b :inline :offset-assert 12)
(back-box-max vector4b :inline :offset-assert 16)
((front int16)
(back int16)
(front-box-min vector4b :inline)
(front-box-max vector4b :inline)
(back-box-min vector4b :inline)
(back-box-max vector4b :inline)
)
:pack-me
:method-count-assert 9
:size-assert #x14
:flag-assert #x900000014
)
;; definition for method 3 of type bsp-node
(defmethod inspect bsp-node ((this bsp-node))
(defmethod inspect ((this bsp-node))
(when (not this)
(set! this this)
(goto cfg-4)
@@ -35,83 +32,77 @@
;; definition of type bsp-header
(deftype bsp-header (drawable)
((info file-info :offset 4)
(all-visible-list (pointer uint16) :offset-assert 32)
(visible-list-length int16 :offset-assert 36)
(extra-vis-list-length int16 :offset-assert 38)
(drawable-trees drawable-tree-array :offset-assert 40)
(pat pointer :offset-assert 44)
(pat-length int32 :offset-assert 48)
(texture-remap-table (pointer uint64) :offset-assert 52)
(texture-remap-table-len int32 :offset-assert 56)
(texture-ids (pointer texture-id) :offset-assert 60)
(texture-page-count int32 :offset-assert 64)
(unknown-basic basic :offset-assert 68)
(name symbol :offset-assert 72)
(nickname symbol :offset-assert 76)
(vis-info level-vis-info 8 :offset-assert 80)
(actors drawable-inline-array-actor :offset-assert 112)
(cameras (array entity-camera) :offset-assert 116)
(nodes (inline-array bsp-node) :offset-assert 120)
(level level :offset-assert 124)
(current-leaf-idx uint16 :offset-assert 128)
(texture-flags texture-page-flag 10 :offset-assert 130)
(cam-outside-bsp uint8 :offset 152)
(cam-using-back uint8 :offset-assert 153)
(cam-box-idx uint16 :offset-assert 154)
(ambients symbol :offset-assert 156)
(subdivide-close float :offset-assert 160)
(subdivide-far float :offset-assert 164)
(race-meshes (array entity-race-mesh) :offset-assert 168)
(actor-birth-order (pointer uint32) :offset-assert 172)
(light-hash light-hash :offset-assert 176)
(nav-meshes (array entity-nav-mesh) :offset-assert 180)
(actor-groups (array actor-group) :offset-assert 184)
(region-trees (array drawable-tree-region-prim) :offset-assert 188)
(region-array region-array :offset-assert 192)
(collide-hash collide-hash :offset-assert 196)
(wind-array uint32 :offset 200)
(wind-array-length int32 :offset 204)
(city-level-info city-level-info :offset 208)
(vis-spheres vector-array :offset 216)
(vis-spheres-length uint32 :offset 248)
(region-tree drawable-tree-region-prim :offset 252)
(tfrag-masks texture-masks-array :offset-assert 256)
(tfrag-closest (pointer float) :offset-assert 260)
(tfrag-mask-count uint32 :offset 260)
(shrub-masks texture-masks-array :offset-assert 264)
(shrub-closest (pointer float) :offset-assert 268)
(shrub-mask-count uint32 :offset 268)
(alpha-masks texture-masks-array :offset-assert 272)
(alpha-closest (pointer float) :offset-assert 276)
(alpha-mask-count uint32 :offset 276)
(water-masks texture-masks-array :offset-assert 280)
(water-closest (pointer float) :offset-assert 284)
(water-mask-count uint32 :offset 284)
(bsp-scale vector :inline :offset-assert 288)
(bsp-offset vector :inline :offset-assert 304)
(end uint8 :offset 399)
((info file-info :overlay-at id)
(all-visible-list (pointer uint16))
(visible-list-length int16)
(extra-vis-list-length int16)
(drawable-trees drawable-tree-array)
(pat pointer)
(pat-length int32)
(texture-remap-table (pointer uint64))
(texture-remap-table-len int32)
(texture-ids (pointer texture-id))
(texture-page-count int32)
(unknown-basic basic)
(name symbol)
(nickname symbol)
(vis-info level-vis-info 8)
(actors drawable-inline-array-actor)
(cameras (array entity-camera))
(nodes (inline-array bsp-node))
(level level)
(current-leaf-idx uint16)
(texture-flags texture-page-flag 10)
(cam-outside-bsp uint8 :offset 152)
(cam-using-back uint8)
(cam-box-idx uint16)
(ambients symbol)
(subdivide-close float)
(subdivide-far float)
(race-meshes (array entity-race-mesh))
(actor-birth-order (pointer uint32))
(light-hash light-hash)
(nav-meshes (array entity-nav-mesh))
(actor-groups (array actor-group))
(region-trees (array drawable-tree-region-prim))
(region-array region-array)
(collide-hash collide-hash)
(wind-array uint32 :offset 200)
(wind-array-length int32 :offset 204)
(city-level-info city-level-info :offset 208)
(vis-spheres vector-array :offset 216)
(vis-spheres-length uint32 :offset 248)
(region-tree drawable-tree-region-prim :offset 252)
(tfrag-masks texture-masks-array)
(tfrag-closest (pointer float))
(tfrag-mask-count uint32 :overlay-at tfrag-closest)
(shrub-masks texture-masks-array)
(shrub-closest (pointer float))
(shrub-mask-count uint32 :overlay-at shrub-closest)
(alpha-masks texture-masks-array)
(alpha-closest (pointer float))
(alpha-mask-count uint32 :overlay-at alpha-closest)
(water-masks texture-masks-array)
(water-closest (pointer float))
(water-mask-count uint32 :overlay-at water-closest)
(bsp-scale vector :inline)
(bsp-offset vector :inline)
(end uint8 :offset 399)
)
:method-count-assert 19
:size-assert #x190
:flag-assert #x1300000190
(:methods
(birth (_type_) none 17)
(deactivate-entities (_type_) none 18)
(birth (_type_) none)
(deactivate-entities (_type_) none)
)
)
;; definition of type game-level
(deftype game-level (basic)
((master-bsp basic :offset-assert 4)
((master-bsp basic)
)
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
;; definition for method 3 of type game-level
(defmethod inspect game-level ((this game-level))
(defmethod inspect ((this game-level))
(when (not this)
(set! this this)
(goto cfg-4)
@@ -124,22 +115,19 @@
;; definition of type view-frustum
(deftype view-frustum (structure)
((hither-top-left vector :inline :offset-assert 0)
(hither-top-right vector :inline :offset-assert 16)
(hither-bottom-left vector :inline :offset-assert 32)
(hither-bottom-right vector :inline :offset-assert 48)
(yon-top-left vector :inline :offset-assert 64)
(yon-top-right vector :inline :offset-assert 80)
(yon-bottom-left vector :inline :offset-assert 96)
(yon-bottom-right vector :inline :offset-assert 112)
((hither-top-left vector :inline)
(hither-top-right vector :inline)
(hither-bottom-left vector :inline)
(hither-bottom-right vector :inline)
(yon-top-left vector :inline)
(yon-top-right vector :inline)
(yon-bottom-left vector :inline)
(yon-bottom-right vector :inline)
)
:method-count-assert 9
:size-assert #x80
:flag-assert #x900000080
)
;; definition for method 3 of type view-frustum
(defmethod inspect view-frustum ((this view-frustum))
(defmethod inspect ((this view-frustum))
(when (not this)
(set! this this)
(goto cfg-4)
@@ -158,7 +146,7 @@
)
;; definition for method 3 of type bsp-header
(defmethod inspect bsp-header ((this bsp-header))
(defmethod inspect ((this bsp-header))
(format #t "[~8x] ~A~%" this (-> this type))
(format #t "~Tall-visible-list: #x~X~%" (-> this all-visible-list))
(format #t "~Tvisible-list-length: ~D~%" (-> this visible-list-length))
@@ -217,24 +205,21 @@
;; definition of type collide-stats
(deftype collide-stats (structure)
((calls uint32 :offset-assert 0)
(spheres uint32 :offset-assert 4)
(nodes uint32 :offset-assert 8)
(frags uint32 :offset-assert 12)
(tris uint32 :offset-assert 16)
(output uint32 :offset-assert 20)
(pad0 uint32 2 :offset-assert 24)
(total-target uint32 8 :offset-assert 32)
(target-cache-fill uint32 8 :offset-assert 64)
(target-ray-poly uint32 6 :offset-assert 96)
((calls uint32)
(spheres uint32)
(nodes uint32)
(frags uint32)
(tris uint32)
(output uint32)
(pad0 uint32 2)
(total-target uint32 8)
(target-cache-fill uint32 8)
(target-ray-poly uint32 6)
)
:method-count-assert 9
:size-assert #x78
:flag-assert #x900000078
)
;; definition for method 3 of type collide-stats
(defmethod inspect collide-stats ((this collide-stats))
(defmethod inspect ((this collide-stats))
(when (not this)
(set! this this)
(goto cfg-4)
+6 -6
View File
@@ -27,7 +27,7 @@
)
;; definition for method 8 of type bsp-header
(defmethod mem-usage bsp-header ((this bsp-header) (arg0 memory-usage-block) (arg1 int))
(defmethod mem-usage ((this bsp-header) (arg0 memory-usage-block) (arg1 int))
(set! (-> arg0 work-bsp) this)
(when (nonzero? (-> this info))
(set! (-> arg0 length) (max 85 (-> arg0 length)))
@@ -126,7 +126,7 @@
)
;; definition for method 9 of type bsp-header
(defmethod login bsp-header ((this bsp-header))
(defmethod login ((this bsp-header))
(if (nonzero? (-> this drawable-trees))
(login (-> this drawable-trees))
)
@@ -151,7 +151,7 @@
;; definition for method 10 of type bsp-header
;; INFO: Used lq/sq
;; WARN: Return type mismatch int vs none.
(defmethod draw bsp-header ((this bsp-header) (arg0 bsp-header) (arg1 display-frame))
(defmethod draw ((this bsp-header) (arg0 bsp-header) (arg1 display-frame))
(local-vars (a3-4 uint128) (a3-5 uint128))
(rlet ((vf16 :class vf)
(vf17 :class vf)
@@ -272,7 +272,7 @@
;; definition for method 14 of type bsp-header
;; WARN: Return type mismatch int vs none.
(defmethod debug-draw bsp-header ((this bsp-header) (arg0 drawable) (arg1 display-frame))
(defmethod debug-draw ((this bsp-header) (arg0 drawable) (arg1 display-frame))
(rlet ((vf16 :class vf)
(vf17 :class vf)
(vf18 :class vf)
@@ -332,7 +332,7 @@
;; definition for method 13 of type bsp-header
;; WARN: Return type mismatch int vs none.
(defmethod collect-stats bsp-header ((this bsp-header))
(defmethod collect-stats ((this bsp-header))
(rlet ((vf16 :class vf)
(vf17 :class vf)
(vf18 :class vf)
@@ -493,7 +493,7 @@
;; definition for method 16 of type bsp-header
;; WARN: Return type mismatch int vs none.
(defmethod collect-regions bsp-header ((this bsp-header) (arg0 sphere) (arg1 int) (arg2 region-prim-list))
(defmethod collect-regions ((this bsp-header) (arg0 sphere) (arg1 int) (arg2 region-prim-list))
"Determines the number of [[drawable]]s in the `obj` that overlap the given `area-of-interest` this number is stored in the `region-list`'s item count
@param area-of-interest The area defined by a sphere that we care about overlaps
@param _count The amount of [[drawable]]s in the object to enumerate through
+235 -250
View File
@@ -3,27 +3,24 @@
;; definition of type level-vis-info
(deftype level-vis-info (basic)
((level level :offset-assert 4)
(from-level symbol :offset-assert 8)
(from-bsp bsp-header :offset-assert 12)
(flags vis-info-flag :offset-assert 16)
(length uint32 :offset-assert 20)
(allocated-length uint32 :offset-assert 24)
(dictionary-length uint32 :offset-assert 28)
(dictionary uint32 :offset-assert 32)
(string-block uint32 :offset-assert 36)
(ramdisk uint32 :offset-assert 40)
(vis-bits uint32 :offset-assert 44)
(current-vis-string uint32 :offset-assert 48)
(vis-string uint32 :dynamic :offset-assert 52)
((level level)
(from-level symbol)
(from-bsp bsp-header)
(flags vis-info-flag)
(length uint32)
(allocated-length uint32)
(dictionary-length uint32)
(dictionary uint32)
(string-block uint32)
(ramdisk uint32)
(vis-bits uint32)
(current-vis-string uint32)
(vis-string uint32 :dynamic)
)
:method-count-assert 9
:size-assert #x34
:flag-assert #x900000034
)
;; definition for method 3 of type level-vis-info
(defmethod inspect level-vis-info ((this level-vis-info))
(defmethod inspect ((this level-vis-info))
(when (not this)
(set! this this)
(goto cfg-68)
@@ -147,84 +144,81 @@
;; definition for method 5 of type level-vis-info
;; WARN: Return type mismatch uint vs int.
(defmethod asize-of level-vis-info ((this level-vis-info))
(defmethod asize-of ((this level-vis-info))
(the-as int (+ (-> level-vis-info size) (-> this dictionary-length)))
)
;; definition of type level-load-info
(deftype level-load-info (basic)
((name-list symbol 6 :offset-assert 4)
(index int16 :offset-assert 28)
(task-level uint8 :offset-assert 30)
(name symbol :offset 4)
(visname symbol :offset 8)
(nickname symbol :offset 12)
(dbname symbol :offset 16)
(taskname symbol :offset 20)
(other-name-1 symbol :offset 24)
(packages pair :offset-assert 32)
(memory-mode load-buffer-mode :offset-assert 36)
(music-bank symbol :offset-assert 40)
(ambient-sounds symbol :offset-assert 44)
(sound-reverb float :offset-assert 48)
(mood-func symbol :offset-assert 52)
(mood-init symbol :offset-assert 56)
(ocean symbol :offset-assert 60)
(sky symbol :offset-assert 64)
(use-camera-other symbol :offset-assert 68)
(part-engine-max int32 :offset-assert 72)
(city-map-bits uint64 :offset-assert 80)
(continues pair :offset-assert 88)
(tasks pair :offset-assert 92)
(priority int32 :offset-assert 96)
(load-commands pair :offset-assert 100)
(alt-load-commands pair :offset-assert 104)
(bsp-mask uint64 :offset-assert 112)
(buzzer int32 :offset-assert 120)
(buttom-height meters :offset-assert 124)
(run-packages pair :offset-assert 128)
(prev-level symbol :offset-assert 132)
(next-level symbol :offset-assert 136)
(wait-for-load symbol :offset-assert 140)
(login-func symbol :offset-assert 144)
(activate-func symbol :offset-assert 148)
(deactivate-func symbol :offset-assert 152)
(kill-func symbol :offset-assert 156)
(borrow-size uint16 2 :offset-assert 160)
(borrow-level symbol 2 :offset-assert 164)
(borrow-display? symbol 2 :offset-assert 172)
(base-task-mask task-mask :offset-assert 180)
(texture-anim symbol 10 :offset-assert 184)
(texture-anim-tfrag symbol :offset 184)
(texture-anim-pris symbol :offset 188)
(texture-anim-shrub symbol :offset 192)
(texture-anim-alpha symbol :offset 196)
(texture-anim-water symbol :offset 200)
(texture-anim-twarp symbol :offset 204)
(texture-anim-pris2 symbol :offset 208)
(texture-anim-sprite symbol :offset 212)
(texture-anim-map symbol :offset 216)
(texture-anim-sky symbol :offset 220)
(draw-priority float :offset-assert 224)
(level-flags uint32 :offset-assert 228)
(fog-height float :offset-assert 232)
(bigmap-id bigmap-id :offset-assert 236)
(ocean-near-translucent? symbol :offset-assert 240)
(ocean-far? symbol :offset-assert 244)
(mood-range mood-range :inline :offset-assert 256)
(max-rain float :offset-assert 272)
(fog-mult float :offset-assert 276)
(ocean-alpha float :offset-assert 280)
(extra-sound-bank pair :offset-assert 284)
((name-list symbol 6)
(index int16)
(task-level uint8)
(name symbol :overlay-at (-> name-list 0))
(visname symbol :overlay-at (-> name-list 1))
(nickname symbol :overlay-at (-> name-list 2))
(dbname symbol :overlay-at (-> name-list 3))
(taskname symbol :overlay-at (-> name-list 4))
(other-name-1 symbol :overlay-at (-> name-list 5))
(packages pair)
(memory-mode load-buffer-mode)
(music-bank symbol)
(ambient-sounds symbol)
(sound-reverb float)
(mood-func symbol)
(mood-init symbol)
(ocean symbol)
(sky symbol)
(use-camera-other symbol)
(part-engine-max int32)
(city-map-bits uint64)
(continues pair)
(tasks pair)
(priority int32)
(load-commands pair)
(alt-load-commands pair)
(bsp-mask uint64)
(buzzer int32)
(buttom-height meters)
(run-packages pair)
(prev-level symbol)
(next-level symbol)
(wait-for-load symbol)
(login-func symbol)
(activate-func symbol)
(deactivate-func symbol)
(kill-func symbol)
(borrow-size uint16 2)
(borrow-level symbol 2)
(borrow-display? symbol 2)
(base-task-mask task-mask)
(texture-anim symbol 10)
(texture-anim-tfrag symbol :overlay-at (-> texture-anim 0))
(texture-anim-pris symbol :overlay-at (-> texture-anim 1))
(texture-anim-shrub symbol :overlay-at (-> texture-anim 2))
(texture-anim-alpha symbol :overlay-at (-> texture-anim 3))
(texture-anim-water symbol :overlay-at (-> texture-anim 4))
(texture-anim-twarp symbol :overlay-at (-> texture-anim 5))
(texture-anim-pris2 symbol :overlay-at (-> texture-anim 6))
(texture-anim-sprite symbol :overlay-at (-> texture-anim 7))
(texture-anim-map symbol :overlay-at (-> texture-anim 8))
(texture-anim-sky symbol :overlay-at (-> texture-anim 9))
(draw-priority float)
(level-flags uint32)
(fog-height float)
(bigmap-id bigmap-id)
(ocean-near-translucent? symbol)
(ocean-far? symbol)
(mood-range mood-range :inline)
(max-rain float)
(fog-mult float)
(ocean-alpha float)
(extra-sound-bank pair)
)
:pack-me
:method-count-assert 9
:size-assert #x120
:flag-assert #x900000120
)
;; definition for method 3 of type level-load-info
(defmethod inspect level-load-info ((this level-load-info))
(defmethod inspect ((this level-load-info))
(when (not this)
(set! this this)
(goto cfg-51)
@@ -367,18 +361,15 @@
;; definition of type login-state
(deftype login-state (basic)
((state int32 :offset-assert 4)
(pos uint32 :offset-assert 8)
(elts uint32 :offset-assert 12)
(elt drawable 16 :offset-assert 16)
((state int32)
(pos uint32)
(elts uint32)
(elt drawable 16)
)
:method-count-assert 9
:size-assert #x50
:flag-assert #x900000050
)
;; definition for method 3 of type login-state
(defmethod inspect login-state ((this login-state))
(defmethod inspect ((this login-state))
(when (not this)
(set! this this)
(goto cfg-4)
@@ -394,110 +385,107 @@
;; definition of type level
(deftype level (basic)
((name symbol :offset-assert 4)
(load-name symbol :offset-assert 8)
(nickname symbol :offset-assert 12)
(index int32 :offset-assert 16)
(status symbol :offset-assert 20)
(borrow-level level 2 :offset-assert 24)
(borrow-from-level level :offset-assert 32)
(heap kheap :inline :offset-assert 48)
(borrow-heap kheap 2 :inline :offset-assert 64)
(bsp bsp-header :offset-assert 96)
(art-group load-dir-art-group :offset-assert 100)
(info level-load-info :offset-assert 104)
(texture-page texture-page 18 :offset-assert 108)
(loaded-texture-page texture-page 16 :offset-assert 180)
(loaded-texture-page-count int32 :offset-assert 244)
(entity entity-links-array :offset-assert 248)
(closest-object float :offset-assert 252)
(closest-object-array float 18 :offset 252)
(upload-size int32 18 :offset 324)
(inside-boxes symbol :offset-assert 396)
(display? symbol :offset-assert 400)
(render? symbol :offset-assert 404)
(meta-inside? symbol :offset-assert 408)
(force-inside? symbol :offset-assert 412)
(mood-context mood-context :inline :offset-assert 416)
(mood-func (function mood-context float int none) :offset-assert 2384)
(mood-init (function mood-context none) :offset-assert 2388)
(vis-bits pointer :offset-assert 2392)
(all-visible? symbol :offset-assert 2396)
(force-all-visible? symbol :offset-assert 2400)
(linking symbol :offset-assert 2404)
(vis-info level-vis-info 8 :offset-assert 2408)
(vis-self-index int32 :offset-assert 2440)
(vis-adj-index int32 :offset-assert 2444)
(vis-buffer uint8 2048 :offset-assert 2448)
(mem-usage-block memory-usage-block :offset-assert 4496)
(mem-usage int32 :offset-assert 4500)
(code-memory-start pointer :offset-assert 4504)
(code-memory-end pointer :offset-assert 4508)
(load-start-time time-frame :offset-assert 4512)
(load-stop-time time-frame :offset-assert 4520)
(load-buffer uint32 2 :offset-assert 4528)
(load-buffer-size uint32 :offset-assert 4536)
(load-buffer-last uint32 :offset-assert 4540)
(load-buffer-mode load-buffer-mode :offset-assert 4544)
(display-start-time time-frame :offset-assert 4552)
(memory-mask uint32 :offset-assert 4560)
(task-mask task-mask :offset-assert 4564)
(tfrag-gs-test gs-test :offset-assert 4568)
(texture-dirty-masks texture-mask 10 :inline :offset-assert 4576)
(texture-mask texture-mask 18 :inline :offset-assert 4736)
(sky-mask texture-mask :inline :offset-assert 5024)
(tfrag-masks texture-masks-array :offset-assert 5040)
(tfrag-dists pointer :offset-assert 5044)
(shrub-masks texture-masks-array :offset-assert 5048)
(shrub-dists pointer :offset-assert 5052)
(alpha-masks texture-masks-array :offset-assert 5056)
(alpha-dists pointer :offset-assert 5060)
(water-masks texture-masks-array :offset-assert 5064)
(water-dists pointer :offset-assert 5068)
(tfrag-last-calls int32 6 :offset-assert 5072)
(tfrag-last-calls-u32 uint32 6 :offset 5072)
(texture-anim-array texture-anim-array 10 :offset-assert 5096)
(light-hash light-hash :offset-assert 5136)
(draw-priority float :offset-assert 5140)
(draw-index int32 :offset-assert 5144)
(part-engine engine :offset-assert 5148)
(user-object basic 4 :offset-assert 5152)
(loaded-text-info-count int32 :offset-assert 5168)
(loaded-text-info game-text-info 8 :offset-assert 5172)
(level-type type :offset-assert 5204)
(load-order int64 :offset-assert 5208)
(pad int8 12 :offset-assert 5216)
((name symbol)
(load-name symbol)
(nickname symbol)
(index int32)
(status symbol)
(borrow-level level 2)
(borrow-from-level level)
(heap kheap :inline)
(borrow-heap kheap 2 :inline)
(bsp bsp-header)
(art-group load-dir-art-group)
(info level-load-info)
(texture-page texture-page 18)
(loaded-texture-page texture-page 16)
(loaded-texture-page-count int32)
(entity entity-links-array)
(closest-object float)
(closest-object-array float 18 :overlay-at closest-object)
(upload-size int32 18 :offset 324)
(inside-boxes symbol)
(display? symbol)
(render? symbol)
(meta-inside? symbol)
(force-inside? symbol)
(mood-context mood-context :inline)
(mood-func (function mood-context float int none))
(mood-init (function mood-context none))
(vis-bits pointer)
(all-visible? symbol)
(force-all-visible? symbol)
(linking symbol)
(vis-info level-vis-info 8)
(vis-self-index int32)
(vis-adj-index int32)
(vis-buffer uint8 2048)
(mem-usage-block memory-usage-block)
(mem-usage int32)
(code-memory-start pointer)
(code-memory-end pointer)
(load-start-time time-frame)
(load-stop-time time-frame)
(load-buffer uint32 2)
(load-buffer-size uint32)
(load-buffer-last uint32)
(load-buffer-mode load-buffer-mode)
(display-start-time time-frame)
(memory-mask uint32)
(task-mask task-mask)
(tfrag-gs-test gs-test)
(texture-dirty-masks texture-mask 10 :inline)
(texture-mask texture-mask 18 :inline)
(sky-mask texture-mask :inline)
(tfrag-masks texture-masks-array)
(tfrag-dists pointer)
(shrub-masks texture-masks-array)
(shrub-dists pointer)
(alpha-masks texture-masks-array)
(alpha-dists pointer)
(water-masks texture-masks-array)
(water-dists pointer)
(tfrag-last-calls int32 6)
(tfrag-last-calls-u32 uint32 6 :overlay-at (-> tfrag-last-calls 0))
(texture-anim-array texture-anim-array 10)
(light-hash light-hash)
(draw-priority float)
(draw-index int32)
(part-engine engine)
(user-object basic 4)
(loaded-text-info-count int32)
(loaded-text-info game-text-info 8)
(level-type type)
(load-order int64)
(pad int8 12)
)
:method-count-assert 30
:size-assert #x146c
:flag-assert #x1e0000146c
(:methods
(deactivate (_type_) _type_ 9)
(is-object-visible? (_type_ int) symbol 10)
(level-method-11 () none 11)
(unload! (_type_) _type_ 12)
(bsp-name (_type_) symbol 13)
(compute-memory-usage! (_type_ symbol) memory-usage-block 14)
(inside-boxes-check (_type_ vector) symbol 15)
(update-vis! (_type_ level-vis-info uint (pointer uint8)) symbol 16)
(load-continue (_type_) _type_ 17)
(load-begin (_type_) _type_ 18)
(login-begin (_type_) _type_ 19)
(debug-print-region-splitbox (_type_ vector object) none 20)
(get-art-group-by-name (_type_ string) art-group 21)
(level-method-22 (_type_ symbol) int 22)
(lookup-text (_type_ text-id symbol) string 23)
(level-method-24 () none 24)
(birth (_type_) _type_ 25)
(level-status-update! (_type_ symbol) _type_ 26)
(load-required-packages (_type_) _type_ 27)
(init-vis-from-bsp (_type_) none 28)
(vis-clear (_type_) none 29)
(deactivate (_type_) _type_)
(is-object-visible? (_type_ int) symbol)
(level-method-11 () none)
(unload! (_type_) _type_)
(bsp-name (_type_) symbol)
(compute-memory-usage! (_type_ symbol) memory-usage-block)
(inside-boxes-check (_type_ vector) symbol)
(update-vis! (_type_ level-vis-info uint (pointer uint8)) symbol)
(load-continue (_type_) _type_)
(load-begin (_type_) _type_)
(login-begin (_type_) _type_)
(debug-print-region-splitbox (_type_ vector object) none)
(get-art-group-by-name (_type_ string) art-group)
(level-method-22 (_type_ symbol) int)
(lookup-text (_type_ text-id symbol) string)
(level-method-24 () none)
(birth (_type_) _type_)
(level-status-update! (_type_ symbol) _type_)
(load-required-packages (_type_) _type_)
(init-vis-from-bsp (_type_) none)
(vis-clear (_type_) none)
)
)
;; definition for method 3 of type level
(defmethod inspect level ((this level))
(defmethod inspect ((this level))
(when (not this)
(set! this this)
(goto cfg-48)
@@ -645,71 +633,68 @@
;; definition of type level-group
(deftype level-group (basic)
((length int32 :offset-assert 4)
(log-in-level-bsp bsp-header :offset-assert 8)
(loading-level level :offset-assert 12)
(entity-link entity-links :offset 16)
(border? symbol :offset-assert 20)
(vis? symbol :offset-assert 24)
(want-level basic :offset-assert 28)
(receiving-level basic :offset-assert 32)
(load-commands pair :offset-assert 36)
(play? symbol :offset-assert 40)
(target-pos vector 2 :inline :offset-assert 48)
(camera-pos vector 2 :inline :offset-assert 80)
(heap kheap :inline :offset-assert 112)
(sound-bank basic 4 :offset-assert 128)
(disk-load-timing? symbol :offset-assert 144)
(load-level symbol :offset-assert 148)
(load-size uint32 :offset-assert 152)
(load-time float :offset-assert 156)
(load-login-time float :offset-assert 160)
(draw-level-count int32 :offset-assert 164)
(draw-level level 7 :offset-assert 168)
(draw-index-map uint8 7 :offset-assert 196)
(load-order uint64 :offset-assert 208)
(pad uint8 30 :offset-assert 216)
(level level 7 :inline :offset-assert 256)
(level0 level :inline :offset 256)
(level1 level :inline :offset 5488)
(level2 level :inline :offset 10720)
(level3 level :inline :offset 15952)
(level4 level :inline :offset 21184)
(level5 level :inline :offset 26416)
(default-level level :inline :offset 31648)
(pad2 uint8 4 :offset-assert 36880)
((length int32)
(log-in-level-bsp bsp-header)
(loading-level level)
(entity-link entity-links :offset 16)
(border? symbol)
(vis? symbol)
(want-level basic)
(receiving-level basic)
(load-commands pair)
(play? symbol)
(target-pos vector 2 :inline)
(camera-pos vector 2 :inline)
(heap kheap :inline)
(sound-bank basic 4)
(disk-load-timing? symbol)
(load-level symbol)
(load-size uint32)
(load-time float)
(load-login-time float)
(draw-level-count int32)
(draw-level level 7)
(draw-index-map uint8 7)
(load-order uint64)
(pad uint8 30)
(level level 7 :inline)
(level0 level :inline :overlay-at (-> level 0))
(level1 level :inline :offset 5488)
(level2 level :inline :offset 10720)
(level3 level :inline :offset 15952)
(level4 level :inline :offset 21184)
(level5 level :inline :offset 26416)
(default-level level :inline :offset 31648)
(pad2 uint8 4)
)
:method-count-assert 31
:size-assert #x9014
:flag-assert #x1f00009014
(:methods
(level-get (_type_ symbol) level 9)
(level-get-with-status (_type_ symbol) level 10)
(get-level-by-heap-ptr-and-status (_type_ pointer symbol) level 11)
(level-get-for-use (_type_ symbol symbol) level 12)
(activate-levels! (_type_) int 13)
(debug-print-entities (_type_ symbol type) none 14)
(debug-draw-actors (_type_ symbol) none 15)
(assign-draw-indices (_type_) none 16)
(actors-update (_type_) none 17)
(update-nav-meshes-method (_type_) none 18)
(level-update (_type_) none 19)
(level-get-target-inside (_type_) level 20)
(alloc-levels-if-needed (_type_ symbol) none 21)
(load-commands-set! (_type_ pair) none 22)
(art-group-get-by-name (_type_ string (pointer uint32)) art-group 23)
(alt-load-command-get-index (_type_ symbol int) pair 24)
(update-vis-volumes (_type_) none 25)
(update-vis-volumes-from-nav-mesh (_type_) none 26)
(print-volume-sizes (_type_) none 27)
(level-status (_type_ symbol) symbol 28)
(load-in-progress? (_type_) symbol 29)
(level-get-most-disposable (_type_) level 30)
(level-get (_type_ symbol) level)
(level-get-with-status (_type_ symbol) level)
(get-level-by-heap-ptr-and-status (_type_ pointer symbol) level)
(level-get-for-use (_type_ symbol symbol) level)
(activate-levels! (_type_) int)
(debug-print-entities (_type_ symbol type) none)
(debug-draw-actors (_type_ symbol) none)
(assign-draw-indices (_type_) none)
(actors-update (_type_) none)
(update-nav-meshes-method (_type_) none)
(level-update (_type_) none)
(level-get-target-inside (_type_) level)
(alloc-levels-if-needed (_type_ symbol) none)
(load-commands-set! (_type_ pair) none)
(art-group-get-by-name (_type_ string (pointer uint32)) art-group)
(alt-load-command-get-index (_type_ symbol int) pair)
(update-vis-volumes (_type_) none)
(update-vis-volumes-from-nav-mesh (_type_) none)
(print-volume-sizes (_type_) none)
(level-status (_type_ symbol) symbol)
(load-in-progress? (_type_) symbol)
(level-get-most-disposable (_type_) level)
)
)
;; definition for method 3 of type level-group
(defmethod inspect level-group ((this level-group))
(defmethod inspect ((this level-group))
(when (not this)
(set! this this)
(goto cfg-13)
+35 -35
View File
@@ -21,7 +21,7 @@
;; definition for method 24 of type level-group
;; WARN: Return type mismatch object vs pair.
(defmethod alt-load-command-get-index level-group ((this level-group) (arg0 symbol) (arg1 int))
(defmethod alt-load-command-get-index ((this level-group) (arg0 symbol) (arg1 int))
(let ((v1-1 (-> (lookup-level-info arg0) alt-load-commands)))
(while (nonzero? arg1)
(+! arg1 -1)
@@ -35,12 +35,12 @@
)
;; definition for method 29 of type level-group
(defmethod load-in-progress? level-group ((this level-group))
(defmethod load-in-progress? ((this level-group))
(!= (-> *level* loading-level) (-> *level* default-level))
)
;; definition for method 11 of type level-group
(defmethod get-level-by-heap-ptr-and-status level-group ((this level-group) (arg0 pointer) (arg1 symbol))
(defmethod get-level-by-heap-ptr-and-status ((this level-group) (arg0 pointer) (arg1 symbol))
(case arg1
(('active)
(dotimes (v1-1 (-> this length))
@@ -81,7 +81,7 @@
)
;; definition for method 21 of type level
(defmethod get-art-group-by-name level ((this level) (arg0 string))
(defmethod get-art-group-by-name ((this level) (arg0 string))
(countdown (s4-0 (-> this art-group art-group-array length))
(if (name= (-> this art-group art-group-array s4-0 name) arg0)
(return (-> this art-group art-group-array s4-0))
@@ -91,7 +91,7 @@
)
;; definition for method 13 of type level
(defmethod bsp-name level ((this level))
(defmethod bsp-name ((this level))
(if (and (!= (-> this status) 'inactive) (-> this bsp) (nonzero? (-> this bsp name)))
(-> this bsp name)
(-> this name)
@@ -108,13 +108,13 @@
)
;; definition for method 2 of type level
(defmethod print level ((this level))
(defmethod print ((this level))
(format #t "#<~A ~A ~S @ #x~X>" (-> this type) (-> this status) (-> this name) this)
this
)
;; definition for method 7 of type bsp-header
(defmethod relocate bsp-header ((this bsp-header) (arg0 int))
(defmethod relocate ((this bsp-header) (arg0 int))
(let ((s5-0 (-> *level* loading-level)))
(when s5-0
(cond
@@ -153,7 +153,7 @@
)
;; definition for method 27 of type level
(defmethod load-required-packages level ((this level))
(defmethod load-required-packages ((this level))
(when (not (or (not (-> this bsp)) (= *kernel-boot-mode* 'debug-boot)))
(if (not (null? (-> this info packages)))
(load-package "common" global)
@@ -165,7 +165,7 @@
;; definition for method 29 of type level
;; INFO: Used lq/sq
;; WARN: Return type mismatch int vs none.
(defmethod vis-clear level ((this level))
(defmethod vis-clear ((this level))
(countdown (v1-0 8)
(nop!)
(set! (-> this vis-info v1-0) #f)
@@ -180,7 +180,7 @@
;; definition for method 28 of type level
;; WARN: Return type mismatch int vs none.
(defmethod init-vis-from-bsp level ((this level))
(defmethod init-vis-from-bsp ((this level))
(when (not (or (= (-> this status) 'inactive) (not (-> this bsp))))
(set! (-> this all-visible?) 'loading)
(dotimes (s5-0 8)
@@ -211,7 +211,7 @@
)
;; definition for method 12 of type level-group
(defmethod level-get-for-use level-group ((this level-group) (arg0 symbol) (arg1 symbol))
(defmethod level-get-for-use ((this level-group) (arg0 symbol) (arg1 symbol))
(local-vars (s5-1 level))
(alloc-levels-if-needed this #f)
(let* ((s2-0 (lookup-level-info arg0))
@@ -259,7 +259,7 @@
)
;; definition for method 28 of type level-group
(defmethod level-status level-group ((this level-group) (arg0 symbol))
(defmethod level-status ((this level-group) (arg0 symbol))
(let ((v1-1 (level-get *level* arg0)))
(if v1-1
(-> v1-1 status)
@@ -269,7 +269,7 @@
;; definition for method 26 of type level
;; INFO: Used lq/sq
(defmethod level-status-update! level ((this level) (arg0 symbol))
(defmethod level-status-update! ((this level) (arg0 symbol))
(case arg0
(('inactive)
(-> this status)
@@ -368,7 +368,7 @@
)
;; definition for method 17 of type level
(defmethod load-continue level ((this level))
(defmethod load-continue ((this level))
(local-vars (sv-16 symbol))
(when (-> this linking)
(when (nonzero? (link-resume))
@@ -494,7 +494,7 @@
)
;; definition for method 18 of type level
(defmethod load-begin level ((this level))
(defmethod load-begin ((this level))
(local-vars (bits-to-use int) (borrow-from-lev level) (found-borrow symbol))
(dotimes (v1-0 2)
(set! (-> this borrow-level v1-0) #f)
@@ -773,7 +773,7 @@
)
;; definition for method 19 of type level
(defmethod login-begin level ((this level))
(defmethod login-begin ((this level))
(set! (-> *texture-pool* allocate-func) texture-page-default-allocate)
(cond
((-> this bsp)
@@ -1099,7 +1099,7 @@
;; definition for method 25 of type level
;; INFO: Used lq/sq
(defmethod birth level ((this level))
(defmethod birth ((this level))
(local-vars (sv-96 int))
(case (-> this status)
(('loaded)
@@ -1173,7 +1173,7 @@
;; definition for method 9 of type level
;; INFO: Used lq/sq
(defmethod deactivate level ((this level))
(defmethod deactivate ((this level))
(case (-> this status)
(('active 'alive)
(format 0 "----------- kill ~A (status ~A)~%" this (-> this status))
@@ -1219,7 +1219,7 @@
;; definition for method 12 of type level
;; WARN: Using new Jak 2 rtype-of
(defmethod unload! level ((this level))
(defmethod unload! ((this level))
(deactivate this)
(when (!= (-> this status) 'inactive)
(dotimes (s5-0 2)
@@ -1377,7 +1377,7 @@
;; definition for method 10 of type level
;; ERROR: Unsupported inline assembly instruction kind - [addiu a0, a0, 56]
(defmethod is-object-visible? level ((this level) (arg0 int))
(defmethod is-object-visible? ((this level) (arg0 int))
(local-vars (a0-1 int) (a0-3 int))
(let ((v1-0 (-> this vis-bits)))
(shift-arith-right-32 a0-1 arg0 3)
@@ -1391,7 +1391,7 @@
)
;; definition for method 15 of type level
(defmethod inside-boxes-check level ((this level) (arg0 vector))
(defmethod inside-boxes-check ((this level) (arg0 vector))
(cond
((not (-> this bsp))
#f
@@ -1407,7 +1407,7 @@
;; definition for method 20 of type level
;; WARN: Return type mismatch int vs none.
(defmethod debug-print-region-splitbox level ((this level) (arg0 vector) (arg1 object))
(defmethod debug-print-region-splitbox ((this level) (arg0 vector) (arg1 object))
(cond
((or (not (-> this bsp)) (zero? (-> this bsp region-tree)))
)
@@ -1420,7 +1420,7 @@
)
;; definition for method 8 of type level
(defmethod mem-usage level ((this level) (arg0 memory-usage-block) (arg1 int))
(defmethod mem-usage ((this level) (arg0 memory-usage-block) (arg1 int))
(when (= (-> this status) 'active)
(set! (-> arg0 length) (max 67 (-> arg0 length)))
(set! (-> arg0 data 66 name) "entity-links")
@@ -1476,7 +1476,7 @@
;; definition for method 21 of type level-group
;; WARN: Return type mismatch int vs none.
(defmethod alloc-levels-if-needed level-group ((this level-group) (arg0 symbol))
(defmethod alloc-levels-if-needed ((this level-group) (arg0 symbol))
(when (zero? (-> *level* heap base))
(kmemopen global "level-heaps")
(when (nmember "game" *kernel-packages*)
@@ -1506,7 +1506,7 @@
)
;; definition for method 10 of type level-group
(defmethod level-get-with-status level-group ((this level-group) (arg0 symbol))
(defmethod level-get-with-status ((this level-group) (arg0 symbol))
(dotimes (v1-0 (-> this length))
(if (= (-> this level v1-0 status) arg0)
(return (-> this level v1-0))
@@ -1516,7 +1516,7 @@
)
;; definition for method 30 of type level-group
(defmethod level-get-most-disposable level-group ((this level-group))
(defmethod level-get-most-disposable ((this level-group))
(dotimes (v1-0 (-> this length))
(case (-> this level v1-0 status)
(('inactive)
@@ -1555,7 +1555,7 @@
)
;; definition for method 9 of type level-group
(defmethod level-get level-group ((this level-group) (arg0 symbol))
(defmethod level-get ((this level-group) (arg0 symbol))
(dotimes (v1-0 (-> this length))
(if (and (!= (-> this level v1-0 status) 'inactive)
(or (= (-> this level v1-0 name) arg0) (= (-> this level v1-0 load-name) arg0))
@@ -1567,7 +1567,7 @@
)
;; definition for method 23 of type level-group
(defmethod art-group-get-by-name level-group ((this level-group) (arg0 string) (arg1 (pointer uint32)))
(defmethod art-group-get-by-name ((this level-group) (arg0 string) (arg1 (pointer uint32)))
(countdown (s4-0 7)
(let ((s3-0 (-> *level* level s4-0)))
(when (or (= (-> s3-0 status) 'active) (= (-> s3-0 status) 'reserved))
@@ -1586,7 +1586,7 @@
)
;; definition for method 13 of type level-group
(defmethod activate-levels! level-group ((this level-group))
(defmethod activate-levels! ((this level-group))
(dotimes (s5-0 (-> this length))
(level-status-update! (-> this level s5-0) 'active)
)
@@ -1594,7 +1594,7 @@
)
;; definition for method 20 of type level-group
(defmethod level-get-target-inside level-group ((this level-group))
(defmethod level-get-target-inside ((this level-group))
(let ((s5-0 (target-pos 0)))
(let ((v1-1 (-> *load-state* vis-nick)))
(when v1-1
@@ -1665,14 +1665,14 @@
;; definition for method 22 of type level-group
;; WARN: Return type mismatch int vs none.
(defmethod load-commands-set! level-group ((this level-group) (arg0 pair))
(defmethod load-commands-set! ((this level-group) (arg0 pair))
(set! (-> this load-commands) arg0)
0
(none)
)
;; definition for method 8 of type level-group
(defmethod mem-usage level-group ((this level-group) (arg0 memory-usage-block) (arg1 int))
(defmethod mem-usage ((this level-group) (arg0 memory-usage-block) (arg1 int))
(dotimes (s3-0 (-> this length))
(mem-usage (-> this level s3-0) arg0 arg1)
)
@@ -1971,7 +1971,7 @@
)
;; definition for method 10 of type load-state
(defmethod update! load-state ((this load-state))
(defmethod update! ((this load-state))
(local-vars (all-levels-inactive symbol))
(let ((discarded-level #f))
(let ((most-recent-load-order 0))
@@ -2156,7 +2156,7 @@
;; definition for method 16 of type level-group
;; WARN: Return type mismatch int vs none.
(defmethod assign-draw-indices level-group ((this level-group))
(defmethod assign-draw-indices ((this level-group))
(local-vars (t0-3 symbol))
(set! (-> this draw-level-count) 0)
(dotimes (v1-0 7)
@@ -2211,7 +2211,7 @@
;; definition for method 19 of type level-group
;; WARN: Return type mismatch int vs none.
(defmethod level-update level-group ((this level-group))
(defmethod level-update ((this level-group))
(local-vars (v1-101 symbol))
(camera-pos)
(new 'static 'boxed-array :type symbol :length 0 :allocated-length 6)
+36 -69
View File
@@ -3,21 +3,18 @@
;; definition of type region
(deftype region (structure)
((id uint32 :offset-assert 0)
(on-enter pair :offset-assert 4)
(on-inside pair :offset-assert 8)
(on-exit pair :offset-assert 12)
((id uint32)
(on-enter pair)
(on-inside pair)
(on-exit pair)
)
:method-count-assert 10
:size-assert #x10
:flag-assert #xa00000010
(:methods
(region-method-9 (_type_ vector) symbol 9)
(region-method-9 (_type_ vector) symbol)
)
)
;; definition for method 3 of type region
(defmethod inspect region ((this region))
(defmethod inspect ((this region))
(when (not this)
(set! this this)
(goto cfg-4)
@@ -33,15 +30,12 @@
;; definition of type region-array
(deftype region-array (inline-array-class)
((data region :inline :dynamic :offset-assert 16)
((data region :inline :dynamic)
)
:method-count-assert 9
:size-assert #x10
:flag-assert #x900000010
)
;; definition for method 3 of type region-array
(defmethod inspect region-array ((this region-array))
(defmethod inspect ((this region-array))
(when (not this)
(set! this this)
(goto cfg-4)
@@ -59,20 +53,17 @@
;; definition of type drawable-region-prim
(deftype drawable-region-prim (drawable)
((region region :offset 8)
((region region :offset 8)
)
:method-count-assert 20
:size-assert #x20
:flag-assert #x1400000020
(:methods
(debug-draw-region (_type_ int) none 17)
(track-region (_type_ region-prim-area) symbol 18)
(within-area? (_type_ region-prim-area) symbol 19)
(debug-draw-region (_type_ int) none)
(track-region (_type_ region-prim-area) symbol)
(within-area? (_type_ region-prim-area) symbol)
)
)
;; definition for method 3 of type drawable-region-prim
(defmethod inspect drawable-region-prim ((this drawable-region-prim))
(defmethod inspect ((this drawable-region-prim))
(when (not this)
(set! this this)
(goto cfg-4)
@@ -87,20 +78,17 @@
;; definition of type drawable-tree-region-prim
(deftype drawable-tree-region-prim (drawable-tree)
((name basic :offset 8)
(data2 drawable-inline-array :dynamic :offset 32)
((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 (_type_ vector) symbol 17)
(debug-print (_type_ vector object) none 18)
(drawable-tree-region-prim-method-17 (_type_ vector) symbol)
(debug-print (_type_ vector object) none)
)
)
;; definition for method 3 of type drawable-tree-region-prim
(defmethod inspect drawable-tree-region-prim ((this drawable-tree-region-prim))
(defmethod inspect ((this drawable-tree-region-prim))
(when (not this)
(set! this this)
(goto cfg-7)
@@ -120,24 +108,18 @@
;; definition of type drawable-inline-array-region-prim
(deftype drawable-inline-array-region-prim (drawable-inline-array)
((data drawable-region-prim 1 :inline :offset-assert 32)
(pad uint8 4 :offset-assert 64)
((data drawable-region-prim 1 :inline)
(pad uint8 4)
)
:method-count-assert 17
:size-assert #x44
:flag-assert #x1100000044
)
;; definition of type drawable-region-sphere
(deftype drawable-region-sphere (drawable-region-prim)
()
:method-count-assert 20
:size-assert #x20
:flag-assert #x1400000020
)
;; definition for method 3 of type drawable-region-sphere
(defmethod inspect drawable-region-sphere ((this drawable-region-sphere))
(defmethod inspect ((this drawable-region-sphere))
(when (not this)
(set! this this)
(goto cfg-4)
@@ -152,18 +134,15 @@
;; definition of type region-face-data
(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)
((normal vector :inline)
(normal-offset float :overlay-at (-> normal data 3))
(num-points uint32)
(points vector :inline :dynamic)
)
:method-count-assert 9
:size-assert #x20
:flag-assert #x900000020
)
;; definition for method 3 of type region-face-data
(defmethod inspect region-face-data ((this region-face-data))
(defmethod inspect ((this region-face-data))
(when (not this)
(set! this this)
(goto cfg-4)
@@ -179,15 +158,12 @@
;; definition of type drawable-region-face
(deftype drawable-region-face (drawable-region-prim)
((data region-face-data :offset 12)
((data region-face-data :offset 12)
)
:method-count-assert 20
:size-assert #x20
:flag-assert #x1400000020
)
;; definition for method 3 of type drawable-region-face
(defmethod inspect drawable-region-face ((this drawable-region-face))
(defmethod inspect ((this drawable-region-face))
(when (not this)
(set! this this)
(goto cfg-4)
@@ -203,16 +179,13 @@
;; definition of type region-face-array
(deftype region-face-array (inline-array-class)
((data drawable-region-face :inline :dynamic :offset 16)
(pad0 uint8 4 :offset-assert 16)
((data drawable-region-face :inline :dynamic :offset 16)
(pad0 uint8 4)
)
:method-count-assert 9
:size-assert #x14
:flag-assert #x900000014
)
;; definition for method 3 of type region-face-array
(defmethod inspect region-face-array ((this region-face-array))
(defmethod inspect ((this region-face-array))
(when (not this)
(set! this this)
(goto cfg-4)
@@ -230,15 +203,12 @@
;; definition of type drawable-region-volume
(deftype drawable-region-volume (drawable-region-prim)
((faces region-face-array :offset 12)
((faces region-face-array :offset 12)
)
:method-count-assert 20
:size-assert #x20
:flag-assert #x1400000020
)
;; definition for method 3 of type drawable-region-volume
(defmethod inspect drawable-region-volume ((this drawable-region-volume))
(defmethod inspect ((this drawable-region-volume))
(when (not this)
(set! this this)
(goto cfg-4)
@@ -254,16 +224,13 @@
;; definition of type region-prim-list
(deftype region-prim-list (structure)
((num-items int32 :offset-assert 0)
(items drawable-region-prim 320 :offset-assert 4)
((num-items int32)
(items drawable-region-prim 320)
)
:method-count-assert 9
:size-assert #x504
:flag-assert #x900000504
)
;; definition for method 3 of type region-prim-list
(defmethod inspect region-prim-list ((this region-prim-list))
(defmethod inspect ((this region-prim-list))
(when (not this)
(set! this this)
(goto cfg-4)
+25 -25
View File
@@ -3,7 +3,7 @@
;; definition for method 8 of type drawable-region-prim
;; WARN: Return type mismatch int vs drawable-region-prim.
(defmethod mem-usage drawable-region-prim ((this drawable-region-prim) (arg0 memory-usage-block) (arg1 int))
(defmethod mem-usage ((this drawable-region-prim) (arg0 memory-usage-block) (arg1 int))
(set! (-> arg0 length) (max 50 (-> arg0 length)))
(set! (-> arg0 data 49 name) "region")
(+! (-> arg0 data 49 count) 1)
@@ -17,7 +17,7 @@
;; definition for method 8 of type drawable-inline-array-region-prim
;; WARN: Return type mismatch int vs drawable-inline-array-region-prim.
(defmethod mem-usage drawable-inline-array-region-prim ((this drawable-inline-array-region-prim) (arg0 memory-usage-block) (arg1 int))
(defmethod mem-usage ((this drawable-inline-array-region-prim) (arg0 memory-usage-block) (arg1 int))
(set! (-> arg0 length) (max 1 (-> arg0 length)))
(set! (-> arg0 data 0 name) (symbol->string 'drawable-group))
(+! (-> arg0 data 0 count) 1)
@@ -33,19 +33,19 @@
;; definition for method 10 of type drawable-tree-region-prim
;; WARN: Return type mismatch int vs none.
(defmethod draw drawable-tree-region-prim ((this drawable-tree-region-prim) (arg0 drawable-tree-region-prim) (arg1 display-frame))
(defmethod draw ((this drawable-tree-region-prim) (arg0 drawable-tree-region-prim) (arg1 display-frame))
0
(none)
)
;; definition for method 15 of type drawable-tree-region-prim
(defmethod unpack-vis drawable-tree-region-prim ((this drawable-tree-region-prim) (arg0 (pointer int8)) (arg1 (pointer int8)))
(defmethod unpack-vis ((this drawable-tree-region-prim) (arg0 (pointer int8)) (arg1 (pointer int8)))
arg1
)
;; definition for method 16 of type drawable-region-prim
;; WARN: Return type mismatch int vs none.
(defmethod collect-regions drawable-region-prim ((this drawable-region-prim) (area-of-interest sphere) (_count int) (region-list region-prim-list))
(defmethod collect-regions ((this drawable-region-prim) (area-of-interest sphere) (_count int) (region-list region-prim-list))
"Determines the number of [[drawable]]s in the `obj` that overlap the given `area-of-interest` this number is stored in the `region-list`'s item count
@param area-of-interest The area defined by a sphere that we care about overlaps
@param _count The amount of [[drawable]]s in the object to enumerate through
@@ -64,7 +64,7 @@
;; definition for method 16 of type drawable-inline-array-region-prim
;; WARN: Return type mismatch int vs none.
(defmethod collect-regions drawable-inline-array-region-prim ((this drawable-inline-array-region-prim) (arg0 sphere) (arg1 int) (arg2 region-prim-list))
(defmethod collect-regions ((this drawable-inline-array-region-prim) (arg0 sphere) (arg1 int) (arg2 region-prim-list))
"Determines the number of [[drawable]]s in the `obj` that overlap the given `area-of-interest` this number is stored in the `region-list`'s item count
@param area-of-interest The area defined by a sphere that we care about overlaps
@param _count The amount of [[drawable]]s in the object to enumerate through
@@ -77,7 +77,7 @@
;; definition for method 16 of type drawable-tree-region-prim
;; WARN: Return type mismatch int vs none.
(defmethod collect-regions drawable-tree-region-prim ((this drawable-tree-region-prim) (arg0 sphere) (arg1 int) (arg2 region-prim-list))
(defmethod collect-regions ((this drawable-tree-region-prim) (arg0 sphere) (arg1 int) (arg2 region-prim-list))
"Determines the number of [[drawable]]s in the `obj` that overlap the given `area-of-interest` this number is stored in the `region-list`'s item count
@param area-of-interest The area defined by a sphere that we care about overlaps
@param _count The amount of [[drawable]]s in the object to enumerate through
@@ -90,7 +90,7 @@
;; definition for method 17 of type drawable-region-prim
;; WARN: Return type mismatch int vs none.
(defmethod debug-draw-region drawable-region-prim ((this drawable-region-prim) (arg0 int))
(defmethod debug-draw-region ((this drawable-region-prim) (arg0 int))
(local-vars (sv-32 vector2h) (sv-36 vector))
(set! sv-32 (new 'stack 'vector2h))
(set! sv-36 (-> this bsphere))
@@ -146,13 +146,13 @@
)
;; definition for method 18 of type drawable-region-prim
(defmethod track-region drawable-region-prim ((this drawable-region-prim) (arg0 region-prim-area))
(defmethod track-region ((this drawable-region-prim) (arg0 region-prim-area))
"TODO"
#f
)
;; definition for method 19 of type drawable-region-prim
(defmethod within-area? drawable-region-prim ((this drawable-region-prim) (arg0 region-prim-area))
(defmethod within-area? ((this drawable-region-prim) (arg0 region-prim-area))
"@returns Whether or not the object overlaps with the provided [[region-prim-area]]'s extent"
#f
)
@@ -160,7 +160,7 @@
;; definition for method 9 of type region-prim-area
;; WARN: Return type mismatch int vs none.
;; WARN: Function (method 9 region-prim-area) has a return type of none, but the expression builder found a return statement.
(defmethod track-entered-region! region-prim-area ((this region-prim-area) (region-sphere drawable-region-sphere))
(defmethod track-entered-region! ((this region-prim-area) (region-sphere drawable-region-sphere))
"Enumerates through the objects `region-enter-list`, if we find the provided `region`, do nothing and exit
otherwise, add the [[drawable-region-sphere]] to `region-enter-prim-list` and increment `region-enter-count`
@@ -185,7 +185,7 @@ otherwise, add the [[drawable-region-sphere]] to `region-enter-prim-list` and in
;; definition for method 10 of type region-prim-area
;; WARN: Return type mismatch int vs none.
;; WARN: Function (method 10 region-prim-area) has a return type of none, but the expression builder found a return statement.
(defmethod track-exited-region! region-prim-area ((this region-prim-area) (arg0 drawable-region-sphere))
(defmethod track-exited-region! ((this region-prim-area) (arg0 drawable-region-sphere))
"Enumerates through the objects `region-exit-list`, if we find the provided `region`, do nothing and exit
otherwise, add the [[drawable-region-sphere]] to `region-exit-prim-list` and increment `region-exit-count`
@@ -210,7 +210,7 @@ otherwise, add the [[drawable-region-sphere]] to `region-exit-prim-list` and inc
;; definition for method 11 of type region-prim-area
;; WARN: Return type mismatch int vs none.
;; WARN: Function (method 11 region-prim-area) has a return type of none, but the expression builder found a return statement.
(defmethod track-inside-region! region-prim-area ((this region-prim-area) (arg0 drawable-region-sphere))
(defmethod track-inside-region! ((this region-prim-area) (arg0 drawable-region-sphere))
"Enumerates through the objects `region-inside-list`, if we find the provided `region`, do nothing and exit
otherwise, add the [[drawable-region-sphere]] to `region-inside-prim-list` and increment `region-inside-count`
@@ -235,7 +235,7 @@ otherwise, add the [[drawable-region-sphere]] to `region-inside-prim-list` and i
;; definition for method 12 of type region-prim-area
;; WARN: Return type mismatch int vs none.
;; WARN: Function (method 12 region-prim-area) has a return type of none, but the expression builder found a return statement.
(defmethod track-start-region! region-prim-area ((this region-prim-area) (arg0 drawable-region-sphere))
(defmethod track-start-region! ((this region-prim-area) (arg0 drawable-region-sphere))
"Enumerates through the objects `region-start-list`, if we find the provided `region`, do nothing and exit
otherwise, add the [[drawable-region-sphere]] to `region-start-prim-list` and increment `region-start-count`
@@ -259,7 +259,7 @@ otherwise, add the [[drawable-region-sphere]] to `region-start-prim-list` and in
;; definition for method 17 of type drawable-region-sphere
;; WARN: Return type mismatch int vs none.
(defmethod debug-draw-region drawable-region-sphere ((this drawable-region-sphere) (arg0 int))
(defmethod debug-draw-region ((this drawable-region-sphere) (arg0 int))
(let ((t9-0 (method-of-type drawable-region-prim debug-draw-region)))
(t9-0 this arg0)
)
@@ -271,7 +271,7 @@ otherwise, add the [[drawable-region-sphere]] to `region-start-prim-list` and in
)
;; definition for method 18 of type drawable-region-sphere
(defmethod track-region drawable-region-sphere ((this drawable-region-sphere) (area region-prim-area))
(defmethod track-region ((this drawable-region-sphere) (area region-prim-area))
"TODO"
(-> this region)
(let ((area-of-interest (-> this bsphere)))
@@ -298,14 +298,14 @@ otherwise, add the [[drawable-region-sphere]] to `region-start-prim-list` and in
)
;; definition for method 19 of type drawable-region-sphere
(defmethod within-area? drawable-region-sphere ((this drawable-region-sphere) (area region-prim-area))
(defmethod within-area? ((this drawable-region-sphere) (area region-prim-area))
"@returns Whether or not the object overlaps with the provided [[region-prim-area]]'s extent"
(spheres-overlap? (the-as sphere (-> area pos)) (the-as sphere (-> this bsphere)))
)
;; definition for method 17 of type drawable-region-face
;; WARN: Return type mismatch int vs none.
(defmethod debug-draw-region drawable-region-face ((this drawable-region-face) (arg0 int))
(defmethod debug-draw-region ((this drawable-region-face) (arg0 int))
(when (zero? arg0)
(let ((t9-0 (method-of-type drawable-region-prim debug-draw-region)))
(t9-0 this arg0)
@@ -335,7 +335,7 @@ otherwise, add the [[drawable-region-sphere]] to `region-start-prim-list` and in
)
;; definition for method 18 of type drawable-region-face
(defmethod track-region drawable-region-face ((this drawable-region-face) (arg0 region-prim-area))
(defmethod track-region ((this drawable-region-face) (arg0 region-prim-area))
"TODO"
(local-vars (sv-48 vector) (sv-52 vector) (sv-56 object))
(-> this region)
@@ -404,7 +404,7 @@ otherwise, add the [[drawable-region-sphere]] to `region-start-prim-list` and in
;; definition for method 17 of type drawable-region-volume
;; WARN: Return type mismatch int vs none.
(defmethod debug-draw-region drawable-region-volume ((this drawable-region-volume) (arg0 int))
(defmethod debug-draw-region ((this drawable-region-volume) (arg0 int))
(let ((t9-0 (method-of-type drawable-region-prim debug-draw-region)))
(t9-0 this arg0)
)
@@ -423,7 +423,7 @@ otherwise, add the [[drawable-region-sphere]] to `region-start-prim-list` and in
)
;; definition for method 18 of type drawable-region-volume
(defmethod track-region drawable-region-volume ((this drawable-region-volume) (area region-prim-area))
(defmethod track-region ((this drawable-region-volume) (area region-prim-area))
"TODO"
(if (within-area? this area)
(track-start-region! area (the-as drawable-region-sphere this))
@@ -445,7 +445,7 @@ otherwise, add the [[drawable-region-sphere]] to `region-start-prim-list` and in
)
;; definition for method 19 of type drawable-region-volume
(defmethod within-area? drawable-region-volume ((this drawable-region-volume) (arg0 region-prim-area))
(defmethod within-area? ((this drawable-region-volume) (arg0 region-prim-area))
"@returns Whether or not the object overlaps with the provided [[region-prim-area]]'s extent"
(let* ((v1-1 (-> this faces length))
(a2-0 0)
@@ -465,7 +465,7 @@ otherwise, add the [[drawable-region-sphere]] to `region-start-prim-list` and in
)
;; definition for method 17 of type drawable-tree-region-prim
(defmethod drawable-tree-region-prim-method-17 drawable-tree-region-prim ((this drawable-tree-region-prim) (arg0 vector))
(defmethod drawable-tree-region-prim-method-17 ((this drawable-tree-region-prim) (arg0 vector))
(sphere<-vector+r! (the-as sphere (-> (the-as region-prim-area #x70000000) pos)) arg0 0.0)
(let* ((s5-0 (-> this data2 (+ (-> this length) -1) length))
(s4-0 0)
@@ -485,7 +485,7 @@ otherwise, add the [[drawable-region-sphere]] to `region-start-prim-list` and in
;; definition for method 9 of type region
;; INFO: Used lq/sq
;; WARN: Return type mismatch int vs symbol.
(defmethod region-method-9 region ((this region) (arg0 vector))
(defmethod region-method-9 ((this region) (arg0 vector))
(local-vars (sv-16 int) (sv-32 int))
(sphere<-vector+r! (the-as sphere (-> (the-as region-prim-area #x70000000) pos)) arg0 0.0)
(dotimes (s5-0 (-> *level* length))
@@ -526,7 +526,7 @@ otherwise, add the [[drawable-region-sphere]] to `region-start-prim-list` and in
;; definition for method 18 of type drawable-tree-region-prim
;; WARN: Return type mismatch int vs none.
(defmethod debug-print drawable-tree-region-prim ((this drawable-tree-region-prim) (arg0 vector) (arg1 object))
(defmethod debug-print ((this drawable-tree-region-prim) (arg0 vector) (arg1 object))
(sphere<-vector+r! (the-as sphere (+ 1296 #x70000000)) arg0 0.0)
(let* ((s4-0 (-> this data2 (+ (-> this length) -1) length))
(s3-0 0)