decomp: finish sunken-pipegame | sun-exit-chamber | beach-obs (#1021)

* decomp: finish `sunken-pipegame`

* decomp: finish `sun-exit-chamber`

* decomp: finish `beach-obs`

* fix mistakes

* make `collide-func` work in offline tests
This commit is contained in:
Tyler Wilding
2021-12-28 18:52:52 -05:00
committed by GitHub
parent 9b0ae373f0
commit 99db6bb371
14 changed files with 9560 additions and 82 deletions
+60 -50
View File
@@ -934,6 +934,8 @@
(MISSING-orb-hint #x233)
(beach-eco-rock-increment #x239)
(jungle-maindoor-hint #x23c)
(firecanyon-not-enough-cells #x24f)
@@ -998,10 +1000,13 @@
(red-eco-tutorial #x2a6)
(daxter-blue-eco-plat-tutorial #x2a7)
(misty-bone-bridge-hint #x2aa)
(fish? #x2a9)
(misty-bone-bridge-hint #x2aa)
(beach-grottopole-increment #x2af)
(firecanyon-collect-cells-collected #x2b1)
(firecanyon-collect-cells-collected-reminder #x2b2)
(firecanyon-collect-cells-text #x2b3)
@@ -1009,10 +1014,6 @@
(missed #x2b5)
(lose! #x2b6)
(village2-gambler-money #x300)
(village2-geologist-money #x301)
(village2-warrior-money #x302)
@@ -1052,7 +1053,7 @@
(reach-center #x323) ;; task name?
(rolling-ring-chase-1 #x324)
(rolling-ring-chase-2 #x325)
(sunken-kiera-you-raised-a-piece-of-lpc #x326)
(rolling-beat-lurkers #x327)
(swamp-finished-with-flutflut #x328)
(rolling-race-beat-record #x335)
@@ -1065,6 +1066,7 @@
(rolling-ring-hint-be-quick-to-next #x340)
(rolling-ring-hint-be-quick-all #x341)
(sunken-pipegame-follow-it #x343)
(sunken-helix-daxter-bad-feeling #x344)
(sunken-blue-eco-charger-hint #x345)
(sunken-double-lurker-hint #x347)
@@ -1492,7 +1494,7 @@
(define-extern process type) ; deftype provided by C Kernel
(deftype process (process-tree)
((pool dead-pool :offset-assert #x20)
(status basic :offset-assert #x24)
(status basic :offset-assert #x24) ; a symbol
(pid int32 :offset-assert #x28)
(main-thread cpu-thread :offset-assert #x2c)
(top-thread thread :offset-assert #x30)
@@ -23944,6 +23946,8 @@
:size-assert #xb4
:heap-base #x50
:flag-assert #x14005000b4
(:states
windmill-one-idle)
)
(deftype grottopole (process-drawable)
@@ -23958,6 +23962,10 @@
:size-assert #xc8
:heap-base #x60
:flag-assert #x14006000c8
(:states
grottopole-idle
grottopole-moving-up
grottopole-moving-down)
)
(deftype ecoventrock (process-drawable)
@@ -23966,6 +23974,9 @@
:size-assert #xb0
:heap-base #x40
:flag-assert #x14004000b0
(:states
(ecoventrock-break symbol)
ecoventrock-idle)
)
(deftype flying-rock (process-drawable)
@@ -23976,6 +23987,9 @@
:size-assert #xc0
:heap-base #x50
:flag-assert #x14005000c0
(:states
flying-rock-rolling
flying-rock-idle)
)
(deftype bladeassm (process-drawable)
@@ -23986,6 +24000,8 @@
:size-assert #xb4
:heap-base #x50
:flag-assert #x14005000b4
(:states
bladeassm-idle)
)
(deftype flutflutegg (process-drawable)
@@ -24008,6 +24024,11 @@
(:methods
(dummy-20 (_type_ float float float) none 20)
)
(:states
(flutflutegg-break symbol)
flutflutegg-idle
flutflutegg-physics-fall
flutflutegg-physics)
)
(deftype harvester (process-drawable)
@@ -24018,6 +24039,9 @@
:size-assert #xb4
:heap-base #x50
:flag-assert #x14005000b4
(:states
harvester-idle
(harvester-inflate symbol))
)
(deftype beachcam (process-hidden)
@@ -24040,27 +24064,12 @@
(define-extern *beachcam-sg* skeleton-group)
(define-extern *harvester-sg* skeleton-group)
(define-extern harvester-idle (state harvester)) ;; unknown type
(define-extern harvester-inflate (state symbol harvester)) ;; unknown type
(define-extern *flutflutegg-sg* skeleton-group)
(define-extern flutflutegg-break (state symbol flutflutegg)) ;; unknown type
(define-extern flutflutegg-idle (state flutflutegg)) ;; unknown type
(define-extern flutflutegg-physics-fall (state flutflutegg)) ;; unknown type
(define-extern flutflutegg-physics (state flutflutegg)) ;; unknown type
(define-extern *bladeassm-sg* skeleton-group)
(define-extern bladeassm-idle (state bladeassm)) ;; unknown type
(define-extern *kickrock-sg* skeleton-group)
(define-extern flying-rock-rolling (state flying-rock)) ;; unknown type
(define-extern flying-rock-idle (state flying-rock)) ;; unknown type
(define-extern *ecoventrock-sg* skeleton-group)
(define-extern ecoventrock-break (state symbol ecoventrock)) ;; unknown type
(define-extern ecoventrock-idle (state ecoventrock)) ;; unknown type
(define-extern *grottopole-sg* skeleton-group)
(define-extern grottopole-idle (state grottopole)) ;; unknown type
(define-extern grottopole-moving-up (state grottopole)) ;; unknown type
(define-extern grottopole-moving-down (state grottopole)) ;; unknown type
(define-extern *windmill-one-sg* skeleton-group)
(define-extern windmill-one-idle (state windmill-one)) ;; unknown type
(define-extern *flutflut-naked-sg* skeleton-group)
@@ -33330,6 +33339,9 @@
(:methods
(dummy-20 (_type_ float) vector 20)
)
(:states
blue-eco-charger-orb-idle
blue-eco-charger-orb-active)
)
(deftype blue-eco-charger (process-drawable)
@@ -33346,6 +33358,11 @@
(dummy-20 (_type_) object 20)
(dummy-21 (_type_ symbol) object 21)
)
(:states
blue-eco-charger-idle
(blue-eco-charger-open symbol)
blue-eco-charger-close
blue-eco-charger-stuck-open)
)
(deftype exit-chamber-items (structure)
@@ -33385,6 +33402,13 @@
(dummy-23 (_type_ symbol) object 23)
(dummy-24 (_type_ float) none 24)
)
(:states
exit-chamber-charger-puzzle
exit-chamber-idle-in-sunken
(exit-chamber-idle-in-village symbol)
exit-chamber-lower
exit-chamber-rise
exit-chamber-charger-puzzle-beaten)
)
(deftype exit-chamber-button (basebutton)
@@ -33403,20 +33427,8 @@
;; - Unknowns
(define-extern *exit-chamber-sg* skeleton-group)
(define-extern exit-chamber-charger-puzzle (state exit-chamber)) ;; unknown type
(define-extern exit-chamber-idle-in-sunken (state exit-chamber)) ;; unknown type
(define-extern exit-chamber-idle-in-village (state exit-chamber)) ;; unknown type
(define-extern exit-chamber-lower (state exit-chamber)) ;; unknown type
(define-extern exit-chamber-rise (state exit-chamber)) ;; unknown type
(define-extern exit-chamber-charger-puzzle-beaten (state exit-chamber)) ;; unknown type
(define-extern *blue-eco-charger-sg* skeleton-group)
(define-extern blue-eco-charger-idle (state blue-eco-charger)) ;; unknown type
(define-extern blue-eco-charger-open (state symbol blue-eco-charger)) ;; unknown type
(define-extern blue-eco-charger-close (state blue-eco-charger)) ;; unknown type
(define-extern blue-eco-charger-stuck-open (state blue-eco-charger)) ;; unknown type
(define-extern *blue-eco-charger-orb-sg* skeleton-group)
(define-extern blue-eco-charger-orb-idle (state blue-eco-charger-orb)) ;; unknown type
(define-extern blue-eco-charger-orb-active (state blue-eco-charger-orb)) ;; unknown type
;; ----------------------
@@ -33537,8 +33549,8 @@
(sucked-up-far-part-pos vector :inline :offset-assert 80)
(blown-out-jar-part-pos vector :inline :offset-assert 96)
(blown-out-far-part-pos vector :inline :offset-assert 112)
(sucked-up-part basic :offset-assert 128)
(blown-out-part basic :offset-assert 132)
(sucked-up-part sparticle-launch-control :offset-assert 128) ; guesses
(blown-out-part sparticle-launch-control :offset-assert 132) ; guesses
)
:method-count-assert 9
:size-assert #x88
@@ -33546,11 +33558,11 @@
)
(deftype sunken-pipegame (process-drawable)
((abort-audio-if-beaten? basic :offset-assert 176)
((abort-audio-if-beaten? symbol :offset-assert 176)
(challenges-mask uint32 :offset-assert 180)
(challenge int32 :offset-assert 184)
(ticker ticky :inline :offset-assert 192)
(button sunken-pipegame-button 3 :offset-assert 224)
(button (pointer sunken-pipegame-button) 3 :offset-assert 224)
(prize sunken-pipegame-prize 3 :inline :offset-assert 240)
)
:method-count-assert 23
@@ -33558,23 +33570,21 @@
:heap-base #x230
:flag-assert #x17023002a0
(:methods
(dummy-20 () none 20)
(dummy-21 () none 21)
(dummy-22 () none 22)
(dummy-20 (_type_) none 20)
(dummy-21 (_type_ symbol) symbol 21)
(dummy-22 (_type_ symbol) none 22)
)
(:states
sunken-pipegame-start-up
sunken-pipegame-idle
sunken-pipegame-end-play
sunken-pipegame-beat-challenge
sunken-pipegame-begin-play)
)
;; - Functions
(define-extern sunken-pipegame-button-init-by-other function)
;; - Unknowns
(define-extern sunken-pipegame-start-up (state sunken-pipegame)) ;; unknown type
(define-extern sunken-pipegame-idle (state sunken-pipegame)) ;; unknown type
(define-extern sunken-pipegame-end-play (state sunken-pipegame)) ;; unknown type
(define-extern sunken-pipegame-beat-challenge (state sunken-pipegame)) ;; unknown type
(define-extern sunken-pipegame-begin-play (state sunken-pipegame)) ;; unknown type
(define-extern sunken-pipegame-button-init-by-other (function vector quaternion entity-actor symbol none :behavior sunken-pipegame-button))
;; ----------------------
@@ -2767,7 +2767,7 @@
"(code exit-chamber-idle-in-sunken)": [[16, "event-message-block"]],
"(event exit-chamber-idle-in-sunken)": [
[16, "event-message-block"],
[16, "vector"],
[32, "event-message-block"]
],
@@ -5947,5 +5947,58 @@
[96, "event-message-block"]
],
"(method 11 sunken-pipegame)": [
[16, "vector"],
[32, "quaternion"],
[48, "event-message-block"]
],
"(code sunken-pipegame-begin-play)": [
[16, "vector"],
[32, "event-message-block"],
[112, "vector"],
[128, "vector"],
[144, "vector"],
[160, "vector"],
[176, "vector"],
[192, "vector"]
],
"(code sunken-pipegame-end-play)": [
[16, "event-message-block"]
],
"(enter sunken-pipegame-begin-play)": [
[16, "event-message-block"]
],
"(trans exit-chamber-idle-in-village)": [
[16, "event-message-block"]
],
"(code exit-chamber-idle-in-village)": [
[16, "event-message-block"]
],
"(code exit-chamber-lower)": [
[16, "event-message-block"],
[96, "vector"]
],
"(code exit-chamber-rise)": [
[16, "event-message-block"],
[96, "vector"]
],
"(event exit-chamber-idle-in-village)": [
[16, "vector"],
[32, "event-message-block"]
],
"(method 11 exit-chamber)": [
[16, "matrix"],
[96, "vector"]
],
"placeholder-do-not-add-below!": []
}
@@ -3149,9 +3149,19 @@
[33, "s4", "process-drawable"]
],
"(method 23 exit-chamber)": [[107, "a1", "fuel-cell"]],
"(method 23 exit-chamber)": [
[113, "a0", "fuel-cell"]
],
"(code exit-chamber-rise)": [[15, "v1", "fuel-cell"]],
"(code exit-chamber-rise)": [
[15, "v1", "fuel-cell"],
[64, "v1", "sunkencam"],
[81, "v1", "art-joint-anim"],
[157, "v1", "art-joint-anim"],
[211, "v1", "art-joint-anim"],
[292, "v1", "art-joint-anim"],
[424, "v1", "fuel-cell"]
],
"(method 25 sunken-water)": [
[121, "v1", "uint"],
@@ -4346,10 +4356,11 @@
],
"beachcam-spawn": [
[68, "gp", "handle"],
[77, "a0", "pov-camera"],
[88, "v1", "handle"],
[106, "s5", "handle"]
[[57, 85], "gp", "handle"],
[[68, 76], "v1", "handle"],
[80, "v1", "pov-camera"],
[[84, 92], "v1", "handle"],
[[103, 110], "s5", "handle"]
],
"(code ecoventrock-break)": [
@@ -7298,5 +7309,57 @@
[[9, 42], "a2", "(pointer int8)"]
],
"(event sunken-pipegame-idle)": [
[6, "a0", "sunken-pipegame-button"]
],
"(method 11 sunken-pipegame)": [
[189, "a1", "collectable"],
[280, "s0", "collectable"],
[371, "s0", "collectable"],
[[407, 410], "v1", "sunken-pipegame-button"]
],
"(method 7 sunken-pipegame)": [
[33, "t9", "(function process-drawable int process-drawable)"]
],
"(code sunken-pipegame-begin-play)": [
[179, "v1", "float"],
[260, "v1", "float"],
[519, "v1", "float"],
[596, "v1", "float"]
],
"(method 22 sunken-pipegame)": [
[20, "v1", "collectable"],
[25, "v1", "collectable"],
[54, "v1", "collectable"],
[59, "v1", "collectable"]
],
"(enter exit-chamber-lower)": [
[14, "v1", "fuel-cell"]
],
"(code exit-chamber-lower)": [
[29, "v1", "sunkencam"],
[50, "v1", "art-joint-anim"],
[162, "v1", "art-joint-anim"],
[241, "v1", "art-joint-anim"],
[308, "v1", "fuel-cell"]
],
"(method 11 exit-chamber)": [
[190, "v1", "art-joint-anim"]
],
"ray-cylinder-intersect": [
[20, "v1", "uint"],
[20, "a0", "uint"]
// [25, "v1", "uint"],
// [25, "a0", "uint"]
],
"placeholder-do-not-add-below": []
}
@@ -3827,5 +3827,20 @@
}
},
"(method 23 exit-chamber)": {
"vars": {
"v1-39": ["v1-39", "handle"]
}
},
"beachcam-spawn": {
"vars": {
"gp-1": ["gp-1", "handle"],
"v1-12": ["v1-12", "handle"],
"v1-15": ["v1-15", "handle"],
"s5-2": ["s5-2", "handle"]
}
},
"aaaaaaaaaaaaaaaaaaaaaaa": {}
}
+8 -6
View File
@@ -147,6 +147,8 @@
(MISSING-orb-hint #x233)
(beach-eco-rock-increment #x239)
(jungle-maindoor-hint #x23c)
(firecanyon-not-enough-cells #x24f)
@@ -211,10 +213,13 @@
(red-eco-tutorial #x2a6)
(daxter-blue-eco-plat-tutorial #x2a7)
(misty-bone-bridge-hint #x2aa)
(fish? #x2a9)
(misty-bone-bridge-hint #x2aa)
(beach-grottopole-increment #x2af)
(firecanyon-collect-cells-collected #x2b1)
(firecanyon-collect-cells-collected-reminder #x2b2)
(firecanyon-collect-cells-text #x2b3)
@@ -222,10 +227,6 @@
(missed #x2b5)
(lose! #x2b6)
(village2-gambler-money #x300)
(village2-geologist-money #x301)
(village2-warrior-money #x302)
@@ -265,7 +266,7 @@
(reach-center #x323) ;; task name?
(rolling-ring-chase-1 #x324)
(rolling-ring-chase-2 #x325)
(sunken-kiera-you-raised-a-piece-of-lpc #x326)
(rolling-beat-lurkers #x327)
(swamp-finished-with-flutflut #x328)
(rolling-race-beat-record #x335)
@@ -278,6 +279,7 @@
(rolling-ring-hint-be-quick-to-next #x340)
(rolling-ring-hint-be-quick-all #x341)
(sunken-pipegame-follow-it #x343)
(sunken-helix-daxter-bad-feeling #x344)
(sunken-blue-eco-charger-hint #x345)
(sunken-double-lurker-hint #x347)
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
+6 -7
View File
@@ -15,7 +15,7 @@ method_split_pattern = re.compile('t9-\d+\s\(method-of-object')
function_split_pattern = re.compile('\(t9-\d+\)')
missing_res_tag_pattern = re.compile('(sv-\d{2,} int)')
decompiler_error_pattern = re.compile(';; ERROR')
missing_state_arg = re.compile('\s\(-> arg3 param \d\)\s')
missing_arg = re.compile('local-vars.*none\)')
for file in files:
src_path = ""
@@ -54,12 +54,11 @@ for file in files:
print("decompiler_error - {}:{}".format(file_path, lineno + 1))
throw_error = True
continue
# todo - not good enough, ignore if there is only whitespace on the leftof the match
# missing_state_arg_match = missing_state_arg.search(line)
# if missing_state_arg_match:
# print("missing_state_arg - {}:{}".format(file_path, lineno + 1))
# throw_error = True
# continue
missing_arg_match = missing_arg.search(line)
if missing_arg_match:
print("missing_arg - {}:{}".format(file_path, lineno + 1))
throw_error = True
continue
if throw_error:
print("found potential problems!")
+6 -3
View File
@@ -106,7 +106,7 @@
(cyl-len float)
(arg6 vector)
)
(local-vars (v0-1 float) (v1-0 float) (v1-2 float) (a0-1 float) (a0-2 float) (a0-4 float) (a0-5 float))
(local-vars (v0-1 float) (v1-0 number) (v1-2 float) (a0-1 uint) (a0-2 float) (a0-4 float) (a0-5 float))
(rlet ((vf1 :class vf)
(vf10 :class vf)
(vf11 :class vf)
@@ -141,9 +141,9 @@
(.mov v1-0 vf16)
(.sub.x.vf vf20 vf18 vf14)
(.mov a0-1 vf18)
(let ((v1-1 (logand v1-0 (the-as uint a0-1))))
(let ((v1-1 (logand (the-as uint v1-0) a0-1)))
(.sub.vf vf1 vf15 vf1)
(b! (< v1-1 0) cfg-6 :delay (.sub.vf vf2 vf11 vf2))
(b! (< (the-as int v1-1) 0) cfg-6 :delay (.sub.vf vf2 vf11 vf2))
)
(.mov v1-2 vf19)
(.mov a0-2 vf20)
@@ -379,3 +379,6 @@
)
)
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
+2
View File
@@ -194,6 +194,8 @@
"(method 12 drawable-tree-instance-tie)",
"(method 13 drawable-tree-instance-tie)",
"ray-triangle-intersect", // requires SLL implementation
// not in use in PC port
"tie-near-init-engine",
"tie-near-end-buffer"