decomp: finish pelican | double-lurker | rolling-race-ring (#1020)

* decomp: finish `pelican`

* decomp: finish `double-lurker`

* decomp: finish `rolling-race-ring`

* decomp: update draw-status related code

* fix mistakes
This commit is contained in:
Tyler Wilding
2021-12-28 19:14:50 -05:00
committed by GitHub
parent 3a035f2ba3
commit 221e33c5d1
18 changed files with 8621 additions and 1660 deletions
+35 -25
View File
@@ -22907,7 +22907,7 @@
(TODO-RENAME-48 (_type_) none 48) ;; object past to method 60 -- see citb-bunny
(TODO-RENAME-49 (_type_ nav-enemy-info) float 49)
(TODO-RENAME-50 (_type_ vector) symbol 50)
(dummy-51 (_type_ vector) object 51) ;; ret - float | symbol
(dummy-51 (_type_) object 51) ;; ret - float | symbol
(dummy-52 (_type_ vector) symbol 52) ;; ret - symbol | vector
(dummy-53 (_type_) symbol 53) ;; ret - symbol | none
(dummy-54 (_type_) none 54)
@@ -24225,28 +24225,29 @@
:heap-base #xf0
:size-assert #x160
:flag-assert #x1400f00160
(:states
(pelican-wait-at-end symbol)
(pelican-wait-at-nest symbol)
pelican-circle
(pelican-dive path-control curve-control uint)
pelican-from-nest
(pelican-explode symbol)
pelican-spit
(pelican-fly-to-end path-control int)
(pelican-to-nest path-control int))
)
;; - Functions
(define-extern pelican-fly (function (function int) (function int) none :behavior pelican))
(define-extern pelican-fly (function (function pelican int) (function pelican int) none :behavior pelican))
(define-extern pelican-path-update (function float int float float symbol quaternion :behavior pelican))
(define-extern pelican-post (function none :behavior pelican))
;; - Unknowns
(define-extern *pelican-sg* skeleton-group)
(define-extern pelican-wait-at-end (state pelican))
(define-extern pelican-wait-at-nest (state symbol pelican))
(define-extern pelican-circle (state pelican))
(define-extern zero-func (function int))
(define-extern *PELICAN-bank* pelican-bank)
(define-extern pelican-dive (state path-control curve-control uint pelican))
(define-extern pelican-from-nest (state pelican))
(define-extern pelican-explode (state symbol pelican))
(define-extern pelican-spit (state pelican))
(define-extern pelican-fly-to-end (state path-control int pelican))
(define-extern pelican-to-nest (state path-control int pelican))
;; ----------------------
@@ -26959,6 +26960,8 @@
:size-assert #x1d8
:heap-base #x170
:flag-assert #x4c017001d8
(:methods
(dummy-51 (_type_ vector) symbol :replace 51))
(:states
green-eco-lurker-appear
green-eco-lurker-appear-land
@@ -33670,6 +33673,11 @@
:size-assert #x1a0
:heap-base #x130
:flag-assert #x4c013001a0
(:states
double-lurker-top-on-shoulders
double-lurker-top-resume
(double-lurker-top-knocked-down object vector vector)
double-lurker-top-on-shoulders-die)
)
(deftype double-lurker (nav-enemy)
@@ -33679,10 +33687,22 @@
(buddy-dead? symbol :offset-assert 412)
(buddy-handle handle :offset-assert 416) ; double-lurker-top
)
(:methods
(initialize-collision (_type_) collide-shape-moving :replace 47)
(dummy-53 (_type_ vector) symbol :replace 53))
:method-count-assert 76
:size-assert #x1a8
:heap-base #x140
:flag-assert #x4c014001a8
(:states
double-lurker-waiting-to-die
double-lurker-resume
double-lurker-break-apart
double-lurker-both-knocked-back
double-lurker-buddy-was-hit
double-lurker-show-anims
double-lurker-knocked-back
)
)
;; - Functions
@@ -33692,22 +33712,11 @@
;; - Unknowns
(define-extern double-lurker-waiting-to-die (state double-lurker)) ;; unknown type
(define-extern *double-lurker-sg* skeleton-group)
(define-extern *double-lurker-when-both-nav-enemy-info* nav-enemy-info)
(define-extern *double-lurker-nav-enemy-info* nav-enemy-info)
(define-extern double-lurker-resume (state double-lurker)) ;; unknown type
(define-extern double-lurker-break-apart (state double-lurker)) ;; unknown type
(define-extern double-lurker-buddy-was-hit (state object object double-lurker-top double-lurker)) ;; unknown type
(define-extern double-lurker-both-knocked-back (state double-lurker)) ;; unknown type
(define-extern double-lurker-top-on-shoulders (state double-lurker-top)) ;; unknown type
(define-extern double-lurker-top-resume (state double-lurker-top)) ;; unknown type
(define-extern *double-lurker-top-sg* skeleton-group)
(define-extern *double-lurker-top-nav-enemy-info* nav-enemy-info)
(define-extern double-lurker-top-knocked-down (state object vector vector double-lurker-top)) ;; unknown type
(define-extern double-lurker-top-on-shoulders-die (state double-lurker-top)) ;; unknown type
(define-extern double-lurker-show-anims (state double-lurker)) ;; unknown type
(define-extern double-lurker-knocked-back (state double-lurker)) ;; unknown type
;; ----------------------
@@ -34306,6 +34315,10 @@
:size-assert #x130
:heap-base #xc0
:flag-assert #x1400c00130
(:states
race-ring-active
race-ring-wait
race-ring-idle)
)
;; - Functions
@@ -34318,9 +34331,6 @@
;; - Unknowns
(define-extern *race-ring-sg* skeleton-group)
(define-extern race-ring-active (state race-ring)) ;; unknown type
(define-extern race-ring-wait (state race-ring)) ;; unknown type
(define-extern race-ring-idle (state race-ring)) ;; unknown type
;; ----------------------
@@ -3749,7 +3749,7 @@
"(method 52 double-lurker)": [
[16, "vector"],
[32, "vector"],
[48, "collide-mesh-cache-tri"]
[48, "collide-tri-result"]
],
"double-lurker-default-event-handler": [
@@ -3510,11 +3510,9 @@
],
"(code race-ring-active)": [
[242, "v1", "handle"],
[245, "v1", "handle"],
[[241, 249], "v1", "handle"],
[253, "gp", "handle"],
[269, "s5", "handle"],
[272, "s5", "handle"]
[[269, 276], "s5", "handle"]
],
"(trans race-ring-active)": [[26, "a0", "part-tracker"]],
@@ -5335,6 +5333,7 @@
],
"(method 51 double-lurker)": [
[6, "v1", "collide-shape-prim-group"],
[18, "v1", "collide-shape-prim-group"],
[22, "v1", "collide-shape-prim-group"]
],
@@ -7361,5 +7360,9 @@
// [25, "a0", "uint"]
],
"(anon-function 15 pelican)": [
[24, "v1", "collectable"]
],
"placeholder-do-not-add-below": []
}
@@ -3842,5 +3842,20 @@
}
},
"(code pelican-spit)": {
"vars": {
"gp-1": ["gp-1", "handle"],
"s4-0": ["s4-0", "handle"]
}
},
"(code race-ring-active)": {
"vars": {
"gp-2": ["gp-2", "handle"],
"v1-65": ["v1-65", "handle"],
"s5-2": ["s5-2", "handle"]
}
},
"aaaaaaaaaaaaaaaaaaaaaaa": {}
}
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -136,7 +136,7 @@
(TODO-RENAME-48 (_type_) none 48)
(TODO-RENAME-49 (_type_ nav-enemy-info) float 49)
(TODO-RENAME-50 (_type_ vector) symbol 50)
(dummy-51 (_type_ vector) object 51)
(dummy-51 (_type_) object 51)
(dummy-52 (_type_ vector) symbol 52)
(dummy-53 (_type_) symbol 53)
(dummy-54 (_type_) none 54)
@@ -17,6 +17,9 @@
:method-count-assert 76
:size-assert #x1d8
:flag-assert #x4c017001d8
(:methods
(dummy-51 (_type_ vector) symbol :replace 51)
)
(:states
green-eco-lurker-appear
green-eco-lurker-appear-land
@@ -392,7 +395,7 @@
(set! (-> v1-3 w) (-> obj collide-info root-prim local-sphere w))
)
(if (not (TODO-RENAME-50 obj arg0))
(return (the-as object #t))
(return #t)
)
)
#f
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -182,7 +182,7 @@
(TODO-RENAME-48 (_type_) none 48)
(TODO-RENAME-49 (_type_ nav-enemy-info) float 49)
(TODO-RENAME-50 (_type_ vector) symbol 50)
(dummy-51 (_type_ vector) object 51)
(dummy-51 (_type_) object 51)
(dummy-52 (_type_ vector) symbol 52)
(dummy-53 (_type_) symbol 53)
(dummy-54 (_type_) none 54)
+4 -2
View File
@@ -12,6 +12,9 @@
:method-count-assert 76
:size-assert #x1d8
:flag-assert #x4c017001d8
(:methods
(dummy-51 (_type_ vector) symbol :replace 51)
)
(:states
green-eco-lurker-appear
green-eco-lurker-appear-land
@@ -418,7 +421,6 @@
)
;; definition for method 51 of type green-eco-lurker
;; INFO: Return type mismatch symbol vs object.
;; Used lq/sq
(defmethod dummy-51 green-eco-lurker ((obj green-eco-lurker) (arg0 vector))
(when (or (not *target*) (>= (vector-vector-xz-distance arg0 (target-pos 0)) 36864.0))
@@ -427,7 +429,7 @@
(set! (-> v1-3 w) (-> obj collide-info root-prim local-sphere w))
)
(if (not (TODO-RENAME-50 obj arg0))
(return (the-as object #t))
(return #t)
)
)
#f
+17 -20
View File
@@ -288,7 +288,7 @@ baby-spider-default-event-handler
;; definition for method 51 of type baby-spider
;; INFO: Return type mismatch float vs object.
(defmethod dummy-51 baby-spider ((obj baby-spider) (arg0 vector))
(defmethod dummy-51 baby-spider ((obj baby-spider))
(let* ((f0-0 (rand-vu-float-range 0.0 1.0))
(f1-1 (+ 1.0 (* 2.0 f0-0)))
(f2-2 f1-1)
@@ -575,26 +575,23 @@ baby-spider-default-event-handler
(set! (-> self wiggle-angle) 0.0)
(set! (-> self chase-rest-time) (rand-vu-int-range 300 1200))
(ja-channel-push! 1 51)
(let* ((gp-0 (-> self skel root-channel 0))
(t9-2 joint-control-channel-group-eval!)
(a0-2 gp-0)
(a1-2 (-> self draw art-group data 7))
)
(t9-2 a0-2 (the-as art-joint-anim a1-2) num-func-identity)
(let ((gp-0 (-> self skel root-channel 0)))
(joint-control-channel-group-eval!
gp-0
(the-as art-joint-anim (-> self draw art-group data 7))
num-func-identity
)
(set! (-> gp-0 frame-num) 0.0)
(while #t
(when (>= (- (-> *display* base-frame-counter) (-> self wiggle-time)) 300)
(set! (-> self wiggle-time) (-> *display* base-frame-counter))
(dummy-51 self (the-as vector a1-2))
)
(suspend)
(let ((a0-5 (-> self skel root-channel 0)))
(set! (-> a0-5 param 0) 1.0)
(let ((t9-4 joint-control-channel-group-eval!))
(set! a1-2 (the-as art-element #f))
(t9-4 a0-5 (the-as art-joint-anim a1-2) num-func-loop!)
)
)
)
(while #t
(when (>= (- (-> *display* base-frame-counter) (-> self wiggle-time)) 300)
(set! (-> self wiggle-time) (-> *display* base-frame-counter))
(dummy-51 self)
)
(suspend)
(let ((a0-5 (-> self skel root-channel 0)))
(set! (-> a0-5 param 0) 1.0)
(joint-control-channel-group-eval! a0-5 (the-as art-joint-anim #f) num-func-loop!)
)
)
(none)
+15 -34
View File
@@ -175,7 +175,7 @@
;; definition for method 51 of type muse
;; INFO: Return type mismatch int vs object.
(defmethod dummy-51 muse ((obj muse) (arg0 vector))
(defmethod dummy-51 muse ((obj muse))
(dotimes (s5-0 2)
(let ((v1-2 (rand-vu-int-range 3 (+ (-> obj node-list length) -1))))
(sp-launch-particles-var
@@ -193,13 +193,8 @@
;; definition for method 39 of type muse
(defmethod common-post muse ((obj muse))
(let* ((a0-1 *art-control*)
(t9-0 (method-of-object a0-1 spool-push))
(a1-0 (-> obj anim name))
)
(t9-0 a0-1 a1-0 0 obj -99.0)
(dummy-51 obj (the-as vector a1-0))
)
(spool-push *art-control* (-> obj anim name) 0 obj -99.0)
(dummy-51 obj)
((method-of-type nav-enemy common-post) obj)
(none)
)
@@ -289,13 +284,8 @@ nav-enemy-default-event-handler
(joint-control-channel-group! a0-9 (the-as art-joint-anim (-> self draw art-group data 3)) num-func-seek!)
)
(until (ja-done? 0)
(let* ((a0-10 *art-control*)
(t9-7 (method-of-object a0-10 spool-push))
(a1-5 (-> self anim name))
)
(t9-7 a0-10 a1-5 0 self -99.0)
(dummy-51 self (the-as vector a1-5))
)
(spool-push *art-control* (-> self anim name) 0 self -99.0)
(dummy-51 self)
(suspend)
(let ((a0-12 (-> self skel root-channel 0)))
(set! (-> a0-12 param 0) (the float (+ (-> a0-12 frame-group data 0 length) -1)))
@@ -556,18 +546,16 @@ nav-enemy-default-event-handler
(ja-post)
(clear-collide-with-as (-> self collide-info))
(send-event *target* 'trans 'reset)
(let ((gp-4
(ppointer->handle
(birth-pickup-at-point
(target-pos 0)
(pickup-type fuel-cell)
(the float (-> self entity extra perm task))
#f
self
(the-as fact-info #f)
(let ((gp-4 (ppointer->handle (birth-pickup-at-point
(target-pos 0)
(pickup-type fuel-cell)
(the float (-> self entity extra perm task))
#f
self
(the-as fact-info #f)
)
)
)
)
)
)
(send-event (handle->process (the-as handle gp-4)) 'pickup)
(while (handle->process (the-as handle gp-4))
@@ -586,14 +574,7 @@ nav-enemy-default-event-handler
(none)
)
:post
(behavior ()
(local-vars (a1-0 none))
(dummy-51 self (the-as vector a1-0))
(level-hint-surpress!)
(kill-current-level-hint '() '() 'exit)
(ja-post)
(none)
)
(behavior () (dummy-51 self) (level-hint-surpress!) (kill-current-level-hint '() '() 'exit) (ja-post) (none))
)
;; definition for symbol *muse-nav-enemy-info*, type nav-enemy-info
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff