[decomp] fisher and FIN.DGO (finalboss) level (#899)

* decomp `fisher`, `robotboss`, `light-eco`, `green-eco-lurker`, `sage-finalboss`, `robotboss-weapon`, `robotboss-misc`

* fixes

* add files

* add `:states` list to `deftype` and fix files

* test state forward decl's on a few more types

* also the refs

* add light-eco

* whatever
This commit is contained in:
ManDude
2021-10-16 19:06:33 +01:00
committed by GitHub
parent 9225d28444
commit caac740aff
185 changed files with 30529 additions and 4422 deletions
+5 -4
View File
@@ -1385,10 +1385,11 @@ TypeState StackSpillLoadOp::propagate_types_internal(const TypeState& input,
const Env& env,
DecompilerTypeSystem&) {
// stack slot load
auto info = env.stack_spills().lookup(m_offset);
auto& info = env.stack_spills().lookup(m_offset);
if (info.size != m_size) {
env.func->warnings.general_warning("Stack slot load mismatch: defined as size {}, got size {}",
info.size, m_size);
env.func->warnings.general_warning(
"Stack slot load at {} mismatch: defined as size {}, got size {}", m_offset, info.size,
m_size);
}
if (info.is_signed != m_is_signed) {
@@ -1404,7 +1405,7 @@ TypeState StackSpillLoadOp::propagate_types_internal(const TypeState& input,
TypeState StackSpillStoreOp::propagate_types_internal(const TypeState& input,
const Env& env,
DecompilerTypeSystem& dts) {
auto info = env.stack_spills().lookup(m_offset);
auto& info = env.stack_spills().lookup(m_offset);
if (info.size != m_size) {
env.func->warnings.general_warning(
"Stack slot store mismatch: defined as size {}, got size {}\n", info.size, m_size);
File diff suppressed because it is too large Load Diff
@@ -579,7 +579,7 @@
[3, "(function basic symbol)"],
[2, "(function process symbol)"]
],
"anim-tester": [
[11, "(function none :behavior anim-tester)"],
[12, "(function none :behavior anim-tester)"],
@@ -590,7 +590,7 @@
[1, "(function none :behavior camera-combiner)"],
[2, "(function basic int basic event-message-block object :behavior camera-combiner)"]
],
"title-obs": [
[0, "(function none)"]
],
@@ -669,7 +669,7 @@
[2, "(function sparticle-launch-group :behavior oracle)"],
[3, "(function none :behavior oracle)"]
],
"time-of-day": [
[10, "(function none :behavior time-of-day-proc)"],
[12, "(function sparticle-system sparticle-cpuinfo none)"]
@@ -757,5 +757,39 @@
[6, "(function sparticle-system sparticle-cpuinfo none)"]
],
"fisher-JUN": [
[27, "(function none :behavior process)"],
[28, "(function none :behavior fisher)"],
[20, "(function none :behavior fisher-fish)"],
[1, "(function none :behavior target)"]
],
"fisher-JUNGLE-L1": [
[27, "(function none :behavior process)"],
[28, "(function none :behavior fisher)"],
[20, "(function none :behavior fisher-fish)"],
[1, "(function none :behavior target)"]
],
"robotboss-misc": [
[5, "(function sparticle-launch-control :behavior finalbosscam)"]
],
"sage-finalboss-FIN": [
[21, "(function none :behavior sage-finalboss)"],
[22, "(function none :behavior sage-finalboss)"],
[15, "(function final-door symbol)"],
[16, "(function final-door symbol)"],
[7, "(function final-door symbol)"],
[6, "(function final-door symbol)"]
],
"sage-finalboss-L1": [
[21, "(function none :behavior sage-finalboss)"],
[22, "(function none :behavior sage-finalboss)"],
[15, "(function final-door symbol)"],
[16, "(function final-door symbol)"],
[7, "(function final-door symbol)"],
[6, "(function final-door symbol)"]
],
"placeholder-do-not-add-below": []
}
@@ -353,9 +353,6 @@
"(method 27 ropebridge)",
// all unchecked and in level DGO code
"(anon-function 11 robotboss)",
"(anon-function 18 robotboss)",
"(anon-function 49 robotboss)",
"(anon-function 21 plant-boss)",
"(anon-function 10 ice-cube)",
"(anon-function 15 ice-cube)",
@@ -868,6 +868,159 @@
["L670", "uint64", true]
],
"fisher-JUN": [
["L262", "vector"],
["L463", "(array (inline-array fisher-params))"]
],
"fisher-JUNGLE-L1": [
["L262", "vector"],
["L463", "(array (inline-array fisher-params))"]
],
"robotboss-weapon": [
["L122", "attack-info"],
["L127", "attack-info"],
["L138", "attack-info"],
["L144", "vector4w"],
["L145", "vector"]
],
"robotboss-misc": [
["L99", "vector"]
],
"robotboss": [
["L646", "attack-info"],
["L647", "attack-info"],
["L651", "vector"],
["L654", "vector"],
["L655", "vector"],
["L656", "vector"],
["L657", "vector"],
["L658", "vector"],
["L659", "vector"],
["L660", "vector"],
["L661", "vector"],
["L662", "vector"],
["L678", "vector"],
["L669", "vector"],
["L701", "vector"],
["L702", "vector"],
["L703", "vector"],
["L705", "vector"],
["L642", "robotboss-dda"],
["L643", "robotboss-dda"],
["L644", "robotboss-dda"],
["L645", "robotboss-dda"],
["L632", "robotboss-dda"],
["L713", "float", true],
["L714", "float", true],
["L715", "float", true],
["L716", "float", true],
["L717", "float", true],
["L718", "float", true],
["L719", "float", true],
["L720", "float", true],
["L721", "float", true],
["L722", "float", true],
["L723", "float", true],
["L724", "float", true],
["L725", "float", true],
["L726", "float", true],
["L727", "float", true],
["L728", "float", true],
["L729", "float", true],
["L730", "float", true],
["L731", "float", true],
["L732", "float", true],
["L733", "float", true],
["L734", "float", true],
["L735", "float", true],
["L736", "float", true],
["L737", "float", true],
["L738", "float", true],
["L739", "float", true],
["L740", "float", true],
["L741", "float", true],
["L742", "float", true],
["L743", "float", true],
["L744", "float", true],
["L745", "float", true],
["L746", "float", true],
["L747", "float", true],
["L748", "float", true],
["L749", "float", true],
["L750", "float", true],
["L751", "float", true],
["L752", "float", true],
["L753", "float", true],
["L754", "float", true],
["L755", "float", true],
["L756", "float", true],
["L757", "float", true],
["L758", "float", true],
["L759", "float", true],
["L760", "float", true],
["L761", "float", true],
["L762", "float", true],
["L763", "float", true],
["L764", "float", true],
["L765", "float", true],
["L766", "float", true],
["L767", "float", true],
["L768", "(pointer float)", 1],
["L769", "float", true],
["L770", "float", true],
["L771", "float", true],
["L772", "float", true],
["L773", "float", true],
["L774", "float", true],
["L775", "float", true],
["L776", "float", true],
["L777", "float", true],
["L778", "float", true],
["L779", "float", true],
["L780", "float", true],
["L781", "float", true],
["L782", "float", true],
["L783", "float", true],
["L784", "float", true],
["L785", "float", true],
["L786", "float", true],
["L787", "float", true],
["L788", "float", true],
["L789", "float", true],
["L790", "float", true],
["L791", "float", true],
["L792", "float", true],
["L793", "float", true],
["L794", "float", true],
["L795", "float", true],
["L796", "float", true],
["L797", "float", true],
["L798", "float", true],
["L799", "float", true],
["L800", "float", true],
["L801", "uint64", true],
["L802", "uint64", true],
["L803", "uint64", true],
["L804", "uint64", true],
["L814", "float", true],
["L815", "uint64", true],
["L816", "uint64", true]
],
"sage-finalboss-FIN": [
["L528", "vector"],
["L272", "vector"],
["L527", "quaternion"]
],
"sage-finalboss-L1": [
["L528", "vector"],
["L272", "vector"],
["L527", "quaternion"]
],
// 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": []
}
@@ -1855,7 +1855,7 @@
"(method 11 wall-plat)": [
[16, "vector"]
],
"(code plunger-lurker-plunge)": [[16, "event-message-block"]],
"(event flying-lurker-fly)": [[16, "event-message-block"]],
"(trans flying-lurker-fly)": [[16, "event-message-block"]],
@@ -1882,7 +1882,7 @@
[144, "vector"],
[160, "vector"]
],
"(method 18 collide-cache)": [[16, "collide-cache-prim"]],
"kill-current-level-hint": [[16, "event-message-block"]],
@@ -1917,7 +1917,7 @@
"sparticle-60-to-50":[
[16, "quaternion"]
],
],
"sp-orbiter":[
[16, "vector"],
@@ -2741,7 +2741,7 @@
[128, "vector"],
[144, "vector"]
],
"(method 11 effect-control)": [
[16, "vector"],
[32, "vector"]
@@ -2796,5 +2796,206 @@
[16,["inline-array", "sky-vertex", 12]]
],
"fisher-fish-move": [[16, "vector"]],
"fisher-fish-water": [[16, "vector"]],
"(trans play-accept fisher)": [[16, "vector"]],
"(method 11 fisher)": [[16, "vector"]],
"(code fisher-fish-caught)": [[16, "event-message-block"]],
"(code fisher-fish-die)": [[16, "event-message-block"]],
"(exit fisher-done)": [[16, "event-message-block"]],
"(enter fisher-done)": [[16, "event-message-block"]],
"(event fisher-playing)": [[16, "event-message-block"]],
"(enter fisher-playing)": [[16, "event-message-block"]],
"(exit fisher-playing)": [[16, "event-message-block"]],
"(trans enter-playing fisher)": [[16, "event-message-block"]],
"(code target-fishing)": [
[16, "event-message-block"],
[96, "vector"],
[112, "quaternion"],
[128, "quaternion"],
[144, "quaternion"]
],
"(method 43 fisher)": [
[16, "vector"],
[32, "vector"]
],
"fisher-draw-display": [[16, "font-context"]],
"(method 10 torus)": [
[16, "vector"],
[32, "vector"]
],
"(method 12 torus)": [[16, "matrix"]],
"redshot-trans": [[16, "matrix"]],
"(trans redshot-explode)": [
[16, "vector"],
[32, "event-message-block"],
[112, "vector"]
],
"(code darkecobomb-explode)": [[16, "event-message-block"]],
"(event yellowshot-idle)": [[16, "event-message-block"]],
"(trans yellowshot-idle)": [[16, "event-message-block"]],
"(trans darkecobomb-countdown)": [[16, "vector"]],
"arcing-shot-draw": [
[16, "vector"],
[32, "vector"]
],
"(method 9 torus)": [
[16, "vector"],
[32, "vector"],
[48, "vector"],
[64, "matrix"],
[128, ["inline-array", "vector", 8]]
],
"(method 32 finalbosscam)": [[16, "event-message-block"]],
"(code cam-robotboss)": [
[16, "vector"],
[32, "vector"]
],
"ecoclaw-beam-particle-callback": [[16, "vector"]],
"robotboss-manipy-trans-hook": [[16, "vector"]],
"robotboss-redshot": [[16, "vector"]],
"robotboss-cut-cam": [[16, "vector"]],
"robotboss-yellowshot": [
[16, "vector"],
[32, "vector"],
[48, "event-message-block"]
],
"(trans robotboss-white-eco-movie)": [[16, "vector"]],
"(code robotboss-red-wait)": [
[16, "vector"],
[32, "redshot-launch-array"]
],
"(trans robotboss-yellow-wait)": [
[16, "vector"],
[32, "event-message-block"],
[112, "vector"]
],
"robotboss-setup-for-hits": [
[16, "sphere"],
[32, "event-message-block"]
],
"robotboss-position": [
[16, "vector"],
[32, "matrix"],
[96, "event-message-block"],
[176, "vector"]
],
"robotboss-shooting-trans": [
[16, "vector"],
[32, "event-message-block"]
],
"robotboss-darkecobomb": [
[16, "vector"],
[32, "vector"]
],
"robotboss-redshot-fill-array": [
[16, "vector"],
[32, "vector"]
],
"robotboss-blue-beam": [
[16, "vector"],
[32, "vector"],
[48, "vector"],
[64, "collide-mesh-cache-tri"],
[160, "vector"],
[176, "event-message-block"]
],
"robotboss-bomb-handler": [[16, "event-message-block"]],
"robotboss-blue-done": [[16, "event-message-block"]],
"(exit robotboss-blue-wait)": [[16, "event-message-block"]],
"(enter robotboss-blue-wait)": [[16, "event-message-block"]],
"(exit robotboss-green-wait)": [[16, "event-message-block"]],
"(event robotboss-green-wait)": [[16, "event-message-block"]],
"(trans robotboss-red-wait)": [
[16, "event-message-block"],
[96, "vector"]
],
"(exit robotboss-red-wait)": [[16, "event-message-block"]],
"(exit robotboss-yellow-wait)": [[16, "event-message-block"]],
"(code robotboss-white-eco-movie)": [[16, "event-message-block"]],
"(event robotboss-yellow-dark-bomb-wait)": [[16, "event-message-block"]],
"(exit robotboss-yellow-dark-bomb-wait)": [[16, "event-message-block"]],
"(code robotboss-daxter-sacrifice-movie)": [[16, "event-message-block"]],
"robotboss-greenshot": [
[16, "vector"],
[32, "vector"]
],
"(trans robotboss-blue-wait)": [
[16, "vector"],
[32, "event-message-block"],
[112, "vector"]
],
"(code robotboss-blue-wait)": [[16, "event-message-block"]],
"(method 44 green-eco-lurker)": [[16, "event-message-block"]],
"(method 72 green-eco-lurker)": [[16, "event-message-block"]],
"(enter nav-enemy-die green-eco-lurker)": [[16, "event-message-block"]],
"(event spawn-minions)": [[16, "event-message-block"]],
"(method 51 green-eco-lurker)": [[16, "vector"]],
"(enter green-eco-lurker-appear)": [
[16, "vector"],
[32, "vector"]
],
"(code spawn-minions)": [
[16, "vector"],
[32, "event-message-block"]
],
"check-drop-level-lighteco-big-pops": [[16, "vector"]],
"check-drop-level-lighteco-pops": [[16, "vector"]],
"(method 20 light-eco-child)": [[16, "vector"]],
"light-eco-child-default-event-handler": [[16, "event-message-block"]],
"(code light-eco-child-die)": [[16, "event-message-block"]],
"light-eco-mother-default-event-handler": [[16, "event-message-block"]],
"(trans light-eco-child-hit-ground)": [[16, "vector"]],
"(method 21 light-eco-mother)": [[16, "vector"]],
"(method 20 light-eco-mother)": [[16, "vector"]],
"(trans plat-path-active plat-eco-finalboss)": [
[16, "vector"],
[32, "vector"],
[48, "event-message-block"]
],
"(method 44 sage-finalboss)": [[16, "event-message-block"]],
"(method 45 sage-finalboss)": [[16, "event-message-block"]],
"(method 32 sage-finalboss)": [[16, "event-message-block"]],
"(exit play-anim sage-finalboss)": [[16, "event-message-block"]],
"sage-finalboss-extra-trans": [[16, "event-message-block"]],
"sage-finalboss-extra-enter": [[16, "event-message-block"]],
"(trans play-anim sage-finalboss)": [
[16, "event-message-block"],
[96, "vector"],
[112, "vector"],
[128, "vector"],
[144, "vector"],
[160, "vector"],
[176, "vector"],
[192, "vector"],
[208, "vector"],
[224, "vector"]
],
"placeholder-do-not-add-below!": []
}
@@ -3961,7 +3961,7 @@
[111, "s2", "(pointer gs-tex1)"],
[113, "s2", "(pointer gs-reg64)"],
[115, "s2", "(pointer gs-clamp)"],
[117, "s2", "(pointer gs-reg64)"],
[117, "s2", "(pointer gs-reg64)"],
[118, "s2", "(pointer uint64)"],
[120, "s2", "(pointer gs-reg64)"],
[[159, 166], "s3", "dma-packet"],
@@ -4063,5 +4063,273 @@
[[75, 78], "v1", "dma-packet"]
],
"fisher-fish-move": [
[9, "v1", "fisher"],
[21, "v1", "fisher"]
],
"(code fisher-fish-fall)": [
[5, "v1", "fisher"],
[60, "v1", "fisher"],
[79, "v1", "fisher"]
],
"(code fisher-fish-caught)": [
[169, "v1", "fisher"]
],
"(code fisher-fish-die)": [
[35, "v1", "fisher"],
[47, "v1", "fisher"],
[90, "v1", "fisher"],
[98, "v1", "fisher"],
[112, "v1", "fisher"],
[129, "v1", "fisher"],
[137, "v1", "fisher"],
[151, "v1", "fisher"],
[165, "v1", "fisher"],
[179, "v1", "fisher"],
[193, "v1", "fisher"],
[205, "v1", "fisher"],
[209, "v1", "fisher"],
[27, "v1", "float"],
[79, "v1", "float"]
],
"(method 38 fisher)": [
[33, "t9", "(function fisher none)"]
],
"(enter fisher-done)": [
[137, "f0", "float"],
[148, "f0", "float"],
[213, "f0", "float"]
],
"fisher-spawn-ambient": [
[8, "v1", "float"]
],
"(method 43 fisher)": [
[27, "v1", "float"],
[69, "v1", "float"]
],
"(trans play-accept fisher)": [
[101, "v0", "state"]
],
"(trans idle fisher)": [
[4, "v0", "state"]
],
"(code idle fisher)": [
[132, "v1", "art-joint-anim"],
[35, "v1", "float"]
],
"(code target-fishing)": [
[163, "v1", "fisher"],
[290, "v1", "art-joint-anim"]
],
"(method 11 torus)": [
[[5, 22], "s4", "collide-shape-prim-group"]
],
"(method 12 torus)": [
[11, "v1", "float"],
[51, "v1", "float"]
],
"(code darkecobomb-countdown)": [
[25, "v1", "art-joint-anim"],
[75, "v1", "art-joint-anim"]
],
"(code darkecobomb-land)": [
[36, "v1", "art-joint-anim"]
],
"(code darkecobomb-idle)": [
[10, "v1", "art-joint-anim"],
[60, "v1", "art-joint-anim"]
],
"redshot-particle-callback": [
[2, "v1", "(pointer redshot)"]
],
"(event cam-robotboss)": [
[5, "v1", "vector"]
],
"ecoclaw-handler": [
[73, "v1", "vector"]
],
"(event idle silodoor)": [
[4, "v1", "float"]
],
"ecoclaw-beam-particle-callback": [
[1, "a0", "(pointer projectile)"],
[3, "a0", "(pointer projectile)"]
],
"(method 32 finalbosscam)": [
[156, "v1", "robotboss"]
],
"(trans ecoclaw-activate)": [
[30, "a0", "part-tracker"]
],
"robotboss-position": [
[109, "a0", "process-drawable"]
],
"robotboss-bomb-handler": [
[6, "v1", "float"]
],
"robotboss-handler": [
[6, "v1", "float"]
],
"(event robotboss-red-wait)": [
[12, "v1", "float"],
[68, "v1", "float"]
],
"(event robotboss-yellow-wait)": [
[12, "v1", "float"],
[68, "v1", "float"]
],
"(code robotboss-white-eco-movie)": [
[[188, 215], "gp", "handle"]
],
"(code robotboss-yellow-wait)": [
[336, "v1", "float"],
[365, "v1", "float"],
[530, "v1", "art-joint-anim"]
],
"(code robotboss-red-wait)": [
[153, "v1", "float"],
[287, "v1", "float"],
[339, "v1", "float"],
[500, "v1", "art-joint-anim"]
],
"robotboss-redshot": [
[45, "v1", "float"],
[70, "v1", "float"]
],
"(event robotboss-green-wait)": [
[39, "v1", "float"],
[95, "v1", "float"]
],
"(exit robotboss-yellow-wait)": [
[50, "v1", "collide-shape-prim-group"],
[54, "v1", "collide-shape-prim-group"]
],
"(exit robotboss-green-wait)": [
[50, "v1", "collide-shape-prim-group"],
[54, "v1", "collide-shape-prim-group"]
],
"(exit robotboss-red-wait)": [
[50, "v1", "collide-shape-prim-group"],
[54, "v1", "collide-shape-prim-group"]
],
"(exit robotboss-blue-wait)": [
[50, "v1", "collide-shape-prim-group"],
[54, "v1", "collide-shape-prim-group"]
],
"robotboss-redshot-fill-array": [
[24, "v1", "float"],
[46, "v1", "float"],
[109, "v1", "float"],
[137, "v1", "float"],
[137, "v1", "float"]
],
"(trans robotboss-blue-wait)": [
[254, "v1", "float"]
],
"(code robotboss-blue-wait)": [
[14, "v1", "art-joint-anim"]
],
"(enter green-eco-lurker-appear)": [
[12, "v1", "robotboss"],
[17, "v1", "robotboss"]
],
"(code green-eco-lurker-appear)": [
[42, "v1", "art-joint-anim"],
[93, "v1", "art-joint-anim"]
],
"(code green-eco-lurker-appear-land)": [
[74, "v1", "art-joint-anim"]
],
"(code nav-enemy-chase green-eco-lurker)": [
[55, "v1", "art-joint-anim"]
],
"(code nav-enemy-patrol green-eco-lurker)": [
[8, "t9", "(function none)"]
],
"(trans light-eco-child-hit-ground)": [
[63, "v1", "light-eco-mother"],
[75, "a1", "light-eco-mother"],
[88, "a1", "light-eco-mother"]
],
"(event plat-path-active plat-eco-finalboss)": [
[10, "v1", "float"]
],
"(method 45 sage-finalboss)": [
[[40, 57], "s5", "manipy"]
],
"(method 32 sage-finalboss)": [
[[241, 245], "v1", "manipy"],
[[309, 313], "v1", "manipy"]
],
"(trans play-anim sage-finalboss)": [
[[179, 183], "a0", "manipy"],
[[216, 220], "a0", "manipy"],
[[295, 299], "a1", "manipy"],
[[334, 338], "a1", "manipy"],
[[371, 375], "a1", "manipy"],
[391, "v0", "final-door"],
[396, "v0", "final-door"]
],
"(method 7 sage-finalboss)": [
[2, "v1", "(inline-array sage-finalboss-particle)"],
[6, "v1", "(inline-array sage-finalboss-particle)"],
[10, "v1", "(inline-array sage-finalboss-particle)"]
],
"(trans fisher-done)": [
[[41, 46], "v1", "dma-packet"]
],
"placeholder-do-not-add-below": []
}
@@ -3547,11 +3547,35 @@
}
},
"(trans fisher-done)": {
"vars": {
"v1-13": ["v1-13", "dma-packet"]
}
},
"anim-tester-get-playing-item": {
"vars": {
"v0-0": ["v0-0", "anim-test-seq-item"]
}
},
"light-eco-mother-default-event-handler": {
"vars": {
"v0-0": ["v0-0", "int"]
}
},
"(method 7 sage-finalboss)": {
"vars": {
"v1-0": ["v1-0", "(inline-array sage-finalboss-particle)"]
}
},
"(code robotboss-white-eco-movie)": {
"vars": {
"gp-1": ["gp-1", "handle"]
}
},
"aaaaaaaaaaaaaaaaaaaaaaa": {}
}
@@ -579,7 +579,7 @@
[3, "(function basic symbol)"],
[2, "(function process symbol)"]
],
"anim-tester": [
[11, "(function none :behavior anim-tester)"],
[12, "(function none :behavior anim-tester)"],
@@ -590,7 +590,7 @@
[1, "(function none :behavior camera-combiner)"],
[2, "(function basic int basic event-message-block object :behavior camera-combiner)"]
],
"title-obs": [
[0, "(function none)"]
],
@@ -669,10 +669,10 @@
[2, "(function sparticle-launch-group :behavior oracle)"],
[3, "(function none :behavior oracle)"]
],
"time-of-day": [
[10, "(function none)"],
[12, "(function sparticle-system sparticle-cpuinfo int none)"]
[10, "(function none :behavior time-of-day-proc)"],
[12, "(function sparticle-system sparticle-cpuinfo none)"]
],
"basebutton": [
@@ -761,5 +761,22 @@
[29, "(function none)"]
],
"fisher-JUN": [
[27, "(function none :behavior process)"],
[28, "(function none :behavior fisher)"],
[20, "(function none :behavior fisher-fish)"],
[1, "(function none :behavior target)"]
],
"fisher-JUNGLE-L1": [
[27, "(function none :behavior process)"],
[28, "(function none :behavior fisher)"],
[20, "(function none :behavior fisher-fish)"],
[1, "(function none :behavior target)"]
],
"robotboss-misc": [
[5, "(function sparticle-launch-control :behavior finalbosscam)"]
],
"placeholder-do-not-add-below": []
}
+9 -4
View File
@@ -353,9 +353,6 @@
"(method 27 ropebridge)",
// all unchecked and in level DGO code
"(anon-function 11 robotboss)",
"(anon-function 18 robotboss)",
"(anon-function 49 robotboss)",
"(anon-function 21 plant-boss)",
"(anon-function 10 ice-cube)",
"(anon-function 15 ice-cube)",
@@ -548,7 +545,15 @@
"particle-adgif",
"sp-launch-particles-var",
"sp-process-block-2d",
"sp-process-block-3d"
"sp-process-block-3d",
"draw-large-polygon",
"clip-polygon-against-positive-hyperplane",
"clip-polygon-against-negative-hyperplane",
"render-sky-quad",
"render-sky-tri",
"init-sky-regs",
"set-tex-offset",
"adgif-shader<-texture-with-update!"
]
}
@@ -803,6 +803,217 @@
["L733", "uint64", true]
],
"sky": [
["L13", "vu-function"]
],
"sky-tng": [
["L82", "sky-work"],
// 576 bytes, 32 bytes each
["L81", "(inline-array sky-vertex)", 12],
["L80", "(inline-array sky-vertex)", 12],
["L79", "(inline-array sky-vertex)", 72],
["L78", "(pointer uint8)", 48],
["L77", "vector"],
["L76", "vector"]
],
"effect-control": [
["L300", "float", true],
["L301", "float", true],
["L302", "float", true],
["L306", "float", true],
["L307", "float", true],
["L309", "float", true],
["L310", "float", true],
["L312", "float", true],
["L314", "float", true]
],
"seagull": [
["L226", "(inline-array air-box)", 20]
],
"rolling-race-ring": [
["L94", "vector"],
["L95", "vector"],
["L96", "vector"],
["L97", "vector"],
["L98", "vector"],
["L99", "vector"],
["L100", "vector"]
],
"part-tester": [
["L32", "uint64", true]
],
"anim-tester": [
["L509", "(inline-array list-field)", 12],
["L523", "vector"],
["L524", "vector"],
["L649", "(pointer float)", 1],
["L650", "(pointer float)", 1],
["L651", "(pointer float)", 1],
["L652", "(pointer float)", 1],
["L653", "(pointer float)", 1],
["L654", "(pointer float)", 1],
["L655", "(pointer float)", 1],
["L656", "(pointer float)", 1],
["L657", "uint64", true],
["L658", "uint64", true],
["L663", "uint64", true],
["L664", "uint64", true],
["L665", "uint64", true],
["L666", "uint64", true],
["L667", "uint64", true],
["L668", "uint64", true],
["L669", "uint64", true],
["L670", "uint64", true]
],
"fisher-JUN": [
["L262", "vector"],
["L463", "(array (inline-array fisher-params))"]
],
"fisher-JUNGLE-L1": [
["L262", "vector"],
["L463", "(array (inline-array fisher-params))"]
],
"robotboss-weapon": [
["L122", "attack-info"],
["L127", "attack-info"],
["L138", "attack-info"],
["L144", "vector4w"],
["L145", "vector"]
],
"robotboss-misc": [
["L99", "vector"]
],
"robotboss": [
["L646", "attack-info"],
["L647", "attack-info"],
["L651", "vector"],
["L654", "vector"],
["L655", "vector"],
["L656", "vector"],
["L657", "vector"],
["L658", "vector"],
["L659", "vector"],
["L660", "vector"],
["L661", "vector"],
["L662", "vector"],
["L678", "vector"],
["L669", "vector"],
["L701", "vector"],
["L702", "vector"],
["L703", "vector"],
["L705", "vector"],
["L642", "robotboss-dda"],
["L643", "robotboss-dda"],
["L644", "robotboss-dda"],
["L645", "robotboss-dda"],
["L632", "robotboss-dda"],
["L713", "float", true],
["L714", "float", true],
["L715", "float", true],
["L716", "float", true],
["L717", "float", true],
["L718", "float", true],
["L719", "float", true],
["L720", "float", true],
["L721", "float", true],
["L722", "float", true],
["L723", "float", true],
["L724", "float", true],
["L725", "float", true],
["L726", "float", true],
["L727", "float", true],
["L728", "float", true],
["L729", "float", true],
["L730", "float", true],
["L731", "float", true],
["L732", "float", true],
["L733", "float", true],
["L734", "float", true],
["L735", "float", true],
["L736", "float", true],
["L737", "float", true],
["L738", "float", true],
["L739", "float", true],
["L740", "float", true],
["L741", "float", true],
["L742", "float", true],
["L743", "float", true],
["L744", "float", true],
["L745", "float", true],
["L746", "float", true],
["L747", "float", true],
["L748", "float", true],
["L749", "float", true],
["L750", "float", true],
["L751", "float", true],
["L752", "float", true],
["L753", "float", true],
["L754", "float", true],
["L755", "float", true],
["L756", "float", true],
["L757", "float", true],
["L758", "float", true],
["L759", "float", true],
["L760", "float", true],
["L761", "float", true],
["L762", "float", true],
["L763", "float", true],
["L764", "float", true],
["L765", "float", true],
["L766", "float", true],
["L767", "float", true],
["L768", "(pointer float)", 1],
["L769", "float", true],
["L770", "float", true],
["L771", "float", true],
["L772", "float", true],
["L773", "float", true],
["L774", "float", true],
["L775", "float", true],
["L776", "float", true],
["L777", "float", true],
["L778", "float", true],
["L779", "float", true],
["L780", "float", true],
["L781", "float", true],
["L782", "float", true],
["L783", "float", true],
["L784", "float", true],
["L785", "float", true],
["L786", "float", true],
["L787", "float", true],
["L788", "float", true],
["L789", "float", true],
["L790", "float", true],
["L791", "float", true],
["L792", "float", true],
["L793", "float", true],
["L794", "float", true],
["L795", "float", true],
["L796", "float", true],
["L797", "float", true],
["L798", "float", true],
["L799", "float", true],
["L800", "float", true],
["L801", "uint64", true],
["L802", "uint64", true],
["L803", "uint64", true],
["L804", "uint64", true],
["L814", "float", true],
["L815", "uint64", true],
["L816", "uint64", 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": []
}
@@ -1201,7 +1201,8 @@
],
"update-time-of-day": [
[16, "(array float)"] // TODO - broken!
[16, "(array float)"], // TODO - broken!
[48, "vector"]
],
"check-drop-level-rain": [
@@ -1854,7 +1855,7 @@
"(method 11 wall-plat)": [
[16, "vector"]
],
"(code plunger-lurker-plunge)": [[16, "event-message-block"]],
"(event flying-lurker-fly)": [[16, "event-message-block"]],
"(trans flying-lurker-fly)": [[16, "event-message-block"]],
@@ -1881,7 +1882,7 @@
[144, "vector"],
[160, "vector"]
],
"(method 18 collide-cache)": [[16, "collide-cache-prim"]],
"kill-current-level-hint": [[16, "event-message-block"]],
@@ -1916,7 +1917,7 @@
"sparticle-60-to-50":[
[16, "quaternion"]
],
],
"sp-orbiter":[
[16, "vector"],
@@ -1952,9 +1953,7 @@
],
"(method 10 gui-query)": [
[16, "font-context"],
[112, "font-context"],
[208, "font-context"]
[16, "font-context"]
],
"(method 46 process-taskable)": [
@@ -2735,5 +2734,244 @@
[16, "event-message-block"]
],
"(method 10 effect-control)": [
[16, "event-message-block"],
[96, "vector"],
[112, "vector"],
[128, "vector"],
[144, "vector"]
],
"(method 11 effect-control)": [
[16, "vector"],
[32, "vector"]
],
"(method 12 effect-control)": [
[16, "sound-spec"],
[96, "vector"]
],
"(code helix-button-startup)": [
[16, "vector"]
],
"(method 43 green-eco-lurker)": [
[16, "event-message-block"]
],
"(method 73 green-eco-lurker)": [
[16, "event-message-block"]
],
"citb-sagecage-draw-bars": [
[16, "vector"],
[32, "vector"],
[48, "vector"]
],
"(code sunken-pipegame-start-up)": [
[16, "event-message-block"]
],
"(code race-ring-active)": [
[16, "event-message-block"],
[96, "vector"]
],
"(method 11 race-ring)": [
[16, "vector"],
[32, "vector"]
],
"init-sky-regs": [
[16, "vector"]
],
"set-tex-offset": [
[16, "vector"]
],
"sky-tng-setup-cloud-layer": [
[16,["inline-array", "sky-vertex", 12]]
],
"fisher-fish-move": [[16, "vector"]],
"fisher-fish-water": [[16, "vector"]],
"(trans play-accept fisher)": [[16, "vector"]],
"(method 11 fisher)": [[16, "vector"]],
"(code fisher-fish-caught)": [[16, "event-message-block"]],
"(code fisher-fish-die)": [[16, "event-message-block"]],
"(exit fisher-done)": [[16, "event-message-block"]],
"(enter fisher-done)": [[16, "event-message-block"]],
"(event fisher-playing)": [[16, "event-message-block"]],
"(enter fisher-playing)": [[16, "event-message-block"]],
"(exit fisher-playing)": [[16, "event-message-block"]],
"(trans enter-playing fisher)": [[16, "event-message-block"]],
"(code target-fishing)": [
[16, "event-message-block"],
[96, "vector"],
[112, "quaternion"],
[128, "quaternion"],
[144, "quaternion"]
],
"(method 43 fisher)": [
[16, "vector"],
[32, "vector"]
],
"fisher-draw-display": [[16, "font-context"]],
"(method 10 torus)": [
[16, "vector"],
[32, "vector"]
],
"(method 12 torus)": [[16, "matrix"]],
"redshot-trans": [[16, "matrix"]],
"(trans redshot-explode)": [
[16, "vector"],
[32, "event-message-block"],
[112, "vector"]
],
"(code darkecobomb-explode)": [[16, "event-message-block"]],
"(event yellowshot-idle)": [[16, "event-message-block"]],
"(trans yellowshot-idle)": [[16, "event-message-block"]],
"(trans darkecobomb-countdown)": [[16, "vector"]],
"arcing-shot-draw": [
[16, "vector"],
[32, "vector"]
],
"(method 9 torus)": [
[16, "vector"],
[32, "vector"],
[48, "vector"],
[64, "matrix"],
[128, ["inline-array", "vector", 8]]
],
"(method 32 finalbosscam)": [[16, "event-message-block"]],
"(code cam-robotboss)": [
[16, "vector"],
[32, "vector"]
],
"ecoclaw-beam-particle-callback": [[16, "vector"]],
"robotboss-manipy-trans-hook": [[16, "vector"]],
"robotboss-redshot": [[16, "vector"]],
"robotboss-cut-cam": [[16, "vector"]],
"robotboss-yellowshot": [
[16, "vector"],
[32, "vector"],
[48, "event-message-block"]
],
"(trans robotboss-white-eco-movie)": [[16, "vector"]],
"(code robotboss-red-wait)": [
[16, "vector"],
[32, "redshot-launch-info"]
],
"(trans robotboss-yellow-wait)": [
[16, "vector"],
[32, "event-message-block"],
[112, "vector"]
],
"robotboss-setup-for-hits": [
[16, "sphere"],
[32, "event-message-block"]
],
"robotboss-position": [
[16, "vector"],
[32, "matrix"],
[96, "event-message-block"],
[176, "vector"]
],
"robotboss-shooting-trans": [
[16, "vector"],
[32, "event-message-block"]
],
"robotboss-darkecobomb": [
[16, "vector"],
[32, "vector"]
],
"robotboss-redshot-fill-array": [
[16, "vector"],
[32, "vector"]
],
"robotboss-blue-beam": [
[16, "vector"],
[32, "vector"],
[48, "vector"],
[64, "collide-mesh-cache-tri"],
[160, "vector"],
[176, "event-message-block"]
],
"robotboss-bomb-handler": [[16, "event-message-block"]],
"robotboss-blue-done": [[16, "event-message-block"]],
"(exit robotboss-blue-wait)": [[16, "event-message-block"]],
"(enter robotboss-blue-wait)": [[16, "event-message-block"]],
"(exit robotboss-green-wait)": [[16, "event-message-block"]],
"(event robotboss-green-wait)": [[16, "event-message-block"]],
"(trans robotboss-red-wait)": [
[16, "event-message-block"],
[96, "vector"]
],
"(exit robotboss-red-wait)": [[16, "event-message-block"]],
"(exit robotboss-yellow-wait)": [[16, "event-message-block"]],
"(code robotboss-white-eco-movie)": [[16, "event-message-block"]],
"(event robotboss-yellow-dark-bomb-wait)": [[16, "event-message-block"]],
"(exit robotboss-yellow-dark-bomb-wait)": [[16, "event-message-block"]],
"(code robotboss-daxter-sacrifice-movie)": [[16, "event-message-block"]],
"robotboss-greenshot": [
[16, "vector"],
[32, "vector"]
],
"(trans robotboss-blue-wait)": [
[16, "vector"],
[32, "event-message-block"],
[112, "vector"]
],
"(code robotboss-blue-wait)": [[16, "event-message-block"]],
"(method 44 green-eco-lurker)": [[16, "event-message-block"]],
"(method 72 green-eco-lurker)": [[16, "event-message-block"]],
"(enter nav-enemy-die green-eco-lurker)": [[16, "event-message-block"]],
"(event spawn-minions)": [[16, "event-message-block"]],
"(method 51 green-eco-lurker)": [[16, "vector"]],
"(enter green-eco-lurker-appear)": [
[16, "vector"],
[32, "vector"]
],
"(code spawn-minions)": [
[16, "vector"],
[32, "event-message-block"]
],
"check-drop-level-lighteco-big-pops": [[16, "vector"]],
"check-drop-level-lighteco-pops": [[16, "vector"]],
"(method 20 light-eco-child)": [[16, "vector"]],
"light-eco-child-default-event-handler": [[16, "event-message-block"]],
"(code light-eco-child-die)": [[16, "event-message-block"]],
"light-eco-mother-default-event-handler": [[16, "event-message-block"]],
"(trans light-eco-child-hit-ground)": [[16, "vector"]],
"(method 21 light-eco-mother)": [[16, "vector"]],
"(method 20 light-eco-mother)": [[16, "vector"]],
"placeholder-do-not-add-below!": []
}
+413 -23
View File
@@ -1335,6 +1335,7 @@
],
"(method 0 anim-test-seq-item)": [
[7, "v0", "anim-test-seq-item"],
[8, "v1", "anim-test-seq-item"],
[10, "v0", "anim-test-seq-item"],
[11, "v0", "anim-test-seq-item"],
@@ -1444,14 +1445,17 @@
"anim-test-obj-list-handler": [
[25, "s5", "anim-test-obj"],
[31, "s5", "anim-test-obj"],
[[50, 53], "v1", "dma-packet"],
[110, "s5", "anim-test-obj"],
[166, "s5", "anim-test-obj"],
[112, "v1", "anim-tester"]
[112, "v1", "anim-tester"],
[[202, 205], "v1", "dma-packet"]
],
"anim-test-anim-list-handler": [
[2, "s5", "anim-test-obj"],
[25, "s5", "anim-test-obj"],
[[44, 47], "v1", "dma-packet"],
[65, "s5", "anim-test-obj"],
[227, "s5", "anim-test-obj"],
[90, "v1", "anim-test-obj"],
@@ -1465,13 +1469,15 @@
[167, "v1", "anim-test-obj"],
[169, "v1", "anim-test-obj"],
[171, "v1", "anim-test-obj"],
[173, "v1", "anim-test-obj"]
[173, "v1", "anim-test-obj"],
[[263, 266], "v1", "dma-packet"]
],
"anim-test-sequence-list-handler": [
[2, "s5", "anim-test-sequence"],
[25, "s5", "anim-test-sequence"],
[31, "s5", "anim-test-sequence"],
[[50, 53], "v1", "dma-packet"],
[71, "s5", "anim-test-sequence"],
[231, "s5", "anim-test-sequence"],
[96, "v1", "anim-test-sequence"],
@@ -1481,10 +1487,16 @@
[136, "v1", "anim-test-sequence"],
[137, "v1", "anim-test-sequence"],
[146, "v1", "anim-test-sequence"],
[151, "v1", "anim-test-sequence"]
[151, "v1", "anim-test-sequence"],
[[267, 270], "v1", "dma-packet"]
],
"anim-test-edit-sequence-list-handler": [
[[82, 85], "v1", "dma-packet"],
[[148, 151], "v1", "dma-packet"],
[[323, 326], "v1", "dma-packet"],
[[979, 982], "v1", "dma-packet"],
[[1028, 1031], "v1", "dma-packet"],
[[122, 965], "s4", "anim-test-sequence"],
[129, "v1", "glst-named-node"],
[[128, 909], "gp", "anim-test-seq-item"],
@@ -1499,26 +1511,37 @@
"anim-tester-interface": [
[[34, 48], "gp", "anim-test-obj"],
[[70, 73], "v1", "dma-packet"],
[[131, 134], "v1", "dma-packet"],
[[189, 192], "v1", "dma-packet"],
[[228, 231], "v1", "dma-packet"],
[[95, 109], "gp", "anim-test-obj"],
[[156, 160], "v1", "anim-test-obj"],
[[162, 165], "v1", "anim-test-sequence"]
],
"anim-tester-get-playing-item": [
[7, "v0", "anim-test-seq-item"],
[4, "t9", "(function glst-list int anim-test-seq-item)"],
[20, "t9", "(function glst-list int anim-test-seq-item)"],
[[5, 22], "s5", "anim-test-seq-item"],
[21, "v0", "anim-test-seq-item"],
[25, "v0", "anim-test-seq-item"]
[25, "v0", "anim-test-seq-item"],
[5, "v0", "anim-test-seq-item"]
],
"anim-tester-add-newobj": [
["_stack_", 128, "anim-test-obj"],
[[2, 185], "s2", "anim-test-obj"],
[[70, 193], "s5", "anim-test-obj"],
[149, "v1", "anim-test-sequence"],
[154, "v1", "anim-test-sequence"],
[160, "v1", "anim-test-sequence"],
[164, "a0", "art-joint-anim"],
[170, "a0", "art-joint-anim"]
[168, "v1", "anim-test-seq-item"],
[168, "v1", "anim-test-seq-item"],
[170, "a0", "art-joint-anim"],
[171, "v1", "anim-test-seq-item"],
[173, "v1", "anim-test-seq-item"]
],
"anim-tester-start": [[20, "t9", "(function process function none)"]],
@@ -2612,23 +2635,6 @@
[[15, 250], "s5", "symbol"]
],
"time-of-day-update": [
[[0, 999], "s6", "time-of-day-proc"]
],
"(anon-function 10 time-of-day)": [
[[0, 999], "s6", "time-of-day-proc"]
],
"init-time-of-day": [
[[0, 999], "s6", "time-of-day-proc"],
[[51, 54], "t9", "(function object object object)"]
],
"start-time-of-day": [
[[20, 23], "t9", "(function process function object)"]
],
"cam-master-effect": [
[[0, 999], "s6", "camera-master"]
],
@@ -3912,5 +3918,389 @@
[2, "v1", "(pointer process-drawable)"]
],
"update-time-of-day": [
[46, "v0", "(array float)"]
],
"sky-make-light": [
[[10, 23], "a0", "sky-sun-data"]
],
"make-sky-textures": [
[[90, 94], "a0", "dma-packet"],
[[100, 103], "a0", "gs-gif-tag"],
[108, "a0", "(pointer gs-alpha)"],
[110, "a0", "(pointer gs-reg64)"],
[[121, 124], "v1", "dma-packet"]
],
"copy-cloud-texture": [
[[2, 48], "s5", "(pointer uint128)"],
[[28, 32], "s4", "adgif-shader"]
],
"copy-sky-texture": [
[[2, 48], "s5", "(pointer uint128)"],
[[28, 32], "s4", "adgif-shader"]
],
"render-sky-tng": [
[[244, 262], "s2", "(inline-array sky-vertex)"],
[[34, 38], "a0", "dma-packet"],
[[44, 47], "a0", "gs-gif-tag"],
[52, "a0", "(pointer gs-zbuf)"],
[54, "a0", "(pointer gs-reg64)"],
[56, "a0", "(pointer gs-test)"],
[58, "a0", "(pointer gs-reg64)"],
[60, "a0", "(pointer gs-alpha)"],
[62, "a0", "(pointer gs-reg64)"],
[[74, 78], "a0", "dma-packet"],
[[84, 87], "a0", "gs-gif-tag"],
[107, "s2", "(pointer gs-tex0)"],
[109, "s2", "(pointer gs-reg64)"],
[111, "s2", "(pointer gs-tex1)"],
[113, "s2", "(pointer gs-reg64)"],
[115, "s2", "(pointer gs-clamp)"],
[117, "s2", "(pointer gs-reg64)"],
[118, "s2", "(pointer uint64)"],
[120, "s2", "(pointer gs-reg64)"],
[[159, 166], "s3", "dma-packet"],
[[171, 175], "a0", "dma-packet"],
[[181, 184], "a0", "gs-gif-tag"],
[189, "s2", "(pointer gs-alpha)"],
[191, "s2", "(pointer gs-reg64)"],
[209, "s2", "(pointer gs-tex0)"],
[211, "s2", "(pointer gs-reg64)"],
[213, "s2", "(pointer gs-tex1)"],
[215, "s2", "(pointer gs-reg64)"],
[216, "s2", "(pointer gs-clamp)"],
[218, "s2", "(pointer gs-reg64)"],
[219, "s2", "(pointer int64)"],
[221, "s2", "(pointer gs-reg64)"],
[[303, 310], "s3", "dma-packet"],
[[312, 316], "v1", "dma-packet"]
],
"render-sky-tri": [
[5, "a0", "int"],
[[6, 50], "a0", "(inline-array sky-vertex)"],
[[25, 48], "a3", "(inline-array sky-vertex)"]
],
"render-sky-quad": [
[[9, 32], "a0", "(inline-array sky-vertex)"],
[[33, 62], "a3", "(inline-array sky-vertex)"]
],
"(method 10 effect-control)": [
[88, "v1", "collide-shape-moving"],
[143, "s3", "(pointer sparticle-launch-group)"],
[147, "s3", "sparticle-launch-group"],
[199, "s3", "sparticle-launch-group"],
[240, "s3", "basic"],
[286, "s3", "basic"],
[346, "s3", "basic"],
[367, "s3", "basic"],
[367, "s3", "basic"],
[[371, 451], "s3", "death-info"]
],
"(post water-vol-idle helix-dark-eco)": [
[4, "t9", "(function none :behavior helix-dark-eco)"]
],
"(code helix-slide-door-close)": [
[10, "v1", "art-joint-anim"]
],
"(code helix-button-startup)": [
[39, "v1", "process-drawable"]
],
"(method 73 green-eco-lurker)": [
[6, "a1", "touching-shapes-entry"]
],
"citb-sagecage-update-collision": [
[2, "a0", "collide-shape-prim-group"]
],
"race-ring-set-particle-rotation-callback": [
[1, "v1", "(pointer race-ring)"]
],
"race-ring-blue-set-particle-rotation-callback": [
[1, "v1", "(pointer race-ring)"]
],
"(code race-ring-active)": [
[242, "v1", "handle"],
[245, "v1", "handle"],
[253, "gp", "handle"],
[269, "s5", "handle"],
[272, "s5", "handle"]
],
"(trans race-ring-active)": [
[26, "a0", "part-tracker"]
],
"(code anim-tester-process)": [
[41, "v1", "anim-test-obj"],
[45, "v1", "anim-test-obj"],
[[40, 114], "s4", "anim-test-obj"],
[82, "v0", "anim-test-sequence"],
[119, "v0", "art-joint-anim"]
],
"display-list-control": [
[[194, 197], "v1", "dma-packet"],
[[423, 426], "v1", "dma-packet"]
],
"anim-tester-disp-frame-num": [
[[75, 78], "v1", "dma-packet"]
],
"fisher-fish-move": [
[9, "v1", "fisher"],
[21, "v1", "fisher"]
],
"(code fisher-fish-fall)": [
[5, "v1", "fisher"],
[60, "v1", "fisher"],
[79, "v1", "fisher"]
],
"(code fisher-fish-caught)": [
[169, "v1", "fisher"]
],
"(code fisher-fish-die)": [
[35, "v1", "fisher"],
[47, "v1", "fisher"],
[90, "v1", "fisher"],
[98, "v1", "fisher"],
[112, "v1", "fisher"],
[129, "v1", "fisher"],
[137, "v1", "fisher"],
[151, "v1", "fisher"],
[165, "v1", "fisher"],
[179, "v1", "fisher"],
[193, "v1", "fisher"],
[205, "v1", "fisher"],
[209, "v1", "fisher"],
[27, "v1", "float"],
[79, "v1", "float"]
],
"(method 38 fisher)": [
[33, "t9", "(function fisher none)"]
],
"(enter fisher-done)": [
[137, "f0", "float"],
[148, "f0", "float"],
[213, "f0", "float"]
],
"fisher-spawn-ambient": [
[8, "v1", "float"]
],
"(method 43 fisher)": [
[27, "v1", "float"],
[69, "v1", "float"]
],
"(trans play-accept fisher)": [
[101, "v0", "state"]
],
"(trans idle fisher)": [
[4, "v0", "state"]
],
"(code idle fisher)": [
[132, "v1", "art-joint-anim"],
[35, "v1", "float"]
],
"(code target-fishing)": [
[163, "v1", "fisher"],
[290, "v1", "art-joint-anim"]
],
"(method 11 torus)": [
[[5, 22], "s4", "collide-shape-prim-group"]
],
"(method 12 torus)": [
[11, "v1", "float"],
[51, "v1", "float"]
],
"(code darkecobomb-countdown)": [
[25, "v1", "art-joint-anim"],
[75, "v1", "art-joint-anim"]
],
"(code darkecobomb-land)": [
[36, "v1", "art-joint-anim"]
],
"(code darkecobomb-idle)": [
[10, "v1", "art-joint-anim"],
[60, "v1", "art-joint-anim"]
],
"redshot-particle-callback": [
[2, "v1", "(pointer redshot)"]
],
"(event cam-robotboss)": [
[5, "v1", "vector"]
],
"ecoclaw-handler": [
[73, "v1", "vector"]
],
"(event idle silodoor)": [
[4, "v1", "float"]
],
"ecoclaw-beam-particle-callback": [
[1, "a0", "(pointer projectile)"],
[3, "a0", "(pointer projectile)"]
],
"(method 32 finalbosscam)": [
[156, "v1", "robotboss"]
],
"(trans ecoclaw-activate)": [
[30, "a0", "part-tracker"]
],
"robotboss-position": [
[109, "a0", "process-drawable"]
],
"robotboss-bomb-handler": [
[6, "v1", "float"]
],
"robotboss-handler": [
[6, "v1", "float"]
],
"(event robotboss-red-wait)": [
[12, "v1", "float"],
[68, "v1", "float"]
],
"(event robotboss-yellow-wait)": [
[12, "v1", "float"],
[68, "v1", "float"]
],
"(code robotboss-white-eco-movie)": [
[189, "v1", "handle"],
[192, "v1", "handle"],
[208, "gp", "handle"],
[211, "gp", "handle"]
],
"(code robotboss-yellow-wait)": [
[336, "v1", "float"],
[365, "v1", "float"],
[530, "v1", "art-joint-anim"]
],
"(code robotboss-red-wait)": [
[153, "v1", "float"],
[287, "v1", "float"],
[339, "v1", "float"],
[500, "v1", "art-joint-anim"]
],
"robotboss-redshot": [
[45, "v1", "float"],
[70, "v1", "float"]
],
"(event robotboss-green-wait)": [
[39, "v1", "float"],
[95, "v1", "float"]
],
"(exit robotboss-yellow-wait)": [
[50, "v1", "collide-shape-prim-group"],
[54, "v1", "collide-shape-prim-group"]
],
"(exit robotboss-green-wait)": [
[50, "v1", "collide-shape-prim-group"],
[54, "v1", "collide-shape-prim-group"]
],
"(exit robotboss-red-wait)": [
[50, "v1", "collide-shape-prim-group"],
[54, "v1", "collide-shape-prim-group"]
],
"(exit robotboss-blue-wait)": [
[50, "v1", "collide-shape-prim-group"],
[54, "v1", "collide-shape-prim-group"]
],
"robotboss-redshot-fill-array": [
[24, "v1", "float"],
[46, "v1", "float"],
[109, "v1", "float"],
[137, "v1", "float"],
[137, "v1", "float"]
],
"(trans robotboss-blue-wait)": [
[254, "v1", "float"]
],
"(code robotboss-blue-wait)": [
[14, "v1", "art-joint-anim"]
],
"(enter green-eco-lurker-appear)": [
[12, "v1", "robotboss"],
[17, "v1", "robotboss"]
],
"(code green-eco-lurker-appear)": [
[42, "v1", "art-joint-anim"],
[93, "v1", "art-joint-anim"]
],
"(code green-eco-lurker-appear-land)": [
[74, "v1", "art-joint-anim"]
],
"(code nav-enemy-chase green-eco-lurker)": [
[55, "v1", "art-joint-anim"]
],
"(code nav-enemy-patrol green-eco-lurker)": [
[8, "t9", "(function none)"]
],
"(trans light-eco-child-hit-ground)": [
[63, "v1", "light-eco-mother"],
[75, "a1", "light-eco-mother"],
[88, "a1", "light-eco-mother"]
],
"placeholder-do-not-add-below": []
}
@@ -3550,5 +3550,11 @@
}
},
"anim-tester-get-playing-item": {
"vars": {
"v0-0": ["v0-0", "anim-test-seq-item"]
}
},
"aaaaaaaaaaaaaaaaaaaaaaa": {}
}
+4
View File
@@ -65,6 +65,10 @@ void DecompilerTypeSystem::parse_type_defs(const std::vector<std::string>& file_
if (dtr.create_runtime_type) {
add_symbol(dtr.type.base_type(), "type");
}
// declare the type's states globally
for (auto& state : dtr.type_info->get_states_declared_for_type()) {
add_symbol(state.name, state.type);
}
} else if (car(o).as_symbol()->name == "declare-type") {
auto* rest = &cdr(o);
+39 -30
View File
@@ -327,16 +327,12 @@ goos::Object decomp_ref_to_inline_array_guess_size(
int my_seg,
int field_location,
const TypeSystem& ts,
const Field& data_field,
const std::vector<std::vector<LinkedWord>>& all_words,
const LinkedObjectFile* file,
const TypeSpec& array_elt_type,
int stride) {
// fmt::print("Decomp decomp_ref_to_inline_array_guess_size {}\n", array_elt_type.print());
// verify that the field is the right type.
assert(data_field.type() == TypeSpec("inline-array", {array_elt_type}));
// verify the stride matches the type system
auto elt_type_info = ts.lookup_type(array_elt_type);
assert(stride == align(elt_type_info->get_size_in_memory(),
@@ -425,12 +421,10 @@ goos::Object ocean_near_indices_decompile(const std::vector<LinkedWord>& words,
int my_seg,
int field_location,
const TypeSystem& ts,
const Field& data_field,
const std::vector<std::vector<LinkedWord>>& all_words,
const LinkedObjectFile* file) {
return decomp_ref_to_inline_array_guess_size(words, labels, my_seg, field_location, ts,
data_field, all_words, file,
TypeSpec("ocean-near-index"), 32);
return decomp_ref_to_inline_array_guess_size(words, labels, my_seg, field_location, ts, all_words,
file, TypeSpec("ocean-near-index"), 32);
}
goos::Object ocean_mid_masks_decompile(const std::vector<LinkedWord>& words,
@@ -438,12 +432,10 @@ goos::Object ocean_mid_masks_decompile(const std::vector<LinkedWord>& words,
int my_seg,
int field_location,
const TypeSystem& ts,
const Field& data_field,
const std::vector<std::vector<LinkedWord>>& all_words,
const LinkedObjectFile* file) {
return decomp_ref_to_inline_array_guess_size(words, labels, my_seg, field_location, ts,
data_field, all_words, file,
TypeSpec("ocean-mid-mask"), 8);
return decomp_ref_to_inline_array_guess_size(words, labels, my_seg, field_location, ts, all_words,
file, TypeSpec("ocean-mid-mask"), 8);
}
goos::Object sp_field_init_spec_decompile(const std::vector<LinkedWord>& words,
@@ -451,12 +443,10 @@ goos::Object sp_field_init_spec_decompile(const std::vector<LinkedWord>& words,
int my_seg,
int field_location,
const TypeSystem& ts,
const Field& data_field,
const std::vector<std::vector<LinkedWord>>& all_words,
const LinkedObjectFile* file) {
return decomp_ref_to_inline_array_guess_size(words, labels, my_seg, field_location, ts,
data_field, all_words, file,
TypeSpec("sp-field-init-spec"), 16);
return decomp_ref_to_inline_array_guess_size(words, labels, my_seg, field_location, ts, all_words,
file, TypeSpec("sp-field-init-spec"), 16);
}
goos::Object sp_launch_grp_launcher_decompile(const std::vector<LinkedWord>& words,
@@ -464,12 +454,10 @@ goos::Object sp_launch_grp_launcher_decompile(const std::vector<LinkedWord>& wor
int my_seg,
int field_location,
const TypeSystem& ts,
const Field& data_field,
const std::vector<std::vector<LinkedWord>>& all_words,
const LinkedObjectFile* file) {
return decomp_ref_to_inline_array_guess_size(words, labels, my_seg, field_location, ts,
data_field, all_words, file,
TypeSpec("sparticle-group-item"), 32);
return decomp_ref_to_inline_array_guess_size(words, labels, my_seg, field_location, ts, all_words,
file, TypeSpec("sparticle-group-item"), 32);
}
} // namespace
@@ -658,19 +646,19 @@ goos::Object decompile_structure(const TypeSpec& type,
// first, get the label:
field_defs_out.emplace_back(
field.name(), ocean_near_indices_decompile(obj_words, labels, label.target_segment,
field_start, ts, field, words, file));
field_start, ts, words, file));
} else if (field.name() == "data" && type.print() == "ocean-mid-masks") {
field_defs_out.emplace_back(
field.name(), ocean_mid_masks_decompile(obj_words, labels, label.target_segment,
field_start, ts, field, words, file));
field_start, ts, words, file));
} else if (field.name() == "init-specs" && type.print() == "sparticle-launcher") {
field_defs_out.emplace_back(
field.name(), sp_field_init_spec_decompile(obj_words, labels, label.target_segment,
field_start, ts, field, words, file));
field_start, ts, words, file));
} else if (field.name() == "launcher" && type.print() == "sparticle-launch-group") {
field_defs_out.emplace_back(field.name(), sp_launch_grp_launcher_decompile(
obj_words, labels, label.target_segment,
field_start, ts, field, words, file));
field_start, ts, words, file));
} else {
if (field.type().base_type() == "pointer") {
if (obj_words.at(field_start / 4).kind != LinkedWord::SYM_PTR) {
@@ -950,15 +938,18 @@ goos::Object decompile_value(const TypeSpec& type,
}
} else if (type == TypeSpec("seconds")) {
assert(bytes.size() == 8);
u64 value;
s64 value;
memcpy(&value, bytes.data(), 8);
// only rewrite if exact.
u64 seconds = value / TICKS_PER_SECOND;
if (seconds * TICKS_PER_SECOND == value) {
return pretty_print::to_symbol(fmt::format("(seconds {})", seconds));
s64 seconds_int = value / TICKS_PER_SECOND;
if (seconds_int * TICKS_PER_SECOND == value) {
return pretty_print::to_symbol(fmt::format("(seconds {})", seconds_int));
}
double seconds = (double)value / TICKS_PER_SECOND;
if (seconds * TICKS_PER_SECOND == value) {
return pretty_print::build_list("seconds", pretty_print::float_representation(seconds));
}
return pretty_print::to_symbol(fmt::format("#x{:x}", value));
} else if (ts.tc(TypeSpec("uint64"), type)) {
assert(bytes.size() == 8);
@@ -1070,6 +1061,23 @@ goos::Object decompile_boxed_array(const DecompilerLabel& label,
}
}
return pretty_print::build_list(result);
} else if (content_type.base_type() == "inline-array") {
std::vector<goos::Object> result = {
pretty_print::to_symbol("new"), pretty_print::to_symbol("'static"),
pretty_print::to_symbol("'boxed-array"),
pretty_print::to_symbol(fmt::format(":type {} :length {} :allocated-length {}",
content_type.print(), array_length,
array_allocated_length))};
for (int elt = 0; elt < array_length; elt++) {
auto& word = words.at(label.target_segment).at(first_elt_word_idx + elt);
auto segment = labels.at(word.label_id).target_segment;
result.push_back(decomp_ref_to_inline_array_guess_size(
words.at(segment), labels, segment, (first_elt_word_idx + elt) * 4, ts, words, file,
content_type.get_single_arg(), ts.get_deref_info(content_type).stride));
}
return pretty_print::build_list(result);
} else {
// value array
@@ -1088,7 +1096,8 @@ goos::Object decompile_boxed_array(const DecompilerLabel& label,
for (int j = start; j < end; j++) {
auto& word = words.at(label.target_segment).at(j / 4);
if (word.kind != LinkedWord::PLAIN_DATA) {
throw std::runtime_error("Got bad word in kind in array of values");
throw std::runtime_error(
fmt::format("Got bad word of kind {} in boxed array of values", word.kind));
}
elt_bytes.push_back(word.get_byte(j % 4));
}