decomp: a few files that were done except for sp-launch-group (#802)

* decomp: dark-eco-pool blocked by sparticle-launch-group label

* decomp: finalize `dark-eco-pool`

* decomp: mostly finish `beach-rocks` waiting for sparticle label supp

* decomp: almost done `beach-rocks` but potential new handle case

* decomp: finish `beach-rocks`

* decomp: finish `assistant`

* decomp: finish `miners`
This commit is contained in:
Tyler Wilding 2021-09-01 11:20:05 -04:00 committed by GitHub
parent b58d9ec65d
commit 42f7a675b2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
27 changed files with 11088 additions and 117 deletions

View file

@ -872,6 +872,8 @@
(misty-bike-jump #x266)
(misty-eco-challenge #x267)
(beach-seagulls-avalanche #x273)
(misty-teetertotter-bonk-dax-tutorial #x2a4)
(village2-gambler-money #x300)
@ -8167,8 +8169,8 @@
(faded-scale float :offset-assert 20)
(individual-normal-scale float :offset-assert 24)
(waveform ripple-wave-set :offset-assert 28)
(send-query basic :offset-assert 32)
(query basic :offset-assert 36)
(send-query symbol :offset-assert 32) ;; bool
(query ripple-merc-query :offset-assert 36)
)
(:methods
(new (symbol type) _type_ 0)
@ -17434,7 +17436,7 @@
(define-extern load-state-want-force-vis (function symbol symbol int))
(define-extern command-get-param (function object symbol symbol))
(define-extern entity-birth-no-kill (function entity none))
(define-extern part-tracker-init function)
(define-extern part-tracker-init (function sparticle-launch-group int basic basic basic vector none)) ;; TODO - not confirmed
(define-extern command-list-get-process (function object process))
(define-extern command-get-quoted-param (function object symbol symbol))
(define-extern command-get-int (function object int int))
@ -17908,7 +17910,7 @@
(TODO-RENAME-22 (_type_) ripple-wave-set 22)
(dummy-23 () none 23)
(dummy-24 () none 24)
(TODO-RENAME-25 (_type_) quaternion 25)
(TODO-RENAME-25 (_type_) object 25)
(dummy-26 () none 26)
(dummy-27 () none 27)
(get-ripple-height (_type_ vector) float 28)
@ -20304,9 +20306,9 @@
(define-extern vent-standard-event-handler function)
(define-extern ecovalve-init-by-other 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 birth-pickup-at-point (function vector int float symbol process-drawable symbol none)) ;; TODO - unconfirmed - see beach-rocks
(define-extern fuel-cell-pick-anim function)
(define-extern othercam-init-by-other function)
(define-extern othercam-init-by-other (function int symbol symbol none)) ;; TODO - unconfirmed - see beach-rocks
(define-extern fuel-cell-animate function)
(define-extern add-blue-motion function)
(define-extern check-blue-suck function)
@ -20315,7 +20317,7 @@
(define-extern money-init-by-other function)
(define-extern money-init-by-other-no-bob function)
(define-extern fuel-cell-init-by-other function)
(define-extern fuel-cell-init-as-clone function)
(define-extern fuel-cell-init-as-clone (function game-task none)) ;; TODO - unconfirmed - see beach-rocks
(define-extern buzzer-init-by-other function)
;; - Symbols
@ -22034,11 +22036,11 @@
;; - Unknowns
;;(define-extern ripple-for-dark-eco-pool object) ;; unknown type
;;(define-extern ripple-for-misty-dark-eco-pool object) ;; unknown type
;;(define-extern ripple-for-maincave-dark-eco-pool object) ;; unknown type
;;(define-extern ripple-for-sunken-dark-eco-helix-room object) ;; unknown type
;;(define-extern ripple-for-finalboss-dark-eco-pool object) ;; unknown type
(define-extern ripple-for-dark-eco-pool ripple-wave-set) ;; unknown type
(define-extern ripple-for-misty-dark-eco-pool ripple-wave-set) ;; unknown type
(define-extern ripple-for-maincave-dark-eco-pool ripple-wave-set) ;; unknown type
(define-extern ripple-for-sunken-dark-eco-helix-room ripple-wave-set) ;; unknown type
(define-extern ripple-for-finalboss-dark-eco-pool ripple-wave-set) ;; unknown type
;; ----------------------
@ -23960,62 +23962,33 @@
;; - Types
; (deftype beach-rock (process-drawable)
; ((trigger basic :offset-assert 176)
; (movie-start uint64 :offset-assert 184)
; (part-falling basic :offset-assert 192)
; (part-landing basic :offset-assert 196)
; (prev-frame float :offset-assert 200)
; )
; :method-count-assert 24
; :size-assert #xcc
; :heap-base #x60
; :flag-assert #x18006000cc
; ;; 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)
; (dummy-20 () none 20)
; (dummy-21 () none 21)
; (dummy-22 () none 22)
; (dummy-23 () none 23)
; )
; )
(deftype beach-rock (process-drawable)
((root-override collide-shape-moving :score 100 :offset 112)
(trigger basic :offset-assert 176)
(movie-start uint64 :offset-assert 184)
(part-falling sparticle-launch-control :offset-assert 192)
(part-landing sparticle-launch-control :offset-assert 196)
(prev-frame float :offset-assert 200)
)
:method-count-assert 24
:heap-base #x60
:size-assert #xcc
:flag-assert #x18006000cc
(:methods
(idle () _type_ :state 20) ;; state
(loading () _type_ :state 21) ;; state
(falling () _type_ :state 22) ;; state
(fallen () _type_ :state 23) ;; state
)
)
; (deftype lrocklrg (beach-rock)
; ()
; :method-count-assert 24
; :size-assert #xcc
; :heap-base #x60
; :flag-assert #x18006000cc
; ;; 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)
; )
; )
(deftype lrocklrg (beach-rock)
()
:method-count-assert 24
:heap-base #x60
:size-assert #xcc
:flag-assert #x18006000cc
)
;; - Unknowns
@ -40123,7 +40096,7 @@
:heap-base #x40
:flag-assert #x15004000b0
(:methods
(dummy-20 (_type_) none 20)
(idle () _type_ :state 20)
)
)

View file

@ -671,10 +671,6 @@
[2, "(function sparticle-launch-group :behavior oracle)"],
[3, "(function none :behavior oracle)"]
],
"miners": [
[1, "(function none :behavior minershort)"]
],
"time-of-day": [
[10, "(function none)"],
@ -688,6 +684,15 @@
"entity": [
[10, "(function process-drawable none)"]
],
"beach-rocks": [
[2, "(function none :behavior beach-rock)"],
[3, "(function none :behavior beach-rock)"],
[4, "(function none :behavior beach-rock)"],
[5, "(function none :behavior beach-rock)"],
[6, "(function none :behavior beach-rock)"],
[7, "(function process int symbol event-message-block none :behavior beach-rock)"]
],
"placeholder-do-not-add-below": []
}

View file

@ -420,11 +420,8 @@
],
"miners": [
["L111", "vector"]
// ["L270", "sparticle-launcher", true],
// ["L272", "sparticle-launcher", true],
// ["L274", "sparticle-launcher", true],
// ["L276", "sparticle-launch-group", true],
["L111", "vector"],
["L281", "vector"]
],
"entity": [
@ -442,6 +439,10 @@
["L471", "vector4w"]
],
"assistant": [
["L71", "vector"]
],
// 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": []
}

View file

@ -1428,5 +1428,22 @@
[32, "vector"]
],
"(trans falling beach-rock)": [
[16, "vector"],
[32, "vector"],
[48, "vector"],
[64, "vector"],
[80, "vector"],
[96, "vector"]
],
"(code falling beach-rock)": [
[16, "event-message-block"]
],
"(method 11 beach-rock)": [
[16, "vector"]
],
"placeholder-do-not-add-below!": []
}

View file

@ -2562,5 +2562,39 @@
[[0, 999], "s6", "camera-master"]
],
"(anon-function 0 dark-eco-pool)": [
[2, "v1", "state"]
],
"(method 25 dark-eco-pool)": [
[22, "t9", "(function res-lump symbol symbol float structure (pointer res-tag) pointer object)"]
],
"(top-level-login beach-rocks)": [
[78, "v1", "state"]
],
"(method 7 beach-rock)": [
[5, "v1", "int"],
[10, "v1", "int"],
[19, "t9", "(function process-drawable int none)"]
],
"(method 10 beach-rock)": [
[21, "t9", "(function process-drawable none)"]
],
"(code falling beach-rock)": [
[63, "t9", "(function object object object object object object)"],
[98, "t9", "(function object object object object object)"],
[138, "gp", "handle"],
[150, "gp", "handle"],
[[158, 165], "s5", "handle"]
],
"(method 11 beach-rock)": [
[77, "v1", "int"]
],
"placeholder-do-not-add-below": []
}

View file

@ -3341,7 +3341,13 @@
"a0-10":"amb-to-birth",
"s4-2":"cams"
}
},
"(code falling beach-rock)": {
"vars": {
"gp-2": ["gp-2", "handle"],
"s5-1": ["s5-1", "handle"]
}
},

View file

@ -1321,4 +1321,4 @@
(none))
(define-extern process-drawable-from-entity! (function process-drawable res-lump none))
(define-extern entity-birth-no-kill (function entity none))
(define-extern entity-birth-no-kill (function entity none))

View file

@ -6,6 +6,76 @@
;; dgos: GAME, ENGINE
;; TODO - for nav-enemy
(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 birth-pickup-at-point (function vector int float symbol process-drawable symbol none)) ;; TODO - unconfirmed - see beach-rocks
;; TODO - for oracle
(define-extern *fuel-cell-sg* skeleton-group) ;; unknown type
;; TODO - for entity and beach-rocks
(deftype collectable (process-drawable)
((pickup-type int32 :offset-assert 176)
(pickup-amount float :offset-assert 180)
(notify-parent basic :offset-assert 184)
(old-base vector :inline :offset-assert 192)
(base vector :inline :offset-assert 208)
(extra-trans vector :inline :offset-assert 224)
(jump-pos vector :inline :offset-assert 240)
(flags uint32 :offset-assert 256)
(birth-time uint64 :offset-assert 264)
(collect-timeout uint64 :offset-assert 272)
(fadeout-timeout uint64 :offset-assert 280)
(bob-offset uint64 :offset-assert 288)
(bob-amount float :offset-assert 296)
(pickup-handle handle :offset-assert 304) ;; not sure it's a handle
(actor-pause basic :offset-assert 312)
)
(:methods
(dummy-20 () none 20)
(dummy-21 () none 21)
)
:heap-base #xd0
:method-count-assert 22
:size-assert #x13c
:flag-assert #x1600d0013c
)
(deftype eco-collectable (collectable)
((eco-effect basic :offset-assert 316)
(collect-effect basic :offset-assert 320)
(collect-effect2 basic :offset-assert 324)
(collect-effect-time uint64 :offset-assert 328)
(respawn-delay uint64 :offset-assert 336)
(sound-name basic :offset-assert 344)
(target uint64 :offset-assert 352)
(suck-time uint64 :offset-assert 360)
(suck-y-offset float :offset-assert 368)
(speed vector :inline :offset-assert 384)
(movie-pos-index int32 :offset-assert 400)
)
(:methods
(wait () none 22) ;; state
(pickup () none 23) ;; state
(die () none 24) ;; state
(dummy-25 () none 25)
(notice-blue () none 26) ;; state
(dummy-27 () none 27)
(dummy-28 () none 28)
(dummy-29 () none 29)
(dummy-30 () none 30)
)
:heap-base #x130
:method-count-assert 31
:size-assert #x194
:flag-assert #x1f01300194
)
(deftype fuel-cell (eco-collectable)
((victory-anim basic :offset-assert 404)
(state-object basic :offset-assert 408))
:heap-base #x130
:method-count-assert 31
:size-assert #x19c
:flag-assert #x1f0130019c
)
(define-extern fuel-cell-init-as-clone (function game-task none))

View file

@ -20,3 +20,5 @@
(define-extern process-release? (function process symbol))
;; TODO - for bird-lady-beach
(define-extern manipy-init (function trsqv vector entity skeleton-group symbol none)) ;; TODO - not confirmed yet
;; TODO - for projectiles | dark-eco-pool
(define-extern part-tracker-init (function sparticle-launch-group int basic basic basic vector none)) ;; TODO - not confirmed

View file

@ -5,3 +5,5 @@
;; name in dgo: process-taskable
;; dgos: GAME, ENGINE
;; TODO - for beach-rocks
(define-extern othercam-init-by-other (function int symbol symbol none))

View file

@ -358,8 +358,8 @@
(faded-scale float :offset-assert 20)
(individual-normal-scale float :offset-assert 24)
(waveform ripple-wave-set :offset-assert 28)
(send-query basic :offset-assert 32)
(query basic :offset-assert 36)
(send-query symbol :offset-assert 32) ;; bool
(query ripple-merc-query :offset-assert 36)
)
(:methods
(new (symbol type) _type_ 0)

View file

@ -115,7 +115,7 @@
(TODO-RENAME-22 (_type_) ripple-wave-set 22)
(dummy-23 () none 23)
(dummy-24 () none 24)
(TODO-RENAME-25 (_type_) quaternion 25)
(TODO-RENAME-25 (_type_) object 25)
(dummy-26 () none 26)
(dummy-27 () none 27)
(get-ripple-height (_type_ vector) float 28)

View file

@ -93,6 +93,8 @@
(misty-bike-jump #x266)
(misty-eco-challenge #x267)
(beach-seagulls-avalanche #x273)
(misty-teetertotter-bonk-dax-tutorial #x2a4)
(village2-gambler-money #x300)

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1780,21 +1780,24 @@
:virtual #t
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(case arg2
(('move-to)
(set!
(-> self root trans quad)
(-> (the-as vector (-> arg3 param 0)) quad)
)
(set! (-> self water-height) (-> self root trans y))
(if (nonzero? (-> self sound))
(update-trans! (-> self sound) (-> self root trans))
)
(let ((v0-0 (logclear (-> self mask) (process-mask sleep-code))))
(set! (-> self mask) v0-0)
v0-0
)
)
(let ((v1-0 arg2))
(the-as object (when (= v1-0 'move-to)
(set!
(-> self root trans quad)
(-> (the-as vector (-> arg3 param 0)) quad)
)
(set! (-> self water-height) (-> self root trans y))
(if (nonzero? (-> self sound))
(update-trans! (-> self sound) (-> self root trans))
)
(let
((v0-0 (logclear (-> self mask) (process-mask sleep-code)))
)
(set! (-> self mask) v0-0)
v0-0
)
)
)
)
)
:trans
@ -1836,11 +1839,13 @@
)
;; definition for method 25 of type water-anim
;; INFO: Return type mismatch quaternion vs object.
;; Used lq/sq
(defmethod TODO-RENAME-25 water-anim ((obj water-anim))
(local-vars (sv-16 res-tag))
(set! (-> obj play-ambient-sound?) #t)
(set! (-> obj look)
(set!
(-> obj look)
(res-lump-value (-> obj entity) 'look int :default (the-as uint128 -1))
)
(set! sv-16 (new 'static 'res-tag))
@ -1862,8 +1867,13 @@
)
)
(let ((f0-6 (res-lump-float (-> obj entity) 'rotoffset)))
(if (!= f0-6 0.0)
(quaternion-rotate-y! (-> obj root quat) (-> obj root quat) f0-6)
(the-as object (if (!= f0-6 0.0)
(quaternion-rotate-y!
(-> obj root quat)
(-> obj root quat)
f0-6
)
)
)
)
)
@ -1913,4 +1923,4 @@
)
)
(the-as ripple-wave-set (ja-post))
)
)

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -665,15 +665,15 @@
;; definition of type ripple-control
(deftype ripple-control (basic)
((global-scale float :offset-assert 4)
(last-frame-scale float :offset-assert 8)
(close-fade-dist float :offset-assert 12)
(far-fade-dist float :offset-assert 16)
(faded-scale float :offset-assert 20)
(individual-normal-scale float :offset-assert 24)
(waveform ripple-wave-set :offset-assert 28)
(send-query basic :offset-assert 32)
(query basic :offset-assert 36)
((global-scale float :offset-assert 4)
(last-frame-scale float :offset-assert 8)
(close-fade-dist float :offset-assert 12)
(far-fade-dist float :offset-assert 16)
(faded-scale float :offset-assert 20)
(individual-normal-scale float :offset-assert 24)
(waveform ripple-wave-set :offset-assert 28)
(send-query symbol :offset-assert 32)
(query ripple-merc-query :offset-assert 36)
)
:method-count-assert 9
:size-assert #x28

View file

@ -154,7 +154,7 @@
(TODO-RENAME-22 (_type_) ripple-wave-set 22)
(dummy-23 () none 23)
(dummy-24 () none 24)
(TODO-RENAME-25 (_type_) quaternion 25)
(TODO-RENAME-25 (_type_) object 25)
(dummy-26 () none 26)
(dummy-27 () none 27)
(get-ripple-height (_type_ vector) float 28)

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1845,6 +1845,7 @@
)
;; definition for method 25 of type water-anim
;; INFO: Return type mismatch quaternion vs object.
;; Used lq/sq
(defmethod TODO-RENAME-25 water-anim ((obj water-anim))
(local-vars (sv-16 res-tag))
@ -1872,8 +1873,13 @@
)
)
(let ((f0-6 (res-lump-float (-> obj entity) 'rotoffset)))
(if (!= f0-6 0.0)
(quaternion-rotate-y! (-> obj root quat) (-> obj root quat) f0-6)
(the-as object (if (!= f0-6 0.0)
(quaternion-rotate-y!
(-> obj root quat)
(-> obj root quat)
f0-6
)
)
)
)
)

File diff suppressed because it is too large Load diff

View file

@ -1398,3 +1398,7 @@
(dummy-42 obj)
(none)
)

File diff suppressed because it is too large Load diff

View file

@ -288,7 +288,8 @@ 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/INT.DGO"};
"DGO/BEA.DGO", "CGO/L1.CGO", "DGO/INT.DGO",
"DGO/VI1.DGO"};
std::vector<std::string> dgo_paths;
if (g_iso_data_path.empty()) {
for (auto& x : dgos) {