mirror of
https://github.com/open-goal/jak-project
synced 2026-07-08 06:30:44 -04:00
decomp: evilbro (#774)
* add script to make adding lambda label casts a bit easier * decomp: almost finish `evil-bro` blocked by handle -> process conversion it seems: `No method or function named .asm.sllv.r0 for type (pointer process-tree)` * so close! SLLV issue (not a simple handle scenario) * decomp: finalize `evilbro` blocked by func return type * decomp: finish `evilbro`
This commit is contained in:
+28
-120
@@ -994,6 +994,7 @@
|
||||
|
||||
;; - Types
|
||||
|
||||
(declare-type res-lump basic)
|
||||
(define-extern process-tree type) ; deftype provided by C Kernel
|
||||
(declare-type process basic)
|
||||
(declare-type res-lump basic)
|
||||
@@ -16518,25 +16519,25 @@
|
||||
(cell-for-task game-task :offset-assert 256)
|
||||
(cell-x uint64 :offset-assert 264)
|
||||
(cam-joint-index int32 :offset-assert 272)
|
||||
(skippable basic :offset-assert 276)
|
||||
(blend-on-exit basic :offset-assert 280)
|
||||
(skippable basic :offset-assert 276) ;; probably a symbol
|
||||
(blend-on-exit basic :offset-assert 280) ;; probably a symbol?
|
||||
(camera uint64 :offset-assert 288)
|
||||
(will-talk basic :offset-assert 296)
|
||||
(will-talk symbol :offset-assert 296)
|
||||
(talk-message uint32 :offset-assert 300)
|
||||
(last-talk uint64 :offset-assert 304)
|
||||
(bounce-away basic :offset-assert 312)
|
||||
(bounce-away symbol :offset-assert 312)
|
||||
(ambient ambient-control :inline :offset-assert 320)
|
||||
(center-joint-index int32 :offset-assert 336)
|
||||
(draw-bounds-y-offset float :offset-assert 340)
|
||||
(neck-joint-index int32 :offset-assert 344)
|
||||
(fuel-cell-anim basic :offset-assert 348)
|
||||
(fuel-cell-anim spool-anim :offset-assert 348)
|
||||
(sound-flava uint8 :offset-assert 352)
|
||||
(have-flava basic :offset-assert 356)
|
||||
(have-flava symbol :offset-assert 356) ;; probably
|
||||
(music basic :offset-assert 360)
|
||||
(have-music basic :offset-assert 364)
|
||||
(been-kicked basic :offset-assert 368)
|
||||
(cur-trans-hook basic :offset-assert 372)
|
||||
(shadow-backup basic :offset-assert 376)
|
||||
(have-music symbol :offset-assert 364) ;; probably
|
||||
(been-kicked symbol :offset-assert 368) ;; probably
|
||||
(cur-trans-hook function :offset-assert 372)
|
||||
(shadow-backup shadow-geo :offset-assert 376)
|
||||
)
|
||||
:heap-base #x110
|
||||
:method-count-assert 53
|
||||
@@ -28550,116 +28551,23 @@
|
||||
|
||||
;; - Types
|
||||
|
||||
; (deftype evilbro (process-taskable)
|
||||
; ((evilsis basic :offset-assert 380)
|
||||
; )
|
||||
; :method-count-assert 53
|
||||
; :size-assert #x180
|
||||
; :heap-base #x110
|
||||
; :flag-assert #x3501100180
|
||||
; ;; inherited inspect of process-taskable
|
||||
; (: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)
|
||||
; (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)
|
||||
; (dummy-30 () none 30)
|
||||
; (dummy-31 () none 31)
|
||||
; (dummy-32 () none 32)
|
||||
; (dummy-33 () none 33)
|
||||
; (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)
|
||||
; )
|
||||
; )
|
||||
(declare-type evilsis process-taskable)
|
||||
(deftype evilbro (process-taskable)
|
||||
((evilsis evilsis :offset-assert 380)
|
||||
)
|
||||
:method-count-assert 53
|
||||
:heap-base #x110
|
||||
:size-assert #x180
|
||||
:flag-assert #x3501100180
|
||||
)
|
||||
|
||||
; (deftype evilsis (process-taskable)
|
||||
; ()
|
||||
; :method-count-assert 53
|
||||
; :size-assert #x17c
|
||||
; :heap-base #x110
|
||||
; :flag-assert #x350110017c
|
||||
; ;; not enough basic ops
|
||||
; (: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)
|
||||
; (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)
|
||||
; (dummy-30 () none 30)
|
||||
; (dummy-31 () none 31)
|
||||
; (dummy-32 () none 32)
|
||||
; (dummy-33 () none 33)
|
||||
; (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)
|
||||
; )
|
||||
; )
|
||||
(deftype evilsis (process-taskable)
|
||||
()
|
||||
:method-count-assert 53
|
||||
:heap-base #x110
|
||||
:size-assert #x17c
|
||||
:flag-assert #x350110017c
|
||||
)
|
||||
|
||||
;; - Unknowns
|
||||
|
||||
@@ -31231,8 +31139,8 @@
|
||||
|
||||
(deftype farmer (process-taskable)
|
||||
()
|
||||
:heap-base #x110
|
||||
:method-count-assert 53
|
||||
:heap-base #x110
|
||||
:size-assert #x17c
|
||||
:flag-assert #x350110017c
|
||||
)
|
||||
|
||||
@@ -681,5 +681,11 @@
|
||||
[12, "(function sparticle-system sparticle-cpuinfo int none)"]
|
||||
],
|
||||
|
||||
"evilbro": [
|
||||
[1, "(function object :behavior evilbro)"],
|
||||
[5, "(function none :behavior evilbro)"],
|
||||
[6, "(function object :behavior evilbro)"]
|
||||
],
|
||||
|
||||
"placeholder-do-not-add-below": []
|
||||
}
|
||||
|
||||
@@ -1988,6 +1988,23 @@
|
||||
["L383", "uint64", true]
|
||||
],
|
||||
|
||||
"evilbro": [
|
||||
["L25", "vector", true],
|
||||
["L30", "vector", true],
|
||||
["L26", "state", true],
|
||||
["L28", "skeleton-group", true],
|
||||
["L31", "state", true],
|
||||
["L32", "state", true],
|
||||
["L33", "spool-anim", true],
|
||||
["L35", "skeleton-group", true],
|
||||
["L40", "float", true],
|
||||
["L42", "float", true],
|
||||
["L43", "float", true],
|
||||
["L2", "_lambda_", true],
|
||||
["L7", "_lambda_", true],
|
||||
["L18", "_lambda_", 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": []
|
||||
}
|
||||
|
||||
@@ -1365,5 +1365,13 @@
|
||||
[48, ["inline-array", "sphere", 2]]
|
||||
],
|
||||
|
||||
"(method 32 evilbro)": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"(exit play-anim evilbro)": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"placeholder-do-not-add-below!": []
|
||||
}
|
||||
|
||||
@@ -1834,7 +1834,7 @@
|
||||
"do-target-shadow": [
|
||||
[46, "v1", "collide-shape-prim"] // `event-other` from collide-shape
|
||||
],
|
||||
|
||||
|
||||
"draw-string": [
|
||||
[[93, 96], "a0", "(pointer uint8)"],
|
||||
[[206, 209], "t3", "font-work"],
|
||||
@@ -2333,5 +2333,15 @@
|
||||
[38, "f1", "float"]
|
||||
],
|
||||
|
||||
"(method 32 evilbro)": [
|
||||
[19, "v1", "handle"]
|
||||
],
|
||||
|
||||
"(code idle evilbro)": [
|
||||
[27, "v1", "art-joint-anim"],
|
||||
[84, "v1", "float"],
|
||||
[171, "v1", "float"]
|
||||
],
|
||||
|
||||
"placeholder-do-not-add-below": []
|
||||
}
|
||||
|
||||
@@ -107,25 +107,25 @@
|
||||
(cell-for-task game-task :offset-assert 256)
|
||||
(cell-x uint64 :offset-assert 264)
|
||||
(cam-joint-index int32 :offset-assert 272)
|
||||
(skippable basic :offset-assert 276)
|
||||
(blend-on-exit basic :offset-assert 280)
|
||||
(skippable basic :offset-assert 276) ;; probably a symbol
|
||||
(blend-on-exit basic :offset-assert 280) ;; probably a symbol?
|
||||
(camera uint64 :offset-assert 288)
|
||||
(will-talk basic :offset-assert 296)
|
||||
(will-talk symbol :offset-assert 296)
|
||||
(talk-message uint32 :offset-assert 300)
|
||||
(last-talk uint64 :offset-assert 304)
|
||||
(bounce-away basic :offset-assert 312)
|
||||
(bounce-away symbol :offset-assert 312)
|
||||
(ambient ambient-control :inline :offset-assert 320)
|
||||
(center-joint-index int32 :offset-assert 336)
|
||||
(draw-bounds-y-offset float :offset-assert 340)
|
||||
(neck-joint-index int32 :offset-assert 344)
|
||||
(fuel-cell-anim basic :offset-assert 348)
|
||||
(fuel-cell-anim spool-anim :offset-assert 348)
|
||||
(sound-flava uint8 :offset-assert 352)
|
||||
(have-flava basic :offset-assert 356)
|
||||
(have-flava symbol :offset-assert 356) ;; probably
|
||||
(music basic :offset-assert 360)
|
||||
(have-music basic :offset-assert 364)
|
||||
(been-kicked basic :offset-assert 368)
|
||||
(cur-trans-hook basic :offset-assert 372)
|
||||
(shadow-backup basic :offset-assert 376)
|
||||
(have-music symbol :offset-assert 364) ;; probably
|
||||
(been-kicked symbol :offset-assert 368) ;; probably
|
||||
(cur-trans-hook function :offset-assert 372)
|
||||
(shadow-backup shadow-geo :offset-assert 376)
|
||||
)
|
||||
:heap-base #x110
|
||||
:method-count-assert 53
|
||||
|
||||
@@ -5,3 +5,315 @@
|
||||
;; name in dgo: evilbro
|
||||
;; dgos: INT, L1
|
||||
|
||||
(define-extern *evilsis-intro-sg* skeleton-group)
|
||||
(define-extern *evilbro-intro-sg* skeleton-group)
|
||||
|
||||
;; definition of type evilbro
|
||||
(declare-type evilsis process-taskable)
|
||||
(deftype evilbro (process-taskable)
|
||||
((evilsis evilsis :offset-assert 380)
|
||||
)
|
||||
:heap-base #x110
|
||||
:method-count-assert 53
|
||||
:size-assert #x180
|
||||
:flag-assert #x3501100180
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(let
|
||||
((v1-1
|
||||
(new 'static 'skeleton-group
|
||||
:art-group-name "evilbro"
|
||||
:bounds (new 'static 'vector :w 16384.0)
|
||||
:version #x6
|
||||
:shadow 2
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> v1-1 jgeo) 0)
|
||||
(set! (-> v1-1 janim) 3)
|
||||
(set! (-> v1-1 mgeo 0) (the-as uint 1))
|
||||
(set! (-> v1-1 lod-dist 0) 4095996000.0)
|
||||
(set! *evilbro-intro-sg* v1-1)
|
||||
)
|
||||
|
||||
;; definition for method 32 of type evilbro
|
||||
;; INFO: Return type mismatch spool-anim vs basic.
|
||||
(defmethod play-anim! evilbro ((obj evilbro) (arg0 symbol))
|
||||
(with-pp
|
||||
(cond
|
||||
(arg0
|
||||
(close-specific-task!
|
||||
(game-task leaving-misty)
|
||||
(task-status need-introduction)
|
||||
)
|
||||
(let ((a1-2 (new 'stack-no-clear 'event-message-block)))
|
||||
(set! (-> a1-2 from) pp)
|
||||
(set! (-> a1-2 num-params) 1)
|
||||
(set! (-> a1-2 message) 'clone)
|
||||
(let ((v1-2 (process->ppointer obj)))
|
||||
(set!
|
||||
(-> a1-2 param 0)
|
||||
(the-as
|
||||
uint
|
||||
(logior (shl (-> v1-2 0 pid) 32) (new 'static 'handle :process v1-2))
|
||||
)
|
||||
)
|
||||
)
|
||||
(send-event-function (-> obj evilsis ppointer 3) a1-2)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(set! (-> obj will-talk) #t)
|
||||
)
|
||||
)
|
||||
(the-as
|
||||
basic
|
||||
(new 'static 'spool-anim
|
||||
:name "evilbro-misty-end"
|
||||
:index 5
|
||||
:parts 9
|
||||
:command-list '()
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 31 of type evilbro
|
||||
(defmethod get-art-elem evilbro ((obj evilbro))
|
||||
(-> obj draw art-group data 3)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate play-anim (evilbro)
|
||||
:virtual #t
|
||||
:exit
|
||||
(behavior ()
|
||||
(let ((a1-0 (new 'stack-no-clear 'event-message-block)))
|
||||
(set! (-> a1-0 from) self)
|
||||
(set! (-> a1-0 num-params) 0)
|
||||
(set! (-> a1-0 message) 'end-mode)
|
||||
(send-event-function (-> self evilsis ppointer 3) a1-0)
|
||||
)
|
||||
((-> (method-of-type process-taskable play-anim) exit))
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate idle (evilbro)
|
||||
:virtual #t
|
||||
:code
|
||||
(behavior ()
|
||||
(if (!= (if (> (-> self skel active-channels) 0)
|
||||
(-> self skel root-channel 0 frame-group)
|
||||
)
|
||||
(get-art-elem self)
|
||||
)
|
||||
(ja-channel-push! 1 15)
|
||||
)
|
||||
(while #t
|
||||
(let ((a0-7 (-> self skel root-channel 0)))
|
||||
(set!
|
||||
(-> a0-7 frame-group)
|
||||
(the-as art-joint-anim (-> self draw art-group data 3))
|
||||
)
|
||||
(set!
|
||||
(-> a0-7 param 0)
|
||||
(the
|
||||
float
|
||||
(+
|
||||
(->
|
||||
(the-as art-joint-anim (-> self draw art-group data 3))
|
||||
data
|
||||
0
|
||||
length
|
||||
)
|
||||
-1
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> a0-7 param 1) 1.0)
|
||||
(set! (-> a0-7 frame-num) 0.0)
|
||||
(joint-control-channel-group!
|
||||
a0-7
|
||||
(the-as art-joint-anim (-> self draw art-group data 3))
|
||||
num-func-seek!
|
||||
)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(suspend)
|
||||
(let ((a0-8 (-> self skel root-channel 0)))
|
||||
(set!
|
||||
(-> a0-8 param 0)
|
||||
(the float (+ (-> a0-8 frame-group data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-8 param 1) 1.0)
|
||||
(joint-control-channel-group-eval!
|
||||
a0-8
|
||||
(the-as art-joint-anim #f)
|
||||
num-func-seek!
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((gp-0 (-> *display* base-frame-counter)))
|
||||
(while (let* ((s5-0 (-> *display* base-frame-counter))
|
||||
(f30-0 300.0)
|
||||
(f28-0 0.16)
|
||||
(f26-0 0.17000002)
|
||||
(v1-29
|
||||
(/ (the-as int (rand-uint31-gen *random-generator*)) 256)
|
||||
)
|
||||
(v1-30 (the-as number (logior #x3f800000 v1-29)))
|
||||
)
|
||||
(<
|
||||
(-
|
||||
s5-0
|
||||
(the
|
||||
int
|
||||
(* f30-0 (+ f28-0 (* f26-0 (+ -1.0 (the-as float v1-30)))))
|
||||
)
|
||||
)
|
||||
gp-0
|
||||
)
|
||||
)
|
||||
(suspend)
|
||||
)
|
||||
)
|
||||
(let ((gp-1 (-> self skel root-channel 0)))
|
||||
(set! (-> gp-1 frame-group) (if (> (-> self skel active-channels) 0)
|
||||
(-> self skel root-channel 0 frame-group)
|
||||
)
|
||||
)
|
||||
(set! (-> gp-1 param 0) (ja-aframe 0.0 0))
|
||||
(set! (-> gp-1 param 1) 1.0)
|
||||
(set! (-> gp-1 frame-num) (ja-aframe 16.0 0))
|
||||
(joint-control-channel-group! gp-1 (if (> (-> self skel active-channels) 0)
|
||||
(->
|
||||
self
|
||||
skel
|
||||
root-channel
|
||||
0
|
||||
frame-group
|
||||
)
|
||||
)
|
||||
num-func-seek!
|
||||
)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(suspend)
|
||||
(let ((gp-2 (-> self skel root-channel 0)))
|
||||
(set! (-> gp-2 param 0) (ja-aframe 0.0 0))
|
||||
(set! (-> gp-2 param 1) 1.0)
|
||||
(joint-control-channel-group-eval!
|
||||
gp-2
|
||||
(the-as art-joint-anim #f)
|
||||
num-func-seek!
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((gp-3 (-> *display* base-frame-counter)))
|
||||
(while (let* ((s5-1 (-> *display* base-frame-counter))
|
||||
(f30-1 300.0)
|
||||
(f28-1 0.16)
|
||||
(f26-1 0.17000002)
|
||||
(v1-54
|
||||
(/ (the-as int (rand-uint31-gen *random-generator*)) 256)
|
||||
)
|
||||
(v1-55 (the-as number (logior #x3f800000 v1-54)))
|
||||
)
|
||||
(<
|
||||
(-
|
||||
s5-1
|
||||
(the
|
||||
int
|
||||
(* f30-1 (+ f28-1 (* f26-1 (+ -1.0 (the-as float v1-55)))))
|
||||
)
|
||||
)
|
||||
gp-3
|
||||
)
|
||||
)
|
||||
(suspend)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 11 of type evilbro
|
||||
(defmethod copy-defaults! evilbro ((obj evilbro) (arg0 res-lump))
|
||||
(dummy-40 obj arg0 *evilbro-intro-sg* 3 40 (new 'static 'vector :w 4096.0) 5)
|
||||
(set! (-> obj tasks) (get-task-control (game-task leaving-misty)))
|
||||
(set!
|
||||
(-> obj evilsis)
|
||||
(the-as evilsis (entity-actor-lookup arg0 'alt-actor 0))
|
||||
)
|
||||
(dummy-42 obj)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition of type evilsis
|
||||
(deftype evilsis (process-taskable)
|
||||
()
|
||||
:heap-base #x110
|
||||
:method-count-assert 53
|
||||
:size-assert #x17c
|
||||
:flag-assert #x350110017c
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(let
|
||||
((v1-7
|
||||
(new 'static 'skeleton-group
|
||||
:art-group-name "evilsis"
|
||||
:bounds (new 'static 'vector :w 16384.0)
|
||||
:version #x6
|
||||
:shadow 2
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> v1-7 jgeo) 0)
|
||||
(set! (-> v1-7 janim) 3)
|
||||
(set! (-> v1-7 mgeo 0) (the-as uint 1))
|
||||
(set! (-> v1-7 lod-dist 0) 4095996000.0)
|
||||
(set! *evilsis-intro-sg* v1-7)
|
||||
)
|
||||
|
||||
;; definition for method 32 of type evilsis
|
||||
;; INFO: Return type mismatch art-element vs basic.
|
||||
(defmethod play-anim! evilsis ((obj evilsis) (arg0 symbol))
|
||||
(if arg0
|
||||
(format
|
||||
0
|
||||
"ERROR: <GMJ>: ~S playing anim for task status ~S~%"
|
||||
(-> obj name)
|
||||
(task-status->string (the-as task-status (current-status (-> obj tasks))))
|
||||
)
|
||||
)
|
||||
(the-as basic (get-art-elem obj))
|
||||
)
|
||||
|
||||
;; definition for method 31 of type evilsis
|
||||
(defmethod get-art-elem evilsis ((obj evilsis))
|
||||
(-> obj draw art-group data 3)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate idle (evilsis)
|
||||
:virtual #t
|
||||
:trans
|
||||
(behavior ()
|
||||
(set! (-> self will-talk) #f)
|
||||
((-> (method-of-type process-taskable idle) trans))
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 11 of type evilsis
|
||||
(defmethod copy-defaults! evilsis ((obj evilsis) (arg0 res-lump))
|
||||
(dummy-40 obj arg0 *evilsis-intro-sg* 3 0 (new 'static 'vector :w 4096.0) 5)
|
||||
(set! (-> obj tasks) (get-task-control (game-task leaving-misty)))
|
||||
(dummy-42 obj)
|
||||
(none)
|
||||
)
|
||||
|
||||
@@ -98,22 +98,22 @@
|
||||
(skippable basic :offset-assert 276)
|
||||
(blend-on-exit basic :offset-assert 280)
|
||||
(camera uint64 :offset-assert 288)
|
||||
(will-talk basic :offset-assert 296)
|
||||
(will-talk symbol :offset-assert 296)
|
||||
(talk-message uint32 :offset-assert 300)
|
||||
(last-talk uint64 :offset-assert 304)
|
||||
(bounce-away basic :offset-assert 312)
|
||||
(bounce-away symbol :offset-assert 312)
|
||||
(ambient ambient-control :inline :offset-assert 320)
|
||||
(center-joint-index int32 :offset-assert 336)
|
||||
(draw-bounds-y-offset float :offset-assert 340)
|
||||
(neck-joint-index int32 :offset-assert 344)
|
||||
(fuel-cell-anim basic :offset-assert 348)
|
||||
(fuel-cell-anim spool-anim :offset-assert 348)
|
||||
(sound-flava uint8 :offset-assert 352)
|
||||
(have-flava basic :offset-assert 356)
|
||||
(have-flava symbol :offset-assert 356)
|
||||
(music basic :offset-assert 360)
|
||||
(have-music basic :offset-assert 364)
|
||||
(been-kicked basic :offset-assert 368)
|
||||
(cur-trans-hook basic :offset-assert 372)
|
||||
(shadow-backup basic :offset-assert 376)
|
||||
(have-music symbol :offset-assert 364)
|
||||
(been-kicked symbol :offset-assert 368)
|
||||
(cur-trans-hook function :offset-assert 372)
|
||||
(shadow-backup shadow-geo :offset-assert 376)
|
||||
)
|
||||
:heap-base #x110
|
||||
:method-count-assert 53
|
||||
|
||||
@@ -0,0 +1,332 @@
|
||||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; definition of type evilbro
|
||||
(deftype evilbro (process-taskable)
|
||||
((evilsis evilsis :offset-assert 380)
|
||||
)
|
||||
:heap-base #x110
|
||||
:method-count-assert 53
|
||||
:size-assert #x180
|
||||
:flag-assert #x3501100180
|
||||
)
|
||||
|
||||
;; definition for method 3 of type evilbro
|
||||
(defmethod inspect evilbro ((obj evilbro))
|
||||
(let ((t9-0 (method-of-type process-taskable inspect)))
|
||||
(t9-0 obj)
|
||||
)
|
||||
(format #t "~T~Tevilsis: ~A~%" (-> obj evilsis))
|
||||
obj
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(let
|
||||
((v1-1
|
||||
(new 'static 'skeleton-group
|
||||
:art-group-name "evilbro"
|
||||
:bounds (new 'static 'vector :w 16384.0)
|
||||
:version #x6
|
||||
:shadow 2
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> v1-1 jgeo) 0)
|
||||
(set! (-> v1-1 janim) 3)
|
||||
(set! (-> v1-1 mgeo 0) (the-as uint 1))
|
||||
(set! (-> v1-1 lod-dist 0) 4095996000.0)
|
||||
(set! *evilbro-intro-sg* v1-1)
|
||||
)
|
||||
|
||||
;; definition for method 32 of type evilbro
|
||||
;; INFO: Return type mismatch spool-anim vs basic.
|
||||
(defmethod play-anim! evilbro ((obj evilbro) (arg0 symbol))
|
||||
(with-pp
|
||||
(cond
|
||||
(arg0
|
||||
(close-specific-task!
|
||||
(game-task leaving-misty)
|
||||
(task-status need-introduction)
|
||||
)
|
||||
(let ((a1-2 (new 'stack-no-clear 'event-message-block)))
|
||||
(set! (-> a1-2 from) pp)
|
||||
(set! (-> a1-2 num-params) 1)
|
||||
(set! (-> a1-2 message) 'clone)
|
||||
(let ((v1-2 (process->ppointer obj)))
|
||||
(set!
|
||||
(-> a1-2 param 0)
|
||||
(the-as
|
||||
uint
|
||||
(logior (shl (-> v1-2 0 pid) 32) (new 'static 'handle :process v1-2))
|
||||
)
|
||||
)
|
||||
)
|
||||
(send-event-function (-> obj evilsis ppointer 3) a1-2)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(set! (-> obj will-talk) #t)
|
||||
)
|
||||
)
|
||||
(the-as
|
||||
basic
|
||||
(new 'static 'spool-anim
|
||||
:name "evilbro-misty-end"
|
||||
:index 5
|
||||
:parts 9
|
||||
:command-list '()
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 31 of type evilbro
|
||||
(defmethod get-art-elem evilbro ((obj evilbro))
|
||||
(-> obj draw art-group data 3)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate play-anim (evilbro)
|
||||
:virtual #t
|
||||
:exit
|
||||
(behavior ()
|
||||
(let ((a1-0 (new 'stack-no-clear 'event-message-block)))
|
||||
(set! (-> a1-0 from) self)
|
||||
(set! (-> a1-0 num-params) 0)
|
||||
(set! (-> a1-0 message) 'end-mode)
|
||||
(send-event-function (-> self evilsis ppointer 3) a1-0)
|
||||
)
|
||||
((-> (method-of-type process-taskable play-anim) exit))
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate idle (evilbro)
|
||||
:virtual #t
|
||||
:code
|
||||
(behavior ()
|
||||
(if (!= (if (> (-> self skel active-channels) 0)
|
||||
(-> self skel root-channel 0 frame-group)
|
||||
)
|
||||
(get-art-elem self)
|
||||
)
|
||||
(ja-channel-push! 1 15)
|
||||
)
|
||||
(while #t
|
||||
(let ((a0-7 (-> self skel root-channel 0)))
|
||||
(set!
|
||||
(-> a0-7 frame-group)
|
||||
(the-as art-joint-anim (-> self draw art-group data 3))
|
||||
)
|
||||
(set!
|
||||
(-> a0-7 param 0)
|
||||
(the
|
||||
float
|
||||
(+
|
||||
(->
|
||||
(the-as art-joint-anim (-> self draw art-group data 3))
|
||||
data
|
||||
0
|
||||
length
|
||||
)
|
||||
-1
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> a0-7 param 1) 1.0)
|
||||
(set! (-> a0-7 frame-num) 0.0)
|
||||
(joint-control-channel-group!
|
||||
a0-7
|
||||
(the-as art-joint-anim (-> self draw art-group data 3))
|
||||
num-func-seek!
|
||||
)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(suspend)
|
||||
(let ((a0-8 (-> self skel root-channel 0)))
|
||||
(set!
|
||||
(-> a0-8 param 0)
|
||||
(the float (+ (-> a0-8 frame-group data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-8 param 1) 1.0)
|
||||
(joint-control-channel-group-eval!
|
||||
a0-8
|
||||
(the-as art-joint-anim #f)
|
||||
num-func-seek!
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((gp-0 (-> *display* base-frame-counter)))
|
||||
(while (let* ((s5-0 (-> *display* base-frame-counter))
|
||||
(f30-0 300.0)
|
||||
(f28-0 0.16)
|
||||
(f26-0 0.17000002)
|
||||
(v1-29
|
||||
(/ (the-as int (rand-uint31-gen *random-generator*)) 256)
|
||||
)
|
||||
(v1-30 (the-as number (logior #x3f800000 v1-29)))
|
||||
)
|
||||
(<
|
||||
(-
|
||||
s5-0
|
||||
(the
|
||||
int
|
||||
(* f30-0 (+ f28-0 (* f26-0 (+ -1.0 (the-as float v1-30)))))
|
||||
)
|
||||
)
|
||||
gp-0
|
||||
)
|
||||
)
|
||||
(suspend)
|
||||
)
|
||||
)
|
||||
(let ((gp-1 (-> self skel root-channel 0)))
|
||||
(set! (-> gp-1 frame-group) (if (> (-> self skel active-channels) 0)
|
||||
(-> self skel root-channel 0 frame-group)
|
||||
)
|
||||
)
|
||||
(set! (-> gp-1 param 0) (ja-aframe 0.0 0))
|
||||
(set! (-> gp-1 param 1) 1.0)
|
||||
(set! (-> gp-1 frame-num) (ja-aframe 16.0 0))
|
||||
(joint-control-channel-group! gp-1 (if (> (-> self skel active-channels) 0)
|
||||
(->
|
||||
self
|
||||
skel
|
||||
root-channel
|
||||
0
|
||||
frame-group
|
||||
)
|
||||
)
|
||||
num-func-seek!
|
||||
)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(suspend)
|
||||
(let ((gp-2 (-> self skel root-channel 0)))
|
||||
(set! (-> gp-2 param 0) (ja-aframe 0.0 0))
|
||||
(set! (-> gp-2 param 1) 1.0)
|
||||
(joint-control-channel-group-eval!
|
||||
gp-2
|
||||
(the-as art-joint-anim #f)
|
||||
num-func-seek!
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((gp-3 (-> *display* base-frame-counter)))
|
||||
(while (let* ((s5-1 (-> *display* base-frame-counter))
|
||||
(f30-1 300.0)
|
||||
(f28-1 0.16)
|
||||
(f26-1 0.17000002)
|
||||
(v1-54
|
||||
(/ (the-as int (rand-uint31-gen *random-generator*)) 256)
|
||||
)
|
||||
(v1-55 (the-as number (logior #x3f800000 v1-54)))
|
||||
)
|
||||
(<
|
||||
(-
|
||||
s5-1
|
||||
(the
|
||||
int
|
||||
(* f30-1 (+ f28-1 (* f26-1 (+ -1.0 (the-as float v1-55)))))
|
||||
)
|
||||
)
|
||||
gp-3
|
||||
)
|
||||
)
|
||||
(suspend)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 11 of type evilbro
|
||||
(defmethod copy-defaults! evilbro ((obj evilbro) (arg0 res-lump))
|
||||
(dummy-40 obj arg0 *evilbro-intro-sg* 3 40 (new 'static 'vector :w 4096.0) 5)
|
||||
(set! (-> obj tasks) (get-task-control (game-task leaving-misty)))
|
||||
(set!
|
||||
(-> obj evilsis)
|
||||
(the-as evilsis (entity-actor-lookup arg0 'alt-actor 0))
|
||||
)
|
||||
(dummy-42 obj)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition of type evilsis
|
||||
(deftype evilsis (process-taskable)
|
||||
()
|
||||
:heap-base #x110
|
||||
:method-count-assert 53
|
||||
:size-assert #x17c
|
||||
:flag-assert #x350110017c
|
||||
)
|
||||
|
||||
;; definition for method 3 of type evilsis
|
||||
(defmethod inspect evilsis ((obj evilsis))
|
||||
(let ((t9-0 (method-of-type process-taskable inspect)))
|
||||
(t9-0 obj)
|
||||
)
|
||||
obj
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(let
|
||||
((v1-7
|
||||
(new 'static 'skeleton-group
|
||||
:art-group-name "evilsis"
|
||||
:bounds (new 'static 'vector :w 16384.0)
|
||||
:version #x6
|
||||
:shadow 2
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> v1-7 jgeo) 0)
|
||||
(set! (-> v1-7 janim) 3)
|
||||
(set! (-> v1-7 mgeo 0) (the-as uint 1))
|
||||
(set! (-> v1-7 lod-dist 0) 4095996000.0)
|
||||
(set! *evilsis-intro-sg* v1-7)
|
||||
)
|
||||
|
||||
;; definition for method 32 of type evilsis
|
||||
;; INFO: Return type mismatch art-element vs basic.
|
||||
(defmethod play-anim! evilsis ((obj evilsis) (arg0 symbol))
|
||||
(if arg0
|
||||
(format
|
||||
0
|
||||
"ERROR: <GMJ>: ~S playing anim for task status ~S~%"
|
||||
(-> obj name)
|
||||
(task-status->string (the-as task-status (current-status (-> obj tasks))))
|
||||
)
|
||||
)
|
||||
(the-as basic (get-art-elem obj))
|
||||
)
|
||||
|
||||
;; definition for method 31 of type evilsis
|
||||
(defmethod get-art-elem evilsis ((obj evilsis))
|
||||
(-> obj draw art-group data 3)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate idle (evilsis)
|
||||
:virtual #t
|
||||
:trans
|
||||
(behavior ()
|
||||
(set! (-> self will-talk) #f)
|
||||
((-> (method-of-type process-taskable idle) trans))
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 11 of type evilsis
|
||||
(defmethod copy-defaults! evilsis ((obj evilsis) (arg0 res-lump))
|
||||
(dummy-40 obj arg0 *evilsis-intro-sg* 3 0 (new 'static 'vector :w 4096.0) 5)
|
||||
(set! (-> obj tasks) (get-task-control (game-task leaving-misty)))
|
||||
(dummy-42 obj)
|
||||
(none)
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -106,7 +106,3 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -271,7 +271,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", "CGO/L1.CGO"};
|
||||
"DGO/BEA.DGO", "CGO/L1.CGO", "DGO/INT.DGO"};
|
||||
std::vector<std::string> dgo_paths;
|
||||
if (g_iso_data_path.empty()) {
|
||||
for (auto& x : dgos) {
|
||||
|
||||
Reference in New Issue
Block a user