decomp: finish misty-teetertotter

This commit is contained in:
Tyler Wilding
2021-08-08 17:00:51 -04:00
parent ad695ed12b
commit a9816f9d28
14 changed files with 1046 additions and 54 deletions
+20 -31
View File
@@ -865,6 +865,8 @@
(misty-bike-jump #x266)
(misty-eco-challenge #x267)
(misty-teetertotter-bonk-dax-tutorial #x2a4)
(village2-gambler-money #x300)
(village2-geologist-money #x301)
(village2-warrior-money #x302)
@@ -9901,15 +9903,15 @@
(attacker uint64 :offset-assert 48) ;; handle
(invinc-time uint64 :offset-assert 56)
(mask uint32 :offset-assert 64)
(mode basic :offset-assert 68)
(mode symbol :offset-assert 68)
(shove-back meters :offset-assert 72)
(shove-up meters :offset-assert 76)
(speed meters :offset-assert 80)
(dist meters :offset-assert 84)
(control float :offset-assert 88)
(angle basic :offset-assert 92)
(angle symbol :offset-assert 92)
(rotate-to degrees :offset-assert 96)
(prev-state basic :offset-assert 100)
(prev-state state :offset-assert 100)
)
:method-count-assert 10
:size-assert #x68
@@ -17583,7 +17585,7 @@
(define-extern target-attack-up function)
(define-extern find-ground-point function)
(define-extern default-collision-reaction function)
(define-extern default-collision-reaction (function collide-shape-moving collide-shape-intersect vector vector none)) ;; TODO - not completely confirmed
(define-extern simple-collision-reaction function)
(define-extern collide-shape-draw-debug-marks (function none))
(define-extern debug-report-col-stats function)
@@ -33650,40 +33652,27 @@
;; - Types
; (deftype teetertotter (process-drawable)
; ((launched-player basic :offset-assert 176)
; (in-launch-window basic :offset-assert 180)
; (rock-is-dangerous basic :offset-assert 184)
; )
; :method-count-assert 20
; :size-assert #xbc
; :flag-assert #x14005000bc
; ;; inherited inspect of process-drawable
; (: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)
; (dummy-16 () none 16)
; (dummy-17 () none 17)
; (dummy-18 () none 18)
; (dummy-19 () none 19)
; )
; )
(deftype teetertotter (process-drawable)
((launched-player basic :offset-assert 176)
(in-launch-window basic :offset-assert 180)
(rock-is-dangerous basic :offset-assert 184)
)
:method-count-assert 20
:heap-base #x50
:size-assert #xbc
:flag-assert #x14005000bc
)
;; - Functions
(define-extern target-on-end-of-teetertotter? function)
(define-extern target-on-end-of-teetertotter? (function teetertotter symbol))
;; - Unknowns
(define-extern *teetertotter-sg* skeleton-group)
;;(define-extern teetertotter-idle object) ;; unknown type
;;(define-extern teetertotter-launch object) ;; unknown type
;;(define-extern teetertotter-bend object) ;; unknown type
(define-extern teetertotter-idle (state none)) ;; unknown type
(define-extern teetertotter-launch (state none)) ;; unknown type
(define-extern teetertotter-bend (state none)) ;; unknown type
;; ----------------------
@@ -584,5 +584,13 @@
[2, "(function basic int basic event-message-block object :behavior camera-combiner)"]
],
"misty-teetertotter": [
[1, "(function none :behavior teetertotter)"],
[2, "(function none :behavior teetertotter)"],
[3, "(function process int symbol event-message-block symbol :behavior teetertotter)"],
[4, "(function none :behavior teetertotter)"],
[5, "(function process int symbol event-message-block object :behavior teetertotter)"]
],
"placeholder-do-not-add-below": []
}
@@ -1413,6 +1413,20 @@
["L508", "float", true]
],
"misty-teetertotter": [
["L2", "_lambda_", true],
["L4", "_lambda_", true],
["L10", "_lambda_", true],
["L15", "_lambda_", true],
["L17", "_lambda_", true],
["L24", "state", true],
["L25", "state", true],
["L26", "attack-info", true],
["L27", "attack-info", true],
["L28", "state", true],
["L30", "skeleton-group", true]
],
// please do not add things after this entry! git is dumb.
"object-file-that-doesnt-actually-exist-and-i-just-put-this-here-to-prevent-merge-conflicts-with-this-file": []
}
@@ -820,6 +820,15 @@
"draw-ocean-transition-seams": [
[16, "sphere"]
],
"target-on-end-of-teetertotter?": [
[16, "vector"],
[32, "vector"]
],
"(anon-function 3 misty-teetertotter)": [
[16, "event-message-block"]
],
"placeholder-do-not-add-below!": []
}
@@ -1787,9 +1787,13 @@
"draw-ocean-transition": [[255, "v1", "ocean-mid-mask"]],
// "ocean-trans-mask-ptrs-bit?": [
// [[32, 41], "a0", "(pointer ocean-trans-mask)"]
// ],
"(anon-function 2 misty-teetertotter)": [
[11, "v1", "art-joint-anim"]
],
"(anon-function 1 misty-teetertotter)": [
[10, "v1", "art-joint-anim"]
],
"placeholder-do-not-add-below": []
}
+2
View File
@@ -5,3 +5,5 @@
;; name in dgo: collide-shape
;; dgos: GAME, ENGINE
;; TODO - for misty-teetertotter
(define-extern default-collision-reaction (function collide-shape-moving collide-shape-intersect vector vector none)) ;; TODO - not completely confirmed
+4
View File
@@ -5,3 +5,7 @@
;; name in dgo: process-drawable
;; dgos: GAME, ENGINE
;; TODO - for misty-teetertotter
(define-extern transform-post (function int))
(define-extern ja-done? (function int symbol))
(define-extern rider-post (function int))
+3
View File
@@ -117,3 +117,6 @@
)
(the-as entity-actor #f)
)
;; TODO - for misty-teetertotter
(define-extern process-drawable-from-entity! (function process-drawable object none))
+15 -15
View File
@@ -110,21 +110,21 @@
)
(deftype attack-info (structure)
((trans vector :inline :offset-assert 0)
(vector vector :inline :offset-assert 16)
(intersection vector :inline :offset-assert 32)
(attacker uint64 :offset-assert 48) ;; handle
(invinc-time uint64 :offset-assert 56)
(mask uint32 :offset-assert 64)
(mode basic :offset-assert 68)
(shove-back meters :offset-assert 72)
(shove-up meters :offset-assert 76)
(speed meters :offset-assert 80)
(dist meters :offset-assert 84)
(control float :offset-assert 88)
(angle basic :offset-assert 92)
(rotate-to degrees :offset-assert 96)
(prev-state basic :offset-assert 100)
((trans vector :inline :offset-assert 0)
(vector vector :inline :offset-assert 16)
(intersection vector :inline :offset-assert 32)
(attacker uint64 :offset-assert 48) ;; handle
(invinc-time uint64 :offset-assert 56)
(mask uint32 :offset-assert 64)
(mode symbol :offset-assert 68)
(shove-back meters :offset-assert 72)
(shove-up meters :offset-assert 76)
(speed meters :offset-assert 80)
(dist meters :offset-assert 84)
(control float :offset-assert 88)
(angle symbol :offset-assert 92)
(rotate-to degrees :offset-assert 96)
(prev-state state :offset-assert 100)
)
:method-count-assert 10
:size-assert #x68
+2
View File
@@ -88,6 +88,8 @@
(jungle-temple-door #x265)
(misty-bike-jump #x266)
(misty-eco-challenge #x267)
(misty-teetertotter-bonk-dax-tutorial #x2a4)
(village2-gambler-money #x300)
(village2-geologist-money #x301)
+472
View File
@@ -5,3 +5,475 @@
;; name in dgo: misty-teetertotter
;; dgos: L1, MIS
;; definition of type teetertotter
(deftype teetertotter (process-drawable)
((launched-player basic :offset-assert 176)
(in-launch-window basic :offset-assert 180)
(rock-is-dangerous basic :offset-assert 184)
)
:heap-base #x50
:method-count-assert 20
:size-assert #xbc
:flag-assert #x14005000bc
)
(define-extern *teetertotter-sg* skeleton-group)
(define-extern teetertotter-idle (state none)) ;; unknown type
(define-extern teetertotter-launch (state none)) ;; unknown type
(define-extern teetertotter-bend (state none)) ;; unknown type
;; failed to figure out what this is:
(let
((v1-1
(new 'static 'skeleton-group
:art-group-name "teetertotter"
:bounds (new 'static 'vector :w 32768.0)
:max-lod 2
:version #x6
)
)
)
(set! (-> v1-1 jgeo) 0)
(set! (-> v1-1 janim) 4)
(set! (-> v1-1 mgeo 0) (the-as uint 1))
(set! (-> v1-1 lod-dist 0) 81920.0)
(set! (-> v1-1 mgeo 1) (the-as uint 2))
(set! (-> v1-1 lod-dist 1) 163840.0)
(set! (-> v1-1 mgeo 2) (the-as uint 3))
(set! (-> v1-1 lod-dist 2) 4095996000.0)
(set! *teetertotter-sg* v1-1)
)
;; definition for function target-on-end-of-teetertotter?
;; Used lq/sq
(defun target-on-end-of-teetertotter? ((arg0 teetertotter))
(let
((gp-1
(vector-!
(new-stack-vector0)
(-> *target* control trans)
(-> arg0 root trans)
)
)
)
(if
(<
(vector-dot
(vector-x-quaternion! (new-stack-vector0) (-> arg0 root quat))
gp-1
)
-8192.0
)
#t
)
)
)
;; failed to figure out what this is:
(let
((v1-3
(new 'static 'state
:name 'teetertotter-idle
:next #f
:exit #f
:code #f
:trans #f
:post #f
:enter #f
:event #f
)
)
)
(set! teetertotter-idle (the-as (state none) v1-3))
(set!
(-> v1-3 event)
(lambda :behavior teetertotter
((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(let ((v1-0 arg2))
(the-as object (cond
((= v1-0 'attack)
(case (-> arg3 param 1)
(('flop)
(when (target-on-end-of-teetertotter? self)
(set! (-> self in-launch-window) #f)
(increment-success-for-hint
(the-as level-hint-control 676)
)
(go teetertotter-launch)
)
)
)
)
((= v1-0 'bonk)
(when (target-on-end-of-teetertotter? self)
(level-hint-spawn
(game-text-id misty-teetertotter-bonk-dax-tutorial)
"sksp0070"
#f
*entity-pool*
0
)
(go teetertotter-bend)
)
)
)
)
)
)
)
(set!
(-> v1-3 code)
(lambda :behavior teetertotter () (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 4)
)
num-func-identity
)
(set! (-> gp-0 frame-num) 0.0)
)
(while #t
(suspend)
)
(none)
)
)
(set! (-> v1-3 post) transform-post)
)
;; failed to figure out what this is:
(let
((v1-4
(new 'static 'state
:name 'teetertotter-launch
:next #f
:exit #f
:code #f
:trans #f
:post #f
:enter #f
:event #f
)
)
)
(set! teetertotter-launch (the-as (state none) v1-4))
(set!
(-> v1-4 event)
(lambda :behavior teetertotter
((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(when (= arg2 'touch)
(-> arg3 param 0)
(let ((t9-0 (method-of-type touching-shapes-entry dummy-12)))
(-> self root)
1
(when (and (t9-0) (-> self rock-is-dangerous))
(let ((a1-2 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-2 from) self)
(set! (-> a1-2 num-params) 2)
(set! (-> a1-2 message) 'attack)
(set! (-> a1-2 param 0) (-> arg3 param 0))
(let ((a0-2 (new 'static 'attack-info :mask #x20)))
(set! (-> a0-2 mode) 'deadly)
(set! (-> a1-2 param 1) (the-as uint a0-2))
)
(send-event-function arg0 a1-2)
)
)
)
(-> arg3 param 0)
(let ((t9-2 (method-of-type touching-shapes-entry dummy-12)))
(-> self root)
2
(when
(and
(t9-2)
(target-on-end-of-teetertotter? self)
(not (-> self launched-player))
(-> self in-launch-window)
)
(let ((a1-4 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-4 from) self)
(set! (-> a1-4 num-params) 2)
(set! (-> a1-4 message) 'shove)
(set! (-> a1-4 param 0) (the-as uint #f))
(let ((v1-16 (new 'static 'attack-info :mask #xcc0)))
(set! (-> v1-16 shove-back) 0.0)
(set! (-> v1-16 shove-up) 53248.0)
(set! (-> v1-16 angle) 'jump)
(set! (-> v1-16 control) 1.0)
(set! (-> a1-4 param 1) (the-as uint v1-16))
)
(when (send-event-function arg0 a1-4)
(let ((v0-0 #t))
(set! (-> self launched-player) v0-0)
v0-0
)
)
)
)
)
)
)
)
(set!
(-> v1-4 code)
(lambda :behavior teetertotter
()
(local-vars (v1-16 symbol) (f0-4 float))
(set! (-> self launched-player) #f)
(let ((a0-0 (-> self skel root-channel 0)))
(set!
(-> a0-0 frame-group)
(the-as art-joint-anim (-> self draw art-group data 4))
)
(set!
(-> a0-0 param 0)
(the
float
(+
(->
(the-as art-joint-anim (-> self draw art-group data 4))
data
0
length
)
-1
)
)
)
(set! (-> a0-0 param 1) 1.0)
(set! (-> a0-0 frame-num) 0.0)
(joint-control-channel-group!
a0-0
(the-as art-joint-anim (-> self draw art-group data 4))
num-func-seek!
)
)
(until (begin
(set! (-> self rock-is-dangerous) (and v1-16 (>= 76.0 f0-4)))
(suspend)
(let ((a0-2 (-> self skel root-channel 0)))
(set!
(-> a0-2 param 0)
(the float (+ (-> a0-2 frame-group data 0 length) -1))
)
(set! (-> a0-2 param 1) 1.0)
(joint-control-channel-group-eval!
a0-2
(the-as art-joint-anim #f)
num-func-seek!
)
)
(ja-done? 0)
)
(set! f0-4 (ja-aframe-num 0))
(set! (-> self in-launch-window) (and (>= f0-4 76.0) (>= 82.0 f0-4)))
(set! v1-16 (>= f0-4 12.0))
)
(go teetertotter-idle)
(none)
)
)
(set! (-> v1-4 post) rider-post)
)
;; failed to figure out what this is:
(let
((v1-5
(new 'static 'state
:name 'teetertotter-bend
:next #f
:exit #f
:code #f
:trans #f
:post #f
:enter #f
:event #f
)
)
)
(set! teetertotter-bend (the-as (state none) v1-5))
(set!
(-> v1-5 code)
(lambda :behavior teetertotter () (let ((a0-0 (-> self skel root-channel 0)))
(set!
(-> a0-0 frame-group)
(the-as
art-joint-anim
(-> self draw art-group data 5)
)
)
(set!
(-> a0-0 param 0)
(the
float
(+
(->
(the-as
art-joint-anim
(-> self draw art-group data 5)
)
data
0
length
)
-1
)
)
)
(set! (-> a0-0 param 1) 1.0)
(set! (-> a0-0 frame-num) 0.0)
(joint-control-channel-group!
a0-0
(the-as
art-joint-anim
(-> self draw art-group data 5)
)
num-func-seek!
)
)
(until (begin
(suspend)
(let ((a0-1 (-> self skel root-channel 0)))
(set!
(-> a0-1 param 0)
(the float (+ (-> a0-1 frame-group data 0 length) -1))
)
(set! (-> a0-1 param 1) 1.0)
(joint-control-channel-group-eval!
a0-1
(the-as art-joint-anim #f)
num-func-seek!
)
)
(ja-done? 0)
)
(empty)
)
(go teetertotter-idle)
(none)
)
)
(set! (-> v1-5 post) rider-post)
)
;; definition for method 11 of type teetertotter
(defmethod dummy-method-11 teetertotter ((obj teetertotter) (arg0 object))
(let
((s4-0
(new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player))
)
)
(set! (-> s4-0 dynam) (copy *standard-dynamics* 'process))
(set! (-> s4-0 reaction) default-collision-reaction)
(set! (-> s4-0 no-reaction) nothing)
(let ((t9-2 (method-of-object s4-0 dummy-29)))
1
(t9-2)
)
(let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 5) 0)))
(set! (-> s3-0 prim-core collide-as) (the-as uint 2048))
(set! (-> s3-0 collide-with) (the-as uint 16))
(set! (-> s3-0 prim-core action) (the-as uint 1))
(set-vector! (-> s3-0 local-sphere) 0.0 12288.0 0.0 36864.0)
((method-of-object s4-0 dummy-46))
(let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1))))
(set! (-> s2-0 prim-core collide-as) (the-as uint 2048))
(set! (-> s2-0 collide-with) (the-as uint 16))
(set! (-> s2-0 prim-core action) (the-as uint 1))
(set! (-> s2-0 prim-core offense) 4)
(set! (-> s2-0 transform-index) 5)
(set-vector! (-> s2-0 local-sphere) -4096.0 2048.0 0.0 5120.0)
)
((method-of-object s3-0 dummy-28))
(let
((s2-1
(new
'process
'collide-shape-prim-mesh
s4-0
(the-as uint 0)
(the-as uint 2)
)
)
)
(set! (-> s2-1 prim-core collide-as) (the-as uint 2048))
(set! (-> s2-1 collide-with) (the-as uint 16))
(set! (-> s2-1 prim-core action) (the-as uint 3))
(set! (-> s2-1 prim-core offense) 4)
(set! (-> s2-1 transform-index) 7)
(set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 32768.0)
)
((method-of-object s3-0 dummy-28))
(let
((s2-2
(new
'process
'collide-shape-prim-mesh
s4-0
(the-as uint 1)
(the-as uint 0)
)
)
)
(set! (-> s2-2 prim-core collide-as) (the-as uint 2048))
(set! (-> s2-2 collide-with) (the-as uint 16))
(set! (-> s2-2 prim-core action) (the-as uint 1))
(set! (-> s2-2 prim-core offense) 4)
(set! (-> s2-2 transform-index) 4)
(set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 32768.0)
)
((method-of-object s3-0 dummy-28))
(let
((s2-3
(new
'process
'collide-shape-prim-mesh
s4-0
(the-as uint 2)
(the-as uint 0)
)
)
)
(set! (-> s2-3 prim-core collide-as) (the-as uint 2048))
(set! (-> s2-3 collide-with) (the-as uint 16))
(set! (-> s2-3 prim-core action) (the-as uint 1))
(set! (-> s2-3 prim-core offense) 4)
(set! (-> s2-3 transform-index) 3)
(set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 32768.0)
)
((method-of-object s3-0 dummy-28))
(let
((s2-4
(new
'process
'collide-shape-prim-mesh
s4-0
(the-as uint 3)
(the-as uint 2)
)
)
)
(set! (-> s2-4 prim-core collide-as) (the-as uint 2048))
(set! (-> s2-4 collide-with) (the-as uint 16))
(set! (-> s2-4 prim-core action) (the-as uint 3))
(set! (-> s2-4 prim-core offense) 4)
(set! (-> s2-4 transform-index) 3)
(set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 32768.0)
)
((method-of-object s3-0 dummy-28))
)
(set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w)))
((method-of-object s4-0 dummy-50))
(set! (-> obj root) s4-0)
)
(process-drawable-from-entity! obj arg0)
(dummy-14 obj *teetertotter-sg* '())
(set! (-> obj launched-player) #f)
(set! (-> obj in-launch-window) #f)
(set! (-> obj rock-is-dangerous) #f)
(go teetertotter-idle)
(none)
)
@@ -126,15 +126,15 @@
(attacker uint64 :offset-assert 48)
(invinc-time uint64 :offset-assert 56)
(mask uint32 :offset-assert 64)
(mode basic :offset-assert 68)
(mode symbol :offset-assert 68)
(shove-back meters :offset-assert 72)
(shove-up meters :offset-assert 76)
(speed meters :offset-assert 80)
(dist meters :offset-assert 84)
(control float :offset-assert 88)
(angle basic :offset-assert 92)
(angle symbol :offset-assert 92)
(rotate-to degrees :offset-assert 96)
(prev-state basic :offset-assert 100)
(prev-state state :offset-assert 100)
)
:method-count-assert 10
:size-assert #x68
@@ -0,0 +1,485 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type teetertotter
(deftype teetertotter (process-drawable)
((launched-player basic :offset-assert 176)
(in-launch-window basic :offset-assert 180)
(rock-is-dangerous basic :offset-assert 184)
)
:heap-base #x50
:method-count-assert 20
:size-assert #xbc
:flag-assert #x14005000bc
)
;; definition for method 3 of type teetertotter
(defmethod inspect teetertotter ((obj teetertotter))
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(format #t "~T~Tlaunched-player: ~A~%" (-> obj launched-player))
(format #t "~T~Tin-launch-window: ~A~%" (-> obj in-launch-window))
(format #t "~T~Trock-is-dangerous: ~A~%" (-> obj rock-is-dangerous))
obj
)
;; failed to figure out what this is:
(let
((v1-1
(new 'static 'skeleton-group
:art-group-name "teetertotter"
:bounds (new 'static 'vector :w 32768.0)
:max-lod 2
:version #x6
)
)
)
(set! (-> v1-1 jgeo) 0)
(set! (-> v1-1 janim) 4)
(set! (-> v1-1 mgeo 0) (the-as uint 1))
(set! (-> v1-1 lod-dist 0) 81920.0)
(set! (-> v1-1 mgeo 1) (the-as uint 2))
(set! (-> v1-1 lod-dist 1) 163840.0)
(set! (-> v1-1 mgeo 2) (the-as uint 3))
(set! (-> v1-1 lod-dist 2) 4095996000.0)
(set! *teetertotter-sg* v1-1)
)
;; definition for function target-on-end-of-teetertotter?
;; Used lq/sq
(defun target-on-end-of-teetertotter? ((arg0 teetertotter))
(let
((gp-1
(vector-!
(new-stack-vector0)
(-> *target* control trans)
(-> arg0 root trans)
)
)
)
(if
(<
(vector-dot
(vector-x-quaternion! (new-stack-vector0) (-> arg0 root quat))
gp-1
)
-8192.0
)
#t
)
)
)
;; failed to figure out what this is:
(let
((v1-3
(new 'static 'state
:name 'teetertotter-idle
:next #f
:exit #f
:code #f
:trans #f
:post #f
:enter #f
:event #f
)
)
)
(set! teetertotter-idle (the-as (state none) v1-3))
(set!
(-> v1-3 event)
(lambda :behavior teetertotter
((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(let ((v1-0 arg2))
(the-as object (cond
((= v1-0 'attack)
(case (-> arg3 param 1)
(('flop)
(when (target-on-end-of-teetertotter? self)
(set! (-> self in-launch-window) #f)
(increment-success-for-hint
(the-as level-hint-control 676)
)
(go teetertotter-launch)
)
)
)
)
((= v1-0 'bonk)
(when (target-on-end-of-teetertotter? self)
(level-hint-spawn
(game-text-id misty-teetertotter-bonk-dax-tutorial)
"sksp0070"
#f
*entity-pool*
0
)
(go teetertotter-bend)
)
)
)
)
)
)
)
(set!
(-> v1-3 code)
(lambda :behavior teetertotter () (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 4)
)
num-func-identity
)
(set! (-> gp-0 frame-num) 0.0)
)
(while #t
(suspend)
)
(none)
)
)
(set! (-> v1-3 post) transform-post)
)
;; failed to figure out what this is:
(let
((v1-4
(new 'static 'state
:name 'teetertotter-launch
:next #f
:exit #f
:code #f
:trans #f
:post #f
:enter #f
:event #f
)
)
)
(set! teetertotter-launch (the-as (state none) v1-4))
(set!
(-> v1-4 event)
(lambda :behavior teetertotter
((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(when (= arg2 'touch)
(-> arg3 param 0)
(let ((t9-0 (method-of-type touching-shapes-entry dummy-12)))
(-> self root)
1
(when (and (t9-0) (-> self rock-is-dangerous))
(let ((a1-2 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-2 from) self)
(set! (-> a1-2 num-params) 2)
(set! (-> a1-2 message) 'attack)
(set! (-> a1-2 param 0) (-> arg3 param 0))
(let ((a0-2 (new 'static 'attack-info :mask #x20)))
(set! (-> a0-2 mode) 'deadly)
(set! (-> a1-2 param 1) (the-as uint a0-2))
)
(send-event-function arg0 a1-2)
)
)
)
(-> arg3 param 0)
(let ((t9-2 (method-of-type touching-shapes-entry dummy-12)))
(-> self root)
2
(when
(and
(t9-2)
(target-on-end-of-teetertotter? self)
(not (-> self launched-player))
(-> self in-launch-window)
)
(let ((a1-4 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-4 from) self)
(set! (-> a1-4 num-params) 2)
(set! (-> a1-4 message) 'shove)
(set! (-> a1-4 param 0) (the-as uint #f))
(let ((v1-16 (new 'static 'attack-info :mask #xcc0)))
(set! (-> v1-16 shove-back) 0.0)
(set! (-> v1-16 shove-up) 53248.0)
(set! (-> v1-16 angle) 'jump)
(set! (-> v1-16 control) 1.0)
(set! (-> a1-4 param 1) (the-as uint v1-16))
)
(when (send-event-function arg0 a1-4)
(let ((v0-0 #t))
(set! (-> self launched-player) v0-0)
v0-0
)
)
)
)
)
)
)
)
(set!
(-> v1-4 code)
(lambda :behavior teetertotter
()
(local-vars (v1-16 symbol) (f0-4 float))
(set! (-> self launched-player) #f)
(let ((a0-0 (-> self skel root-channel 0)))
(set!
(-> a0-0 frame-group)
(the-as art-joint-anim (-> self draw art-group data 4))
)
(set!
(-> a0-0 param 0)
(the
float
(+
(->
(the-as art-joint-anim (-> self draw art-group data 4))
data
0
length
)
-1
)
)
)
(set! (-> a0-0 param 1) 1.0)
(set! (-> a0-0 frame-num) 0.0)
(joint-control-channel-group!
a0-0
(the-as art-joint-anim (-> self draw art-group data 4))
num-func-seek!
)
)
(until (begin
(set! (-> self rock-is-dangerous) (and v1-16 (>= 76.0 f0-4)))
(suspend)
(let ((a0-2 (-> self skel root-channel 0)))
(set!
(-> a0-2 param 0)
(the float (+ (-> a0-2 frame-group data 0 length) -1))
)
(set! (-> a0-2 param 1) 1.0)
(joint-control-channel-group-eval!
a0-2
(the-as art-joint-anim #f)
num-func-seek!
)
)
(ja-done? 0)
)
(set! f0-4 (ja-aframe-num 0))
(set! (-> self in-launch-window) (and (>= f0-4 76.0) (>= 82.0 f0-4)))
(set! v1-16 (>= f0-4 12.0))
)
(go teetertotter-idle)
(none)
)
)
(set! (-> v1-4 post) rider-post)
)
;; failed to figure out what this is:
(let
((v1-5
(new 'static 'state
:name 'teetertotter-bend
:next #f
:exit #f
:code #f
:trans #f
:post #f
:enter #f
:event #f
)
)
)
(set! teetertotter-bend (the-as (state none) v1-5))
(set!
(-> v1-5 code)
(lambda :behavior teetertotter () (let ((a0-0 (-> self skel root-channel 0)))
(set!
(-> a0-0 frame-group)
(the-as
art-joint-anim
(-> self draw art-group data 5)
)
)
(set!
(-> a0-0 param 0)
(the
float
(+
(->
(the-as
art-joint-anim
(-> self draw art-group data 5)
)
data
0
length
)
-1
)
)
)
(set! (-> a0-0 param 1) 1.0)
(set! (-> a0-0 frame-num) 0.0)
(joint-control-channel-group!
a0-0
(the-as
art-joint-anim
(-> self draw art-group data 5)
)
num-func-seek!
)
)
(until (begin
(suspend)
(let ((a0-1 (-> self skel root-channel 0)))
(set!
(-> a0-1 param 0)
(the float (+ (-> a0-1 frame-group data 0 length) -1))
)
(set! (-> a0-1 param 1) 1.0)
(joint-control-channel-group-eval!
a0-1
(the-as art-joint-anim #f)
num-func-seek!
)
)
(ja-done? 0)
)
(empty)
)
(go teetertotter-idle)
(none)
)
)
(set! (-> v1-5 post) rider-post)
)
;; definition for method 11 of type teetertotter
(defmethod dummy-method-11 teetertotter ((obj teetertotter) (arg0 object))
(let
((s4-0
(new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player))
)
)
(set! (-> s4-0 dynam) (copy *standard-dynamics* 'process))
(set! (-> s4-0 reaction) default-collision-reaction)
(set! (-> s4-0 no-reaction) nothing)
(let ((t9-2 (method-of-object s4-0 dummy-29)))
1
(t9-2)
)
(let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 5) 0)))
(set! (-> s3-0 prim-core collide-as) (the-as uint 2048))
(set! (-> s3-0 collide-with) (the-as uint 16))
(set! (-> s3-0 prim-core action) (the-as uint 1))
(set-vector! (-> s3-0 local-sphere) 0.0 12288.0 0.0 36864.0)
((method-of-object s4-0 dummy-46))
(let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1))))
(set! (-> s2-0 prim-core collide-as) (the-as uint 2048))
(set! (-> s2-0 collide-with) (the-as uint 16))
(set! (-> s2-0 prim-core action) (the-as uint 1))
(set! (-> s2-0 prim-core offense) 4)
(set! (-> s2-0 transform-index) 5)
(set-vector! (-> s2-0 local-sphere) -4096.0 2048.0 0.0 5120.0)
)
((method-of-object s3-0 dummy-28))
(let
((s2-1
(new
'process
'collide-shape-prim-mesh
s4-0
(the-as uint 0)
(the-as uint 2)
)
)
)
(set! (-> s2-1 prim-core collide-as) (the-as uint 2048))
(set! (-> s2-1 collide-with) (the-as uint 16))
(set! (-> s2-1 prim-core action) (the-as uint 3))
(set! (-> s2-1 prim-core offense) 4)
(set! (-> s2-1 transform-index) 7)
(set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 32768.0)
)
((method-of-object s3-0 dummy-28))
(let
((s2-2
(new
'process
'collide-shape-prim-mesh
s4-0
(the-as uint 1)
(the-as uint 0)
)
)
)
(set! (-> s2-2 prim-core collide-as) (the-as uint 2048))
(set! (-> s2-2 collide-with) (the-as uint 16))
(set! (-> s2-2 prim-core action) (the-as uint 1))
(set! (-> s2-2 prim-core offense) 4)
(set! (-> s2-2 transform-index) 4)
(set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 32768.0)
)
((method-of-object s3-0 dummy-28))
(let
((s2-3
(new
'process
'collide-shape-prim-mesh
s4-0
(the-as uint 2)
(the-as uint 0)
)
)
)
(set! (-> s2-3 prim-core collide-as) (the-as uint 2048))
(set! (-> s2-3 collide-with) (the-as uint 16))
(set! (-> s2-3 prim-core action) (the-as uint 1))
(set! (-> s2-3 prim-core offense) 4)
(set! (-> s2-3 transform-index) 3)
(set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 32768.0)
)
((method-of-object s3-0 dummy-28))
(let
((s2-4
(new
'process
'collide-shape-prim-mesh
s4-0
(the-as uint 3)
(the-as uint 2)
)
)
)
(set! (-> s2-4 prim-core collide-as) (the-as uint 2048))
(set! (-> s2-4 collide-with) (the-as uint 16))
(set! (-> s2-4 prim-core action) (the-as uint 3))
(set! (-> s2-4 prim-core offense) 4)
(set! (-> s2-4 transform-index) 3)
(set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 32768.0)
)
((method-of-object s3-0 dummy-28))
)
(set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w)))
((method-of-object s4-0 dummy-50))
(set! (-> obj root) s4-0)
)
(process-drawable-from-entity! obj arg0)
(dummy-14 obj *teetertotter-sg* '())
(set! (-> obj launched-player) #f)
(set! (-> obj in-launch-window) #f)
(set! (-> obj rock-is-dangerous) #f)
(go teetertotter-idle)
(none)
)
+1 -1
View File
@@ -268,7 +268,7 @@ class OfflineDecompilation : public ::testing::Test {
config->generate_symbol_definition_map = false;
std::vector<std::string> dgos = {"CGO/KERNEL.CGO", "CGO/ENGINE.CGO", "CGO/GAME.CGO",
"DGO/BEA.DGO"};
"DGO/BEA.DGO", "CGO/L1.CGO"};
std::vector<std::string> dgo_paths;
if (g_iso_data_path.empty()) {
for (auto& x : dgos) {