decomp: finalize nav-enemy

This commit is contained in:
Tyler Wilding
2021-08-13 21:57:58 -04:00
parent 202f04d009
commit 05f25e60f8
13 changed files with 4117 additions and 183 deletions
+1 -1
View File
@@ -20066,7 +20066,7 @@
(define-extern vent-standard-event-handler function)
(define-extern ecovalve-init-by-other function)
(define-extern birth-pickup-at-point function)
(define-extern birth-pickup-at-point (function vector int float symbol process symbol basic)) ;; TODO - not confirmed at all! (the symbols are wrong)
(define-extern fuel-cell-pick-anim function)
(define-extern othercam-init-by-other function)
(define-extern fuel-cell-animate function)
@@ -598,6 +598,7 @@
[19, "(function object :behavior nav-enemy)"],
[20, "(function uint :behavior nav-enemy)"],
[21, "(function none :behavior nav-enemy)"],
[28, "(function symbol :behavior nav-enemy)"],
[29, "(function symbol :behavior nav-enemy)"],
[30, "(function object :behavior nav-enemy)"],
[31, "(function object :behavior nav-enemy)"],
@@ -363,7 +363,6 @@
"(method 32 nav-control)",
// collectables BUG
"birth-pickup-at-point",
"add-blue-motion",
// ocean
@@ -374,7 +373,7 @@
"ocean-interp-wave",
// nav-enemy BUG
"(anon-function 28 nav-enemy)",
// "(anon-function 28 nav-enemy)",
// orb-cache BUG
"(method 27 orb-cache-top)",
@@ -396,7 +395,6 @@
"(anon-function 8 game-save)",
"(anon-function 9 game-save)",
"(anon-function 10 game-save)",
"(anon-function 28 nav-enemy)",
"mistycannon-find-best-solution",
"target-flut-falling-anim-trans",
"kermit-check-to-hit-player?",
@@ -1427,7 +1427,7 @@
["L41", "_lambda_", true],
["L44", "_lambda_", true],
["L45", "_lambda_", true],
// ["L76", "_lambda_", true],
["L76", "_lambda_", true],
["L82", "_lambda_", true],
["L86", "_lambda_", true],
["L88", "_lambda_", true],
@@ -902,5 +902,9 @@
[16, "event-message-block"]
],
"birth-pickup-at-point": [
[16, "vector"]
],
"placeholder-do-not-add-below!": []
}
@@ -1802,13 +1802,16 @@
"nav-enemy-set-base-collide-sphere-collide-with": [
[[0, 999], "s6", "nav-enemy"],
[19, "v1", "collide-shape-prim-group"],
[23, "s2", "collide-shape-prim"],
[32, "v1", "collide-shape-prim-sphere"],
[33, "s5", "collide-shape-prim-group"],
[37, "v1", "collide-shape-prim-sphere"],
[38, "s5", "collide-shape-prim-group"],
[42, "v1", "collide-shape-prim-sphere"],
[43, "s5", "collide-shape-prim-group"],
[50, "s4", "collide-shape-prim-group"]
[50, "s4", "collide-shape-prim-group"],
[54, "s5", "collide-shape-prim"],
[55, "s5", "collide-shape-prim"]
],
"nav-enemy-jump-land-anim": [
@@ -1901,11 +1904,11 @@
[[6, 9], "t9", "(function object)"]
],
"(anon-function 11 nav-enemy)": [
[[80, 84], "t9", "(function object object object object)"]
[[80, 84], "t9", "(function object)"]
],
"nav-enemy-init-by-other": [
[[54, 58], "t9", "(function object object object object)"]
[[54, 58], "t9", "(function object object)"]
],
"nav-enemy-set-hit-from-direction": [
@@ -1924,6 +1927,10 @@
[[22, 26], "t9", "(function object)"]
],
"(method 45 nav-enemy)": [
[14, "v1", "process-mask"]
],
"nav-enemy-default-event-handler": [
[62, "a0", "vector"],
[82, "a0", "vector"],
@@ -1940,5 +1947,13 @@
[19, "t9", "(function process-drawable int none)"]
],
"(anon-function 59 nav-enemy)": [
[8, "v1", "int"]
],
"(anon-function 28 nav-enemy)": [
[31, "v1", "int"]
],
"placeholder-do-not-add-below": []
}
+13 -70
View File
@@ -183,33 +183,14 @@
:size-assert #x4c
:flag-assert #x1c0000004c
(:methods
(new (symbol type basic uint) _type_ 0)
(dummy-9 () none 9)
(dummy-10 () none 10)
(dummy-11 () none 11)
(dummy-12 () none 12)
(dummy-13 () none 13)
(dummy-14 () none 14)
(dummy-15 () none 15)
(dummy-16 () none 16)
(dummy-17 () none 17)
(dummy-18 () none 18)
(dummy-19 () none 19)
(dummy-20 () none 20)
(dummy-21 () none 21)
(dummy-22 () none 22)
(dummy-23 () none 23)
(dummy-24 () none 24)
(dummy-25 () none 25)
(dummy-26 () none 26)
(dummy-27 () none 27)
)
(new (symbol type basic uint) _type_ 0)
)
)
;; mesh collision
;; the pats are stored per tri in the mesh.
(deftype collide-shape-prim-mesh (collide-shape-prim)
((mesh basic :offset-assert 72)
((mesh collide-mesh :offset-assert 72)
(mesh-id int32 :offset-assert 76)
(mesh-cache-id uint64 :offset-assert 80)
(mesh-cache-tris uint32 :offset-assert 88)
@@ -218,63 +199,25 @@
:size-assert #x5c
:flag-assert #x1d0000005c
(:methods
(new (symbol type basic uint uint) _type_ 0)
(dummy-9 () none 9)
(dummy-10 () none 10)
(dummy-11 () none 11)
(dummy-12 () none 12)
(dummy-13 () none 13)
(dummy-14 () none 14)
(dummy-15 () none 15)
(dummy-16 () none 16)
(dummy-17 () none 17)
(dummy-18 () none 18)
(dummy-19 () none 19)
(dummy-20 () none 20)
(dummy-21 () none 21)
(dummy-22 () none 22)
(dummy-23 () none 23)
(dummy-24 () none 24)
(dummy-25 () none 25)
(dummy-26 () none 26)
(dummy-27 () none 27)
(dummy-28 () none 28)
)
(new (symbol type basic uint uint) _type_ 0)
(dummy-28 () none 28)
)
)
;; A group of collide-shape-prim's
(deftype collide-shape-prim-group (collide-shape-prim)
((num-prims int32 :offset-assert 72)
(allocated-prims int32 :offset-assert 76)
(prim uint32 1 :offset-assert 80) ;; array of references.
(prim uint32 1 :offset-assert 80) ; array of references
)
:method-count-assert 30
:size-assert #x54
:flag-assert #x1e00000054
(:methods
(new (symbol type basic uint int) _type_ 0)
(dummy-9 () none 9)
(dummy-10 () none 10)
(dummy-11 () none 11)
(dummy-12 () none 12)
(dummy-13 () none 13)
(dummy-14 () none 14)
(dummy-15 () none 15)
(dummy-16 () none 16)
(dummy-17 () none 17)
(dummy-18 () none 18)
(dummy-19 () none 19)
(dummy-20 () none 20)
(dummy-21 () none 21)
(dummy-22 () none 22)
(dummy-23 () none 23)
(dummy-24 () none 24)
(dummy-25 () none 25)
(dummy-26 () none 26)
(dummy-27 () none 27)
(dummy-28 () none 28)
(dummy-29 () none 29)
)
(new (symbol type basic uint int) _type_ 0)
(dummy-28 () none 28)
(dummy-29 () none 29)
)
)
(defenum collide-list-enum
@@ -293,8 +236,8 @@
(pat-ignore-mask pat-surface :offset-assert 148)
(event-self basic :offset-assert 152)
(event-other basic :offset-assert 156)
(root-prim collide-shape-prim :offset-assert 160)
(riders basic :offset-assert 164)
(root-prim collide-shape-prim :offset-assert 160)
(riders collide-sticky-rider-group :offset-assert 164)
(backup-collide-as uint64 :offset-assert 168)
(backup-collide-with uint64 :offset-assert 176)
)
+20 -20
View File
@@ -6,8 +6,8 @@
;; dgos: GAME, ENGINE
(deftype touching-prim (structure)
((cprim basic :offset-assert 0)
(has-tri? basic :offset-assert 4)
((cprim collide-shape-prim :offset-assert 0) ;; a big guess, there's a few that meet this name
(has-tri? symbol :offset-assert 4)
(tri collide-tri-result :inline :offset-assert 16)
)
:method-count-assert 9
@@ -18,7 +18,7 @@
(deftype touching-prims-entry (structure)
((next touching-prims-entry :offset-assert 0)
(prev touching-prims-entry :offset-assert 4)
(allocated? basic :offset-assert 8)
(allocated? symbol :offset-assert 8)
(u float :offset-assert 12)
(prim1 touching-prim :inline :offset-assert 16)
(prim2 touching-prim :inline :offset-assert 128)
@@ -27,11 +27,11 @@
:size-assert #xe4
:flag-assert #xd000000e4
(:methods
(dummy-9 () none 9)
(dummy-10 () none 10)
(dummy-11 () none 11)
(dummy-12 () none 12)
)
(dummy-9 () none 9)
(dummy-10 () none 10)
(dummy-11 () none 11)
(dummy-12 () none 12)
)
)
(deftype touching-prims-entry-pool (structure)
@@ -88,8 +88,8 @@
)
(deftype touching-shapes-entry (structure)
((cshape1 basic :offset-assert 0)
(cshape2 basic :offset-assert 4)
((cshape1 collide-shape :offset-assert 0)
(cshape2 collide-shape :offset-assert 4)
(resolve-u int8 :offset-assert 8)
(head touching-prims-entry :offset-assert 12)
)
@@ -98,16 +98,16 @@
:size-assert #x10
:flag-assert #x1200000010
(:methods
(dummy-9 () none 9)
(dummy-10 () none 10)
(dummy-11 () none 11)
(dummy-12 () none 12)
(dummy-13 () none 13)
(dummy-14 () none 14)
(dummy-15 () none 15)
(get-head (_type_) touching-prims-entry 16)
(unknown1 (_type_ (pointer uint32)) uint 17)
)
(dummy-9 () none 9)
(dummy-10 () none 10)
(dummy-11 () none 11)
(prims-touching? (_type_ collide-shape-moving uint) touching-prims-entry 12) ; this one!
(dummy-13 () none 13)
(dummy-14 () none 14)
(dummy-15 () none 15)
(get-head (_type_) touching-prims-entry 16)
(unknown1 (_type_ (pointer uint32)) uint 17)
)
)
(deftype touching-list (structure)
+1 -1
View File
@@ -94,7 +94,7 @@
:flag-assert #xc00000028
(:methods
(new (symbol type process pickup-type float) _type_ 0)
(dummy-9 () none 9)
(dummy-9 () uint 9) ;; See nav-enemy::process-drawable-death-event-handler
(reset! (_type_ symbol) none 10)
(dummy-11 (_type_) float 11)
)
+36 -33
View File
@@ -9,15 +9,18 @@
:bitfield #t
:type uint32
(display-marks 0)
(bit0 0) ;; TODO - nav-enemy::45
(bit1 1)
(bit2 2)
(bit3 3)
(bit3 3) ;; TODO - nav-enemy::45
(bit4 4)
(bit5 5)
(bit6 6)
(bit7 7)
(bit5 5) ;; TODO - nav-enemy::45
(bit6 6) ;; TODO - nav-enemy::45
(bit7 7) ;; TODO - nav-enemy::45
(bit8 8)
(bit10 10) ;; TODO - nav-enemy::nav-enemy-patrol-post
(bit13 13)
(bit19 19) ;; TODO - nav-enemy::lambda::17
)
(deftype nav-poly (structure)
@@ -201,38 +204,38 @@
)
(deftype nav-control (basic)
((flags nav-control-flags :offset-assert 4)
(process basic :offset-assert 8)
(shape collide-shape :offset-assert 12)
(mesh nav-mesh :offset-assert 16)
(gap-event basic :offset-assert 20)
(block-event basic :offset-assert 24)
(current-poly nav-poly :offset-assert 28)
(next-poly nav-poly :offset-assert 32)
(target-poly nav-poly :offset-assert 36)
(portal nav-route-portal 2 :offset-assert 40)
(nearest-y-threshold meters :offset-assert 48)
(event-temp vector :inline :offset-assert 64)
(old-travel vector :inline :offset-assert 80)
(blocked-travel vector :inline :offset-assert 96)
(prev-pos vector :inline :offset-assert 112)
(extra-nav-sphere vector :inline :offset-assert 128)
(travel vector :inline :offset-assert 144)
(target-pos vector :inline :offset-assert 160)
(destination-pos vector :inline :offset-assert 176)
(block-time uint64 :offset-assert 192)
(block-count float :offset-assert 200)
(user-poly nav-poly :offset-assert 204)
(nav-cull-radius float :offset-assert 208)
(num-spheres int16 :offset-assert 212)
(max-spheres int16 :offset-assert 214)
(sphere sphere :inline :dynamic :offset-assert 224)
((flags nav-control-flags :offset-assert 4)
(process basic :offset-assert 8)
(shape collide-shape :offset-assert 12)
(mesh nav-mesh :offset-assert 16)
(gap-event basic :offset-assert 20)
(block-event basic :offset-assert 24)
(current-poly nav-poly :offset-assert 28)
(next-poly nav-poly :offset-assert 32)
(target-poly nav-poly :offset-assert 36)
(portal nav-route-portal 2 :offset-assert 40) ;; guess
(nearest-y-threshold meters :offset-assert 48)
(event-temp vector :inline :offset-assert 64)
(old-travel vector :inline :offset-assert 80)
(blocked-travel vector :inline :offset-assert 96)
(prev-pos vector :inline :offset-assert 112)
(extra-nav-sphere vector :inline :offset-assert 128)
(travel vector :inline :offset-assert 144)
(target-pos vector :inline :offset-assert 160)
(destination-pos vector :inline :offset-assert 176)
(block-time uint64 :offset-assert 192)
(block-count float :offset-assert 200)
(user-poly nav-poly :offset-assert 204)
(nav-cull-radius float :offset-assert 208)
(num-spheres int16 :offset-assert 212)
(max-spheres int16 :offset-assert 214)
(sphere sphere :inline :dynamic :offset-assert 224) ;; guess
)
:method-count-assert 36
:size-assert #xe0
:flag-assert #x24000000e0
(:methods
(new (symbol type collide-shape int float) _type_ 0)
(new (symbol type collide-shape int float) _type_)
(dummy-9 () none 9)
(point-in-bounds? (_type_ vector) symbol 10)
(dummy-11 () none 11)
@@ -240,7 +243,7 @@
(dummy-13 () none 13)
(dummy-14 () none 14)
(set-target-pos! (_type_ vector) none 15)
(dummy-16 () none 16)
(dummy-16 (_type_ vector) symbol 16) ; see - nav-enemy-test-point-in-nav-mesh?
(dummy-17 () none 17)
(dummy-18 () none 18)
(dummy-19 () none 19)
@@ -249,7 +252,7 @@
(dummy-22 () none 22)
(dummy-23 () none 23)
(dummy-24 () none 24)
(dummy-25 () none 25)
(dummy-25 (_type_ vector float) symbol 25) ; see - nav-enemy-test-point-near-nav-mesh?
(dummy-26 () none 26)
(dummy-27 () none 27)
(dummy-28 () none 28)
+48 -45
View File
@@ -64,7 +64,9 @@
)
(deftype nav-enemy (process-drawable)
((hit-from-dir vector :inline :offset-assert 176)
((collide-info collide-shape-moving :score 100 :offset 112)
(enemy-info fact-info-enemy :score 100 :offset 144)
(hit-from-dir vector :inline :offset-assert 176)
(event-param-point vector :inline :offset-assert 192)
(frustration-point vector :inline :offset-assert 208)
(jump-dest vector :inline :offset-assert 224)
@@ -78,7 +80,7 @@
(turn-time uint64 :offset-assert 312)
(frustration-time uint64 :offset-assert 320)
(speed-scale float :offset-assert 328)
(neck basic :offset-assert 332)
(neck joint-mod :offset-assert 332) ; this is what `neck` is on the pelican
(reaction-time uint64 :offset-assert 336)
(notice-time uint64 :offset-assert 344)
(state-timeout uint64 :offset-assert 352)
@@ -87,12 +89,13 @@
(nav-enemy-flags uint32 :offset-assert 376)
(incomming-attack-id uint64 :offset-assert 384)
(jump-return-state basic :offset-assert 392)
(rand-gen basic :offset-assert 396)
(rand-gen random-generator :offset-assert 396)
)
:heap-base #x120
:method-count-assert 76
:size-assert #x190
:flag-assert #x4c01200190
;; inherited inspect of process-drawable
(:methods
(nav-enemy-attack () none 20) ;; state
(nav-enemy-chase () none 21) ;; state
@@ -108,47 +111,47 @@
(nav-enemy-stare () none 31) ;; state
(nav-enemy-stop-chase () none 32) ;; state
(nav-enemy-victory () none 33) ;; state
(dummy-34 () none 34)
(dummy-35 () none 35)
(dummy-36 () none 36)
(dummy-37 () none 37)
(dummy-38 () none 38)
(dummy-39 () none 39)
(dummy-40 () none 40)
(dummy-41 () none 41)
(dummy-42 () none 42)
(dummy-43 () none 43)
(dummy-44 () none 44)
(dummy-45 () none 45)
(dummy-46 () none 46)
(dummy-47 () none 47)
(dummy-48 () none 48)
(dummy-49 () none 49)
(dummy-50 () none 50)
(dummy-51 () none 51)
(dummy-52 () none 52)
(dummy-53 () none 53)
(dummy-54 () none 54)
(dummy-55 () none 55)
(dummy-56 () none 56)
(dummy-57 () none 57)
(dummy-58 () none 58)
(dummy-59 () none 59)
(dummy-60 () none 60)
(dummy-61 () none 61)
(dummy-62 () none 62)
(dummy-63 () none 63)
(dummy-64 () none 64)
(dummy-65 () none 65)
(dummy-66 () none 66)
(dummy-67 () none 67)
(dummy-68 () none 68)
(dummy-69 () none 69)
(dummy-70 () none 70)
(dummy-71 () none 71)
(dummy-72 () none 72)
(dummy-73 () none 73)
(dummy-74 () none 74)
(dummy-75 () none 75)
(dummy-34 (_type_) none 34)
(dummy-35 (_type_) none 35)
(dummy-36 (_type_) none 36)
(TODO-RENAME-37 (_type_) none 37)
(TODO-RENAME-38 (_type_) none 38)
(TODO-RENAME-39 (_type_) none 39)
(dummy-40 (_type_) none 40)
(dummy-41 (_type_) none 41)
(TODO-RENAME-42 (_type_) int 42)
(dummy-43 (_type_ process event-message-block) object 43)
(dummy-44 (_type_ process event-message-block) object 44)
(TODO-RENAME-45 (_type_ nav-enemy-info) none 45)
(TODO-RENAME-46 (_type_ float) basic 46)
(TODO-RENAME-47 (_type_) none 47) ;; - Stubbed
(TODO-RENAME-48 (_type_) none 48) ;; - Stubbed
(TODO-RENAME-49 (_type_ nav-enemy-info) float 49)
(TODO-RENAME-50 (_type_ vector) symbol 50)
(dummy-51 (_type_) none 51)
(dummy-52 (_type_) none 52)
(dummy-53 (_type_) none 53)
(dummy-54 (_type_) none 54)
(dummy-55 (_type_) none 55)
(dummy-56 (_type_) none 56)
(dummy-57 (_type_) none 57)
(dummy-58 (_type_) none 58)
(TODO-RENAME-59 (_type_) none 59)
(dummy-60 (_type_) none 60)
(dummy-61 (_type_) none 61)
(dummy-62 (_type_) none 62)
(dummy-63 (_type_) none 63)
(dummy-64 (_type_) none 64)
(dummy-65 (_type_) none 65)
(dummy-66 (_type_) none 66)
(dummy-67 (_type_) symbol 67)
(dummy-68 (_type_) none 68)
(dummy-69 (_type_) none 69)
(dummy-70 (_type_) none 70)
(dummy-71 (_type_) none 71)
(dummy-72 (_type_ process event-message-block) object 72) ;; TODO - args unknown, 3rd arg contains a touching-shapes-entry offset 16/20
(TODO-RENAME-73 (_type_ process) symbol 73)
(dummy-74 (_type_) none 74)
(dummy-75 (_type_) none 75)
)
)
File diff suppressed because it is too large Load Diff
-6
View File
@@ -85,9 +85,6 @@ const std::unordered_set<std::string> g_functions_expected_to_reject = {
"update-mood-lava", // asm
"update-mood-lightning", // asm
// nav-enemy
"(anon-function 28 nav-enemy)", // asm
"debug-menu-item-var-render" // asm
};
@@ -171,9 +168,6 @@ const std::unordered_set<std::string> g_functions_to_skip_compiling = {
// camera
"slave-set-rotation!", "v-slrp2!", "v-slrp3!", // vector-dot involving the stack
// nav-enemy
"(anon-function 28 nav-enemy)", // asm
// loader - decompiler bug with detecting handle macros
"(method 10 external-art-buffer)"};